Beispiel #1
0
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $config = $this->container->config('system');
     $scripts = new PackageScripts($this->container->path() . '/app/system/scripts.php', $config->get('version'));
     if ($scripts->hasUpdates()) {
         $scripts->update();
     }
     $config->set('version', $this->container->version());
     $this->line(sprintf('<info>%s</info>', __('Your Pagekit database has been updated successfully.')));
 }
Beispiel #2
0
 public function install($config = [], $option = [], $user = [])
 {
     $status = $this->check($config);
     $message = $status['message'];
     $status = $status['status'];
     try {
         if ('no-connection' == $status) {
             $this->app->abort(400, __('No database connection.'));
         }
         if ('tables-exist' == $status) {
             $this->app->abort(400, $message);
         }
         $scripts = new PackageScripts($this->app->path() . '/app/system/scripts.php');
         $scripts->install();
         $this->app->db()->insert('@system_user', ['name' => $user['username'], 'username' => $user['username'], 'password' => $this->app->get('auth.password')->hash($user['password']), 'status' => 1, 'email' => $user['email'], 'registered' => date('Y-m-d H:i:s'), 'roles' => '2,3']);
         $option['system']['version'] = $this->app->version();
         foreach ($option as $name => $values) {
             $this->app->config()->set($name, $this->app->config($name)->merge($values));
         }
         $packageManager = new PackageManager(new NullOutput());
         foreach (glob($this->app->get('path.packages') . '/*/*/composer.json') as $package) {
             $package = $this->app->package()->load($package);
             if ($package->get('type') === 'pagekit-extension' || $package->get('type') === 'pagekit-theme') {
                 $packageManager->enable($package);
             }
         }
         if (file_exists(__DIR__ . '/../install.php')) {
             require_once __DIR__ . '/../install.php';
         }
         if (!$this->config) {
             $configuration = new Config();
             $configuration->set('application.debug', false);
             foreach ($config as $key => $value) {
                 $configuration->set($key, $value);
             }
             $configuration->set('system.secret', $this->app->get('auth.random')->generateString(64));
             if (!file_put_contents($this->configFile, $configuration->dump())) {
                 $status = 'write-failed';
                 $this->app->abort(400, __('Can\'t write config.'));
             }
         }
         $this->app->module('system/cache')->clearCache();
         $status = 'success';
     } catch (DBALException $e) {
         $status = 'db-sql-failed';
         $message = __('Database error: %error%', ['%error%' => $e->getMessage()]);
     } catch (\Exception $e) {
         $message = $e->getMessage();
     }
     return ['status' => $status, 'message' => $message];
 }
 /**
  * @Request({"redirect": "string"}, csrf=true)
  */
 public function migrateAction($redirect = null)
 {
     if ($updates = $this->scripts->hasUpdates()) {
         $this->scripts->update();
         $message = __('Your Pagekit database has been updated successfully.');
     } else {
         $message = __('Your database is up to date.');
     }
     App::config('system')->set('version', App::version());
     if ($redirect) {
         App::message()->success($message);
         return App::redirect($redirect);
     }
     return App::response()->json(compact('status', 'message'));
 }
Beispiel #4
0
        $app->subscribe(new ExceptionListener('Pagekit\\System\\Controller\\ExceptionController::showAction'));
    }
}, 'request' => [[function ($event, $request) use($app) {
    if (!$event->isMasterRequest()) {
        return;
    }
    $app['isAdmin'] = $admin = (bool) preg_match('#^/admin(/?$|/.+)#', $request->getPathInfo());
    $app->module('system/intl')->setLocale($this->config($admin ? 'admin.locale' : 'site.locale'));
}, 150], [function ($event) use($app) {
    if (!$event->isMasterRequest()) {
        return;
    }
    $app->trigger($app->isAdmin() ? 'admin' : 'site', [$app]);
}]], 'auth.login' => [function ($event) use($app) {
    if ($event->getUser()->hasAccess('system: software updates') && version_compare($this->config('version'), $app->version(), '<')) {
        $scripts = new PackageScripts($this->path . '/scripts.php', $this->config('version'));
        if ($scripts->hasUpdates()) {
            $event->setResponse($app['response']->redirect('@system/migration', ['redirect' => $app['url']->getRoute('@system')]));
        } else {
            $app->config('system')->set('version', $app->version());
        }
    }
}, 8], 'view.messages' => function ($event) use($app) {
    $result = '';
    if ($app['message']->peekAll()) {
        foreach ($app['message']->levels() as $level) {
            if ($messages = $app['message']->get($level)) {
                foreach ($messages as $message) {
                    $result .= sprintf('<div class="uk-alert uk-alert-%1$s" data-status="%1$s">%2$s</div>', $level == 'error' ? 'danger' : $level, $message);
                }
            }