Esempio n. 1
0
 public function __construct($lobj, $id_user)
 {
     $this->lobj = $lobj;
     $this->objectType = $this->lobj->obj_type;
     //search for prev track
     $this->idTrack = $this->getIdTrack($this->lobj->id_reference, $id_user, $this->lobj->id, true);
     parent::__construct($this->idTrack, $this->lobj->environment);
     if ($this->idReference == false) {
         $this->createTrack($this->lobj->id_reference, $this->idTrack, $id_user, date("Y-m-d H:i:s"), 'attempted', $this->objectType);
     }
 }
Esempio n. 2
0
 /** 
  * object constructor
  * Table : learning_commontrack
  * id_reference | idUser | id_track | objectType | date_attempt  | status |
  **/
 function Track_Poll($id_track, $idResource = false, $idParams = false, $back_url = NULL)
 {
     $this->objectType = 'poll';
     parent::Track_Object($id_track);
     $this->idResource = $idResource;
     $this->idParams = $idParams;
     if ($back_url === NULL) {
         $this->back_url = array();
     } else {
         $this->back_url = $back_url;
     }
 }
Esempio n. 3
0
 /**
  * object constructor
  * Table : learning_commontrack
  * idReference | idUser | idTrack | objectType | date_attempt  | status |
  **/
 function Track_ScormOrg($idTrack, $idResource = false, $idParams = false, $back_url = NULL, $environment = false)
 {
     $this->objectType = 'scormorg';
     parent::Track_Object($idTrack, $environment);
     $this->idResource = $idResource;
     $this->idParams = $idParams;
     if ($back_url === NULL) {
         $this->back_url = array();
     } else {
         $this->back_url = $back_url;
     }
 }
Esempio n. 4
0
function organization_itemdone(&$treeView, $idItem, $idUser)
{
    $lang =& DoceboLanguage::createInstance('organization', 'lms');
    require_once $GLOBALS['where_lms'] . '/class.module/track.object.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.stats.php';
    $tdb = $treeView->getTreeDb();
    $item = $tdb->getFolderById($idItem);
    $values = $item->otherValues;
    $objectType = $values[REPOFIELDOBJECTTYPE];
    $idResource = $values[REPOFIELDIDRESOURCE];
    $idParams = $values[ORGFIELDIDPARAM];
    $isTerminator = $values[ORGFIELDISTERMINATOR];
    $idCourse = $tdb->idCourse;
    if ($isTerminator) {
        require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
        $idTrack = Track_Object::getIdTrackFromCommon($idItem, $idUser);
        $track = createLOTrack($idTrack, $objectType, $idResource, $idParams, "");
        if ($track->getStatus() == 'completed' || $track->getStatus() == 'passed') {
            if (!saveTrackStatusChange((int) $idUser, (int) $idCourse, _CUS_END)) {
                errorCommunication($lang->def('_OPERATION_FAILURE'));
                return;
            }
        }
    }
}
Esempio n. 5
0
 function printElementOneUser(&$stack, $level)
 {
     if ($level > 0) {
         $arrData = $stack[$level]['folder']->otherValues;
         if (is_array($arrData) && $arrData[3] != '') {
             require_once _lms_ . '/class.module/track.object.php';
             $status = Track_Object::getStatusFromId($stack[$level]['folder']->id, $this->stat_idUser);
             return printReport($status, TRUE, $arrData[1] !== '' ? true : false);
         } else {
             $this->tdb->stat_filter_on_items = TRUE;
             $totC = getSubStatStatusCount($this->stat_idUser, $this->tdb->idCourse, array('completed', 'passed'), $stack[$level]['folder'], $this->tdb);
             $totF = getSubStatStatusCount($this->stat_idUser, $this->tdb->idCourse, array('failed'), $stack[$level]['folder'], $this->tdb);
             $tot = count($this->tdb->getDescendantsId($stack[$level]['folder']));
             $this->tdb->stat_filter_on_items = TRUE;
             $out = '<div class="fright" >';
             $out .= renderProgress($totC, $totF, $tot, 130);
             $out .= '</div>';
             return $out;
         }
     }
 }
Esempio n. 6
0
function uptest()
{
    checkPerm('view', false, 'storage');
    $lang =& DoceboLanguage::createInstance('test');
    if (trim($_POST['title']) == '') {
        $_POST['title'] = $lang->def('_NOTITLE');
    }
    $id_test = importVar('idTest', true, 0);
    $back_url = urldecode(importVar('back_url'));
    $url_encode = htmlentities(urlencode($back_url));
    $mod_query = "\r\n\tUPDATE " . $GLOBALS['prefix_lms'] . "_test\r\n\tSET title = '" . $_POST['title'] . "', \r\n\t\tdescription = '" . $_POST['textof'] . "' \r\n\tWHERE idTest = '" . $id_test . "'";
    if (!sql_query($mod_query)) {
        errorCommunication($lang->def('_OPERATION_FAILURE') . getBackUi('index.php?modname=test&amp;op=modtest&amp;idTest=' . $id_test . '&amp;back_url=' . $url_encode));
        return;
    }
    require_once $GLOBALS['where_lms'] . '/class.module/track.object.php';
    Track_Object::updateObjectTitle($id_test, 'test', $_POST['title']);
    Util::jump_to('index.php?modname=test&op=modtestgui&idTest=' . $id_test . '&back_url=' . $url_encode);
}
Esempio n. 7
0
 function uppage()
 {
     checkPerm('view', false, 'storage');
     $back_url = urldecode($_POST['back_url']);
     $insert_query = "\r\n\tUPDATE " . $GLOBALS['prefix_lms'] . "_htmlpage\r\n\tSET title = '" . (trim($_POST['title']) == '' ? Lang::t('_NOTITLE', 'htmlpage', 'lms') : $_POST['title']) . "',\r\n\t\ttextof = '" . $_POST['textof'] . "'\r\n\tWHERE idPage = '" . (int) $_POST['idPage'] . "'";
     if (!sql_query($insert_query)) {
         $_SESSION['last_error'] = Lang::t('_OPERATION_FAILURE', 'htmlpage', 'lms');
         Util::jump_to($back_url . '&mod_result=0');
     }
     if ($_FILES) {
         $n = 0;
         foreach ($_FILES as $_FILE) {
             $n++;
             $file = save_file($_FILE);
             if ($file) {
                 $insert_query = "INSERT INTO " . $GLOBALS['prefix_lms'] . "_htmlpage_attachment SET file = '" . $file . "', title = '" . trim($_FILE['name']) . "', idpage = " . (int) $_POST['idPage'];
                 sql_query($insert_query);
             }
         }
     }
     if ($_POST['iddelattachment'] != '') {
         $ids = explode(';', $_POST['iddelattachment']);
         foreach ($ids as $id) {
             if ($id) {
                 $query = "DELETE FROM learning_htmlpage_attachment WHERE id = " . $id;
                 mysql_query($query);
             }
         }
     }
     require_once $GLOBALS['where_lms'] . '/class.module/track.object.php';
     Track_Object::updateObjectTitle($_POST['idPage'], 'htmlpage', $_POST['title']);
     Util::jump_to($back_url . '&id_lo=' . $_POST['idPage'] . '&mod_result=1');
 }
