Example #1
0
 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;
     }
 }
Example #2
0
            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();
Example #3
0
    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;
    }
Example #4
0
<?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"]);
}
Example #5
0
        	</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;
Example #6
0
 /**
  * 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);
 }
Example #7
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;
 }
Example #8
0
<?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;
Example #9
0
        $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 {
Example #10
0
    $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;