ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
ilDataLoader Class Reference

Data loader for load tests. More...

+ Collaboration diagram for ilDataLoader:

Public Member Functions

 setEnableLog ($a_val)
 Set enable log (currently echoes directly to the screen) More...
 
 getEnableLog ()
 Get enable log. More...
 
 log ($a_str)
 Log. More...
 
 generateUsers ($a_login_base="learner", $a_start=1, $a_end=1000, $a_firstname="John", $a_lastname_base="Learner", $a_pw="learnerpw", $a_email="de@de.de", $a_gender="m", $a_lang="en")
 Generate Users. More...
 
 generateCategories ($a_start=1, $a_end=500, $a_sub_cats_per_cat=10, $a_title_base="Category", $a_node="", $a_init_cnt=true, $a_depth=1)
 Generate Categories. More...
 
 generateCourses ($a_start=1, $a_end=500, $a_course_per_cat=10, $a_title_base="Course")
 Generate courses. More...
 
 generateFiles ($a_test_file, $a_files_per_course=10, $a_title_base="File")
 Generate files. More...
 
 generateCalendarEntries ($a_num_per_course=10)
 Generate Calendar Entries. More...
 
 loadSqlTemplate ($file)
 Load SQL Template. More...
 
 getline ( $fp, $delim)
 Get line from file. More...
 
 createDump ($a_target_file, $a_dump_cmd, $a_db_user="root", $a_db_pw="", $a_db_name="loadtest")
 Create dump. More...
 
 writeUserCsv ($a_target_file, $a_user_base_name="learner")
 Write User CSV. More...
 
 writeCourseCsv ($a_target_file)
 Write Course CSV. More...
 
 writeCategoryCsv ($a_target_file)
 Write Category CSV. More...
 
 assignUsersAsCourseMembers ($a_user_login_base="learner", $a_start=1, $a_end=100)
 Assign users as course members. More...
 
 removeAllDesktopItems ()
 Remove all desktop items. More...
 
 deactivateCalendarsOnPersonalDesktop ()
 Deactivate calendars on personal desktops. More...
 

Detailed Description

Data loader for load tests.

Initializes an ILIAS client with a number of users, objects etc.

Author
Alex Killing alex..nosp@m.kill.nosp@m.ing@g.nosp@m.mx.d.nosp@m.e
Version
$Id$

Definition at line 12 of file class.ilDataLoader.php.

Member Function Documentation

◆ assignUsersAsCourseMembers()

ilDataLoader::assignUsersAsCourseMembers (   $a_user_login_base = "learner",
  $a_start = 1,
  $a_end = 100 
)

Assign users as course members.

Definition at line 479 of file class.ilDataLoader.php.

481 {
482 global $ilDB;
483
484 $this->log("Assigning Course Members");
485 $set = $ilDB->query("SELECT usr_id, login FROM usr_data WHERE ".
486 " login LIKE ".$ilDB->quote($a_user_login_base."%", "text")
487 );
488 $user_ids = array();
489 while ($rec = $ilDB->fetchAssoc($set))
490 {
491 $rest = substr($rec["login"], strlen($a_user_login_base));
492 if (is_numeric($rest) &&
493 ((int) $rest >= $a_start && (int) $rest <= $a_end))
494 {
495 $user_ids[] = $rec["usr_id"];
496 }
497 }
498 $cnt = 1;
499 $crs_ref_ids = ilUtil::_getObjectsByOperations("crs", "read",
500 0, $limit = 1000000);
501 include_once "./Modules/Course/classes/class.ilCourseParticipants.php";
502 foreach ($crs_ref_ids as $r)
503 {
504 $crs_id = ilObject::_lookupObjId($r);
506 foreach ($user_ids as $u)
507 {
508 $this->log("$cnt: add user $u as member to course ".$crs_id);
509 $mem_obj->add($u, 1);
510 $cnt++;
511 }
512 }
513 }
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
static _lookupObjId($a_id)
static _getObjectsByOperations($a_obj_type, $a_operation, $a_usr_id=0, $limit=0)
Get all objects of a specific type and check access This function is not recursive,...
$r
Definition: example_031.php:79
$rest
Definition: goto.php:85
global $ilDB

References $ilDB, $r, $rest, ilCourseParticipants\_getInstanceByObjId(), ilUtil\_getObjectsByOperations(), ilObject\_lookupObjId(), and log().

+ Here is the call graph for this function:

◆ createDump()

ilDataLoader::createDump (   $a_target_file,
  $a_dump_cmd,
  $a_db_user = "root",
  $a_db_pw = "",
  $a_db_name = "loadtest" 
)

