Esempio n. 1
0
 public function deleteAttachment($attachment)
 {
     require_once _base_ . '/lib/lib.upload.php';
     $path = _PATH_MESSAGE;
     sl_open_fileoperations();
     $re = sl_unlink($path . $attachment);
     sl_close_fileoperations();
     return $re;
 }
Esempio n. 2
0
function loadImportCourseUser2()
{
    require_once _base_ . '/lib/lib.upload.php';
    require_once $GLOBALS['where_framework'] . '/lib/lib.import.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
    require_once _base_ . '/lib/lib.table.php';
    $lang =& DoceboLanguage::CreateInstance('subscribe', 'lms');
    $back_url = 'index.php?modname=course&op=course_list';
    $acl_man =& Docebo::user()->getAclManager();
    $out =& $GLOBALS['page'];
    $out->setWorkingZone('content');
    $id_course = importVar('id_course', true, 0);
    $id_course_edition = importVar('edition', true, 0);
    $level_idst =& getCourseLevel($id_course);
    if (count($level_idst) == 0) {
        $level_idst =& DoceboCourse::createCourseLevel($id_course);
    }
    // ----------- file upload -----------------------------------------
    if ($_FILES['file_import']['name'] == '') {
        $_SESSION['last_error'] = Lang::t('_FILEUNSPECIFIED');
        Util::jump_to($back_url . '&import_result=-1');
    } else {
        $path = '/appCore/';
        $savefile = mt_rand(0, 100) . '_' . time() . '_' . $_FILES['file_import']['name'];
        if (!file_exists($GLOBALS['where_files_relative'] . $path . $savefile)) {
            sl_open_fileoperations();
            if (!sl_upload($_FILES['file_import']['tmp_name'], $path . $savefile)) {
                sl_close_fileoperations();
                $_SESSION['last_error'] = Lang::t('_ERROR_UPLOAD');
                Util::jump_to($back_url . '&import_result=-1');
            }
            sl_close_fileoperations();
        } else {
            $_SESSION['last_error'] = Lang::t('_ERROR_UPLOAD');
            Util::jump_to($back_url . '&create_result=-1');
        }
    }
    $out->add(getTitleArea($lang->def('_SUBSCRIBE')) . '<div class="std_block">');
    $separator = importVar('import_separator', false, ',');
    if ($separator == '') {
        $separator = ',';
    }
    $first_row_header = importVar('import_first_row_header', false, false);
    $import_charset = importVar('import_charset', false, 'UTF-8');
    if (trim($import_charset) === '') {
        $import_charset = 'UTF-8';
    }
    $src = new DeceboImport_SourceCSV(array('filename' => $GLOBALS['where_files_relative'] . $path . $savefile, 'separator' => $separator, 'first_row_header' => $first_row_header, 'import_charset' => $import_charset));
    $src->connect();
    $user_added = 0;
    $user_error = 0;
    $user_not_needed = 0;
    $id_user_added = array();
    $counter = 0;
    if (is_array($row = $src->get_first_row()) && !empty($row)) {
        $user_info = $acl_man->getUser(false, $row[0]);
        if ($user_info) {
            $id_user = $user_info[ACL_INFO_IDST];
            // Add in group for permission
            $acl_man->addToGroup($level_idst['3'], $id_user);
            // Add to edition group
            if ($id_course_edition > 0) {
                $group = '/lms/course_edition/' . $id_course_edition . '/subscribed';
                $group_idst = $acl_man->getGroupST($group);
                if ($group_idst === FALSE) {
                    $group_idst = $acl_man->registerGroup($group, 'all the user of a course edition', true, "course");
                }
                $acl_man->addToGroup($group_idst, $id_user);
            }
            // Add in table
            $re = sql_query("\r\n\t\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_courseuser\r\n\t\t\t( idUser, idCourse, edition_id, level, waiting, subscribed_by, date_inscr )\r\n\t\t\tVALUES\r\n\t\t\t( '" . $id_user . "', '" . $id_course . "', '" . $id_course_edition . "', '3', '0', '" . getLogUserId() . "', '" . date("Y-m-d H:i:s") . "' )\t");
            if ($re) {
                addUserToTimeTable($id_user, $id_course, $id_course_edition);
                $user_added++;
                $id_user_added[$counter]['id_user'] = $id_user;
                $id_user_added[$counter]['status'] = '_CORRECT';
            } else {
                $query = "SELECT COUNT(*)" . " FROM " . $GLOBALS['prefix_lms'] . "_courseuser" . " WHERE idUser = '******'" . " AND idCourse = '" . $id_course . "'" . " AND edition_id = '" . $id_course_edition . "'";
                list($control) = sql_fetch_row(sql_query($query));
                if ($control) {
                    $user_not_needed++;
                    $id_user_added[$counter]['id_user'] = $id_user;
                    $id_user_added[$counter]['status'] = '_NOT_NEEDED';
                } else {
                    $user_error++;
                    $id_user_added[$counter]['id_user'] = $id_user;
                    $id_user_added[$counter]['status'] = '_OPERATION_FAILURE';
                }
            }
            $counter++;
        } else {
            $user_error++;
            $id_user_added[$counter]['id_user'] = $id_user;
            $id_user_added[$counter]['status'] = '_OPERATION_FAILURE';
        }
    }
    while (is_array($row = $src->get_next_row()) && !empty($row)) {
        $user_info = $acl_man->getUser(false, $row[0]);
        if ($user_info) {
            $id_user = $user_info[ACL_INFO_IDST];
            // Add in group for permission
            $acl_man->addToGroup($level_idst['3'], $id_user);
            // Add to edition group
            if ($id_course_edition > 0) {
                $group = '/lms/course_edition/' . $id_course_edition . '/subscribed';
                $group_idst = $acl_man->getGroupST($group);
                if ($group_idst === FALSE) {
                    $group_idst = $acl_man->registerGroup($group, 'all the user of a course edition', true, "course");
                }
                $acl_man->addToGroup($group_idst, $id_user);
            }
            // Add in table
            $re = sql_query("\r\n\t\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_courseuser\r\n\t\t\t( idUser, idCourse, edition_id, level, waiting, subscribed_by, date_inscr )\r\n\t\t\tVALUES\r\n\t\t\t( '" . $id_user . "', '" . $id_course . "', '" . $id_course_edition . "', '3', '0', '" . getLogUserId() . "', '" . date("Y-m-d H:i:s") . "' )\t");
            if ($re) {
                addUserToTimeTable($id_user, $id_course, $id_course_edition);
                $user_added++;
                $id_user_added[$counter]['id_user'] = $id_user;
                $id_user_added[$counter]['status'] = '_CORRECT';
            } else {
                $query = "SELECT COUNT(*)" . " FROM " . $GLOBALS['prefix_lms'] . "_courseuser" . " WHERE idUser = '******'" . " AND idCourse = '" . $id_course . "'" . " AND edition_id = '" . $id_course_edition . "'";
                list($control) = sql_fetch_row(sql_query($query));
                if ($control) {
                    $user_not_needed++;
                    $id_user_added[$counter]['id_user'] = $id_user;
                    $id_user_added[$counter]['status'] = '_NOT_NEEDED';
                } else {
                    $user_error++;
                    $id_user_added[$counter]['id_user'] = $id_user;
                    $id_user_added[$counter]['status'] = '_OPERATION_FAILURE';
                }
            }
            $counter++;
        } else {
            $user_error++;
            $id_user_added[$counter]['id_user'] = $id_user;
            $id_user_added[$counter]['status'] = '_OPERATION_FAILURE';
        }
    }
    $src->close();
    unset($row);
    $type_h = array('align_center', 'align_center', 'align_center', 'align_center');
    $cont_h = array($lang->def('_USERNAME'), $lang->def('_LASTNAME'), $lang->def('_FIRSTNAME'), $lang->def('_INSER_STATUS'));
    $tb = new Table(false, $lang->def('_USER_SUBSCRIBED'), $lang->def('_USER_SUBSCRIBED'));
    $tb->addHead($cont_h, $type_h);
    while (list(, $id_user_added_detail) = each($id_user_added)) {
        $cont = array();
        $user_info = $acl_man->getUser($id_user_added_detail['id_user'], false);
        $cont[] = $acl_man->relativeId($user_info[ACL_INFO_USERID]);
        $cont[] = $user_info[ACL_INFO_FIRSTNAME];
        $cont[] = $user_info[ACL_INFO_LASTNAME];
        $cont[] = $lang->def($id_user_added_detail['status']);
        $tb->addBody($cont);
    }
    sl_open_fileoperations();
    sl_unlink($path . $savefile);
    sl_close_fileoperations();
    $out->add(getBackUi($back_url, $lang->def('_BACK')) . '<b>' . $lang->def('_INSERT_CORRECT') . ' : ' . '</b>' . $user_added . ' ' . '<b>' . $lang->def('_OPERATION_FAILURE') . ' : ' . '</b>' . $user_error . ' ' . '<b>' . $lang->def('_INSERT_NOT_NEEDED') . ' : ' . '</b>' . $user_not_needed . '<br/>' . '<br/>' . $tb->getTable() . '<br/>' . getBackUi($back_url, $lang->def('_BACK')) . '</div>');
}
function selSendTo()
{
    checkPerm('view');
    // [TODO] check write or mod. permissions
    // http://127.0.0.1:82/claudio/lms_cvs/appCore/index.php?modname=public_newsletter_admin&op=selsendto&id_send=1
    if (isset($_GET["id_send"]) && $_GET["id_send"] > 0) {
        $id_send = $_GET["id_send"];
    } else {
        die("Newsletter setup error.");
    }
    require_once $GLOBALS['where_lms'] . "/class.module/class.public_user_admin.php";
    $mdir = new Module_Public_User_Admin();
    require_once _base_ . '/lib/lib.preference.php';
    $adminManager = new AdminPreference();
    $admin_tree = $adminManager->getAdminTree(Docebo::user()->getIdST());
    $admin_users = $acl_man->getAllUsersFromIdst($admin_tree);
    $mdir->setUserFilter('user', $admin_users);
    $mdir->setUserFilter('group', $admin_tree);
    $out =& $GLOBALS['page'];
    $out->setWorkingZone("content");
    $lang =& DoceboLanguage::createInstance('admin_newsletter', 'framework');
    $back_url = "index.php?modname=public_newsletter_admin&amp;op=selsendto&amp;id_send=" . $id_send;
    if (isset($_POST['okselector'])) {
        $arr_selection = $mdir->getSelection($_POST);
        $send_to_idst = array();
        foreach ($arr_selection as $idstMember) {
            $arr = Docebo::aclm()->getGroupAllUser($idstMember);
            if (is_array($arr) && count($arr) > 0) {
                $send_to_idst = array_merge($arr, $send_to_idst);
                $send_to_idst = array_unique($send_to_idst);
            } else {
                $send_to_idst[] = $idstMember;
            }
            $send_to_idst = array_intersect($send_to_idst, $admin_users);
        }
        foreach ($send_to_idst as $key => $val) {
            $qtxt = "INSERT INTO " . $GLOBALS["prefix_fw"] . "_newsletter_sendto (id_send, idst, stime) ";
            $qtxt .= "VALUES ('" . (int) $id_send . "', '" . (int) $val . "', NOW())";
            $q = sql_query($qtxt);
        }
        $qtxt = "SELECT language FROM " . $GLOBALS["prefix_fw"] . "_newsletter WHERE id='" . $id_send . "'";
        $q = sql_query($qtxt);
        list($lang) = sql_fetch_row($q);
        if ($lang != _ANY_LANG_CODE) {
            $tot = count(Docebo::aclm()->getUsersIdstByLanguage($lang, $send_to_idst));
        } else {
            $tot = count($send_to_idst);
        }
        $qtxt = "UPDATE " . $GLOBALS["prefix_fw"] . "_newsletter SET tot='" . $tot . "' WHERE id='{$id_send}'";
        $q = sql_query($qtxt);
        $back_url = "index.php?modname=public_newsletter_admin&amp;op=summary&amp;tot=" . $tot . "&amp;id_send=" . $id_send;
        Util::jump_to(str_replace("&amp;", "&", $back_url));
    } else {
        if (isset($_POST['cancelselector'])) {
            $info = get_send_info($id_send);
            $file = $info['file'];
            $path = '/appCore/newsletter/';
            require_once _base_ . '/lib/lib.upload.php';
            if ($file != '') {
                sl_open_fileoperations();
                sl_unlink($path . $file);
                sl_close_fileoperations();
            }
            Util::jump_to('index.php?modname=newsletter&op=newsletter');
        } else {
            if (isset($_GET['load'])) {
                $mdir->resetSelection(array());
            }
            $url = "index.php?modname=public_newsletter_admin&amp;op=selsendto&amp;id_send=" . $id_send . "&amp;stayon=1";
            $mdir->show_user_selector = TRUE;
            $mdir->show_group_selector = TRUE;
            if (Get::sett('use_org_chart') == '1') {
                $mdir->show_orgchart_selector = TRUE;
                $mdir->show_orgchart_simple_selector = TRUE;
            } else {
                $mdir->show_orgchart_selector = FALSE;
            }
            $acl_manager =& Docebo::user()->getAclManager();
            if (defined("IN_LMS")) {
                $id_course = (int) $_SESSION['idCourse'];
                $arr_idstGroup = $acl_manager->getGroupsIdstFromBasePath('/lms/course/' . $id_course . '/subscribed/');
                $mdir->setUserFilter('group', $arr_idstGroup);
                $mdir->setGroupFilter('path', '/lms/course/' . $id_course . '/group');
                $mdir->show_orgchart_selector = FALSE;
            }
            // Exclude anonymous user!
            $mdir->setUserFilter('exclude', array($acl_manager->getAnonymousId()));
            $mdir->loadSelector($url, array(Lang::t('_NEWSLETTER', 'admin_newsletter'), Lang::t('_RECIPIENTS', 'admin_newsletter')), "", TRUE);
        }
    }
}
Esempio n. 4
0
 /**
  * @param int $id contains the resource id
  * @param string $back_url contain the back url (not used yet)
  */
 function copy($id, $back_url = NULL)
 {
     require_once _base_ . '/lib/lib.upload.php';
     //find source info
     list($title, $descr, $file) = sql_fetch_row(sql_query("\r\n\t\tSELECT title, description, path \r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_materials_lesson \r\n\t\tWHERE idLesson = '" . (int) $id . "'"));
     //create the copy filename
     $path_to_file = '/appLms/' . Get::sett('pathlesson');
     $savefile = $_SESSION['idCourse'] . '_' . mt_rand(0, 100) . '_' . time() . '_' . implode('_', array_slice(explode('_', $file), 3));
     //copy fisic file
     sl_open_fileoperations();
     if (!sl_copy($path_to_file . $file, $path_to_file . $savefile)) {
         sl_close_fileoperations();
         return false;
     }
     //insert new item
     $insertQuery = "\r\n\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_materials_lesson \r\n\t\tSET author = '" . getLogUserId() . "',\r\n\t\t\ttitle = '" . mysql_escape_string($title) . "',\r\n\t\t\tdescription = '" . mysql_escape_string($descr) . "',\r\n\t\t\tpath = '" . mysql_escape_string($savefile) . "'";
     if (!sql_query($insertQuery)) {
         sl_unlink($path_to_file . $savefile);
         sl_close_fileoperations();
         return false;
     }
     sl_close_fileoperations();
     list($idLesson) = sql_fetch_row(sql_query("SELECT LAST_INSERT_ID()"));
     return $idLesson;
 }
 public function mod()
 {
     if (!$this->permissions['mod']) {
         $this->render('invalid', array('message' => $this->_getMessage('no permission'), 'back_url' => 'index.php?r=alms/label/show'));
         return;
     }
     $id_common_label = Get::req('id_common_label', DOTY_INT, 0);
     if (isset($_POST['undo'])) {
         Util::jump_to('index.php?r=alms/label/show');
     }
     $all_languages = Docebo::langManager()->getAllLangCode();
     $res = true;
     if (isset($_POST['update'])) {
         require_once _base_ . '/lib/lib.upload.php';
         $path = '/appLms/label/';
         if (isset($_POST['del_label_image'])) {
             $file_name = $this->model->getLabelFile($id_common_label);
             if ($file_name !== '' && sl_file_exists($path . $file_name)) {
                 sl_open_fileoperations();
                 sl_unlink($path . $file_name);
                 sl_close_fileoperations();
             }
             $file_name = '';
         } else {
             $file_name = $this->model->getLabelFile($id_common_label);
         }
         if ($_FILES['label_image']['error'] == 0) {
             $extension = end(explode('.', $_FILES['label_image']['name']));
             $file_name = 'label_image_' . $id_common_label . '.' . $extension;
             sl_open_fileoperations();
             $file_name_del = $this->model->getLabelFile($id_common_label);
             if ($file_name_del !== '' && sl_file_exists($path . $file_name_del)) {
                 sl_unlink($path . $file_name_del);
             }
             sl_upload($_FILES['label_image']['tmp_name'], $path . $file_name);
             sl_close_fileoperations();
         }
         foreach ($all_languages as $lang_code) {
             $title = Get::req($lang_code . '_title', DOTY_MIXED, '');
             $description = Get::req($lang_code . '_description', DOTY_MIXED, '');
             $tmp_res = $this->model->updateLabel($id_common_label, $lang_code, $title, $description, $file_name);
             if (!$tmp_res) {
                 $res = false;
             }
         }
         if ($res) {
             Util::jump_to('index.php?r=alms/label/show&res=_ok_mod');
         }
         Util::jump_to('index.php?r=alms/label/show&err=_err_mod');
     }
     $label_info = $this->model->getLabelInfo($id_common_label);
     $params = array('model' => $this->model, 'all_languages' => $all_languages, 'label_info' => $label_info, 'id_common_label' => $id_common_label);
     $this->render('mod', $params);
 }
