public function up() { global $APPLICATION; $arProgs = array(); $codes = array(); $result = \Hawkart\Megatv\ProgTable::getList(array('filter' => array(), 'select' => array("ID", "UF_TITLE", "UF_CODE", "UF_EPG_ID"))); while ($row = $result->fetch()) { $arParams = array("replace_space" => "-", "replace_other" => "-"); $code = \CDev::translit(trim($row["UF_TITLE"]), "ru", $arParams); if (!empty($row["UF_CODE"])) { $codes[$row["UF_TITLE"]] = $row; continue; } $arCode = $codes[$row["UF_TITLE"]]; if (!empty($arCode)) { if ($row["UF_EPG_ID"] != $arCode["UF_EPG_ID"]) { $code .= "-" . $row["ID"]; } else { $code = $arCode["UF_CODE"]; } } \Hawkart\Megatv\ProgTable::update($row["ID"], array("UF_CODE" => $code)); $row["UF_CODE"] = $code; $codes[$row["UF_TITLE"]] = $row; } }
echo $img; ?> )"></div><?php } echo $status_icon; echo \Hawkart\Megatv\CScheduleTemplate::driveNotifyMessage(); if ($status == "recording") { ?> <div class="recording-notify"> <div class="recording-notify-text-wrap"> <div class="recording-notify-icon"> </div> <p>Ваша любимая передача<br> поставлена на запись</p> </div> </div> <?php } $content = ob_get_contents(); ob_end_clean(); $_arRecord = array("id" => $arRecord["ID"], "time" => $time, "date" => $date, "link" => $arRecord["DETAIL_PAGE_URL"], "name" => \Hawkart\Megatv\CScheduleTemplate::cutName(\Hawkart\Megatv\ProgTable::getName($arRecord), 35), "image" => $img, "category" => array("link" => $arResult["CATEGORIES"][$arRecord["UF_CATEGORY"]], "name" => $arRecord["UF_CATEGORY"]), "button" => $content, "status" => "status-" . $status); $arRecords[] = $_arRecord; unset($_arRecord); } //$arRecords["date"] = $date; echo json_encode($arRecords); die; } if (count($arResult["PROGS"]) > 0) { $arResult["PROGS"] = \Hawkart\Megatv\CScheduleView::setIndex(array("PROGS" => $arResult["PROGS"])); } $this->IncludeComponentTemplate();
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; }
<?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(), "BACK_URL" => $_SERVER['HTTP_REFERER']); //Get prog detail $arFilter = array("=UF_CODE" => $arParams["ELEMENT_CODE"]); $arSelect = array("ID", "UF_TITLE", "UF_SUB_TITLE", "UF_IMG_PATH" => "UF_IMG.UF_PATH", "UF_RATING", "UF_DESC", "UF_SUB_DESC", "UF_GANRE", "UF_YEAR_LIMIT", "UF_COUNTRY", "UF_YEAR", "UF_DIRECTOR", "UF_PRESENTER", "UF_ACTOR", "UF_CATEGORY"); $obCache = new \CPHPCache(); if ($obCache->InitCache(86400, serialize($arFilter) . serialize($arSelect), "/prog-detail/")) { $arResult = $obCache->GetVars(); } elseif ($obCache->StartDataCache()) { $result = \Hawkart\Megatv\ProgTable::getList(array('filter' => $arFilter, 'select' => $arSelect, 'limit' => 1)); if ($arResult = $result->fetch()) { $arResult["UF_PROG_ID"] = $arResult["ID"]; $arResult["PICTURE"]["SRC"] = \Hawkart\Megatv\CFile::getCropedPath($arResult["UF_IMG_PATH"], array(600, 600)); $arResult["KEYWORDS"] = array($arResult["UF_CATEGORY"], $arResult["UF_GANRE"]); } $obCache->EndDataCache($arResult); } //Get Shedule inform for prog if (empty($_REQUEST["event"])) { $arDate = \CTimeEx::getDateTimeFilter($arParams["DATETIME"]["SERVER_DATETIME"]); $dateStart = date("Y-m-d H:i:s"); $arFilter = array("=UF_PROG.UF_CODE" => $arParams["ELEMENT_CODE"], ">=UF_DATE_START" => new \Bitrix\Main\Type\DateTime($dateStart, 'Y-m-d H:i:s')); } else { $arFilter = array("=UF_PROG.UF_CODE" => $arParams["ELEMENT_CODE"], "=ID" => $_REQUEST["event"]); }
</div> </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;
/** * Clear tables & deleting images */ public static function clear() { ProgTable::deleteAll(); ScheduleTable::deleteAll(); //ChannelTable::deleteAll(); ImageTable::deleteAll(); \CDev::deleteOldFiles($_SERVER["DOCUMENT_ROOT"] . self::$cut_dir, 0); \CDev::deleteOldFiles($_SERVER["DOCUMENT_ROOT"] . self::$origin_dir, 0); }
public static function getProgsByRating() { $ids = array(); $arProgs = array(); $result = \Hawkart\Megatv\ProgTable::getList(array('filter' => array("=UF_ACTIVE" => 1), 'select' => array("ID", "UF_EPG_ID", "UF_GANRE"), 'order' => array("UF_RATING" => "DESC"))); while ($arSchedule = $result->fetch()) { if (in_array($arSchedule["UF_EPG_ID"], $ids)) { continue; } $ids[] = $arSchedule["UF_EPG_ID"]; $arSchedule["UF_GANRE"] = explode(",", $arSchedule["UF_GANRE"]); $arProgs[] = $arSchedule; } unset($ids); return $arProgs; }
<?php $DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__) . '/../'); define("NO_KEEP_STATISTIC", true); define("NOT_CHECK_PERMISSIONS", true); set_time_limit(0); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; echo date("H:i:s") . "\r\n"; $arProgsByRating = \Hawkart\Megatv\ProgTable::getProgsByRating(); $rsUsers = CUser::GetList($by = "id", $order = "asc", array("ACTIVE" => "Y"), array("FIELDS" => array("ID"))); while ($arUser = $rsUsers->GetNext()) { $arStatistic = \Hawkart\Megatv\CStat::getByUser($arUser["ID"]); $arRecommend = array("by_ganres" => \Hawkart\Megatv\CStat::getProgsByGanre($arProgsByRating, $arStatistic), "by_users" => \Hawkart\Megatv\CStat::getTopRateProg($arProgsByRating), "by_records" => \Hawkart\Megatv\CStat::getTopRateSerialByUser($arUser["ID"], $arStatistic)); $json = json_encode($arRecommend); \Hawkart\Megatv\CStat::saveRecommend($arUser["ID"], $json); } echo date("H:i:s") . "\r\n"; die;
$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 {
$duration = strtotime($arSchedule["UF_DATE_END"]) - strtotime($arSchedule["UF_DATE_START"]); $minutes = ceil($duration / 60); $gb = $minutes * 18.5 / 1024; $busy = floatval($arUser["UF_CAPACITY_BUSY"]) + $gb; if ($busy >= floatval($arUser["UF_CAPACITY"])) { exit(json_encode(array("status" => "require-space", "error" => "Не достаточно места на диске для записи"))); } else { if (in_array($arSchedule["UF_CHANNEL_BASE_ID"], $selectedChannels)) { $log_file = "/logs/sotal/sotal_" . date("d_m_Y_H") . ".txt"; \CDev::log(array("ACTION" => "PUT_TO_RECORD", "DATA" => array("SCHEDULE_ID" => $prog_time, "DATE" => date("d.m.Y H:i:s"))), false, $log_file); if ($update) { \Hawkart\Megatv\RecordTable::update($update_id, array("UF_DELETED" => 0)); } else { \Hawkart\Megatv\RecordTable::create($arSchedule); } //Inc rating for prog \Hawkart\Megatv\ProgTable::addByEpgRating($arSchedule["UF_PROG_EPG_ID"], 1); //change capacity for user $cuser = new \CUser(); $cuser->Update($arUser["ID"], array("UF_CAPACITY_BUSY" => $busy)); /** * Данные в статистику */ \Hawkart\Megatv\CStat::addByShedule($arSchedule["ID"], "record"); $status = "success"; } else { exit(json_encode(array("status" => "error", "error" => "Нельзя записать"))); } } } exit(json_encode(array("status" => $status)));
ini_set('mbstring.func_overload', '2'); ini_set('mbstring.internal_encoding', 'UTF-8'); global $USER, $APPLICATION; if (!is_object($USER)) { $USER = new \CUser(); } $arSerials = array(); $result = \Hawkart\Megatv\ProgTable::getList(array('filter' => array("!UF_EPG_SUB_ID" => false), 'select' => array("ID", "UF_TITLE", "UF_SERIA", "UF_SEASON", "UF_SOCIAL_VIDEO", "UF_EPG_ID"))); while ($arProg = $result->fetch()) { $arVideos = json_decode($arProg["UF_SOCIAL_VIDEO"], true); if (empty($arVideos["RUTUBE"])) { if ($rutube = \Hawkart\Megatv\Social\RutubeClient::search($arProg["UF_TITLE"], $arProg["UF_SEASON"], $arProg["UF_SERIA"])) { $arVideos["RUTUBE"] = $rutube; } } if (empty($arVideos["VK"])) { $title = $arProg["UF_TITLE"]; if (!empty($arProg["UF_SEASON"])) { $title .= ": сезон " . $arProg["UF_SEASON"]; } if (!empty($arProg["UF_SERIA"])) { $title .= " серия " . $arProg["UF_SERIA"]; } $vk = new \Hawkart\Megatv\Social\VkClient(); if ($video = $vk->searchOne($title)) { $arVideos["VK"] = $video; } } \Hawkart\Megatv\ProgTable::update($arProg["ID"], array("UF_SOCIAL_VIDEO" => json_decode($arVideos))); } die;