dokeos
[ class tree: dokeos ] [ index: dokeos ] [ all elements ]

Source for file DummyCourseCreator.class.php

Documentation is available at DummyCourseCreator.class.php

  1. <?php
  2. // $Id: DummyCourseCreator.class.php 15087 2008-04-25 04:37:14Z yannoo $
  3. /*
  4. ============================================================================== 
  5.     Dokeos - elearning and course management software
  6.     
  7.     Copyright (c) 2004 Dokeos S.A.
  8.     Copyright (c) 2003 Ghent University (UGent)
  9.     Copyright (c) 2001 Universite catholique de Louvain (UCL)
  10.     Copyright (c) Bart Mollet (bart.mollet@hogent.be)
  11.     
  12.     For a full list of contributors, see "credits.txt".
  13.     The full license can be read in "license.txt".
  14.     
  15.     This program is free software; you can redistribute it and/or
  16.     modify it under the terms of the GNU General Public License
  17.     as published by the Free Software Foundation; either version 2
  18.     of the License, or (at your option) any later version.
  19.     
  20.     See the GNU General Public License for more details.
  21.     
  22.     Contact address: Dokeos, 44 rue des palais, B-1030 Brussels, Belgium
  23.     Mail: info@dokeos.com
  24. ============================================================================== 
  25. */
  26. require_once ('Course.class.php');
  27. require_once ('Document.class.php');
  28. require_once ('Event.class.php');
  29. require_once ('Link.class.php');
  30. require_once ('LinkCategory.class.php');
  31. require_once ('ForumCategory.class.php');
  32. require_once ('Forum.class.php');
  33. require_once ('ForumTopic.class.php');
  34. require_once ('ForumPost.class.php');
  35. require_once ('CourseDescription.class.php');
  36. require_once ('Learnpath.class.php');
  37. require_once ('CourseRestorer.class.php');
  38. require_once ('mkdirr.php');
  39. require_once ('rmdirr.php');
  40. {
  41.     /**
  42.      * The dummy course
  43.      */
  44.     var $course;
  45.     /**
  46.      * 
  47.      */
  48.     var $default_property = array();
  49.     /**
  50.      * Create the dummy course
  51.      */
  52.     function create_dummy_course($course_code)
  53.     {
  54.         $this->default_property['insert_user_id''1';
  55.         $this->default_property['insert_date'date('Y-m-d H:i:s');
  56.         $this->default_property['lastedit_date'date('Y-m-d H:i:s');
  57.         $this->default_property['lastedit_user_id''1';
  58.         $this->default_property['to_group_id''0';
  59.         $this->default_property['to_user_id'null;
  60.         $this->default_property['visibility''1';
  61.         $this->default_property['start_visible''0000-00-00 00:00:00';
  62.         $this->default_property['end_visible'=  '0000-00-00 00:00:00';
  63.  
  64.         $course Database::get_course_info($course_code);
  65.         $this->course = new Course();
  66.         $tmp_path api_get_path(SYS_COURSE_PATH).$course['directory'].'/document/tmp_'.uniqid('');
  67.         mkdirr($tmp_path);
  68.         $this->course->backup_path $tmp_path;
  69.         $this->create_dummy_links();
  70.         $this->create_dummy_events();
  71.         $this->create_dummy_forums();
  72.         $this->create_dummy_announcements();
  73.         $this->create_dummy_documents();
  74.         $this->create_dummy_learnpaths();
  75.         $cr new CourseRestorer($this->course);
  76.         $cr->set_file_option(FILE_OVERWRITE);
  77.         $cr->restore($course_code);
  78.         rmdirr($tmp_path);
  79.     }
  80.     /**
  81.      * Create dummy documents
  82.      */
  83.     function create_dummy_documents()
  84.     {
  85.         $course api_get_course_info();
  86.         $course_doc_path $this->course->backup_path.'/document/';
  87.         $number_of_documents rand(1030);
  88.         $extensions array ('html''doc');
  89.         $directories array();
  90.         $property $this->default_property;
  91.         $property['lastedit_type''DocumentAdded';
  92.         $property['tool'TOOL_DOCUMENT;
  93.         $doc_id 0;
  94.         for ($doc_id 1$doc_id $number_of_documents$doc_id ++)
  95.         {
  96.             $path '';
  97.             $doc_type rand(0count($extensions1);
  98.             $extension $extensions[$doc_type];
  99.             $filename $this->get_dummy_content('title').'_'.$doc_id.'.'.$extension;
  100.             $content $this->get_dummy_content('text');
  101.             $dirs rand(03);
  102.             for ($i 0$i $dirs$i ++)
  103.             {
  104.                 $path .= 'directory/';
  105.                 $directories[$path1;
  106.             }
  107.             $dir_to_make $course_doc_path.$path;
  108.             if (!is_dir($dir_to_make))
  109.             {
  110.                 mkdirr(str_replace('/',DIRECTORY_SEPARATOR,$dir_to_make));
  111.             }
  112.             $file $course_doc_path.$path.$filename;
  113.             $fp fopen($file'w');
  114.             fwrite($fp$content);
  115.             fclose($fp);
  116.             $size filesize($file);
  117.             $document new Document($doc_id'/'.$path.$filename,$this->get_dummy_content('description'),$this->get_dummy_content('title')'file'$size);
  118.             $document->item_properties[$property;
  119.             $this->course->add_resource($document);
  120.         }
  121.         foreach($directories as $path => $flag)
  122.         {
  123.             $path substr($path,0,strlen($path)-1);
  124.             $document new Document($doc_id++,'/'.$path$this->get_dummy_content('description'),$this->get_dummy_content('title'),'folder',0);    
  125.             $property['lastedit_type''FolderCreated';
  126.             $document->item_properties[$property;
  127.             $this->course->add_resource($document);
  128.         }
  129.     }
  130.     /**
  131.      * Create dummy announcements
  132.      */
  133.     function create_dummy_announcements()
  134.     {
  135.         $property $this->default_property;
  136.         $property['lastedit_type''AnnouncementAdded';
  137.         $property['tool'TOOL_ANNOUNCEMENT;
  138.         $number_of_announcements rand(1030);
  139.         for ($i 0$i $number_of_announcements$i ++)
  140.         {
  141.             $time mktime(rand(124)rand(160)0rand(112)rand(128)intval(date('Y')));
  142.             $date date('Y-m-d'$time);
  143.             $announcement new Announcement($i,$this->get_dummy_content('title'),$this->get_dummy_content('text')$date,0);
  144.             $announcement->item_properties[$property;
  145.             $this->course->add_resource($announcement);
  146.         }
  147.     }
  148.     /**
  149.      * Create dummy events
  150.      */
  151.     function create_dummy_events()
  152.     {
  153.         $number_of_events rand(1030);
  154.         $property $this->default_property;
  155.         $property['lastedit_type''AgendaAdded';
  156.         $property['tool'TOOL_CALENDAR_EVENT;
  157.         for ($i 0$i $number_of_events$i ++)
  158.         {
  159.             $hour rand(1,24);
  160.             $minute rand(1,60);
  161.             $second rand(1,60);
  162.             $day rand(1,28);
  163.             $month rand(1,12);
  164.             $year intval(date('Y'));
  165.             $time mktime($hour,$minute,$second,$month,$day,$year);
  166.             $start_date date('Y-m-d H:m:s'$time);
  167.             $hour rand($hour,24);
  168.             $minute rand($minute,60);
  169.             $second rand($second,60);
  170.             $day rand($day,28);
  171.             $month rand($month,12);
  172.             $year intval(date('Y'));
  173.             $time mktime($hour,$minute,$second,$month,$day,$year);
  174.             $end_date date('Y-m-d H:m:s'$time);
  175.             $event new Event($i$this->get_dummy_content('title')$this->get_dummy_content('text')$start_date$end_date);
  176.             $event->item_properties[$property;
  177.             $this->course->add_resource($event);
  178.         }
  179.     }
  180.     /**
  181.      * Create dummy links
  182.      */
  183.     function create_dummy_links()
  184.     {
  185.         // create categorys
  186.         $number_of_categories rand(510);
  187.         for ($i 0$i $number_of_categories$i ++)
  188.         {
  189.             $linkcat new LinkCategory($i$this->get_dummy_content('title')$this->get_dummy_content('description'),$i);
  190.             $this->course->add_resource($linkcat);
  191.         }
  192.         // create links
  193.         $number_of_links rand(550);
  194.         $on_homepage rand(0,20== 0
  195.         $property $this->default_property;
  196.         $property['lastedit_type''LinkAdded';
  197.         $property['tool'TOOL_LINK;
  198.         for ($i 0$i $number_of_links$i ++)
  199.         {
  200.             $link new Link($i$this->get_dummy_content('title')'http://www.google.com/search?q='.$this->get_dummy_content('title')$this->get_dummy_content('description')rand(0$number_of_categories -1),$on_homepage);
  201.             $link->item_properties[$property;
  202.             $this->course->add_resource($link);
  203.         }
  204.     }
  205.     /**
  206.      * Create dummy forums
  207.      */
  208.     function create_dummy_forums()
  209.     {
  210.         $number_of_categories rand(26);
  211.         $number_of_forums rand(550);
  212.         $number_of_topics rand(30100);
  213.         $number_of_posts rand(1001000);
  214.         $last_forum_post array ();
  215.         $last_topic_post array ();
  216.         // create categorys
  217.         for ($i 1$i <= $number_of_categories$i ++)
  218.         {
  219.             $forumcat new ForumCategory($i$this->get_dummy_content('title'));
  220.             $this->course->add_resource($forumcat);
  221.         }
  222.         // create posts
  223.         for ($post_id 1$post_id <= $number_of_posts$post_id ++)
  224.         {
  225.             $topic_id rand(1$number_of_topics);
  226.             $last_topic_post[$topic_id$post_id;
  227.             $post new ForumPost($post_id$this->get_dummy_content('title')$this->get_dummy_content('text')0'127.0.0.1''Dokeos''Administrator'00$topic_id);
  228.             $this->course->add_resource($post);
  229.         }
  230.         // create topics
  231.         for ($topic_id 1$topic_id <= $number_of_topics$topic_id ++)
  232.         {
  233.             $forum_id rand(1$number_of_forums);
  234.             $last_forum_post[$forum_id$last_topic_post[$topic_id];
  235.             $topic new ForumTopic($topic_id$this->get_dummy_content('title')'2005-03-31 12:10:00''Dokeos''Administrator'0$forum_id$last_topic_post[$topic_id]);
  236.             $this->course->add_resource($topic);
  237.         }
  238.         // create forums
  239.         for ($forum_id 1$forum_id <= $number_of_forums$forum_id ++)
  240.         {
  241.             $forum new Forum($forum_id$this->get_dummy_content('title'),$this->get_dummy_content('description'rand(1$number_of_categories)$last_forum_post[$forum_id]);
  242.             $this->course->add_resource($forum);
  243.         }
  244.     }
  245.     /**
  246.      * Create dummy learnpaths
  247.      */
  248.     function create_dummy_learnpaths()
  249.     {
  250.         $number_of_learnpaths rand(3,5);
  251.         $global_item_id 1;
  252.         for($i=1$i<=$number_of_learnpaths;$i++)
  253.         {
  254.         $chapters array();
  255.         $number_of_chapters rand(1,6);
  256.         for($chapter_id 1$chapter_id <= $number_of_chapters$chapter_id++)
  257.         {
  258.             $chapter['name'$this->get_dummy_content('title');
  259.             $chapter['description'$this->get_dummy_content('description');
  260.             $chapter['display_order'$chapter_id;
  261.             $chapter['items'array();
  262.             $number_of_items rand(5,20);
  263.             for$item_id 1$item_id<$number_of_items$item_id++)
  264.             {
  265.                 $type $types[rand(0,count($types)-1)];
  266.                 $resources $this->course->resources[$type];
  267.                 $resource $resources[rand(0,count($resources)-1)];
  268.                 $item array();
  269.                 $item['type'$resource->type;
  270.                 $item['id'$resource->source_id;    
  271.                 $item['display_order'$item_id;
  272.                 $item['title'$this->get_dummy_content('title');
  273.                 $item['description'$this->get_dummy_content('description');
  274.                 $item['ref_id'$global_item_id;
  275.                 ifrand(0,5== && $item_id 1)
  276.                 {
  277.                     $item['prereq_type''i';
  278.                     $item['prereq'rand($global_item_id $item_id,$global_item_id-1);    
  279.                 }
  280.                 $chapter['items'][$item;
  281.                 $global_item_id++;
  282.             }
  283.             $chapters[$chapter;    
  284.         }
  285.         $lp new Learnpath($i,$this->get_dummy_content('title'),$this->get_dummy_content('description'),1,$chapters);    
  286.         $this->course->add_resource($lp);
  287.         }
  288.     }
  289.     /**
  290.      * Get dummy titles, descriptions and texts
  291.      */
  292.     function get_dummy_content($type)
  293.     {
  294.         $dummy_text 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque lectus. Duis sodales. Vivamus et nunc. Phasellus interdum est a lorem. Fusce venenatis luctus lectus. Mauris quis turpis ac erat rhoncus suscipit. Phasellus elit dui, semper at, porta ut, egestas ac, enim. Quisque pellentesque, nisl nec consequat mollis, ipsum justo pellentesque nibh, non faucibus odio ante at lorem. Donec vitae pede ut felis ultricies semper. Suspendisse velit nibh, interdum quis, gravida nec, dapibus ac, leo. Cras id sem ut tellus tincidunt scelerisque. Aenean ac magna feugiat dolor accumsan dignissim. Integer eget nisl.
  295.         Ut sit amet nulla. Vestibulum venenatis posuere mauris. Nullam magna leo, blandit luctus, consequat quis, gravida nec, justo. Nam pede. Etiam ut nisl. In at quam scelerisque sapien faucibus commodo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Proin mattis lorem quis nunc. Praesent placerat ligula id elit. Aenean blandit, purus sit amet pharetra auctor, libero orci rutrum felis, sit amet sodales mauris ipsum ultricies sapien. Vivamus wisi. Cras elit elit, ullamcorper ac, interdum nec, pulvinar nec, lacus. In lacus. Vivamus auctor, arcu vitae tincidunt porta, eros lacus tristique justo, vitae semper risus neque eget massa. Vivamus turpis.
  296.         Aenean ac wisi non enim aliquam scelerisque. Praesent eget mi. Vestibulum volutpat pulvinar justo. Phasellus sapien ante, pharetra id, bibendum sed, porta non, purus. Maecenas leo velit, luctus quis, porta non, feugiat sit amet, sapien. Proin vitae augue ut massa adipiscing placerat. Morbi ac risus. Proin dapibus eros egestas quam. Fusce fermentum lobortis elit. Duis lectus tellus, convallis nec, lobortis vel, accumsan ut, nunc. Nunc est. Donec ullamcorper laoreet quam.
  297.         Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Suspendisse potenti. Mauris mi. Vivamus risus lacus, faucibus sit amet, sollicitudin a, blandit et, justo. In hendrerit. Sed imperdiet, eros at fringilla tempor, turpis augue semper enim, quis rhoncus nibh enim quis dui. Sed massa sapien, mattis et, laoreet sit amet, dignissim nec, urna. Integer laoreet quam quis lectus. Curabitur convallis gravida dui. Nam metus. Ut sit amet augue in nibh interdum scelerisque. Donec venenatis, lacus et pulvinar euismod, libero massa condimentum pede, commodo tristique nunc massa eu quam. Donec vulputate. Aenean in nibh. Phasellus porttitor. Donec molestie, sem ac porttitor vulputate, mauris dui egestas libero, ac lobortis dolor sem vel ligula. Nam vulputate pretium libero. Cras accumsan. Vivamus lacinia sapien sit amet elit.
  298.         Duis bibendum elementum justo. Duis posuere. Fusce nulla odio, posuere eget, condimentum nec, venenatis eu, elit. In hac habitasse platea dictumst. Aenean ac sem in enim imperdiet feugiat. Integer tincidunt lectus at elit. Integer magna lacus, vehicula quis, eleifend eget, suscipit vitae, leo. Nunc porta augue nec enim. Curabitur vehicula volutpat enim. Aliquam consequat. Vestibulum rhoncus tellus vitae erat. Integer est. Quisque fermentum leo nec odio. Suspendisse lobortis sollicitudin augue. Nullam urna mi, suscipit eu, sagittis laoreet, ultrices ac, sem. Aliquam enim tortor, hendrerit non, cursus a, tristique sit amet, sapien. Suspendisse potenti. Aenean semper placerat neque.';
  299.         switch($type)
  300.         {
  301.          case 'description':
  302.              $descriptions explode(".",$dummy_text);
  303.              return $descriptions[rand(0,count($descriptions)-1)];
  304.              break;    
  305.          case 'title':
  306.              $dummy_text str_replace(array("\n",'.',',',"\t"),array(' ','','',' '),$dummy_text);
  307.              $titles explode(" ",$dummy_text);
  308.              return trim($titles[rand(0,count($titles)-1)]);
  309.              break;
  310.          case 'text':
  311.              $texts explode("\n",$dummy_text);
  312.              return $texts[rand(0,count($texts)-1)];
  313.              break;
  314.         }
  315.     }
  316. }
  317. ?>

Documentation generated on Thu, 12 Jun 2008 13:22:11 -0500 by phpDocumentor 1.4.1