Exemple #1
0
 public function __construct($userId = null, $courseId = null, $database = null)
 {
     $this->userId = $userId ? $userId : claro_get_current_user_id();
     $this->courseId = $courseId ? $courseId : claro_get_current_course_id();
     $this->database = $database ? $database : Claroline::getDatabase();
     $this->tbl = array_merge(get_module_main_tbl(array('rel_course_user')), get_module_course_tbl(array('group_team', 'group_rel_team_user')));
 }
 public function __construct($courseId)
 {
     $this->courseId = $courseId;
     $courseCode = ClaroCourse::getCodeFromId($this->courseId);
     $tbl_mdb_names = claro_sql_get_main_tbl();
     $tbl_rel_course_portlet = $tbl_mdb_names['rel_course_portlet'];
     $sql = "SELECT id, courseId, rank, label, visible\n                FROM `{$tbl_rel_course_portlet}`\n                WHERE `courseId` = {$this->courseId}\n                ORDER BY `rank` ASC";
     $result = Claroline::getDatabase()->query($sql);
     foreach ($result as $portletInfos) {
         // Require the proper portlet class
         $portletPath = get_module_path($portletInfos['label']) . '/connector/coursehomepage.cnr.php';
         $portletName = $portletInfos['label'] . '_Portlet';
         if (file_exists($portletPath)) {
             require_once $portletPath;
         } else {
             echo "Le fichier {$portletPath} est introuvable<br/>";
         }
         if (class_exists($portletName)) {
             $portlet = new $portletName($portletInfos['id'], $courseCode, $portletInfos['courseId'], $portletInfos['rank'], $portletInfos['label'], $portletInfos['visible']);
             $this->portlets[] = $portlet;
         } else {
             echo "Can't find the class {$portletName}_portlet<br/>";
             return false;
         }
     }
 }
Exemple #3
0
 public function __construct($assignement, $courseId = null, $database = null)
 {
     $this->database = $database ? $database : Claroline::getDatabase();
     $this->assignement = $assignement;
     $this->courseId = $courseId ? $courseId : claro_get_current_course_id();
     $this->tbl = array_merge(get_module_main_tbl(array('rel_course_user', 'user')), get_module_course_tbl(array('wrk_submission', 'group_team'), $this->courseId));
     $this->submissionTitleList = array();
 }
 public function __construct($courseId, $database = null)
 {
     $this->database = $database ? $database : Claroline::getDatabase();
     $tbl_cdb_names = get_module_course_tbl(array('qwz_exercise', 'qwz_tracking', 'qwz_tracking_questions', 'qwz_tracking_answers'), $courseId);
     $this->tbl_qwz_tracking = $tbl_cdb_names['qwz_tracking'];
     $this->tbl_qwz_tracking_questions = $tbl_cdb_names['qwz_tracking_questions'];
     $this->tbl_qwz_tracking_answers = $tbl_cdb_names['qwz_tracking_answers'];
 }
 public function __construct($courseCode)
 {
     $this->courseCode = $courseCode;
     $tbl_cdb_names = claro_sql_get_course_tbl(claro_get_course_db_name_glued($this->courseCode));
     $tblToolIntro = $tbl_cdb_names['tool_intro'];
     $sql = "SELECT id, tool_id, title, display_date,\n                content, rank, visibility\n                FROM `{$tblToolIntro}`\n                ORDER BY rank ASC";
     $this->toolIntroductions = Claroline::getDatabase()->query($sql);
 }
 public function __construct($courseId)
 {
     $this->courseId = $courseId;
     $courseCode = ClaroCourse::getCodeFromId($this->courseId);
     $tbl_mdb_names = claro_sql_get_main_tbl();
     $tbl_rel_course_portlet = $tbl_mdb_names['rel_course_portlet'];
     $sql = "SELECT id, courseId, rank, label, visible\n                FROM `{$tbl_rel_course_portlet}`\n                WHERE `courseId` = {$this->courseId}\n                ORDER BY `rank` ASC";
     $this->portlets = Claroline::getDatabase()->query($sql);
 }
