parent
cb8a70eee3
commit
3f002b9ab7
@ -0,0 +1,103 @@ |
||||
<?php |
||||
/** |
||||
* This script fills the session_* tables with users relationships, |
||||
* taking into account an homogeneous distribution withing x buildings, y rooms |
||||
* and z schedules. Not for use on production servers |
||||
* @packacke chamilo.datafiller |
||||
*/ |
||||
/** |
||||
* Initialization - remove or comment first line to execute |
||||
*/ |
||||
die('Please remove line '.__LINE__.' of this scripts if you are sure you know'."\n".'what you\'re doing'."\n"); |
||||
require_once '../../main/inc/global.inc.php'; |
||||
$t0 = time(); |
||||
$user_offset = 10; //30 students per room |
||||
$user = 0; |
||||
$course_id = 1; |
||||
$session = 0; |
||||
$session_id = 0; |
||||
//$building_offset = 4; //number of buildings per UGEL - not active yet |
||||
$building = 0; |
||||
$room_offset = 4; |
||||
$room = 0; |
||||
$turn_offset = 4; |
||||
$turn = 0; |
||||
|
||||
// Query caching |
||||
$sqlsc_header = "INSERT INTO ".TABLE_MAIN_SESSION_COURSE." (id_session, c_id, nbr_users) values "; |
||||
$sqlsu_header = "INSERT INTO ".TABLE_MAIN_SESSION_USER." (id_session, id_user) values "; |
||||
$sqlscu_header = "INSERT INTO ".TABLE_MAIN_SESSION_COURSE_USER." (id_session, c_id, id_user, visibility) values "; |
||||
|
||||
$sqlsc = $sqlsc_header; |
||||
$sqlsu = $sqlsu_header; |
||||
$sqlscu = $sqlscu_header; |
||||
|
||||
/** |
||||
* Code core |
||||
*/ |
||||
// Users range |
||||
$sql = "SELECT user_id FROM user WHERE username like 'user%'"; |
||||
$res = Database::query($sql); |
||||
while ($rowu = Database::fetch_array($res)) { |
||||
$user_id = $rowu['user_id']; |
||||
echo "User id: $user_id\n"; |
||||
$user++; |
||||
if ($user % $user_offset === 1) { |
||||
// if we reached 30 students or so, switch turns |
||||
$turn++; |
||||
// we passed 30, create new session |
||||
if ($turn % $turn_offset === 1) { |
||||
//switch turn *and* room |
||||
$turn = 1; |
||||
$room++; |
||||
if ($room % $room_offset === 1) { |
||||
//switch room *and* building |
||||
$room = 1; |
||||
$building++; |
||||
} |
||||
} |
||||
//flush insert buffer before inserting new session |
||||
if ($session_id != 0) { |
||||
$ressc = Database::query(substr($sqlsc,0,-1)); |
||||
$ressu = Database::query(substr($sqlsu,0,-1)); |
||||
$resscu = Database::query(substr($sqlscu,0,-1)); |
||||
$sqlsc = $sqlsc_header; |
||||
$sqlsu = $sqlsu_header; |
||||
$sqlscu = $sqlscu_header; |
||||
} |
||||
// now insert new session |
||||
$params = array( |
||||
'id_coach' => 1, |
||||
'name' => 'Directivos - Local '.$building.' - Aula '.$room.' - Turno '.$turn, |
||||
'nbr_courses' => 1, |
||||
'nbr_users' => 30, |
||||
'nbr_classes' => 0, |
||||
'session_admin_id' => 1, |
||||
'visibility' => SESSION_INVISIBLE, |
||||
'session_category_id' => 0, |
||||
'promotion_id' => 0, |
||||
'display_start_date' => '2013-09-01 00:00:00', |
||||
'display_end_date' => '2013-09-30 00:00:00', |
||||
'access_start_date' => '2013-09-01 00:00:00', |
||||
'access_end_date' => '2013-09-30 00:00:00', |
||||
'coach_access_start_date' => '2013-09-01 00:00:00', |
||||
'coach_access_end_date' => '2013-09-30 00:00:00' |
||||
); |
||||
$session_id = SessionManager::add($params); |
||||
if ($session_id === false) { |
||||
die('Error inserting session with params '.print_r($params,1)); |
||||
} |
||||
echo "New session: $session_id\n"; |
||||
$session++; |
||||
} |
||||
$sqlsc .= "($session_id, 1, 30),"; |
||||
$sqlsu .= "($session_id,$user_id),"; |
||||
$sqlscu .= "($session_id, 1, $user_id, 4),"; |
||||
} |
||||
//flush the last pending bits |
||||
$ressc = Database::query(substr($sqlsc,0,-1)); |
||||
$ressu = Database::query(substr($sqlsu,0,-1)); |
||||
$resscu = Database::query(substr($sqlscu,0,-1)); |
||||
echo "Inserted $user users in $session sessions, approximately $user_offset per session\n"; |
||||
$tf = time() - $t0; |
||||
echo "Process took $tf for $user users\n"; |
||||
Loading…
Reference in new issue