Пример #1
0
 /**
  * Check missing widgets and add them.
  *
  * @param array $modulesWidgets  Widget modules.
  * @param array $notFoundWidgets Widgets packages that must be created.
  *
  * @return void
  */
 protected function _checkMissingWidgets($modulesWidgets, $notFoundWidgets)
 {
     print ConsoleUtil::headLine('Checking widgets existence...');
     foreach ($modulesWidgets as $module => $widgets) {
         foreach ($widgets as $widgetObject) {
             $this->_info('Widget ' . $module . '.' . $widgetObject['name'] . ': ');
             $widget = Widget::getFirst('module = "%s" AND name = "%s"', [$module, $widgetObject['name']]);
             if (!$widget) {
                 $widget = new Widget();
                 if ($widget->save($widgetObject)) {
                     print ConsoleUtil::infoLine('Created.', false, 1);
                 } else {
                     print ConsoleUtil::infoLine('Failed.', false, 1, ConsoleUtil::FG_RED);
                     $messages = iterator_to_array($widget->getMessages());
                     $this->getDI()->getLogger()->error('Failed to created widget "' . $module . '"."' . $widgetObject . '": ' . implode(', ', $messages));
                 }
             } else {
                 print ConsoleUtil::infoLine('Exists.', false, 1, ConsoleUtil::FG_GREEN);
             }
         }
     }
     foreach ($notFoundWidgets as $widgetObject) {
         $this->_info('Widget ' . $widgetObject->name . ': ');
         $widget = Widget::findFirstByName($widgetObject->name);
         if ($widget) {
             print ConsoleUtil::infoLine('Exists.', false, 1, ConsoleUtil::FG_GREEN);
             continue;
         }
         $widget = new Widget();
         if ($widget->save($widgetObject->toArray())) {
             print ConsoleUtil::infoLine('Created.', false, 1);
         } else {
             print ConsoleUtil::infoLine('Failed.', false, 1, ConsoleUtil::FG_RED);
             $messages = iterator_to_array($widget->getMessages());
             $this->getDI()->getLogger()->error('Failed to created widget "' . $widgetObject . '": ' . implode(', ', $messages));
         }
     }
     print PHP_EOL;
 }