Esempio n. 8
0
 function upitem()
 {
     //checkPerm('view', false, 'storage');
     require_once _base_ . '/lib/lib.upload.php';
     $back_url = urldecode($_POST['back_url']);
     //scanning title
     if (trim($_POST['title']) == "") {
         $_POST['title'] = Lang::t('_NOTITLE', 'item', 'lms');
     }
     //save file
     if ($_FILES['attach']['name'] != '') {
         $path = '/appLms/' . Get::sett('pathlesson');
         // retrive and delte ld file --------------------------------------------------
         list($old_file) = sql_fetch_row(sql_query("\r\n\t\tSELECT path \r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_materials_lesson \r\n\t\tWHERE idLesson = '" . (int) $_POST['idItem'] . "'"));
         $size = Get::file_size($GLOBALS['where_files_relative'] . $path . $old_file);
         if (!sl_unlink($path . $old_file)) {
             sl_close_fileoperations();
             $_SESSION['last_error'] = Lang::t('_OPERATION_FAILURE', 'item', 'lms');
             Util::jump_to($back_url . '&id_lo=' . (int) $_POST['idItem'] . '&mod_result=0');
         }
         $GLOBALS['course_descriptor']->subFileToUsedSpace(false, $size);
         // control course quota ---------------------------------------------------
         $quota = $GLOBALS['course_descriptor']->getQuotaLimit();
         $used = $GLOBALS['course_descriptor']->getUsedSpace();
         if (Util::exceed_quota($_FILES['attach']['tmp_name'], $quota, $used)) {
             $_SESSION['last_error'] = Lang::t('_QUOTA_EXCEDED');
             Util::jump_to($back_url . '&create_result=0');
         }
         // save new file ------------------------------------------------------------
         sl_open_fileoperations();
         $savefile = $_SESSION['idCourse'] . '_' . mt_rand(0, 100) . '_' . time() . '_' . $_FILES['attach']['name'];
         if (!file_exists($GLOBALS['where_files_relative'] . $path . $savefile)) {
             if (!sl_upload($_FILES['attach']['tmp_name'], $path . $savefile)) {
                 sl_close_fileoperations();
                 $_SESSION['last_error'] = Lang::t('_ERROR_UPLOAD', 'item', 'lms');
                 Util::jump_to($back_url . '&id_lo=' . (int) $_POST['idItem'] . '&mod_result=0');
             }
             sl_close_fileoperations();
         } else {
             $_SESSION['last_error'] = Lang::t('_ERROR_UPLOAD', 'item', 'lms');
             Util::jump_to($back_url . '&id_lo=' . (int) $_POST['idItem'] . '&mod_result=0');
         }
         $new_file = ", path = '" . $savefile . "'";
     }
     $insert_query = "\r\n\tUPDATE " . $GLOBALS['prefix_lms'] . "_materials_lesson \r\n\tSET author = '" . getLogUserId() . "',\r\n\t\ttitle = '" . $_POST['title'] . "',\r\n\t\tdescription = '" . $_POST['description'] . "'\r\n\t\t{$new_file}\r\n\tWHERE idLesson = '" . (int) $_POST['idItem'] . "'";
     if (!sql_query($insert_query)) {
         sl_unlink($path . $savefile);
         $_SESSION['last_error'] = Lang::t('_OPERATION_FAILURE', 'item', 'lms');
         Util::jump_to($back_url . '&id_lo=' . (int) $_POST['idItem'] . '&mod_result=0');
     }
     if (isset($_SESSION['idCourse']) && defined("LMS")) {
         $GLOBALS['course_descriptor']->addFileToUsedSpace($GLOBALS['where_files_relative'] . $path . $savefile);
         require_once $GLOBALS['where_lms'] . '/class.module/track.object.php';
         Track_Object::updateObjectTitle($_POST['idItem'], 'item', $_POST['title']);
     }
     Util::jump_to($back_url . '&id_lo=' . (int) $_POST['idItem'] . '&mod_result=1');
 }
Esempio n. 9
0
 function Track_Htmlpage($idTrack)
 {
     $this->objectType = 'htmlpage';
     parent::Track_Object($idTrack);
 }
Esempio n. 10
0
 function Track_Glossary($idTrack)
 {
     $this->objectType = 'glossary';
     parent::Track_Object($idTrack);
 }
