Стартовый метод

@version 16.01.2019
@author  Дмитрий Щербаков <atomcms@ya.ru>
9699
public function start()
    {
        $user_info = $this->dic['user'];
        if (is_array($user_info) && count($user_info) > 0) {
            $this->response->setData((new RunAfterGet($this->dic))->run($user_info));
        } else {
            $this->response->setData(Response::error401('Необходимо авторизоваться'));
        }

        $this->response->send();
    }
1059457
private function parseSql()
    {
        // Разбор многострочных комментариев
        if (preg_match_all('#/\*([\w|]+)(.+?)\*/#s', $this->sql, $matches)) {
            $count = count($matches[0]);
            for ($i = 0; $i < $count; $i++) {
                $this->replaceComment($matches[0][$i], $matches[2][$i], $matches[1][$i]);
            }
        }

        // Многоитерационный разбор однострочных комментариев
        while (true) {
            if (preg_match_all('#--\*([\w|]+)(.+)#', $this->sql, $matches)) {
                $count = count($matches[0]);
                for ($i = 0; $i < $count; $i++) {
                    $this->replaceComment($matches[0][$i], $matches[2][$i], $matches[1][$i]);
                }
            } else {
                break;
            }
        }

        // разбор переменных - массивов, которые находились изначально вне комментариев
        if (preg_match_all('#:@(\w+)#', $this->sql, $matches)) {
            $count = count($matches[0]);
            for ($i = 0; $i < $count; $i++) {
                $this->replaceComment($matches[0][$i], $matches[0][$i], $matches[1][$i], false);
            }
        }

        $this->sql = preg_replace("/\n+/", "\n", trim($this->sql));
    }
