} else { $arDate = \CTimeEx::getDateFilter($arTime["SERVER_DATETIME"]); $dateStart = date("Y-m-d H:i:s"); $dateEnd = date("Y-m-d H:i:s", strtotime($arDate["DATE_TO"])); } $arFilter = array("=UF_PROG.UF_ACTIVE" => 1, ">=UF_DATE_START" => new \Bitrix\Main\Type\DateTime($dateStart, 'Y-m-d H:i:s'), "<UF_DATE_START" => new \Bitrix\Main\Type\DateTime($dateEnd, 'Y-m-d H:i:s'), "!UF_CATEGORY" => "Новости"); $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_CHANNEL_CODE" => "UF_CHANNEL.UF_BASE.UF_CODE", "UF_CATEGORY" => "UF_PROG.UF_CATEGORY", "UF_ID" => "UF_PROG.UF_EPG_ID", "UF_PROG_CODE" => "UF_PROG.UF_CODE"); if ($USER->IsAuthorized() && $_REQUEST["AJAX"] != "Y") { $arProgByUsers = array(); $arRecords = $APPLICATION->GetPageProperty("ar_record_status"); $arRecordsStatuses = json_decode($arRecords, true); $recording_ids = array(); foreach ($arRecordsStatuses["RECORDING"] as $schedule_id => $arRecord) { $recording_ids[] = $schedule_id; } $arFilter["=UF_CHANNEL_ID"] = \Hawkart\Megatv\ChannelTable::getActiveIdByCityByUser(); if (count($recording_ids) > 0) { $arFilter["!=ID"] = $recording_ids; } $arRecommend = \Hawkart\Megatv\CStat::getRecommend($USER->GetID()); $arProgs = array(); $arRecommendSorted = array(); foreach ($arRecommend as $by_what => $epg_ids) { $count = 0; if (count($epg_ids) > 0) { $uf_ids = array(); $result = \Hawkart\Megatv\ScheduleTable::getList(array('filter' => $arFilter + array("=UF_PROG.UF_EPG_ID" => $epg_ids), 'select' => $arSelect, 'order' => array("UF_PROG.UF_RATING" => "DESC"))); 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);
$arTime = \CTimeEx::getDatetime(); //get channel by code $arFilter = array("=UF_CODE" => $arParams["ELEMENT_CODE"]); $arSelect = array("UF_CATEGORY", "UF_EPG_ID"); $result = \Hawkart\Megatv\ProgTable::getList(array('filter' => $arFilter, 'select' => $arSelect, 'limit' => 1)); if ($arResult = $result->fetch()) { $arResult["UF_SID"] = $arResult["UF_EPG_ID"]; } //print_r($arResult); //get channel by code $arResult["PROGS"] = array(); $offset = 0; if ($_REQUEST["AJAX"] == "Y") { $offset = $_REQUEST["offset"]; } else { $arChannelsActive = \Hawkart\Megatv\ChannelTable::getActiveIdByCityByUser(); $arDate = \CTimeEx::getDateTimeFilter($arTime["SERVER_DATETIME"]); $dateStart = date("Y-m-d H:i:s"); $dateEnd = date("Y-m-d H:i:s", strtotime($arDate["DATE_TO"])); $arFilter = array("=UF_PROG.UF_EPG_ID" => $arResult["UF_SID"], "=UF_CHANNEL_ID" => $arChannelsActive, ">=UF_DATE_START" => new \Bitrix\Main\Type\DateTime($dateStart, 'Y-m-d H:i:s'), "<UF_DATE_START" => new \Bitrix\Main\Type\DateTime($dateEnd, 'Y-m-d H:i:s')); if (!empty($_REQUEST["event"])) { $arFilter["!=ID"] = $_REQUEST["event"]; } $arSelect = array("ID", "UF_DATE_START", "UF_DATE_END", "UF_DATE", "UF_CHANNEL_ID", "UF_PROG_ID", "UF_PROG_CODE" => "UF_PROG.UF_CODE", "UF_TITLE" => "UF_PROG.UF_TITLE", "UF_SUB_TITLE" => "UF_PROG.UF_SUB_TITLE", "UF_IMG_PATH" => "UF_PROG.UF_IMG.UF_PATH", "UF_CHANNEL_CODE" => "UF_CHANNEL.UF_BASE.UF_CODE", "UF_ID" => "UF_PROG.UF_EPG_ID", "UF_CATEGORY" => "UF_PROG.UF_CATEGORY"); $result = \Hawkart\Megatv\ScheduleTable::getList(array('filter' => $arFilter, 'select' => $arSelect, 'limit' => 6)); 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["PROG_ID"] = $arSchedule["UF_PROG_ID"]; $arSchedule["DETAIL_PAGE_URL"] = "/channels/" . $arSchedule["UF_CHANNEL_CODE"] . "/" . $arSchedule["UF_PROG_CODE"] . "/?event=" . $arSchedule["ID"];
/** * "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; } $arResult["PROGS"] = array(); $arTime = \CTimeEx::getDatetime(); $prog_ids = array(); //get progs by rating $arDate = \CTimeEx::getDateFilter($arTime["SELECTED_DATE"]); $dateStart = date("Y-m-d H:i:s", strtotime($arDate["DATE_FROM"])); $dateEnd = date("Y-m-d H:i:s", strtotime($arDate["DATE_TO"])); $arFilter = array("UF_PROG.UF_ACTIVE" => 1, "UF_CHANNEL_ID" => \Hawkart\Megatv\ChannelTable::getActiveIdByCityByUser(), ">=UF_DATE_START" => new \Bitrix\Main\Type\DateTime($dateStart, 'Y-m-d H:i:s'), "<UF_DATE_START" => new \Bitrix\Main\Type\DateTime($dateEnd, 'Y-m-d H:i:s')); $arSelect = array("ID", "UF_CODE", "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_ICON" => "UF_CHANNEL.UF_BASE.UF_ICON", "UF_CHANNEL_CODE" => "UF_CHANNEL.UF_BASE.UF_CODE", "UF_ID" => "UF_PROG.UF_EPG_ID"); $arOrder = array("UF_PROG.UF_RATING" => "DESC"); $result = \Hawkart\Megatv\ScheduleTable::getList(array('filter' => $arFilter, 'select' => $arSelect, 'order' => $arOrder, 'limit' => 24)); while ($arSchedule = $result->fetch()) { if (in_array($arSchedule["UF_PROG_ID"], $prog_ids)) { continue; } $prog_ids[] = $arSchedule["UF_PROG_ID"]; //for unrepeat $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_ID"] . "/?event=" . $arSchedule["ID"]; $arResult["PROGS"][] = $arSchedule; } if ($arParams["TEMPLATE"] == "MAIN_PAGE") { $arResult["PROGS"] = \Hawkart\Megatv\CScheduleView::setRecommendIndex(array("PROGS" => $arResult["PROGS"])); }