Esempio n. 11
0
 function loadBody()
 {
     global $op, $modname;
     if ($this->treeView === NULL) {
         $this->initialize();
     }
     // tree indipendent play lo -----------------------------------------------
     if ($GLOBALS['op'] == 'scorm_track') {
         require_once $GLOBALS['where_lms'] . '/modules/organization/orgresults.php';
         $user = Get::req('id_user', DOTY_INT, false);
         $org = Get::req('id_org', DOTY_INT, false);
         getTrackingTable($user, $org);
         return;
     }
     if ($GLOBALS['op'] == 'scorm_history') {
         require_once _lms_ . '/modules/organization/orgresults.php';
         $user = Get::req('id_user', DOTY_INT, false);
         $obj = Get::req('id_obj', DOTY_INT, false);
         getHistoryTable($user, $obj);
         return;
     }
     if ($GLOBALS['op'] == 'scorm_interactions') {
         require_once _lms_ . '/modules/organization/orgresults.php';
         //__FILE__.'/appLms/modules/organization/orgresults.php');
         $user = Get::req('id_user', DOTY_INT, false);
         $track = Get::req('id_track', DOTY_INT, false);
         getInteractionsTable($user, $track);
         return;
     }
     if ($GLOBALS['op'] === 'test_track') {
         require_once _lms_ . '/modules/organization/orgresults.php';
         $user = Get::req('id_user', DOTY_INT, false);
         $org = Get::req('id_org', DOTY_INT, false);
         getCompilationTable($user, $org);
         return;
     }
     if ($GLOBALS['op'] == 'custom_playitem') {
         require_once $GLOBALS['where_framework'] . '/lib/lib.sessionsave.php';
         $saveObj = new Session_Save();
         $saveName = $saveObj->getName('organization' . $_SESSION['idCourse'], true);
         $saveObj->save($saveName, $this->treeView->getState());
         $id_item = importVar('id_item');
         $folder = $this->repoDb->getFolderById($id_item);
         $lo = createLO($folder->otherValues[REPOFIELDOBJECTTYPE]);
         $idItem = $folder->otherValues[REPOFIELDIDRESOURCE];
         if (isset($_GET['edit']) && $_GET['edit']) {
             $back_url = 'index.php?modname=' . $modname . '&op=custom_enditem&edit=1&id_item=' . $id_item;
         } else {
             $back_url = 'index.php?modname=' . $modname . '&op=custom_enditem&id_item=' . $id_item;
         }
         $lo->play($idItem, $folder->otherValues[ORGFIELDIDPARAM], $back_url);
         return;
     }
     // tree indipendent play end --------------------------------------------
     if ($GLOBALS['op'] == 'custom_enditem') {
         $lang =& DoceboLanguage::createInstance('organization', 'lms');
         require_once $GLOBALS['where_lms'] . '/class.module/track.object.php';
         require_once $GLOBALS['where_lms'] . '/lib/lib.stats.php';
         $id_item = importVar('id_item');
         $folder = $this->repoDb->getFolderById($id_item);
         $objectType = $folder->otherValues[REPOFIELDOBJECTTYPE];
         $idResource = $folder->otherValues[REPOFIELDIDRESOURCE];
         $idParams = $folder->otherValues[ORGFIELDIDPARAM];
         $isTerminator = $folder->otherValues[ORGFIELDISTERMINATOR];
         /*With this direct_play courses was set as finished if is passed the object automatically without needing to set it as finish course object
         		$isTerminator = ( isset($_SESSION['direct_play']) ? true : $folder->otherValues[ORGFIELDISTERMINATOR] );*/
         $idCourse = $_SESSION['idCourse'];
         if ($isTerminator) {
             require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
             $idTrack = Track_Object::getIdTrackFromCommon($id_item, getLogUserId());
             $track = createLOTrack($idTrack, $objectType, $idResource, $idParams, "");
             if ($track->getStatus() == 'completed' || $track->getStatus() == 'passed') {
                 if (!saveTrackStatusChange((int) getLogUserId(), (int) $idCourse, _CUS_END)) {
                     errorCommunication($lang->def('_OPERATION_FAILURE'));
                     return;
                 }
             }
         }
         if (Get::req('edit', DOTY_INT, 0) > 0) {
             Util::jump_to('index.php?modname=storage&op=display');
         }
         if (isset($_SESSION['direct_play'])) {
             $from = Get::req('from', DOTY_ALPHANUM, '');
             //reset cache for the notication
             UpdatesLms::resetCache();
             // autoplay with more than an object and the first one is completed
             require_once _lms_ . '/lib/lib.orgchart.php';
             $orgman = new OrganizationManagement($_SESSION['idCourse']);
             $first_lo =& $orgman->getInfoWhereType(false, $_SESSION['idCourse']);
             if (count($first_lo) >= 2) {
                 // if we have more than an object we need to play the first one until it's completed
                 $obj = array_shift($first_lo);
                 $query = "SELECT status FROM %lms_commontrack WHERE idReference = " . (int) $obj['id_org'] . " AND idUser = "******"catalogue":
                     Util::jump_to('index.php?r=lms/catalog/show&sop=unregistercourse');
                     break;
                 case "lo_plan":
                     Util::jump_to('index.php?r=' . _after_login_ . '&sop=unregistercourse');
                     break;
                 case "lo_history":
                     Util::jump_to('index.php?r=' . _after_login_ . '&current_tab=lo_history&sop=unregistercourse');
                     break;
                 default:
                     Util::jump_to('index.php?r=' . _after_login_ . '&sop=unregistercourse');
                     break;
             }
         }
     }
     //--- direct edit item -----------------------------------------------------
     if ($GLOBALS['op'] == 'direct_edit_item') {
         $id_item = Get::req('id_item', DOTY_INT, 0);
         $this->treeView->op = 'editLO';
     }
     // normal tree function --------------------------------------------
     $this->treeView->playOnly = $modname == 'organization';
     switch ($this->treeView->op) {
         case 'import':
             import($this->treeView);
             break;
         case 'createLO':
             global $modname;
             // save state
             require_once $GLOBALS['where_framework'] . '/lib/lib.sessionsave.php';
             $saveObj = new Session_Save();
             $saveName = $saveObj->getName('organization' . $_SESSION['idCourse'], true);
             $saveObj->save($saveName, $this->treeView->getState());
             $GLOBALS['page']->add($this->treeView->LOSelector($modname, 'index.php?modname=' . $modname . '&op=display&sor=' . $saveName . '&' . $this->treeView->_getOpCreateLOEnd() . '=1'), 'content');
             break;
         case 'createLOSel':
             global $modname;
             // save state
             require_once $GLOBALS['where_framework'] . '/lib/lib.sessionsave.php';
             $saveObj = new Session_Save();
             $saveName = $saveObj->getName('organization' . $_SESSION['idCourse'], true);
             $saveObj->save($saveName, $this->treeView->getState());
             // start learning object creation
             $lo = createLO($_POST['radiolo']);
             if ($lo !== false) {
                 $lo->create('index.php?modname=' . $modname . '&op=display&sor=' . $saveName . '&' . $this->treeView->_getOpCreateLOEnd() . '=1');
             } else {
                 $GLOBALS['page']->addStart(getTitleArea(def('_ORGANIZATION', 'organization', 'lms'), 'organization') . '<div class="std_block">', 'content');
                 $GLOBALS['page']->addEnd('</div>', 'content');
                 if (isset($_SESSION['last_error'])) {
                     if ($_SESSION['last_error'] != "") {
                         //$GLOBALS['page']->add( $_SESSION['last_error'], 'content' );
                         UIFeedback::error($_SESSION['last_error']);
                         unset($_SESSION['last_error']);
                     }
                 }
                 organization($this->treeView);
             }
             break;
         case 'editLO':
             global $modname;
             // save state
             require_once $GLOBALS['where_framework'] . '/lib/lib.sessionsave.php';
             $saveObj = new Session_Save();
             $saveName = $saveObj->getName('organization' . $_SESSION['idCourse'], true);
             $saveObj->save($saveName, $this->treeView->getState());
             $folder = $this->repoDb->getFolderById($this->treeView->getSelectedFolderId());
             $lo = createLO($folder->otherValues[REPOFIELDOBJECTTYPE]);
             $lo->edit($folder->otherValues[REPOFIELDIDRESOURCE], 'index.php?modname=' . $modname . '&op=display&sor=' . $saveName . '&' . $this->treeView->_getOpEditLOEnd() . '=1');
             break;
         case 'playitem':
             global $modname;
             // save state
             require_once $GLOBALS['where_framework'] . '/lib/lib.sessionsave.php';
             $saveObj = new Session_Save();
             $saveName = $saveObj->getName('organization' . $_SESSION['idCourse'], true);
             $saveObj->save($saveName, $this->treeView->getState());
             $folder = $this->repoDb->getFolderById($this->treeView->getItemToPlay());
             $lo = createLO($folder->otherValues[REPOFIELDOBJECTTYPE]);
             $idItem = $folder->otherValues[REPOFIELDIDRESOURCE];
             $back_url = 'index.php?modname=' . $modname . '&op=organization&sor=' . $saveName . '&' . $this->treeView->_getOpPlayEnd() . '=' . $folder->id;
             $lo->play($idItem, $folder->otherValues[ORGFIELDIDPARAM], $back_url);
             break;
         case 'copyLOSel':
             $GLOBALS['page']->add($this->treeView->load());
             break;
         case 'copyLOEndOk':
         case 'copyLOEndCancel':
             global $modname;
             require_once $GLOBALS['where_framework'] . '/lib/lib.sessionsave.php';
             $saveObj = new Session_Save();
             $saveName = $_GET['crepo'];
             if ($saveObj->nameExists($saveName)) {
                 $saveData =& $saveObj->load($saveName);
                 $saveObj->delete($saveName);
                 Util::jump_to(' index.php?modname=' . $modname . '&op=' . $saveData['repo']);
             }
             Util::jump_to(' index.php?modname=' . $modname . '&op=display');
             break;
         case 'copyLO':
             global $modname;
             // save state
             require_once $GLOBALS['where_framework'] . '/lib/lib.sessionsave.php';
             $saveObj = new Session_Save();
             $saveName = $saveObj->getName('crepo', true);
             $folder = $this->treeView->tdb->getFolderById($this->treeView->selectedFolder);
             $saveData = array('repo' => 'organization', 'id' => $this->treeView->getSelectedFolderId(), 'objectType' => $folder->otherValues[REPOFIELDOBJECTTYPE], 'name' => $folder->otherValues[REPOFIELDTITLE], 'idResource' => $folder->otherValues[REPOFIELDIDRESOURCE]);
             $saveObj->save($saveName, $saveData);
             Util::jump_to(' index.php?modname=' . $modname . '&op=display&crepo=' . $saveName . '&' . $this->treeView->_getOpCopyLOSel() . '=1');
         case 'createLOEnd':
             // insertion managed by extendParsing
         // insertion managed by extendParsing
         case "display":
         case "organization":
         default:
             /*$GLOBALS['page']->addStart(
             			getTitleArea(def('_ORGANIZATION', 'organization', 'lms'), 'organization')
             			.'<div class="std_block">', 'content');
             		$GLOBALS['page']->addEnd('</div>', 'content');*/
             if (isset($_SESSION['last_error'])) {
                 if ($_SESSION['last_error'] != "") {
                     //$GLOBALS['page']->add( $_SESSION['last_error'], 'content' );
                     UIFeedback::error($_SESSION['last_error']);
                     unset($_SESSION['last_error']);
                 }
             }
             organization($this->treeView);
             break;
     }
 }
