/** * @param $scope String "user", "all" * @param bool $includeShared * @return array */ protected function initRepositoriesListInst($scope = "user", $includeShared = true) { // APPEND CONF FILE REPOSITORIES $loggedUser = AuthService::getLoggedUser(); $objList = array(); if ($loggedUser != null) { $l = $loggedUser->getLock(); if (!empty($l)) { return $objList; } } foreach ($this->configs["DEFAULT_REPOSITORIES"] as $index => $repository) { $repo = self::createRepositoryFromArray($index, $repository); if ($scope == "user" && $loggedUser != null && !self::repositoryIsAccessible($index, $repo, $loggedUser)) { continue; } $repo->setWriteable(false); $objList["" . $repo->getId()] = $repo; } // LOAD FROM DRIVER $confDriver = self::getConfStorageImpl(); if ($scope == "user") { $acls = array(); if (AuthService::getLoggedUser() != null) { $acls = AuthService::getLoggedUser()->mergedRole->listAcls(true); } if (!count($acls)) { $drvList = array(); } else { $criteria = array("uuid" => array_keys($acls)); $drvList = $confDriver->listRepositoriesWithCriteria($criteria); } } else { if ($includeShared) { $drvList = $confDriver->listRepositories(); } else { $drvList = $confDriver->listRepositoriesWithCriteria(array("owner_user_id" => AJXP_FILTER_EMPTY)); } } if (is_array($drvList)) { /** * @var $drvList Repository[] */ foreach ($drvList as $repoId => $repoObject) { $driver = AJXP_PluginsService::getInstance()->getPluginByTypeName("access", $repoObject->getAccessType()); if (!is_object($driver) || !$driver->isEnabled()) { unset($drvList[$repoId]); } else { $repoObject->setId($repoId); $drvList[$repoId] = $repoObject; } if ($repoObject->hasParent() && !ConfService::findRepositoryByIdOrAlias($repoObject->getParentId())) { AJXP_Logger::error(__CLASS__, __FUNCTION__, "Disabling repository " . $repoObject->getSlug() . " as parent cannot be correctly loaded."); unset($drvList[$repoId]); } } foreach ($drvList as $key => $value) { $objList[$key] = $value; } } $args = array(&$objList); AJXP_Controller::applyIncludeHook("sec.access_ws", $args); return $objList; }
$confPlugin = ConfService::getInstance()->confPluginSoftLoad($pServ); $pServ->loadPluginsRegistry(AJXP_INSTALL_PATH . "/plugins", $confPlugin); ConfService::start(); $confStorageDriver = ConfService::getConfStorageImpl(); require_once $confStorageDriver->getUserClassFileName(); session_name("AjaXplorer"); session_start(); AuthService::$useSession = false; AuthService::logUser(AJXP_API_USER, "", true); $authDriver = ConfService::getAuthDriverImpl(); $uri = $_SERVER["REQUEST_URI"]; $scriptUri = ltrim(dirname($_SERVER["SCRIPT_NAME"]), '/') . "/api/"; $uri = substr($uri, strlen($scriptUri)); $uri = explode("/", $uri); // GET REPO ID $repoID = array_shift($uri); // GET ACTION NAME $action = array_shift($uri); $path = "/" . implode("/", $uri); $repo =& ConfService::findRepositoryByIdOrAlias($repoID); if ($repo == null) { die("Cannot find repository with ID " . $repoID); } ConfService::switchRootDir($repo->getId()); // DRIVERS BELOW NEED IDENTIFICATION CHECK if (!AuthService::usersEnabled() || ConfService::getCoreConf("ALLOW_GUEST_BROWSING", "auth") || AuthService::getLoggedUser() != null) { $confDriver = ConfService::getConfStorageImpl(); $Driver = ConfService::loadDriverForRepository($repo); } AJXP_PluginsService::getInstance()->initActivePlugins(); AJXP_Controller::findRestActionAndApply($action, $path);