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