Esempio n. 12
0
 function upglossary()
 {
     checkPerm('view', false, 'storage');
     $back_url = urldecode($_POST['back_url']);
     $back_coded = htmlentities(urlencode($back_url));
     if ($_POST['title'] == "") {
         $_POST['title'] = Lang::t('_NOTITLE', 'glossary');
     }
     if (!sql_query("\r\n\tUPDATE " . $GLOBALS['prefix_lms'] . "_glossary \r\n\tSET title='" . $_POST['title'] . "',\r\n\tdescription='" . $_POST['description'] . "'\r\n\tWHERE idGlossary='" . (int) $_POST['idGlossary'] . "'")) {
         //error while inserting
         $GLOBALS['page']->add(getErrorUi(Lang::t('_OPERATION_FAILURE', 'glossary') . getBackUi('index.php?modname=glossary&amp;op=modglossarygui&amp;idGlossary=' . (int) $_POST['idGlossary'] . '&amp;back_url=' . $back_coded, Lang::t('_BACK'))), 'content');
         return;
     }
     require_once $GLOBALS['where_lms'] . '/class.module/track.object.php';
     Track_Object::updateObjectTitle($_POST['idGlossary'], 'glossary', $_POST['title']);
     Util::jump_to('index.php?modname=glossary&op=modglossarygui&idGlossary=' . (int) $_POST['idGlossary'] . '&back_url=' . $back_coded);
 }
Esempio n. 13
0
 function uplinkcat()
 {
     checkPerm('view', false, 'storage');
     $lang =& DoceboLanguage::createInstance('link');
     $back_url = urldecode(importVar('back_url'));
     $back_coded = htmlentities(urlencode($back_url));
     $query_ins = "\r\n\tUPDATE " . $GLOBALS['prefix_lms'] . "_link_cat\r\n\tSET title = '" . (trim($_POST['title']) == '' ? $lang->def('_NOTITLE') : $_POST['title']) . "',\r\n\t\tdescription = '" . $_POST['description'] . "' \r\n\tWHERE idCategory = '" . (int) $_POST['idCategory'] . "'";
     if (!sql_query($query_ins)) {
         $GLOBALS['page']->add(getErrorUi($lang->def('_OPERATION_FAILURE') . getBackUi('index.php?modname=link&op=modlinkgui&idCategory=' . (int) $_POST['idCategory'] . '&back_url=' . $back_coded, $lang->def('_BACK'))), 'content');
         return;
     }
     require_once $GLOBALS['where_lms'] . '/class.module/track.object.php';
     Track_Object::updateObjectTitle($_POST['idCategory'], 'link', $_POST['title']);
     Util::jump_to('index.php?modname=link&op=modlinkgui&idCategory=' . (int) $_POST['idCategory'] . '&back_url=' . $back_coded);
 }
