Отчет "Источники - Поисковые фразы"
960121
protected function adaptSourcesSearchPhrases()
    {
        $dataArray = [];

        //Формируем массив
        foreach ($this->data['data'] as $item) {
            $dataArray['data'][] = [
                'searchPhrase'            => $item['dimensions'][0]['name'],
                'searchEngineRoot'        => $item['dimensions'][1]['name'],
                'visits'                  => $item['metrics'][0],
                //Визиты
                'bounceRate'              => $item['metrics'][1],
                //Отказы %
                'pageDepth'               => $item['metrics'][2],
                //Глубина просмотра
                'avgVisitDurationSeconds' => date("i:s", $item['metrics'][3])
                //Время проведенное на сайте мин:сек.
            ];
        }

        //Итого и средние значения
        $dataArray['totals'] = [
            'visits'                  => $this->data['totals'][0],
            'bounceRate'              => $this->data['totals'][1],
            'pageDepth'               => $this->data['totals'][2],
            'avgVisitDurationSeconds' => date("i:s", $this->data['totals'][3]),
        ];

        $this->adaptData = $dataArray;
    }
146270
public function clientRenderContent()
    {
        /** @var TClientUI $page */
        $page = Eresus_Kernel::app()->getPage();
        $section = Html_SiteSection::createFromWebPage($page);

        if (!$this->isValidRequest())
        {
            $page->httpError(404);
        }

        if ($section->getOption('html.rel_canonical', true))
        {
            /*
             * TODO После выполнения https://github.com/Eresus/EresusCMS/issues/39
             * можно будет переделать
             */
            $headProperty = new ReflectionProperty('WebPage', 'head');
            $headProperty->setAccessible(true);
            $head = $headProperty->getValue($page);
            $head['content'] .= '<link rel="canonical" href="' . $section->getClientUrl() . '">';
            $headProperty->setValue($page, $head);
        }

        $html = $page->content;

        return $html;
    }
1049012
public static function check()
    {
        // Проверим значение установленной текущей локализации, если оно не входит в список доступных локализаций
        // установим локализацию по умолчанию
        if (!in_array(strtolower(self::$current_locale), self::$locales)) self::$current_locale = self::DEF;
    }
683010
function __smart_body_template_check()
	{
		if(!empty($this->attr['__smart_body_template_checked']))
			return;

		$this->attr['__smart_body_template_checked'] = true;

		if(!empty($this->attr['body_template']))
		{
			switch(pathinfo($this->attr['body_template'], PATHINFO_EXTENSION))
			{
				case 'tpl':
				{
					$this->attr['body_template_class'] = 'bors_templates_smarty';
					return;
				}
			}
		}

		$current_class = get_class($this);
		$class_files = $GLOBALS['bors_data']['classes_included'];
		$ext	= $this->body_template_ext();
		$suffix	= $this->body_template_suffix();
		$is_smart = $this->is_smart();

		while($current_class)
		{
			if(!($class_file = @$class_files[$current_class]))
			{
				$reflector = new ReflectionClass($current_class);
				$class_file = $reflector->getFileName();
			}

			if($base = preg_replace("!(.+/\w+)\..+?$!", "$1.", $class_file))
			{
				if($is_smart)
				{
					if($suffix && file_exists($bt = $base.$suffix.'.tpl'))
					{
						$this->attr['body_template'] = $bt;
						$this->attr['body_template_class'] = 'bors_templates_smarty';
						return;
					}

					// Было перед .html Из-за этого на страницах с переназначаемым расширением, типа
					// http://www.aviaport.ru/events/apczima2012/
					// грузились базовые формы.
					if(file_exists($bt = $base.$ext))
					{
						$this->attr['body_template'] = $bt;
						$this->attr['body_template_class'] = $this->body_template_class();
						return;
					}
					if(file_exists($bt = $base.'tpl.php'))
					{
						$this->attr['body_template'] = $bt;
						$this->attr['body_template_class'] = 'bors_templaters_php';
						return;
					}
					if(file_exists($bt = $base.'md'))
					{
						$this->attr['body_template'] = $bt;
						$this->attr['body_template_class'] = 'bors_templaters_markdown';
						return;
					}
					if(file_exists($bt = $base.'tpl'))
					{
						$this->attr['body_template'] = $bt;
						$this->attr['body_template_class'] = 'bors_templates_smarty';
						return;
					}
					if(file_exists($bt = $base.'haml') && class_exists('bors_templates_phaml'))
					{
						$this->attr['body_template'] = $bt;
						$this->attr['body_template_class'] = 'bors_templates_phaml';
						return;
					}
					if(file_exists($bt = $base.'html'))
					{
						$this->attr['body_template'] = $bt;
						$this->attr['body_template_class'] = 'bors_templates_smarty';
						return;
					}

					foreach(glob($base.'*') as $test_file)
					{
						$test_ext = str_replace($base, '', $test_file);
						switch($test_ext)
						{
							case 'bbh.tpl':
								$this->attr['body_template'] = $base.$test_ext;
								$this->attr['body_template_class'] = 'bors_templates_bbhtpl';
								continue;
							case 'lcml.tpl':
								$this->attr['body_template'] = $base.$test_ext;
								$this->attr['body_template_class'] = 'bors_templates_lcmltpl';
								continue;
							default:
								$class_name = 'bors_templates_'.str_replace('.', '', $test_ext);
								if(!class_exists($class_name))
									continue;

								$this->attr['body_template'] = $base.$test_ext;
								$this->attr['body_template_class'] = $class_name;
								continue;
						}
					}

					if(!empty($this->attr['body_template_class']))
						return;
				}
				else
				{
					if(file_exists($template_file = $base.$ext))
						return "xfile:{$template_file}";
				}
			}

			$current_class = get_parent_class($current_class);
		}
	}