Create dump.

Parameters

Definition at line 371 of file class.ilDataLoader.php.

373 {
374 $this->log("Writing Dump");
375 $a_pw = ($a_pwd == "")
376 ? ""
377 : " -p".$a_pw;
378 $cmd = $a_dump_cmd." -u".$a_db_user." ".$a_pw." --skip-lock-tables -Q --extended-insert=FALSE --default-character-set=utf8".
379 " --add-drop-table=FALSE --add-locks=FALSE --compatible=mysql40 ".$a_db_name." > ".$a_target_file;
380 if (!is_file($a_target_file))
381 {
382 $this->log("Something went wrong when writing the dump:<br>".$cmd);
383 }
384 }
$cmd
Definition: sahs_server.php:35

References $cmd, and log().

+ Here is the call graph for this function:

◆ deactivateCalendarsOnPersonalDesktop()

ilDataLoader::deactivateCalendarsOnPersonalDesktop ( )

Deactivate calendars on personal desktops.

Definition at line 529 of file class.ilDataLoader.php.

530 {
531 global $ilDB;
532
533 $this->log("Deactivate calendars on personal desktop.");
534 $set = $ilDB->query("SELECT * FROM usr_data");
535 while ($rec = $ilDB->fetchAssoc($set))
536 {
537 $ilDB->manipulate("REPLACE INTO il_block_setting ".
538 "(type, user_id, block_id, setting, value) VALUES (".
539 $ilDB->quote("pdcal", "text").",".
540 $ilDB->quote($rec["usr_id"], "integer").",".
541 $ilDB->quote(0, "integer").",".
542 $ilDB->quote("detail", "text").",".
543 $ilDB->quote(0, "integer").
544 ")");
545 }
546 }

References $ilDB, and log().

+ Here is the call graph for this function:

◆ generateCalendarEntries()

ilDataLoader::generateCalendarEntries (   $a_num_per_course = 10)

Generate Calendar Entries.

Parameters

return

Definition at line 237 of file class.ilDataLoader.php.

238 {
239 include_once("./Services/Calendar/classes/class.ilDateTime.php");
240 include_once("./Services/Calendar/classes/class.ilCalendarEntry.php");
241 include_once("./Services/Calendar/classes/class.ilCalendarCategoryAssignments.php");
242 include_once("./Services/Calendar/classes/class.ilCalendarCategories.php");
243
244 $this->log("Creating Calendar Entries");
245
246 $crs_ref_ids = ilUtil::_getObjectsByOperations("crs", "read",
247 0, $limit = 1000000);
248 $cnt = 1;
249 foreach ($crs_ref_ids as $rid)
250 {
251 $obj_id = ilObject::_lookupObjId($rid);
253
254 $start = new ilDate(time(),IL_CAL_UNIX);
255 $end = new ilDate(time(),IL_CAL_UNIX);
256 $end->increment(IL_CAL_HOUR, 2);
257
258 for ($i = 1; $i <= $a_num_per_course; $i++)
259 {
260 $this->log("Event ".$cnt);
261 $entry = new ilCalendarEntry();
262 $entry->setStart($start); //ilDateTiem
263 $entry->setEnd($end); //ilDateTiem
264 $entry->setFullday(false); //ilDateTiem
265 $entry->setTitle("Event ".$cnt); //ilDateTiem
266 $entry->save();
267 $id = $entry->getEntryId();
268 $ass = new ilCalendarCategoryAssignments($id);
269 $ass->addAssignment($cat_id);
270 $start->increment(IL_CAL_DAY, 1);
271 $end->increment(IL_CAL_DAY, 1);
272//echo "-$cat_id-";
273//echo "+".ilDatePresentation::formatDate($start)."+";
274
275 $cnt++;
276 }
277 }
278 }
const IL_CAL_UNIX
const IL_CAL_HOUR
const IL_CAL_DAY
static _lookupCategoryIdByObjId($a_obj_id)
lookup category by obj_id
Model for a calendar entry.
Class for single dates.

References ilUtil\_getObjectsByOperations(), ilCalendarCategories\_lookupCategoryIdByObjId(), ilObject\_lookupObjId(), IL_CAL_DAY, IL_CAL_HOUR, IL_CAL_UNIX, and log().

+ Here is the call graph for this function:

◆ generateCategories()

ilDataLoader::generateCategories (   $a_start = 1,
  $a_end = 500,
  $a_sub_cats_per_cat = 10,
  $a_title_base = "Category",
  $a_node = "",
  $a_init_cnt = true,
  $a_depth = 1 
)

