Записывает  значение  src  в зависимости  от  типа
*
347786
private function setSource()
    {
        if ($this->type == self::$DEFAULT_TYPE) {
            if (strlen($this->src) > 0)
                $this->setAttribute("src", $this->src);
        }

        if ($this->type == self::$URLDATA_TYPE) {
            $this->setAttribute("src", $this->getURLData());
        }

        if ($this->type == self::$DYNAMIC_TYPE) {
            $this->setAttribute("src", $this->owner->getURLNode() . "::" . $this->id . ':' . time() . '&binary=true');
        }
    }
236505
protected function adaptSourcesSummary()
    {
        $dataArray = [];

        //Формируем массив
        foreach ($this->data['data'] as $item) {
            $dataArray['data'][] = [
                'trafficSource'           => $item['dimensions'][0]['name'],
                'sourceEngine'            => $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;
    }
314895
public function output()
    {
        // Получим последнюю ошибку системы
        $lerror = error_get_last();

        // Коды ошибок которые останавливают скрипт
        $fatal_codes = array(1, 4, 16, 64);

        // Если была фатальная ошибка преобразуем её для вывода
        if (isset($lerror) && in_array($lerror['type'], $fatal_codes)) {
            // Выполним обработчик ошибки и преобразование её в наше представление
            $this->handler($lerror['type'], $lerror['message'], $lerror['file'], $lerror['line'], null, debug_backtrace(FALSE));
        }

        // Соберем представление ошибок в HTML
        $html = '';

        // Выведем файл CSS стилей, если он есть! и были ошибки
        if (sizeof($this->errors) && isset(self::$css{0})) $html .= '<style>' . self::$css . '</style>';

        // Индекс
        $index = 0;

        // Переберем ошибки которые были при выполнения скрипта
        foreach ($this->errors as & $error) {
            if ($error['class'] == '_core_debug') $html .= '<div class="_core_error _core_debug">' . $error['message'] . '</div>';
            else {
                $id = rand(0, 999999999) . rand(0, 9999999999);
                // Выведем ошибку
                $html .= '<div class="_core_error ' . $error['class'] . '">
						<input type="checkbox" id="eb_' . $id . '" class="_core_error_check_box">
						<label for="eb_' . $id . '" class="_core_error_label">
						<span class="_core_error_type">' . $error['type'] . '</span>
						<span class="_core_error_file">' . $error['file'] . '</span>
						<span class="_core_error_line">, стр. ' . $error['line'] . '</span>
						' . $error['message'] . '</label>
					</div>';
            }

            // Удалим ошибку которую мы вывели что бы она не вылезла внизу страницы повторно
            unset($this->errors[$index++]);
        }

        // Выведем блок для завершения вывода
        if ($index) $html .= '<div style="clear:both;"></div>';

        /*
        // Если єто отпечаток сайта - отправим ошибку на почту
        if( isset($GLOBALS["__CORE_SNAPSHOT"]) && $index )
        try { 	mail_send( 'info@samsonos.com','error@samsonos.com', $html, 'Ошибка PHP:'.url()->build() );	}
        catch (Exception $e) {}
        */

        // Если вывод ошибок включен
        if (self::$OUTPUT) echo $html;
    }
905149
public function validate()
    {
        $preFunctions = $this->getPreFunctions();
        $postFunctions = $this->getPostFunctions();
        $validators = $this->getValidators();

        ValidationHelper::validate($preFunctions);
        ValidationHelper::validate($postFunctions);
        ValidationHelper::validate($validators);

        $split = $this->getSplit();
        $join = $this->getJoin();

        $parent = $this->getParent();
        if ((null === $split) && (null === $join) && !($parent instanceof ActionDescriptor && ($parent->isFinish()))) {
            $errMsg = '';
            $id = (integer)$this->getId();
            if (is_numeric($id)) {
                $errMsg .= sprintf('#%s:', $id);
            }
            $errMsg .= 'Если не указано значение атрибутов split или join, необходимо указать';

            if (!$this->hasStep) {
                $errMsg .= ' id следующего шага';
                throw new InvalidWorkflowDescriptorException($errMsg);
            }

            $status = $this->getStatus();
            if (!$status) {
                $errMsg .= ' статус';
                throw new InvalidWorkflowDescriptorException($errMsg);
            }
        }
    }
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;
    }
1043357
public static function restore()
	{
		$dataForms = self::get();

		if ($dataForms != null)
		{
			// вставляем скрипт десериализации
			$script = self::insertScript();

			foreach ($dataForms as $idForm => $dataForm)
			{
				$script .= "
					<script language=\"javascript\" type=\"text/javascript\">
					$().ready(function()
					{
						$('#{$idForm}').populate({$dataForm});
					});
					</script>
				";
				return $script;
			}
		}
	}
1326856
function(models) {
        for (var i = 0, j = models.length; i < j; i++) {
            var model = models[i];

            // обнуляем попытки после завершения запроса
            model.retries = 0;
            // удаляем модель из списка запрашиваемых
            delete this._keys[model.key];
        }
    }
432721
function all($limit1=NULL, $limit2=NULL)
	{
		$args = func_get_args();
		if(count($args) == 0)
			$array = parent::all();
		elseif(count($args) == 1)
			// Формат all($limit)
			$array = parent::all($limit1);
		else
			// Формат all($page, $items_per_page)
			$array = parent::all($limit1, $limit2);

		return blib_array::factory($array);
	}
289063
public function init()
    {

        if ( empty( $this->action_save ) ){
            throw new HttpException(200, 'Ошибка контроллера. Не передано имя метода для сохранения файла (action).');
        }
        if ( empty( $this->action_read ) ){
            throw new HttpException(200, 'Ошибка виджета. Не передано имя метода для чтения данных (action).');
        }
        if ( empty( $this->action_write ) ){
            throw new HttpException(200, 'Ошибка виджета. Не передано имя метода записи данных (action).');
        }

        parent::init();
    }
338344
public function updateSettings()
    {
        /*
         * Загрузка логотипа
         */
        if (isset($_FILES['logoImage']['tmp_name']) &&
            is_uploaded_file($_FILES['logoImage']['tmp_name']))
        {
            if (substr($_FILES['logoImage']['name'], -3) == 'png')
            {
                upload('logoImage', $this->getDataDir() .'/logo.png');
            }
            else
            {
                Eresus_Kernel::app()->getPage()
                    ->addErrorMessage('Логотип должен быть в формате PNG');
            }
        }

        try
        {
            $this->templates()->clientWrite('image-list.html', arg('tmplImageList'));
            $this->templates()->clientWrite('image-list.html', arg('tmplImageList'));
            $this->templates()->clientWrite('image-grouped-list.html', arg('tmplImageGroupedList'));
            $this->templates()->clientWrite('image.html', arg('tmplImage'));
            $this->templates()->clientWrite('popup.html', arg('tmplPopup'));
        }
        catch (Exception $e)
        {
            throw new RuntimeException(
                'Не удалось изменить один или несколько шаблонов. Подробная информация доступна в журнале.',
                0,
                $e);
        }

        parent::updateSettings();
    }
815410
def rl_marks(x):
    
    # простые замены, можно без регулярок
    replacements = (
        (u'(r)', u'\u00ae'), # ®
        (u'(R)', u'\u00ae'), # ®
        (u'(p)', u'\u00a7'), # §
        (u'(P)', u'\u00a7'), # §
        (u'(tm)', u'\u2122'), # ™
        (u'(TM)', u'\u2122'), # ™
    )
    patterns = (
        # копирайт ставится до года: © 2008 Юрий Юревич
        (re.compile(u'\\([cCсС]\\)\\s*(\\d+)', re.UNICODE), u'\u00a9\u202f\\1'),
        (r'([^+])(\+\-|\-\+)', u'\\1\u00b1'), # ±
        # градусы с минусом
        (u'\\-(\\d+)[\\s]*([FCС][^\\w])', u'\u2212\\1\202f\u00b0\\2'), # −12 °C, −53 °F
        # градусы без минуса
        (u'(\\d+)[\\s]*([FCС][^\\w])', u'\\1\u202f\u00b0\\2'), # 12 °C, 53 °F
        # ® и ™ приклеиваются к предыдущему слову, без пробела
        (re.compile(u'([A-Za-zА-Яа-я\\!\\?])\\s*(\xae|\u2122)', re.UNICODE), u'\\1\\2'),
        # No5 -> № 5
        (re.compile(u'(\\s)(No|no|NO|\u2116)[\\s\u2009]*(\\d+)', re.UNICODE), u'\\1\u2116\u2009\\3'),
    )

    for what, to in replacements:
        x = x.replace(what, to)
    return _sub_patterns(patterns, x)
728074
public function sendHeaders()
    {
        /* Отправляем основной заголовок */
        $statusText = $this->statusText ?: self::getStatusText($this->getStatusCode());
        $header = 'HTTP/'
            . $this->getProtocolVersion() . ' '
            . $this->getStatusCode() . ' '
            . $statusText;
        header($header, true, $this->getStatusCode());

        /* Отправляем дополнительные заголовки */
        foreach ($this->headers as $header)
        {
            header($header);
        }
        return $this;
    }
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;
}
776271
public function validate()
    {
        $commonActions = $this->getCommonActions();
        $actions = $this->getActions();
        $hasActions = $this->hasActions;

        if ($hasActions && 0 === count($commonActions) && 0 === $actions->count()) {
            $stepName = (string)$this->getName();
            $errMsg = sprintf('Шаг %s должен содержать одни действие или одно общее действие', $stepName);
            throw new InvalidWorkflowDescriptorException($errMsg);
        }

        if (-1 === $this->getId()) {
            $errMsg = 'В качестве id шага нельзя использовать -1, так как это зарезериврованное значение';
            throw new InvalidWorkflowDescriptorException($errMsg);
        }

        $preFunctions = $this->getPreFunctions();
        $postFunctions = $this->getPostFunctions();
        $actions = $this->getActions();
        $permissions = $this->getPermissions();

        ValidationHelper::validate($preFunctions);
        ValidationHelper::validate($postFunctions);
        ValidationHelper::validate($actions);
        ValidationHelper::validate($permissions);

        $workflowDescriptor = $this->getParent();
        if (!$workflowDescriptor instanceof WorkflowDescriptor) {
            $errMsg = sprintf('Родительский элемент для шага должен реализовывать %s', WorkflowDescriptor::class);
            throw new InvalidWorkflowDescriptorException($errMsg);
        }
        foreach ($commonActions as $actionId) {
            try {
                $commonActionReference = $workflowDescriptor->getCommonAction($actionId);

                if (null === $commonActionReference) {
                    $stepName = (string)$this->getName();
                    $errMsg = sprintf('Common-action %s указанное для шага %s не существует', $actionId, $stepName);
                    throw new InvalidWorkflowDescriptorException($errMsg);
                }
            } catch (\Exception $e) {
                $actionIdStr = (string)$actionId;
                $errMsg = sprintf('Некорректный id для common-action: id %s', $actionIdStr);
                throw  new InvalidWorkflowDescriptorException($errMsg, $e->getCode(), $e);
            }
        }
    }
