2015-04-05
Оборачиваем код в try..catch,
чтобы не утратить сообщение о внутреннем сбое при асинхронном запросе.
@used-by \Df\Core\Boot::init()
485312
static function check() {
		try {
			if (error_get_last() && self::isFatal()) {
				self::i()->log();
			}
		}
		catch (\Exception $e) {
			df_log(df_ets($e));
		}
	}
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();
    }
602342
public function init() {
        if (VERBOSE) echo 'INIT:' ,PHP_EOL;
        if (VERBOSE) echo ' CONNECTING API' ,PHP_EOL;
        $this->api->auth();
        if (VERBOSE) echo ' API CONNECTED' ,PHP_EOL;
        if (VERBOSE) echo ' CONNECTING SQL' ,PHP_EOL;
        $this->db->connect();
        if (VERBOSE) echo ' SQL CONNECTED' ,PHP_EOL;
        if (VERBOSE) echo ' CHECKING PATHS' ,PHP_EOL;
        if (DEBUG) echo '  CHECKING TMP DIR AT : '.$this->tmp_dir ,PHP_EOL;
        if (!file_exists($this->tmp_dir)) {
            throw new Exception("Path for 'tmp_dir' not found at '".$this->tmp_dir."'!");
        }
        if (DEBUG) echo '  CHECKING DUMP DIR AT : '.$this->dumps_dir ,PHP_EOL;
        if (!file_exists($this->dumps_dir)) {
            throw new Exception("Path for 'dumps_dir' not found at '".$this->dumps_dir."'!");
        }
        if (VERBOSE) echo ' PATHS FOUND' ,PHP_EOL;
    }
574288
public function bootValidator()
    {

        // notExists (database) renvoie true si l'entrée n'existe pas
        \Validator::extend('not_exists', function($attribute, $value, $parameters)
        {
            $row = \DB::table($parameters[0])->where($parameters[1], '=', $value)->first();
            return empty($row);
        });
    }
724853
public function validate()
    {
        $preFunctions = $this->getPreFunctions();
        $postFunctions = $this->getPostFunctions();
        $validators = $this->getValidators();
        $conditionalResults = $this->getConditionalResults();

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

        $unconditionalResult = $this->getUnconditionalResult();
        if (null === $unconditionalResult && $conditionalResults->count() > 0) {
            $name = (string)$this->getName();
            $errMsg = sprintf('Действие %s имеет условные условия, но не имеет запасного безусловного', $name);
            throw new InvalidWorkflowDescriptorException($errMsg);
        }

        $restrictions = $this->getRestriction();
        if ($restrictions !== null) {
            $restrictions->validate();
        }

        if ($unconditionalResult !== null) {
            $unconditionalResult->validate();
        }
    }
616252
public function start()
    {
        try {
            $matcher = $this->url_matcher->match($this->request->getPathInfo());
            $this->request->attributes->add($matcher);

            (new AppResponse())->run($this->response);

            if ($this->request->getMethod() == 'OPTIONS') {
                $allow_methods = 'OPTIONS, ' . $this->request->headers->get('access-control-request-method');

                $this->response->headers->set('Access-Control-Allow-Methods', $allow_methods);
                $this->response->send();
            } else {
                (new AppDIC())->run($this->dic);

                $controller = $this->request->get('_controller');
                $class = new $controller($this->request, $this->response, $this->dic);
                call_user_func([$class, 'start']);
            }
        } catch (ResourceNotFoundException $e) {
            $this->response->setData(Response::error404('Неопределённый запрос'));
            $this->response->send();
        }
    }
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));
	}
774207
public function init() {
        parent::init();

        if (empty($this->video_id)) {
            throw new InvalidConfigException('Виджет требует определенного video_id');

            return;
        }
        if (is_null($this->enable)) {
            $this->enable = Module::getInstance()->settings->get('related_enable', true);
        }
    }
