$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); } //redirect if error if (intval($arResult["ID"]) == 0) { if (!empty($arFilter["=UF_PROG.UF_CODE"])) { CHTTP::SetStatus("404 Not Found"); @define("ERROR_404", "Y"); } else { LocalRedirect($APPLICATION->GetCurDir(), false, "301 Moved Permanently"); } } else {
public static function getProgSimilar($arProg, $arParams) { $arProg["PICTURE"]["SRC"] = \Hawkart\Megatv\CFile::getCropedPath($arProg["UF_IMG_PATH"], array(300, 300)); $arStatus = self::status($arProg); $status = $arStatus["status"]; $status_icon = $arStatus["status-icon"]; ob_start(); ?> <div class="item<?php if ($status) { ?> status-<?php echo $status; } if (empty($arProg["PICTURE"]["SRC"])) { ?> is-noimage<?php } ?> " data-type="broadcast" data-broadcast-id="<?php echo $arProg["ID"]; ?> " > <div class="item-image-holder" style="background-image: url(<?php echo $arProg["PICTURE"]["SRC"]; ?> )"></div> <?php echo $status_icon; ?> <?php echo self::driveNotifyMessage(); ?> <div class="item-header"> <time><?php echo substr($arProg["DATE_START"], 11, 5); ?> | <?php echo substr($arProg["DATE_START"], 0, 10); ?> </time> <a href="<?php echo $arProg["DETAIL_PAGE_URL"]; ?> "> <?php echo self::cutName(\Hawkart\Megatv\ProgTable::getName($arProg)); ?> </a> </div> </div> <?php $content = ob_get_contents(); ob_end_clean(); return $content; }
/** * Get records statuses by user */ $arRecordsStatuses = \Hawkart\Megatv\RecordTable::getListStatusesByUser(); foreach ($arResult["PROGS"] as $key => $arProg) { $arProg["CAT_CODE"] = $arResult["CATEGORIES"][$arProg["UF_CATEGORY"]]; } $arRecords = array(); foreach ($arResult["PROGS"] as $arRecord) { $datetime = $arRecord['UF_DATE_START']; $date = substr($datetime, 0, 10); $time = substr($datetime, 11, 5); $arStatus = \Hawkart\Megatv\CScheduleTemplate::status($arRecord, $arRecordsStatuses); $status = $arStatus["status"]; $status_icon = $arStatus["status-icon"]; $img = \Hawkart\Megatv\CFile::getCropedPath($arRecord["UF_IMG_PATH"], array(288, 288)); ob_start(); if ($status == "viewed") { $path = $_SERVER["DOCUMENT_ROOT"] . $arProg["PICTURE"]["SRC"]; ?> <div class="item-image-holder" style="background-image: url(<?php echo SITE_TEMPLATE_PATH; ?> /ajax/img_grey.php?path=<?php echo urlencode($img); ?> )"></div> <span class="item-status-icon"> <span data-icon="icon-viewed"></span> <span class="status-desc">Просмотрено</span> </span>
</div> <?php } else { /** * Показ передачи */ $broadcastID = intval($_GET["broadcastID"]); if ($_GET["record"] != "false") { $arFilter = array("=ID" => $broadcastID); } else { $arFilter = array("=UF_USER_ID" => $USER->GetID(), "=UF_SCHEDULE_ID" => $broadcastID); } $result = \Hawkart\Megatv\RecordTable::getList(array('filter' => $arFilter, 'select' => array("ID", "UF_PROG_ID", "UF_URL", "UF_PROGRESS_SECS", "UF_TITLE" => "UF_PROG.UF_TITLE", "UF_SUB_TITLE" => "UF_PROG.UF_SUB_TITLE", "UF_IMG_PATH" => "UF_PROG.UF_IMG.UF_PATH"), 'limit' => 1)); $arRecord = $result->fetch(); $arRecord["UF_NAME"] = \Hawkart\Megatv\ProgTable::getName($arRecord); $arRecord["PICTURE"]["SRC"] = \Hawkart\Megatv\CFile::getCropedPath($arRecord["UF_IMG_PATH"], array(300, 300), true); //get count watched $countWatched = 0; $result = \Hawkart\Megatv\RecordTable::getList(array('filter' => array("UF_WATCHED" => 1, "=UF_PROG_ID" => $arRecord["UF_PROG_ID"]), 'select' => array(new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(*)', array('ID'))))); $arWatched = $result->fetch(); ?> <div class="broadcast-player" data-module="broadcast-player"> <script type="text/x-config"> { "seekTime": "<?php echo intval($arRecord["UF_PROGRESS_SECS"]); ?> ", "broadcastID": "<?php echo $broadcastID; ?>
$obCache = new \CPHPCache(); if ($obCache->InitCache(3600, serialize($arFilter) . serialize($arSelect), "/search-ajax/")) { $arResult = $obCache->GetVars(); } elseif ($obCache->StartDataCache()) { $arExclude = array(); $result = \Hawkart\Megatv\ScheduleTable::getList(array('filter' => $arFilter, 'select' => $arSelect, 'order' => array("UF_PROG.UF_RATING" => "DESC"))); while ($arSchedule = $result->fetch()) { if (in_array($arSchedule["UF_ID"], $arExclude)) { continue; } else { $arExclude[] = $arSchedule["UF_ID"]; } $arSchedule["UF_DATE_START"] = $arSchedule["DATE_START"] = $arSchedule['UF_DATE_START']->toString(); $arJson = array(); $arJson["date"] = substr($arSchedule["UF_DATE_START"], 11, 5) . " | " . substr($arSchedule["UF_DATE_START"], 0, 10); $arJson["title"] = $arSchedule["UF_TITLE"]; if ($arSchedule["UF_IMG_PATH"]) { $src = \Hawkart\Megatv\CFile::getCropedPath($arSchedule["UF_IMG_PATH"], array(300, 300)); //$renderImage = CFile::ResizeImageGet($src, Array("width"=>60, "height"=>60)); $arJson["thumbnail"] = $src; } else { $arJson["thumbnail"] = "null"; } $arJson["tokens"] = array(); $arJson["link"] = "/channels/" . $arSchedule["UF_CHANNEL_CODE"] . "/" . $arSchedule["UF_PROG_CODE"] . "/?event=" . $arSchedule["ID"]; $arResult[] = $arJson; } $obCache->EndDataCache($arResult); } exit(json_encode($arResult)); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";
/** * Make cut images for imported progs */ public static function addCropFiles($prog_ids) { $arProgs = array(); $result = ProgTable::getList(array('filter' => array("=ID" => $prog_ids, ">UF_IMG_ID" => 0), 'select' => array('UF_IMG_PATH' => "UF_IMG.UF_PATH"))); while ($row = $result->fetch()) { $path_from = $row["UF_IMG_PATH"]; $path_parts = pathinfo($row["UF_IMG_PATH"]); $file_name = $path_parts["filename"]; if (!exif_imagetype($_SERVER["DOCUMENT_ROOT"] . $path_from)) { continue; } $arCropedSize = array(array(288, 144), array(288, 288), array(576, 288), array(300, 300), array(600, 600)); foreach ($arCropedSize as $arSize) { $path_to = self::$cut_dir . $file_name . "_" . $arSize[0] . "_" . $arSize[1] . ".jpg"; CFile::add(array("path_from" => $_SERVER["DOCUMENT_ROOT"] . $path_from, "path_to" => $_SERVER["DOCUMENT_ROOT"] . $path_to, "width" => $arSize[0], "height" => $arSize[1])); } } }
public static function create($arFields) { global $USER; if (!$USER_ID) { $USER_ID = $USER->GetID(); } $start = new \Bitrix\Main\Type\DateTime(date('Y-m-d H:i:s', strtotime($arFields["UF_DATE_START"])), 'Y-m-d H:i:s'); $end = new \Bitrix\Main\Type\DateTime(date('Y-m-d H:i:s', strtotime($arFields["UF_DATE_END"])), 'Y-m-d H:i:s'); $data = array('UF_USER_ID' => $USER_ID, 'UF_DATE_START' => $start, 'UF_DATE_END' => $end, 'UF_EPG_ID' => $arFields["UF_EPG_ID"], 'UF_CHANNEL_ID' => $arFields["UF_CHANNEL_ID"], 'UF_SCHEDULE_ID' => $arFields["ID"], 'UF_PROG_ID' => $arFields["UF_PROG_ID"], 'UF_DATETIME_ADD' => new \Bitrix\Main\Type\DateTime(date('Y-m-d H:i:s'), 'Y-m-d H:i:s')); $result = self::add($data); if ($result->isSuccess()) { /** * Create image croped for record * \Hawkart\Megatv\CFile::getCropedPath($arFields["UF_IMG_PATH"], array(300, 300), true) */ $path_from = $arFields["UF_IMG_PATH"]; $path_parts = pathinfo($arFields["UF_IMG_PATH"]); $file_name = $path_parts["filename"]; $path_to = self::$cut_dir . $file_name . "_300_300.jpg"; CFile::add(array("path_from" => $_SERVER["DOCUMENT_ROOT"] . $path_from, "path_to" => $_SERVER["DOCUMENT_ROOT"] . $path_to, "width" => 300, "height" => 300)); return true; } else { return implode(', ', $result->getErrors()); } }
$arProgs = $arChannels[$channel]; if (!in_array($arChannel["UF_CHANNEL_BASE_ID"], $arResult["CHANNELS_SHOW"]) && $USER->IsAuthorized()) { continue; } foreach ($arProgs as $key => $arProg) { $time = substr($arProg['UF_DATE_START'], 11, 5); $arStatus = \Hawkart\Megatv\CScheduleTemplate::status($arProg, $arRecordsStatuses); $status = $arStatus["status"]; $start = $arProg["DATE_START"]; $end = $arProg["DATE_END"]; $datetime = $arParams["DATETIME"]["SERVER_DATETIME_WITH_OFFSET"]; $time_pointer = false; if (\CTimeEx::dateDiff($start, $datetime) && \CTimeEx::dateDiff($datetime, $end)) { $time_pointer = true; } $_arRecord = array("id" => $arProg["ID"], "channel_id" => $arProg["UF_CHANNEL_ID"], "time" => $time, "date" => $date, "date_start" => $arProg["DATE_START"], "date_end" => $arProg["DATE_END"], "link" => $arProg["DETAIL_PAGE_URL"], "name" => \Hawkart\Megatv\CScheduleTemplate::cutName(\Hawkart\Megatv\ProgTable::getName($arProg), 35), "images" => array('one' => \Hawkart\Megatv\CFile::getCropedPath($arProg["UF_IMG_PATH"], array(288, 288)), 'double' => \Hawkart\Megatv\CFile::getCropedPath($arProg["UF_IMG_PATH"], array(576, 288)), 'half' => \Hawkart\Megatv\CFile::getCropedPath($arProg["UF_IMG_PATH"], array(288, 144))), 'badge' => $time_pointer, "status" => "status-" . $status, "rating" => $arProg["UF_RATING"], "user_authorized" => $USER->IsAuthorized()); foreach ($_arRecord["images"] as $type => $value) { $_arRecord["images"][$type . "_bad"] = SITE_TEMPLATE_PATH . "/ajax/img_grey.php?quality=1&grey=false&path=" . urlencode($_SERVER["DOCUMENT_ROOT"] . $value); if ($status == "viewed") { $_arRecord["images"][$type] = ITE_TEMPLATE_PATH . "/ajax/img_grey.php?&path=" . urlencode($_SERVER["DOCUMENT_ROOT"] . $value); $_arRecord["images"][$type . "_bad"] = str_replace("&grey=false", "", $_arRecord["images"][$type . "_bad"]); } } $arDates[$date][$channel][] = $_arRecord; } } } if ($_REQUEST["AJAX_JSON"] == "Y") { echo json_encode(array("CHANNELS" => $arResult["CHANNELS"], "DATES" => $arDates, "TIME" => date("Y-m-d H:i:s", strtotime(\CTimeEx::dateOffset(date("Y-m-d H:i:s")))))); die; } else {