/** * @param AJXP_Plugin $a * @param AJXP_Plugin $b * @return int */ public function frontendsSort($a, $b) { $aConf = $a->getConfigs(); $bConf = $b->getConfigs(); $orderA = intval($aConf["ORDER"]); $orderB = intval($bConf["ORDER"]); if ($orderA == $orderB) { return 0; } return $orderA > $orderB ? 1 : -1; }
protected function parseSpecificContributions(&$contribNode) { parent::parseSpecificContributions($contribNode); if ($this->detectStreamWrapper() !== false) { $this->actions["cross_copy"] = array(); } }
/** * Parse * @param DOMNode $contribNode */ protected function parseSpecificContributions(&$contribNode) { parent::parseSpecificContributions($contribNode); if ($this->pluginConf["ENABLE_324_IMPORT"] == true) { return; } if ($contribNode->nodeName != "actions") { return; } $actionXpath = new DOMXPath($contribNode->ownerDocument); $compressNodeList = $actionXpath->query('action[@name="import_from_324"]', $contribNode); if (!$compressNodeList->length) { return; } unset($this->actions["import_from_324"]); $compressNode = $compressNodeList->item(0); $contribNode->removeChild($compressNode); $compressNodeList = $actionXpath->query('action[@name="migrate_metaserial"]', $contribNode); if (!$compressNodeList->length) { return; } unset($this->actions["import_from_324"]); $compressNode = $compressNodeList->item(0); $contribNode->removeChild($compressNode); }
function init($options) { parent::init($options); $pServ = AJXP_PluginsService::getInstance(); $aPlugs = $pServ->getActivePlugins(); $accessPlugs = $pServ->getPluginsByType("access"); $this->repository = ConfService::getRepository(); foreach ($accessPlugs as $pId => $plug) { if (array_key_exists("access." . $pId, $aPlugs) && $aPlugs["access." . $pId] === true) { $this->accessDriver = $plug; if (!isset($this->accessDriver->repository)) { $this->accessDriver->init($this->repository); $this->accessDriver->initRepository(); $wrapperData = $this->accessDriver->detectStreamWrapper(true); } else { $wrapperData = $this->accessDriver->detectStreamWrapper(false); } $this->urlBase = $wrapperData["protocol"] . "://" . $this->repository->getId(); } } $this->metaStore = AJXP_PluginsService::getInstance()->getUniqueActivePluginForType("metastore"); if ($this->metaStore !== false) { $this->metaStore->initMeta($this->accessDriver); } }
public function logDebug($message = "") { parent::logDebug("core.indexer", $message); if ($this->verboseIndexation && ConfService::currentContextIsCommandLine()) { print $message . "\n"; } }
public function loadRegistryContributions() { $currentUser = AuthService::getLoggedUser(); if ($currentUser != null) { $cData = $currentUser->getPref("CUSTOM_PARAMS"); if ($cData != null && isset($cData["email"])) { $this->exposeConfigInManifest("current_user_email", $cData["email"]); } } $actionsBranch = $this->xPath->query("registry_contributions/actions"); $actionsNode = $actionsBranch->item(0); foreach (array_map("trim", explode(",", $this->pluginConf["ACTIONS"])) as $action) { // Action node $prop = $this->manifestDoc->createElement("action"); $attName = $this->manifestDoc->createAttribute("name"); $attValue = $this->manifestDoc->createTextNode($action); $attName->appendChild($attValue); $prop->appendChild($attName); $actionsNode->appendChild($prop); // Pre_proc $preproc = $this->manifestDoc->createElement("pre_processing"); $prop->appendChild($preproc); // Server callback $sC = $this->manifestDoc->createElement("serverCallback"); $sAttName = $this->manifestDoc->createAttribute("methodName"); $sAttValue = $this->manifestDoc->createTextNode("preProcess"); $sAttName->appendChild($sAttValue); $sC->appendChild($sAttName); $preproc->appendChild($sC); } $this->reloadXPath(); parent::loadRegistryContributions(); }
public function parseSpecificContributions(&$contribNode) { parent::parseSpecificContributions($contribNode); if ($contribNode->nodeName != "actions") { return; } $actionXpath = new DOMXPath($contribNode->ownerDocument); $paramList = $actionXpath->query('action[@name="scheduler_addTask"]/processing/standardFormDefinition/param[@name="repository_id"]', $contribNode); if (!$paramList->length) { return; } $paramNode = $paramList->item(0); $sVals = array(); $repos = ConfService::getRepositoriesList("all"); foreach ($repos as $repoId => $repoObject) { $sVals[] = $repoId . "|" . AJXP_Utils::xmlEntities($repoObject->getDisplay()); } $sVals[] = "*|All Repositories"; $paramNode->attributes->getNamedItem("choices")->nodeValue = implode(",", $sVals); if (!AuthService::usersEnabled() || AuthService::getLoggedUser() == null) { return; } $paramList = $actionXpath->query('action[@name="scheduler_addTask"]/processing/standardFormDefinition/param[@name="user_id"]', $contribNode); if (!$paramList->length) { return; } $paramNode = $paramList->item(0); $paramNode->attributes->getNamedItem("default")->nodeValue = AuthService::getLoggedUser()->getId(); }
public function initMeta($accessDriver) { $this->accessDriver = $accessDriver; if (!function_exists("exif_read_data")) { return; } $messages = ConfService::getMessages(); $def = $this->getMetaDefinition(); if (!count($def)) { return; } $cdataHead = '<div> <div class="panelHeader infoPanelGroup" colspan="2">' . $messages["meta.exif.1"] . '</div> <table class="infoPanelTable" cellspacing="0" border="0" cellpadding="0">'; $cdataFoot = '</table></div>'; $cdataParts = ""; foreach ($def as $key => $label) { $trClass = $even ? " class=\"even\"" : ""; $even = !$even; $cdataParts .= '<tr' . $trClass . '><td class="infoPanelLabel">' . $label . '</td><td class="infoPanelValue" id="ip_' . $key . '">#{' . $key . '}</td></tr>'; } $selection = $this->xPath->query('registry_contributions/client_configs/component_config[@className="InfoPanel"]/infoPanelExtension'); $contrib = $selection->item(0); $contrib->setAttribute("attributes", implode(",", array_keys($def))); $contrib->setAttribute("modifier", "ExifCellRenderer.prototype.infoPanelModifier"); $htmlSel = $this->xPath->query('html', $contrib); $html = $htmlSel->item(0); $cdata = $this->manifestDoc->createCDATASection($cdataHead . $cdataParts . $cdataFoot); $html->appendChild($cdata); parent::init($this->options); }
public function init($options) { parent::init($options); $this->useQueue = $this->pluginConf["USE_QUEUE"]; try { $this->msgExchanger = ConfService::instanciatePluginFromGlobalParams($this->pluginConf["UNIQUE_MS_INSTANCE"], "AJXP_MessageExchanger"); } catch (Exception $e) { } }
public function init($options) { parent::init($options); self::$globalOptions = $this->pluginConf; $this->pluginInstance = ConfService::instanciatePluginFromGlobalParams($this->pluginConf["UNIQUE_PLUGIN_INSTANCE"], "AbstractLogDriver"); if ($this->pluginInstance != false) { AJXP_PluginsService::getInstance()->setPluginUniqueActiveForType("log", $this->pluginInstance->getName(), $this->pluginInstance); } self::$loggerInstance = $this->pluginInstance; }
public function loadConfigs($configsData) { parent::loadConfigs($configsData); if (isset($configsData["UNOCONV"]) && !empty($configsData["UNOCONV"])) { // APPEND THE UNOCONV SUPPORTED EXTENSIONS $this->manifestDoc->documentElement->setAttribute("mimes", implode(",", array_merge($this->imagickExtensions, $this->unoconvExtensios))); } else { $this->manifestDoc->documentElement->setAttribute("mimes", implode(",", $this->imagickExtensions)); } }
public function loadConfigs($configData) { parent::loadConfigs($configData); if (!defined("AJXP_THEME_FOLDER")) { define("CLIENT_RESOURCES_FOLDER", AJXP_PLUGINS_FOLDER . "/gui.ajax/res"); define("AJXP_THEME_FOLDER", CLIENT_RESOURCES_FOLDER . "/themes/" . $this->pluginConf["GUI_THEME"]); } if (!isset($configData["CLIENT_TIMEOUT_TIME"])) { $this->pluginConf["CLIENT_TIMEOUT_TIME"] = intval(ini_get("session.gc_maxlifetime")); } }
public function loadConfigs($configData) { parent::loadConfigs($configData); $keyFile = $this->getPluginWorkDir(true) . "/agent.pem"; if (file_exists($keyFile)) { $res = openssl_pkey_get_private(file_get_contents($keyFile)); $details = openssl_pkey_get_details($res); $public = $details["key"]; $this->pluginConf["ZOHO_AGENT_PUBLIC_KEY"] = $public; } }
public function init($options) { parent::init($options); if (AJXP_SERVER_DEBUG) { $this->mailCache = $this->getPluginWorkDir(true) . "/mailbox"; } $pConf = $this->pluginConf["UNIQUE_MAILER_INSTANCE"]; if (!empty($pConf)) { $p = ConfService::instanciatePluginFromGlobalParams($pConf, "AjxpMailer"); AJXP_PluginsService::getInstance()->setPluginUniqueActiveForType($p->getType(), $p->getName(), $p); } }
public function getConfigs() { $configs = parent::getConfigs(); $configs["ALLOW_GUEST_BROWSING"] = !isset($_SERVER["HTTP_AJXP_FORCE_LOGIN"]) && ($configs["ALLOW_GUEST_BROWSING"] === "true" || $configs["ALLOW_GUEST_BROWSING"] === true || intval($configs["ALLOW_GUEST_BROWSING"]) == 1); // FORCE CASE INSENSITIVY FOR SQL BASED DRIVERS if (isset($configs["MASTER_INSTANCE_CONFIG"]) && is_array($configs["MASTER_INSTANCE_CONFIG"]) && isset($configs["MASTER_INSTANCE_CONFIG"]["instance_name"]) && $configs["MASTER_INSTANCE_CONFIG"]["instance_name"] == "auth.sql") { $configs["CASE_SENSITIVE"] = false; } if (isset($configs["SLAVE_INSTANCE_CONFIG"]) && !empty($configs["SLAVE_INSTANCE_CONFIG"]) && isset($configs["SLAVE_INSTANCE_CONFIG"]["instance_name"]) && $configs["SLAVE_INSTANCE_CONFIG"]["instance_name"] == "auth.sql") { $configs["CASE_SENSITIVE"] = false; } return $configs; }
public function init($options) { parent::init($options); $this->useQueue = $this->pluginConf["USE_QUEUE"]; try { $this->msgExchanger = ConfService::instanciatePluginFromGlobalParams($this->pluginConf["UNIQUE_MS_INSTANCE"], "AJXP_MessageExchanger"); if (AuthService::$bufferedMessage != null && AuthService::getLoggedUser() != null) { $this->sendInstantMessage(AuthService::$bufferedMessage, ConfService::getCurrentRepositoryId(), AuthService::getLoggedUser()->getId()); AuthService::$bufferedMessage = null; } } catch (Exception $e) { } }
public function parseSpecificContributions(&$contribNode) { parent::parseSpecificContributions($contribNode); if (!self::rsyncEnabled() && $contribNode->nodeName == "actions") { // REMOVE rsync actions, this will advertise the fact that // rsync is not enabled. $xp = new DOMXPath($contribNode->ownerDocument); $children = $xp->query("action", $contribNode); foreach ($children as $child) { $contribNode->removeChild($child); } } }
public function init($options) { parent::init($options); $this->repository = ConfService::getRepository(); if (!is_a($this->repository->driverInstance, "AjxpWrapperProvider")) { return; } $this->accessDriver = $this->repository->driverInstance; $this->urlBase = $this->repository->driverInstance->getResourceUrl("/"); $this->baseProtocol = array_shift(explode("://", $this->urlBase)); if (array_key_exists("meta.watch", AJXP_PluginsService::getInstance()->getActivePlugins())) { $this->watcher = AJXP_PluginsService::getInstance()->getPluginById("meta.watch"); } }
public function loadConfigs($configData) { parent::loadConfigs($configData); if (preg_match('/MSIE 7/', $_SERVER['HTTP_USER_AGENT']) || preg_match('/MSIE 8/', $_SERVER['HTTP_USER_AGENT'])) { // Force legacy theme for the moment $this->pluginConf["GUI_THEME"] = "oxygen"; } if (!defined("AJXP_THEME_FOLDER")) { define("CLIENT_RESOURCES_FOLDER", AJXP_PLUGINS_FOLDER . "/gui.ajax/res"); define("AJXP_THEME_FOLDER", CLIENT_RESOURCES_FOLDER . "/themes/" . $this->pluginConf["GUI_THEME"]); } if (!isset($configData["CLIENT_TIMEOUT_TIME"])) { $this->pluginConf["CLIENT_TIMEOUT_TIME"] = intval(ini_get("session.gc_maxlifetime")); } }
protected function parseSpecificContributions(&$contribNode) { parent::parseSpecificContributions($contribNode); if ($contribNode->nodeName != "actions") { return; } // WEBDAV ACTION if (empty($this->pluginConf["USER_EVENTS"])) { unset($this->actions["get_my_feed"]); $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="get_my_feed"]', $contribNode); $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); } }
/** * Extend parent * @param DOMNode $contribNode */ protected function parseSpecificContributions(&$contribNode) { parent::parseSpecificContributions($contribNode); $disableSharing = false; $downloadFolder = ConfService::getCoreConf("PUBLIC_DOWNLOAD_FOLDER"); if (empty($downloadFolder) || (!is_dir($downloadFolder) || !is_writable($downloadFolder))) { $this->logError("Warning on public links, {$downloadFolder} is not writeable!", array("folder" => $downloadFolder, "is_dir" => is_dir($downloadFolder), "is_writeable" => is_writable($downloadFolder))); } $xpathesToRemove = array(); if (strpos(ConfService::getRepository()->getAccessType(), "ajxp_") === 0) { $xpathesToRemove[] = 'action[@name="share-file-minisite"]'; $xpathesToRemove[] = 'action[@name="share-folder-minisite-public"]'; $xpathesToRemove[] = 'action[@name="share-edit-shared"]'; } else { if (AuthService::usersEnabled()) { $loggedUser = AuthService::getLoggedUser(); if ($loggedUser != null && AuthService::isReservedUserId($loggedUser->getId())) { $disableSharing = true; } } else { $disableSharing = true; } } if ($disableSharing) { // All share- actions $xpathesToRemove[] = 'action[contains(@name, "share-")]'; } else { $folderSharingAllowed = $this->getAuthorization("folder", "any"); $fileSharingAllowed = $this->getAuthorization("file", "any"); if ($fileSharingAllowed === false) { // Share file button $xpathesToRemove[] = 'action[@name="share-file-minisite"]'; } if (!$folderSharingAllowed) { // Share folder button $xpathesToRemove[] = 'action[@name="share-folder-minisite-public"]'; } } foreach ($xpathesToRemove as $xpath) { $actionXpath = new DOMXPath($contribNode->ownerDocument); $nodeList = $actionXpath->query($xpath, $contribNode); foreach ($nodeList as $shareActionNode) { $contribNode->removeChild($shareActionNode); } } }
public function initMeta($accessDriver) { $this->accessDriver = $accessDriver; if (!empty($this->options["index_meta_fields"]) || $this->indexContent) { $metaFields = $this->metaFields; $el = $this->xPath->query("/indexer")->item(0); if ($this->indexContent) { if ($this->indexContent) { $metaFields[] = "ajxp_document_content"; } $data = array("indexed_meta_fields" => $metaFields, "additionnal_meta_columns" => array("ajxp_document_content" => "Content")); $el->setAttribute("indexed_meta_fields", json_encode($data)); } else { $el->setAttribute("indexed_meta_fields", json_encode($metaFields)); } } parent::init($this->options); }
public function parseSpecificContributions(&$contribNode) { parent::parseSpecificContributions($contribNode); if (!self::rsyncEnabled() && $contribNode->nodeName == "actions") { // REMOVE rsync actions, this will advertise the fact that // rsync is not enabled. $xp = new DOMXPath($contribNode->ownerDocument); $children = $xp->query("action[contains(@name, 'filehasher')]", $contribNode); foreach ($children as $child) { $contribNode->removeChild($child); } } if ($this->getFilteredOption("CACHE_XML_TREE") !== true && $contribNode->nodeName == "actions") { // REMOVE pre and post process on LS action $xp = new DOMXPath($contribNode->ownerDocument); $children = $xp->query("action[@name='ls']", $contribNode); foreach ($children as $child) { $contribNode->removeChild($child); } } }
protected function parseSpecificContributions(&$contribNode) { parent::parseSpecificContributions($contribNode); // DISABLE STUFF if (empty($this->pluginConf["USER_EVENTS"])) { if ($contribNode->nodeName == "actions") { $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="get_my_feed"]', $contribNode); $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); } else { if ($contribNode->nodeName == "client_configs") { $actionXpath = new DOMXPath($contribNode->ownerDocument); $children = $actionXpath->query('component_config', $contribNode); foreach ($children as $child) { $contribNode->removeChild($child); } } } } }
protected function parseSpecificContributions(&$contribNode) { parent::parseSpecificContributions($contribNode); if (!ConfService::getCoreConf("WEBDAV_ENABLE") && $contribNode->nodeName == "actions") { unset($this->actions["webdav_preferences"]); $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="webdav_preferences"]', $contribNode); $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); } if (!ConfService::getCoreConf("USER_CREATE_REPOSITORY", "conf") && $contribNode->nodeName == "actions") { unset($this->actions["user_create_repository"]); $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="user_create_repository"]', $contribNode); $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); unset($this->actions["user_delete_repository"]); $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="user_delete_repository"]', $contribNode); $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); } }
/** * Parse * @param DOMNode $contribNode */ protected function parseSpecificContributions(&$contribNode) { parent::parseSpecificContributions($contribNode); if (substr($_SERVER["REQUEST_URI"], 0, strlen('/user')) != '/user') { if ($contribNode->nodeName == "client_configs") { $children = $contribNode->childNodes; foreach ($children as $child) { if ($child->nodeType == XML_ELEMENT_NODE) { $contribNode->removeChild($child); } } } else { if ($contribNode->nodeName == "actions") { $children = $contribNode->childNodes; foreach ($children as $child) { if ($child->nodeType == XML_ELEMENT_NODE && $child->nodeName == "action" && $child->getAttribute("name") == "login") { $contribNode->removeChild($child); } } } } } }
/** * Append some predefined XML to a plugin instance * @param AJXP_Plugin $plugin * @param DOMDocument $manifestDoc * @param String $mixinName */ public function patchPluginWithMixin(&$plugin, &$manifestDoc, $mixinName) { // Load behaviours if not already if (!isset($this->mixinsDoc)) { $this->mixinsDoc = new DOMDocument(); $this->mixinsDoc->load(AJXP_INSTALL_PATH . "/" . AJXP_PLUGINS_FOLDER . "/core.ajaxplorer/ajxp_mixins.xml"); $this->mixinsXPath = new DOMXPath($this->mixinsDoc); } // Merge into manifestDoc $nodeList = $this->mixinsXPath->query($mixinName); if (!$nodeList->length) { return; } $mixinNode = $nodeList->item(0); foreach ($mixinNode->childNodes as $child) { if ($child->nodeType != XML_ELEMENT_NODE) { continue; } $uuidAttr = $child->getAttribute("uuidAttr") or "name"; $this->mergeNodes($manifestDoc, $child->nodeName, $uuidAttr, $child->childNodes, true); } // Reload plugin XPath $plugin->reloadXPath(); }
public function initMeta($accessDriver) { require_once "svn_lib.inc.php"; $this->accessDriver = $accessDriver; parent::init($this->options); }
protected function parseSpecificContributions(&$contribNode) { parent::parseSpecificContributions($contribNode); if ($contribNode->nodeName == 'client_configs' && !ConfService::getCoreConf("WEBDAV_ENABLE")) { $actionXpath = new DOMXPath($contribNode->ownerDocument); $webdavCompNodeList = $actionXpath->query('component_config/additional_tab[@id="webdav_pane"]', $contribNode); if ($webdavCompNodeList->length) { $contribNode->removeChild($webdavCompNodeList->item(0)->parentNode); } } if ($contribNode->nodeName != "actions") { return; } // WEBDAV ACTION if (!ConfService::getCoreConf("WEBDAV_ENABLE")) { unset($this->actions["webdav_preferences"]); $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="webdav_preferences"]', $contribNode); if ($publicUrlNodeList->length) { $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); } } // SWITCH TO DASHBOARD ACTION $u = AuthService::getLoggedUser(); $access = true; if ($u == null) { $access = false; } else { $acl = $u->mergedRole->getAcl("ajxp_user"); if (empty($acl)) { $access = false; } } if (!$access) { unset($this->actions["switch_to_user_dashboard"]); $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="switch_to_user_dashboard"]', $contribNode); if ($publicUrlNodeList->length) { $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); } } // PERSONAL INFORMATIONS $hasExposed = false; $cacheHasExposed = AJXP_PluginsService::getInstance()->loadFromPluginQueriesCache("//server_settings/param[contains(@scope,'user') and @expose='true']"); if ($cacheHasExposed !== null) { $hasExposed = $cacheHasExposed; } else { $paramNodes = AJXP_PluginsService::searchAllManifests("//server_settings/param[contains(@scope,'user') and @expose='true']", "node", false, false, true); if (is_array($paramNodes) && count($paramNodes)) { $hasExposed = true; } AJXP_PluginsService::getInstance()->storeToPluginQueriesCache("//server_settings/param[contains(@scope,'user') and @expose='true']", $hasExposed); } //$hasExposed = true; if (!$hasExposed) { unset($this->actions["custom_data_edit"]); $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="custom_data_edit"]', $contribNode); $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); } // CREATE A NEW REPOSITORY if (!ConfService::getCoreConf("USER_CREATE_REPOSITORY", "conf")) { unset($this->actions["user_create_repository"]); $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="user_create_repository"]', $contribNode); if ($publicUrlNodeList->length) { $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); } unset($this->actions["user_delete_repository"]); $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="user_delete_repository"]', $contribNode); if ($publicUrlNodeList->length) { $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); } } // CREATE A NEW USER if (!ConfService::getCoreConf("USER_CREATE_USERS", "conf")) { unset($this->actions["user_create_user"]); $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="user_create_user"]', $contribNode); if ($publicUrlNodeList->length) { $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); } unset($this->actions["user_update_user"]); $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="user_update_user"]', $contribNode); if ($publicUrlNodeList->length) { $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); } unset($this->actions["user_delete_user"]); $actionXpath = new DOMXPath($contribNode->ownerDocument); $publicUrlNodeList = $actionXpath->query('action[@name="user_delete_user"]', $contribNode); if ($publicUrlNodeList->length) { $publicUrlNode = $publicUrlNodeList->item(0); $contribNode->removeChild($publicUrlNode); } } }
/** * @param AJXP_Plugin $plugin * @param array $apis * @return string */ public static function makeMarkdown($plugin, $apis) { $md = "\n\n"; $md .= "## " . $plugin->getManifestLabel() . " "; $md .= "\n" . $plugin->getManifestDescription() . "\n\n"; $id = $plugin->getId(); foreach ($apis as $index => $api) { $md .= "\n"; $md .= "- **" . $api["path"] . "** \n"; $md .= " " . $api["operations"][0]["notes"] . " \n"; $md .= " [Details](" . API_DOC_PAGE . "" . $id . "/" . $api["operations"][0]["nickname"] . "_" . strtolower($api["operations"][0]["method"]) . "_" . $index . ")"; } return $md; }