1296774
public static function giveMeLinksDom($page, $withSlash = false, $withWww = false) {
		// символ 00 мешает DOM-парсеру
		$page = preg_replace('/\x00/', ' ', $page);

		// лишние углы
		$page = preg_replace('/<{2,}/', '<', $page);
		$page = str_replace(["&nbsp;", "\xc2\xa0"], ' ', $page);

		// приходит уже перекодированный в ютф8 текс, нужно заменить объявляения кодировки в тексте
		$page = preg_replace(['/windows-1251/i', '/cp1251/i'], 'utf-8', $page);
		// некоторые символы в ссылках кодируются, исправим это
		$page = preg_replace(['/&#0?61;/', '/&#0?38;/', '/&amp;/', '/&#0?37;/', '/&ndash;/'], ['=', '&', '&', '%', '–'], $page);
		// заменим закоменченый тег <!--noindex--> на обычный
		$c = 1;
		while ($c && $c > 0) {
			$page = preg_replace('/(\<\!--noindex--\>)(.*)(\<\!--\/noindex--\>)/ismU', '<noindex>$2</noindex>', $page, -1, $c);
		}
		$xml = new \DOMDocument();
		@$xml->loadHTML('<?xml encoding="UTF-8">' . $page);
		$links = array();
		foreach($xml->getElementsByTagName('a') as $link) {
			$href = $link->getAttribute('href');
			// ссылка без урла
			if(!$href || in_array($href, ["#", '/', 'javascript:void(0);'])) {
				continue;
			}
			// проверим элемент в <noindex>
			$noindex = self::inNoIndexDom($link);
			// проверим чтобы только элемент находился в noindex
			$noindexOnly = $noindex ? self::inNoIndexDom($link, true) : false;
			if(mb_strlen(utf8_decode($href)) <  mb_strlen($href)) {
				$href = utf8_decode($href);
			}
			$href = urldecode($href);

			$href = self::httpLess(trim($href));
			if (!$withWww) {
				$href = self::wwwLess($href);
			}

			if (!$withSlash) {
				$href = preg_replace(['/(\/\s*)$/i', '/(\/?#\s*)$/i'], '', $href);
			} else {
				$href = preg_replace(['/(\s*)$/i', '/(?#\s*)$/i'], '', $href);
			}

			$links[] = array(
				'acceptor' => mb_strtolower($href),
				'anchor' => $link->nodeValue,
				'rel' => $link->getAttribute('rel'),
				'noindex' => $noindex,
				'noindexOnly' => $noindexOnly
			);
		}

		return $links;
	}