Esempio n. 6
0
 /**
  * delete the current user avatar
  */
 function deleteAvatarData($id_user)
 {
     require_once _base_ . '/lib/lib.upload.php';
     $user_info = $this->getUserDataNoRestriction($id_user);
     if ($user_info[ACL_INFO_AVATAR] != '') {
         if (!sl_unlink(substr($this->getPAPath(), 1) . $user_info[ACL_INFO_AVATAR])) {
             return false;
         }
         if (!$this->acl_man->updateUser($id_user, false, false, false, false, false, '', false)) {
             return false;
         }
     }
     return true;
 }
Esempio n. 7
0
 function deleteFile($id_file)
 {
     require_once _base_ . '/lib/lib.upload.php';
     require_once _base_ . '/lib/lib.user.php';
     $user_data = new DoceboUser();
     $file_info = $this->getFileInfo($id_file);
     sl_open_fileoperations();
     sl_unlink($this->getFilePath() . $file_info[MYFILE_FILE_NAME]);
     sl_close_fileoperations();
     $query = "\r\n\t\tDELETE FROM " . $this->getFilesTable() . "\r\n\t\tWHERE owner = '" . $this->id_user . "' AND id_file = '" . $id_file . "'";
     if (!$this->_query($query)) {
         return false;
     }
     $result = $user_data->updateUserUsedSpace($this->id_user);
     return true;
 }