84775
public function generate($dest_folder, $dest_name, $orig_ext)
    {
        // Убираем из имени файла цифры в скобках, если они есть
        $dest_name = preg_replace('/\(.+\)/i', '', $dest_name);

        $file_name = $dest_name . '.' . $orig_ext;

        $check = $dest_folder . $file_name;
        $inc = 1;
        while (is_readable($check) && is_file($check)) {
            $file_name = $dest_name . '(' . $inc . ').' . $orig_ext;
            $check = $dest_folder . $file_name;
            $inc++;
        }

        return $file_name;
    }
658304
public function init()
    {
        // Если гость ...
        if (Yii::$app->getUser()->isGuest) {
            // ... то корзину храним в сессии
            $this->basket = new SessionBasket();
        } else {
            // ... иначе в БД
            $this->basket = new DbBasket();
            $this->basket->idUser = Yii::$app->user->identity->getId();
        }

        $this->basket->owner  = $this;

        // Если в сессии осталась корзина, а пользователь уже не гость => сливаем в БД
        if(!is_null(Yii::$app->session->get($this->storageName, null)) && !Yii::$app->getUser()->isGuest) {
            $this->basket->merge();
        }

        // Кешируем товары
        // Это нужно, чтобы для проверки в корзине товар или нет, не делать запросы в БД для каждого товара
        $this->cache = $this->basket->getBasketProducts();
    }
18910
function getData (css, opts) {
	var helper = {};

	// удаляем комментарии
	css.walkComments(function (comment) {
		comment.remove();
	});

	// удаляем свойства и правила без данных
	css.walkRules(function (rule, i) {
		rule.walkDecls(function (decl, j) {
			if (!decl.value.match(dataRegexp)) {
				decl.remove();
			};

			if (rule.nodes.length === 0) {
				rule.remove();
			};
		});
	});
	css.walkAtRules(function (atRule) {
		if (atRule.nodes && atRule.nodes.length === 0) {
			atRule.remove();
		};

		if (atRule.name === 'font-face') {
			atRule.walkDecls(function (decl, j) {
				if (decl.prop === 'src') {
					if (!decl.value.match(dataRegexp)) {
						atRule.remove();
					};
				};
			});
		};
	});

	if (opts.pure) {

		// очищаем итоговый файл от дубликатов данных
		css.walkRules(function (rule, i) {
			rule.walkDecls(function (decl, j) {

				var arr;

				if (!helper.hasOwnProperty(decl.prop)) {
					helper[decl.prop] = [];
				};

				// запоминаем массив положений нужного свойства
				arr = helper[decl.prop];

				// получили индекс правила с нужными данными
				// если он есть
				var index = findValue(arr, decl.value);

				if ((arr.length === 0) || (index < 0)) {

					// запоминаем уникальные данные
					arr.push({
						pos: i,
						val: purifyValue(decl.value)
					});
				}
				else if (index >= 0) {

					// собираем селекторы с одинаковыми данными
					css.nodes[index].selector += ','+ rule.selector;
					css.nodes[index].selector = cleanSelector(css.nodes[index].selector);

					decl.remove();
				};

				// сохраняем нужный массив положений свойства
				helper[decl.prop] = arr;

			});

			if (rule.nodes.length === 0) {
				rule.remove();
			};
		});

		// после слияния правил могут остаться пустые медиавыражения
		css.walkAtRules(function (atRule) {
			if (atRule.nodes && atRule.nodes.length === 0) {
				atRule.remove();
			};
		});
	};
}
1213582
function get_inline($as_html = true) {
        if (!$as_html) {
            return $this->js_inline;
        }
        if (!count($this->js_inline))
            return '';
        $js_code = '';
        foreach ($this->js_inline as $js) {
            $js_code .= $this->prepare($js, $this->get_need_min_inline());
        }
        $js_code = trim($this->prepare($js_code, $this->get_need_min_inline()));
        if (!$js_code)
            return '';
        if (!$this->get_need_build_inline()) {
            return '<script type="text/javascript">
' . trim($js_code) . '
</script>';
        }
        //если требуется собирать инлайн скрипты в один внешний файл
        $build_name = $this->make_file_name($this->js_inline, 'js/inline', 'js');
        $this->require_build($build_name, $js);
        return $this->get_link(Helper::build_url($build_name)) . PHP_EOL;
    }
