Browse Source

Partial using $params instead variable per variable when creating a new course see #4068

Julio Montoya 13 years ago
parent
commit
bcd4619f28

+ 14 - 26
main/admin/course_add.php

@@ -43,7 +43,7 @@ if ($_configuration['multiple_access_urls']) {
 
 $res = Database::query($sql);
 $teachers = array();
-$teachers[0] = '-- '.get_lang('NoManager').' --';
+//$teachers[0] = '-- '.get_lang('NoManager').' --';
 while($obj = Database::fetch_object($res)) {
     $teachers[$obj->user_id] = api_get_person_name($obj->firstname, $obj->lastname);
 }
@@ -68,10 +68,10 @@ $form->applyFilter('visual_code', 'api_strtoupper');
 $form->applyFilter('visual_code', 'html_filter');
 $form->addRule('visual_code', get_lang('Max'), 'maxlength', $maxlength);
 
-$form->addElement('select', 'tutor_id', get_lang('CourseTitular'), $teachers, array('style' => 'width:350px', 'class'=>'chzn-select', 'id'=>'tutor_id'));
-$form->applyFilter('tutor_id', 'html_filter');
+//$form->addElement('select', 'tutor_id', get_lang('CourseTitular'), $teachers, array('style' => 'width:350px', 'class'=>'chzn-select', 'id'=>'tutor_id'));
+//$form->applyFilter('tutor_id', 'html_filter');
 
-$form->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, ' id="course_teachers" style="width:350px" multiple="multiple" size="5"');
+$form->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, ' id="course_teachers" class="chzn-select"  style="width:350px" multiple="multiple" size="5"');
 $form->applyFilter('course_teachers', 'html_filter');
 
 $categories_select = $form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories, array('style' => 'width:350px', 'class'=>'chzn-select', 'id'=>'category_code'));
@@ -125,37 +125,25 @@ $values['visibility'] = COURSE_VISIBILITY_OPEN_PLATFORM;
 $values['subscribe'] = 1;
 $values['unsubscribe'] = 0;
 reset($teachers);
-$values['course_teachers'] = key($teachers);
+//$values['course_teachers'] = key($teachers);
 $form->setDefaults($values);
 
-// Validate the form.
+// Validate the form
 if ($form->validate()) {
     $course          = $form->exportValues();
     $code            = $course['visual_code'];
-    $tutor_name      = $teachers[$course['tutor_id']];
+    //$tutor_name      = $teachers[$course['tutor_id']];
     $teacher_id      = $course['tutor_id'];
     $course_teachers = $course['course_teachers'];
-    $test            = false;
-
-    // The course tutor has been selected in the teachers list so we must remove him to avoid double records in the database.
-    foreach ($course_teachers as $key => $value){
-        if ($value == $teacher_id) {
-            unset($course_teachers[$key]);
-            break;
-        }
-    }
     
-    $title              = $course['title'];
-    $category_code      = $course['category_code'];
-    $department_name    = $course['department_name'];
-    $department_url     = $course['department_url'];
-    $course_language    = $course['course_language'];
-    $exemplary_content  = empty($course['exemplary_content']) ? false : true;
-    $disk_quota         = $course['disk_quota'];    
+    $course['exemplary_content']    = empty($course['exemplary_content']) ? false : true;
+    $course['teachers']             = $course_teachers;
+    //$course['tutor_name']           = $tutor_name;
+    $course['user_id']              = $teacher_id;  
+    $course['wanted_code']          = $course['visual_code'];
     
-    $course_info = CourseManager::create_course($title, '', '', $exemplary_content,
-                                                $tutor_name, $category_code, $course_language, api_get_user_id(), 
-                                                $department_name, $department_url, $disk_quota, $course['subscribe'], $course['unsubscribe'], $course['visibility'], $course_teachers);
+    $course_info = CourseManager::create_course($course);
+
     header('Location: course_list.php');
     exit;
 }

+ 6 - 5
main/admin/course_edit.php

