]> git.mjollnir.org Git - moodle.git/commitdiff
web service MDL-12886 merged Pigui's Team work on course external file + some refactoring
authorjerome <jerome>
Thu, 2 Apr 2009 06:59:14 +0000 (06:59 +0000)
committerjerome <jerome>
Thu, 2 Apr 2009 06:59:14 +0000 (06:59 +0000)
course/external.php
course/lib.php
course/simpletest/testexternal.php

index 87a6ef3b9cce23dc0dad1eb37a29f0132f214cab..df7a2c15ed2c6c96b52e02b34a239a8ac9346e70 100644 (file)
@@ -34,19 +34,52 @@ final class course_external {
     /**
      * Retrieve courses
      * @param array|struct $params - need to be define as struct for XMLRPC
-     * @subparam integer $params:search->id - the id to search
-     * @subparam string $params:search->idnumber - the idnumber to search
-     * @subparam string $params:search->shortname - the shortname to search
-     * @return object $return
-     * @subparam integer $return:course->id
-     * @subparam string $return:course->category
-     * @subparam string $return:course->summary
-     * @subparam string $return:course->format
-     * @subparam string $return:course->numsections
-     * @subparam string $return:course->startdate
-     * @subparam string $return:course->fullname
-     * @subparam string $return:course->shortname
-     * @subparam string $return:course->idnumber
+     * @subparam integer   $params:search->id - the id to search
+     * @subparam string    $params:search->idnumber - the idnumber to search
+     * @subparam string    $params:search->shortname - the shortname to search
+     * @return object     $return
+     * @subreturn integer $return:course->id
+     * @subreturn string  $return:course->idnumber
+     * @subreturn string  $return:course->shortname
+     * @subreturn integer $return:course->category
+     * @subreturn string  $return:course->fullname
+     * @subreturn string  $return:course->summary
+     * @subreturn string  $return:course->format
+     * @subreturn integer $return:course->startdate
+     * @subreturn integer $return:course->sortorder
+     * @subreturn integer $return:course->showgrades
+     * @subreturn string  $return:course->modinfo
+     * @subreturn string  $return:course->newsitems
+     * @subreturn string  $return:course->guest
+     * @subreturn integer $return:course->metacourse
+     * @subreturn string  $return:course->password
+     * @subreturn integer $return:course->enrolperiod
+     * @subreturn integer $return:course->defaultrole
+     * @subreturn integer $return:course->enrollable
+     * @subreturn integer $return:course->numsections
+     * @subreturn integer $return:course->expirynotify
+     * @subreturn integer $return:course->notifystudents
+     * @subreturn integer $return:course->expirythreshold
+     * @subreturn integer $return:course->marker
+     * @subreturn integer $return:course->maxbytes
+     * @subreturn integer $return:course->showreports
+     * @subreturn integer $return:course->visible
+     * @subreturn integer $return:course->hiddensections
+     * @subreturn integer $return:course->groupmode
+     * @subreturn integer $return:course->groupmodeforce
+     * @subreturn integer $return:course->defaultgroupingid
+     * @subreturn string  $return:course->lang
+     * @subreturn string  $return:course->theme
+     * @subreturn string  $return:course->cost
+     * @subreturn string  $return:course->currency
+     * @subreturn integer $return:course->timecreated
+     * @subreturn integer $return:course->timemodified
+     * @subreturn integer $return:course->requested
+     * @subreturn integer $return:course->restrictmodules
+     * @subreturn integer $return:course->enrolstartdate
+     * @subreturn integer $return:course->enrolenddate
+     * @subreturn string  $return:course->enrol
+     * @subreturn integer $return:course->enablecompletion
      */
     static function get_courses($params) {
         global $USER;
@@ -76,6 +109,40 @@ final class course_external {
                     $returnedcourse->numsections =  $course->numsections;
                     $returnedcourse->startdate =  $course->startdate;
                     $returnedcourse->category =  $course->category;
+                    $returnedcourse->sortorder =  $course->sortorder;
+                    $returnedcourse->password =  $course->password  ;
+                    $returnedcourse->showgrades =  $course->showgrades;
+                    $returnedcourse->modinfo =  $course->modinfo;
+                    $returnedcourse->newsitems =  $course->newsitems;
+                    $returnedcourse->guest =  $course->guest;
+                    $returnedcourse->enrolperiod =  $course->enrolperiod;
+                    $returnedcourse->marker =  $course->marker;
+                    $returnedcourse->maxbytes =  $course->maxbytes;
+                    $returnedcourse->showreports =  $course->showreports;
+                    $returnedcourse->visible =  $course->visible;
+                    $returnedcourse->hiddensections =  $course->hiddensections;
+                    $returnedcourse->groupmode =  $course->groupmode;
+                    $returnedcourse->groupmodeforce =  $course->groupmodeforce;
+                    $returnedcourse->defaultgroupingid =  $course->defaultgroupingid;
+                    $returnedcourse->lang =  $course->lang;
+                    $returnedcourse->theme =  $course->theme;
+                    $returnedcourse->cost =  $course->cost;
+                    $returnedcourse->currency =  $course->currency;
+                    $returnedcourse->timecreated =  $course->timecreated;
+                    $returnedcourse->timemodified =  $course->timemodified;
+                    $returnedcourse->metacourse =  $course->metacourse;
+                    $returnedcourse->requested =  $course->requested;
+                    $returnedcourse->restrictmodules =  $course->restrictmodules;
+                    $returnedcourse->expirynotify =  $course->expirynotify;
+                    $returnedcourse->expirythreshold =  $course->expirythreshold;
+                    $returnedcourse->notifystudents =  $course->notifystudents;
+                    $returnedcourse->enrollable =  $course->enrollable;
+                    $returnedcourse->enrolstartdate =  $course->enrolstartdate;
+                    $returnedcourse->enrolenddate =  $course->enrolenddate;
+                    $returnedcourse->enrol =  $course->enrol;
+                    $returnedcourse->defaultrole =  $course->defaultrole;
+                    $returnedcourse->enablecompletion =  $course->enablecompletion;
+
                     $courses[] = $returnedcourse;
                 }
             }
@@ -86,17 +153,50 @@ final class course_external {
         }
     }
 
