/**
  * Create widgets if any
  */
 private function createWidgets()
 {
     /** @var GitPackageConfigElementWidget[] $widgets */
     $widgets = $this->config->getElements('widgets');
     if (count($widgets) > 0) {
         $this->modx->log(modX::LOG_LEVEL_INFO, 'Creating widgets:');
         foreach ($widgets as $widget) {
             $widgetObject = $this->modx->newObject('modDashboardWidget');
             $widgetObject->set('name', $widget->getName());
             $widgetObject->set('description', $widget->getDescription());
             $widgetObject->set('type', $widget->getWidgetType());
             if ($widget->getWidgetType() == 'file') {
                 $widgetContent = $widget->getPackagePath() . '/core/components/' . $this->config->getLowCaseName() . '/' . $widget->getFilePath();
             } else {
                 $widgetContent = $widget->getFile();
             }
             $widgetObject->set('content', $widgetContent);
             $widgetObject->set('namespace', $this->config->getLowCaseName());
             $widgetObject->set('lexicon', $widget->getLexicon());
             $widgetObject->set('size', $widget->getSize());
             $widgetObject->save();
             $this->modx->log(modX::LOG_LEVEL_INFO, 'Widget ' . $widget->getName() . ' created.');
         }
     }
 }
 private function addWidgets()
 {
     /** @var GitPackageConfigElementWidget[] $widgets */
     $widgets = $this->config->getElements('widgets');
     foreach ($widgets as $widget) {
         /** @var modSystemSetting $widgetObject */
         $widgetObject = $this->modx->newObject('modDashboardWidget');
         $widgetObject->fromArray(array('name' => $widget->getName(), 'description' => $widget->getDescription(), 'type' => $widget->getWidgetType(), 'content' => $widget->getWidgetType() == 'file' ? '[[++core_path]]' . 'components/' . $this->config->getLowCaseName() . '/' . $widget->getFilePath() : $widget->getFile(), 'namespace' => $this->config->getLowCaseName(), 'lexicon' => $widget->getLexicon(), 'size' => $widget->getSize()), '', true, true);
         $vehicle = $this->builder->createVehicle($widgetObject, 'widget');
         $this->builder->putVehicle($vehicle);
     }
 }
 private function removeTVs()
 {
     /** @var GitPackageConfigElementTV[] $tvs */
     $tvs = $this->config->getElements('tvs');
     if (count($tvs) > 0) {
         foreach ($tvs as $tv) {
             /** @var modTemplateVar $tvObject */
             $tvObject = $this->modx->getObject('modTemplateVar', array('name' => $tv->getName()));
             if ($tvObject) {
                 $this->modx->log(modX::LOG_LEVEL_INFO, 'Removing tv ' . $tv->getName());
                 $tvObject->remove();
             }
         }
     }
 }
 private function updateWidget()
 {
     $notUsedElements = array_keys($this->oldConfig->getElements('widgets'));
     $notUsedElements = array_flip($notUsedElements);
     /** @var GitPackageConfigElementWidget $widget */
     foreach ($this->newConfig->getElements('widgets') as $name => $widget) {
         /** @var modDashboardWidget $widgetObject */
         $widgetObject = $this->modx->getObject('modDashboardWidget', array('name' => $name));
         if (!$widgetObject) {
             $widgetObject = $this->modx->newObject('modDashboardWidget');
             $widgetObject->set('name', $widget->getName());
         }
         $widgetObject->set('description', $widget->getDescription());
         $widgetObject->set('type', $widget->getWidgetType());
         if ($widget->getWidgetType() == 'file') {
             $widgetContent = $widget->getPackagePath() . '/core/components/' . $this->newConfig->getLowCaseName() . '/' . $widget->getFilePath();
         } else {
             $widgetContent = $widget->getFile();
         }
         $widgetObject->set('content', $widgetContent);
         $widgetObject->set('namespace', $this->newConfig->getLowCaseName());
         $widgetObject->set('lexicon', $widget->getLexicon());
         $widgetObject->set('size', $widget->getSize());
         $widgetObject->save();
         if (isset($notUsedElements[$name])) {
             unset($notUsedElements[$name]);
         }
     }
     foreach ($notUsedElements as $name => $value) {
         /** @var modDashboardWidget $widget */
         $widget = $this->modx->getObject('modDashboardWidget', array('name' => $name));
         if ($widget) {
             $widget->remove();
         }
     }
     return true;
 }