Generate Categories.

Parameters

return

Definition at line 93 of file class.ilDataLoader.php.

95 {
96 global $tree;
97
98 include_once("./Modules/Category/classes/class.ilObjCategory.php");
99
100 if ($a_init_cnt)
101 {
102 $this->item_cnt = $a_start;
103 $this->max_depth = ceil(log($a_end - $a_start, $a_sub_cats_per_cat));
104 }
105
106 if ($a_depth > $this->max_depth)
107 {
108 return;
109 }
110
111 if ($a_node == "")
112 {
113 $a_node = $tree->getRootId();
114 $this->log("Creating Categories");
115 }
116
117 $sub_cat_cnt = 0;
118 $sub_cats = array();
119 while ($sub_cat_cnt < $a_sub_cats_per_cat && $this->item_cnt <= $a_end)
120 {
121 if ($this->item_cnt <= $a_end)
122 {
123 $this->log($a_title_base." ".$this->item_cnt);
124 $new_cat = new ilObjCategory();
125 $new_cat->setTitle($a_title_base." ".$this->item_cnt);
126 $new_cat->create();
127 $new_cat->createReference();
128 $new_cat->putInTree($a_node);
129 $new_cat->setPermissions($a_node);
130 $sub_cats[] = $new_cat;
131 $sub_cat_cnt++;
132 $this->item_cnt++;
133 }
134 }
135
136 foreach ($sub_cats as $sub_cat)
137 {
138 $this->generateCategories($this->item_cnt, $a_end, $a_sub_cats_per_cat, $a_title_base,
139 $sub_cat->getRefId(), false, $a_depth + 1);
140 }
141 }
generateCategories($a_start=1, $a_end=500, $a_sub_cats_per_cat=10, $a_title_base="Category", $a_node="", $a_init_cnt=true, $a_depth=1)
Generate Categories.
Class ilObjCategory.

References generateCategories(), and log().

Referenced by generateCategories().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ generateCourses()

ilDataLoader::generateCourses (   $a_start = 1,
  $a_end = 500,
  $a_course_per_cat = 10,
  $a_title_base = "Course" 
)

Generate courses.

Parameters

return

Definition at line 149 of file class.ilDataLoader.php.

151 {
152 global $tree;
153
154 include_once("./Modules/Course/classes/class.ilObjCourse.php");
155
156 $this->log("Creating Courses");
157
158 $a_current = $a_start;
159
160 // how many categories do we need?
161 $needed_cats = ceil(($a_end - $a_start + 1) / $a_course_per_cat);
162
163 // get all categories and sort them by depth
164 $nodes = $tree->getFilteredSubTree($tree->getRootId(), array("adm", "crs", "fold", "grp"));
165 $nodes = ilUtil::sortArray($nodes, "depth", "desc");
166
167 foreach ($nodes as $node)
168 {
169 if ($node["type"] == "cat" && $a_current <= $a_end)
170 {
171 for ($i = 1; $i <= $a_course_per_cat; $i++)
172 {
173 if ($a_current <= $a_end)
174 {
175 $this->log($a_title_base." ".$a_current);
176 $new_crs = new ilObjCourse();
177 $new_crs->setTitle($a_title_base." ".$a_current);
178 $new_crs->create();
179 $new_crs->createReference();
180 $new_crs->putInTree($node["child"]);
181 $new_crs->setPermissions($node["child"]);
182
183 $a_current++;
184 }
185 }
186 }
187 }
188 }
Class ilObjCourse.
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray

References log(), and ilUtil\sortArray().

+ Here is the call graph for this function:

◆ generateFiles()

ilDataLoader::generateFiles (   $a_test_file,
  $a_files_per_course = 10,
  $a_title_base = "File" 
)

Generate files.

Parameters

return

Definition at line 196 of file class.ilDataLoader.php.

197 {
198 global $tree;
199
200 include_once("./Modules/File/classes/class.ilObjFile.php");
201
202 $this->log("Creating Files");
203
204 $a_current = $a_start;
205
206 // get all categories and sort them by depth
207 $crs_ref_ids = ilUtil::_getObjectsByOperations("crs", "read",
208 0, $limit = 1000000);
209 $cnt = 1;
210 foreach ($crs_ref_ids as $rid)
211 {
212 for ($i = 1; $i <= $a_files_per_course; $i++)
213 {
214 $this->log($a_title_base." ".$cnt);
215 $fileObj = new ilObjFile();
216 $fileObj->setTitle($a_title_base." ".$cnt);
217 $fileObj->setFileName("file_".$cnt.".txt");
218 $fileObj->create();
219 $fileObj->createReference();
220 $fileObj->putInTree($rid);
221 $fileObj->setPermissions($rid);
222 $fileObj->createDirectory();
223 $fileObj->getUploadFile($a_test_file,
224 "file_".$cnt.".txt");
225 $cnt++;
226
227 }
228 }
229 }
Class ilObjFile.