Exemple #7
0
 public function __construct($type = 'COURSE', $database = null)
 {
     if (!$database) {
         $this->database = Claroline::getDatabase();
         $this->type = $type;
     } else {
         $this->database = $database;
         $this->type = $type;
     }
 }
Exemple #8
0
 public function getResourceList(ResourceLocator $locator)
 {
     $tbl = get_module_course_tbl(array('calendar_event'), $locator->getCourseId());
     $sql = "SELECT `id`, `titre`, `day`, `visibility`\n" . "FROM `{$tbl['calendar_event']}`";
     $res = Claroline::getDatabase()->query($sql);
     $resourceList = new LinkerResourceIterator();
     foreach ($res as $event) {
         $eventLoc = new ClarolineResourceLocator($locator->getCourseId(), 'CLCAL', (int) $event['id']);
         $eventResource = new LinkerResource(empty($event['titre']) ? $event['day'] : $event['titre'], $eventLoc, true, $event['visibility'] == 'HIDE' ? false : true, false);
         $resourceList->addResource($eventResource);
     }
     return $resourceList;
 }
Exemple #9
0
 public function getResourceList(ResourceLocator $locator)
 {
     $tbl = get_module_course_tbl(array('announcement'), $locator->getCourseId());
     $sql = "SELECT `id`, `title`, `visibility`\n" . "FROM `{$tbl['announcement']}`";
     $res = Claroline::getDatabase()->query($sql);
     $resourceList = new LinkerResourceIterator();
     foreach ($res as $annoucement) {
         $annoucementLoc = new ClarolineResourceLocator($locator->getCourseId(), 'CLANN', (int) $annoucement['id']);
         $annoucementResource = new LinkerResource(empty($annoucement['title']) ? get_lang('Untitled') : $annoucement['title'], $annoucementLoc, true, $annoucement['visibility'] == 'HIDE' ? false : true, false);
         $resourceList->addResource($annoucementResource);
     }
     return $resourceList;
 }
Exemple #10
0
 public function addPortlet($label, $name, $rank = null, $visible = true)
 {
     if (Claroline::getDatabase()->query("SELECT `label` FROM `{$this->tblDesktopPortlet}` WHERE `label` = '" . claro_sql_escape($label) . "'")->numRows()) {
         return false;
     }
     $sql = "SELECT MAX(rank) FROM  `" . $this->tblDesktopPortlet . "`";
     $maxRank = claro_sql_query_get_single_value($sql);
     $sqlRank = empty($rank) ? $maxRank + 1 : (int) $rank;
     $sqlVisibility = $visible ? "visible" : "invisible";
     // insert
     $sql = "INSERT INTO `" . $this->tblDesktopPortlet . "`\n                SET `label` = '" . claro_sql_escape($label) . "',\n                    `name` = '" . claro_sql_escape($name) . "',\n                    `visibility` = '" . $sqlVisibility . "',\n                    `rank` = " . $sqlRank;
     return claro_sql_query($sql) != false;
 }