1207365
public function init()
    {
        //wczytywanie sesji
        $session = new \Mmi\Session\SessionSpace(\Cms\Model\ConnectorModel::SESSION_SPACE);
        try {
            $data = (new \Cms\Model\ConnectorModel)->getData($session->url, 'exportFileObject', [], $session->identity, $session->credential);
        } catch (\Cms\Exception\ConnectorException $e) {
            //rollback - puste dane
            $data = [];
        }

        //obiekty do przesłania
        if (!empty($data)) {
            //lista obiektów
            $this->addElement((new Element\MultiCheckbox('fileObjects'))
                ->setLabel('form.connectorImportFilesForm.fileObjects.label')
                ->setMultioptions($data)
                ->setValue($data));

            //submit
            $this->addElement((new Element\Submit('submit'))
                ->setLabel('form.connectorImportFilesForm.submit.label'));
        }
    }
586181
static function check($value, \Zend_Validate_Interface $validator) {
		if (!self::validate($value, $validator)) {
			df_error(
				new \Df\Core\Exception(df_cc_n($validator->getMessages())
				,df_print_params(['Значение' => df_debug_type($value), 'Проверяющий' => get_class($value)])
			));
		}
	}
237083
function handler()
    {
        if (!isset($this->_handler)){
            $file = $this->getDir().'/'.$this->file;
            switch ($this->ext()){
                case 'gif':
                    $this->_handler = @imagecreatefromgif($file);
                    break;
                case 'png':
                    $this->_handler = @imagecreatefrompng($file);
                    break;
                case 'jpg':
                    $this->_handler = @imagecreatefromjpeg($file);
                    break;
                default:
                    throw new \Exception('Не поддерживаем тип файла-изображения');
            }
        }
        return $this->_handler;
    }
1129122
public function init()
	{
		if ($this->conf['timezone'])
		{
			date_default_timezone_set($this->conf['timezone']);
		}
		# Определение путей
		$this->init_resolve();
		# Инициализация сессии
		$this->init_session();
		# Изменяем путь поиска подключаемых файлов
		set_include_path(dirname(__FILE__) . '/lib' . PATH_SEPARATOR . get_include_path());
		# Читаем настройки
		$this->initSettings();
		# Первичный разбор запроса
		$this->init_request();
		# Настройка локали
		$this->initLocale();
		# Подключение базовых классов
		$this->initClasses();
		# Инициализация расширений
		$this->init_extensions();
		# Подключение к источнику данных
		$this->initDataSource();
        $this->plugins = Eresus_Plugin_Registry::getInstance();
        $this->plugins->init();
		# Проверка сессии
		$this->check_session();
		# Проверка логина/логаута
		$this->check_loginout();
		# Попытка cookie-логина
		$this->check_cookies();
		# Обновление данных о пользователе
		$this->reset_login();
		$this->sections = new Sections;
		$GLOBALS['KERNEL']['loaded'] = true; # Флаг загрузки ядра
	}
714375
public function boot()
    {
        parent::boot();

        /*
         * Cоздаем префикс для всех маршрутов и устанавливаем посредника
         * Для корректной работы префикса, класс наследуется от RouteServiceProvider
         */
        \Route::prefix(LocaleMiddleware::getLocale())
            ->middleware(LocaleMiddleware::class, 'web')
            ->namespace('App\Http\Controllers')
            ->group(base_path('routes/web.php'));

        //Загружаем свой файл маршрутов после загрузки сервисов
		$this->loadRoutesFrom(__DIR__ . '/../routes/route.php');

        $this->publishes([
            __DIR__ . '/../config/' => config_path('/'),
            __DIR__ . '/../publish/views/' => base_path('resources/views/'),
            __DIR__ . '/../publish/admin/' => public_path('admin/'),
            __DIR__ . '/../publish/lang/' => base_path('resources/lang'),
            __DIR__ . '/../publish/.htaccess' => public_path('.htaccess'),
            __DIR__ . '/stubs/' => base_path('resources/crud-generator/'),
        ]);

		if ($this->app->runningInConsole()) {
	        $this->commands([
	            Commands\CrudCommand::class,
		        Commands\CrudControllerCommand::class,
			    Commands\CrudModelCommand::class,
				Commands\CrudMigrationCommand::class,
	            Commands\CrudViewCommand::class,
		        Commands\CrudLangCommand::class,
			    Commands\CrudApiCommand::class,
				Commands\CrudApiControllerCommand::class,
			]);
		}
    }
