public function up()
 {
     $arHlData = array('FIELDS' => array('UF_DATETIME' => array('N', 'datetime', array('EDIT_FORM_LABEL' => array('ru' => 'Дата добавления'), 'LIST_COLUMN_LABEL' => array('ru' => 'Дата добавления')))));
     global $APPLICATION;
     \Bitrix\Main\Loader::includeModule("highloadblock");
     $arHlblock = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter' => array('TABLE_NAME' => \Hawkart\Megatv\ProgExternalTable::getTableName())))->fetch();
     if ($arHlblock) {
         $oUserTypeEntity = new \CUserTypeEntity();
         $sort = 500;
         foreach ($arHlData['FIELDS'] as $fieldName => $fieldValue) {
             $aUserField = array('ENTITY_ID' => 'HLBLOCK_' . $arHlblock["ID"], 'FIELD_NAME' => $fieldName, 'USER_TYPE_ID' => $fieldValue[1], 'SORT' => $sort, 'MULTIPLE' => 'N', 'MANDATORY' => $fieldValue[0], 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'Y', 'EDIT_IN_LIST' => 'Y', 'IS_SEARCHABLE' => 'N', 'SETTINGS' => array());
             if (isset($fieldValue[2]) && is_array($fieldValue[2])) {
                 $aUserField = array_merge($aUserField, $fieldValue[2]);
             }
             $resProperty = \CUserTypeEntity::GetList(array(), array('ENTITY_ID' => $aUserField['ENTITY_ID'], 'FIELD_NAME' => $aUserField['FIELD_NAME']));
             if ($aUserHasField = $resProperty->Fetch()) {
                 $idUserTypeProp = $aUserHasField['ID'];
                 if ($oUserTypeEntity->Update($idUserTypeProp, $aUserField)) {
                     $this->out('Обновлено свойство - ' . $aUserField['FIELD_NAME']);
                 } else {
                     if ($ex = $APPLICATION->GetException()) {
                         $this->outError('Ошибка - ' . $ex->GetString());
                     }
                 }
             } else {
                 if ($idUserTypeProp = $oUserTypeEntity->Add($aUserField)) {
                     $this->out('Добавлено новое свойство - ' . $aUserField['FIELD_NAME']);
                 } else {
                     if ($ex = $APPLICATION->GetException()) {
                         $this->outError('Ошибка - ' . $ex->GetString());
                     }
                 }
             }
             $sort += 100;
         }
         //Import datetime to field from Json field
         $result = \Hawkart\Megatv\ProgExternalTable::getList(array('filter' => array(), 'select' => array("ID", "UF_JSON")));
         while ($row = $result->fetch()) {
             $datetime = $row["UF_JSON"]["created_ts"];
             if (!empty($datetime)) {
                 $datetime = new \Bitrix\Main\Type\DateTime(date("Y-m-d H:i:s", strtotime($datetime)), 'Y-m-d H:i:s');
                 \Hawkart\Megatv\ProgExternalTable::update($row["ID"], array("UF_DATETIME" => $datetime));
             }
         }
         $this->outSuccess('Все готово на %d%%', 100);
     }
 }
Exemple #2
0
    		<h3 class="block-title"><?php 
    echo $arChannel["UF_TITLE"];
    ?>
