/** * 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; } }