223565
public function getRegionString()
    {
        //Оно может быть не сохранено если определяли по ip
        $result = [];

        $result[] = ArrayHelper::getValue($this->data, 'region_with_type');
        $result[] = ArrayHelper::getValue($this->data, 'area_with_type');
        $result[] = ArrayHelper::getValue($this->data, 'city_with_type');
        $result[] = ArrayHelper::getValue($this->data, 'settlement_with_type');

        $result = array_unique($result);

        foreach ($result as $key => $value)
        {
            if (!$value)
            {
                unset($result[$key]);
            }
        }

        return implode(", ", $result);
    }
1223102
static function save_object($object, $content, $ttl = false)
	{
		$object_id = $object->id();

		$file = $object->static_file();
		if(!$file) // TODO: отловить
		{
			bors_debug::syslog('static-file-notice', "empty static_file() for ".$object->debug_title());
			return;
		}

		if(preg_match('/,new/', $file))
			bors_debug::syslog('static-file-logic-error', "New page for ".$object->debug_title());

		//TODO: отловить кеш-запись постов при добавлении нового сообщения. (class_id = 1)
		bors()->changed_save();

		// Если это просто обновление кеша, то у нас тут будет найденная запись из ::drop
		if(config('cache_database'))
		{
			if(!($cache = $object->attr('static_recreate_object')))
				$cache = bors_load_ex('cache_static', $file, array('no_load_cache' => true));
		}
		else
			$cache = NULL;

		$object_uri = $object->url_ex($object->page());
		$original_uri = $object->called_url();

		if(!$original_uri)
			$original_uri = $object_uri;

//		if($object->class_name() == 'balancer_board_topic' || $object->class_name() == 'forum_topic')
//			bors_debug::syslog('__cache_file_register', "file=".$file."\nobject=".$object->debug_title()."\npage=".$object->page()."\ncache=".($cache?'yes':'no'));

		$expire_time = time() + ($ttl === false ? $object->cache_static() : $ttl);
//		bors_debug::syslog('00time', "o={$object->debug_title()}; ttl=$ttl, cs=".$object->cache_static()."; mt=".date("r", $object->modify_time())."; expired=".date('r', $expire_time));

		if(($ic=config('internal_charset')) != ($oc=config('output_charset')))
			$content = iconv($ic, $oc.'//translit', $content);

		bors_function_include('fs/file_put_contents_lock');

		mkpath($dir = dirname($file), 0777);

		if(is_writable($dir))
		{
			file_put_contents_lock($file, $content);
			if(is_file($file))
			{
				// Скрываем, т.к. файл может не принадлежать нашему пользователю.
				@chmod($file, 0666);

				if(!($mt = $object->modify_time()))
					$mt = time();

				@touch($file, $mt, $expire_time);
			}
		}

		if(!file_exists($file) || !is_file($file))
			bors_debug::syslog('warning-filesystem', "Can't create static file.\n
	object: {$object}\n
	file: {$file} (fe=".file_exists($file)
		.';isf='.is_file($file)
		.';isw='.is_writable($dir).")");

		if(config('cache_database'))
		{
			if($cache)
			{
//				echo "Update $file<br/>\n";
				$cache->set_target_class_name($object->class_name(), true);
				$cache->set_target_class_id($object->class_id(), true);
				$cache->set_target_id($object->id(), true);
				$cache->set_target_page($object->page(), true);
				$cache->set_last_compile(time(), true);
				$cache->set_expire_time($expire_time, true);
				$cache->set_recreate($object->cache_static_recreate(), true);

				if($original_uri)
					$cache->set('original_uri', $original_uri, true);

				$cache->store();
			}
			else
			{
				$cache = bors_new('cache_static', array(
					'id' => $file,
					'original_uri' => $original_uri,
					'target_class_name' => $object->class_name(),
					'target_class_id' => $object->class_id(),
					'target_id' => $object->id(),
					'target_page' => $object->page(),
					'last_compile' => time(),
					'expire_time' => $expire_time,
					'recreate' => $object->cache_static_recreate(),
//					'bors_site' => BORS_SITE,
				));

//				config_set('debug_mysql_queries_log', false);

//				if($object->class_name() == 'balancer_board_topic' || $object->class_name() == 'forum_topic')
//					bors_debug::syslog('__cache_file_register2', "file=".$file."\nobject=".$object->debug_title()."\npage=".$object->page()."\ncache_id=".$cache->id()."\ncache_page=".$cache->target_page());
			}

			foreach(explode(' ', $object->cache_depends_on()) as $group_name)
				if($group_name)
					cache_group::register($group_name, $object);

			foreach($object->cache_parents() as $parent_object)
				cache_group::register($parent_object->internal_uri_ascii(), $object);

//			$object->set_was_cleaned(false);
		}

	}
664421
function sectionIndex()
    {
        /** @var TAdminUI $page */
        $page = Eresus_Kernel::app()->getPage();
        $root = Eresus_CMS::getLegacyKernel()->root.'admin.php?mod=pages&amp;';
        $this->cache['index_controls'] =
            $page->control('setup', $root.'id=%d') . ' ' .
            $page->control('position',
                array($root.'action=up&amp;id=%d',$root.'action=down&amp;id=%d')) . ' ' .
            $page->control('add', $root.'action=create&amp;owner=%d') . ' ' .
            $page->control('move', $root.'action=move&amp;id=%d') . ' ' .
            $page->control('delete', $root.'action=delete&amp;id=%d');
        $types = $this->loadContentTypes();
        for ($i=0; $i<count($types[0]); $i++)
        {
            $this->cache['content_types'][$types[1][$i]] = $types[0][$i];
        }
        $table = new AdminList;
        $table->setHead(array('text'=>'Раздел', 'align'=>'left'), 'Имя', 'Тип', 'Доступ', '');
        $table->addRow(array(admPagesRoot, '', '', '',
            array($page->control('add', $root.'action=create&amp;owner=0'), 'align' => 'center')));
        $table->addRows($this->sectionIndexBranch(0, 1));
        $result = $table->render();
        return $result;
    }
120818
function get(passwd) {
    const users   = {};
    
    passwd
        .split('\n')
        .forEach((line) => {
            passwd = passwd.replace(line, '');
            
            /* получаем первое слово строки */
            const name = line.substr(line, line.indexOf(':'));
            
            line = line.replace(name + ':x:', '');
            
            /* получаем uid */
            const uid = line.substr(line, line.indexOf(':'));
            
            if (!uid)
                return;
            
            users[uid] = name;
        });
    
    return users;
}
227340
function execute(O $o) {
		$c = df_customer($o['customer']); /** @var Customer $c */
		$s = df_customer_session(); /** @var Session $s */
		if ($s->getDfSsoId()) {
			$c[Schema::fIdC($s->getDfSsoProvider())] = $s->getDfSsoId();
			/**
			 * 2016-12-04
			 * Нельзя использовать здесь @see df_eav_update(),
			 * потому что наше поле не является атрибутом EAV,
			 * а является просто полем таблицы customer_entity.
			 */
			$c->save();
		}
		$s->unsDfSsoId()->unsDfSsoProvider()->unsDfSsoRegistrationData();
		$s->setDfNeedConfirm(df_customer_is_need_confirm($c));
	}
283529
private function init_request()
	{
		global $request;

		# Значения по умолчанию
		$request = array(
			'method' => $_SERVER['REQUEST_METHOD'],
			'scheme' => isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) ? 'https' : 'http',
			'host' => strtolower($_SERVER['HTTP_HOST']),
			'port' => '',
			'user' => isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : '',
			'pass' => isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : '',
			'path' => '',
			'query' => '',
			'fragment' => '',
			'referer' => isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '',
		);

		$request['url'] = $request['scheme'] . '://' . $request['host'] . $_SERVER['REQUEST_URI'];

		$request = array_merge($request, parse_url($request['url']));
		$request['file'] = substr($request['path'], strrpos($request['path'], '/')+1);
		if ($request['file'])
		{
			$request['path'] = substr($request['path'], 0, -strlen($request['file']));
		}

		# Создаем заготовку URL для GET-запросов с параметрами
		$request['link'] = $request['url'];
		if (substr($request['link'], -1) == '/')
		{
			$request['link'] .= '?';
		}
		elseif (strpos($request['link'], '?') === false)
		{
			$request['link'] .= '?';
		}
		else
		{
			$request['link'] .= '&';
		}

		if (is_null($this->path))
		{
			$s = $this->froot;
			$s = substr($s,
				strlen(realpath($_SERVER['DOCUMENT_ROOT'])) - (Eresus_Kernel::isWindows() ? 2 : 0));
			if (!strlen($s) || substr($s, -1) != '/')
			{
				$s .= '/';
			}
			$this->path = (substr($s, 0, 1) != '/' ? '/' : '').$s;
		}

		/*
		 * Установка свойств объекта $Eresus
		 * Должна выполняться ДО вызова __clearargs
		 */
		$root = $request['scheme'] . '://' . $request['host'] .
			($request['port'] ? ':'.$request['port'] : '');
		$this->root = $root.$this->path;
		$this->data = $this->root.'data/';
		$this->style = $this->root.'style/';


		# Сбор аргументов вызова
		$request['arg'] = __clearargs(array_merge($_GET, $_POST));
		# Разбивка параметров вызова скрипта
		$s = substr($request['path'], strlen($this->path));
		$request['params'] = $s ? explode('/', substr($s, 0, -1)) : array();

		$request['path'] = $root.$request['path'];

		# Обратная совместимость
		# <= 2.9
		$this->request = &$request;
        /**
         * @deprecated с 3.01
         */
		define('httpPath', $this->path);
        /**
         * @deprecated с 3.01
         */
		define('httpHost', $this->request['host']);
        /**
         * @deprecated с 3.01
         */
        define('httpRoot', $this->root);
        /**
         * @deprecated с 3.01
         */
		define('styleRoot', $this->style);
        /**
         * @deprecated с 3.01
         */
		define('dataRoot', $this->data);
        /**
         * @deprecated с 3.01
         */
		define('cookieHost', $this->request['host']);
        /**
         * @deprecated с 3.01
         */
		define('cookiePath', $this->path);
	}
