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

Source for file classmanager.lib.php

Documentation is available at classmanager.lib.php

  1. <?php
  2. /*
  3. ============================================================================== 
  4.     Dokeos - elearning and course management software
  5.     
  6.     Copyright (c) 2004 Dokeos S.A.
  7.     Copyright (c) 2003 Ghent University (UGent)
  8.     Copyright (c) 2001 Universite catholique de Louvain (UCL)
  9.     Copyright (c) Bart Mollet, Hogeschool Gent
  10.     
  11.     For a full list of contributors, see "credits.txt".
  12.     The full license can be read in "license.txt".
  13.     
  14.     This program is free software; you can redistribute it and/or
  15.     modify it under the terms of the GNU General Public License
  16.     as published by the Free Software Foundation; either version 2
  17.     of the License, or (at your option) any later version.
  18.     
  19.     See the GNU General Public License for more details.
  20.     
  21.     Contact address: Dokeos, 44 rue des palais, B-1030 Brussels, Belgium
  22.     Mail: info@dokeos.com
  23. ============================================================================== 
  24. */
  25. /**
  26. ============================================================================== 
  27. *    This is the class library for Dokeos.
  28. *    @package     dokeos.library
  29. ============================================================================== 
  30. */
  31. require_once (api_get_path(LIBRARY_PATH).'course.lib.php');
  32. /**
  33.  * This library contains some functions for class-management.
  34.  * @author Bart Mollet
  35.  * @package dokeos.library
  36.  */
  37. {
  38.     /**
  39.      * Get class information
  40.      * @note This function can't be named get_class() because that's a standard
  41.      *  php-function.
  42.      */
  43.     function get_class_info($class_id)
  44.     {
  45.         $table_class Database :: get_main_table(TABLE_MAIN_CLASS);
  46.         $sql "SELECT * FROM $table_class WHERE id='".$class_id."'";
  47.         $res api_sql_query($sql__FILE____LINE__);
  48.         return mysql_fetch_array($resMYSQL_ASSOC);
  49.     }
  50.     /**
  51.      * Change the name of a class
  52.      * @param string $name The new name
  53.      * @param int $class_id The class id
  54.      */
  55.     function set_name($name$class_id)
  56.     {
  57.         $table_class Database :: get_main_table(TABLE_MAIN_CLASS);
  58.         $sql "UPDATE $table_class SET name='".mysql_real_escape_string($name)."' WHERE id='".$class_id."'";
  59.         $res api_sql_query($sql__FILE____LINE__);
  60.     }
  61.     /**
  62.      * Create a class
  63.      * @param string $name 
  64.      */
  65.     function create_class($name)
  66.     {
  67.         $table_class Database :: get_main_table(TABLE_MAIN_CLASS);
  68.         $sql "INSERT INTO $table_class SET name='".mysql_real_escape_string($name)."'";
  69.         api_sql_query($sql__FILE____LINE__);
  70.         return mysql_affected_rows(== 1;
  71.     }
  72.     /**
  73.      * Check if a classname is allready in use
  74.      * @param string $name 
  75.      */
  76.     function class_name_exists($name)
  77.     {
  78.         $table_class Database :: get_main_table(TABLE_MAIN_CLASS);
  79.         $sql "SELECT * FROM $table_class WHERE name='".mysql_real_escape_string($name)."'";
  80.         $res api_sql_query($sql__FILE____LINE__);
  81.         return mysql_num_rows($res!= 0;
  82.     }
  83.     /**
  84.      * Delete a class
  85.      * @param int $class_id 
  86.      * @todo Add option to unsubscribe class-members from the courses where the
  87.      *  class was subscibed to
  88.      */
  89.     function delete_class($class_id)
  90.     {
  91.         $table_class Database :: get_main_table(TABLE_MAIN_CLASS);
  92.         $table_class_course Database :: get_main_table(TABLE_MAIN_COURSE_CLASS);
  93.         $table_class_user Database :: get_main_table(TABLE_MAIN_CLASS_USER);
  94.         $sql "DELETE FROM $table_class_user WHERE class_id = '".$class_id."'";
  95.         api_sql_query($sql__FILE____LINE__);
  96.         $sql "DELETE FROM $table_class_course WHERE class_id = '".$class_id."'";
  97.         api_sql_query($sql__FILE____LINE__);
  98.         $sql "DELETE FROM $table_class WHERE id = '".$class_id."'";
  99.         api_sql_query($sql__FILE____LINE__);
  100.     }
  101.     /**
  102.      * Get all users from a class
  103.      * @param int $class_id 
  104.      * @return array 
  105.      */
  106.     function get_users($class_id)
  107.     {
  108.         $table_class_user Database :: get_main_table(TABLE_MAIN_CLASS_USER);
  109.         $table_user Database :: get_main_table(TABLE_MAIN_USER);
  110.         $sql "SELECT * FROM $table_class_user cu, $table_user u WHERE cu.class_id = '".$class_id."' AND cu.user_id = u.user_id";
  111.         $res api_sql_query($sql__FILE____LINE__);
  112.         $users array ();
  113.         while ($user mysql_fetch_array($resMYSQL_ASSOC))
  114.         {
  115.             $users[$user;
  116.         }
  117.         return $users;
  118.     }
  119.     /**
  120.      * Add a user to a class. If the class is subscribed to a course, the new
  121.      * user will also be subscribed to that course.
  122.      * @param int $user_id The user id
  123.      * @param int $class_id The class id
  124.      */
  125.     function add_user($user_id$class_id)
  126.     {
  127.         $table_class_user Database :: get_main_table(TABLE_MAIN_CLASS_USER);
  128.         $sql "INSERT IGNORE INTO $table_class_user SET user_id = '".$user_id."', class_id='".$class_id."'";
  129.         api_sql_query($sql__FILE____LINE__);
  130.         $courses ClassManager :: get_courses($class_id);
  131.         foreach ($courses as $index => $course)
  132.         {
  133.             CourseManager :: subscribe_user($user_id$course['course_code']);
  134.         }
  135.     }
  136.     /**
  137.      * Unsubscribe a user from a class. If the class is also subscribed in a
  138.      * course, the user will be unsubscribed from that course
  139.      * @param int $user_id The user id
  140.      * @param int $class_id The class id
  141.      */
  142.     function unsubscribe_user($user_id$class_id)
  143.     {
  144.         $table_class_user Database :: get_main_table(TABLE_MAIN_CLASS_USER);
  145.         $table_course_class Database :: get_main_table(TABLE_MAIN_COURSE_CLASS);
  146.         $courses ClassManager :: get_courses($class_id);
  147.         if (count($courses!= 0)
  148.         {
  149.             $course_codes array ();
  150.             foreach ($courses as $index => $course)
  151.             {
  152.                 $course_codes[$course['course_code'];
  153.                 $sql "SELECT DISTINCT user_id FROM $table_class_user t1, $table_course_class t2 WHERE t1.class_id=t2.class_id AND course_code = '".$course['course_code']."' AND user_id = $user_id AND t2.class_id<>'$class_id'";
  154.                 $res api_sql_query($sql__FILE____LINE__);
  155.                 if (mysql_num_rows($res== && CourseManager :: get_user_in_course_status($user_id$course['course_code']== STUDENT)
  156.                 {
  157.                     CourseManager :: unsubscribe_user($user_id$course['course_code']);
  158.                 }
  159.             }
  160.         }
  161.         $sql "DELETE FROM $table_class_user WHERE user_id='".$user_id."' AND class_id = '".$class_id."'";
  162.         api_sql_query($sql__FILE____LINE__);
  163.     }
  164.     /**
  165.      * Get all courses in which a class is subscribed
  166.      * @param int $class_id 
  167.      * @return array 
  168.      */
  169.     function get_courses($class_id)
  170.     {
  171.         $table_class_course Database :: get_main_table(TABLE_MAIN_COURSE_CLASS);
  172.         $table_course Database :: get_main_table(TABLE_MAIN_COURSE);
  173.         $sql "SELECT * FROM $table_class_course cc, $table_course c WHERE cc.class_id = '".$class_id."' AND cc.course_code = c.code";
  174.         $res api_sql_query($sql__FILE____LINE__);
  175.         $courses array ();
  176.         while ($course mysql_fetch_array($resMYSQL_ASSOC))
  177.         {
  178.             $courses[$course;
  179.         }
  180.         return $courses;
  181.     }
  182.     /**
  183.      * Subscribe all members of a class to a course
  184.      * @param  int $class_id The class id
  185.      * @param string $course_code The course code
  186.      */
  187.     function subscribe_to_course($class_id$course_code)
  188.     {
  189.         $tbl_course_class Database :: get_main_table(TABLE_MAIN_COURSE_CLASS);
  190.         $tbl_class_user Database :: get_main_table(TABLE_MAIN_CLASS_USER);
  191.         $tbl_course_user Database :: get_main_table(TABLE_MAIN_COURSE_USER);
  192.         $sql "INSERT IGNORE INTO $tbl_course_class SET course_code = '".mysql_real_escape_string($course_code)."', class_id = '".mysql_real_escape_string($class_id)."'";
  193.         api_sql_query($sql__FILE____LINE__);
  194.         $sql "SELECT user_id FROM $tbl_class_user WHERE class_id = '".mysql_real_escape_string($class_id)."'";
  195.         $res api_sql_query($sql__FILE____LINE__);
  196.         while ($user mysql_fetch_object($res))
  197.         {
  198.             CourseManager :: subscribe_user($user->user_id$course_code);
  199.         }
  200.     }
  201.     /**
  202.      * Unsubscribe a class from a course.
  203.      * Only students are unsubscribed. If a user is member of 2 classes which
  204.      * are both subscribed to the course, the user stays in the course.
  205.      * @param int $class_id The class id
  206.      * @param string $course_code The course code
  207.      */
  208.     function unsubscribe_from_course($class_id$course_code)
  209.     {
  210.         $tbl_course_class Database :: get_main_table(TABLE_MAIN_COURSE_CLASS);
  211.         $tbl_class_user Database :: get_main_table(TABLE_MAIN_CLASS_USER);
  212.         $sql "SELECT cu.user_id,COUNT(cc.class_id) FROM $tbl_course_class cc, $tbl_class_user cu WHERE  cc.class_id = cu.class_id AND cc.course_code = '".mysql_real_escape_string($course_code)."' GROUP BY cu.user_id HAVING COUNT(cc.class_id) = 1";
  213.         $single_class_users api_sql_query($sql__FILE____LINE__);
  214.         while ($single_class_user mysql_fetch_object($single_class_users))
  215.         {
  216.             $sql "SELECT * FROM $tbl_class_user WHERE class_id = '".mysql_real_escape_string($class_id)."' AND user_id = '".mysql_real_escape_string($single_class_user->user_id)."'";
  217.             $res api_sql_query($sql__FILE____LINE__);
  218.             if (mysql_num_rows($res0)
  219.             {
  220.                 if (CourseManager :: get_user_in_course_status($single_class_user->user_id$course_code== STUDENT)
  221.                 {
  222.                     CourseManager :: unsubscribe_user($single_class_user->user_id$course_code);
  223.                 }
  224.             }
  225.         }
  226.         $sql "DELETE FROM $tbl_course_class WHERE course_code = '".mysql_real_escape_string($course_code)."' AND class_id = '".mysql_real_escape_string($class_id)."'";
  227.         api_sql_query($sql__FILE____LINE__);
  228.     }
  229.     /**
  230.      * Get the class-id
  231.      * @param string $name The class name
  232.      */
  233.     function get_class_id($name)
  234.     {
  235.         $table_class Database :: get_main_table(TABLE_MAIN_CLASS);
  236.         $sql "SELECT * FROM $table_class WHERE name='".$name."'";
  237.         $res api_sql_query($sql__FILE____LINE__);
  238.         $obj mysql_fetch_object($res);
  239.         return $obj->id;
  240.     }
  241.     /**
  242.      * Get all classes subscribed in a course
  243.      * @param string $course_code 
  244.      * @return array An array with all classes (keys: 'id','code','name')
  245.      */
  246.     function get_classes_in_course($course_code)
  247.     {
  248.         $table_class Database :: get_main_table(TABLE_MAIN_CLASS);
  249.         $table_course_class Database :: get_main_table(TABLE_MAIN_COURSE_CLASS);
  250.         $sql "SELECT cl.* FROM $table_class cl, $table_course_class cc WHERE cc.course_code = '".mysql_real_escape_string($course_code)."' AND cc.class_id = cl.id";
  251.         $res api_sql_query($sql__FILE____LINE__);
  252.         $classes array ();
  253.         while ($class mysql_fetch_array($resMYSQL_ASSOC))
  254.         {
  255.             $classes[$class;
  256.         }
  257.         return $classes;
  258.     }
  259. }
  260. ?>

Documentation generated on Thu, 12 Jun 2008 13:07:25 -0500 by phpDocumentor 1.4.1