References ilUtil\_getObjectsByOperations(), and log().

+ Here is the call graph for this function:

◆ generateUsers()

ilDataLoader::generateUsers (   $a_login_base = "learner",
  $a_start = 1,
  $a_end = 1000,
  $a_firstname = "John",
  $a_lastname_base = "Learner",
  $a_pw = "learnerpw",
  $a_email = "de@de.de",
  $a_gender = "m",
  $a_lang = "en" 
)

Generate Users.

Parameters

return

Definition at line 55 of file class.ilDataLoader.php.

58 {
59 global $rbacadmin;
60
61 // new users
62 $this->log("Creating Users");
63 for ($i = $a_start; $i <= $a_end; $i++)
64 {
65 $this->log($a_login_base.$i);
66 $user = new ilObjUser();
67 $user->setLogin($a_login_base.$i);
68 $user->setFirstname($a_firstname);
69 $user->setLastname($a_lastname_base." ".$i);
70 $user->setGender($a_gender);
71 $user->setEmail($a_email);
72 $user->setAgreeDate(ilUtil::now());
73 $user->setPasswd($a_pw, IL_PASSWD_PLAIN);
74 $user->setTitle($user->getFullname());
75 $user->setDescription($user->getEmail());
76 $user->setLastPasswordChangeTS( time() );
77 $user->setActive(true);
78 $user->setTimeLimitUnlimited(true);
79 $user->create();
80 $user->setLanguage($a_lang);
81 $user->saveAsNew(false);
82 $user->writePrefs();
83 $rbacadmin->assignUser(4, $user->getId(),true);
84 }
85 }
const IL_PASSWD_PLAIN
static now()
Return current timestamp in Y-m-d H:i:s format.

References IL_PASSWD_PLAIN, log(), and ilUtil\now().

+ Here is the call graph for this function:

◆ getEnableLog()

ilDataLoader::getEnableLog ( )

Get enable log.

Returns
boolean enable log

Definition at line 30 of file class.ilDataLoader.php.

31 {
32 return $this->enable_log;
33 }

Referenced by log().

+ Here is the caller graph for this function:

◆ getline()

ilDataLoader::getline (   $fp,
  $delim 
)

Get line from file.

Definition at line 353 of file class.ilDataLoader.php.

354 {
355 $result = "";
356 while( !feof( $fp ) )
357 {
358 $tmp = fgetc( $fp );
359 if( $tmp == $delim )
360 return $result;
361 $result .= $tmp;
362 }
363 return $result;
364 }
$result

References $result.

Referenced by loadSqlTemplate().

+ Here is the caller graph for this function:

◆ loadSqlTemplate()

ilDataLoader::loadSqlTemplate (   $file)

Load SQL Template.

Parameters

return

Definition at line 286 of file class.ilDataLoader.php.

287 {
288 global $ilDB;
289
290 // mysql
291 if ($ilDB->getDBType() == "mysql")
292 {
293 $fp = fopen($file, 'r');
294 if (!$fp)
295 {
296 $this->log("Error reading file $file.");
297 return;
298 }
299 $this->log("Dropping Tables.");
300 $set = $ilDB->query("SHOW tables");
301 while ($rec = $ilDB->fetchAssoc($set))
302 {
303 foreach ($rec as $v)
304 {
305 $ilDB->query("DROP TABLE ".$v);
306 }
307 }
308
309 $this->log("Read Dump.");
310 while(!feof($fp))
311 {
312 //$line = trim(fgets($fp, 200000));
313 $line = trim($this->getline($fp, "\n"));
314
315 if ($line != "" && substr($line,0,1)!="#"
316 && substr($line,0,1)!="-")
317 {
318 //take line per line, until last char is ";"
319 if (substr($line,-1)==";")
320 {
321 //query is complete
322 $q .= " ".substr($line,0,-1);
323 $r = $ilDB->query($q);
324 if (mysql_errno() > 0)
325 {
326 echo "<br />ERROR: ".mysql_error().
327 "<br />SQL: $q";
328 return false;
329 }
330 unset($q);
331 unset($line);
332 } //if
333 else
334 {
335 $q .= " ".$line;
336 } //else
337 } //if
338 } //for
339
340 fclose($fp);
341 }
342
343 if ($ilDB->getDBType() == "oracle")
344 {
345 include_once("./setup/sql/ilDBTemplate.php");
346 setupILIASDatabase();
347 }
348 }
print $file
getline( $fp, $delim)
Get line from file.