-     /**
+    /**
      * Create multiple courses
      * @param array|struct $params - need to be define as struct for XMLRPC
-     * @subparam integer $params:course->category
-     * @subparam string $params:course->summary
-     * @subparam string $params:course->format
-     * @subparam string $params:course->numsections
-     * @subparam string $params:course->startdate
-     * @subparam string $params:course->fullname
-     * @subparam string $params:course->shortname
-     * @subparam string $params:course->idnumber
+     * @subparam string    $params:course->idnumber
+     * @subparam string    $params:course->shortname
+     * @subparam integer   $params:course->category
+     * @subparam string    $params:course->fullname
+     * @subparam string    $params:course->summary
+     * @subparam string    $params:course->format
+     * @subparam integer   $params:course->startdate
+     * @subparam integer   $params:course->sortorder
+     * @subparam integer   $params:course->showgrades
+     * @subparam string    $params:course->modinfo
+     * @subparam string    $params:course->newsitems
+     * @subparam string    $params:course->guest
+     * @subparam integer   $params:course->metacourse
+     * @subparam string    $params:course->password
+     * @subparam integer   $params:course->enrolperiod
+     * @subparam integer   $params:course->defaultrole
+     * @subparam integer   $params:course->enrollable
+     * @subparam integer   $params:course->numsections
+     * @subparam integer   $params:course->expirynotify
+     * @subparam integer   $params:course->notifystudents
+     * @subparam integer   $params:course->expirythreshold
+     * @subparam integer   $params:course->marker
+     * @subparam integer   $params:course->maxbytes
+     * @subparam integer   $params:course->showreports
+     * @subparam integer   $params:course->visible
+     * @subparam integer   $params:course->hiddensections
+     * @subparam integer   $params:course->groupmode
+     * @subparam integer   $params:course->groupmodeforce
+     * @subparam integer   $params:course->defaultgroupingid
+     * @subparam string    $params:course->lang
+     * @subparam string    $params:course->theme
+     * @subparam string    $params:course->cost
+     * @subparam string    $params:course->currency
+     * @subparam integer   $params:course->timecreated
+     * @subparam integer   $params:course->timemodified
+     * @subparam integer   $params:course->requested
+     * @subparam integer   $params:course->restrictmodules
+     * @subparam integer   $params:course->enrolstartdate
+     * @subparam integer   $params:course->enrolenddate
+     * @subparam string    $params:course->enrol
+     * @subparam integer   $params:course->enablecompletion
      * @return array $return ids of new courses
      * @subreturn integer $return:id course id
      */
