public static function exportChannelCity() { $arRows = array(); $fp = fopen($_SERVER["DOCUMENT_ROOT"] . "/upload/channel_city.csv", 'w'); $firstStr = array("Субъект федерации" . "\t", "Город/Канал" . "\t"); $arChannelCity = array(); $arSelect = array("ID", "UF_CHANNEL_ID", "UF_CITY_ID", "UF_BASE_ID" => "UF_CHANNEL.UF_BASE_ID", "UF_EPG_ID" => "UF_CHANNEL.UF_EPG_ID"); $result = ChannelCityTable::getList(array('filter' => array(), 'select' => $arSelect)); while ($arItem = $result->fetch()) { $arChannelCity[$arItem["UF_CITY_ID"]][$arItem["UF_BASE_ID"]] = $arItem["UF_EPG_ID"]; } $arCities = array(); $arFilter = array("UF_COUNTRY.UF_TITLE" => "Россия", "UF_ACTIVE" => 1); $arSelect = array("ID", "UF_TITLE", "UF_REGION"); $result = CityTable::getList(array('filter' => $arFilter, 'select' => $arSelect, 'order' => array("UF_TITLE" => "ASC"))); while ($arCity = $result->fetch()) { $arCities[$arCity["ID"]] = $arCity; } $arChannels = array(); $arFilter = array("UF_ACTIVE" => 1); $arSelect = array("ID", "UF_TITLE"); $result = ChannelBaseTable::getList(array('filter' => $arFilter, 'select' => $arSelect)); while ($arChannel = $result->fetch()) { $arChannels[$arChannel["ID"]] = $arChannel["UF_TITLE"]; $firstStr[] = $arChannel["UF_TITLE"] . "\t"; } $arRows[] = $firstStr; fputcsv($fp, $firstStr, ";"); foreach ($arCities as $city_id => $arCity) { $arStr = array($arCity["UF_REGION"], $arCity["UF_TITLE"]); foreach ($arChannels as $channel_id => $channel_title) { $arStr[] = (string) $arChannelCity[$city_id][$channel_id] . "\t"; } $arRows[] = $arStr; fputcsv($fp, $arStr); } fclose($fp); $fileName = 'channel_city.csv'; header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header('Content-Description: File Transfer'); header("Content-type: text/csv"); header("Content-Disposition: attachment; filename={$fileName}"); header("Expires: 0"); header("Pragma: public"); $fh = @fopen('php://output', 'w'); foreach ($arRows as $data) { fputcsv($fh, $data, ";"); } fclose($fh); exit; }
/** * import channel & city info connection */ public static function import() { $arChannelCity = array(); $arFilter = array(); $arSelect = array("ID", "UF_CHANNEL_ID", "UF_CITY_ID"); $result = ChannelCityTable::getList(array('filter' => $arFilter, 'select' => $arSelect)); while ($arItem = $result->fetch()) { $arChannelCity[$arItem["UF_CHANNEL_ID"] . "-" . $arItem["UF_CITY_ID"]] = $arItem["ID"]; } $arCities = array(); $arFilter = array("UF_COUNTRY.UF_TITLE" => "Россия", "UF_ACTIVE" => 1); $arSelect = array("ID", "UF_TITLE"); $result = CityTable::getList(array('filter' => $arFilter, 'select' => $arSelect)); while ($arCity = $result->fetch()) { $arCities[$arCity["UF_TITLE"]] = $arCity["ID"]; } $arChannels = array(); $arFilter = array(); $arSelect = array("ID", "UF_EPG_ID"); $result = ChannelTable::getList(array('filter' => $arFilter, 'select' => $arSelect)); while ($arChannel = $result->fetch()) { $arChannels[$arChannel["UF_EPG_ID"]] = $arChannel["ID"]; } $file = $_SERVER["DOCUMENT_ROOT"] . "/local/modules/hawkart.megatv/data/channel_city.csv"; $lines = file($file); foreach ($lines as $line_num => $line) { $arItem = explode(";", $line); $city = trim($arItem[0]); foreach ($arItem as $value) { if (strpos($value, "channel_id=") !== false) { $channel_epg_id = str_replace("channel_id=", "", $value); $channel_epg_id = trim($channel_epg_id); $city_id = $arCities[$city]; $channel_id = $arChannels[$channel_epg_id]; if (intval($arChannelCity[$channel_id . "-" . $city_id]) == 0 && intval($city_id) > 0 && intval($channel_id) > 0) { //echo $city." ".$channel_epg_id."<br />"; $arFields = array("UF_CITY_ID" => $city_id, "UF_CHANNEL_ID" => $channel_id); //\CDev::pre($arFields); $result = ChannelCityTable::add($arFields); if ($result->isSuccess()) { $id = $result->getId(); $arChannelCity[$channel_id . "-" . $city_id] = $id; } } } } } }
/** * Get active channels by city * * @return array */ public static function getActiveByCity() { $arChannels = array(); $arFilter = array("=UF_CHANNEL.UF_BASE.UF_ACTIVE" => 1, "=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_PRICE' => 'UF_CHANNEL.UF_BASE.UF_PRICE_H24'); $arSort = array("UF_CHANNEL.UF_BASE.UF_SORT" => "ASC"); $obCache = new \CPHPCache(); if ($obCache->InitCache(86400, serialize($arFilter) . serialize($arSelect) . serialize($arSort), "/channels_active/")) { $arChannels = $obCache->GetVars(); } elseif ($obCache->StartDataCache()) { $result = \Hawkart\Megatv\ChannelCityTable::getList(array('filter' => $arFilter, 'select' => $arSelect, 'order' => $arSort)); while ($row = $result->fetch()) { $row["ID"] = $row["UF_CHANNEL_ID"]; $row["DETAIL_PAGE_URL"] = "/channels/" . $row['UF_CODE'] . "/"; $arChannels[] = $row; } $obCache->EndDataCache($arChannels); } return $arChannels; }
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"); $arResult["CHANNELS_SHOW"] = json_decode($arSubscriptionChannels, true);
<?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"; global $USER, $APPLICATION; if (!is_object($USER)) { $USER = new CUser(); } //\Hawkart\Megatv\ChannelCityTable::deleteAll(); \Hawkart\Megatv\ChannelCityTable::import(); echo "is done"; die;