public static function getListStatusesByUser() { global $USER, $APPLICATION; if ($USER->IsAuthorized()) { $arTime = \CTimeEx::getDatetime(); $date_now = $arTime["SERVER_DATETIME_WITH_OFFSET"]; $countRecorded = 0; $countInRec = 0; $count = 0; $arStatusRecording = array(); //записывается $arStatusRecorded = array(); //записана, можно просмотреть $arStatusViewed = array(); //просмотренна $result = self::getList(array('filter' => array("=UF_USER_ID" => $USER->GetID(), "=UF_DELETED" => 0), 'select' => array("ID", "UF_URL", "UF_SCHEDULE_ID", "UF_WATCHED", "UF_PROG_ID", "DATE_START" => "UF_SCHEDULE.UF_DATE_START"))); while ($arRecord = $result->fetch()) { $shedule_id = $arRecord["UF_SCHEDULE_ID"]; if (!empty($arRecord["DATE_START"])) { $arRecord["DATE_START"] = \CTimeEx::dateOffset($arRecord["DATE_START"]->toString()); $minutes = intval(strtotime($date_now) - strtotime($arRecord["DATE_START"])) / 60; } if (intval($shedule_id) > 0) { if ((!\CTimeEx::dateDiff($arRecord["DATE_START"], $date_now) || $minutes < 5) && !empty($arRecord["DATE_START"]) && !empty($arRecord["UF_URL"])) { $countInRec++; $arStatusRecording[$shedule_id] = $arRecord; $count++; continue; } if ($arRecord["UF_WATCHED"] == 1) { $countRecorded++; $arStatusViewed[$shedule_id] = $arRecord; } else { if (empty($arRecord["UF_URL"])) { $countInRec++; $arStatusRecording[$shedule_id] = $arRecord; } else { if (!empty($arRecord["UF_URL"])) { $countRecorded++; $arStatusRecorded[$shedule_id] = $arRecord; } } } } $count++; } $arRecordsStatuses = array("RECORDING" => $arStatusRecording, "RECORDED" => $arStatusRecorded, "VIEWED" => $arStatusViewed); $APPLICATION->SetPageProperty("ar_record_status", json_encode($arRecordsStatuses)); $APPLICATION->SetPageProperty("ar_record_in_rec", $countInRec); $APPLICATION->SetPageProperty("ar_record_recorded", $countRecorded); $APPLICATION->SetPageProperty("ar_record_total", $count); } return $arRecordsStatuses; }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } global $USER, $APPLICATION; $arResult = array(); $arParams = $arParams + array("DATETIME" => \CTimeEx::getDatetime(), "LIST_URL" => $APPLICATION->GetCurDir(), "BACK_URL" => $_SERVER['HTTP_REFERER']); if (empty($_REQUEST["event"])) { $arFilter = array("=UF_PROG.UF_CODE" => $arParams["ELEMENT_CODE"]); } else { $arFilter = array("=ID" => $_REQUEST["event"]); } $arSelect = array("ID", "UF_DATE_START", "UF_DATE_END", "UF_DATE", "UF_CHANNEL_ID", "UF_PROG_ID", "UF_TITLE" => "UF_PROG.UF_TITLE", "UF_SUB_TITLE" => "UF_PROG.UF_SUB_TITLE", "UF_IMG_PATH" => "UF_PROG.UF_IMG.UF_PATH", "UF_RATING" => "UF_PROG.UF_RATING", "UF_DESC" => "UF_PROG.UF_DESC", "UF_SUB_DESC" => "UF_PROG.UF_SUB_DESC", "UF_TOPIC" => "UF_PROG.UF_GANRE", "UF_YEAR_LIMIT" => "UF_PROG.UF_YEAR_LIMIT", "UF_COUNTRY" => "UF_PROG.UF_COUNTRY", "UF_YEAR" => "UF_PROG.UF_YEAR", "UF_DIRECTOR" => "UF_PROG.UF_DIRECTOR", "UF_PRESENTER" => "UF_PROG.UF_PRESENTER", "UF_ACTOR" => "UF_PROG.UF_ACTOR", "UF_ICON" => "UF_CHANNEL.UF_BASE.UF_ICON", "UF_CATEGORY" => "UF_PROG.UF_CATEGORY"); $obCache = new \CPHPCache(); if ($obCache->InitCache(86400, serialize($arFilter) . serialize($arSelect), "/schedule-detail/")) { $arResult = $obCache->GetVars(); } elseif ($obCache->StartDataCache()) { //get channel by code $result = \Hawkart\Megatv\ScheduleTable::getList(array('filter' => $arFilter, 'select' => $arSelect, 'limit' => 1)); if ($arResult = $result->fetch()) { $arResult["UF_DATE_START"] = $arResult["DATE_START"] = \CTimeEx::dateOffset($arResult['UF_DATE_START']->toString()); $arResult["UF_DATE_END"] = $arResult["DATE_END"] = \CTimeEx::dateOffset($arResult['UF_DATE_END']->toString()); $arResult["UF_DATE"] = $arResult["DATE"] = substr($arResult["DATE_START"], 0, 10); $arResult["PICTURE"]["SRC"] = \Hawkart\Megatv\CFile::getCropedPath($arResult["UF_IMG_PATH"], array(600, 600)); $sec = strtotime($arResult["DATE_END"]) - strtotime($arResult["DATE_START"]); $arResult["DURATION"] = \CTimeEx::secToStr($sec); $arResult["KEYWORDS"] = array($arResult["UF_CATEGORY"], $arResult["UF_TOPIC"]); } $obCache->EndDataCache($arResult); }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } ini_set('max_execution_time', 10); global $USER; $arTime = \CTimeEx::getDatetime(); function getRecommendForAll($arFilter, $arSelect, $limit, $offset) { $arProgs = array(); $result = \Hawkart\Megatv\ScheduleTable::getList(array('filter' => $arFilter, 'select' => $arSelect, 'order' => array("UF_PROG.UF_RATING" => "DESC"), 'limit' => 12, 'offset' => $offset)); while ($arSchedule = $result->fetch()) { $arSchedule["UF_DATE_START"] = $arSchedule["DATE_START"] = \CTimeEx::dateOffset($arSchedule['UF_DATE_START']->toString()); $arSchedule["UF_DATE_END"] = $arSchedule["DATE_END"] = \CTimeEx::dateOffset($arSchedule['UF_DATE_END']->toString()); $arSchedule["UF_DATE"] = $arSchedule["DATE"] = substr($arSchedule["DATE_START"], 0, 10); $arSchedule["DETAIL_PAGE_URL"] = "/channels/" . $arSchedule["UF_CHANNEL_CODE"] . "/" . $arSchedule["UF_PROG_CODE"] . "/?event=" . $arSchedule["ID"]; $arProgs[] = $arSchedule; } return $arProgs; } $arResult["PROGS"] = array(); $countPerPage = intval($arParams["NEWS_COUNT"]); $count = 0; $offset = 0; $prog_ids = array(); $limit = intval($arParams["NEWS_COUNT"]); if ($_REQUEST["AJAX"] == "Y") { $offset = intval($_REQUEST["offset"]); $dateStart = substr($_REQUEST["date"], 0, 10) . date(" H:i:s"); $dateStart = date("Y-m-d H:i:s", strtotime($dateStart));
<?php require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php"; $APPLICATION->SetTitle("Рекомендации"); ?> <?php $APPLICATION->IncludeComponent("hawkart:megatv.recommendations", "", array("DATETIME" => CTimeEx::getDatetime(), "NEWS_COUNT" => 12), false); ?> <?php /*$APPLICATION->IncludeComponent("hawkart:recommendations", "index", Array("NOT_SHOW_CHANNEL"=>"Y", "TEMPLATE" => "MAIN_PAGE"), false );*/ ?> <?php require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php";
/** * "RECORDING" "RECORDED" "VIEWED" */ public static function status($arProg, $arRecordsStatuses = false) { global $APPLICATION, $USER; if (!$arRecordsStatuses) { $arRecordsStatuses = $APPLICATION->GetPageProperty("ar_record_status"); $arRecordsStatuses = json_decode($arRecordsStatuses, true); } $arSubscriptionChannels = ChannelTable::getActiveIdByCityByUser(); $schedule = $arProg["ID"]; $arDatetime = \CTimeEx::getDatetime(); $date_now = $arDatetime["SERVER_DATETIME_WITH_OFFSET"]; $start = $arProg["DATE_START"]; $end = $arProg["DATE_END"]; $status = ""; if (isset($arRecordsStatuses["VIEWED"][$schedule])) { $status = "viewed"; } else { if (isset($arRecordsStatuses["RECORDING"][$schedule])) { $status = "recording"; } else { if (isset($arRecordsStatuses["RECORDED"][$schedule])) { $status = "recorded"; } else { if (in_array($arProg["UF_CHANNEL_ID"], $arSubscriptionChannels) && $USER->IsAuthorized() && \CTimeEx::dateDiff($date_now, $end) || !$USER->IsAuthorized()) { $status = "recordable"; } } } } ob_start(); if ($status == 'recording') { ?> <div class='item-status-icon'> <span data-icon='icon-recording'></span> <span class='status-desc'>В записи</span> </div> <?php } ?> <?php if ($status == 'recorded') { ?> <span class='item-status-icon' href='#'> <span data-icon='icon-recorded'></span> <span class='status-desc'>Смотреть</span> </span> <?php } ?> <?php if ($status == 'viewed') { ?> <span class='item-status-icon'> <span data-icon='icon-viewed'></span> <span class='status-desc'>Просмотрено</span> </span> <?php } ?> <?php if ($status == 'recordable') { ?> <?php if ($USER->IsAuthorized()) { ?> <span class='item-status-icon'> <span data-icon='icon-recordit'></span> <span class='status-desc'>Записать</span> </span> <?php } else { ?> <span class='item-status-icon js-btnModalInit' data-module='modal' data-modal='authURL' data-type='openModal'> <span data-icon='icon-recordit'></span> <span class='status-desc'>Записать</span> </span> <?php } ?> <?php } $content = ob_get_contents(); ob_end_clean(); return array("status" => $status, "status-icon" => $content); }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } global $USER, $APPLICATION, $arSite; $arResult = array(); $arParams = $arParams + array("DATETIME" => \CTimeEx::getDatetime(), "LIST_URL" => $APPLICATION->GetCurDir()); //get channel by code $arFilter = array("=UF_CHANNEL.UF_BASE.UF_ACTIVE" => 1, "=UF_CHANNEL.UF_BASE.UF_CODE" => $arParams["ELEMENT_CODE"], "=UF_CITY_ID" => $_SESSION["USER_GEO"]["ID"]); $arSelect = array('ID', 'UF_CHANNEL_ID', 'UF_CHANNEL_BASE_ID' => 'UF_CHANNEL.UF_BASE.ID', 'UF_TITLE' => 'UF_CHANNEL.UF_BASE.UF_TITLE', 'UF_ICON' => 'UF_CHANNEL.UF_BASE.UF_ICON', 'UF_CODE' => 'UF_CHANNEL.UF_BASE.UF_CODE', "UF_IS_NEWS" => 'UF_CHANNEL.UF_BASE.UF_IS_NEWS', 'UF_DESC' => 'UF_CHANNEL.UF_BASE.UF_DESC', 'UF_H1' => 'UF_CHANNEL.UF_BASE.UF_H1', 'UF_DESCRIPTION' => 'UF_CHANNEL.UF_BASE.UF_DESCRIPTION', 'UF_KEYWORDS' => 'UF_CHANNEL.UF_BASE.UF_KEYWORDS'); $obCache = new \CPHPCache(); if ($obCache->InitCache(86400, serialize($arFilter) . serialize($arSelect), "/channel-detail/")) { $arResult = $obCache->GetVars(); } elseif ($obCache->StartDataCache()) { $arResult = array(); $result = \Hawkart\Megatv\ChannelCityTable::getList(array('filter' => $arFilter, 'select' => $arSelect, 'limit' => 1)); if ($arResult = $result->fetch()) { $arResult["ID"] = $arResult["UF_CHANNEL_ID"]; $arResult["DETAIL_PAGE_URL"] = "/channels/" . $arResult['UF_CODE'] . "/"; $title = $arResult["UF_TITLE"] . " - телепрограмма на сегодня, программа телепередач канала " . $arResult["UF_H1"] . " на " . $arSite["NAME"]; if ($arResult["UF_H1"] == "5 канал") { $title = str_replace("канала ", "", $title); } $title = str_replace("TvGuru", $arSite["NAME"], $title); $arResult["PAGE_TITLE"] = $title; } $obCache->EndDataCache($arResult); } //get subscription list $arSubscriptionChannels = $APPLICATION->GetPageProperty("ar_subs_channels");