[system] / trunk / webwork2 / conf / database.conf.dist Repository:
ViewVC logotype

View of /trunk/webwork2/conf/database.conf.dist

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5319 - (download) (annotate)
Mon Aug 13 22:59:59 2007 UTC (5 years, 10 months ago) by sh002i
File size: 11892 byte(s)
updated copyright dates

    1 #!perl
    2 ################################################################################
    3 # WeBWorK Online Homework Delivery System
    4 # Copyright © 2000-2007 The WeBWorK Project, http://openwebwork.sf.net/
    5 # $CVSHeader: webwork2/conf/database.conf.dist,v 1.37 2007/07/24 17:35:39 sh002i Exp $
    6 #
    7 # This program is free software; you can redistribute it and/or modify it under
    8 # the terms of either: (a) the GNU General Public License as published by the
    9 # Free Software Foundation; either version 2, or (at your option) any later
   10 # version, or (b) the "Artistic License" which comes with this package.
   11 #
   12 # This program is distributed in the hope that it will be useful, but WITHOUT
   13 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
   14 # FOR A PARTICULAR PURPOSE.  See either the GNU General Public License or the
   15 # Artistic License for more details.
   16 ################################################################################
   17 
   18 =head1 NAME
   19 
   20 database.conf - define standard database layouts
   21 
   22 =head1 SYNOPSIS
   23 
   24 In global.conf:
   25 
   26  include "conf/database.conf";
   27  *dbLayout = $dbLayouts{layoutName};
   28 
   29 =head1 DESCRIPTION
   30 
   31 This file contains definitions for the commonly-used database layouts. Database
   32 layouts consist of all the information necessary to describe how to access data
   33 used by WeBWorK. For more information on the format of a database layout,
   34 consult the documentation for the WeBWorK::DB module.
   35 
   36 A database layout is selected from the list of possible layouts by adding a
   37 line like the one below to the F<global.conf> or F<course.conf> file.
   38 
   39  $dbLayoutName = "layoutName";
   40  *dbLayout = $dbLayouts{$dbLayoutName};
   41 
   42 =cut
   43 
   44 %dbLayouts = (); # layouts are added to this hash below
   45 
   46 =head2 THE SQL_SINGLE DATABASE LAYOUT
   47 
   48 The C<sql_single> layout is similar to the C<sql> layout, excpet that it uses a
   49 single database for all courses. This is accomplised by prefixing each table
   50 name with the name of the course. The names and passwords of these accounts are
   51 given as parameters to each table in the layout.
   52 
   53  username     the username to use when connecting to the database
   54  password     the password to use when connecting to the database
   55 
   56 Be default, username is "webworkRead" and password is "". It is not recommended
   57 that you use only a non-empty password to secure database access. Most RDBMSs
   58 allow IP-based authorization as well. As the system administrator, IT IS YOUR
   59 RESPONSIBILITY TO SECURE DATABASE ACCESS.
   60 
   61 Don't confuse the account information above with the accounts of the users of a
   62 course. This is a system-wide account which allow WeBWorK to talk to the
   63 database server.
   64 
   65 Other parameters that can be given are as follows:
   66 
   67  tableOverride  an alternate name to use when referrring to the table (used
   68                 when a table name is a resereved word)
   69  fieldOverride  a hash mapping WeBWorK field names to alternate names to use
   70                 when referring to those fields (used when one or more field
   71         names are reserved words)
   72  debug          if true, SQL statments are printed before being executed
   73 
   74 =cut
   75 
   76 # params common to all tables
   77 my %sqlParams = (
   78   username => $database_username,
   79   password => $database_password,
   80   debug    => $database_debug,
   81   # kinda hacky, but needed for table dumping
   82   mysql_path     => $externalPrograms{mysql},
   83   mysqldump_path => $externalPrograms{mysqldump},
   84 );
   85 
   86 $dbLayouts{sql_single} = {
   87         locations => {
   88                 record => "WeBWorK::DB::Record::Locations",
   89                 schema => "WeBWorK::DB::Schema::NewSQL::Std",
   90                 driver => "WeBWorK::DB::Driver::SQL",
   91                 source => $database_dsn,
   92                 params => { %sqlParams,
   93                         non_native => 1,
   94                 },
   95         },
   96         location_addresses => {
   97                 record => "WeBWorK::DB::Record::LocationAddresses",
   98                 schema => "WeBWorK::DB::Schema::NewSQL::Std",
   99                 driver => "WeBWorK::DB::Driver::SQL",
  100                 source => $database_dsn,
  101                 params => { %sqlParams,
  102                         non_native => 1,
  103                 },
  104         },
  105   password => {
  106     record => "WeBWorK::DB::Record::Password",
  107     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  108     driver => "WeBWorK::DB::Driver::SQL",
  109     source => $database_dsn,
  110     params => { %sqlParams,
  111       tableOverride => "${courseName}_password",
  112     },
  113   },
  114   permission => {
  115     record => "WeBWorK::DB::Record::PermissionLevel",
  116     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  117     driver => "WeBWorK::DB::Driver::SQL",
  118     source => $database_dsn,
  119     params => { %sqlParams,
  120       tableOverride => "${courseName}_permission",
  121     },
  122   },
  123   key => {
  124     record => "WeBWorK::DB::Record::Key",
  125     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  126     driver => "WeBWorK::DB::Driver::SQL",
  127     source => $database_dsn,
  128     params => { %sqlParams,
  129       tableOverride => "${courseName}_key",
  130       fieldOverride => { key => "key_not_a_keyword" },
  131     },
  132   },
  133   user => {
  134     record => "WeBWorK::DB::Record::User",
  135     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  136     driver => "WeBWorK::DB::Driver::SQL",
  137     source => $database_dsn,
  138     params => { %sqlParams,
  139       tableOverride => "${courseName}_user",
  140     },
  141   },
  142   set => {
  143     record => "WeBWorK::DB::Record::Set",
  144     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  145     driver => "WeBWorK::DB::Driver::SQL",
  146     source => $database_dsn,
  147     params => { %sqlParams,
  148       tableOverride => "${courseName}_set"
  149     },
  150   },
  151   set_user => {
  152     record => "WeBWorK::DB::Record::UserSet",
  153     schema => "WeBWorK::DB::Schema::NewSQL::NonVersioned",
  154     driver => "WeBWorK::DB::Driver::SQL",
  155     source => $database_dsn,
  156     params => { %sqlParams,
  157       tableOverride => "${courseName}_set_user"
  158     },
  159   },
  160   set_merged => {
  161     record => "WeBWorK::DB::Record::UserSet",
  162     schema => "WeBWorK::DB::Schema::NewSQL::Merge",
  163     driver => "WeBWorK::DB::Driver::SQL",
  164     source => $database_dsn,
  165     depend => [qw/set_user set/],
  166     params => { %sqlParams,
  167       non_native => 1,
  168       merge      => [qw/set_user set/],
  169     },
  170   },
  171   set_version => {
  172     record => "WeBWorK::DB::Record::SetVersion",
  173     schema => "WeBWorK::DB::Schema::NewSQL::Versioned",
  174     driver => "WeBWorK::DB::Driver::SQL",
  175     source => $database_dsn,
  176     params => { %sqlParams,
  177       non_native => 1,
  178       tableOverride => "${courseName}_set_user",
  179     },
  180   },
  181   set_version_merged => {
  182     record => "WeBWorK::DB::Record::SetVersion",
  183     schema => "WeBWorK::DB::Schema::NewSQL::Merge",
  184     driver => "WeBWorK::DB::Driver::SQL",
  185     source => $database_dsn,
  186     depend => [qw/set_version set_user set/],
  187     params => { %sqlParams,
  188       non_native => 1,
  189       merge      => [qw/set_version set_user set/],
  190     },
  191   },
  192         set_locations => {
  193                 record => "WeBWorK::DB::Record::SetLocations",
  194                 schema => "WeBWorK::DB::Schema::NewSQL::Std",
  195                 driver => "WeBWorK::DB::Driver::SQL",
  196                 source => $database_dsn,
  197                 params => { %sqlParams,
  198                         tableOverride => "${courseName}_set_locations"
  199                 },
  200         },
  201         set_locations_user => {
  202                 record => "WeBWorK::DB::Record::UserSetLocations",
  203                 schema => "WeBWorK::DB::Schema::NewSQL::Std",
  204                 driver => "WeBWorK::DB::Driver::SQL",
  205                 source => $database_dsn,
  206                 params => { %sqlParams,
  207                         tableOverride => "${courseName}_set_locations_user"
  208                 },
  209         },
  210   problem => {
  211     record => "WeBWorK::DB::Record::Problem",
  212     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  213     driver => "WeBWorK::DB::Driver::SQL",
  214     source => $database_dsn,
  215     params => { %sqlParams,
  216       tableOverride => "${courseName}_problem"
  217     },
  218   },
  219   problem_user => {
  220     record => "WeBWorK::DB::Record::UserProblem",
  221     schema => "WeBWorK::DB::Schema::NewSQL::NonVersioned",
  222     driver => "WeBWorK::DB::Driver::SQL",
  223     source => $database_dsn,
  224     params => { %sqlParams,
  225       tableOverride => "${courseName}_problem_user"
  226     },
  227   },
  228   problem_merged => {
  229     record => "WeBWorK::DB::Record::UserProblem",
  230     schema => "WeBWorK::DB::Schema::NewSQL::Merge",
  231     driver => "WeBWorK::DB::Driver::SQL",
  232     source => $database_dsn,
  233     depend => [qw/problem_user problem/],
  234     params => { %sqlParams,
  235       non_native => 1,
  236       merge      => [qw/problem_user problem/],
  237     },
  238   },
  239   problem_version => {
  240     record => "WeBWorK::DB::Record::ProblemVersion",
  241     schema => "WeBWorK::DB::Schema::NewSQL::Versioned",
  242     driver => "WeBWorK::DB::Driver::SQL",
  243     source => $database_dsn,
  244     params => { %sqlParams,
  245       non_native => 1,
  246       tableOverride => "${courseName}_problem_user",
  247     },
  248   },
  249   problem_version_merged => {
  250     record => "WeBWorK::DB::Record::ProblemVersion",
  251     schema => "WeBWorK::DB::Schema::NewSQL::Merge",
  252     driver => "WeBWorK::DB::Driver::SQL",
  253     source => $database_dsn,
  254     depend => [qw/problem_version problem_user problem/],
  255     params => { %sqlParams,
  256       non_native => 1,
  257       merge      => [qw/problem_version problem_user problem/],
  258     },
  259   },
  260   setting => {
  261     record => "WeBWorK::DB::Record::Setting",
  262     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  263     driver => "WeBWorK::DB::Driver::SQL",
  264     source => $database_dsn,
  265     params => { %sqlParams,
  266       tableOverride => "${courseName}_setting"
  267     },
  268   },
  269 };
  270 
  271 =head2 THE SQL_MOODLE DATABASE LAYOUT
  272 
  273 The C<sql_moodle> layout is similar to the C<sql_single> layout, except it uses
  274 a Moodle database for user information and authentication.
  275 
  276 =cut
  277 
  278 # params used by moodle-backed tables
  279 my %moodleParams = (
  280   non_native  => 1,
  281   username    => $moodle_username,
  282   password    => $moodle_password,
  283   debug       => $database_debug,
  284   tablePrefix => $moodle_table_prefix,
  285   courseName  => $courseName,
  286   moodle17    => $moodle17,
  287 );
  288 
  289 $dbLayouts{sql_moodle} = {
  290   # start with sql_single table definitions
  291   %{$dbLayouts{sql_single}},
  292 
  293   # then override user, password, and permission tables
  294   # use the same record classes as sql_single
  295   user => {
  296     record => "WeBWorK::DB::Record::User",
  297     schema => "WeBWorK::DB::Schema::NewSQL::Moodle::User",
  298     driver => "WeBWorK::DB::Driver::SQL",
  299     source => $moodle_dsn,
  300     params => { %moodleParams,
  301       statusDeletedAbbrevs    => $statuses{Drop}{abbrevs},
  302       statusDeletedDefault    => $statuses{Drop}{abbrevs}[0],
  303       statusNotDeletedAbbrevs => $statuses{Enrolled}{abbrevs},
  304       statusNotDeletedDefault => $statuses{Enrolled}{abbrevs}[0],
  305       #sectionPrefix          => "SEC_", # not implemented
  306       #recitationPrefix       => "",  # not implemented
  307     },
  308   },
  309   password => {
  310     record => "WeBWorK::DB::Record::Password",
  311     schema => "WeBWorK::DB::Schema::NewSQL::Moodle::PasswordPermission",
  312     driver => "WeBWorK::DB::Driver::SQL",
  313     source => $moodle_dsn,
  314     params => { %moodleParams,
  315       guestsPermissionLevel => -5,
  316       studentsPermissionLevel => 0,
  317       teachersPermissionLevel => 10,
  318       adminsPermissionLevel => 10,
  319     },
  320   },
  321   permission => {
  322     record => "WeBWorK::DB::Record::PermissionLevel",
  323     schema => "WeBWorK::DB::Schema::NewSQL::Moodle::PasswordPermission",
  324     driver => "WeBWorK::DB::Driver::SQL",
  325     source => $moodle_dsn,
  326     params => { %moodleParams,
  327       guestsPermissionLevel => -5,
  328       studentsPermissionLevel => 0,
  329       teachersPermissionLevel => 10,
  330       adminsPermissionLevel => 10,
  331     },
  332   },
  333 };
  334 
  335 =head1 DATABASE LAYOUT METADATA
  336 
  337 =over
  338 
  339 =item @dbLayout_order
  340 
  341 Database layouts listed in this array will be displayed first, in the order
  342 specified, wherever database layouts are listed. (For example, in the "Add
  343 Course" tool.) Other layouts are listed after these.
  344 
  345 =cut
  346 
  347 @dbLayout_order = qw/sql_single sql_moodle/;
  348 
  349 =item %dbLayout_descr
  350 
  351 Hash mapping database layout names to textual descriptions.
  352 
  353 =cut
  354 
  355 %dbLayout_descr = (
  356   sql_single => "Uses a single SQL database to record WeBWorK data for all courses using this layout. This is the recommended layout for new courses.",
  357   sql_moodle => "Simiar to sql_single, but uses a Moodle database for user, password, and permission information. This layout should be used for courses used with wwmoodle.",
  358 );
  359 
  360 =back
  361 
  362 =cut

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9