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; } } }
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); }
public function __construct($type = 'COURSE', $database = null) { if (!$database) { $this->database = Claroline::getDatabase(); $this->type = $type; } else { $this->database = $database; $this->type = $type; } }
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; }
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; }
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; }
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']) ? ' – ' . 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; }
/** * 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; }
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']); } } }
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(); }
public function __construct($database) { $this->database = $database ? $database : Claroline::getDatabase(); }
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 "); }
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); }
/** * 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); }
/** * 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);
} 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);
$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;
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; }
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; } }
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; }
public function __construct() { parent::__construct(Claroline::getDatabase()); }
/** * * @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(); } }