public function checkPluginArchiveContent($dir, array $config_cache = array()) { try { if (!empty($config_cache)) { $meta = $config_cache; } else { $meta = $this->readYml($dir . '/config.yml'); } } catch (\Symfony\Component\Yaml\Exception\ParseException $e) { throw new PluginException($e->getMessage(), $e->getCode(), $e); } if (!is_array($meta)) { throw new PluginException('config.yml not found or syntax error'); } if (!isset($meta['code']) || !$this->checkSymbolName($meta['code'])) { throw new PluginException('config.yml code empty or invalid_character(\\W)'); } if (!isset($meta['name'])) { // nameは直接クラス名やPATHに使われるわけではないため文字のチェックはなしし throw new PluginException('config.yml name empty'); } if (isset($meta['event']) && !$this->checkSymbolName($meta['event'])) { // eventだけは必須ではない throw new PluginException('config.yml event empty or invalid_character(\\W) '); } if (!isset($meta['version'])) { // versionは直接クラス名やPATHに使われるわけではないため文字のチェックはなしし throw new PluginException('config.yml version invalid_character(\\W) '); } if (isset($meta['orm.path'])) { if (!is_array($meta['orm.path'])) { throw new PluginException('config.yml orm.path invalid_character(\\W) '); } } if (isset($meta['service'])) { if (!is_array($meta['service'])) { throw new PluginException('config.yml service invalid_character(\\W) '); } } }