Пример #1
0
 /**
  *
  * @return \MH\FrontSite
  */
 public static function o()
 {
     if (self::$_o == NULL) {
         self::$_o = new self();
         self::$_o->_routerBootstrap();
     }
     return self::$_o;
 }
Пример #2
0
 /**
  * ¬озвращает представление даты в виде "X дней Y часов Z минут назад"
  * ≈сли с указанной в параметре $date даты прошло более $maxDays дней, то возвращает просто отформатированную функцией $this::formatDate дату
  * @param $date
  * @param int $maxDays
  * @return mixed
  */
 public function dateDiffStr($date, $maxDays = 1)
 {
     $now = new DateTime();
     $past = new DateTime();
     $past->setTimestamp($date);
     $dateInterval = $now->diff($past);
     if ($dateInterval->days < $maxDays) {
         $diffStrs = array();
         if ($dateInterval->h > 0) {
             $diffStrs[] = $dateInterval->h . ' ' . \MH\FrontSite::o()->text->plural($dateInterval->h, 'час', 'часа', 'часов');
         }
         if ($dateInterval->i > 0) {
             $diffStrs[] = $dateInterval->i . ' ' . \MH\FrontSite::o()->text->plural($dateInterval->i, 'минута', 'минуты', 'минут');
         }
         //            if ($dateInterval->s > 0) {
         //                $diffStrs[] = $dateInterval->s . ' ' . \MH\FrontSite::o()->text->plural($dateInterval->s, 'секунда', 'секунды', 'секунд');
         //            }
         if (count($diffStrs) > 0) {
             return join(' ', $diffStrs) . ' назад';
         } else {
             return $this->formatDate($date);
         }
     } else {
         return $this->formatDate($date);
     }
 }
Пример #3
0
 public function getLastUrl()
 {
     $cacheTime = 3600;
     $cacheId = "last_issue_url";
     $cacheDir = SITE_ID . '/issues';
     $cache = new CPhpCache();
     if ($cache->initCache($cacheTime, $cacheId, $cacheDir)) {
         return $cache->getVars();
     }
     CModule::IncludeModule("iblock");
     $arFilter = array("IBLOCK_ID" => $this->_iblock, 'ACTIVE_DATE' => "Y");
     $res = CIBlockElement::GetList(array("ACTIVE_FROM" => "DESC"), $arFilter, false, array("nTopCount" => 1), array("ID"));
     $arIssues = array();
     if ($arIssue = $res->GetNext()) {
         $url = \MH\FrontSite::o()->router->makeUrl('issues_issue', array('ID' => $arIssue['ID']));
     }
     if ($cache->startDataCache()) {
         $cache->endDataCache($url);
     }
     return $url;
 }
Пример #4
0
 public function _renderVotes($text)
 {
     if (stripos($text, '[vote]') !== false) {
         $text = preg_replace_callback('/\\[vote\\](\\d+?)\\[\\/vote\\]/si', function ($matches) {
             return '<div class="vote-article poll"><h2>опрос</h2><span class="mini-logo"></span>' . \MH\FrontSite::o()->vote->getById($matches[1], 'article') . '</div>';
         }, $text);
     }
     return preg_replace('/\\[vote\\](\\d+?)\\[\\/vote\\]/si', '', $text);
 }
Пример #5
0
<?php

$config = array('admin' => array(), 'front' => array(array('module' => 'main', 'event' => 'OnAfterUserAuthorize', 'handler' => array(\MH\FrontSite::o()->social, 'OnAfterUserAuthorizeHandler')), array('module' => 'main', 'event' => 'OnBeforeProlog', 'handler' => array(\MH\FrontSite::o()->social, 'OnBeforePrologHandler')), array('module' => 'main', 'event' => 'OnEndBufferContent', 'handler' => array(\MH\FrontSite::o()->publishingStatus, 'OnEndBufferContentHandler'))));
Пример #6
0
 public function __construct($url)
 {
     $this->_url = $url;
     $this->_config = \MH\FrontSite::o()->getConfig('expert');
 }
