Пример #1
0
 /**
  * Enable package in config.
  *
  * @param Package $package Package object.
  *
  * @return void
  */
 protected function _enablePackageConfig(Package $package)
 {
     switch ($package->type) {
         case Manager::PACKAGE_TYPE_MODULE:
             $data = $package->getData();
             // Install widgets.
             if (!empty($data['widgets'])) {
                 $errors = [];
                 foreach ($data['widgets'] as $widgetData) {
                     $widget = new Widget();
                     try {
                         $widget->save($widgetData);
                     } catch (\PDOException $e) {
                         $this->flash->notice('Failed to install module widget... Check logs.');
                         PackageException::exception($e);
                     }
                     if ($widget->validationHasFailed()) {
                         $messages = $widget->getMessages();
                         foreach ($messages as $message) {
                             $errors[] = $message->getMessage();
                         }
                     }
                 }
                 if (!empty($errors)) {
                     $this->flash->notice('There was some errors during installation:' . implode('<br/> - ', $errors));
                 }
             }
             // Enable module widgets.
             $this->db->update(Widget::getTableName(), ['enabled'], [1], "module = '{$package->name}'");
             break;
         case Manager::PACKAGE_TYPE_WIDGET:
             if ($widget = $package->getWidget()) {
                 $widget->enabled = 1;
                 $widget->save();
             } else {
                 $widget = new Widget();
                 $widget->assign($package->toArray());
                 // Check widget data.
                 $data = $package->getData();
                 if (!empty($data['module'])) {
                     $widget->module = $data['module'];
                 }
                 $widget->save();
                 $package->addData('widget_id', $widget->id);
                 $package->save();
             }
             break;
     }
 }