873482
function asCanonicalArray() {
		/** @var string $_this */
		$_this = spl_object_hash($this);
		if (!isset(self::$_canonicalArray[$_this])) {
			/**
			 * @uses \Magento\Framework\Simplexml\Element::asCanonicalArray()
			 * может возвращать строку в случае,
			 * когда структура исходных данных не соответствует массиву.
			 */
			self::$_canonicalArray[$_this] = df_result_array(parent::asCanonicalArray());
		}
		return self::$_canonicalArray[$_this];
	}
227666
public function output()
    {
        if (strlen($this->redirect) > 0) {
            header("Location: " . $this->redirect);
            // echo "<script>window.location='{$this->redirect}'</script>";
            die;
        }
        if (WebApplication::$app->getRequest()->isBinaryRequest() == true) {
            // вывод  осуществляет  адресуемый   компонент
            return;
        }

        Header("Content-Type: text/html;charset=UTF-8");
        Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
        Header("Cache-Control: no-store,no-cache, must-revalidate");
        Header("Pragma: no-cache");
        Header("Last-Modified: Mon, 26 Jul 2100 05:00:00 GMT");

        if (WebApplication::$app->getRequest()->isAjaxRequest() == true) {
            echo $this->content;
            return;
        }

        if (strpos($this->content, "</head>") > 0) {
            $this->content = str_replace("</head>", $this->getJS() . "</head>", $this->content);
        } else {
            $this->content = $this->content . $this->getJS();
        }

        if (WebApplication::$app->getRequest()->isAjaxRequest() == false && $this->gzip === true && strpos($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip") !== false) {
            Header("Content-Encoding: gzip");
            echo gzencode($this->content . $this->getJS());
            return;
        }
        echo $this->content;
    }
164969
public static function view($type = 'block') {
    $build = array();

    $view = Views::getView('site_press_centre_last');
    $content = '';
    if (is_object($view)) {
      $view->setDisplay($type);
      $content = $view->buildRenderable();
    }

    // Создает HTML отображение материалов.
    $build['site_press_centre'] = array(
      '#theme' => 'site_press_centre',
      '#content' => $content,
    );

    return $build;
  }