Пример #7
0
 public function checkBitrixUrlName(&$arFields)
 {
     $arNeedSections = array('articles');
     $config = \MH\FrontSite::o()->iblock->getConfig();
     $arIblocks = array();
     foreach ($arNeedSections as $section) {
         $id = $config[$section];
         if (is_array($config[$section])) {
             $id = $config[$section]['iblock'];
         }
         $arIblocks[] = $id;
     }
     if (in_array($arFields["IBLOCK_ID"], $arIblocks)) {
         global $USER;
         if (isset($arFields["CODE"]) && !$USER->IsAdmin()) {
             unset($arFields["CODE"]);
         }
         if ($arFields["ACTIVE"] != "Y") {
             return true;
         }
         $rsRes = CIBlockElement::GetList(array(), array("ID" => $arFields["ID"], "CODE" => false), false, false, array("ID", "CODE"));
         /*если это будет активный элемент, и кода еще нет*/
         if ($arRes = $rsRes->GetNext()) {
             $code = \MH\FrontSite::o()->text->getCodeByName($arFields["NAME"]);
             if (!$code) {
                 $error = true;
             }
             /*уникальность*/
             if (!$error) {
                 CModule::IncludeModule("iblock");
                 $arFilter = array("IBLOCK_ID" => $arFields["IBLOCK_ID"], "CODE" => $code);
                 $rsRes = CIBlockElement::GetList(array(), $arFilter, false, false, array("ID"));
                 if ($arRes = $rsRes->GetNext()) {
                     $error = true;
                 }
             }
             if (!$error) {
                 $arFields["CODE"] = $code;
             } else {
                 global $APPLICATION;
                 $APPLICATION->throwException("ѕроверьте правильность и уникальность названи¤");
                 return false;
             }
         }
     }
     return true;
 }
Пример #8
0
<?php

// подключаемые в head (headd), верхней части body (top-body) в нижней части body(bottom-body) скрипты
$socConfig = \MH\FrontSite::o()->getConfig('social');
$config = array('facebook' => array('head' => '<meta property="fb:app_id" content="' . $socConfig['facebook']['appId'] . '" /><meta content="article" property="og:type" />', 'top-body' => <<<FBTOP
<div id="fb-root"></div>
<script src="http://connect.facebook.net/ru_RU/all.js"></script>
<script type="text/javascript">
    FB.init({
        appId : '{$socConfig['facebook']['appId']}',
        channelUrl : 'http://'+window.document.location.hostname+'/static/channel.php',
        oauth : false,
        status : true, // check login status
        cookie : true, // enable cookies to allow the server to access the session
        xfbml : true // parse XFBML
    });
</script>
FBTOP
), 'vk' => array('head' => <<<VKHEAD
<script type="text/javascript" src="http://userapi.com/js/api/openapi.js?52"></script>
<script type="text/javascript">
  VK.init({apiId: {$socConfig['vkontakte']['appId']}, onlyWidgets: true});
</script>
VKHEAD
), 'twitter' => array('head' => <<<TWHEAD
<script src="http://platform.twitter.com/anywhere.js?id={$socConfig['twitter']['consumer_key']}&v=1" type="text/javascript"></script>
TWHEAD
));
Пример #9
0
<?php

// �������������� ���������
define('LOG_FILENAME', $_SERVER['DOCUMENT_ROOT'] . '/_sb/mh_log.txt');
include_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/php_interface/all/libraries/Site.php';
require_once 'FrontSite.php';
//require_once 'classes/Facebook/facebook.php';
// ������� �������������� ����� ������
\MH\FrontSite::o()->setErrorLevel();
AddEventHandler('main', 'OnEpilog', array(\MH\FrontSite::o()->meta, 'setupBitrixMeta'));
//AddEventHandler( 'iblock', 'OnBeforeIBlockElementAdd', Array( \MH\FrontSite::o()->url, 'getBitrixCodeByName' ) );
AddEventHandler('main', 'OnBeforeUserAdd', 'OnBeforeUserAddHandler');
AddEventHandler('main', 'OnAfterUserAuthorize', array(\MH\FrontSite::o()->social, 'OnBeforePrologHandler'));
CPageOption::setOptionString('main', 'nav_page_in_session', 'N');
COption::SetOptionString('main', 'component_cache_on', 'N', false, SITE_ID);
function OnBeforeUserAddHandler(&$arFields)
{
    if ($arFields['UF_RULES'] != '1' && empty($arFields['EXTERNAL_AUTH_ID'])) {
        global $APPLICATION;
        $APPLICATION->throwException("�� ������ ������� ������������ ����������");
        return false;
    }
}
function OnAfterUserAuthorizeHandler(&$arFields)
{
    $f = fopen($_SERVER['DOCUMENT_ROOT'] . '/bitrix/php_interface/md/log.txt', 'a+');
    global $USER;
    $rsUser = CUser::GetByID($USER->GetId());
    $arUser = $rsUser->Fetch();
    fwrite($f, "---start\n");
    if ($arUser['ID'] > 0 && $arUser['EXTERNAL_AUTH_ID'] == 'Facebook' && $arUser['UF_RULES'] != '1') {
Пример #10
0
 public function showFooterScript()
 {
     if ($this->_debug) {
         foreach ($this->_scripts['footer'] as $script) {
             if (file_exists($_SERVER['DOCUMENT_ROOT'] . $this->_path . $script)) {
                 echo '<script type="text/javascript" src="' . $this->_path . $script . '?' . \MH\FrontSite::o()->version . '"></script>' . "\r\n";
             }
         }
     } else {
         if ($scriptName = $this->getFooterScript()) {
             echo '<script src="' . $scriptName . '?' . \MH\FrontSite::o()->version . '"></script>';
         }
     }
 }