1078825
public function delete()
    {
        // нельзя удалить корневой раздел
        if ($this->id == 0) throw new Exception\CMS(Exception\CMS::NO_RIGHTS);
    
    	$tree = new CDBTree('dir_structure');
		
		$ids_arr = array($this->id);
		
		if (!$this->isLink()) {
    
			$r = self::getDbConnection()->query('SELECT A.data_id, A.level, C.tablename, D.alias 
							  FROM dir_structure A, dir_structure B, dir_data C, types D 
							  WHERE C.id=A.data_id and B.data_id='.$this->id.' and A.lft BETWEEN B.lft and B.rght and D.id=C.typ');
			
			while ($f = $r->fetch()) {
				try {
					$r1 = self::getDbConnection()->query('SELECT id FROM '.$f['alias'].' WHERE idcat='.$f['data_id']);
					while ($f1 = $r1->fetch(\PDO::FETCH_NUM)) {
					   $m = Material::getById($f1[0], 0, $f['alias']);
					   $m->delete();
					}
				} catch (Exception $e) {}
				$ids_arr[] = $f['data_id'];
			}
		
		}
    
    	$parent = array();
    	$r = self::getDbConnection()->query('SELECT A.id, B.data_id 
                          FROM dir_structure A, dir_structure B 
                          WHERE A.data_id='.$this->id.' and B.lft<A.lft and B.rght>A.rght and B.level=A.level-1
            			  ORDER BY A.lft DESC');
    	$res = TRUE;
    	while ($f = $r->fetch()) {
    		$parent[] = $f['data_id'];
    		if (!$tree->deleteAll($f['id'])) $res = FALSE;
    	} // while
		
    	if ($res && sizeof($ids_arr))
		{
    		$ids = implode(',',$ids_arr);
        
			self::getDbConnection()->executeQuery("DELETE FROM dir_data WHERE id IN ($ids)");
			self::getDbConnection()->executeQuery("DELETE FROM types_fields_catalogs WHERE catalog_id IN ($ids)");
        
    		$r = self::getDbConnection()->query("SELECT name FROM server_aliases WHERE id IN ($ids)");
    		while ($f = $r->fetch()) {
        		$slot = new Cache\Slot\ServerByDomain($f['name']);
        		$slot->remove();	
    		}
        
    		self::getDbConnection()->executeQuery("DELETE FROM server_aliases where id IN ($ids)");
			self::getDbConnection()->executeQuery("DELETE FROM theme_config where server_id IN ($ids)");
        
    		foreach ($ids_arr as $id1) {
        		self::getDbConnection()->executeQuery("DELETE FROM users_groups_allow_cat where catalog_id=$id1");
                $tpl = new Cache\Tag\CatalogID($id1);
                $tpl->clean();
    		}
			
			// удаляем разделы-ссылки, ссылающиеся на раздел
			$r = self::getDbConnection()->query('SELECT id FROM dir_data WHERE type&'.Catalog::LINKED.'>0 and typ IN ('.$ids.')'); 
			while ($f = $r->fetch()) {
				$c = Catalog::getById($f['id']);
				$c->delete();
			}			
    	}
    	
    	$this->updateCache();
    }
876645
private function actionAddDialog()
    {
        $form = array(
            'name' => 'add',
            'caption' => 'Добавление формы',
            'width' => '100%',
            'fields' => array(
                array('type' => 'hidden', 'name' => 'action', 'value' => 'create'),
                array('type' => 'edit', 'name' => 'title', 'label' => 'Описание',
                    'width' => '99%', 'value' => arg('title')),
                array('type' => 'edit', 'name' => 'name', 'label' => 'Имя',
                    'width' => '16em', 'value' => arg('name'), 'comment' =>
                'только латинские буквы, цифры, символы минус и подчёркивание',
                    'pattern' => '/^[\w\-]+$/i',
                    'errormsg' =>
                    'Имя формы может содержать только латинские буквы, цифры, символы минус и подчёркивание'),
                array('type' => 'text',
                    'value' =>
                    '&raquo; <b><a href="https://github.com/Eresus/EForms/wiki/%D0%AF%D0%B7%D1%8B%D0%BA-%D1%84%D0%BE%D1%80%D0%BC">' .
                    'Синтаксис форм</a></b>'),
                array('type' => 'memo', 'name' => 'code', 'height' => '30', 'syntax' => 'html',
                    'value' => arg('code') ? arg('code') :
                        '<form xmlns:ef="http://procreat.ru/eresus2/ext/eforms" method="post">' . "\n</form>"),
            ),
            'buttons' => array('ok', 'cancel'),
        );
        /** @var TAdminUI $page */
        $page = Eresus_Kernel::app()->getPage();
        return $page->renderForm($form);
    }
1203907
public function adminOnMenuRender()
	{
		/** @var TAdminUI $page */
		$page = Eresus_Kernel::app()->getPage();
		$page->addMenuItem(admExtensions, array(
			'access'  => EDITOR,
			'link'  => $this->name,
			'caption'  => 'Формы ввода',
			'hint'  => $this->description
		));
	}
38180
public function start()
    {
        //
        //                                     ,,
        //                       mm     mm     db
        //                       MM     MM
        //     ,pP"Ybd  .gP"Ya mmMMmm mmMMmm `7MM  `7MMpMMMb.  .P"Ybmmm ,pP"Ybd
        //     8I   `" ,M'   Yb  MM     MM     MM    MM    MM :MI  I8   8I   `"
        //     `YMMMa. 8M""""""  MM     MM     MM    MM    MM  WmmmP"   `YMMMa.
        //     L.   I8 YM.    ,  MM     MM     MM    MM    MM 8M        L.   I8
        //     M9mmmP'  `Mbmmd'  `Mbmo  `Mbmo.JMML..JMML  JMML.YMMMMMb  M9mmmP'
        //                                                    6'     dP
        //                                                    Ybmmmd'

        // Устанавливаем временные настройки
        date_default_timezone_set(Settings::TIMEZONE);
        setlocale(LC_TIME, 'ru_RU.UTF-8');

        // Где будут хранится php сессии (в файлах или в БД)
        if (Settings::PHP_SESSION === 'DB') {
            new \Zebra_Session(
                mysqli_connect(
                    Settings::DB_HOST,
                    Settings::DB_USER,
                    Settings::DB_PASSWORD,
                    Settings::DB_DATABASE,
                    Settings::DB_PORT
                ), 'AVuVqYR6uwgEuhV79tln0tlKk'
            );
        } else {
            session_start();
        }

        // Включим страницу с ошибками, если включен режим DEBUG
        if (Settings::DEBUG === true) {
            $whoops = new Run;
            $whoops->pushHandler(new PrettyPageHandler);

            if (Misc::isAjaxRequest()) {
                $jsonHandler = new JsonResponseHandler();
                $jsonHandler->setJsonApi(true);

                $whoops->pushHandler($jsonHandler);
            }

            $whoops->register();
        }

        // Настраиваем соединение с БД
        \ORM::configure([
            'connection_string' => 'mysql:host=' . Settings::DB_HOST . ';port=' . Settings::DB_PORT . ';dbname=' . Settings::DB_DATABASE,
            'username'          => Settings::DB_USER,
            'password'          => Settings::DB_PASSWORD,
            'logging'           => Settings::DEBUG,
            'driver_options'    => [
                \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
                \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
                \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
            ],
        ]);

        // Инициализируем CSRF-токен
        $csrf = new \DimNS\SimpleCSRF();
        $this->csrf_token = $csrf->getToken();

        // Определим корневую папку, если переменная не пустая
        if (Settings::PATH_SHORT_ROOT != '/') {
            $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'], strlen(Settings::PATH_SHORT_ROOT));
        }

        // Инициируем роутер
        $klein = new \Klein\Klein();

        //
        //
        //     `7MM"""Yb. `7MMF'
        //       MM    `Yb. MM
        //       MM     `Mb MM
        //       MM      MM MM
        //       MM     ,MP MM
        //       MM    ,dP' MM
        //     .JMMmmmdP' .JMML.
        //
        //

        // Создаем DI
        $klein->respond(function ($request, $response, $service, $di) use ($csrf) {
            // Регистрируем доступ к Carbon
            $di->register('carbon', function () {
                return Carbon::now(Settings::TIMEZONE);
            });

            // Регистрируем доступ к настройкам
            $di->register('cfg', function () {
                return new \MFLPHP\Configs\Config();
            });

            // Регистрируем доступ к управлению пользователем
            $di->register('auth', function () {
                $dbh = new \PDO('mysql:host=' . Settings::DB_HOST . ';port=' . Settings::DB_PORT . ';dbname=' . Settings::DB_DATABASE,
                    Settings::DB_USER,
                    Settings::DB_PASSWORD,
                    [
                        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
                        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
                        \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
                    ]
                );

                return new Auth($dbh, new Config($dbh, 'phpauth_config'), 'ru_RU');
            });

            // Регистрируем доступ к информации о пользователе
            $di->register('userinfo', function () use ($di) {
                if ($di->auth->isLogged()) {
                    $user_id = $di->auth->getSessionUID($di->auth->getSessionHash());

                    $user_info = \ORM::for_table('users')
                        ->join('users_info', ['users.id', '=', 'users_info.uid'])
                        ->where_equal('id', $user_id)
                        ->find_one();
                    if (is_object($user_info)) {
                        return $user_info;
                    }
                }

                return false;
            });

            // Регистрируем доступ к PHPMailer
            $di->register('phpmailer', function () use ($di) {
                $phpmailer = new \PHPMailer();

                $phpmailer->setLanguage('ru', $di->cfg->abs_root_path . 'vendor/phpmailer/phpmailer/language/');
                $phpmailer->IsHTML(true);
                $phpmailer->CharSet = 'windows-1251';
                $phpmailer->From = $di->auth->config->site_email;
                $phpmailer->FromName = iconv('utf-8', 'windows-1251', $di->auth->config->site_name);

                if ('1' == $di->auth->config->smtp) {
                    $phpmailer->IsSMTP();
                    $phpmailer->SMTPDebug = 0;
                    $phpmailer->SMTPAuth = true;
                    $phpmailer->SMTPSecure = $di->auth->config->smtp_security;
                    $phpmailer->Host = $di->auth->config->smtp_host;
                    $phpmailer->Port = $di->auth->config->smtp_port;
                    $phpmailer->Username = $di->auth->config->smtp_username;
                    $phpmailer->Password = $di->auth->config->smtp_password;
                }

                return $phpmailer;
            });

            // Регистрируем доступ к отправке почты
            $di->register('mail', function () use ($di) {
                return new EmailSender($di);
            });

            // Регистрируем доступ к логгеру Monolog
            $di->register('log', function () use ($di) {
                $log = new Logger('MainLog');
                $log->pushHandler(new StreamHandler($di->cfg->abs_root_path . 'errors.log', Logger::DEBUG));

                return $log;
            });

            // Регистрируем доступ к проверке CSRF-токена
            $di->register('csrf', function () use ($csrf) {
                return $csrf;
            });

            $views_path = $_SERVER['DOCUMENT_ROOT'] . Settings::PATH_SHORT_ROOT . 'app/Views/';

            $service->layout($views_path . 'layout-default.php');

            $service->csrf_token = $this->csrf_token;
            $service->path = Settings::PATH_SHORT_ROOT;
            $service->app_root_path = $_SERVER['DOCUMENT_ROOT'] . Settings::PATH_SHORT_ROOT . 'app';
            $service->uri = $request->uri();
            $service->di = $di;
        });

        //
        //
        //                                  mm
        //                                  MM
        //     `7Mb,od8 ,pW"Wq.`7MM  `7MM mmMMmm .gP"Ya  ,pP"Ybd
        //       MM' "'6W'   `Wb MM    MM   MM  ,M'   Yb 8I   `"
        //       MM    8M     M8 MM    MM   MM  8M"""""" `YMMMa.
        //       MM    YA.   ,A9 MM    MM   MM  YM.    , L.   I8
        //     .JMML.   `Ybmd9'  `Mbod"YML. `Mbmo`Mbmmd' M9mmmP'
        //
        //
        require_once $_SERVER['DOCUMENT_ROOT'] . Settings::PATH_SHORT_ROOT . 'app/Routes.php';

        //
        //
        //
        //
        //     `7Mb,od8 `7MM  `7MM  `7MMpMMMb.
        //       MM' "'   MM    MM    MM    MM
        //       MM       MM    MM    MM    MM
        //       MM       MM    MM    MM    MM
        //     .JMML.     `Mbod"YML..JMML  JMML.
        //
        //
        $klein->dispatch();
    }
1001965
protected function _initAutoColumns()
    {

        //Если автоопределение колонок не включено
        if (!$this->isEnabledAutoColumns) {
            return $this;
        }

        $dataProvider = clone $this->dataProvider;
        $models = $dataProvider->getModels();

        /**
         * @var $model ActiveQuery
         */
        $model = reset($models);

        if (!$model) {
            if ($dataProvider && isset($dataProvider->query) && $dataProvider->query->modelClass) {
                $modelClass = $dataProvider->query->modelClass;
                $model = new $modelClass();
            }
        }


        if (is_array($model) || is_object($model)) {
            foreach ($model as $name => $value) {
                if ($value === null || is_scalar($value) || is_callable([$value, '__toString'])) {

                    $key = $name;
                    if (!empty($key) && strcasecmp($key, 'id')) {
                        if (substr_compare($key, 'id', -2, 2, true) === 0) {
                            $key = rtrim(substr($key, 0, -2), '_');
                        } elseif (substr_compare($key, 'id', 0, 2, true) === 0) {
                            $key = ltrim(substr($key, 2, strlen($key)), '_');
                        }
                    }

                    $keyMany = Inflector::pluralize($key);

                    $keyName = lcfirst(Inflector::id2camel($key, '_'));
                    $keyManyName = lcfirst(Inflector::id2camel($keyMany, '_'));

                    if ($model instanceof Component && $model->hasProperty($keyName)) {
                        $this->_autoColumns[(string)$name] = [
                            'attribute' => $name,
                            'format'    => 'raw',
                            'value'     => function ($model, $key, $index) use ($name, $keyName) {
                                return $model->{$keyName};
                            },
                        ];
                    } else if ($model instanceof Component && $model->hasProperty(lcfirst($keyManyName))) {
                        $this->_autoColumns[(string)$name] = [
                            'attribute' => $name,
                            'format'    => 'raw',
                            'value'     => function ($model, $key, $index) use ($name, $keyManyName) {
                                return count($model->{$keyManyName});
                            },
                        ];
                    } else {
                        $this->_autoColumns[(string)$name] = [
                            'attribute' => $name,
                            'format'    => 'raw',
                            'value'     => function ($model, $key, $index) use ($name) {
                                if (is_array($model)) {
                                    $v = $model[$name];
                                } else {
                                    $v = $model->{$name};
                                }

                                if (is_array($v)) {
                                    return implode(",", $v);
                                } else {
                                    return $v;
                                }
                            },
                        ];
                    }

                }
            }
        }

        return $this;
    }
1118366
final function onFormInitialized() {
		parent::onFormInitialized();
		$this->addClass('df-array');
		// 2015-12-29 It is an invisible template row.
		df_hide($this->field('template', $this->itemFormElement()));
		$itemId = 0; /** @var int $itemId */
		foreach ($this->v() as $key => $data) {
			/** @var string|int $key */ /** @var string|array(string => mixed) $data */
			/**
			 * 2016-07-30
			 * Раньше тут стоял код:
			 *	// 2015-12-30
			 *	// https://github.com/mage2pro/core/tree/b1f6809b7723d8426636bb892b852f408bdc5650/Framework/view/adminhtml/web/formElement/array/main.js#L131
			 *	if (\Df\Config\A::FAKE !== $key) {
			 *		$this->field($itemId++, $this->itemType(), null, $data);
			 *	}
			 * Теперь у нас ключ @see \Df\Config\A::FAKE удаляется в методе
			 * @see \Df\Config\Backend\ArrayT::processA()
			 * поэтому здесь его уже быть не должно.
			 */
			df_assert_ne(\Df\Config\A::FAKE, $key);
			$this->field($itemId++, $this->itemFormElement(), null, $data);
		}
		df_fe_init($this, __CLASS__, df_fa(), [], 'array');
	}
243604
public function save() 
    {
        try {
            $m = self::getByAlias($this->alias);
        } catch (\Exception $e) {}
        
        if ($m && $m->id != $this->id) throw new Exception\CMS('Меню c таким алиасом уже существует.');
        
		self::getDbConnection()->update('menus',
			array(
				'alias' => $this->alias,
				'name'  => $this->name,
				'data'  => serialize($this->data),
			),
			array('id' => $this->id)
		);
  	}
49911
public function save()
    {
        $this->_slug = trim(trim($this->_slug), '/');
        if (is_null($this->_slugModel) || $this->_slugModel->slug !== $this->_slug) {
            //Если уже есть запись с таким slug то обновим её присвоев её максимальный id + 1
            $model = SeoSlug::find()
                ->where([
                    'AND',
                    ['=', 'model', $this->owner->className()],
                    ['=', 'model_id', $this->owner->getPrimaryKey()],
                    ['=', 'slug', $this->_slug],
                ])
                ->one();
            if ($model) {
                $maxId = SeoSlug::find()
                    ->max('id');
                $oldId = $model->id;
                $model->id = ++$maxId;
                $model->save();
                SeoSlug::updateAllCounters(['id' => -1], [
                    'AND',
                    ['>', SeoSlug::tableName() . '.id', $oldId],
                ]);
            } else {
                $model = new SeoSlug();
                $model->model = $this->owner->className();
                $model->model_id = $this->owner->getPrimaryKey();
            }
            $model->slug = $this->_slug;
            $model->save();
            if (is_callable($this->afterSave)) {
                call_user_func($this->afterSave, $this);
            }
        }
    }
605908
public function nodeCreateAction(Request $request, $folder_pid = 1)
    {
        if (null === $folder = $this->get('cms.folder')->get($folder_pid)) {
            return $this->redirect($this->generateUrl('cms_admin_structure_folder_create'));
        }

        $cmsNode = $this->get('cms.node');
        $node = $cmsNode->create();
        $node->setUser($this->getUser())
            ->setFolder($folder);

        $form = $cmsNode->createForm($node);

        if ($request->isMethod('POST')) {
            if ($request->request->has('create')) {
                $form->handleRequest($request);
                if ($form->isValid()) {
                    /** @var $createdNode \SmartCore\Bundle\CMSBundle\Entity\Node */
                    $createdNode = $form->getData();

                    $cmsNode->update($createdNode);

                    // Если у модуля есть роутинги, тогда нода подключается к папке как роутер.
                    $folder = $createdNode->getFolder();
                    if ($this->container->has('cms.router_module.'.$createdNode->getModule()) and !$folder->getRouterNodeId()) {
                        $folder->setRouterNodeId($createdNode->getId());
                        $this->get('cms.folder')->update($folder);
                    }

                    $this->get('tagcache')->deleteTag('node');
                    $this->addFlash('success', 'Нода создана.');

                    if ('front' === $request->query->get('redirect_to')) {
                        return $this->get('cms.router')->redirect($createdNode);
                    }

                    return $this->redirectToRoute('cms_admin_structure_node_properties', ['id' => $createdNode->getId()]);
                }
            } elseif ($request->request->has('delete')) {
                die('@todo');
            }
        }

        return $this->render('CMSBundle:AdminStructure:node_create.html.twig', [
            'form'       => $form->createView(),
            'folderPath' => $this->get('cms.folder')->getUri($folder_pid),
        ]);
    }
117529
public function start()
    {
        $file_info = (new FileToken($this->dic))->getFileInfo($this->request->get('token'));

        if (isset($file_info['errors'])) {
            $this->response->setData($file_info);
            $this->response->send();
        }

        $filepath = SettingsFile::FILE_FOLDER . $file_info['data']['path'];

        if (is_readable($filepath) && is_file($filepath)) {
            $response = new BinaryFileResponse($filepath);
            $response->headers->set('Content-type', mime_content_type($filepath));
            $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $file_info['data']['name']);
            $response->send();
        } else {
            $this->response->setData(Response::error404('Файл не найден'));
            $this->response->send();
        }
    }
1279198
function add($error, $message = '', $is_temp = false)
    {
        // Если был временным
        if (!$is_temp || ($error instanceof Error && !$error->is_temp)) $this->untemp();
        // Добавление подчиненного
        if (is_array($error)){
            foreach ($error as $e){
                $this->add($e, $message, $is_temp);
            }
        }else{
            if (!$error instanceof Error) $error = new Error($message, $error);
            if ($is_temp || $error->is_temp){
                $this->temps[$error->code] = $error;
                $this->temps[$error->code]->is_temp = true;
                $this->temps[$error->code]->parent = $this;
            }else{
                $this->children[$error->code] = $error;
                $this->children[$error->code]->parent = $this;
            }
            if ($message) $error->message = $message;
        }
        return $this;
    }
114500
public function postCreateOrder()
	{
		$data = Input::all();
		//Проверяем данные на валидность
		$validator = Validator::make(
			$data,
			Validators::rulesForNewOrder(),
			Validators::messagesForErrors()
		);
		$userMessages = $validator->messages();

		//Если есть ошибки, возвращаем
		if ($validator->fails()) {
			$result['errors'] = array(
				'item'    => $userMessages->first('item'),
				'sum'     => $userMessages->first('sum'),
				'tel'     => $userMessages->first('tel'),
				'comment' => $userMessages->first('comment'),
			);

			return $result;
		}
		//Предполагаем ошибку
		$result['errors'] = array(
			'common' => 'Ошибка. Повторите ещё раз.',
		);

		//Создаём заказ
		$data['user_id'] = Config::get('ff-qiwi-shop::user_id');
		$validity = Setting::find($data['user_id'])->lifetime;
		$data['lifetime'] = date('Y-m-d H:i:s', time() + 3600 * 24 * $validity);

		$order = new Order();
		$order->saveData($data);

		//Если заказ создан, то вместо ошибки отдаём ОК
		if ($order) {
			$result = array(
				'result'   => 'ok',
				'order_id' => $order->id,
				'message'  => 'Заказ №' . $order->id . ' успешно создан.',
			);
		}

		return $result;
	}
259905
private function move()
    {
        $item = Eresus_CMS::getLegacyKernel()->sections->get(arg('id', 'int'));
        if (!is_null(arg('to')))
        {
            $item['owner'] = arg('to', 'int');
            $item['position'] = count(Eresus_CMS::getLegacyKernel()->sections->children($item['owner']));

            /* Проверяем, нет ли в разделе назначения раздела с таким же именем */
            $q = Eresus_DB::getHandler()->createSelectQuery();
            $e = $q->expr;
            $q->select($q->alias($e->count('id'), 'count'));
            $q->from('pages');
            $q->where($e->lAnd(
                $e->eq('owner', $q->bindValue($item['owner'], null, PDO::PARAM_INT)),
                $e->eq('name', $q->bindValue($item['name']))
            ));
            $count = $q->fetch();
            if ($count['count'])
            {
                Eresus_Kernel::app()->getPage()->addErrorMessage(
                    'В разделе назначения уже есть раздел с таким же именем!');
                HTTP::goback();
            }

            Eresus_CMS::getLegacyKernel()->sections->update($item);
            HTTP::redirect(Eresus_Kernel::app()->getPage()->url(array('id'=>'')));
        }
        else
        {
            $select = $this->selectList($item['id']);
            array_unshift($select[0], 0);
            array_unshift($select[1], admPagesRoot);
            $form = array(
                'name' => 'MoveForm',
                'caption' => admPagesMove,
                'fields' => array(
                    array('type'=>'hidden', 'name'=>'mod', 'value' => 'pages'),
                    array('type'=>'hidden', 'name'=>'action', 'value' => 'move'),
                    array('type'=>'hidden', 'name'=>'id', 'value' => $item['id']),
                    array('type'=>'select', 'label'=>strMove.' "<b>'.$item['caption'].'</b>" в',
                        'name'=>'to', 'items'=>$select[1], 'values'=>$select[0], 'value' => $item['owner']),
                ),
                'buttons' => array('ok', 'cancel'),
            );
            /** @var TAdminUI $page */
            $page = Eresus_Kernel::app()->getPage();
            $result = $page->renderForm($form);
            return $result;
        }
        return '';
    }
238738
protected function setActionAttribute()
    {
        $Eresus = Eresus_CMS::getLegacyKernel();

        /** @var DOMElement $form */
        $form = $this->xml->getElementsByTagName('form')->item(0);
        $url = $Eresus->request['path'];

        /*
         * Если есть тег marker и нет тега redirect, то маркер надо добавить к адресу в атрибуте
         * action.
         */
        $markers = $this->xml->getElementsByTagNameNS(self::NS, 'marker');
        $redirects = $this->xml->getElementsByTagNameNS(self::NS, 'redirect');
        if ($markers->length > 0 && 0 == $redirects->length)
        {
            // На случай если указано несколько маркеров, берём только последний
            /** @var DOMElement $marker */
            $marker = $markers->item($markers->length - 1);
            $url .= '#' . $marker->getAttribute('value');
        }

        $form->setAttribute('action', $url);
    }
990322
public function fire() {
        $ret                = [];
        $config_default     = \Config::get('database.default');
        $config_connections = \Config::get('database.connections');
        foreach ($config_connections as $name => $config_connection) {
            $this->comment(str_pad('#', 80, '#', STR_PAD_BOTH));
            $this->comment('#' . str_pad('Соединение ' . $name, 88, ' ', STR_PAD_BOTH) . '#');
            $this->comment(str_pad('#', 80, '#', STR_PAD_BOTH));
            $ret = [
                Arr::get($config_connection, 'driver'),
                Arr::get($config_connection, 'database'),
                Arr::get($config_connection, 'read.host'),
                Arr::get($config_connection, 'write.host'),
                Arr::get($config_connection, 'username'),
                Arr::get($config_connection, 'password'),
                Arr::get($config_connection, 'charset'),
                Arr::get($config_connection, 'collation'),
                Arr::get($config_connection, 'prefix'),
            ];
            $this->table(
                [
                    'Driver',
                    'Database',
                    'Read Host',
                    'Write Host',
                    'Username',
                    'Password',
                    'Charset',
                    'Collation',
                    'Prefix',
                ], [$ret]
            );
        }
    }