@@ -65,11 +65,11 @@ $teachers = array();
 
 $platform_teachers[0] = '-- '.get_lang('NoManager').' --';
 while ($obj = Database::fetch_object($res)) {
+    
 	if (!array_key_exists($obj->user_id,$course_teachers)) {
 		$teachers[$obj->user_id] = api_get_person_name($obj->firstname, $obj->lastname);
 	}
 
-
 	if ($course['tutor_name']==$course_teachers[$obj->user_id]) {
 		$course['tutor_name']=$obj->user_id;
 	}
@@ -98,15 +98,16 @@ $form->add_textfield('visual_code', array(get_lang('CourseCode'), get_lang('Only
 
 $form->applyFilter('visual_code','strtoupper');
 $form->applyFilter('visual_code','html_filter');
+
 //$form->add_textfield('tutor_name', get_lang('CourseTitular'));
-$form->addElement('select', 'tutor_name', get_lang('CourseTitular'), $platform_teachers, array('style'=>'width:350px','id'=>'tutor_name_id', 'class'=>'chzn-select'));
-$form->applyFilter('tutor_name','html_filter');
+//$form->addElement('select', 'tutor_name', get_lang('CourseTitular'), $platform_teachers, array('style'=>'width:350px','id'=>'tutor_name_id', 'class'=>'chzn-select'));
+//$form->applyFilter('tutor_name','html_filter');
 
 //$form->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, 'multiple=multiple size="4" style="width: 150px;"');
 
 $group=array();
-$group[] = FormValidator::createElement('select', 'platform_teachers', '', $teachers,        'id="platform_teachers" multiple=multiple size="4" style="width:280px;"');
-$group[] = FormValidator::createElement('select', 'course_teachers', '',   $course_teachers, 'id="course_teachers" multiple=multiple size="4" style="width:280px;"');
+$group[] = FormValidator::createElement('select', 'platform_teachers', '', $teachers,        ' id="platform_teachers" multiple=multiple size="4" style="width:300px;"');
+$group[] = FormValidator::createElement('select', 'course_teachers', '',   $course_teachers, ' id="course_teachers" multiple=multiple size="4" style="width:300px;"');
 
 $element_template = <<<EOT
 	<div class="row">

+ 11 - 2
main/admin/course_import.php

@@ -120,8 +120,17 @@ function save_data($courses) {
             $uidCreator = 1;
         }
         
-        $course_info = CourseManager::create_course($course['Title'], $course['Code'], '', false, 
-                                                    $titular, $course['CourseCategory'],  $course_language, $uidCreator);
+        $params = array();
+        $params['title']            = $course['Title'];
+        $params['wanted_code']      = $course['Code'];         
+        $params['tutor_name']       = $titular;
+        $params['course_category']  = $course['CourseCategory'];
+        $params['course_category']  = $course['CourseCategory'];
+        $params['course_language']  = $course_language;
+        $params['user_id']          = $uidCreator;
+         
+         
+        $course_info = CourseManager::create_course($params);
         if (!empty($course_info)) {
             $msg .= '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/">'.$course_info['title'].'</a> '.get_lang('Created').'<br />';
         }

+ 12 - 3
main/create_course/add_course.php

@@ -230,9 +230,18 @@ if ($form->validate()) {
     }
 
     if ($course_code_ok) {
-        if (!$course_validation_feature) {
-            $course_info = CourseManager::create_course($title, $wanted_code, '', $exemplary_content, 
-                                                        $tutor_name, $category_code, $course_language);
+        if (!$course_validation_feature) {            
+              
+            $params = array();
+            $params['title']                = $title;
+            $params['exemplary_content']    = $exemplary_content;
+            $params['wanted_code']          = $wanted_code;
+            $params['tutor_name']           = $tutor_name;
+            $params['category_code']        = $category_code;
+            $params['course_language']      = $course_language;
+            
+            $course_info = CourseManager::create_course($params); 
+     
             if (!empty($course_info)) {
                 
                 $directory  = $course_info['directory'];          

+ 42 - 35
main/inc/lib/add_course.lib.inc.php

@@ -2600,11 +2600,31 @@ function string2binary($variable) {
  * @param integer                       Expiration date in unix time representation
  * @param array                         Optional array of teachers' user ID
  * @return int      0
+ * @todo use an array called $params instead of lots of params
  */
-function register_course($title, $course_sys_code, $course_screen_code, $course_repository, 
-                        $tutor_name, $category_code, $course_language, $user_id, $department_name, $department_url, $disk_quota, $subscribe, $unsubscribe, $visibility, $expiration_date, $teachers) {
-                            
+function register_course($params) {
     global $defaultVisibilityForANewCourse, $error_msg, $firstExpirationDelay;
+            
+    $title              = $params['title'];
+    $code               = $params['code'];
+    $visual_code        = $params['visual_code'];
+    $directory          = $params['directory'];
+    $tutor_name         = $params['tutor_name'];
+    $description        = $params['description'];
+
+    $category_code      = $params['category_code'];
+    $course_language    = isset($params['course_language']) && !empty($params['course_language']) ? $params['course_language'] : api_get_setting('platformLanguage');    
+    $user_id            = empty($params['user_id']) ? api_get_user_id() : intval($params['user_id']);        
+    $department_name    = $params['department_name'];
+    $department_url     = $params['department_url'];
+    $disk_quota         = $params['disk_quota'];
+    $subscribe          = isset($params['subscribe']) ? intval($params['subscribe']) : 0;
+    $unsubscribe        = isset($params['unsubscribe']) ? intval($params['unsubscribe']) : 0;
+    $visibility         = $params['visibility'];
+    $expiration_date    = $params['expiration_date'];
+    $teachers           = $params['teachers'];
+    $status             = $params['status'];
+    
 
     $TABLECOURSE		 	= Database :: get_main_table(TABLE_MAIN_COURSE);
     $TABLECOURSUSER 		= Database :: get_main_table(TABLE_MAIN_COURSE_USER);    
@@ -2612,11 +2632,11 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
     $ok_to_register_course = true;
 
     // Check whether all the needed parameters are present.
-    if (empty($course_sys_code)) {
+    if (empty($code)) {
         $error_msg[] = 'courseSysCode is missing';
         $ok_to_register_course = false;
     }
-    if (empty($course_screen_code)) {
+    if (empty($visual_code)) {
         $error_msg[] = 'courseScreenCode is missing';
         $ok_to_register_course = false;
     }
@@ -2626,7 +2646,7 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
         $error_msg[] = 'courseDbName is missing';
         //$ok_to_register_course = false;
     }*/
-    if (empty($course_repository)) {
+    if (empty($directory)) {
         $error_msg[] = 'courseRepository is missing';
         $ok_to_register_course = false;
     }
@@ -2636,9 +2656,6 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
         $ok_to_register_course = false;
     }
     
-    if (empty($course_language)) {
-        $course_language = api_get_setting('platformLanguage'); 
-    }
 
     if (empty($expiration_date)) {
         $expiration_date = api_get_utc_datetime(time() + $firstExpirationDelay);
@@ -2661,34 +2678,21 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
        
     $time = api_get_utc_datetime();
     
-    if ($subscribe != '') {
-        $subscribe = 1;
-    }
-    
-    if ($unsubscribe != '') {
-        $unsubscribe = 0;
-    }
-    
     if (stripos($department_url, 'http://') === false && stripos($department_url, 'https://') === false) {
         $department_url = 'http://'.$department_url;
     }
     //just in case
-    if ($department_url = 'http://') {
+    if ($department_url == 'http://') {
         $department_url = '';
-    }
-    
-    if (empty($user_id)) {
-        $user_id = api_get_user_id();
-    }
-    
+    }    
     $course_id = 0;   
    
     if ($ok_to_register_course) {
     
        // Here we must add 2 fields.
-       $sql = "INSERT INTO ".$TABLECOURSE . " SET
-                    code            = '".Database :: escape_string($course_sys_code) . "',
-                    directory       = '".Database :: escape_string($course_repository) . "',
+      $sql = "INSERT INTO ".$TABLECOURSE . " SET
+                    code            = '".Database :: escape_string($code) . "',
+                    directory       = '".Database :: escape_string($directory) . "',
                     course_language = '".Database :: escape_string($course_language) . "',
                     title           = '".Database :: escape_string($title) . "',
                     description     = '".lang2db(get_lang('CourseDescription')) . "',
@@ -2705,7 +2709,7 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
                     department_url  = '".Database :: escape_string($department_url) . "',
                     subscribe       = '".intval($subscribe) . "',                     
                     unsubscribe     = '".intval($unsubscribe) . "',                    
-                    visual_code     = '".Database :: escape_string($course_screen_code) . "'";
+                    visual_code     = '".Database :: escape_string($visual_code) . "'";
         Database::query($sql);
         
 		$course_id  = Database::get_last_insert_id();
@@ -2714,10 +2718,10 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
 		
             $sort = api_max_sort_value('0', api_get_user_id());
             
-            $i_course_sort = CourseManager :: userCourseSort($user_id, $course_sys_code);
+            $i_course_sort = CourseManager :: userCourseSort($user_id, $code);
     
             $sql = "INSERT INTO ".$TABLECOURSUSER . " SET
-                        course_code     = '".Database :: escape_string($course_sys_code). "',
+                        course_code     = '".Database :: escape_string($code). "',
                         user_id         = '".intval($user_id) . "',
                         status          = '1',
                         role            = '".lang2db(get_lang('Professor')) . "',
@@ -2726,10 +2730,13 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
                         user_course_cat = '0'";
             Database::query($sql);
     
-            if (count($teachers) > 0) {
+            if (!empty($teachers)) {
                 foreach ($teachers as $key) {
+                    if (empty($key)) {
+                        continue;
+                    }
                     $sql = "INSERT INTO ".$TABLECOURSUSER . " SET
-                        course_code     = '".Database::escape_string($course_sys_code) . "',
+                        course_code     = '".Database::escape_string($code) . "',
                         user_id         = '".Database::escape_string($key) . "',
                         status          = '1',
                         role            = '',
@@ -2748,14 +2755,14 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
                 if (api_get_current_access_url_id() != -1) {
                     $url_id = api_get_current_access_url_id();
                 }
-                UrlManager::add_course_to_url($course_sys_code, $url_id);
+                UrlManager::add_course_to_url($code, $url_id);
             } else {
-                UrlManager::add_course_to_url($course_sys_code, 1);
+                UrlManager::add_course_to_url($code, 1);
             }
     
             // Add event to the system log.        
             $user_id = api_get_user_id();
-            event_system(LOG_COURSE_CREATE, LOG_COURSE_CODE, $course_sys_code, api_get_utc_datetime(), $user_id, $course_sys_code);
+            event_system(LOG_COURSE_CREATE, LOG_COURSE_CODE, $code, api_get_utc_datetime(), $user_id, $code);
     
             $send_mail_to_admin = api_get_setting('send_email_to_admin_when_create_course');
     

+ 25 - 27
main/inc/lib/course.lib.php

@@ -116,55 +116,53 @@ $coursesRepositories = $_configuration['root_sys'];
  */
 class CourseManager {
     
+    var $columns = array('code', 'directory', 'db_name', '');
+    
+    
     /**
      * Creates a course
      * @param   string  course title
      * @param   bool    add example content or not
      * @param   mixed   false if the course was not created, array with the course info
      */
-    function create_course($title, $wanted_code = '', $description = '', $fill_with_exemplary_content = false, 
-                           $tutor_name = '', $category_code = '', $course_language = '', $user_id = '', 
-                           $department_name = '', $department_url = '', $disk_quota = '', 
-                           $subscribe = '', $unsubscribe = '', $visibility = '', $expiration_date = '', $teacher_list = array()
-                           ) {        
+    function create_course($params) {           
         global $_configuration;
-                
-        if (empty($title)) {
+        
+        if (empty($params['title'])) {
             return false;
         }        
         
-        if (empty($wanted_code)) {
-            $wanted_code = $title;    
+        if (empty($params['wanted_code'])) {
+            $params['wanted_code'] = $params['title'];    
             // Check whether the requested course code has already been occupied.       
             $dbnamelength = strlen($_configuration['db_prefix']);
             // Ensure the database prefix + database name do not get over 40 characters.
             $maxlength = 40 - $dbnamelength;
-            $wanted_code = generate_course_code(api_substr($title, 0, $maxlength));            
+            $params['wanted_code'] = generate_course_code(api_substr($params['title'], 0, $maxlength));            
         }
 
         // Create the course immediately
-        $keys = define_course_keys($wanted_code);
+        $keys = define_course_keys($params['wanted_code']);
+        
+        $params['exemplary_content'] = isset($params['exemplary_content']) ? $params['exemplary_content'] : false;
         
         if (count($keys)) {
-            $current_course_code        = $keys['currentCourseCode'];
-            $current_course_id          = $keys['currentCourseId'];                
-            $current_course_repository  = $keys['currentCourseRepository'];
-                            
-            $course_info   = api_get_course_info($current_course_code);
+            
+            $params['code']             = $keys['currentCourseCode'];
+            $params['visual_code']      = $keys['currentCourseId'];                
+            $params['directory']        = $keys['currentCourseRepository'];
+       
+            $course_info   = api_get_course_info($params['code']);
             
             if (empty($course_info)) {
-                $course_id = register_course($title, $current_course_id, $current_course_code, $current_course_repository, 
-                                             $tutor_name, $category_code, $course_language, $user_id, $department_name, $department_url, $disk_quota, 
-                                             $subscribe, $unsubscribe, $visibility, $expiration_date, $teacher_list);
-                if (!empty($course_id)) {
-                    prepare_course_repository($current_course_repository, $current_course_id);
-                    $pictures_array = fill_course_repository($current_course_repository, $fill_with_exemplary_content);     
-                    fill_Db_course($course_id, $current_course_repository, $course_language, $pictures_array, $fill_with_exemplary_content);  
-                    $course_info = api_get_course_info_by_id($course_id);
+                $course_id      = register_course($params);                
+                $course_info    = api_get_course_info_by_id($course_id);
                 
-                    if (!empty($course_info)) {
-                        return $course_info;
-                    }
+                if (!empty($course_info)) {
+                    prepare_course_repository($course_info['directory'], $course_info['code']);
+                    $pictures_array = fill_course_repository($course_info['directory'], $params['exemplary_content']);     
+                    fill_Db_course($course_id, $course_info['directory'], $course_info['course_language'], $pictures_array, $params['exemplary_content']);
+                    return $course_info;                    
                 }
             }
         }

+ 49 - 60
main/inc/lib/course_request.lib.php

@@ -77,13 +77,13 @@ class CourseRequestManager {
         if (!is_array($user_info)) {
             return false;
         }
+        
         $tutor_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language);
 
         $request_date = api_get_utc_datetime();
         $status = COURSE_REQUEST_PENDING;
         $info = 0;
-
-        $keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']);
+        $keys = define_course_keys($wanted_code, '');
         if (!count($keys)) {
             return false;
         }
@@ -218,7 +218,7 @@ class CourseRequestManager {
             if (self::course_code_exists($wanted_code)) {
                 return false;
             }
-            $keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']);
+            $keys = define_course_keys($wanted_code, '');
             if (count($keys)) {
                 $visual_code = $keys['currentCourseCode'];
                 $code = $keys['currentCourseId'];
@@ -337,75 +337,64 @@ class CourseRequestManager {
         }
 
         // Make all the checks again before the new course creation.
-
-        $wanted_code = $course_request_info['code'];
         if (CourseManager::course_code_exists($wanted_code)) {
             return false;
         }
-
-        $title = $course_request_info['title'];
-        $category_code = $course_request_info['category_code'];
-        $course_language = $course_request_info['course_language'];
-        $exemplary_content = intval($course_request_info['exemplary_content']) > 0;
-
         $user_id = (int)$course_request_info['user_id'];
         if ($user_id <= 0) {
             return false;
         }
+        
         $user_info = api_get_user_info($user_id);
         if (!is_array($user_info)) {
             return false;
         }
-        $tutor_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language);
-
-        // Create the requested course.
-
-        $keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']);
-        if (!count($keys)) {
-            return false;
+        
+        // Create the requested course
+        $params = array();
+        
+        $params['title']                = $course_request_info['title'];
+        $params['category_code']        = $course_request_info['category_code'];
+        $params['course_language']      = $course_request_info['course_language'];
+        $params['exemplary_content']    = intval($course_request_info['exemplary_content']) > 0;
+        $params['wanted_code']          = $course_request_info['code'];
+        $params['user_id']              = $course_request_info['user_id'];
+        $params['tutor_name']           = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language);
+        
+        $course_info = CourseManager::create_course($params);
+        if (!empty($course_info)) {
+    
+            // Mark the request as accepted.
+            $sql = "UPDATE ".Database :: get_main_table(TABLE_MAIN_COURSE_REQUEST)." SET status = ".COURSE_REQUEST_ACCEPTED." WHERE id = ".$id;
+            Database::query($sql);
+    
+            // E-mail notification.
+    
+            // E-mail language: The platform language seems to be the best choice
+            $email_language = api_get_setting('platformLanguage');
+    
+            $email_subject = sprintf(get_lang('CourseRequestAcceptedEmailSubject', null, $email_language), '['.api_get_setting('siteName').']', $course_info['code']);
+    
+            $email_body = get_lang('Dear', null, $email_language).' ';
+            $email_body .= api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $email_language).",\n\n";
+            $email_body .= sprintf(get_lang('CourseRequestAcceptedEmailText', null, $email_language), $wanted_code, $course_info['code'], api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/')."\n";
+            $email_body .= "\n".get_lang('Formula', null, $email_language)."\n";
+            $email_body .= api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, null, $email_language)."\n";
+            $email_body .= get_lang('Manager', null, $email_language).' '.api_get_setting('siteName')."\n";
+            $email_body .= get_lang('Phone', null, $email_language).': '.api_get_setting('administratorTelephone')."\n";
+            $email_body .= get_lang('Email', null, $email_language).': '.api_get_setting('emailAdministrator', null, $email_language)."\n";
+            $email_body .= "\n".get_lang('CourseRequestLegalNote', null, $email_language)."\n";
+    
+            $sender_name = api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, PERSON_NAME_EMAIL_ADDRESS);
+            $sender_email = get_setting('emailAdministrator');
+            $recipient_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, PERSON_NAME_EMAIL_ADDRESS);
+            $recipient_email = $user_info['mail'];
+            $extra_headers = 'Bcc: '.$sender_email;
+    
+            @api_mail($recipient_name, $recipient_email, $email_subject, $email_body, $sender_name, $sender_email);
+            return $course_info['code'];
         }
-        $visual_code = $keys['currentCourseCode'];
-        $code = $keys['currentCourseId'];
-        $db_name = $keys['currentCourseDbName'];
-        $directory = $keys['currentCourseRepository'];
-        prepare_course_repository($directory, $code);
-        update_Db_course($db_name);
-        $pictures_array = fill_course_repository($directory, $exemplary_content);
-        fill_Db_course($db_name, $directory, $course_language, $pictures_array, $exemplary_content);
-        register_course($code, $visual_code, $directory, $db_name, $tutor_name, $category_code, $title, $course_language, $user_id, null);
-
-        // Mark the request as accepted.
-        $sql = "UPDATE ".Database :: get_main_table(TABLE_MAIN_COURSE_REQUEST)." SET status = ".COURSE_REQUEST_ACCEPTED." WHERE id = ".$id;
-        Database::query($sql);
-
-        // E-mail notification.
-
-        // E-mail language: The platform language seems to be the best choice.
-        //$email_language = $course_language;
-        //$email_language = api_get_interface_language();
-        $email_language = api_get_setting('platformLanguage');
-
-        $email_subject = sprintf(get_lang('CourseRequestAcceptedEmailSubject', null, $email_language), '['.api_get_setting('siteName').']', $wanted_code);
-
-        $email_body = get_lang('Dear', null, $email_language).' ';
-        $email_body .= api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $email_language).",\n\n";
-        $email_body .= sprintf(get_lang('CourseRequestAcceptedEmailText', null, $email_language), $wanted_code, $code, api_get_path(WEB_COURSE_PATH).$directory.'/')."\n";
-        $email_body .= "\n".get_lang('Formula', null, $email_language)."\n";
-        $email_body .= api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, null, $email_language)."\n";
-        $email_body .= get_lang('Manager', null, $email_language).' '.api_get_setting('siteName')."\n";
-        $email_body .= get_lang('Phone', null, $email_language).': '.api_get_setting('administratorTelephone')."\n";
-        $email_body .= get_lang('Email', null, $email_language).': '.api_get_setting('emailAdministrator', null, $email_language)."\n";
-        $email_body .= "\n".get_lang('CourseRequestLegalNote', null, $email_language)."\n";
-
-        $sender_name = api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, PERSON_NAME_EMAIL_ADDRESS);
-        $sender_email = get_setting('emailAdministrator');
-        $recipient_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, PERSON_NAME_EMAIL_ADDRESS);
-        $recipient_email = $user_info['mail'];
-        $extra_headers = 'Bcc: '.$sender_email;
-
-        @api_mail($recipient_name, $recipient_email, $email_subject, $email_body, $sender_name, $sender_email);
-
-        return $code;
+        return false;
     }
 
     /**

+ 42 - 53
main/webservices/registration.soap.php

@@ -1989,7 +1989,7 @@ $server->register('WSCreateCourse',			// method name
 // Define the method WSCreateCourse
 function WSCreateCourse($params) {
 
-    global $firstExpirationDelay, $_configuration;
+    global $_configuration;
 
     if(!WSHelperVerifyKey($params)) {
         return -1;
@@ -2006,15 +2006,16 @@ function WSCreateCourse($params) {
 
     foreach ($courses_params as $course_param) {
 
-        $title = $course_param['title'];
-        $category_code = $course_param['category_code'];
-        $wanted_code = $course_param['wanted_code'];
-        $tutor_name = $course_param['tutor_name'];
-        $course_language = 'english'; // TODO: A hard-coded value.
-        $original_course_id_name = $course_param['original_course_id_name'];
-        $original_course_id_value = $course_param['original_course_id_value'];
-        $orig_course_id_value[] = $course_param['original_course_id_value'];
-        $visibility = null;
+        $title                      = $course_param['title'];
+        $category_code              = $course_param['category_code'];
+        $wanted_code                = $course_param['wanted_code'];
+        $tutor_name                 = $course_param['tutor_name'];
+        $course_language            = 'english'; // TODO: A hard-coded value.
+        $original_course_id_name    = $course_param['original_course_id_name'];
+        $original_course_id_value   = $course_param['original_course_id_value'];
+        $orig_course_id_value[]     = $course_param['original_course_id_value'];        
+        $visibility                 = null;
+        
         if($course_param['visibility'] && $course_param['visibility'] >= 0 && $course_param['visibility'] <= 3) {
             $visibility = $course_param['visibility'];
         }
@@ -2058,10 +2059,6 @@ function WSCreateCourse($params) {
             $course_language = $course_param['course_language'];
         }
 
-        $dbnamelength = strlen($_configuration['db_prefix']);
-        //Ensure the database prefix + database name do not get over 40 characters
-        $maxlength = 40 - $dbnamelength;
-
         // Set default values
         if (isset($_user['language']) && $_user['language'] != '') {
             $values['course_language'] = $_user['language'];
@@ -2070,51 +2067,43 @@ function WSCreateCourse($params) {
         }
 
         $values['tutor_name'] = api_get_person_name($_user['firstName'], $_user['lastName'], null, null, $values['course_language']);
+            
+        $params = array();
+        $params['title']            = $title;
+        $params['wanted_code']      = $wanted_code;
+        $params['category_code']    = $category_code;
+        $params['tutor_name']       = $tutor_name;
+        $params['course_language']  = $course_language;
+        $params['user_id']          = api_get_user_id();
+        $params['visibility']       = $visibility;
+        
+        $course_info = CourseManager::create_course($params);           
+                                    
+        if (!empty($course_info)) {
+            $course_code = $course_info['code'];
+    
+            // Save new fieldlabel into course_field table
+            $field_id = CourseManager::create_course_extra_field($original_course_id_name, 1, $original_course_id_name);
 
-        if (trim($wanted_code) == '') {
-            $wanted_code = generate_course_code(substr($title, 0, $maxlength));
-        }
-
-        $keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']);
-
-        $sql_check = sprintf('SELECT * FROM '.$table_course.' WHERE visual_code = "%s"',Database :: escape_string($wanted_code));
-        $result_check = Database::query($sql_check); // I don't know why this api function doesn't work...
-        if (Database::num_rows($result_check) < 1) {
-            if (sizeof($keys)) {
-                $visual_code = $keys['currentCourseCode'];
-                $code = $keys['currentCourseId'];
-                $db_name = $keys['currentCourseDbName'];
-                $directory = $keys['currentCourseRepository'];
-                $expiration_date = time() + $firstExpirationDelay;
-                prepare_course_repository($directory, $code);
-                update_Db_course($db_name);
-                $pictures_array = fill_course_repository($directory);
-                fill_Db_course($db_name, $directory, $course_language, $pictures_array);
-                $return = register_course($code, $visual_code, $directory, $db_name, $tutor_name, $category_code, $title, $course_language, api_get_user_id(), $expiration_date, array(), $visibility);
-
-                // Save new fieldlabel into course_field table.
-                $field_id = CourseManager::create_course_extra_field($original_course_id_name, 1, $original_course_id_name);
-
-                // Save the external system's id into user_field_value table.
-                $res = CourseManager::update_course_extra_field_value($code, $original_course_id_name, $original_course_id_value);
+            // Save the external system's id into user_field_value table.
+            $res = CourseManager::update_course_extra_field_value($course_code, $original_course_id_name, $original_course_id_value);
 
-                if (is_array($extra_list) && count($extra_list) > 0) {
-                    foreach ($extra_list as $extra) {
-                        $extra_field_name = $extra['field_name'];
-                        $extra_field_value = $extra['field_value'];
-                        // Save new fieldlabel into course_field table.
-                        $field_id = CourseManager::create_course_extra_field($extra_field_name, 1, $extra_field_name);
-                        // Save the external system's id into course_field_value table.
-                        $res = CourseManager::update_course_extra_field_value($code, $extra_field_name, $extra_field_value);
-                    }
+            if (is_array($extra_list) && count($extra_list) > 0) {
+                foreach ($extra_list as $extra) {
+                    $extra_field_name  = $extra['field_name'];
+                    $extra_field_value = $extra['field_value'];
+                    // Save new fieldlabel into course_field table.
+                    $field_id = CourseManager::create_course_extra_field($extra_field_name, 1, $extra_field_name);
+                    // Save the external system's id into course_field_value table.
+                    $res = CourseManager::update_course_extra_field_value($course_code, $extra_field_name, $extra_field_value);
                 }
             }
-            $results[] = $code;
-            continue;
+            $results[] = $course_code;
         } else {
-            $results[] = 0;
-            continue;
+            $results[] = 0;    
         }
+        continue;
+    }
 
     } // end principal foreach
 

+ 2 - 3
tests/main/inc/lib/add_course.lib.inc.test.php

@@ -9,8 +9,7 @@ class TestAddCourse extends UnitTestCase {
     function TestAddCourse() {
         $this->UnitTestCase('Courses creation - main/inc/lib/add_course.lib.inc.test.php');
     }
-
-
+/*
     function TestCreateCourse(){
         global $_configuration;
         $course_datos = array(
@@ -29,7 +28,7 @@ class TestAddCourse extends UnitTestCase {
                              $course_datos['db_prefix'], $course_datos['firstExpirationDelay']);
         //should be code string if succeeded (false if failed)
         $this->assertTrue(is_string($res));
-    }
+    }*/
 
     function testRegisterCourse() {
         global $_configuration;