@@ -107,10 +207,6 @@ final class course_external {
             foreach ($params as $courseparams) {
 
                 $course = new stdClass();
-                if (array_key_exists('category', $courseparams)) {
-                    $course->category =  clean_param($courseparams['category'], PARAM_INT);
-                }
-
                 if (array_key_exists('idnumber', $courseparams)) {
                     $course->idnumber =  clean_param($courseparams['idnumber'], PARAM_ALPHANUMEXT);
                 }
@@ -119,24 +215,162 @@ final class course_external {
                     $course->shortname =  clean_param($courseparams['shortname'], PARAM_ALPHANUMEXT);
                 }
 
-                if (array_key_exists('format', $courseparams)) {
-                    $course->format =  clean_param($courseparams['format'], PARAM_ALPHANUMEXT);
+                if (array_key_exists('category', $courseparams)) {
+                    $course->category =  clean_param($courseparams['category'], PARAM_INT);
                 }
 
                 if (array_key_exists('fullname', $courseparams)) {
-                    $course->fullname =  clean_param($courseparams['fullname'], PARAM_ALPHANUMEXT);
+                    $course->fullname =  clean_param($courseparams['fullname'], PARAM_TEXT);
                 }
 
                 if (array_key_exists('summary', $courseparams)) {
-                    $course->summary =  clean_param($courseparams['summary'], PARAM_ALPHANUMEXT);
+                    $course->summary =  clean_param($courseparams['summary'], PARAM_TEXT);
                 }
 
-                if (array_key_exists('numsections', $courseparams)) {
-                    $course->numsections =  clean_param($courseparams['numsections'], PARAM_ALPHANUMEXT);
+                if (array_key_exists('format', $courseparams)) {
+                    $course->format =  clean_param($courseparams['format'], PARAM_ALPHANUMEXT);
                 }
 
                 if (array_key_exists('startdate', $courseparams)) {
-                    $course->startdate =  clean_param($courseparams['startdate'], PARAM_ALPHANUMEXT);
+                    $course->startdate =  clean_param($courseparams['startdate'], PARAM_INT);
+                }
+
+
+                if (array_key_exists('sortorder', $courseparams)) {
+                    $course->sortorder =  clean_param($courseparams['sortorder'], PARAM_INT);
+                }
+
+                if (array_key_exists('showgrades', $courseparams)) {
+                    $course->showgrades =  clean_param($courseparams['showgrades'], PARAM_INT);
+                }
+
+                if (array_key_exists('modinfo', $courseparams)) {
+                    $course->modinfo =  clean_param($courseparams['modinfo'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('newsitems', $courseparams)) {
+                    $course->newsitems =  clean_param($courseparams['newsitems'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('guest', $courseparams)) {
+                    $course->guest =  clean_param($courseparams['guest'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('metacourse', $courseparams)) {
+                    $course->metacourse =  clean_param($courseparams['metacourse'], PARAM_INT);
+                }
+
+                if (array_key_exists('password', $courseparams)) {
+                    $course->password =  clean_param($courseparams['password'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('enrolperiod', $courseparams)) {
+                    $course->enrolperiod =  clean_param($courseparams['enrolperiod'], PARAM_INT);
+                }
+
+                if (array_key_exists('defaultrole', $courseparams)) {
+                    $course->defaultrole =  clean_param($courseparams['defaultrole'], PARAM_INT);
+                }
+
+                if (array_key_exists('enrollable', $courseparams)) {
+                    $course->enrollable =  clean_param($courseparams['enrollable'], PARAM_INT);
+                }
+
+                if (array_key_exists('numsections', $courseparams)) {
+                    $course->numsections =  clean_param($courseparams['numsections'], PARAM_INT);
+                }
+
+                if (array_key_exists('expirynotify', $courseparams)) {
+                    $course->expirynotify =  clean_param($courseparams['expirynotify'], PARAM_INT);
+                }
+
+                if (array_key_exists('notifystudents', $courseparams)) {
+                    $course->notifystudents =  clean_param($courseparams['notifystudents'], PARAM_INT);
+                }
+
+                if (array_key_exists('expirythreshold', $courseparams)) {
+                    $course->expirythreshold =  clean_param($courseparams['expirythreshold'], PARAM_INT);
+                }
+
+                if (array_key_exists('marker', $courseparams)) {
+                    $course->marker =  clean_param($courseparams['marker'], PARAM_INT);
+                }
+
+                if (array_key_exists('maxbytes', $courseparams)) {
+                    $course->maxbytes =  clean_param($courseparams['maxbytes'], PARAM_INT);
+                }
+
+                if (array_key_exists('showreports', $courseparams)) {
+                    $course->showreports =  clean_param($courseparams['showreports'], PARAM_INT);
+                }
+
+                if (array_key_exists('visible', $courseparams)) {
+                    $course->visible =  clean_param($courseparams['visible'], PARAM_INT);
+                }
+
+                if (array_key_exists('hiddensections', $courseparams)) {
+                    $course->hiddensections =  clean_param($courseparams['hiddensections'], PARAM_INT);
+                }
+
+
+                if (array_key_exists('groupmode', $courseparams)) {
+                    $course->groupmode =  clean_param($courseparams['groupmode'], PARAM_INT);
+                }
+
+                if (array_key_exists('groupmodeforce', $courseparams)) {
+                    $course->groupmodeforce =  clean_param($courseparams['groupmodeforce'], PARAM_INT);
+                }
+
+                if (array_key_exists('defaultgroupingid', $courseparams)) {
+                    $course->defaultgroupingid =  clean_param($courseparams['defaultgroupingid'], PARAM_INT);
+                }
+
+                if (array_key_exists('lang', $courseparams)) {
+                    $course->lang =  clean_param($courseparams['lang'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('theme', $courseparams)) {
+                    $course->theme =  clean_param($courseparams['theme'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('cost', $courseparams)) {
+                    $course->cost =  clean_param($courseparams['cost'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('currency', $courseparams)) {
+                    $course->currency =  clean_param($courseparams['currency'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('timecreated', $courseparams)) {
+                    $course->timecreated =  clean_param($courseparams['timecreated'], PARAM_INT);
+                }
+
+                if (array_key_exists('timemodified', $courseparams)) {
+                    $course->timemodified =  clean_param($courseparams['timemodified'], PARAM_INT);
+                }
+
+                if (array_key_exists('requested', $courseparams)) {
+                    $course->requested =  clean_param($courseparams['requested'], PARAM_INT);
+                }
+
+                if (array_key_exists('restrictmodules', $courseparams)) {
+                    $course->restrictmodules =  clean_param($courseparams['restrictmodules'], PARAM_INT);
+                }
+
+                if (array_key_exists('enrolstartdate', $courseparams)) {
+                    $course->enrolstartdate =  clean_param($courseparams['enrolstartdate'], PARAM_INT);
+                }
+
+                if (array_key_exists('enrolenddate', $courseparams)) {
+                    $course->enrolenddate =  clean_param($courseparams['enrolenddate'], PARAM_INT);
+                }
+
+                if (array_key_exists('enrol', $courseparams)) {
+                    $course->enrol =  clean_param($courseparams['enrol'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('enablecompletion', $courseparams)) {
+                    $course->enablecompletion =  clean_param($courseparams['enablecompletion'], PARAM_INT);
                 }
 
                 $courses[] = create_course($course);
@@ -198,14 +432,48 @@ final class course_external {
      * Update some courses information
      * @global object $DB
      * @param array|struct $params - need to be define as struct for XMLRPC
-     * @subparam integer $params:course->category
-     * @subparam string $params:course->summary
-     * @subparam string $params:course->format
-     * @subparam string $params:course->numsections
-     * @subparam string $params:course->startdate
-     * @subparam string $params:course->fullname
-     * @subparam string $params:course->shortname
-     * @subparam string $params:course->idnumber
+     * @subparam integer   $params:course->id
+     * @subparam string    $params:course->idnumber
+     * @subparam string    $params:course->shortname
+     * @subparam integer   $params:course->category
+     * @subparam string    $params:course->fullname
+     * @subparam string    $params:course->summary
+     * @subparam string    $params:course->format
+     * @subparam integer   $params:course->startdate
+     * @subparam integer   $params:course->sortorder
+     * @subparam integer   $params:course->showgrades
+     * @subparam string    $params:course->modinfo
+     * @subparam string    $params:course->newsitems
+     * @subparam string    $params:course->guest
+     * @subparam integer   $params:course->metacourse
+     * @subparam string    $params:course->password
+     * @subparam integer   $params:course->enrolperiod
+     * @subparam integer   $params:course->defaultrole
+     * @subparam integer   $params:course->enrollable
+     * @subparam integer   $params:course->numsections
+     * @subparam integer   $params:course->expirynotify
+     * @subparam integer   $params:course->notifystudents
+     * @subparam integer   $params:course->expirythreshold
+     * @subparam integer   $params:course->marker
+     * @subparam integer   $params:course->maxbytes
+     * @subparam integer   $params:course->showreports
+     * @subparam integer   $params:course->visible
+     * @subparam integer   $params:course->hiddensections
+     * @subparam integer   $params:course->groupmode
+     * @subparam integer   $params:course->groupmodeforce
+     * @subparam integer   $params:course->defaultgroupingid
+     * @subparam string    $params:course->lang
+     * @subparam string    $params:course->theme
+     * @subparam string    $params:course->cost
+     * @subparam string    $params:course->currency
+     * @subparam integer   $params:course->timecreated
+     * @subparam integer   $params:course->timemodified
+     * @subparam integer   $params:course->requested
+     * @subparam integer   $params:course->restrictmodules
+     * @subparam integer   $params:course->enrolstartdate
+     * @subparam integer   $params:course->enrolenddate
+     * @subparam string    $params:course->enrol
+     * @subparam integer   $params:course->enablecompletion
      * @return boolean result true if success
      */
     static function update_courses($params) {
@@ -217,20 +485,17 @@ final class course_external {
             foreach ($params as $courseparams) {
 
                 $course = new stdClass();
-                if (array_key_exists('category', $courseparams)) {
-                    $course->category =  clean_param($courseparams['category'], PARAM_INT);
-                }
 
                 if (array_key_exists('idnumber', $courseparams)) {
-                    $course->idnumber =  clean_param($courseparams['idnumber'], PARAM_ALPHANUMEXT);
+                    $course->idnumber =  clean_param($courseparams['idnumber'], PARAM_ALPHANUM);
                 }
 
                 if (array_key_exists('shortname', $courseparams)) {
                     $course->shortname =  clean_param($courseparams['shortname'], PARAM_ALPHANUMEXT);
                 }
 
-                if (array_key_exists('format', $courseparams)) {
-                    $course->format =  clean_param($courseparams['format'], PARAM_ALPHANUMEXT);
+                if (array_key_exists('category', $courseparams)) {
+                    $course->category =  clean_param($courseparams['category'], PARAM_INT);
                 }
 
                 if (array_key_exists('fullname', $courseparams)) {
@@ -241,12 +506,149 @@ final class course_external {
                     $course->summary =  clean_param($courseparams['summary'], PARAM_TEXT);
                 }
 
-                if (array_key_exists('numsections', $courseparams)) {
-                    $course->numsections =  clean_param($courseparams['numsections'], PARAM_ALPHANUMEXT);
+                if (array_key_exists('format', $courseparams)) {
+                    $course->format =  clean_param($courseparams['format'], PARAM_ALPHANUMEXT);
                 }
 
                 if (array_key_exists('startdate', $courseparams)) {
-                    $course->startdate =  clean_param($courseparams['startdate'], PARAM_ALPHANUMEXT);
+                    $course->startdate =  clean_param($courseparams['startdate'], PARAM_INT);
+                }
+
+
+                if (array_key_exists('sortorder', $courseparams)) {
+                    $course->sortorder =  clean_param($courseparams['sortorder'], PARAM_INT);
+                }
+
+                if (array_key_exists('showgrades', $courseparams)) {
+                    $course->showgrades =  clean_param($courseparams['showgrades'], PARAM_INT);
+                }
+
+                if (array_key_exists('modinfo', $courseparams)) {
+                    $course->modinfo =  clean_param($courseparams['modinfo'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('newsitems', $courseparams)) {
+                    $course->newsitems =  clean_param($courseparams['newsitems'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('guest', $courseparams)) {
+                    $course->guest =  clean_param($courseparams['guest'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('metacourse', $courseparams)) {
+                    $course->metacourse =  clean_param($courseparams['metacourse'], PARAM_INT);
+                }
+
+                if (array_key_exists('password', $courseparams)) {
+                    $course->password =  clean_param($courseparams['password'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('enrolperiod', $courseparams)) {
+                    $course->enrolperiod =  clean_param($courseparams['enrolperiod'], PARAM_INT);
+                }
+
+                if (array_key_exists('defaultrole', $courseparams)) {
+                    $course->defaultrole =  clean_param($courseparams['defaultrole'], PARAM_INT);
+                }
+
+                if (array_key_exists('enrollable', $courseparams)) {
+                    $course->enrollable =  clean_param($courseparams['enrollable'], PARAM_INT);
+                }
+
+                if (array_key_exists('numsections', $courseparams)) {
+                    $course->numsections =  clean_param($courseparams['numsections'], PARAM_INT);
+                }
+
+                if (array_key_exists('expirynotify', $courseparams)) {
+                    $course->expirynotify =  clean_param($courseparams['expirynotify'], PARAM_INT);
+                }
+
+                if (array_key_exists('notifystudents', $courseparams)) {
+                    $course->notifystudents =  clean_param($courseparams['notifystudents'], PARAM_INT);
+                }
+
+                if (array_key_exists('expirythreshold', $courseparams)) {
+                    $course->expirythreshold =  clean_param($courseparams['expirythreshold'], PARAM_INT);
+                }
+
+                if (array_key_exists('marker', $courseparams)) {
+                    $course->marker =  clean_param($courseparams['marker'], PARAM_INT);
+                }
+
+                if (array_key_exists('maxbytes', $courseparams)) {
+                    $course->maxbytes =  clean_param($courseparams['maxbytes'], PARAM_INT);
+                }
+
+                if (array_key_exists('showreports', $courseparams)) {
+                    $course->showreports =  clean_param($courseparams['showreports'], PARAM_INT);
+                }
+
+                if (array_key_exists('visible', $courseparams)) {
+                    $course->visible =  clean_param($courseparams['visible'], PARAM_INT);
+                }
+
+                if (array_key_exists('hiddensections', $courseparams)) {
+                    $course->hiddensections =  clean_param($courseparams['hiddensections'], PARAM_INT);
+                }
+
+                if (array_key_exists('groupmode', $courseparams)) {
+                    $course->groupmode =  clean_param($courseparams['groupmode'], PARAM_INT);
+                }
+
+                if (array_key_exists('groupmodeforce', $courseparams)) {
+                    $course->groupmodeforce =  clean_param($courseparams['groupmodeforce'], PARAM_INT);
+                }
+
+                if (array_key_exists('defaultgroupingid', $courseparams)) {
+                    $course->defaultgroupingid =  clean_param($courseparams['defaultgroupingid'], PARAM_INT);
+                }
+
+                if (array_key_exists('lang', $courseparams)) {
+                    $course->lang =  clean_param($courseparams['lang'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('theme', $courseparams)) {
+                    $course->theme =  clean_param($courseparams['theme'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('cost', $courseparams)) {
+                    $course->cost =  clean_param($courseparams['cost'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('currency', $courseparams)) {
+                    $course->currency =  clean_param($courseparams['currency'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('timecreated', $courseparams)) {
+                    $course->timecreated =  clean_param($courseparams['timecreated'], PARAM_INT);
+                }
+
+                if (array_key_exists('timemodified', $courseparams)) {
+                    $course->timemodified =  clean_param($courseparams['timemodified'], PARAM_INT);
+                }
+
+                if (array_key_exists('requested', $courseparams)) {
+                    $course->requested =  clean_param($courseparams['requested'], PARAM_INT);
+                }
+
+                if (array_key_exists('restrictmodules', $courseparams)) {
+                    $course->restrictmodules =  clean_param($courseparams['restrictmodules'], PARAM_INT);
+                }
+
+                if (array_key_exists('enrolstartdate', $courseparams)) {
+                    $course->enrolstartdate =  clean_param($courseparams['enrolstartdate'], PARAM_INT);
+                }
+
+                if (array_key_exists('enrolenddate', $courseparams)) {
+                    $course->enrolenddate =  clean_param($courseparams['enrolenddate'], PARAM_INT);
+                }
+
+                if (array_key_exists('enrol', $courseparams)) {
+                    $course->enrol =  clean_param($courseparams['enrol'], PARAM_ALPHANUMEXT);
+                }
+
+                if (array_key_exists('enablecompletion', $courseparams)) {
+                    $course->enablecompletion =  clean_param($courseparams['enablecompletion'], PARAM_INT);
                 }
 
                 if (array_key_exists('id', $courseparams)) {
@@ -266,6 +668,81 @@ final class course_external {
 
     }
 
+    /**
+     * Get course modules
+     * @global object $DB
+     * @param array|struct $params - need to be define as struct for XMLRPC
+     * @subparam string $params:course->id
+     * @return array $return course modules
+     * @subreturn string $return:id module id
+     * @subreturn string $return:name module name
+     * @subreturn string $return:type module type
+     */
+    static function get_course_modules($params, $type=null) {
+        global $DB;
+        if (has_capability('moodle/course:view', get_context_instance(CONTEXT_SYSTEM))) {
+            $modules = array();
+            foreach ($params as $courseparams) {
+                if (array_key_exists('id', $courseparams)) {
+                    $id =  clean_param($courseparams['id'], PARAM_INT);
+                }
+
+                $activities = get_array_of_activities($id);
+               
+                foreach ($activities as $activity) {
+                    if (empty($type)) {
+                        $module = array('id' => $activity->id, 'courseid' => $id, 'name' => $activity->name, 'type' => $activity->mod);
+                        $modules[] = $module;
+                    }
+                    else if ($type=="activities") {
+                        if ($activity->mod != "resource" && $activity->mod != "label") {
+                            $module = array('id' => $activity->id, 'courseid' => $id, 'name' => $activity->name, 'type' => $activity->mod);
+                            $modules[] = $module;
+                        }
+                    }
+                    else if ($type=="resources") {
+                        if ($activity->mod == "resource" || $activity->mod == "label") {
+                            $module = array('id' => $activity->id, 'courseid' => $id, 'resource' => $activity->name, 'type' => $activity->mod);
+                            $modules[] = $module;
+                        }
+                    }
+                }
+            }
+            return $modules;
+        }
+        else {
+            throw new moodle_exception('wscouldnotgetcoursemodulesnopermission');
+        }
+    }
+
+     /**
+     * Get course activities
+     * @global object $DB
+     * @param array|struct $params - need to be define as struct for XMLRPC
+     * @subparam string $params:course->id
+     * @return array $return course activities
+     * @subreturn string $return:id activity id
+     * @subreturn string $return:name activity name
+     * @subreturn string $return:type activity type
+     */
+    static function get_course_activities($params) {
+        course_external::get_course_modules($params, "activities");
+    }
+
+    /**
+     * Get course resources
+     * @global object $DB
+     * @param array|struct $params - need to be define as struct for XMLRPC
+     * @subparam string $params:course->id
+     * @return array $return course resources
+     * @subreturn integer $return:id resource id
+     * @subreturn string $return:name resource name
+     * @subreturn string $return:type resource type
+     */
+    static function get_course_resources($params) {
+        course_external::get_course_modules($params, "resources");
+    }
+
 }
 
 ?>
index 0ac2e622c6686573c26af828a47bdcb368b105ab..cb1d073114f1db25c894b2726703ff19c29191f5 100644 (file)
@@ -1007,9 +1007,16 @@ function get_array_of_activities($courseid) {
         require_once($CFG->libdir.'/conditionlib.php');
     }
 
+    $course = $DB->get_record('course', array('id'=>$courseid));
+
+    if (empty($course)) {
+        throw new moodle_exception('courseidnotfound');
+    }
+
     $mod = array();
 
-    if (!$rawmods = get_course_mods($courseid)) {
+    $rawmods = get_course_mods($courseid);
+    if (empty($rawmods)) {
         return $mod; // always return array
     }
 
index e9fd1d176312c24b5c791b7e516e19c00940f63b..9d6adb8e4e8cf9b2a0843a22ab38e66c1a3cfc11 100644 (file)
@@ -245,7 +245,7 @@ class course_external_test extends UnitTestCase {
         $course['startdate'] = mktime();
         $course['fullname'] = "Test course for Course 2 update";
         $course['shortname'] = "TestCourseForCourse2update";
-        $course['idnumber'] = 8005007;
+        $course['idnumber'] = 8005008;
         $params[] = $course;
         $result = course_external::update_courses($params);
         $this->assertEqual($result, true);
@@ -277,13 +277,56 @@ class course_external_test extends UnitTestCase {
     }
 
     function test_get_course_modules() {
-        //create two different modules
-//        $mod = new stdClass();
-//        $mod->course = $this->course->id;
-//        $mod->module = 6;
-//        $mod->instance = 1;
-//        $mod->section = 1;
-       
+        global $DB;
+
+
+        //add two chat activities to the course
+        $chat = new stdClass();
+        $chat->course = $this->course->id;
+        $chat->name = "chat to delete";
+        $chat->intro = "introduction";
+        $chat->keepdays = 0;
+        $chat->studentlogs = 0;
+        $chat->chattime = 0;
+        $chat->schedule = 0;
+        $chat->timemodified = 0 ;
+        $chatid = chat_add_instance($chat);
+        $chat->name = "chat to delete 2";
+        $chat->intro = "introduction 2";
+        $chatid2 = chat_add_instance($chat);
+
+        $coursemoduleid = $DB->insert_record('course_modules',array('course' => $this->course->id,
+                                                  'module' => 2,
+                                                  'instance' => $chatid,
+                                                  'section' =>0));
+        $coursemoduleid2 = $DB->insert_record('course_modules',array('course' => $this->course->id,
+                                                  'module' => 2,
+                                                  'instance' => $chatid2,
+                                                  'section' =>0));
+        $section = $DB->get_record('course_sections',array('course' => $this->course->id));
+        $section->sequence = $coursemoduleid.",".$coursemoduleid2;
+        $DB->update_record('course_sections', $section);
+
+
+        $params = array();
+        $course = array();
+        $course["id"] = $this->course->id;
+        $params[] = $course;
+        $activities = course_external::get_course_modules($params);
+        
+        $activities = course_external::get_course_activities($params);
+        varlog($activities);
+        chat_delete_instance($chatid);
+        chat_delete_instance($chatid2);
+        $DB->delete_records('course_modules',array('course' => $this->course->id,
+                                                  'module' => 2,
+                                                  'instance' => $chatid,
+                                                  'section' =>0));
+        $DB->delete_records('course_modules',array('course' => $this->course->id,
+                                                  'module' => 2,
+                                                  'instance' => $chatid2,
+                                                  'section' =>0));
+
     }
 */
 }