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