/** * Detect if this plugin declares a StreamWrapper, and if yes loads it and register the stream. * @param bool $register * @return array|bool */ public function detectStreamWrapper($register = false) { if (isset($this->streamData)) { if ($this->streamData === false) { return false; } $streamData = $this->streamData; // include wrapper, no other checks needed. include_once AJXP_INSTALL_PATH . "/" . $streamData["filename"]; } else { if ($this->manifestXML != null) { $this->unserializeManifest(); } $files = $this->xPath->query("class_stream_wrapper"); if (!$files->length) { $this->streamData = false; return false; } $streamData = $this->nodeAttrToHash($files->item(0)); if (!is_file(AJXP_INSTALL_PATH . "/" . $streamData["filename"])) { $this->streamData = false; return false; } include_once AJXP_INSTALL_PATH . "/" . $streamData["filename"]; if (!class_exists($streamData["classname"])) { $this->streamData = false; return false; } $this->streamData = $streamData; } if ($register) { $pServ = AJXP_PluginsService::getInstance(); $wrappers = stream_get_wrappers(); if (!in_array($streamData["protocol"], $wrappers)) { stream_wrapper_register($streamData["protocol"], $streamData["classname"]); $pServ->registerWrapperClass($streamData["protocol"], $streamData["classname"]); } AJXP_MetaStreamWrapper::register($wrappers); } return $streamData; }