Esempio n. 14
0
 function printElement(&$stack, $level)
 {
     require_once $GLOBALS['where_lms'] . '/class.module/track.object.php';
     $out = '<div class="TreeViewRowBase">';
     $id = $stack[$level]['isExpanded'] ? $this->_getCompressActionId() : $this->_getExpandActionId();
     $id .= $stack[$level]['folder']->id;
     for ($i = 0; $i <= $level; $i++) {
         list($classImg, $imgFileName, $imgAlt) = $this->getImage($stack, $i, $level);
         if ($i != $level - 1 || $stack[$level]['isLeaf']) {
             $out .= '<img src="' . getPathImage() . $imgFileName . '" ' . 'class="' . $classImg . '" alt="' . $imgAlt . '" ' . 'title="' . $imgAlt . '" />';
         } else {
             $out .= '<input type="submit" class="' . $classImg . '" value="' . '" name="' . $id . '" id="seq_' . $stack[$level]['idSeq'] . 'img" />';
         }
     }
     if ($stack[$level]['folder']->id == $this->selectedFolder) {
         $this->selectedFolderData = $stack[$level];
         $classStyle = 'TreeItemSelected';
     } else {
         $classStyle = 'TreeItem';
     }
     $out .= $this->getPreFolderName($stack[$level]['folder']);
     // find extra data and check if the node is a folder or a LO
     $arrData = $stack[$level]['folder']->otherValues;
     if (is_array($arrData) && !empty($arrData)) {
         $isFolder = $arrData[REPOFIELDOBJECTTYPE] === '';
     } else {
         $isFolder = true;
     }
     //check for void selection
     if (is_array($arrData) && isset($arrData[ORGFIELD_ACCESS]) && $this->playOnly) {
         //if (!$this->userSelector->isUserInSelection(getLogUserId(), $arrData[ORGFIELD_ACCESS])) return false;
         if (!empty($arrData[ORGFIELD_ACCESS]) && !in_array(Docebo::user()->getIdst(), $arrData[ORGFIELD_ACCESS])) {
             return false;
         }
         //?!?
     }
     // read width and hieght param
     $lb_param = "";
     if (!$isFolder) {
         if ($arrData[ORGFIELD_WIDTH] != '' && $arrData[ORGFIELD_WIDTH] != '0') {
             $lb_param .= ";width=" . $arrData[ORGFIELD_WIDTH] . "";
         }
         if ($arrData[ORGFIELD_HEIGHT] != '' && $arrData[ORGFIELD_HEIGHT] != '0') {
             $lb_param .= ";height=" . $arrData[ORGFIELD_HEIGHT] . "";
         }
     }
     // folder are input and LO are link only in the play area
     if ($isFolder || checkPerm('lesson', true, 'storage') && !$this->playOnly) {
         $out .= '<input type="submit" class="' . $classStyle . '" value="' . $this->getFolderPrintName($stack[$level]['folder']) . '" name="' . $this->_getSelectedId() . $stack[$level]['folder']->id . '" id="seq_' . $stack[$level]['idSeq'] . '" ' . $this->getFolderPrintOther($stack[$level]['folder']) . ' />';
     } else {
         $isPrerequisitesSatisfied = Track_Object::isPrerequisitesSatisfied($stack[$level]['folder']->otherValues[ORGFIELDPREREQUISITES], getLogUserId());
         if ($arrData[ORGFIELD_PUBLISHFOR] == PF_TEACHER && $_SESSION['levelCourse'] <= 3) {
             return false;
         }
         if ($arrData[ORGFIELD_PUBLISHFOR] == PF_ATTENDANCE && !$this->presence()) {
             $out .= ' <span class="' . $classStyle . '" ' . 'id="' . $this->id . '_' . $this->_getOpPlayItemId() . '_' . $stack[$level]['folder']->id . '" ' . 'name="' . $this->id . '[' . $this->_getOpPlayItemId() . '][' . $stack[$level]['folder']->id . ']">' . $this->getFolderPrintName($stack[$level]['folder']) . '</span>';
         } else {
             if ($isPrerequisitesSatisfied) {
                 $out .= ' <a ' . ($arrData[1] == 'scormorg' ? ' rel="lightbox' . $lb_param . '"' : '') . ' class="' . $classStyle . '" ' . 'id="' . $this->id . '_' . $this->_getOpPlayItemId() . '_' . $stack[$level]['folder']->id . '" ' . 'name="' . $this->id . '[' . $this->_getOpPlayItemId() . '][' . $stack[$level]['folder']->id . ']" ' . 'href="index.php?modname=organization&amp;op=custom_playitem&amp;id_item=' . $stack[$level]['folder']->id . '" ' . 'title="' . $this->getFolderPrintName($stack[$level]['folder']) . '">' . $this->getFolderPrintName($stack[$level]['folder']) . '</a>';
             } else {
                 $out .= ' <span class="' . $classStyle . '" ' . 'id="' . $this->id . '_' . $this->_getOpPlayItemId() . '_' . $stack[$level]['folder']->id . '" ' . 'name="' . $this->id . '[' . $this->_getOpPlayItemId() . '][' . $stack[$level]['folder']->id . ']">' . $this->getFolderPrintName($stack[$level]['folder']) . '</span>';
             }
         }
     }
     $out .= '</div>';
     $out .= $this->printActions($stack, $level);
     if ($level > 0) {
         if (checkPerm('lesson', true, 'storage') && !$this->playOnly) {
             if ($this->withActions == FALSE) {
                 return $out;
             }
             if ($stack[$level]['isFirst']) {
                 $out .= '<div class="TVActionEmpty">&nbsp;</div>';
             } else {
                 $out .= '<input type="image" class="tree_view_image" ' . ' src="' . $this->_getOpUpImg() . '"' . ' id="' . $this->id . '_' . $this->_getOpUpId() . '_' . $stack[$level]['folder']->id . '" ' . ' name="' . $this->id . '[' . $this->_getOpUpId() . '][' . $stack[$level]['folder']->id . ']" ' . ' title="' . $this->_getOpUpTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" ' . ' alt="' . $this->_getOpUpTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />';
             }
             if ($stack[$level]['isLast']) {
                 $out .= '<div class="TVActionEmpty">&nbsp;</div>';
             } else {
                 $out .= '<input type="image" class="tree_view_image" ' . ' src="' . $this->_getOpDownImg() . '"' . ' id="' . $this->id . '_' . $this->_getOpDownId() . '_' . $stack[$level]['folder']->id . '" ' . ' name="' . $this->id . '[' . $this->_getOpDownId() . '][' . $stack[$level]['folder']->id . ']" ' . ' title="' . $this->_getOpDownTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" ' . ' alt="' . $this->_getOpDownTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />';
             }
             $out .= '<input type="image" class="tree_view_image" ' . ' src="' . $this->_getAccessImg() . '"' . ' id="' . $this->id . '_' . $this->_getAccessId() . '_' . $stack[$level]['folder']->id . '" ' . ' name="' . $this->id . '[' . $this->_getAccessId() . '][' . $stack[$level]['folder']->id . ']" ' . ' title="' . $this->_getAccessTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" ' . ' alt="' . $this->_getAccessTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />';
         }
         $arrData = $stack[$level]['folder']->otherValues;
         $isFolder = $arrData[REPOFIELDOBJECTTYPE] === '';
         if (is_array($arrData)) {
             switch ($this->kind) {
                 case 'prerequisites':
                     $out .= '<input type="text" value="" name="' . $this->_getPrerequisitesId() . $stack[$level]['folder']->id . '" />';
                     break;
                 default:
                     if (checkPerm('lesson', true, 'storage') && !$this->playOnly) {
                         if ($this->withActions == FALSE) {
                             return $out;
                         }
                         if ($arrData[REPOFIELDOBJECTTYPE] != 'poll' && $arrData[REPOFIELDOBJECTTYPE] != 'test') {
                             $out .= '<input type="image" class="tree_view_image" ' . ' src="' . $this->_getCategorizeImg() . '"' . ' id="' . $this->id . '_' . $this->_getCategorizeId() . '_' . $stack[$level]['folder']->id . '" ' . ' name="' . $this->id . '[' . $this->_getCategorizeId() . '][' . $stack[$level]['folder']->id . ']" ' . ' title="' . $this->_getCategorizeTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" ' . ' alt="' . $this->_getCategorizeTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />';
                         } else {
                             $out .= '<div class="TVActionEmpty">&nbsp;</div>';
                         }
                         $out .= '<input type="image" class="tree_view_image" ' . ' src="' . $this->_getPropertiesImg() . '"' . ' id="' . $this->id . '_' . $this->_getPropertiesId() . '_' . $stack[$level]['folder']->id . '" ' . ' name="' . $this->id . '[' . $this->_getPropertiesId() . '][' . $stack[$level]['folder']->id . ']" ' . ' title="' . $this->_getPropertiesTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" ' . ' alt="' . $this->_getPropertiesTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />';
                         if (!$isFolder) {
                             $out .= '<input type="image" class="tree_view_image" ' . ' src="' . $this->_getCopyImage() . '"' . ' id="' . $this->id . '_' . $this->_getOpCopyLOId() . '_' . $stack[$level]['folder']->id . '" ' . ' name="' . $this->id . '[' . $this->_getOpCopyLOId() . '][' . $stack[$level]['folder']->id . ']" ' . ' title="' . $this->_getOpCopyTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" ' . ' alt="' . $this->_getOpCopyTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />';
                             //if ($arrData[REPOFIELDOBJECTTYPE] != 'scormorg') {
                             $out .= '<input type="image" class="tree_view_image" ' . ' src="' . $this->_getEditImage() . '"' . ' id="' . $this->id . '_' . $this->_getOpEditLOId() . '_' . $stack[$level]['folder']->id . '" ' . ' name="' . $this->id . '[' . $this->_getOpEditLOId() . '][' . $stack[$level]['folder']->id . ']" ' . ' title="' . $this->_getOpEditTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" ' . ' alt="' . $this->_getOpEditTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />';
                             /*}
                             		else {
                             			$out .='<div class="TVActionEmpty">&nbsp;</div>';
                             		}*/
                             $out .= '<a ' . ($arrData[1] == 'scormorg' ? ' rel="lightbox' . $lb_param . '"' : '') . ' class="tree_view_image" ' . 'id="' . $this->id . '_' . $this->_getOpPlayItemId() . '_' . $stack[$level]['folder']->id . '" ' . 'name="' . $this->id . '[' . $this->_getOpPlayItemId() . '][' . $stack[$level]['folder']->id . ']" ' . 'href="index.php?modname=organization&amp;op=custom_playitem&amp;edit=1&amp;id_item=' . $stack[$level]['folder']->id . '" ' . 'title="' . $this->getFolderPrintName($stack[$level]['folder']) . '">' . '<img src="' . $this->_getOpPlayItemImg() . '"' . ' alt="' . $this->_getOpPlayTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />' . '</a>';
                         } else {
                             $out .= '<div class="TVActionEmpty"></div>';
                         }
                     } else {
                         if (!$isFolder) {
                             if ($arrData[ORGFIELD_PUBLISHFROM] != '' && $arrData[ORGFIELD_PUBLISHFROM] != '0000-00-00 00:00:00') {
                                 if ($arrData[ORGFIELD_PUBLISHFROM] > date("Y-m-d H:i:s")) {
                                     return false;
                                 }
                             }
                             if ($arrData[ORGFIELD_PUBLISHTO] != '' && $arrData[ORGFIELD_PUBLISHTO] != '0000-00-00 00:00:00') {
                                 if ($arrData[ORGFIELD_PUBLISHTO] < date("Y-m-d H:i:s")) {
                                     return false;
                                 }
                             }
                             $status = Track_Object::getStatusFromId($stack[$level]['folder']->id, getLogUserId());
                             if ($arrData[ORGFIELD_PUBLISHFOR] == PF_TEACHER && $_SESSION['levelCourse'] <= 3) {
                                 return false;
                             }
                             if ($arrData[ORGFIELD_PUBLISHFOR] == PF_ATTENDANCE && !$this->presence()) {
                                 $out .= '<input type="image" class="tree_view_image" ' . ' src="' . $this->_getOpLockedImg() . '"' . ' id="' . $this->id . '_' . $this->_getOpLockedId() . '_' . $stack[$level]['folder']->id . '" ' . ' name="' . $this->id . '[' . $this->_getOpLockedId() . '][' . $stack[$level]['folder']->id . ']" ' . ' title="' . $this->_getOpLockedTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" ' . ' alt="' . $this->_getOpLockedTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />';
                             } else {
                                 if ($isPrerequisitesSatisfied) {
                                     if ($arrData[1] == 'scormorg') {
                                         $out .= '<a class="tree_view_image" ' . 'id="' . $this->id . '_' . $this->_getShowResultsId() . '_' . $stack[$level]['folder']->id . '" ' . 'name="' . $this->id . '[' . $this->_getShowResultsId() . '][' . $stack[$level]['folder']->id . ']" ' . 'href="index.php?modname=organization&amp;op=scorm_track&amp;id_user='******'&amp;id_org=' . $arrData[2] . '" ' . 'title="' . $this->_getShowResultsTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '">' . '<img src="' . $this->_getShowResultsImg() . '"' . ' alt="' . $this->_getShowResultsTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />' . '</a>';
                                     } elseif ($arrData[1] == 'test') {
                                         $out .= '<a class="tree_view_image" ' . 'id="' . $this->id . '_' . $this->_getShowResultsId() . '_' . $stack[$level]['folder']->id . '" ' . 'name="' . $this->id . '[' . $this->_getShowResultsId() . '][' . $stack[$level]['folder']->id . ']" ' . 'href="index.php?modname=organization&amp;op=test_track&amp;id_user='******'&amp;id_org=' . $arrData[2] . '" ' . 'title="' . $this->_getShowResultsTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '">' . '<img src="' . $this->_getShowResultsImg() . '"' . ' alt="' . $this->_getShowResultsTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />' . '</a>';
                                     } else {
                                         $out .= '<img src="' . getPathImage() . 'blank.png" class="OrgStatus"' . ' alt="' . Lang::t($status, 'standard', 'framework') . '" title="' . Lang::t($status, 'standard', 'framework') . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />';
                                     }
                                 } else {
                                     $out .= '<input type="image" class="tree_view_image" ' . ' src="' . $this->_getOpLockedImg() . '"' . ' id="' . $this->id . '_' . $this->_getOpLockedId() . '_' . $stack[$level]['folder']->id . '" ' . ' name="' . $this->id . '[' . $this->_getOpLockedId() . '][' . $stack[$level]['folder']->id . ']" ' . ' title="' . $this->_getOpLockedTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" ' . ' alt="' . $this->_getOpLockedTitle() . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />';
                                 }
                             }
                             switch ($status) {
                                 case 'not attempted':
                                     $img = 'blank.png';
                                     break;
                                 case 'ab-initio':
                                     $img = 'ab-initio.png';
                                     break;
                                 case 'attempted':
                                     $img = 'attempted.png';
                                     break;
                                 case 'passed':
                                 case 'completed':
                                     $img = 'completed.png';
                                     break;
                                 case 'failed':
                                     $img = 'fail.png';
                                     break;
                             }
                             $out .= '<img src="' . getPathImage() . 'lobject/' . $img . '" class="OrgStatus" alt="' . Lang::t($status, 'standard', 'framework') . '" title="' . Lang::t($status, 'standard', 'framework') . ': ' . $this->getFolderPrintName($stack[$level]['folder']) . '" />';
                         }
                     }
                     break;
             }
         }
     }
     return $out;
 }
Esempio n. 15
0
 public function delCourse($id_course)
 {
     if ((int) $id_course <= 0) {
         return false;
     }
     require_once _lms_ . '/lib/lib.course.php';
     require_once _base_ . '/lib/lib.upload.php';
     $course_man = new Man_Course();
     //remove course subscribed------------------------------------------
     $levels =& $course_man->getCourseIdstGroupLevel($id_course);
     foreach ($levels as $lv => $idst) {
         Docebo::aclm()->deleteGroup($idst);
     }
     $alluser = getIDGroupAlluser($id_course);
     Docebo::aclm()->deleteGroup($alluser);
     $course_man->removeCourseRole($id_course);
     $course_man->removeCourseMenu($id_course);
     $query = "DELETE FROM %lms_courseuser WHERE idCourse = '" . (int) $id_course . "'";
     $qres = sql_query($query);
     if (!$qres) {
         return false;
     }
     //--- remove course data ---------------------------------------------------
     $query_course = "SELECT imgSponsor, img_course, img_material, img_othermaterial, course_demo, course_type, has_editions\n\t\t\tFROM %lms_course\n\t\t\tWHERE idCourse = '" . (int) $id_course . "'";
     $qres = sql_query($query_course);
     list($file_sponsor, $file_logo, $file_material, $file_othermaterial, $file_demo, $course_type, $course_edition) = sql_fetch_row($qres);
     require_once _base_ . '/lib/lib.upload.php';
     $path = '/appLms/' . Get::sett('pathcourse');
     if (substr($path, -1) != '/' && substr($path, -1) != '\\') {
         $path .= '/';
     }
     sl_open_fileoperations();
     if ($file_sponsor != '') {
         sl_unlink($path . $file_sponsor);
     }
     if ($file_logo != '') {
         sl_unlink($path . $file_logo);
     }
     if ($file_material != '') {
         sl_unlink($path . $file_material);
     }
     if ($file_othermaterial != '') {
         sl_unlink($path . $file_othermaterial);
     }
     if ($file_demo != '') {
         sl_unlink($path . $file_demo);
     }
     sl_close_fileoperations();
     //if the scs exist delete course rooms
     if ($GLOBALS['where_scs'] !== false) {
         require_once _scs_ . '/lib/lib.room.php';
         $re = deleteRoom(false, 'course', $id_course);
     }
     //--- delete classroom or editions -----------------------------------------
     if ($course_type == 'classroom') {
         require_once _lms_ . '/admin/model/ClassroomAlms.php';
         $classroom_model = new ClassroomAlms($id_course);
         $classroom = $classroom_model->classroom_man->getDateIdForCourse($id_course);
         foreach ($classroom as $id_date) {
             if (!$classroom_model->classroom_man->delDate($id_date)) {
                 return false;
             }
         }
     } elseif ($course_edition == 1) {
         require_once _lms_ . '/admin/model/EditionAlms.php';
         $edition_model = new EditionAlms($id_course);
         $editions = $edition_model->classroom_man->getEditionIdFromCourse($id_course);
         foreach ($editions as $id_edition) {
             if (!$edition_model->edition_man->delEdition($id_edition)) {
                 return false;
             }
         }
     }
     //--- end classrooms or editions -------------------------------------------
     //--- clear LOs ------------------------------------------------------------
     require_once _lms_ . '/lib/lib.module.php';
     require_once _lms_ . '/lib/lib.param.php';
     require_once _lms_ . '/class.module/track.object.php';
     $arr_lo_param = array();
     $arr_lo_track = array();
     $arr_org_access = array();
     $query = "SELECT * FROM %lms_organization WHERE idCourse = " . (int) $id_course;
     $ores = sql_query($query);
     while ($obj = sql_fetch_object($ores)) {
         $deleted = true;
         if ($obj->idResource != 0 && $obj->objectType != "") {
             $lo = createLO($obj->objectType);
             $deleted = $lo->del($obj->idResource);
             //delete learning object
         }
         if ($deleted) {
             $arr_lo_track[] = $obj->idOrg;
             $arr_org_access[] = $obj->idOrg;
             //collect org access ids
             $arr_lo_param[] = $obj->idParam;
             //collect idParams ids
         }
     }
     //delete all organizations references for the course
     $query = "DELETE FROM %lms_organization WHERE idCourse = " . (int) $id_course;
     $res = sql_query($query);
     //delete LOs trackings
     if (!empty($arr_lo_track)) {
         $track_object = new Track_Object(false, 'course_lo');
         $track_object->delIdTrackFromCommon($arr_lo_track);
     }
     //delete org accesses
     if (!empty($arr_org_access)) {
         $query = "DELETE FROM %lms_organization_access\n\t\t\t\tWHERE idOrgAccess IN (" . implode(",", $arr_org_access) . ")";
         $res = sql_query($query);
     }
     //delete lo params
     if (!empty($arr_lo_param)) {
         $query = "DELETE FROM %lms_lo_param\n\t\t\t\tWHERE idParam IN (" . implode(",", $arr_lo_param) . ")";
     }
     //--- end LOs --------------------------------------------------------------
     //--- clear coursepath references ------------------------------------------
     require_once _lms_ . '/lib/lib.coursepath.php';
     $cman = new CoursePath_Manager();
     $cman->deleteCourseFromCoursePaths($id_course);
     //--- end coursepath references --------------------------------------------
     //--- clear certificates assignments ---------------------------------------
     require_once _lms_ . '/lib/lib.certificate.php';
     $cman = new Certificate();
     $cman->deleteCourseCertificateAssignments($id_course);
     //--- end certificates assignments -----------------------------------------
     //--- clear labels ---------------------------------------------------------
     $lmodel = new LabelAlms();
     $lmodel->clearCourseLabel($id_course);
     //--- end labels -----------------------------------------------------------
     //--- clear advices --------------------------------------------------------
     require_once _lms_ . '/lib/lib.advice.php';
     $aman = new Man_Advice();
     $aman->deleteAllCourseAdvices($id_course);
     //--- end advices ----------------------------------------------------------
     //--- clear coursereports --------------------------------------------------
     require_once _lms_ . '/lib/lib.coursereport.php';
     $cman = new CourseReportManager();
     $cman->deleteAllReports($id_course);
     //--- end coursereports ----------------------------------------------------
     //--- clear competences ----------------------------------------------------
     $cmodel = new CompetencesAdm();
     $cmodel->deleteAllCourseCompetences($id_course);
     //--- end competences ------------------------------------------------------
     //--- finally delete course from courses table -----------------------------
     if (!sql_query("DELETE FROM %lms_course WHERE idCourse = '" . $id_course . "'")) {
         return false;
     }
     return true;
 }
Esempio n. 16
0
 function Track_Faq($idTrack)
 {
     $this->objectType = 'faq';
     parent::Track_Object($idTrack);
 }
Esempio n. 17
0
 function Track_Link($idTrack)
 {
     $this->objectType = 'link';
     parent::Track_Object($idTrack);
 }
Esempio n. 18
0
 function deleteTrackInfo($id_lo, $id_user)
 {
     $query = "SELECT idUser, idReference, idTrack FROM " . $this->_table . " WHERE idUser="******" AND idReference=" . (int) $id_lo . " AND objectType='test'";
     $res = sql_query($query);
     if ($res && sql_num_rows($res) > 0) {
         list($id_user, $id_lo, $id_track) = sql_fetch_row($res);
         $query_question = "SELECT q.idQuest, q.type_quest, t.type_file, t.type_class " . " FROM %lms_testquest AS q JOIN %lms_quest_type AS t " . " WHERE q.idTest = '" . $id_lo . "' AND q.type_quest = t.type_quest " . " ORDER BY q.sequence";
         $re_quest = sql_query($query_question);
         while (list($idQuest, $type_quest, $type_file, $type_class) = sql_fetch_row($re_quest)) {
             require_once _lms_ . '/modules/question/' . $type_file;
             $quest_obj = new $type_class($idQuest);
             if (!$quest_obj->deleteAnswer($id_track)) {
                 return false;
             }
         }
         $query_page = "DELETE FROM %lms_testtrack_page WHERE idTrack = '" . $id_track . "'";
         $query_quest = "DELETE FROM %lms_testtrack_quest WHERE idTrack = '" . $id_track . "'";
         if (!sql_query($query_page)) {
             return false;
         }
         if (!sql_query($query_quest)) {
             return false;
         }
         $re_update = $this->deleteTrack($id_track);
         if ($re_update) {
             $re_common = parent::deleteTrackInfo($id_lo, $id_user);
             if ($re_common) {
                 return true;
             }
         }
     }
     return false;
 }