</h3>
    	</div>
    	<div class="block-body">
    		<a href="#" class="close-link" data-dismiss="modal"><span data-icon="icon-times"></span></a>
    		<div class="player-holder">
    			<div id="player"></div>
    		</div>
    	</div>
    </div>
    <?php 
} else {
    if (!preg_match("/^[\\d\\+]+\$/", $_GET["broadcastID"])) {
        $result = \Hawkart\Megatv\ProgExternalTable::getList(array('filter' => array("=UF_EXTERNAL_ID" => $_GET["broadcastID"]), 'select' => array("ID", "UF_TITLE", "UF_EXTERNAL_ID", "UF_THUMBNAIL_URL", "UF_VIDEO_URL", "UF_JSON")));
        if ($row = $result->fetch()) {
            $arVideo["VIDEO_URL"] = $row["UF_VIDEO_URL"];
            if (strpos($arVideo["VIDEO_URL"], "rutube") !== false && !empty($arVideo["VIDEO_URL"])) {
                $arVideo["VIDEO_URL"] = str_replace("play", "video", $arVideo["VIDEO_URL"]) . "?sTitle=false&sAuthor=false";
            } else {
                $doc = new DOMDocument();
                $doc->loadHTML($row["UF_JSON"]["html"]);
                $arVideo["VIDEO_URL"] = $doc->getElementsByTagName('iframe')->item(0)->getAttribute('src');
            }
            $arVideo["NAME"] = $row["UF_TITLE"];
        }
        ?>
        <div class="broadcast-player" data-module="broadcast-player">
        	<script type="text/x-config">
        		{
Exemple #3
0
$arFilter = array("=UF_EPG_ID" => $_REQUEST["EPG_ID"]);
$arSelect = array("ID", "UF_TITLE", "UF_DESC");
$obCache = new \CPHPCache();
if ($obCache->InitCache(86400, serialize($arFilter) . serialize($arSelect), "/serialByEpgID/")) {
    $arResult["SERIAL"] = $obCache->GetVars();
} elseif ($obCache->StartDataCache()) {
    $result = \Hawkart\Megatv\SerialTable::getList(array('filter' => $arFilter, 'select' => $arSelect));
    if ($row = $result->fetch()) {
        $arResult["SERIAL"] = $row;
    }
    $obCache->EndDataCache($arResult["SERIAL"]);
}
$arFilter = array("=UF_SERIAL.UF_EPG_ID" => $_REQUEST["EPG_ID"]);
$arSelect = array("ID", "UF_TITLE", "UF_EXTERNAL_ID", "UF_THUMBNAIL_URL");
$obCache = new \CPHPCache();
if ($obCache->InitCache(86400, serialize($arFilter) . serialize($arSelect), "/serialProgExList/")) {
    $arResult["ITEMS"] = $obCache->GetVars();
} elseif ($obCache->StartDataCache()) {
    $result = \Hawkart\Megatv\ProgExternalTable::getList(array('filter' => $arFilter, 'select' => $arSelect));
    while ($row = $result->fetch()) {
        if (strpos($row["UF_THUMBNAIL_URL"], "rutube") !== false) {
            $row["UF_THUMBNAIL_URL"] .= "?size=m";
        }
        $arResult["ITEMS"][] = $row;
    }
    $obCache->EndDataCache($arResult["ITEMS"]);
}
$APPLICATION->SetTitle($arResult["SERIAL"]["UF_TITLE"]);
$APPLICATION->SetPageProperty($arResult["SERIAL"]["UF_TITLE"]);
$APPLICATION->SetPageProperty("description", TruncateText($arResult["SERIAL"]["UF_DESC"], 256));
$this->IncludeComponentTemplate();
Exemple #4
0
 /**
  * Import all serials href from resource to db 
  */
 public static function importSerialsByWeek()
 {
     $arTableSerials = array();
     $result = \Hawkart\Megatv\SerialTable::getList(array('filter' => array("!UF_EPG_ID" => false, "UF_EXTERNAL_URL" => "%rutube%"), 'select' => array("ID", "UF_TITLE", "UF_EXTERNAL_URL")));
     while ($row = $result->fetch()) {
         $serial_id = preg_replace("/[^0-9]/", "", $row["UF_EXTERNAL_URL"]);
         $arTableSerials[$serial_id] = $row;
     }
     foreach ($arTableSerials as $serial_id => $arSerial) {
         $arTableItems = array();
         $result = \Hawkart\Megatv\ProgExternalTable::getList(array('filter' => array("=UF_SERIAL_ID" => $arSerial["ID"]), 'select' => array("ID", "UF_SERIAL_ID", "UF_EXTERNAL_ID")));
         while ($row = $result->fetch()) {
             $arTableItems[] = $row["UF_EXTERNAL_ID"];
         }
         $arItems = self::search($arSerial["UF_TITLE"], "week", $serial_id);
         /**
          * Add items for serials in db table
          */
         foreach ($arItems as $arItem) {
             if (!in_array($arItem["ID"], $arTableItems)) {
                 $arFields = array("UF_TITLE" => $arItem["TITLE"], "UF_EXTERNAL_ID" => $arItem["ID"], "UF_SERIAL_ID" => $arSerial["ID"], "UF_THUMBNAIL_URL" => $arItem["THUMBNAIL_URL"], "UF_VIDEO_URL" => $arItem["VIDEO_URL"], "UF_JSON" => $arItem["JSON"]);
                 $result = \Hawkart\Megatv\ProgExternalTable::add($arFields);
                 if ($result->isSuccess()) {
                     $arTableItems[] = $arItem["ID"];
                 } else {
                     $errors = $result->getErrorMessages();
                 }
             }
         }
     }
 }
Exemple #5
0
} else {
    $APPLICATION->SetTitle($arResult["PAGE_TITLE"]);
    $APPLICATION->SetPageProperty("description", TruncateText($arResult["UF_DESCRIPTION"], 256));
    $APPLICATION->SetDirProperty("h1", $arResult["UF_H1"] ? $arResult["UF_H1"] : $arResult["UF_TITLE"]);
    //FOR SEO
    $url_params = parse_url($_SERVER["REQUEST_URI"]);
    if (substr($url_params["path"], -1) != "/") {
        $url = $url_params["path"] . "/";
        if (!empty($url_params["query"])) {
            $url .= "?" . $url_params["query"];
        }
        LocalRedirect($url, false, "301 Moved permanently");
    }
}
$offset = 0;
if ($_REQUEST["AJAX"] == "Y") {
    $offset = $_REQUEST["offset"];
}
$arResult["PROGS"] = array();
$result = \Hawkart\Megatv\ProgExternalTable::getList(array('filter' => array("UF_SERIAL.UF_CHANNEL_ID" => '%"' . $arResult['UF_CHANNEL_BASE_ID'] . '"%'), 'select' => array("ID", "UF_TITLE", "UF_EXTERNAL_ID", "UF_THUMBNAIL_URL", "UF_JSON"), 'order' => array("UF_DATETIME" => "DESC"), 'limit' => $arParams["NEWS_COUNT"], 'offset' => $offset));
while ($row = $result->fetch()) {
    if (strpos($row["UF_THUMBNAIL_URL"], "rutube") !== false) {
        $row["UF_THUMBNAIL_URL"] .= "?size=m";
    }
    $arResult["ITEMS"][] = $row;
}
/**
 * Add data to statistics
 */
//\Hawkart\Megatv\CStat::channelAdd($arResult["ID"]);
$this->IncludeComponentTemplate();
Exemple #6
0
 /**
  * Import all serials href from resource to db 
  */
 public static function importSerials()
 {
     $arToFile = array();
     $file_50_60 = $_SERVER['DOCUMENT_ROOT'] . "/upload/serials_50_60.txt";
     /**
      * Get all prog which are serials
      */
     $arSerials = array();
     $date_prevprev = date('Y-m-d', strtotime("-2 day"));
     $arFilter = array(">=UF_DATE_START" => new \Bitrix\Main\Type\DateTime($date_prevprev . " 00:00:00", 'Y-m-d H:i:s'), "<UF_DATE_START" => new \Bitrix\Main\Type\DateTime($date_prevprev . " 23:59:59", 'Y-m-d H:i:s'), "!UF_PROG.UF_EPG_SUB_ID" => false);
     $arSelect = array("ID", "SID" => "UF_PROG.UF_EPG_ID", "TITLE" => "UF_PROG.UF_TITLE", "SUB_TITLE" => "UF_PROG.UF_SUB_TITLE", "SERIA" => "UF_PROG.UF_SERIA", "SEASON" => "UF_PROG.UF_SEASON", "UF_DATE_START", "UF_DATE_END");
     $result = \Hawkart\Megatv\ScheduleTable::getList(array('filter' => $arFilter, 'select' => $arSelect));
     while ($arSchedule = $result->fetch()) {
         $arSchedule["UF_DATE_START"] = $arSchedule["DATE_START"] = $arSchedule['UF_DATE_START']->toString();
         $arSchedule["UF_DATE_END"] = $arSchedule["DATE_END"] = $arSchedule['UF_DATE_END']->toString();
         $arSerials[] = $arSchedule;
     }
     /**
      * Get all serials with epg_id
      */
     $arTableSerials = array();
     $result = \Hawkart\Megatv\SerialTable::getList(array('filter' => array("!UF_EPG_ID" => false), 'select' => array("ID", "UF_EPG_ID", "UF_CHANNEL_ID")));
     while ($row = $result->fetch()) {
         $arTableSerials[$row["UF_EPG_ID"]] = $row;
     }
     foreach ($arSerials as $arProg) {
         $title = $arProg["TITLE"];
         if (!empty($arProg["SUB_TITLE"])) {
             $title = $arProg["SUB_TITLE"] . ". " . $title;
         } else {
             if (!empty($arProg["SEASON"])) {
                 $title .= ": сезон " . $arProg["SEASON"];
             }
             if (!empty($arProg["SERIA"])) {
                 $title .= " серия " . $arProg["SERIA"];
             }
         }
         $seria_secs = strtotime($arProg["DATE_END"]) - strtotime($arProg["DATE_START"]);
         $youtube = new \Hawkart\Megatv\Social\YoutubeClient();
         $arVideos = $youtube->search($title);
         $arSerial = $arTableSerials[$arProg["SID"]];
         if (empty($arSerial)) {
             continue;
         }
         //Progs in table by serial_id
         $arTableItems = array();
         $result = \Hawkart\Megatv\ProgExternalTable::getList(array('filter' => array("=UF_SERIAL_ID" => $arSerial["ID"]), 'select' => array("ID", "UF_SERIAL_ID", "UF_EXTERNAL_ID")));
         while ($row = $result->fetch()) {
             $arTableItems[] = $row["UF_EXTERNAL_ID"];
         }
         foreach ($arVideos as $arItem) {
             //secs from youtube
             $time_parts = explode(":", $arItem["TIME"]);
             $secs = 60 * $time_parts[count($time_parts) - 2] + $time_parts[count($time_parts) - 1];
             if (count($time_parts) == 3) {
                 $secs = 60 * intval($time_parts[0]) + intval($time_parts[1]);
             } else {
                 $secs = 3600 * intval($time_parts[0]) + 60 * intval($time_parts[1]) + intval($time_parts[2]);
             }
             $time_perc = $secs / $seria_secs * 100;
             similar_text($title, $arItem["TITLE"], $perc);
             similar_text($arItem["TITLE"], $title, $perc_2);
             if (floatval($perc) < 60 && floatval($perc) >= 40) {
                 $arToFile[] = array("ORIGINAL_TITLE" => $title, "SOCIAL_TITLE" => $arItem["TITLE"], "PERCENT" => $perc, "EXTERNAL_ID" => $arItem["ID"], "TIME" => $arItem["TIME"], "UF_SERIAL_ID" => $arSerial["ID"]);
             }
             if (floatval($perc) > 60 && floatval($perc_2) > 40 && $time_perc > 70) {
                 if (!in_array($arItem["ID"], $arTableItems)) {
                     $datetime = new \Bitrix\Main\Type\DateTime(date("Y-m-d H:i:s", strtotime($arItem["JSON"]["publishedAt"])), 'Y-m-d H:i:s');
                     $arFields = array("UF_TITLE" => $arItem["TITLE"], "UF_EXTERNAL_ID" => $arItem["ID"], "UF_SERIAL_ID" => $arSerial["ID"], "UF_THUMBNAIL_URL" => $arItem["THUMBNAIL_URL"], "UF_VIDEO_URL" => $arItem["VIDEO_URL"], "UF_JSON" => $arItem["JSON"], "UF_DATETIME" => $datetime);
                     $result = \Hawkart\Megatv\ProgExternalTable::add($arFields);
                     if ($result->isSuccess()) {
                         $arTableItems[] = $arItem["ID"];
                     } else {
                         $errors = $result->getErrorMessages();
                     }
                 }
                 break;
             }
         }
     }
     file_put_contents($file_50_60, json_encode($arToFile));
 }