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;
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
}
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;
 }