References $file, $ilDB, $r, getline(), and log().

+ Here is the call graph for this function:

◆ log()

ilDataLoader::log (   $a_str)

Log.

Parameters

return

Definition at line 41 of file class.ilDataLoader.php.

42 {
43 if ($this->getEnableLog())
44 {
45 echo "<br>".$a_str; flush();
46 }
47 }
getEnableLog()
Get enable log.

References getEnableLog().

Referenced by assignUsersAsCourseMembers(), createDump(), deactivateCalendarsOnPersonalDesktop(), generateCalendarEntries(), generateCategories(), generateCourses(), generateFiles(), generateUsers(), loadSqlTemplate(), removeAllDesktopItems(), writeCategoryCsv(), writeCourseCsv(), and writeUserCsv().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ removeAllDesktopItems()

ilDataLoader::removeAllDesktopItems ( )

Remove all desktop items.

Definition at line 518 of file class.ilDataLoader.php.

519 {
520 global $ilDB;
521
522 $this->log("Remove Desktop Items.");
523 $ilDB->manipulate("DELETE FROM desktop_item");
524 }

References $ilDB, and log().

+ Here is the call graph for this function:

◆ setEnableLog()

ilDataLoader::setEnableLog (   $a_val)

Set enable log (currently echoes directly to the screen)

Parameters
booleanenable log

Definition at line 20 of file class.ilDataLoader.php.

21 {
22 $this->enable_log = $a_val;
23 }

◆ writeCategoryCsv()

ilDataLoader::writeCategoryCsv (   $a_target_file)

Write Category CSV.

Parameters

return

Definition at line 452 of file class.ilDataLoader.php.

453 {
454 global $ilDB;
455
456 $this->log("Writing Category CSV");
457 $cat_ref_ids = ilUtil::_getObjectsByOperations("cat", "read",
458 0, $limit = 1000000);
459 $file = fopen($a_target_file, "w");
460 if ($file)
461 {
462 foreach ($cat_ref_ids as $r)
463 {
464 fwrite($file, $r."\n");
465 }
466 fclose($file);
467 }
468 else
469 {
470 $this->log("Could not write Category CSV.");
471 }
472
473 }

References $file, $ilDB, $r, ilUtil\_getObjectsByOperations(), and log().

+ Here is the call graph for this function:

◆ writeCourseCsv()

ilDataLoader::writeCourseCsv (   $a_target_file)

Write Course CSV.

Parameters

return

Definition at line 423 of file class.ilDataLoader.php.

424 {
425 global $ilDB;
426
427 $this->log("Writing Course CSV");
428 $crs_ref_ids = ilUtil::_getObjectsByOperations("crs", "read",
429 0, $limit = 1000000);
430 $file = fopen($a_target_file, "w");
431 if ($file)
432 {
433 foreach ($crs_ref_ids as $r)
434 {
435 fwrite($file, $r."\n");
436 }
437 fclose($file);
438 }
439 else
440 {
441 $this->log("Could not write Course CSV.");
442 }
443
444 }

References $file, $ilDB, $r, ilUtil\_getObjectsByOperations(), and log().

+ Here is the call graph for this function:

◆ writeUserCsv()

ilDataLoader::writeUserCsv (   $a_target_file,
  $a_user_base_name = "learner" 
)

Write User CSV.

Parameters

return

Definition at line 392 of file class.ilDataLoader.php.

393 {
394 global $ilDB;
395
396 $this->log("Writing User CSV");
397 $set = $ilDB->query("SELECT * FROM usr_data");
398 $file = fopen($a_target_file, "w");
399 if ($file)
400 {
401 while ($rec = $ilDB->fetchAssoc($set))
402 {
403 if (substr($rec["login"], 0, strlen($a_user_base_name)) == $a_user_base_name)
404 {
405 fwrite($file, $rec["login"]."\n");
406 }
407 }
408 fclose($file);
409 }
410 else
411 {
412 $this->log("Could not write USer CSV.");
413 }
414
415 }

References $file, $ilDB, and log().

+ Here is the call graph for this function:

The documentation for this class was generated from the following file: