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;
 }
        if (strlen($ID) <= 0) {
            continue;
        }
        $ID = intval($ID);
        switch ($_REQUEST['action']) {
            case "delete":
                @set_time_limit(0);
                if (!CLearningGroup::delete($ID)) {
                    $lAdmin->AddGroupError(GetMessage("LEARNING_DELETE_ERROR"), $ID);
                }
                break;
        }
    }
}
// fetch data
$rsData = CLearningGroup::GetList(array($by => $order), $arFilter);
$rsData = new CAdminResult($rsData, $sTableID);
$rsData->NavStart();
// navigation string setup
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("LEARNING_ADMIN_RESULTS")));
// list header
$lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "id", "default" => true), array("id" => "ACTIVE", "content" => GetMessage('LEARNING_ADMIN_GROUPS_ACTIVE'), "sort" => "active", "default" => true), array("id" => "TITLE", "content" => GetMessage('LEARNING_ADMIN_GROUPS_TITLE'), "sort" => "title", "default" => true), array("id" => "CODE", "content" => GetMessage('LEARNING_ADMIN_GROUPS_CODE'), "sort" => "code", "default" => true), array("id" => "SORT", "content" => GetMessage('LEARNING_ADMIN_GROUPS_SORT'), "sort" => "sort", "default" => true), array("id" => "ACTIVE_FROM", "content" => GetMessage('LEARNING_ADMIN_GROUPS_ACTIVE_FROM'), "sort" => "active_from", "default" => true), array("id" => "ACTIVE_TO", "content" => GetMessage('LEARNING_ADMIN_GROUPS_ACTIVE_TO'), "sort" => "active_to", "default" => true), array("id" => "COURSE_LESSON_ID", "content" => GetMessage('LEARNING_ADMIN_GROUPS_COURSE_LESSON_ID'), "sort" => "course_lesson_id", "default" => true), array("id" => "COURSE_TITLE", "content" => GetMessage('LEARNING_ADMIN_GROUPS_COURSE_TITLE'), "sort" => "course_title", "default" => true)));
// building list
while ($arRes = $rsData->NavNext(true, "f_")) {
    $row =& $lAdmin->AddRow($f_ID, $arRes);
    $row->AddViewField("COURSE_TITLE", '<a href="learn_unilesson_admin.php?lang=' . LANG . '&PARENT_LESSON_ID=' . (int) $arRes['COURSE_LESSON_ID'] . '&LESSON_PATH=' . (int) $arRes['COURSE_LESSON_ID'] . '">' . $arRes['COURSE_TITLE'] . ' [' . $arRes['COURSE_LESSON_ID'] . ']' . '</a>');
    $row->AddField("ID", '<a href="/bitrix/admin/learn_group_edit.php?ID=' . $f_ID . '&lang=' . LANGUAGE_ID . '" title="' . GetMessage("MAIN_ADMIN_MENU_EDIT") . '">' . $f_ID . '</a>');
    $row->AddCheckField("ACTIVE");
    $row->AddInputField("TITLE", array("size" => "20"));
    $row->AddInputField("CODE", array("size" => "10"));
    $row->AddInputField("SORT", array("size" => "3"));
Exemple #3
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;
 }
             $arNewMembers[] = $value;
         }
     }
     $arNewMembers = array_unique($arNewMembers);
     $arAddedMembers = array_diff($arNewMembers, $arMembers);
     $arRemovedMembers = array_diff($arMembers, $arNewMembers);
 }
 if ($USER_FIELD_MANAGER->getRights('LEARNING_LGROUPS') >= 'W') {
     $USER_FIELD_MANAGER->EditFormAddFields('LEARNING_LGROUPS', $arFields);
 }
 $res = false;
 $oAccess = CLearnAccess::GetInstance($USER->GetID());
 $isAccessible = $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_MANAGE_RIGHTS);
 $DB->StartTransaction();
 if ($isAccessible) {
     $tr = new CLearningGroup();
     if ($ID == 0) {
         $res = $tr->add($arFields);
         if ($res > 0) {
             $ID = (int) $res;
         }
     } else {
         $res = $tr->update($ID, $arFields);
     }
     if ($res) {
         foreach ($arAddedMembers as $memberId) {
             CLearningGroupMember::add(array('USER_ID' => $memberId, 'LEARNING_GROUP_ID' => $ID));
         }
         foreach ($arRemovedMembers as $memberId) {
             CLearningGroupMember::delete($memberId, $ID);
         }
Exemple #5
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;
 }