pluginName = $pluginName; } /** * Loads plugin metadata. @see Plugin::getInformation. * * @return array */ public function load() { $defaults = $this->getDefaultPluginInformation(); $plugin = $this->loadPluginInfoJson(); // use translated plugin description if available if ($defaults['description'] != Piwik::translate($defaults['description'])) { unset($plugin['description']); } return array_merge( $defaults, $plugin ); } public function hasPluginJson() { $hasJson = $this->loadPluginInfoJson(); return !empty($hasJson); } private function getDefaultPluginInformation() { $descriptionKey = $this->pluginName . '_PluginDescription'; return array( 'description' => $descriptionKey, 'homepage' => 'http://piwik.org/', 'authors' => array(array('name' => 'Piwik', 'homepage' => 'http://piwik.org/')), 'license' => 'GPL v3+', 'license_homepage' => 'http://www.gnu.org/licenses/gpl.html', 'version' => Version::VERSION, 'theme' => false, 'require' => array() ); } private function loadPluginInfoJson() { $path = \Piwik\Plugin\Manager::getPluginsDirectory() . $this->pluginName . '/' . self::PLUGIN_JSON_FILENAME; return $this->loadJsonMetadata($path); } private function loadJsonMetadata($path) { if (!file_exists($path)) { return array(); } $json = file_get_contents($path); if (!$json) { return array(); } $info = json_decode($json, $assoc = true); if (!is_array($info) || empty($info) ) { throw new Exception("Invalid JSON file: $path"); } return $info; } }