public function SQLForAccessibleLessons() { // SQL exists only if check permissions must be done if ($this->bCheckPerm === false) { throw new LearnException('', LearnException::EXC_ERR_ALL_LOGIC | LearnException::EXC_ERR_ALL_GIVEUP); } // Is not cached yet? if ($this->cachedSQL === false) { $this->cachedSQL = $this->oAccess->SQLClauseForAccessibleLessons($this->requestedOperations); global $USER; if (is_object($USER) && method_exists($USER, "GetID") && intval($USER->GetID()) > 0) { $rs = CLearningGroup::getList(array(), array("MEMBER_ID" => intval($USER->GetID()), "ACTIVE" => "Y", "ACTIVE_DATE" => "Y")); $availableCourses = array(); while ($group = $rs->fetch()) { $availableCourses[] = $group["COURSE_LESSON_ID"]; } if (count($availableCourses) > 0) { $this->cachedSQL .= " UNION SELECT ID as LESSON_ID\n\t\t\t\t\t\tFROM b_learn_lesson\n\t\t\t\t\t\tWHERE ID IN (" . join(",", $availableCourses) . ")"; } } } return $this->cachedSQL; }
private static function checkFields($arFields) { global $DB; IncludeModuleLangFile(__FILE__); $arMsg = array(); if (!array_key_exists('LEARNING_GROUP_ID', $arFields)) { $arMsg[] = array("id" => "LEARNING_GROUP_ID", "text" => GetMessage("LEARNING_BAD_LEARNING_GROUP_ID")); } else { $rs = CLearningGroup::getList(array(), array('ID' => (int) $arFields['LEARNING_GROUP_ID']), array('ID')); if (!($rs && $rs->fetch())) { $arMsg[] = array("text" => GetMessage("LEARNING_BAD_LEARNING_GROUP_ID_EX"), "id" => "BAD_GROUP_ID"); } } if (!array_key_exists('LESSON_ID', $arFields)) { $arMsg[] = array("id" => "LESSON_ID", "text" => GetMessage("LEARNING_BAD_LESSON_ID")); } if (!empty($arMsg)) { $e = new CAdminException($arMsg); $GLOBALS["APPLICATION"]->ThrowException($e); return false; } return true; }
} global $USER; $bTzWasDisabled = !CTimeZone::enabled(); if ($bTzWasDisabled) { CTimeZone::enable(); } if ($userId === false) { $tzOffset = CTimeZone::getOffset(); } else { $tzOffset = CTimeZone::getOffset($userId); } if ($bTzWasDisabled) { CTimeZone::disable(); } $nowDateStr = ConvertTimeStamp(time() + $tzOffset, 'FULL'); $rs = CLearningGroup::getList(array(), array('MEMBER_ID' => $USER->getId(), 'ACTIVE' => 'Y', '<ACTIVE_FROM' => $nowDateStr, '>ACTIVE_TO' => $nowDateStr)); while ($ar = $rs->fetch()) { CLearnParsePermissionsFromFilter::registerAvailableCourse($ar['COURSE_LESSON_ID']); } $arParams["SORBY"] = isset($arParams["~SORBY"]) ? trim($arParams["~SORBY"]) : "SORT"; $arParams["SORORDER"] = isset($arParams["~SORORDER"]) ? trim($arParams["~SORORDER"]) : "ASC"; $arParams["CHECK_PERMISSIONS"] = isset($arParams["CHECK_PERMISSIONS"]) && $arParams["CHECK_PERMISSIONS"] == "N" ? "N" : "Y"; $arParams["COURSE_DETAIL_TEMPLATE"] = isset($arParams["COURSE_DETAIL_TEMPLATE"]) ? htmlspecialcharsbx($arParams["COURSE_DETAIL_TEMPLATE"]) : "course/index.php?COURSE_ID=#COURSE_ID#"; $arParams["COURSES_PER_PAGE"] = intval($arParams["COURSES_PER_PAGE"]) > 0 ? intval($arParams["COURSES_PER_PAGE"]) : 20; //Set Title $arParams["SET_TITLE"] = $arParams["SET_TITLE"] == "N" ? "N" : "Y"; if ($arParams["SET_TITLE"] == "Y") { $APPLICATION->SetTitle(GetMessage("LEARNING_COURSE_LIST")); } //arResult $arResult = array("COURSES" => array(), "NAV_SRTING" => "", "NAV_RESULT" => null);
public static function getActiveLearningGroupsPeriod($courseLessonId, $userId) { static $arCache = array(); $userId = intval($userId); $courseLessonId = intval($courseLessonId); $cacheKey = $courseLessonId . "|" . $userId; if (!array_key_exists($cacheKey, $arCache)) { $rs = CLearningGroup::getList(array(), array('ACTIVE' => 'Y', 'MEMBER_ID' => $userId, 'COURSE_LESSON_ID' => $courseLessonId, 'ACTIVE_DATE' => 'Y'), array('ID', 'MEMBER_ID', 'ACTIVE_FROM', 'ACTIVE_TO')); $minActiveFrom = null; $minActiveFromFound = false; $minActiveFromTs = PHP_INT_MAX; $maxActiveTo = null; $maxActiveToFound = false; $maxActiveToTs = 0; $exists = false; $arGroupsActiveFrom = array(); while ($ar = $rs->fetch()) { $exists = true; $arGroupsActiveFrom[$ar['ID']] = $ar['ACTIVE_FROM']; if ($ar['ACTIVE_FROM'] === null) { $minActiveFrom = null; $minActiveFromFound = true; } elseif (!$minActiveFromFound) { $activeFromTs = MakeTimeStamp($ar['ACTIVE_FROM']); if ($activeFromTs < $minActiveFromTs) { $minActiveFrom = $ar['ACTIVE_FROM']; $minActiveFromTs = $activeFromTs; } } if ($ar['ACTIVE_TO'] === null) { $maxActiveTo = null; $maxActiveToFound = true; } elseif (!$maxActiveToFound) { $activeToTs = MakeTimeStamp($ar['ACTIVE_TO']); if ($activeToTs > $maxActiveToTs) { $maxActiveTo = $ar['ACTIVE_TO']; $maxActiveToTs = $activeToTs; } } } $arPeriod = array('IS_EXISTS' => $exists, 'ACTIVE_FROM' => $minActiveFrom, 'ACTIVE_TO' => $maxActiveTo, 'GROUPS_ACTIVE_FROM' => $arGroupsActiveFrom); $arCache[$cacheKey] = $arPeriod; } else { $arPeriod = $arCache[$cacheKey]; } return $arPeriod; }
public static function getActiveLearningGroupsPeriod($courseLessonId, $userId) { static $arCache = array(); $cacheKey = (int) $courseLessonId . '|' . (int) $userId; if (!array_key_exists($cacheKey, $arCache)) { $rs = CLearningGroup::getList(array(), array('ACTIVE' => 'Y', 'MEMBER_ID' => $userId, 'COURSE_LESSON_ID' => $courseLessonId, '<=ACTIVE_FROM' => ConvertTimeStamp(false, 'FULL'), '>=ACTIVE_TO' => ConvertTimeStamp(false, 'FULL')), array('ID', 'MEMBER_ID', 'ACTIVE_FROM', 'ACTIVE_TO')); $minActiveFromTs = PHP_INT_MAX; $maxActiveToTs = 0; $minActiveFrom = null; $maxActiveTo = null; $arGroupsActiveFrom = array(); while ($ar = $rs->fetch()) { $activeToTs = MakeTimeStamp($ar['ACTIVE_TO']); $activeFromTs = MakeTimeStamp($ar['ACTIVE_FROM']); if ($activeFromTs < $minActiveFromTs) { $minActiveFrom = $ar['ACTIVE_FROM']; $minActiveFromTs = $activeFromTs; } if ($activeToTs > $maxActiveToTs) { $maxActiveTo = $ar['ACTIVE_TO']; $maxActiveToTs = $activeToTs; } $arGroupsActiveFrom[$ar['ID']] = $ar['ACTIVE_FROM']; } $bExists = false; if ($minActiveFrom !== null && $maxActiveTo !== null) { $bExists = true; } $arPeriod = array('IS_EXISTS' => $bExists, 'ACTIVE_FROM' => $minActiveFrom, 'ACTIVE_TO' => $maxActiveTo, 'GROUPS_ACTIVE_FROM' => $arGroupsActiveFrom); $arCache[$cacheKey] = $arPeriod; } else { $arPeriod = $arCache[$cacheKey]; } return $arPeriod; }