Пример #1
0
 function sop2il()
 {
     //		sleep(5);
     global $ilDB, $ilUser;
     $in = file_get_contents("php://input");
     $GLOBALS['ilLog']->write($in);
     $ret = array('msg' => array(), 'err' => array());
     if (!$in || $in == "") {
         $ret['err'][] = "no post data recieved";
         print json_encode($ret);
         exit;
     }
     $userId = $ilUser->getID();
     $result = true;
     if ($this->type == 'scorm2004') {
         $lm_set = $ilDB->queryF('SELECT default_lesson_mode, interactions, objectives, comments FROM sahs_lm WHERE id = %s', array('integer'), array($this->obj_id));
         while ($lm_rec = $ilDB->fetchAssoc($lm_set)) {
             $defaultLessonMode = $lm_rec["default_lesson_mode"];
             $interactions = ilUtil::yn2tf($lm_rec["interactions"]);
             $objectives = ilUtil::yn2tf($lm_rec["objectives"]);
             $comments = ilUtil::yn2tf($lm_rec["comments"]);
         }
         include_once './Modules/Scorm2004/classes/class.ilSCORM2004StoreData.php';
         $data = json_decode($in);
         $GLOBALS['ilLog']->write('cmi_count=' . count($data->cmi));
         for ($i = 0; $i < count($data->cmi); $i++) {
             if ($result == true) {
                 //$a_r=array();
                 $cdata = $data->cmi[$i];
                 $a_r = ilSCORM2004StoreData::setCMIData($userId, $this->obj_id, $data->cmi[$i], $comments, $interactions, $objectives);
                 if (!is_array($a_r)) {
                     $result = false;
                 }
             }
         }
         if ($result == true) {
             $result = ilSCORM2004StoreData::syncGlobalStatus($userId, $this->obj_id, $data, $data->now_global_status);
         }
     } else {
         include_once "./Modules/ScormAicc/classes/SCORM/class.ilObjSCORMTracking.php";
         $data = json_decode($in);
         $result = ilObjSCORMTracking::storeJsApiCmi($userId, $this->obj_id, $data);
         if ($result == true) {
             $result = ilObjSCORMTracking::syncGlobalStatus($userId, $this->obj_id, $data, $data->now_global_status);
         }
     }
     if ($result == true) {
         $result = self::scormPlayerUnloadForSOP2il($data);
     }
     if ($result == false) {
         $ret['err'][] = "invalid post data recieved";
     } else {
         $ret['msg'][] = "post data recieved";
     }
     header('Content-Type: text/plain; charset=UTF-8');
     print json_encode($ret);
 }