Exemple #11
0
 public function getResourceList(ResourceLocator $locator)
 {
     $tbl = get_module_course_tbl(array('wrk_assignment'), $locator->getCourseId());
     $resourceList = new LinkerResourceIterator();
     if (!$locator->hasResourceId()) {
         $sql = "SELECT `title`, `visibility`, `id`\n" . "FROM `{$tbl['wrk_assignment']}`\n";
         $res = Claroline::getDatabase()->query($sql);
         foreach ($res as $assig) {
             $loc = new ClarolineResourceLocator($locator->getCourseId(), 'CLWRK', (int) $assig['id']);
             $resource = new LinkerResource($assig['title'], $loc, true, $assig['visibility'] == 'VISIBLE', false);
             $resourceList->addResource($resource);
         }
     }
     return $resourceList;
 }
 public function render()
 {
     // Select current course's datas
     $tbl_mdb_names = claro_sql_get_main_tbl();
     $tbl_courses = $tbl_mdb_names['course'];
     $curdate = claro_mktime();
     $sql = "SELECT course.cours_id,\n                       course.code                  AS `sysCode`,\n                       course.directory             AS `directory`,\n                       course.administrativeNumber  AS `officialCode`,\n                       course.dbName                AS `db`,\n                       course.intitule              AS `title`,\n                       course.titulaires            AS `titular`,\n                       course.language              AS `language`,\n                       course.access                AS `access`,\n                       course.status,\n                       course.sourceCourseId,\n                       UNIX_TIMESTAMP(course.expirationDate) AS expirationDate,\n                       UNIX_TIMESTAMP(course.creationDate)   AS creationDate\n                FROM `" . $tbl_courses . "` AS course\n                WHERE course.code = " . Claroline::getDatabase()->quote($this->courseCode);
     $result = Claroline::getDatabase()->query($sql);
     $courseData = $result->fetch(Database_ResultSet::FETCH_ASSOC);
     $courseEventList = get_agenda_next_items_list($courseData, 10, $this->month, $this->year);
     if (is_array($courseEventList)) {
         $courseDigestList = array();
         foreach ($courseEventList as $thisEvent) {
             $eventLine = trim(strip_tags($thisEvent['title']));
             if ($eventLine == '') {
                 $eventContent = trim(strip_tags($thisEvent['content']));
                 $eventLine = substr($eventContent, 0, 60) . (strlen($eventContent) > 60 ? ' (...)' : '');
             }
             $eventDate = $thisEvent['day'];
             if (!array_key_exists($eventDate, $courseDigestList)) {
                 $courseDigestList[$eventDate] = array();
                 $courseDigestList[$eventDate]['eventList'] = array();
                 $courseDigestList[$eventDate]['date'] = $eventDate;
             }
             $courseDigestList[$eventDate]['eventList'][] = array('id' => $thisEvent['id'], 'hour' => $thisEvent['hour'], 'location' => $thisEvent['location'], 'courseOfficialCode' => $courseData['officialCode'], 'courseSysCode' => $courseData['sysCode'], 'content' => $eventLine, 'url' => get_path('url') . '/claroline/calendar/agenda.php?cidReq=' . $courseData['sysCode']);
         }
     }
     $output = '';
     //$output .= '<div class="calendar">'.$this->ajaxMiniCalendar($agendaItemList).'</div>';
     $output .= '<div class="details">' . "\n" . '<dl>' . "\n";
     if ($courseDigestList) {
         foreach ($courseDigestList as $agendaItem) {
             $output .= '<dt>' . "\n" . '<h2>' . claro_html_localised_date(get_locale('dateFormatLong'), strtotime($agendaItem['date'])) . '</h2>' . "\n" . '</dt>' . "\n";
             foreach ($agendaItem['eventList'] as $agendaEvent) {
                 $output .= '<dd>' . '<b>' . $agendaEvent['content'] . '</b>' . "\n" . (!empty($agendaEvent['hour']) ? ' &ndash; ' . ucfirst(strftime(get_locale('timeNoSecFormat'), strtotime($agendaEvent['hour']))) : '') . (!empty($agendaEvent['location']) ? ' | ' . $agendaEvent['location'] : '') . ' (<a href="' . $agendaEvent['url'] . '#item' . $agendaEvent['id'] . '">' . get_lang('more details') . '</a>)' . "\n" . '</dd>' . "\n";
             }
         }
     } else {
         $output .= '<dt>' . "\n" . get_lang('No event to display') . "\n" . '</dt>' . "\n";
     }
     $output .= '' . '</dl>' . "\n" . '</div>' . "\n";
     return $output;
 }
Exemple #13
0
/**
 * Count the number of student in both the given course and the given class
 * @param string $course_id
 * @param int $class_id
 * @param bool $include_children recursively count students from subclasses
 * @return int
 */
