Parent Directory
|
Revision Log
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 |