Esempio n. 8
0
function importCode_step2()
{
    require_once _base_ . '/lib/lib.upload.php';
    require_once $GLOBALS['where_framework'] . '/lib/lib.import.php';
    require_once _base_ . '/lib/lib.table.php';
    if ($_FILES['file_import']['name'] == '') {
        Util::jump_to('index.php?modname=code&amp;op=list&result=err');
    } else {
        $path = '/appCore/';
        $savefile = mt_rand(0, 100) . '_' . time() . '_' . $_FILES['file_import']['name'];
        if (!file_exists($GLOBALS['where_files_relative'] . $path . $savefile)) {
            sl_open_fileoperations();
            if (!sl_upload($_FILES['file_import']['tmp_name'], $path . $savefile)) {
                sl_close_fileoperations();
                Util::jump_to('index.php?modname=code&amp;op=list&result=err');
            }
            sl_close_fileoperations();
        } else {
            Util::jump_to('index.php?modname=directory&amp;op=listgroup&import_result=-1');
        }
    }
    $lang =& DoceboLanguage::createInstance('code');
    $code_manager = new CodeManager();
    $id_code_group = Get::req('id_code_group', DOTY_INT, '0');
    cout(getTitleArea($lang->def('_CODE')) . '<div class="std_block">');
    $separator = Get::req('import_separator', DOTY_MIXED, ',');
    $first_row_header = isset($_POST['import_first_row_header']) ? $_POST['import_first_row_header'] == 'true' : FALSE;
    $import_charset = Get::req('import_charset', DOTY_MIXED, 'UTF-8');
    if (trim($import_charset) === '') {
        $import_charset = 'UTF-8';
    }
    $src = new DeceboImport_SourceCSV(array('filename' => $GLOBALS['where_files_relative'] . $path . $savefile, 'separator' => $separator, 'first_row_header' => $first_row_header, 'import_charset' => $import_charset));
    $src->connect();
    $code_added = array();
    $code_error = array();
    $code_present = array();
    if (is_array($row = $src->get_first_row()) && !empty($row)) {
        $code = addslashes($row[0]);
        $result = $code_manager->addCode($code, $id_code_group);
        if ($result === 'dup') {
            $code_present[] = $code;
        } elseif ($result) {
            $code_added[] = $code;
        } else {
            $code_error[] = $code;
        }
    }
    while (is_array($row = $src->get_next_row()) && !empty($row)) {
        $code = addslashes($row[0]);
        $result = $code_manager->addCode($code, $id_code_group);
        if ($result === 'dup') {
            $code_present[] = $code;
        } elseif ($result) {
            $code_added[] = $code;
        } else {
            $code_error[] = $code;
        }
    }
    $src->close();
    unset($row);
    sl_open_fileoperations();
    sl_unlink($path . $savefile);
    sl_close_fileoperations();
    cout(getBackUi('index.php?modname=code&amp;op=list', $lang->def('_BACK')) . '<br/>' . $lang->def('_CODE_ADDED') . ' : ' . count($code_added) . '<br/>' . $lang->def('_CODE_PRESENT') . ' : ' . count($code_present) . '<br/>' . $lang->def('_CODE_ERROR') . ' : ' . count($code_error) . '<br/>');
    if (count($code_present)) {
        $tb = new Table(false, $lang->def('_CODE_PRESENT'), $lang->def('_CODE_PRESENT'));
        $type_h = array('align_center');
        $cont_h = array($lang->def('_CODE'));
        $tb->setColsStyle($type_h);
        $tb->addHead($cont_h);
        foreach ($code_present as $code) {
            $cont = array();
            $cont[] = stripslashes($code);
            $tb->addBody($cont);
        }
        cout($tb->getTable());
    }
    if (count($code_error)) {
        $tb = new Table(false, $lang->def('_CODE_ERROR'), $lang->def('_CODE_ERROR'));
        $type_h = array('align_center');
        $cont_h = array($lang->def('_CODE'));
        $tb->setColsStyle($type_h);
        $tb->addHead($cont_h);
        foreach ($code_error as $code) {
            $cont = array();
            $cont[] = stripslashes($code);
            $tb->addBody($cont);
        }
        cout($tb->getTable());
    }
    cout(getBackUi('index.php?modname=code&amp;op=list', $lang->def('_BACK')) . '</div>');
}
Esempio n. 9
0
function del_item_now($id, $itemid, $type)
{
    include_once _base_ . '/lib/lib.upload.php';
    switch ($type) {
        case "news":
            $query = sql_query("DELETE FROM " . $GLOBALS["prefix_lms"] . "_prj_news WHERE id='" . $itemid . "' AND pid='" . $id . "' LIMIT 1;");
            break;
        case "todo":
            $query = sql_query("DELETE FROM " . $GLOBALS["prefix_lms"] . "_prj_todo WHERE id='" . $itemid . "' AND pid='" . $id . "' LIMIT 1;");
            break;
        case "task":
            $query = sql_query("DELETE FROM " . $GLOBALS["prefix_lms"] . "_prj_tasks WHERE id='" . $itemid . "' AND pid='" . $id . "' LIMIT 1;");
            break;
        case "file":
            $query = sql_query("SELECT * FROM " . $GLOBALS["prefix_lms"] . "_prj_files WHERE id='" . $itemid . "' AND pid='" . $id . "'");
            $row = @mysql_fetch_array($query);
            @sl_unlink(_FPATH_INTERNAL . $row["fname"]);
            $query = sql_query("DELETE FROM " . $GLOBALS["prefix_lms"] . "_prj_files WHERE id='" . $itemid . "' and pid='" . $id . "' LIMIT 1;");
            break;
    }
}
 public function import_csv()
 {
     if (!$this->permissions['subscribe_course']) {
         $this->render('invalid', array('message' => $this->_getErrorMessage('no permission'), 'back_url' => 'index.php?r=' . $this->link_course . '/show'));
         return;
     }
     require_once _base_ . '/lib/lib.form.php';
     //Step info
     $step = Get::req('step', DOTY_INT, 1);
     if (isset($_POST['next'])) {
         $step++;
     }
     if (isset($_POST['back'])) {
         $step--;
     }
     if (isset($_POST['undo'])) {
         $step = 0;
     }
     switch ($step) {
         case '0':
             Util::jump_to('index.php?r=' . $this->link_course . '/show');
             break;
         case '1':
             $course_info = $this->model->getCourseInfoForSubscription();
             $course_name = ($course_info['code'] !== '' ? '[' . $course_info['code'] . '] ' : '') . $course_info['name'];
             $params = array('table' => $tb, 'id_course' => $this->id_course, 'id_date' => $this->id_date, 'id_edition' => $this->id_edition, 'course_name' => $course_name, 'model' => $this->model);
             $this->render('import_csv_step_1', $params);
             break;
         case '2':
             require_once _lms_ . '/lib/lib.course.php';
             require_once _base_ . '/lib/lib.upload.php';
             require_once _adm_ . '/lib/lib.import.php';
             $separator = Get::req('import_separator', DOTY_MIXED, ',');
             $first_row_header = Get::req('import_first_row_header', DOTY_BOOL, false);
             $import_charset = Get::req('import_charset', DOTY_MIXED, 'UTF-8');
             $docebo_course = new DoceboCourse($this->id_course);
             $level_idst =& $docebo_course->getCourseLevel($this->id_course);
             if (count($level_idst) == 0 || $level_idst[1] == '') {
                 $level_idst =& $docebo_course->createCourseLevel($this->id_course);
             }
             $back_url = 'index.php?r=' . $this->link . '/show&id_course=' . $this->id_course . '&id_edition=' . $this->id_edition . '&id_date=' . $this->id_date;
             // ----------- file upload -----------------------------------------
             if ($_FILES['file_import']['name'] == '') {
                 $_SESSION['last_error'] = Lang::t('_FILEUNSPECIFIED');
                 jumpTo($back_url . '&err=_file_unspecified');
             } else {
                 $path = '/appCore/';
                 $savefile = mt_rand(0, 100) . '_' . time() . '_' . $_FILES['file_import']['name'];
                 if (!file_exists($GLOBALS['where_files_relative'] . $path . $savefile)) {
                     sl_open_fileoperations();
                     if (!sl_upload($_FILES['file_import']['tmp_name'], $path . $savefile)) {
                         sl_close_fileoperations();
                         $_SESSION['last_error'] = Lang::t('_ERROR_UPLOAD', 'subscribe');
                         jumpTo($back_url . '&err=_err_upload');
                     }
                     sl_close_fileoperations();
                 } else {
                     $_SESSION['last_error'] = Lang::t('_ERROR_UPLOAD', 'subscribe');
                     jumpTo($back_url . '&err=_err_upload');
                 }
             }
             $src = new DeceboImport_SourceCSV(array('filename' => $GLOBALS['where_files_relative'] . $path . $savefile, 'separator' => $separator, 'first_row_header' => $first_row_header, 'import_charset' => $import_charset));
             $src->connect();
             $user_added = 0;
             $user_error = 0;
             $user_not_needed = 0;
             $id_user_added = array();
             $counter = 0;
             $course_info = $this->model->getCourseInfoForSubscription();
             $can_subscribe = true;
             $max_num_subscribe = $course_info['max_num_subscribe'];
             $subscribe_method = $course_info['subscribe_method'];
             if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) {
                 $limited_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.limit_course_subscribe');
                 $max_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.max_course_subscribe');
                 $direct_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.direct_course_subscribe');
                 if ($limited_subscribe == 'on') {
                     $limited_subscribe = true;
                 } else {
                     $limited_subscribe = false;
                 }
                 if ($direct_subscribe == 'on') {
                     $direct_subscribe = true;
                 } else {
                     $direct_subscribe = false;
                 }
             } else {
                 $limited_subscribe = false;
                 $max_subscribe = 0;
                 $direct_subscribe = true;
             }
             if (is_array($row = $src->get_first_row()) && !empty($row)) {
                 $user_info = $this->acl_man->getUser(false, $row[0]);
                 if ($user_info) {
                     $id_user = $user_info[ACL_INFO_IDST];
                     if ($can_subscribe) {
                         require_once _lms_ . '/lib/lib.course.php';
                         $docebo_course = new DoceboCourse($this->id_course);
                         $level_idst =& $docebo_course->getCourseLevel($this->id_course);
                         if (count($level_idst) == 0 || $level_idst[1] == '') {
                             $level_idst =& $docebo_course->createCourseLevel($this->id_course);
                         }
                         if (!$direct_subscribe) {
                             $waiting = 1;
                         } else {
                             $waiting = 0;
                         }
                         if (!$limited_subscribe || $max_subscribe) {
                             //$this->acl_man->addToGroup($level_idst['3'], $id_user);
                             $this->_addToCourseGroup($level_idst['3'], $id_user);
                             if ($this->model->subscribeUser($id_user, '3', $waiting)) {
                                 $user_added++;
                                 $id_user_added[$counter]['id_user'] = $row[0];
                                 $id_user_added[$counter]['status'] = '_CORRECT';
                                 $user_subscribed[] = $id_user;
                                 $max_subscribe--;
                             } else {
                                 $query = "SELECT COUNT(*)" . " FROM " . $GLOBALS['prefix_lms'] . "_courseuser" . " WHERE idUser = '******'" . " AND idCourse = '" . $this->id_course . "'";
                                 list($control) = sql_fetch_row(sql_query($query));
                                 if ($control) {
                                     $user_not_needed++;
                                     $id_user_added[$counter]['id_user'] = $row[0];
                                     $id_user_added[$counter]['status'] = '_NOT_NEEDED';
                                 } else {
                                     $user_error++;
                                     $id_user_added[$counter]['id_user'] = $row[0];
                                     $id_user_added[$counter]['status'] = '_OPERATION_FAILURE';
                                     $this->acl_man->removeFromGroup($level_idst['3'], $id_user);
                                 }
                             }
                         }
                     }
                 } else {
                     $user_error++;
                     $id_user_added[$counter]['id_user'] = $row[0];
                     $id_user_added[$counter]['status'] = '_OPERATION_FAILURE';
                 }
                 $counter++;
             }
             while (is_array($row = $src->get_next_row()) && !empty($row)) {
                 $user_info = $this->acl_man->getUser(false, $row[0]);
                 if ($user_info) {
                     $id_user = $user_info[ACL_INFO_IDST];
                     if ($can_subscribe) {
                         require_once _lms_ . '/lib/lib.course.php';
                         $docebo_course = new DoceboCourse($this->id_course);
                         $level_idst =& $docebo_course->getCourseLevel($this->id_course);
                         if (count($level_idst) == 0 || $level_idst[1] == '') {
                             $level_idst =& $docebo_course->createCourseLevel($this->id_course);
                         }
                         if (!$direct_subscribe) {
                             $waiting = 1;
                         } else {
                             $waiting = 0;
                         }
                         if (!$limited_subscribe || $max_subscribe) {
                             //$this->acl_man->addToGroup($level_idst['3'], $id_user);
                             $this->_addToCourseGroup($level_idst['3'], $id_user);
                             if ($this->model->subscribeUser($id_user, '3', $waiting)) {
                                 $user_added++;
                                 $id_user_added[$counter]['id_user'] = $row[0];
                                 $id_user_added[$counter]['status'] = '_CORRECT';
                                 $user_subscribed[] = $id_user;
                                 $max_subscribe--;
                             } else {
                                 $query = "SELECT COUNT(*)" . " FROM " . $GLOBALS['prefix_lms'] . "_courseuser" . " WHERE idUser = '******'" . " AND idCourse = '" . $this->id_course . "'";
                                 list($control) = sql_fetch_row(sql_query($query));
                                 if ($control) {
                                     $user_not_needed++;
                                     $id_user_added[$counter]['id_user'] = $row[0];
                                     $id_user_added[$counter]['status'] = '_NOT_NEEDED';
                                 } else {
                                     $user_error++;
                                     $id_user_added[$counter]['id_user'] = $row[0];
                                     $id_user_added[$counter]['status'] = '_OPERATION_FAILURE';
                                     $this->acl_man->removeFromGroup($level_idst['3'], $id_user);
                                 }
                             }
                         }
                     }
                 } else {
                     $user_error++;
                     $id_user_added[$counter]['id_user'] = $row[0];
                     $id_user_added[$counter]['status'] = '_OPERATION_FAILURE';
                 }
                 $counter++;
             }
             $src->close();
             unset($row);
             require_once _base_ . '/lib/lib.table.php';
             $type_h = array('align_center', 'align_center', 'align_center', 'align_center');
             $cont_h = array(Lang::t('_USERNAME', 'subscribe'), Lang::t('_LASTNAME', 'subscribe'), Lang::t('_FIRSTNAME', 'subscribe'), Lang::t('_INSER_STATUS', 'subscribe'));
             $tb = new Table(false, Lang::t('_USER_SUBSCRIBED', 'subscribe'), Lang::t('_USER_SUBSCRIBED', 'subscribe'));
             $tb->addHead($cont_h, $type_h);
             while (list(, $id_user_added_detail) = each($id_user_added)) {
                 $cont = array();
                 $user_info = $this->acl_man->getUser(false, $id_user_added_detail['id_user']);
                 $cont[] = $this->acl_man->relativeId($user_info[ACL_INFO_USERID]);
                 $cont[] = $user_info[ACL_INFO_FIRSTNAME];
                 $cont[] = $user_info[ACL_INFO_LASTNAME];
                 $cont[] = Lang::t($id_user_added_detail['status'], 'subscribe');
                 $tb->addBody($cont);
             }
             sl_open_fileoperations();
             sl_unlink($GLOBALS['where_files_relative'] . $path . $savefile);
             sl_close_fileoperations();
             $course_info = $this->model->getCourseInfoForSubscription();
             $course_name = ($course_info['code'] !== '' ? '[' . $course_info['code'] . '] ' : '') . $course_info['name'];
             $params = array('table' => $tb, 'id_course' => $this->id_course, 'id_date' => $this->id_date, 'id_edition' => $this->id_edition, 'course_name' => $course_name, 'back_link' => getBackUi('index.php?r=' . $this->link . '/show&id_course=' . $this->id_course . '&id_edition=' . $this->id_edition . '&id_date=' . $this->id_date, Lang::t('_BACK', 'subscribe')));
             $this->render('import_csv_step_2', $params);
             break;
     }
 }
Esempio n. 11
0
 /**
  * execute the close of the connection 
  **/
 function close()
 {
     if ($this->filehandle !== NULL) {
         if (!@fclose($this->filehandle)) {
             return FALSE;
         }
         if ($this->is_writeonly()) {
             rename($this->curr_file, DOCEBOIMPORT_BASEDIR . date('Ymd') . basename($this->curr_file));
         } else {
             if (file_exists(DOCEBOIMPORT_BASEDIR . 'processed' . basename($this->curr_file))) {
                 require_once _base_ . '/lib/lib.upload.php';
                 sl_unlink(DOCEBOIMPORT_BASEDIR . 'processed' . basename($this->curr_file));
                 rename($this->curr_file, DOCEBOIMPORT_BASEDIR . 'processed' . basename($this->curr_file));
             } else {
                 rename($this->curr_file, DOCEBOIMPORT_BASEDIR . 'processed' . basename($this->curr_file));
             }
         }
     }
     $this->filehandle = NULL;
     $this->row_index = 0;
     return TRUE;
 }
Esempio n. 12
0
 function deleteFile($id_file)
 {
     require_once _base_ . '/lib/lib.upload.php';
     $old_file = sql_fetch_row($this->getFileInfo($id_file));
     sl_open_fileoperations();
     sl_unlink($this->getFilePath() . $old_file[LR_FILE_NAME]);
     sl_close_fileoperations();
     $query = "" . " DELETE FROM " . $this->_tableFile() . " " . " WHERE id_author = " . (int) $old_file[LR_FILE_AUTHOR] . " " . " \t\tAND id_file = " . (int) $id_file . "";
     if (!sql_query($query)) {
         return false;
     }
     return true;
 }
Esempio n. 13
0
 function delete_file($name)
 {
     $path = '/common/comment/';
     require_once _base_ . '/lib/lib.upload.php';
     if ($name != '') {
         return sl_unlink($path . $name);
     }
 }
Esempio n. 14
0
function uploadImageWitouthResize($tmp_pathfile, $dst_pathfile)
{
    sl_unlink($dst_pathfile);
    if (sl_upload($tmp_pathfile, $dst_pathfile)) {
        return 0;
    }
    return -2;
}
Esempio n. 15
0
 /**
  * delete the old answer
  * 
  * @param  int		$id_track	the relative id_track
  * 
  * @return bool	true if success false otherwise
  * 
  * @access public
  * @author Fabio Pirovano (fabio@docebo.com)
  */
 function deleteAnswer($id_track)
 {
     require_once _base_ . '/lib/lib.upload.php';
     list($file_path) = sql_fetch_row(sql_query("\r\n\t\tSELECT more_info \r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_testtrack_answer \r\n\t\tWHERE idTrack = '" . (int) $id_track . "' AND \r\n\t\t\tidQuest = '" . $this->id . "'"));
     $path = '/appLms/' . Get::sett('pathtest');
     sl_open_fileoperations();
     sl_unlink($path . $file_path);
     sl_close_fileoperations();
     return sql_query("\r\n\t\tDELETE FROM " . $GLOBALS['prefix_lms'] . "_testtrack_answer \r\n\t\tWHERE idTrack = '" . (int) $id_track . "' AND \r\n\t\t\tidQuest = '" . $this->id . "'");
 }
Esempio n. 16
0
function delete_file($name)
{
    require_once _base_ . '/lib/lib.upload.php';
    $path = '/appLms/' . Get::sett('pathforum');
    if ($name != '') {
        return sl_unlink($path . $name);
    }
}
Esempio n. 17
0
function del_report_certificate()
{
    checkPerm('view');
    require_once _base_ . '/lib/lib.form.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.certificate.php';
    $certificate = new Certificate();
    $form = new Form();
    $lang =& DoceboLanguage::createInstance('certificate', 'lms');
    $id_certificate = importVar('certificate_id', true, 0);
    $id_course = importVar('course_id', true, 0);
    $id_user = importVar('user_id', true, 0);
    $certificate_info = array();
    $certificate_info = $certificate->getCertificateInfo($id_certificate);
    $c_infos = $certificate->getInfoForCourseCertificate($id_course, $id_certificate, $id_user);
    $certificate_info = current($c_infos);
    if (Get::req('confirm_del_report_certificate', DOTY_INT, 0) == 1 || isset($_GET['confirm']) && $_GET['confirm'] == 1) {
        require_once _base_ . '/lib/lib.upload.php';
        $path = '/appLms/certificate/';
        $deletion_result = true;
        if ($certificate_info[CERT_NAME] != '') {
            $deletion_result = sl_unlink($path . $certificate_info[ASSIGN_CERT_FILE]);
        }
        if ($deletion_result) {
            $deletion_result = $certificate->delCertificateForUserInCourse($id_certificate, $id_user, $id_course);
            if ($deletion_result) {
                Util::jump_to('index.php?modname=pcertificate&amp;op=view_report_certificate&id_certificate=' . $id_certificate . '&id_course=' . $id_course . '&deletion=1');
            } else {
                Util::jump_to('index.php?modname=pcertificate&amp;op=view_report_certificate&id_certificate=' . $id_certificate . '&id_course=' . $id_course . '&deletion=2');
            }
        } else {
            Util::jump_to('index.php?modname=pcertificate&amp;op=view_report_certificate&id_certificate=' . $id_certificate . '&id_course=' . $id_course . '&deletion=3');
        }
    } elseif (isset($_POST['undo_del_report_certificate'])) {
        Util::jump_to('index.php?modname=pcertificate&amp;op=view_report_certificate&id_certificate=' . $id_certificate . '&id_course=' . $id_course);
    } else {
        $GLOBALS['page']->add(getTitleArea($lang->def('_VIEW_REPORT_DELETION'), 'certificate') . '<div class="std_block">' . $form->openForm('del_certificate', 'index.php?modname=pcertificate&amp;op=del_report_certificate&amp;certificate_id=' . $id_certificate . '&amp;course_id=' . $id_course . '&amp;user_id=' . $id_user) . $form->getHidden('id_certificate', 'id_certificate', $id_certificate) . getDeleteUi($lang->def('_AREYOUSURE'), '<span>' . $lang->def('_NAME') . ' : </span>' . $certificate_info[$id_certificate][CERT_NAME] . '<br />' . '<span>' . $lang->def('_DESCRIPTION') . ' : </span>' . $certificate_info[$id_certificate][CERT_DESCR], false, 'confirm_del_report_certificate', 'undo_del_report_certificate') . $form->closeForm() . '</div>', 'content');
    }
}
Esempio n. 18
0
 function delCurriculum($id_portfolio, $id_user)
 {
     $sel_query = "\r\n\t\tSELECT curriculum_file \r\n\t\tFROM " . $this->getTableCurriculum() . " \r\n\t\tWHERE id_portfolio = '" . $id_portfolio . "' \r\n\t\t\tAND id_user = '******' ";
     if (!($re_curriculum = $this->_query($sel_query))) {
         return false;
     }
     list($old_curriculum_file) = sql_fetch_row($re_curriculum);
     sl_unlink($old_curriculum_file);
     $query = "\r\n\t\tDELETE FROM " . $this->getTableCurriculum() . " \r\n\t\tWHERE id_portfolio = '" . $id_portfolio . "' \r\n\t\t\tAND id_user = '******'";
     if (!$this->_query($query)) {
         return false;
     }
     return true;
 }
Esempio n. 19
0
function delReleased()
{
    checkPerm('mod');
    require_once _base_ . '/lib/lib.form.php';
    require_once _base_ . '/lib/lib.upload.php';
    $id_certificate = importVar('id_certificate', true, 0);
    $id_meta = importVar('idmeta', true, 0);
    $id_user = importVar('iduser', true, 0);
    $lang =& DoceboLanguage::createInstance('certificate', 'lms');
    $acl_man =& Docebo::user()->getAclManager();
    if (Get::req('confirm', DOTY_INT, 0) == 1) {
        $query = "SELECT cert_file" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_assign" . " WHERE idUser = '******'" . " AND idMetaCertificate = '" . $id_meta . "'";
        list($cert_file) = sql_fetch_row(sql_query($query));
        $path = '/appLms/certificate/';
        sl_open_fileoperations();
        $res = sl_unlink($path . $cert_file);
        sl_close_fileoperations();
        if (!$res) {
            Util::jump_to('index.php?modname=meta_certificate&op=create&id_certificate=' . $id_certificate . '&result=err_del_cert');
        }
        $query = "DELETE FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_assign" . " WHERE idUser = '******'" . " AND idMetaCertificate = '" . $id_meta . "'";
        if (!sql_query($query)) {
            Util::jump_to('index.php?modname=meta_certificate&op=create&id_certificate=' . $id_certificate . '&result=err_del_cert');
        } else {
            Util::jump_to('index.php?modname=meta_certificate&op=create&id_certificate=' . $id_certificate . '&result=ok');
        }
    } else {
        list($name, $descr) = sql_fetch_row(sql_query("\r\n\t\tSELECT name, description\r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_certificate\r\n\t\tWHERE id_certificate = '" . $id_certificate . "'"));
        $user_info = $acl_man->getUser($id_user, false);
        $user = $user_info[ACL_INFO_LASTNAME] . ' ' . $user_info[ACL_INFO_FIRSTNAME] . ' (' . $acl_man->relativeId($user_info[ACL_INFO_USERID]) . ')';
        $form = new Form();
        $page_title = array('index.php?modname=meta_certificate&amp;op=meta_certificate' => $lang->def('_TITLE_CERTIFICATE'), $lang->def('_DEL_RELEASED'));
        $GLOBALS['page']->add(getTitleArea($page_title, 'certificate') . '<div class="std_block">' . $form->openForm('del_certificate', 'index.php?modname=meta_certificate&amp;op=del_released') . $form->getHidden('id_certificate', 'id_certificate', $id_certificate) . $form->getHidden('idmeta', 'idmeta', $id_meta) . $form->getHidden('iduser', 'iduser', $id_user) . getDeleteUi($lang->def('_AREYOUSURE'), '<span>' . $lang->def('_NAME') . ' : </span>' . $name . '<br />' . '<span>' . $lang->def('_DESCRIPTION') . ' : </span>' . $descr . '<br />' . '<span>' . $lang->def('_USER') . ' : </span>' . $user, false, 'confirm', 'undo') . $form->closeForm() . '</div>', 'content');
    }
}
Esempio n. 20
0
 function remfiles()
 {
     checkPerm('mod');
     $lang =& DoceboLanguage::createInstance('course');
     require_once _base_ . '/lib/lib.upload.php';
     if (isset($_GET['confirm']) && $_GET['confirm'] == '1') {
         list($old_file) = sql_fetch_row(sql_query("\r\n\t\tSELECT path \r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_course_file \r\n\t\tWHERE id_course='" . $_SESSION['idCourse'] . "' AND id_file='" . (int) $_GET['id_file'] . "'"));
         $size = Get::file_size($GLOBALS['where_files_relative'] . _PATH_COURSE . $old_file);
         if (!sl_unlink(_PATH_COURSE . $old_file)) {
             $GLOBALS['page']->add(getErrorUi($lang->def('_OPERATION_FAILURE')));
             return;
         }
         $GLOBALS['course_descriptor']->subFileToUsedSpace(false, $size);
         if (!sql_query("\r\n\t\tDELETE FROM " . $GLOBALS['prefix_lms'] . "_course_file \r\n\t\tWHERE id_course = '" . (int) $_SESSION['idCourse'] . "' AND id_file = '" . (int) $_GET['id_file'] . "'")) {
             $GLOBALS['page']->add(getErrorUi($lang->def('_OPERATION_FAILURE')));
             return;
         }
         Util::jump_to('index.php?modname=course&op=infocourse');
     } else {
         list($title, $file) = sql_fetch_row(sql_query("\r\n\t\tSELECT title, path \r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_course_file \r\n\t\tWHERE id_course = '" . (int) $_SESSION['idCourse'] . "' AND id_file = '" . (int) $_GET['id_file'] . "'"));
         //request erase confirm
         $GLOBALS['page']->add(getTitleArea(array('index.php?modname=course&amp;op=infocourse' => $lang->def('_INFO'), $lang->def('_DEL')), 'infocourse') . '<div class="std_block">' . getDeleteUi($lang->def('_AREYOUSURE'), '<img src="' . getPathImage('fw') . mimeDetect($file) . '" alt="mime-type" /> ' . $title, true, 'index.php?modname=course&amp;op=remfiles&amp;id_file=' . (int) $_GET['id_file'] . '&amp;confirm=1', 'index.php?modname=course&amp;op=infocourse') . '</div>', 'content');
     }
 }
Esempio n. 21
0
function removeCourseEdition($id_course_edition)
{
    require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
    $query_course_edition = "\r\n\tSELECT img_material,img_othermaterial,idCourse\r\n\tFROM " . $GLOBALS['prefix_lms'] . "_course_edition\r\n\tWHERE idCourseEdition = '" . $id_course_edition . "'";
    $res = sql_query($query_course_edition);
    $course_ed_info = mysql_fetch_array($res);
    $old_material = $course_ed_info["img_material"];
    $old_othermaterial = $course_ed_info["img_othermaterial"];
    $id_course = $course_ed_info["idCourse"];
    require_once _base_ . '/lib/lib.upload.php';
    $path = '/appLms/' . Get::sett('pathcourse');
    if (substr($path, -1) != '/' && substr($path, -1) != '\\') {
        $path = $path . '/';
    }
    sl_open_fileoperations();
    if ($old_material != '') {
        if (!sl_unlink($path . $old_material)) {
            return false;
        }
    }
    if ($old_othermaterial != '') {
        if (!sl_unlink($path . $old_othermaterial)) {
            return false;
        }
    }
    sl_close_fileoperations();
    if (!sql_query("DELETE FROM " . $GLOBALS['prefix_lms'] . "_course_edition WHERE idCourseEdition = '{$id_course_edition}'")) {
        return false;
    }
    $query_control = "SELECT idUser" . " FROM " . $GLOBALS['prefix_lms'] . "_courseuser" . " WHERE edition_id <> 0" . " AND edition_id <> {$id_course_edition}" . " AND idUser IN " . " (" . " SELECT idUser" . " FROM " . $GLOBALS['prefix_lms'] . "_courseuser" . " WHERE edition_id = '" . $id_course_edition . "'" . " )";
    $result_control = sql_fetch_row($query_control);
    $array_user_to_delete = array();
    $array_idst_group = array();
    if (mysql_num_rows($result_control)) {
        $array_user = array();
        while (list($id_user) = sql_fetch_row($result_control)) {
            $array_user[] = $id_user;
        }
        $query_user_to_delet = "SELECT idUser" . " FROM " . $GLOBALS['prefix_lms'] . "_courseuser" . " WHERE edition_id = '" . $id_course_edition . "'" . " AND idUser NOT IN (" . implode(', ', $array_user) . ")";
        $result_user_to_delet = sql_query($query_user_to_delet);
        while (list($id_user) = sql_fetch_row($result_user_to_delet)) {
            $array_user_to_delete[] = $id_user;
        }
    } else {
        $query_user = "******" . " FROM " . $GLOBALS['prefix_lms'] . "_courseuser" . " WHERE edition_id = '" . $id_course_edition . "'";
        $result_user = sql_query($query_user);
        while (list($id_user) = sql_fetch_row($result_user)) {
            $array_user_to_delete[] = $id_user;
        }
    }
    $query_group = "SELECT idst" . " FROM " . $GLOBALS['prefix_fw'] . "_group" . " WHERE groupid LIKE '%/lms/course/" . $id_course . "/%'";
    $result_group = sql_query($query_group);
    while (list($id_group) = sql_fetch_row($result_group)) {
        $array_idst_group[] = $id_group;
    }
    $query_delete = "DELETE FROM " . $GLOBALS['prefix_fw'] . "_group_member" . " WHERE idst IN (" . implode(', ', $array_idst_group) . ")" . " AND idstMember IN (" . implode(', ', $array_user_to_delete) . ")";
    if (!sql_query($query_delete)) {
        return false;
    }
    if (!sql_query("DELETE FROM " . $GLOBALS['prefix_lms'] . "_courseuser WHERE edition_id = '{$id_course_edition}' AND idCourse = '{$id_course}'")) {
        return false;
    }
    $acl_manager =& Docebo::user()->getAclManager();
    $group = '/lms/course_edition/' . $id_course_edition . '/subscribed';
    $group_idst = $acl_manager->getGroupST($group);
    $acl_manager->deleteGroup($group_idst);
    return true;
}
Esempio n. 22
0
function insitem()
{
    //checkPerm( 'view', FALSE, 'storage' );
    require_once _base_ . '/lib/lib.upload.php';
    require_once _base_ . '/addons/pclzip/pclzip.lib.php';
    require_once dirname(__FILE__) . '/RendererDb.php';
    require_once dirname(__FILE__) . '/CPManager.php';
    $back_url = urldecode($_POST['back_url']);
    // there is a file?
    if ($_FILES['attach']['name'] == '') {
        $_SESSION['last_error'] = _FILEUNSPECIFIED;
        Util::jump_to('' . $back_url . '&create_result=0');
    }
    $path = str_replace('\\', '/', '/appLms/' . Get::sett('pathscorm'));
    $savefile = getLogUserId() . '_' . rand(0, 100) . '_' . time() . '_' . $_FILES['attach']['name'];
    if (!file_exists($GLOBALS['where_files_relative'] . $path . $savefile)) {
        sl_open_fileoperations();
        if (!sl_upload($_FILES['attach']['tmp_name'], $path . $savefile)) {
            //if( !move_uploaded_file($_FILES['attach']['tmp_name'], $GLOBALS['where_files_relative'].$path.$savefile ) ) {
            sl_close_fileoperations();
            $_SESSION['last_error'] = _ERROR_UPLOAD;
            Util::jump_to('' . $back_url . '&create_result=0');
        }
    } else {
        sl_close_fileoperations();
        $_SESSION['last_error'] = _ERROR_UPLOAD;
        Util::jump_to('' . $back_url . '&create_result=0');
    }
    // compute filepath
    $filepath = $path . $savefile . STRPOSTCONTENT;
    // extract zip file
    $zip = new PclZip($path . $savefile);
    // check disk quota --------------------------------------------------
    if (isset($_SESSION['idCourse']) && defined("LMS")) {
        $zip_content = $zip->listContent();
        $zip_extracted_size = 0;
        while (list(, $file_info) = each($zip_content)) {
            $zip_extracted_size += $file_info['size'];
        }
        $quota = $GLOBALS['course_descriptor']->getQuotaLimit();
        $used = $GLOBALS['course_descriptor']->getUsedSpace();
        if (Util::exceed_quota(false, $quota, $used, $zip_extracted_size)) {
            sl_unlink($path . $savefile);
            $_SESSION['last_error'] = Lang::t('_QUOTA_EXCEDED');
            Util::jump_to('' . $back_url . '&create_result=0');
        }
        $GLOBALS['course_descriptor']->addFileToUsedSpace(false, $zip_extracted_size);
    }
    // extract zip ------------------------------------------------------
    $zip->extract(PCLZIP_OPT_PATH, $filepath);
    if ($zip->errorCode() != PCLZIP_ERR_NO_ERROR && $zip->errorCode() != 1) {
        sl_unlink($path . $savefile);
        $_SESSION['last_error'] = _ERROR_UPLOAD;
        sl_close_fileoperations();
        Util::jump_to('' . $back_url . '&create_result=0');
    }
    /* remove zip file */
    sl_unlink($path . $savefile);
    sl_close_fileoperations();
    $cpm = new CPManager();
    // try to open content package
    if (!$cpm->Open($GLOBALS['where_files_relative'] . $filepath)) {
        $_SESSION['last_error'] = 'Error: ' . $cpm->errText . ' [' . $cpm->errCode . ']';
        Util::jump_to('' . $back_url . '&create_result=0');
    }
    // and parse the manifest
    if (!$cpm->ParseManifest()) {
        $_SESSION['last_error'] = 'Error: ' . $cpm->errText . ' [' . $cpm->errCode . ']';
        Util::jump_to('' . $back_url . '&create_result=0');
    }
    // create entry in content package table
    $query = "INSERT INTO " . $GLOBALS['prefix_lms'] . "_scorm_package" . " (idpackage,idProg,path,defaultOrg,idUser,scormVersion) VALUES" . " ('" . addslashes($cpm->identifier) . "','0','" . $savefile . STRPOSTCONTENT . "','" . addslashes($cpm->defaultOrg) . "','" . (int) getLogUserId() . "','" . $cpm->scorm_version . "')";
    if (!($result = sql_query($query))) {
        $_SESSION['last_error'] = _OPERATION_FAILURE;
        Util::jump_to('' . $back_url . '&create_result=0');
    }
    $idscorm_package = mysql_insert_id();
    // create the n entries in resources table
    for ($i = 0; $i < $cpm->GetResourceNumber(); $i++) {
        $info = $cpm->GetResourceInfo($cpm->GetResourceIdentifier($i));
        $query = "INSERT INTO " . $GLOBALS['prefix_lms'] . "_scorm_resources (idsco,idscorm_package,scormtype,href)" . " VALUES ('" . addslashes($info['identifier']) . "','" . (int) $idscorm_package . "','" . $info['scormtype'] . "','" . addslashes($info['href']) . "')";
        $result = sql_query($query);
        if (!$result) {
            $_SESSION['last_error'] = _OPERATION_FAILURE;
            Util::jump_to('' . $back_url . '&create_result=0');
        } else {
            if (mysql_affected_rows() == 0) {
                $_SESSION['last_error'] = _OPERATION_FAILURE;
                Util::jump_to('' . $back_url . '&create_result=0');
            }
        }
    }
    $rdb = new RendererDb($GLOBALS['dbConn'], $GLOBALS['prefix_lms'], $idscorm_package);
    $orgElems = $cpm->orgElems;
    // save all organizations
    for ($iOrg = 0; $iOrg < $orgElems->getLength(); $iOrg++) {
        $org = $orgElems->item($iOrg);
        $cpm->RenderOrganization($org->getAttribute('identifier'), $rdb);
    }
    if ($_POST['lesson_resources'] == 'import' || $cpm->defaultOrg == '-resource-') {
        // save flat organization with resources
        $cpm->RenderOrganization('-resource-', $rdb);
    }
    $so = new Scorm_Organization($cpm->defaultOrg, $idscorm_package, $GLOBALS['dbConn']);
    if ($so->err_code > 0) {
        $_SESSION['last_error'] = 'Error: ' . $so->getErrorText() . ' [' . $so->getErrorCode() . ']';
        Util::jump_to('' . $back_url . '&create_result=0');
    } else {
        //Util::jump_to( ''.$back_url.'&id_lo='.$so->idscorm_organization.'&create_result=1' );
        Util::jump_to('' . $back_url . '&id_lo=' . $idscorm_package . '&create_result=2');
    }
}
Esempio n. 23
0
 public function delLabel($id_common_label)
 {
     if (!$this->toggleLabelAssociation($id_common_label)) {
         return false;
     }
     $file_name = $this->getLabelFile($id_common_label);
     $path = '/appLms/label/';
     require_once _base_ . '/lib/lib.upload.php';
     if ($file_name !== '' && sl_file_exists($path . $file_name)) {
         sl_open_fileoperations();
         sl_unlink($path . $file_name);
         sl_close_fileoperations();
     }
     $query = "DELETE FROM %lms_label" . " WHERE id_common_label = " . (int) $id_common_label;
     return sql_query($query);
 }