function class_get_number_of_users_in_course($course_id, $class_id, $include_children = true)
{
    $tbl_mdb_names = claro_sql_get_main_tbl();
    $tbl_class_user = $tbl_mdb_names['rel_class_user'];
    $tbl_class = $tbl_mdb_names['class'];
    $tbl_course_user = $tbl_mdb_names['rel_course_user'];
    $sqlCourseId = Claroline::getDatabase()->quote($course_id);
    //1- get class users number
    $sqlcount = "SELECT COUNT(clu.`user_id`) AS qty_user\n                 FROM `{$tbl_class_user}` AS clu\n                 INNER JOIN `{$tbl_course_user}` AS cu \n                 ON `cu`.`user_id` = `clu`.`user_id`\n                 AND `cu`.`code_cours` = {$sqlCourseId}\n                 WHERE clu.`class_id` = " . (int) $class_id;
    $qty_user = Claroline::getDatabase()->query($sqlcount)->setFetchMode(Database_ResultSet::FETCH_VALUE)->fetch();
    if ($include_children) {
        $sql = "SELECT `id`\n                FROM `" . $tbl_class . "`\n                WHERE `class_parent_id`=" . (int) $class_id;
        $subClassesList = Claroline::getDatabase()->query($sql);
        //2- recursive call to get subclasses'users too
        foreach ($subClassesList as $subClass) {
            $qty_user += class_get_number_of_users_in_course($subClass['id'], true);
        }
    }
    //3- return result of counts and recursive calls
    return $qty_user;
}
Exemple #14
0
function delete_wiki($groupId)
{
    $tblList = claro_sql_get_course_tbl();
    $config = array();
    $config["tbl_wiki_properties"] = $tblList["wiki_properties"];
    $config["tbl_wiki_pages"] = $tblList["wiki_pages"];
    $config["tbl_wiki_pages_content"] = $tblList["wiki_pages_content"];
    $config["tbl_wiki_acls"] = $tblList["wiki_acls"];
    $con = Claroline::getDatabase();
    $store = new WikiStore($con, $config);
    if (strtoupper($groupId) == 'ALL') {
        $wikiList = $store->getGroupWikiList();
    } else {
        $wikiList = $store->getWikiListByGroup($groupId);
    }
    if (count($wikiList) > 0) {
        foreach ($wikiList as $wiki) {
            $store->deleteWiki($wiki['id']);
        }
    }
}
Exemple #15
0
function clann_get_max_and_min_rank($course_id = null)
{
    $course_id = is_null($course_id) ? claro_get_current_course_id() : $course_id;
    $tbl = claro_sql_get_course_tbl(claro_get_course_db_name_glued($course_id));
    return Claroline::getDatabase()->query("\n      SELECT \n        MAX(ordre) AS maxRank,\n        MIN(ordre) AS minRank\n     FROM `" . $tbl['announcement'] . "`")->fetch();
}
Exemple #16
0
 public function __construct($database)
 {
     $this->database = $database ? $database : Claroline::getDatabase();
 }
Exemple #17
0
 public function getUserInfo($catId)
 {
     $tbl = claro_sql_get_course_tbl(claro_get_course_db_name_glued($this->courseId));
     return Claroline::getDatabase()->query("\n            SELECT\n                content.user_id     AS userId,\n                cat.id              AS catId,\n                cat.title           AS title,\n                content.content     AS content\n            FROM\n                `" . $tbl['userinfo_def'] . "`     AS cat\n            LEFT JOIN\n                `" . $tbl['userinfo_content'] . "` AS content\n            ON\n                cat.id = content.def_id\n            WHERE\n                cat.id = " . (int) $catId . "\n            ORDER BY `cat`.`id`\n        ");
 }
Exemple #18
0
 public function getIterator()
 {
     $tbl_mdb_names = claro_sql_get_main_tbl();
     $tbl_courses = $tbl_mdb_names['course'];
     $upperKeyword = addslashes(strtoupper($this->keyword));
     $sql = "SELECT\n                c.code                  AS courseId,\n                c.code                  AS sysCode,\n                c.cours_id              AS id,\n                c.isSourceCourse        AS isSourceCourse,\n                c.sourceCourseId        AS sourceCourseId,\n                c.intitule              AS name,\n                c.administrativeNumber  AS officialCode,\n                c.administrativeNumber  AS administrativeNumber,\n                c.directory             AS path,\n                c.dbName                AS dbName,\n                c.titulaires            AS titular,\n                c.email                 AS email,\n                c.language              AS language,\n                c.extLinkUrl            AS extLinkUrl,\n                c.extLinkName           AS extLinkName,\n                c.visibility            AS visibility,\n                c.access                AS access,\n                c.registration          AS registration,\n                c.registrationKey       AS registrationKey,\n                c.diskQuota             AS diskQuota,\n                UNIX_TIMESTAMP(c.creationDate)      AS publicationDate,\n                UNIX_TIMESTAMP(c.expirationDate)    AS expirationDate,\n                c.status                AS status,\n                c.userLimit             AS userLimit\n                \n                FROM `" . $tbl_courses . "` AS c\n                \n                WHERE UPPER(administrativeNumber) LIKE '%" . $upperKeyword . "%'\n                OR UPPER(intitule) LIKE '%" . $upperKeyword . "%'\n                OR UPPER(titulaires) LIKE '%" . $upperKeyword . "%'\n                \n                ORDER BY " . $this->orderBy . " ASC";
     $result = Claroline::getDatabase()->query($sql);
     return new CourseListIterator($result);
 }
Exemple #19
0
/**
 * Count the number of categories having a specific value for the code
 * attribute.  You can ignore a specific id in the counting.
 *
 * @param int       identifier that we want to ignore in the request
 * @param string    code's value we search for
 * @return int      number of categories matching this value
 */
function claro_count_code($id = null, $code)
{
    // Get table name
    $tbl_mdb_names = claro_sql_get_main_tbl();
    $tbl_category = $tbl_mdb_names['category'];
    $sql = "SELECT COUNT(id) nbMatching\n            FROM `" . $tbl_category . "`\n            WHERE code = " . Claroline::getDatabase()->quote($code);
    if (!is_null($id)) {
        $sql .= " AND id != " . (int) $id;
    }
    $result = Claroline::getDatabase()->query($sql);
    $result->rewind();
    return $result->fetch(Database_ResultSet::FETCH_VALUE);
}
Exemple #20
0
/**
 * helper to unregister a class from course
 *
 * @author Damien Garros <*****@*****.**>
 *
 * @param int class_id
 * @param string course_code
 *
 * @return Claro_BatchRegistrationResult
 */