Esempio n. 19
0
 function upfaqcat()
 {
     checkPerm('view', false, 'storage');
     $back_url = urldecode(importVar('back_url'));
     $back_coded = htmlentities(urlencode($back_url));
     $query_ins = "\r\n\tUPDATE " . $GLOBALS['prefix_lms'] . "_faq_cat\r\n\tSET title = '" . (trim($_POST['title']) == '' ? Lang::t('_NOTITLE', 'faq') : $_POST['title']) . "',\r\n\t\tdescription = '" . $_POST['description'] . "' \r\n\tWHERE idCategory = '" . (int) $_POST['idCategory'] . "'";
     if (!sql_query($query_ins)) {
         $GLOBALS['page']->add(getBackUi(def('_OPERATION_FAILURECAT', 'faq', 'lms') . getBackUi('index.php?modname=faq&op=modfaqgui&idCategory=' . (int) $_POST['idCategory'] . '&back_url=' . $back_coded, Lang::t('_BACK', 'faq', 'lms'))), 'content');
         return;
     }
     require_once $GLOBALS['where_lms'] . '/class.module/track.object.php';
     Track_Object::updateObjectTitle($_POST['idCategory'], 'faq', trim($_POST['title']) == '' ? Lang::t('_NOTITLE', 'faq') : $_POST['title']);
     Util::jump_to('index.php?modname=faq&op=modfaqgui&idCategory=' . (int) $_POST['idCategory'] . '&back_url=' . $back_coded);
 }