'EE282F', 'mw' => '005ed3', 'abtus' => 'e3131a', 'kramer' => '1e428f', 'proscreens' => '00b653', 'tls' => '2b83c9', 'a-ok' => 'ffcf00', ); static $mini_site_bg_text = array( 'eiki' => 'ffffff', 'mw' => 'ffffff', 'abtus' => 'ffffff', 'kramer' => 'ffffff', 'proscreens' => 'ffffff', 'tls' => 'ffffff', 'a-ok' => '393939', ); static function initialize() { CMS::register_insertions( 'App_Utils','YMAP'); CMS::register_insertions( 'App_Utils','GUARANTEES'); CMS::register_insertions( 'App_Utils','DEALERS'); CMS::register_insertions( 'App_Utils','DEALERS_RESPONSES_CAROUSEL'); } // Для мини-сайта возвращает brand ID public static function getBrandId($site = '') { return CMS::$sites[$site ? $site : CMS::site()]['brand_id']; } // возвращает полное доменное имя public static function getDomain($site, $with_www = false) { if(!$site) $site = CMS::site(); if($_SERVER['IS_TECHART']) { $domain_name = ($site != '__' ? $site.'.' : '').'vega-msk.ru.projects.techart.ru'; } else { $domain_name = CMS::$sites[$site]['domain_name']; } if($with_www && !Core_Regexps::match('{^www\.}i', $domain_name)) $domain_name = 'www.'.$domain_name; $domain_name = ($_SERVER['IS_TECHART'] ? 'http://' : 'https://').$domain_name; return $domain_name; } // возвращает сокращенное доменное имя (для админки) public static function getShortDomain($site, $with_www = false) { if(!$site) $site = CMS::site(); if($_SERVER['IS_TECHART']) { $domain_name = ($site != '__' ? $site.'.' : '').'vega-msk.ru.projects.techart.ru'; } else { $domain_name = CMS::$sites[$site]['domain_name']; } if($with_www && !Core_Regexps::match('{^www\.}i', $domain_name)) $domain_name = 'www.'.$domain_name; return $domain_name; } // возвращает полное доменное имя public static function getSiteByBrandId($id) { if(!isset(CMS::$globals->domains)) { CMS::$globals->domains = array(); foreach(CMS::$sites as $code => $site) CMS::$globals->domains[$site['brand_id']] = $code; } return $id ? (isset(CMS::$globals->domains[$id]) ? CMS::$globals->domains[$id] : false) : CMS::$globals->domains; } public static function getForeignDomainByBrandId($id) { $domain_name = ''; $domain = $id ? self::getSiteByBrandId($id) : '__'; if($domain && CMS::site() != $domain && CMS::site() != '__') { if($_SERVER['IS_TECHART']) { $domain_name = 'http://'.($domain != '__' ? $domain.'.' : '').'vega-msk.ru.projects.techart.ru'; } else { $domain_name = 'https://'.CMS::$sites[$domain]['domain_name']; } } return $domain_name; } // возвращает полное доменное имя для мини-сайтов (для vega-msk пустое) public static function getDomainMini($site = '__') { return $site == '__' ? '' : self::getDomain($site); } public static function makeIDs($src, $return_array = false) { $res = array(); if(is_numeric($src) && (int)$src > 0) return (int)$src; if(!is_array($src) && !is_string($src)) return false; if(is_string($src)) $ids = preg_split('{[^\d]+}',$src); if(is_array($src)) $ids = $src; foreach($ids as $id) if((int)$id > 0) $res[] = (int)$id; return $return_array ? $res : implode(',', $res); } public static function YMAP($map) { CMS::use_scripts('https://api-maps.yandex.ru/2.0/?'.($_SERVER['IS_TECHART'] ? '' : 'apikey=02e701ed-7a06-4c7a-9988-efafc5a95dc2&').'load=package.full&lang=ru-RU'); if($map == 'contacts_office') { $res = '
'; } if($map == 'contacts') { $res = '
'; } if($map == 'delivery_moscow') { $res = '
'; } return $res; } public static function getTarget($url) { return Core_Regexps::match('{^https?\:\/\/}', $url) ? ' target="_blank"' : ''; } public static function addAlt($content) { $content = Core_Regexps::replace_using_callback('{]+)>}', array('App_Utils', 'getAltCallback'), $content); return $content; } public static function getMiniSiteBG($site = false) { if(!$site) $site = CMS::site(); return $site != '__' ? self::$mini_site_bg[$site] : ''; } public static function getMiniSiteBGText($site = false) { if(!$site) $site = CMS::site(); return $site != '__' ? self::$mini_site_bg_text[$site] : ''; } public static function getAltCallback() { $args = func_get_args(); $img = $args[0][0]; $m = Core_Regexps::match_with_results('{alt\=([\'"])([^\'"]*)([\'"])}',$img); if(!$m) $img = Core_Regexps::replace('{ $v) { if($m = Core_Regexps::match_with_results('/^\s*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*$/i', $ip)) { $disabletext_ip[] = $m[1]; } } } $is_disabletext = true; foreach($disabletext_ip as $ip) { if(CMS::ip() == $ip) $is_disabletext = false; } return $is_disabletext; } public static function client_city() { $ip = CMS::ip(); $info = Component_GeoIP::info($ip); if ($info) { $country = $info->country(); if ($country->title == 'RU') { $city = $info->city(); if ($city) { return $city->title; } } } return false; } public static function is_mobile() { $useragent=$_SERVER['HTTP_USER_AGENT']; if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/) |klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))) { return true; } return false; } public static function GUARANTEES() { $res = ''; if($guarantees_node = Component_TreeContent_Structure::find_by_url('/service/guarantees/', '__')) { $guarantees = $guarantees_node->items(999); foreach($guarantees as $row) { $ext = false; preg_match('{\.([^.]*)$}', $row->image_index, $m); if(in_array($m[1], array('pdf','zip','xls','ppt','docx','doc'))) $ext = $m[1]; $res .= '
Скачать '.trim($row->announce).'
'; } } return $res; } public static function DEALERS() { $res = CMS_Vars::get('dealers', '__'); return $res ? $res : ''; } public static function DEALERS_RESPONSES_CAROUSEL() { $res = ''; $rows = Component_TreeContent::items('/for-dealers/responses/', 999)->select(); if ($rows->count()) { CMS::use_scriptS('jquery/slick.min.js'); CMS::use_styles('jquery/slick.css'); $res .= ' '; } return $res ? $res : ''; } public function first_sentence($text, $max_chars = false) { $text = trim(strip_tags($text)); $pos = mb_strpos($text, '.'); if ($pos) $pos = $pos + 1; if ($max_chars) { $max_chars = (int)$max_chars; if ($pos > $max_chars || !$pos) { $pos = $max_chars; } } if ($pos) { $text = mb_substr($text, 0, $pos); } return $text; } public static function branches($parms=array()) { $branches = array(); $is_detail = (bool)(isset($parms['detail']) && $parms['detail']); if ($node = Component_TreeContent_Structure::find_by_url('/branches/', '__')) { $subnodes = $node->subnodes(); foreach ($subnodes as $row) { $row->after_find(); if (!$is_detail) { $branches[$row->id] = $row->title; } else { $branches[$row->id] = array('title' => $row->title, 'short_title_rod' => $row->parms['short_title_rod'], 'url' => $row->generate_url()); } } } return $branches; } }