[system] / branches / rel-2-4-dev / webwork-modperl / conf / database.conf.dist Repository:
ViewVC logotype

View of /branches/rel-2-4-dev/webwork-modperl/conf/database.conf.dist

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5243 - (download) (annotate)
Tue Aug 7 22:35:14 2007 UTC (5 years, 9 months ago)
File size: 11501 byte(s)
This commit was manufactured by cvs2svn to create branch 'rel-2-4-dev'.

    1 #!perl
    2 ################################################################################
    3 # WeBWorK Online Homework Delivery System
    4 # Copyright © 2000-2006 The WeBWorK Project, http://openwebwork.sf.net/
    5 # $CVSHeader: webwork2/conf/database.conf.dist,v 1.34 2007/03/02 23:19:55 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 );
   82 
   83 $dbLayouts{sql_single} = {
   84         locations => {
   85                 record => "WeBWorK::DB::Record::Locations",
   86                 schema => "WeBWorK::DB::Schema::NewSQL::Std",
   87                 driver => "WeBWorK::DB::Driver::SQL",
   88                 source => $database_dsn,
   89                 params => { %sqlParams,
   90                         non_native => 1,
   91                 },
   92         },
   93         location_addresses => {
   94                 record => "WeBWorK::DB::Record::LocationAddresses",
   95                 schema => "WeBWorK::DB::Schema::NewSQL::Std",
   96                 driver => "WeBWorK::DB::Driver::SQL",
   97                 source => $database_dsn,
   98                 params => { %sqlParams,
   99                         non_native => 1,
  100                 },
  101         },
  102   password => {
  103     record => "WeBWorK::DB::Record::Password",
  104     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  105     driver => "WeBWorK::DB::Driver::SQL",
  106     source => $database_dsn,
  107     params => { %sqlParams,
  108       tableOverride => "${courseName}_password",
  109     },
  110   },
  111   permission => {
  112     record => "WeBWorK::DB::Record::PermissionLevel",
  113     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  114     driver => "WeBWorK::DB::Driver::SQL",
  115     source => $database_dsn,
  116     params => { %sqlParams,
  117       tableOverride => "${courseName}_permission",
  118     },
  119   },
  120   key => {
  121     record => "WeBWorK::DB::Record::Key",
  122     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  123     driver => "WeBWorK::DB::Driver::SQL",
  124     source => $database_dsn,
  125     params => { %sqlParams,
  126       tableOverride => "${courseName}_key",
  127       fieldOverride => { key => "key_not_a_keyword" },
  128     },
  129   },
  130   user => {
  131     record => "WeBWorK::DB::Record::User",
  132     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  133     driver => "WeBWorK::DB::Driver::SQL",
  134     source => $database_dsn,
  135     params => { %sqlParams,
  136       tableOverride => "${courseName}_user",
  137     },
  138   },
  139   set => {
  140     record => "WeBWorK::DB::Record::Set",
  141     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  142     driver => "WeBWorK::DB::Driver::SQL",
  143     source => $database_dsn,
  144     params => { %sqlParams,
  145       tableOverride => "${courseName}_set"
  146     },
  147   },
  148   set_user => {
  149     record => "WeBWorK::DB::Record::UserSet",
  150     schema => "WeBWorK::DB::Schema::NewSQL::NonVersioned",
  151     driver => "WeBWorK::DB::Driver::SQL",
  152     source => $database_dsn,
  153     params => { %sqlParams,
  154       tableOverride => "${courseName}_set_user"
  155     },
  156   },
  157   set_merged => {
  158     record => "WeBWorK::DB::Record::UserSet",
  159     schema => "WeBWorK::DB::Schema::NewSQL::Merge",
  160     driver => "WeBWorK::DB::Driver::SQL",
  161     source => $database_dsn,
  162     depend => [qw/set_user set/],
  163     params => { %sqlParams,
  164       non_native => 1,
  165       merge      => [qw/set_user set/],
  166     },
  167   },
  168   set_version => {
  169     record => "WeBWorK::DB::Record::SetVersion",
  170     schema => "WeBWorK::DB::Schema::NewSQL::Versioned",
  171     driver => "WeBWorK::DB::Driver::SQL",
  172     source => $database_dsn,
  173     params => { %sqlParams,
  174       non_native => 1,
  175       tableOverride => "${courseName}_set_user",
  176     },
  177   },
  178   set_version_merged => {
  179     record => "WeBWorK::DB::Record::SetVersion",
  180     schema => "WeBWorK::DB::Schema::NewSQL::Merge",
  181     driver => "WeBWorK::DB::Driver::SQL",
  182     source => $database_dsn,
  183     depend => [qw/set_version set_user set/],
  184     params => { %sqlParams,
  185       non_native => 1,
  186       merge      => [qw/set_version set_user set/],
  187     },
  188   },
  189         set_locations => {
  190                 record => "WeBWorK::DB::Record::SetLocations",
  191                 schema => "WeBWorK::DB::Schema::NewSQL::Std",
  192                 driver => "WeBWorK::DB::Driver::SQL",
  193                 source => $database_dsn,
  194                 params => { %sqlParams,
  195                         tableOverride => "${courseName}_set_locations"
  196                 },
  197         },
  198         set_locations_user => {
  199                 record => "WeBWorK::DB::Record::UserSetLocations",
  200                 schema => "WeBWorK::DB::Schema::NewSQL::Std",
  201                 driver => "WeBWorK::DB::Driver::SQL",
  202                 source => $database_dsn,
  203                 params => { %sqlParams,
  204                         tableOverride => "${courseName}_set_locations_user"
  205                 },
  206         },
  207   problem => {
  208     record => "WeBWorK::DB::Record::Problem",
  209     schema => "WeBWorK::DB::Schema::NewSQL::Std",
  210     driver => "WeBWorK::DB::Driver::SQL",
  211     source => $database_dsn,
  212     params => { %sqlParams,
  213       tableOverride => "${courseName}_problem"
  214     },
  215   },
  216   problem_user => {
  217     record => "WeBWorK::DB::Record::UserProblem",
  218     schema => "WeBWorK::DB::Schema::NewSQL::NonVersioned",
  219     driver => "WeBWorK::DB::Driver::SQL",
  220     source => $database_dsn,
  221     params => { %sqlParams,
  222       tableOverride => "${courseName}_problem_user"
  223     },
  224   },
  225   problem_merged => {
  226     record => "WeBWorK::DB::Record::UserProblem",
  227     schema => "WeBWorK::DB::Schema::NewSQL::Merge",
  228     driver => "WeBWorK::DB::Driver::SQL",
  229     source => $database_dsn,
  230     depend => [qw/problem_user problem/],
  231     params => { %sqlParams,
  232       non_native => 1,
  233       merge      => [qw/problem_user problem/],
  234     },
  235   },
  236   problem_version => {
  237     record => "WeBWorK::DB::Record::ProblemVersion",
  238     schema => "WeBWorK::DB::Schema::NewSQL::Versioned",
  239     driver => "WeBWorK::DB::Driver::SQL",
  240     source => $database_dsn,
  241     params => { %sqlParams,
  242       non_native => 1,
  243       tableOverride => "${courseName}_problem_user",
  244     },
  245   },
  246   problem_version_merged => {
  247     record => "WeBWorK::DB::Record::ProblemVersion",
  248     schema => "WeBWorK::DB::Schema::NewSQL::Merge",
  249     driver => "WeBWorK::DB::Driver::SQL",
  250     source => $database_dsn,
  251     depend => [qw/problem_version problem_user problem/],
  252     params => { %sqlParams,
  253       non_native => 1,
  254       merge      => [qw/problem_version problem_user problem/],
  255     },
  256   },
  257 };
  258 
  259 =head2 THE SQL_MOODLE DATABASE LAYOUT
  260 
  261 The C<sql_moodle> layout is similar to the C<sql_single> layout, except it uses
  262 a Moodle database for user information and authentication.
  263 
  264 =cut
  265 
  266 # params used by moodle-backed tables
  267 my %moodleParams = (
  268   non_native  => 1,
  269   username    => $moodle_username,
  270   password    => $moodle_password,
  271   debug       => $database_debug,
  272   tablePrefix => $moodle_table_prefix,
  273   courseName  => $courseName,
  274   moodle17    => $moodle17,
  275 );
  276 
  277 $dbLayouts{sql_moodle} = {
  278   # start with sql_single table definitions
  279   %{$dbLayouts{sql_single}},
  280 
  281   # then override user, password, and permission tables
  282   # use the same record classes as sql_single
  283   user => {
  284     record => "WeBWorK::DB::Record::User",
  285     schema => "WeBWorK::DB::Schema::NewSQL::Moodle::User",
  286     driver => "WeBWorK::DB::Driver::SQL",
  287     source => $moodle_dsn,
  288     params => { %moodleParams,
  289       statusDeletedAbbrevs    => $statuses{Drop}{abbrevs},
  290       statusDeletedDefault    => $statuses{Drop}{abbrevs}[0],
  291       statusNotDeletedAbbrevs => $statuses{Enrolled}{abbrevs},
  292       statusNotDeletedDefault => $statuses{Enrolled}{abbrevs}[0],
  293       #sectionPrefix          => "SEC_", # not implemented
  294       #recitationPrefix       => "",  # not implemented
  295     },
  296   },
  297   password => {
  298     record => "WeBWorK::DB::Record::Password",
  299     schema => "WeBWorK::DB::Schema::NewSQL::Moodle::PasswordPermission",
  300     driver => "WeBWorK::DB::Driver::SQL",
  301     source => $moodle_dsn,
  302     params => { %moodleParams,
  303       guestsPermissionLevel => -5,
  304       studentsPermissionLevel => 0,
  305       teachersPermissionLevel => 10,
  306       adminsPermissionLevel => 10,
  307     },
  308   },
  309   permission => {
  310     record => "WeBWorK::DB::Record::PermissionLevel",
  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 };
  322 
  323 =head1 DATABASE LAYOUT METADATA
  324 
  325 =over
  326 
  327 =item @dbLayout_order
  328 
  329 Database layouts listed in this array will be displayed first, in the order
  330 specified, wherever database layouts are listed. (For example, in the "Add
  331 Course" tool.) Other layouts are listed after these.
  332 
  333 =cut
  334 
  335 @dbLayout_order = qw/sql_single sql_moodle/;
  336 
  337 =item %dbLayout_descr
  338 
  339 Hash mapping database layout names to textual descriptions.
  340 
  341 =cut
  342 
  343 %dbLayout_descr = (
  344   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.",
  345   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.",
  346 );
  347 
  348 =back
  349 
  350 =cut

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9