Esempio n. 24
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. 25
0
 /**
  * store the value inserted by a user into the database, if a entry exists it will be overwrite
  *
  * @param	int		$id_user 		the user
  * @param	int		$no_overwrite 	if a entry exists do not overwrite it
  *
  * @return 	bool 	true if operation success false otherwise
  *
  * @access public
  */
 function store($id_user, $no_overwrite)
 {
     require_once _base_ . '/lib/lib.upload.php';
     $path = '/appCore/field/';
     $file = '';
     sl_open_fileoperations();
     if (isset($_FILES['field_' . $this->getFieldType()]['tmp_name'][$this->id_common]) && $_FILES['field_' . $this->getFieldType()]['tmp_name'][$this->id_common] != '') {
         $file = $id_user . '_' . $this->id_common . '_' . time() . '_' . $_FILES['field_' . $this->getFieldType()]['name'][$this->id_common];
         if (!sl_upload($_FILES['field_' . $this->getFieldType()]['tmp_name'][$this->id_common], $path . $file)) {
             $error = 1;
             $file = '';
         }
     }
     sl_close_fileoperations();
     if (empty($_FILES['field_' . $this->getFieldType()]['name'][$this->id_common])) {
         return true;
     }
     $re_entry = sql_query("\r\n\t\tSELECT user_entry\r\n\t\tFROM " . $this->_getUserEntryTable() . "\r\n\t\tWHERE id_user = '******' AND\r\n\t\t\tid_common = '" . (int) $this->id_common . "' AND\r\n\t\t\tid_common_son = '0'");
     $some_entry = mysql_num_rows($re_entry);
     list($old_file) = sql_fetch_row($re_entry);
     if ($some_entry) {
         if ($no_overwrite) {
             return true;
         }
         sl_unlink($path . $old_file);
         if (!sql_query("\r\n\t\t\tUPDATE " . $this->_getUserEntryTable() . "\r\n\t\t\tSET user_entry = '" . addslashes($file) . "'\r\n\t\t\tWHERE id_user = '******' AND\r\n\t\t\tid_common = '" . (int) $this->id_common . "' AND\r\n\t\t\tid_common_son = '0'")) {
             return false;
         }
     } else {
         if (!sql_query("\r\n\t\t\tINSERT INTO " . $this->_getUserEntryTable() . "\r\n\t\t\t( id_user, id_common, id_common_son, user_entry ) VALUES\r\n\t\t\t(\t'" . (int) $id_user . "',\r\n\t\t\t\t'" . (int) $this->id_common . "',\r\n\t\t\t\t'0',\r\n\t\t\t\t'" . $file . "')")) {
             return false;
         }
     }
     return true;
 }
Esempio n. 26
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');
 }