function unregister_class_to_course($class_id, $course_code)
{
    $claroClass = new Claro_Class(Claroline::getDatabase());
    $claroClass->load($class_id);
    $courseObj = new Claro_Course($course_code);
    $courseObj->load();
    $result = new Claro_BatchRegistrationResult();
    return object_unregister_class_from_course($claroClass, $courseObj, $result);
}
            if ($wasFolder) {
                unlink($pathInfo);
            }
            if (!$canRetry) {
                $sql = 'DELETE FROM `' . $tableName . '` WHERE token = \'' . claro_sql_escape($token) . '\'';
                Claroline::getDatabase()->exec($sql);
            }
        } else {
            header('HTTP/1.1 404 Not Found');
            claro_die(get_lang('File download failed : %failureMSg%', array('%failureMsg%' => claro_failure::get_last_failure())));
        }
    } else {
        $sql = 'DELETE FROM `' . $tableName . '` WHERE token = \'' . claro_sql_escape($token) . '\'';
        Claroline::getDatabase()->exec($sql);
        // redirect to document
        claro_redirect($document_url);
    }
} else {
    header('HTTP/1.1 404 Not Found');
}
//Clean left zip here
$sql = 'SELECT * FROM `' . $tableName . '` WHERE ADDTIME(`requestTime`,\'0 0:0:30\') < NOW() AND NOT `wasFolder` = \'0\'';
$result = Claroline::getDatabase()->query($sql);
while (($row = $result->fetch()) !== false) {
    if (is_file($row['requestedPath'])) {
        unlink($row['requestedPath']);
    }
}
$sql = 'DELETE FROM `' . $tableName . '` WHERE ADDTIME(`requestTime`,\'0 0:0:30\') < NOW()';
Claroline::getDatabase()->exec($sql);
Exemple #22
0
    }
    if ($wikiACL['group_edit'] == false && $wikiACL['group_create'] == true) {
        $wikiACL['group_create'] = false;
    }
    if ($wikiACL['other_edit'] == false && $wikiACL['other_create'] == true) {
        $wikiACL['other_create'] = false;
    }
}
// Database nitialisation
$tblList = claro_sql_get_course_tbl();
$config = array();
$config['tbl_wiki_properties'] = $tblList['wiki_properties'];
$config['tbl_wiki_pages'] = $tblList['wiki_pages'];
$config['tbl_wiki_pages_content'] = $tblList['wiki_pages_content'];
$config['tbl_wiki_acls'] = $tblList['wiki_acls'];
$con = Claroline::getDatabase();
// DEVEL_MODE database initialisation
if (defined('DEVEL_MODE') && DEVEL_MODE == true) {
    init_wiki_tables($con, false);
}
// Objects instantiation
$wikiStore = new WikiStore($con, $config);
$wikiList = array();
// --------- Start of command processing ----------------
switch ($action) {
    case 'exExport':
        require_once "lib/class.wiki2xhtmlexport.php";
        if (!$wikiStore->wikiIdExists($wikiId)) {
            // die( get_lang("Invalid Wiki Id") );
            $message = get_lang("Invalid Wiki Id");
            $dialogBox->error($message);
Exemple #23
0
                 $courseStats['others']['size'] += $file->getSize();
             }
             $courseStats['sum']['count']++;
             $courseStats['sum']['size'] += $file->getSize();
         }
     } catch (Exception $ex) {
         $dialogBox->error($ex->getMessage());
     }
 }
 $stats[$course['sysCode']]['courseTitle'] = $course['title'];
 $stats[$course['sysCode']]['courseTitulars'] = $course['titulars'];
 $stats[$course['sysCode']]['courseStats'] = $courseStats;
 // Get categories datas
 $cat = array();
 $sql2 = "SELECT cat.name  AS categoryName\n                    FROM `" . $tbl_category . "` AS cat\n                    LEFT JOIN `" . $tbl_rel_course_category . "` AS rcc\n                    ON ( cat.id = rcc.categoryId )\n                    WHERE rcc.courseId = '" . $course['id'] . "'";
 $arrayCat = Claroline::getDatabase()->query($sql2);
 foreach ($arrayCat as $item) {
     $cat[] .= $item['categoryName'];
 }
 $stats[$course['sysCode']]['courseCategory'] = $cat;
 $i++;
 // Courses pool's limit reached ?
 if ($i == $coursesPool) {
     $_SESSION['inProgress'] = true;
     $_SESSION['lastTreatedCourseId'] = $course['id'];
     $_SESSION['progressingStats'] = $stats;
     if (empty($_SESSION['viewAs'])) {
         $_SESSION['viewAs'] = isset($_REQUEST['viewAs']) && in_array($_REQUEST['viewAs'], array('html', 'csv')) ? $_REQUEST['viewAs'] : 'html';
     }
     $htmlHeadXtra[] = '<meta http-equiv="refresh" content="1" />' . "\n";
     break;
Exemple #24
0
 protected static function registerUser($userAttrList, $uid = null)
 {
     $preparedList = array();
     // Map database fields
     $dbFieldToClaroMap = array('nom' => 'lastname', 'prenom' => 'firstname', 'username' => 'loginName', 'email' => 'email', 'officialCode' => 'officialCode', 'phoneNumber' => 'phoneNumber', 'isCourseCreator' => 'isCourseCreator', 'authSource' => 'authSource');
     // Do not overwrite username and authsource for an existing user !!!
     if (!is_null($uid)) {
         unset($dbFieldToClaroMap['username']);
         unset($dbFieldToClaroMap['authSource']);
     }
     foreach ($dbFieldToClaroMap as $dbFieldName => $claroAttribName) {
         if (isset($userAttrList[$claroAttribName]) && !is_null($userAttrList[$claroAttribName])) {
             $preparedList[] = $dbFieldName . ' = ' . Claroline::getDatabase()->quote($userAttrList[$claroAttribName]);
         }
     }
     if (empty($preparedList)) {
         return false;
     }
     $tbl = claro_sql_get_main_tbl();
     $sql = ($uid ? 'UPDATE' : 'INSERT INTO') . " `{$tbl['user']}`\n" . "SET " . implode(",\n", $preparedList) . "\n" . ($uid ? "WHERE  user_id = " . (int) $uid : '');
     Claroline::getDatabase()->exec($sql);
     if (!$uid) {
         $uid = Claroline::getDatabase()->insertId();
     }
     return $uid;
 }
Exemple #25
0
 public function getResourceList(ResourceLocator $locator)
 {
     $groupId = null;
     if ($locator->inGroup()) {
         $groupData = claro_get_group_data(array(CLARO_CONTEXT_COURSE => $locator->getCourseId(), CLARO_CONTEXT_GROUP => $locator->getGroupId()));
         $groupId = $locator->getGroupId();
     }
     $path = $this->getPath($locator);
     if (!$this->isPathNavigable($path)) {
         throw new Exception("{$path} does not exists or is not a directory");
     } else {
         $tbl = get_module_course_tbl(array('document'), $locator->getCourseId());
         $fileProperties = array();
         if (!$locator->inGroup()) {
             $sql = "SELECT `path`, `visibility`, `comment`\n" . "FROM `{$tbl['document']}`\n" . "WHERE 1";
             $res = Claroline::getDatabase()->query($sql);
             foreach ($res as $row) {
                 $fileProperties[$row['path']] = $row;
             }
         }
         $it = new DirectoryIterator($path);
         $dirList = array();
         $fileList = array();
         foreach ($it as $file) {
             if ($file->isDir() && $file->isDot()) {
                 continue;
             }
             $relativePath = str_replace('\\', '/', str_replace($file->getPath(), '', $file->getPathname()));
             if ($locator->hasResourceId()) {
                 $relativePath = '/' . ltrim(ltrim($locator->getResourceId(), '/') . '/' . ltrim($relativePath, '/'), '/');
             }
             if ($file->isDir()) {
                 $dirList[] = $relativePath;
             } elseif ($file->isFile()) {
                 $fileList[] = $relativePath;
             }
         }
         natcasesort($dirList);
         natcasesort($fileList);
         $resourceList = new LinkerResourceIterator();
         foreach ($dirList as $relativePath) {
             $isVisible = true;
             if (array_key_exists($relativePath, $fileProperties)) {
                 $isVisible = $fileProperties[$relativePath]['visibility'] != 'i' ? true : false;
             }
             $resourceList->addResource($this->createResourceLocator($locator->getCourseId(), $relativePath, $isVisible, true, $groupId));
         }
         foreach ($fileList as $relativePath) {
             $isVisible = true;
             if (array_key_exists($relativePath, $fileProperties)) {
                 $isVisible = $fileProperties[$relativePath]['visibility'] != 'i' ? true : false;
             }
             $resourceList->addResource($this->createResourceLocator($locator->getCourseId(), $relativePath, $isVisible, false, $groupId));
         }
         return $resourceList;
     }
 }
Exemple #26
0
 public function getResourceList(ResourceLocator $locator)
 {
     $tbl = get_module_course_tbl(array('wiki_properties', 'wiki_pages'), $locator->getCourseId());
     if ($locator->inGroup()) {
         $groupSql = "WHERE group_id = " . Claroline::getDatabase()->escape($locator->getGroupId());
     } else {
         $groupSql = "WHERE group_id = 0";
     }
     $resourceList = new LinkerResourceIterator();
     if ($locator->hasResourceId()) {
         $parts = explode('/', ltrim($locator->getResourceId(), '/'));
         if (count($parts) == 1) {
             $sql = "SELECT `title`\n" . "FROM `{$tbl['wiki_pages']}`\n" . "WHERE wiki_id = " . Claroline::getDatabase()->escape($parts[0]);
             $res = Claroline::getDatabase()->query($sql);
             foreach ($res as $page) {
                 $pageLoc = new ClarolineResourceLocator($locator->getCourseId(), 'CLWIKI', (int) $parts[0] . '/' . rawurlencode($page['title']));
                 $pageResource = new LinkerResource($page['title'] == '__MainPage__' ? get_lang('Main page') : $page['title'], $pageLoc, true, true, false);
                 $resourceList->addResource($pageResource);
             }
         }
     } else {
         $sql = "SELECT `id`, `title`\n" . "FROM `{$tbl['wiki_properties']}`\n" . $groupSql;
         $res = Claroline::getDatabase()->query($sql);
         foreach ($res as $wiki) {
             $wikiLoc = new ClarolineResourceLocator($locator->getCourseId(), 'CLWIKI', (int) $wiki['id']);
             $wikiResource = new LinkerResource($wiki['title'], $wikiLoc, true, true, true);
             $resourceList->addResource($wikiResource);
         }
     }
     return $resourceList;
 }
Exemple #27
0
 public function __construct()
 {
     parent::__construct(Claroline::getDatabase());
 }
Exemple #28
0
 /**
  * 
  * @param string $cid id(code) of the course
  * @param mixed $database Database_Connection instance or null, if null, the default database connection will be used
  */
 public function __construct($cid = null, $database = null)
 {
     $this->cid = is_null($cid) ? claro_get_current_course_id() : $cid;
     $this->database = is_null($database) ? Claroline::getDatabase() : $database;
     $this->course = new Claro_course($cid);
     $this->course->load();
     $this->tables = claro_sql_get_main_tbl();
 }
            $previousTotalTimeTab[1] += $spentTime;
            $previousTotalTimeTab[0] += (int) ($previousTotalTimeTab[1] / 60);
            $previousTotalTimeTab[1] %= 60;
            $newTotalTime = '';
            if ($previousTotalTimeTab[0] > 9999) {
                $newTotalTime = '9999:59:59';
            } else {
                if ($previousTotalTimeTab[0] < 10) {
                    $newTotalTime .= 0;
                }
                $newTotalTime .= $previousTotalTimeTab[0] . ':';
                if ($previousTotalTimeTab[1] < 10) {
                    $newTotalTime .= 0;
                }
                $newTotalTime .= $previousTotalTimeTab[1] . ':' . $previousTotalTimeTab[2];
            }
            $tblUserModuleProgress = get_module_course_tbl(array('lp_user_module_progress'), $courseCode);
            Claroline::getDatabase()->exec("UPDATE `{$tblUserModuleProgress['lp_user_module_progress']}`\n                    SET total_time = " . Claroline::getDatabase()->quote($newTotalTime) . ",\n                        session_time = " . Claroline::getDatabase()->quote($sessionTime) . "\n                  WHERE user_module_progress_id = " . Claroline::getDatabase()->escape((int) $userModuleProgressId));
            $documentTimeUpdateArgs = array('sessionTime' => $sessionTime, 'date' => $date, 'userId' => $userId, 'courseCode' => $courseCode, 'learnPathId' => $learnPathId, 'moduleId' => $moduleId);
            $documentTimeUpdateEvent = new Event('lp_document_time_update', $documentTimeUpdateArgs);
            EventManager::notify($documentTimeUpdateEvent);
            echo 'Document spent time updated';
        } else {
            echo 'Wrong userId or wrong courseCode';
        }
    } else {
        echo 'There is at least one null param';
    }
} else {
    echo 'User not authenticated';
}
 /**
  * Return a list of activable portlets for the current course.
  *
  * @return array list of activable portlets
  */
 public static function getActivablePortlets()
 {
     $courseCode = claro_get_current_course_id();
     // Get table name
     $tbl_mdb_names = claro_sql_get_main_tbl();
     $tbl_coursehomepage_portlet = $tbl_mdb_names['coursehomepage_portlet'];
     $tbl_rel_course_portlet = $tbl_mdb_names['rel_course_portlet'];
     // Get available portlets for the current course
     $sql = "SELECT `label`, `name`\n                FROM `" . $tbl_coursehomepage_portlet . "`\n                WHERE `label` NOT IN (\n                    SELECT CONCAT_WS(',', label)\n                    FROM `" . $tbl_rel_course_portlet . "`\n                    WHERE `courseId` = " . (int) ClaroCourse::getIdFromCode($courseCode) . "\n                )\n                ORDER BY `name` ASC";
     $res = Claroline::getDatabase()->query($sql);
     if (!$res->isEmpty()) {
         return $res;
     } else {
         return array();
     }
 }