299664
final function action() {return $this->_m->action(function() {
		$m = $this->_m; /** @var M $m */
		$this->preorder();
		$p = $this->redirectParams(); /** @var array(string => mixed) $p */
		if ($url = dfp_url_api($m, $this->redirectUrl())) { /** @var string|null $url */
			PO::setRedirectData($m, $url, $p, $this->forceGet());
			// 2016-12-20
			if ($this->s()->log()) {
				dfp_report($m, ['Redirect Params' => $p, 'Redirect URL' => $url], 'request');
			}
			// 2016-05-06
			// Postpone sending an order confirmation email to the customer,
			// because the customer should pass 3D Secure validation first.
			// «How is a confirmation email sent on an order placement?» https://mage2.pro/t/1542
			$this->oq()->setCanSendNewEmailFlag(false);
		}
		/**
		 * 2017-03-26
		 * Stripe-подобные платёжные модули типа Omise
		 * (и в перспективе, после надлежащего рефакторинга — Checkout.com),
		 * осуществляют проверку 3D Secure с перенаправлением браузера.
		 * Они записывают первичную транзакцию в методе @see \Df\StripeClone\Method::chargeNew()
		 * https://github.com/mage2pro/core/blob/2.4.0/StripeClone/Method.php#L117-L164
		 * В этом случае мы не попадаем в расположенную ниже ветку,
		 * потому что @uses transId() по умолчанию возвращает null,
		 * а указанные модули этот метод намеренно не перекрывают.
		 * 2017-03-29
		 * Транзакция может записываться и без перенаправления:
		 * например, при выборе опции Bank Transfer модуля Kassa Compleet.
		 */
		if ($id = $this->transId() /** @var string|null $id */) {
			$result = null;
			$m->ii()->setTransactionId($id); // 2016-07-10 Сохраняем информацию о транзакции.
			if (!$this->forceGet()) {
				/**
				 * 2017-03-26
				 * Некоторые модули (Ginger Payments, Kassa Compleet, QIWI Wallet) перенаправляют покупателя
				 * на платёжную страницу ПС без параметров POST: они передают параметры через URL.
				 * В этом случае данный вызов @uses \Df\Payment\Method::iiaSetTRR()
				 * безвреден (он ничего не сделает), а параметры запроса сохраняются в транзакции
				 * каким-то другим методом, например:
				 * @see \Df\GingerPaymentsBase\Init\Action::req()
				 * @see \Df\GingerPaymentsBase\Init\Action::res()
				 * @see \Dfe\Qiwi\Init\Action::preorder()
				 */
				$m->iiaSetTRR($p);
			}
			/**
			 * 2016-07-10
			 * @uses \Magento\Sales\Model\Order\Payment\Transaction::TYPE_PAYMENT —
			 * это единственный транзакция без специального назначения,
			 * и поэтому мы можем безопасно его использовать
			 * для сохранения информации о нашем запросе к платёжной системе.
			 */
			$m->ii()->addTransaction(T::TYPE_PAYMENT);
		}
		/**
		 * 2017-11-11
		 * We return `null` in the redirection case.
		 * The result of this method will be returned
		 * by the @used-by \Df\Payment\Method::getConfigPaymentAction() method
		 * to the @used-by \Magento\Sales\Model\Order\Payment::place() method:
		 *		$orderState = Order::STATE_NEW;
		 *		$orderStatus = $methodInstance->getConfigData('order_status');
		 *		<...>
		 *		$action = $methodInstance->getConfigPaymentAction();
		 *		if ($action) {
		 *			if ($methodInstance->isInitializeNeeded()) {
		 *				$stateObject = new \Magento\Framework\DataObject();
		 *				// For method initialization we have to use original config value for payment action
		 *				$methodInstance->initialize(
		 * 					$methodInstance->getConfigData('payment_action'), $stateObject
		 * 				);
		 *				$orderState = $stateObject->getData('state') ?: $orderState;
		 *				$orderStatus = $stateObject->getData('status') ?: $orderStatus;
		 *				$isCustomerNotified = $stateObject->hasData('is_notified')
		 *					? $stateObject->getData('is_notified')
		 *					: $isCustomerNotified;
		 *			} else {
		 *				$orderState = Order::STATE_PROCESSING;
		 *				$this->processAction($action, $order);
		 *				$orderState = $order->getState() ? $order->getState() : $orderState;
		 *				$orderStatus = $order->getStatus() ? $order->getStatus() : $orderStatus;
		 *			}
		 *		} else {
		 *			$order->setState($orderState)
		 *				->setStatus($orderStatus);
		 *		}
		 * This code is the same in Magento 2.0.0 - 2.2.1:
		 * https://github.com/magento/magento2/blob/2.0.0/app/code/Magento/Sales/Model/Order/Payment.php#L316-L343
		 * https://github.com/magento/magento2/blob/2.2.1/app/code/Magento/Sales/Model/Order/Payment.php#L348-L375
		 * As you can see, if $action is `null`,
		 * then the current order will have the @see \Magento\Sales\Model\Order::STATE_NEW state:
		 * it is what we need in the redirection case.
		 */
		return $url || $id ? null : $this->preconfigured();
	}, false);}
1225223
static function get_cached($url, $ttl = 86400, $raw = false, $force = false, $max_length = 1000000)
	{
		//FIXME: Придумать более изящный способ
		$cache_status_save = config('cache_disabled');
		config_set('cache_disabled', false);
		debug_count_inc('bors_lib_url: get_cached('.$url.')');
		$cache = new bors_cache();
		if($cache->get('bors_lib_http.get_cached-v2', $url) && !$force)
		{
			debug_count_inc('bors_lib_url: get_cached('.$url.'):found');
			$res = $cache->last();
			config_set('cache_disabled', $cache_status_save);
			return $res;
		}

		$x = self::get_ex($url, array('is_raw' => $raw));
		$content = $x['content'];

		// Запоминаем не более одного мегабайта, а то по max_allowed_packet можно влететь.
		if(strlen($content) > $max_length)
			$content = substr($content, 0, $max_length);

		debug_count_inc('bors_lib_url: get_cached('.$url.'):store');
		$cache->set($content, $ttl);
		config_set('cache_disabled', $cache_status_save);
		return $content;
	}