public function userTeamsActions($actionName, $httpVars, $fileVars) { switch ($actionName) { case "user_team_create": $userIds = $httpVars["user_ids"]; $teamLabel = $httpVars["team_label"]; $teamId = AJXP_Utils::slugify($teamLabel) . "-" . intval(rand(0, 1000)); foreach ($userIds as $userId) { $this->addUserToTeam($teamId, $userId, $teamLabel); } echo 'Created Team $teamId'; break; case "user_team_delete": $this->removeUserFromTeam($httpVars["team_id"], null); break; case "user_team_add_user": $this->addUserToTeam($httpVars["team_id"], $httpVars["user_id"], null); break; case "user_team_edit_users": $this->editTeamUsers($httpVars["team_id"], $httpVars["users"], $httpVars["team_label"]); break; case "user_team_delete_user": $this->removeUserFromTeam($httpVars["team_id"], $httpVars["user_id"]); break; } }
/** * Use the slugify function to generate an alias from the label * @param string $slug * @return void */ public function setSlug($slug = null) { if ($slug == null) { $this->slug = AJXP_Utils::slugify($this->display); } else { $this->slug = $slug; } }
private function initCacheWithNamespace($namespace) { $cacheDriver = null; $driverOptions = $this->getFilteredOption("DRIVER"); $cachePrefix = $this->getFilteredOption("CACHE_PREFIX"); if (!is_array($driverOptions) || !isset($driverOptions['driver'])) { return null; } switch ($driverOptions['driver']) { case "apc": $cacheDriver = $this->_apc_init($driverOptions); break; case "memcache": $cacheDriver = $this->_memcache_init($driverOptions); break; case "memcached": $cacheDriver = $this->_memcached_init($driverOptions); break; case "redis": $cacheDriver = $this->_redis_init($driverOptions); break; case "xcache": $cacheDriver = $this->_xcache_init($driverOptions); break; default: break; } if (empty($cacheDriver)) { return null; } if (empty($cachePrefix)) { $cachePrefix = AJXP_Utils::slugify(AJXP_Utils::detectServerURL(true)); } $cachePrefix .= "_" . $namespace . "_"; $cacheDriver->setNamespace($cachePrefix); return $cacheDriver; }
public function userTeamsActions($actionName, $httpVars, $fileVars) { switch ($actionName) { case "user_team_create": $userIds = $httpVars["user_ids"]; $teamLabel = AJXP_Utils::sanitize($httpVars["team_label"], AJXP_SANITIZE_HTML_STRICT); if (empty($teamLabel)) { throw new Exception("Empty Team Label!"); } if (empty($userIds)) { throw new Exception("Please select some users for this team."); } $teamId = AJXP_Utils::slugify($teamLabel) . "-" . intval(rand(0, 1000)); foreach ($userIds as $userId) { $id = AJXP_Utils::sanitize($userId, AJXP_SANITIZE_EMAILCHARS); $this->addUserToTeam($teamId, $id, $teamLabel); } echo 'Created Team $teamId'; break; case "user_team_delete": $this->removeUserFromTeam($httpVars["team_id"], null); break; case "user_team_add_user": $this->addUserToTeam($httpVars["team_id"], $httpVars["user_id"], null); break; case "user_team_edit_users": $this->editTeamUsers($httpVars["team_id"], $httpVars["users"], $httpVars["team_label"]); break; case "user_team_delete_user": $this->removeUserFromTeam($httpVars["team_id"], $httpVars["user_id"]); break; } }
public function switchAction($actionName, $httpVars, $fileVars) { $this->baseURL = rtrim($this->getFilteredOption("ETHERPAD_SERVER"), "/"); $this->apiKey = $this->getFilteredOption("ETHERPAD_APIKEY"); if (isset($httpVars["file"])) { $repository = ConfService::getRepository(); if (!$repository->detectStreamWrapper(false)) { return false; } $plugin = AJXP_PluginsService::findPlugin("access", $repository->getAccessType()); $streamData = $plugin->detectStreamWrapper(true); $destStreamURL = $streamData["protocol"] . "://" . $repository->getId() . "/"; $filename = $destStreamURL . AJXP_Utils::securePath($httpVars["file"]); if (!is_file($filename)) { throw new Exception("Cannot find file!"); } } require_once "etherpad-client/etherpad-lite-client.php"; $client = new EtherpadLiteClient($this->apiKey, $this->baseURL . "/api"); $userName = AuthService::getLoggedUser()->getId(); $res = $client->createAuthorIfNotExistsFor($userName, $userName); $authorID = $res->authorID; $res2 = $client->createGroupIfNotExistsFor("ajaxplorer"); $groupID = $res2->groupID; if ($actionName == "etherpad_create") { if (isset($httpVars["pad_name"])) { $padID = $httpVars["pad_name"]; $startContent = ""; if ($httpVars["pad_type"] && $httpVars["pad_type"] == 'free') { $padID = "FREEPAD__" . $padID; } } else { if (isset($httpVars["file"])) { $startContent = file_get_contents($filename); if (strtolower(pathinfo($filename, PATHINFO_EXTENSION)) == "html") { $startContentHTML = $startContent; } $padID = AJXP_Utils::slugify($httpVars["file"]); } } $resP = $client->listPads($res2->groupID); $pads = $resP->padIDs; if (!in_array($groupID . '$' . $padID, $pads)) { $res3 = $client->createGroupPad($groupID, $padID, null); if (isset($startContentHTML)) { $client->setHTML($groupID . '$' . $padID, $startContentHTML); } else { if (!empty($startContent)) { $client->setText($groupID . '$' . $padID, $startContent); } } } else { // Check if content needs relaunch! $test = $client->getText($groupID . '$' . $padID); if (!empty($startContent) && $test->text != $startContent) { if (isset($startContentHTML)) { $client->setHTML($groupID . '$' . $padID, $startContentHTML); } else { $client->setText($groupID . '$' . $padID, $startContent); } } } $res4 = $client->createSession($groupID, $authorID, time() + 14400); $sessionID = $res4->sessionID; setcookie('sessionID', $sessionID, null, "/"); $padID = $groupID . '$' . $padID; $data = array("url" => $this->baseURL . "/p/" . $padID, "padID" => $padID, "sessionID" => $sessionID); HTMLWriter::charsetHeader('application/json'); echo json_encode($data); } else { if ($actionName == "etherpad_save") { $node = new AJXP_Node($filename); $padID = $httpVars["pad_id"]; if (isset($startContentHTML)) { $res = $client->getHTML($padID); } else { $res = $client->getText($padID); } AJXP_Controller::applyHook("node.before_change", array($node, strlen($res->text))); file_put_contents($filename, $res->text); AJXP_Controller::applyHook("node.change", array($node, $node)); } else { if ($actionName == "etherpad_close") { // WE SHOULD DETECT IF THERE IS NOBODY CONNECTED ANYMORE, AND DELETE THE PAD. $sessionID = $httpVars["session_id"]; $client->deleteSession($sessionID); } else { if ($actionName == "etherpad_proxy_api") { if ($httpVars["api_action"] == "list_pads") { $res = $client->listPads($groupID); } else { if ($httpVars["api_action"] == "list_authors_for_pad") { $res = $client->listAuthorsOfPad($httpVars["pad_id"]); } } HTMLWriter::charsetHeader("application/json"); echo json_encode($res); } } } } }