コード例 #1
0
 /**
  * Adds a course to the modello_corso table of the current provider,
  * and then adds a service to the platform and links it to the provider
  *
  * @param SimpleXMLElement $course the root course node to be saved
  *
  * @return AMA_Error on error | int generated course id on success
  *
  * @access private
  */
 private function _add_course($course)
 {
     // gets all object inside 'modello_corso' that are NOT
     // of type 'nodi', 'tests', 'surveys'
     // holds datas of the course to be saved
     $courseArr = array();
     foreach ($course as $nodeName => $nodeValue) {
         if (!in_array($nodeName, $this->_specialNodes)) {
             $courseArr[$nodeName] = (string) $nodeValue;
         }
     }
     $courseArr['id_autore'] = $this->_assignedAuthorID;
     $courseArr['d_create'] = ts2dFN(time());
     $courseArr['d_publish'] = NULL;
     $courseArr['service_level'] = $this->_selectedServiceLevel;
     $this->_logMessage('Adding course model by calling data handler add_course with the following datas:');
     $this->_logMessage(print_r($courseArr, true));
     $rename_count = 0;
     do {
         $courseNewID = $this->_dh->add_course($courseArr);
         if (AMA_DB::isError($courseNewID)) {
             if (strlen($courseArr['nome']) > 32) {
                 $this->_logMessage('Generated name will be over maximum allowed size, I\'ll give up and generate an error message.');
                 $rename_count = -1;
                 // this will force an exit from the while loop
             } else {
                 $this->_logMessage($courseArr['nome'] . ' will generate a duplicate key, rename attempt #' . ++$rename_count);
                 $courseArr['nome'] .= '-DUPLICATE';
             }
         } else {
             $this->_logMessage('Successfully created new corse with name:' . $courseArr['nome'] . ' and id: ' . $courseNewID);
         }
     } while (AMA_DB::isError($courseNewID) && $rename_count >= 0);
     if (!AMA_DB::isError($courseNewID)) {
         $retval = $courseNewID;
         // add a row in common.servizio
         $service_dataAr = array('service_name' => $courseArr['titolo'], 'service_description' => $courseArr['descr'], 'service_level' => 1, 'service_duration' => 0, 'service_min_meetings' => 0, 'service_max_meetings' => 0, 'service_meeting_duration' => 0);
         $id_service = $this->_common_dh->add_service($service_dataAr);
         if (!AMA_DB::isError($id_service)) {
             $tester_infoAr = $this->_common_dh->get_tester_info_from_pointer($this->_selectedTester);
             if (!AMA_DB::isError($tester_infoAr)) {
                 $id_tester = $tester_infoAr[0];
                 $result = $this->_common_dh->link_service_to_course($id_tester, $id_service, $courseNewID);
                 if (AMA_DB::isError($result)) {
                     $retval = $result;
                 }
             } else {
                 $retval = $tester_infoAr;
             }
             // if (!AMA_DB::isError($tester_infoAr))
         } else {
             $retval = $id_service;
         }
         // if (!AMA_DB::isError($id_service))
     } else {
         $retval = $courseNewID;
     }
     // if (!AMA_DB::isError($courseNewID))
     if (AMA_DB::isError($retval)) {
         $this->_logMessage('Adding course (modello_corso table) has FAILED! Pls find details below:');
         $this->_logMessage(print_r($retval, true));
     } else {
         $this->_logMessage('Adding course OK! Generated course_id=' . $retval);
     }
     return $retval;
 }