Пример #1
0
 /**
  * Return package as string, package metadata.
  *
  * @param array $params Some additional params.
  *
  * @return string
  */
 public function toJson(array $params = [])
 {
     $data = $this->getDefaultMetadata();
     // Get widgets data if this package is module.
     if ($this->type == Manager::PACKAGE_TYPE_MODULE) {
         /**
          * Widgets data.
          */
         $widgets = Widget::findByModule($this->name);
         foreach ($widgets as $widget) {
             $data['widgets'][] = ['name' => $widget->name, 'module' => $this->name, 'description' => $widget->description, 'is_paginated' => $widget->is_paginated, 'is_acl_controlled' => $widget->is_acl_controlled, 'admin_form' => $widget->admin_form, 'enabled' => (bool) $widget->enabled];
         }
         /**
          * Translations data.
          */
         if (!empty($params['withTranslations'])) {
             foreach (Language::find() as $language) {
                 $translations = $language->toTranslationsArray([$this->name]);
                 if (!empty($translations['content'])) {
                     $data['i18n'][] = $translations;
                 }
             }
         }
     } else {
         unset($data['widgets']);
     }
     // Check widget module.
     $packageData = $this->getData();
     if (!empty($packageData['module'])) {
         $data['module'] = $packageData['module'];
     }
     // Get events.
     if ($this->type == Manager::PACKAGE_TYPE_MODULE || $this->type == Manager::PACKAGE_TYPE_PLUGIN) {
         $packageData = $this->getData();
         if (!empty($packageData) && !empty($packageData['events'])) {
             $data['events'] = $packageData['events'];
         }
     }
     // Check dependencies.
     if (!empty($this->_dependenciesData)) {
         $data['dependencies'] = $this->_dependenciesData;
     } else {
         unset($data['dependencies']);
     }
     return json_encode($data, JSON_PRETTY_PRINT);
 }