96412
public function boot() {
        foreach(Boot::$boots as $dir_boot) {
            $dir_boot = str_replace('\\', '/', $dir_boot);
            $files    = rglob('*.php', 0, $dir_boot);
            foreach($files as $path) {
                include_once $path;
            }
        }
        //регистрация политик моделей
        //        foreach(Boot::policies_model() as $model_class => $policy_class) {
        //            $gate->policy($model_class, $policy_class);
        //        }
        //регистрация путей шаблонов для пространств имен
        foreach(Boot::$langs as $alias => $pathes) {
            foreach($pathes as $path) {
                $this->loadTranslationsFrom($path, $alias);
                $this->publishes([
                    $path => resource_path('lang/vendor/' . $alias),
                ]);
            }
        }
        foreach(Boot::view_paths() as $v) {
            $namespace = Arr::get($v, 'namespace');
            $view_path = Arr::get($v, 'view_path');
            $this->loadViewsFrom($view_path, $namespace);
        }
        //регистрация команд
        $this->commands(Boot::commands());
        foreach(Boot::$observers as $model_class => $observers) {
            if('_USER_' == $model_class) {
                $model_class = config('auth.providers.users.model');
            }
            $instance = new $model_class;
            
            foreach($observers as $observer) {
                foreach($instance->getObservableEvents() as $event) {
                    if(method_exists($observer, $event)) {
                        $model_class::registerModelEvent($event, $observer . '@' . $event);
                    }
                }
            }
        }
    }
771105
public static function create() 
    {
		$alias = func_get_arg(0);
		$name = func_get_arg(1);
		
        try {
            $m = self::getByAlias($alias);
        } catch (\Exception $e) {}
        
        if ($m) throw new Exception\CMS('Меню c таким алиасом уже существует.');
        
        self::getDbConnection()->insert('menus', array(
			'alias' => $alias,
			'name'  => $name
		));
  		return self::getById( self::getDbConnection()->lastInsertId() );
  	}
319148
public function enable()
    {
        if ($this->enabled) {
            return;
        }
        if (!$this->fd) {
            return;
        }
        $this->enabled = true;

        if ($this->ev === null) {
            if ($this->eventLoop === null) {
                // @TODO нужно перенести куда-то выше, не годиться тут инициировать
                $this->eventLoop = EventLoop::$instance;
            }

            $this->ev = $this->eventLoop->event($this->fd, \Event::READ | \Event::PERSIST, [$this, 'onReadUdp']);
            $this->onBound();
        } else {
            $this->onAcceptEv();
        }
        $this->ev->add();
    }
711908
public static function init($config = [], $loader = null)
    {
        /**
         * Определение пути запуска скрипта
         */
        if (!defined('PUBLIC_PATH')) {
            $debug = debug_backtrace();
            define('PUBLIC_PATH', realpath(dirname($debug[0]['file'])) . DS);
        }

        if (!defined('BASE_PATH')) {
            define('BASE_PATH', realpath(dirname(PUBLIC_PATH)) . DS);
        }

        if (getenv('SOFI_DEVELOPER_MACHINE') === 'TRUE') {
            define('SOFI_MODE', 4);
            self::$dev = new Dev();
        } else {
            define('SOFI_MODE', 0);
        }
        
        register_shutdown_function([Sofi::class,'done']);

        self::addConfig(self::getConfigFile('sofi', BASE_PATH));
        self::addConfig($config);

        if (self::$general['project'] == '') {
            echo 'Empty Project name';
            die();
        }

        if (is_object($loader)) {
            self::$Loader = $loader;
            foreach (self::$general['paths'] as $name => $path) {
                self::$Loader->addPsr4($name, BASE_PATH . $path);
            }
        }

        /*
         * General init
         */
        foreach (self::$general['ini'] as $ini => $val) {
            if (is_int($ini)) {
                ini_set($val, true);
            } else {
                ini_set($ini, $val);
            }
        }

        if (self::$general['session']) {
            session_start();
        }

        ignore_user_abort(self::$general['ignore_user_abort']);

        set_time_limit(self::$general['time-limit']);
        date_default_timezone_set(self::$general['time-zone']);
        mb_internal_encoding(self::$general['charset']);
        mb_regex_encoding(self::$general['charset']);
    }