Skip to content
This repository has been archived by the owner on Nov 25, 2020. It is now read-only.

Commit

Permalink
Fix #447 Minisites deleted from user dashboard are not correctly remo…
Browse files Browse the repository at this point in the history
…ved.
  • Loading branch information
cdujeu committed Feb 5, 2014
1 parent abedc77 commit 2bdc8a9
Showing 1 changed file with 44 additions and 31 deletions.
75 changes: 44 additions & 31 deletions core/src/plugins/access.ajxp_user/class.UserDashboardDriver.php
Expand Up @@ -101,7 +101,7 @@ public function switchAction($action, $httpVars, $fileVars)
} else if ($strippedDir == "repositories") {
$this->listRepositories();
} else if ($strippedDir == "files") {
$this->listSharedFiles();
$this->listSharedFiles("files");
}
AJXP_XMLWriter::close();
} else {
Expand Down Expand Up @@ -130,12 +130,17 @@ public function switchAction($action, $httpVars, $fileVars)
$selection->initFromHttpVars($httpVars);
$files = $selection->getFiles();
AJXP_XMLWriter::header();
$minisites = $this->listSharedFiles("minisites");
foreach ($files as $index => $element) {
$element = basename($element);
$ar = explode("shared_", $mime);
$mime = array_pop($ar);
if($mime == "repository" && isSet($minisites[$element])){
$mime = "minisite";
$element = $minisites[$element];
}
ShareCenter::deleteSharedElement($mime, $element, $loggedUser);
if($mime == "repository") $out = $mess["ajxp_conf.59"];
if($mime == "repository" || $mime == "minisite") $out = $mess["ajxp_conf.59"];
else if($mime == "user") $out = $mess["ajxp_conf.60"];
else if($mime == "file") $out = $mess["user_dash.13"];
}
Expand Down Expand Up @@ -179,16 +184,22 @@ public function switchAction($action, $httpVars, $fileVars)
return;
}

public function listSharedFiles()
/**
* @param string $mode
* @return array|void
*/
public function listSharedFiles($mode = "files")
{
AJXP_XMLWriter::sendFilesListComponentConfig('<columns switchDisplayMode="list" switchGridMode="filelist">
if($mode == "files"){
AJXP_XMLWriter::sendFilesListComponentConfig('<columns switchDisplayMode="list" switchGridMode="filelist">
<column messageId="user_dash.4" attributeName="ajxp_label" sortType="String" width="20%"/>
<column messageId="user_dash.17" attributeName="download_url" sortType="String" width="20%"/>
<column messageId="user_dash.20" attributeName="download_count" sortType="String" width="2%"/>
<column messageId="share_center.22" attributeName="download_limit" sortType="String" width="2%"/>
<column messageId="user_dash.6" attributeName="password" sortType="String" width="5%"/>
<column messageId="user_dash.7" attributeName="expiration" sortType="String" width="5%"/>
</columns>');
}
$dlFolder = ConfService::getCoreConf("PUBLIC_DOWNLOAD_FOLDER");
if(!is_dir($dlFolder)) return ;
$files = glob($dlFolder."/*.php");
Expand All @@ -203,28 +214,39 @@ public function listSharedFiles()
$fullUrl = AJXP_Utils::detectServerURL() . dirname($_SERVER['REQUEST_URI']);
$downloadBase = str_replace("\\", "/", $fullUrl.rtrim(str_replace(AJXP_INSTALL_PATH, "", $dlFolder), "/"));
}

$minisites = array();
foreach ($files as $file) {
$ar = explode(".", basename($file));
$id = array_shift($ar);
if($ar[0] != "php") continue;
//if(strlen($id) != 32) continue;
$publicletData = ShareCenter::loadPublicletData($id);
if (isset($publicletData["OWNER_ID"]) && $publicletData["OWNER_ID"] != $userId) {
continue;
if($mode == "files"){
if(isSet($publicletData["AJXP_APPLICATION_BASE"]) || isSet($publicletData["TRAVEL_PATH_TO_ROOT"])
|| (isset($publicletData["OWNER_ID"]) && $publicletData["OWNER_ID"] != $userId)
|| empty($publicletData["FILE_PATH"])
){
continue;
}
$expired = ($publicletData["EXPIRE_TIME"]!=0?($publicletData["EXPIRE_TIME"]<time()?true:false):false);
if(!is_a($publicletData["REPOSITORY"], "Repository")) continue;
AJXP_XMLWriter::renderNode(str_replace(".php", "", basename($file)), "".SystemTextEncoding::toUTF8($publicletData["REPOSITORY"]->getDisplay()).":/".SystemTextEncoding::toUTF8($publicletData["FILE_PATH"]), true, array(
"icon" => "html.png",
"password" => ($publicletData["PASSWORD"]!=""?$this->metaIcon("key").$publicletData["PASSWORD"]:""),
"expiration" => ($publicletData["EXPIRE_TIME"]!=0?($expired?$this->metaIcon("time"):"").date($mess["date_format"], $publicletData["EXPIRE_TIME"]):""),
"download_count" => !empty($publicletData["DOWNLOAD_COUNT"])?$this->metaIcon("download-alt").$publicletData["DOWNLOAD_COUNT"]:"",
"download_limit" => ($publicletData["DOWNLOAD_LIMIT"] == 0 ? "" : $this->metaIcon("cloud-download").$publicletData["DOWNLOAD_LIMIT"] ),
"integrity" => (!$publicletData["SECURITY_MODIFIED"]?$mess["user_dash.15"]:$mess["user_dash.16"]),
"download_url" => $this->metaIcon("link").$downloadBase . "/".basename($file),
"ajxp_mime" => "shared_file")
);
}else if($mode == "minisites"){
if(!isSet($publicletData["AJXP_APPLICATION_BASE"]) && !isSet($publicletData["TRAVEL_PATH_TO_ROOT"])) continue;
$minisites[$publicletData["REPOSITORY"]] = $id;
}
$expired = ($publicletData["EXPIRE_TIME"]!=0?($publicletData["EXPIRE_TIME"]<time()?true:false):false);
if(!is_a($publicletData["REPOSITORY"], "Repository")) continue;
AJXP_XMLWriter::renderNode(str_replace(".php", "", basename($file)), "".SystemTextEncoding::toUTF8($publicletData["REPOSITORY"]->getDisplay()).":/".SystemTextEncoding::toUTF8($publicletData["FILE_PATH"]), true, array(
"icon" => "html.png",
"password" => ($publicletData["PASSWORD"]!=""?$this->metaIcon("key").$publicletData["PASSWORD"]:""),
"expiration" => ($publicletData["EXPIRE_TIME"]!=0?($expired?$this->metaIcon("time"):"").date($mess["date_format"], $publicletData["EXPIRE_TIME"]):""),
"download_count" => !empty($publicletData["DOWNLOAD_COUNT"])?$this->metaIcon("download-alt").$publicletData["DOWNLOAD_COUNT"]:"",
"download_limit" => ($publicletData["DOWNLOAD_LIMIT"] == 0 ? "" : $this->metaIcon("cloud-download").$publicletData["DOWNLOAD_LIMIT"] ),
"integrity" => (!$publicletData["SECURITY_MODIFIED"]?$mess["user_dash.15"]:$mess["user_dash.16"]),
"download_url" => $this->metaIcon("link").$downloadBase . "/".basename($file),
"ajxp_mime" => "shared_file")
);
}
if($mode == "minisites"){
return $minisites;
}
}

Expand Down Expand Up @@ -327,31 +349,22 @@ public function listRepositories()
$repos = ConfService::getRepositoriesList("all");
AJXP_XMLWriter::sendFilesListComponentConfig('<columns switchGridMode="filelist"><column messageId="ajxp_conf.8" attributeName="ajxp_label" sortType="String"/><column messageId="user_dash.9" attributeName="parent_label" sortType="String"/><column messageId="user_dash.9" attributeName="repo_accesses" sortType="String"/></columns>');
$repoArray = array();
$childRepos = array();
$loggedUser = AuthService::getLoggedUser();
$users = AuthService::listUsers();
$minisites = $this->listSharedFiles("minisites");

foreach ($repos as $repoIndex => $repoObject) {
if($repoObject->getAccessType() == "ajxp_conf") continue;
if (!$repoObject->hasOwner() || $repoObject->getOwner() != $loggedUser->getId()) {
continue;
}
if(is_numeric($repoIndex)) $repoIndex = "".$repoIndex;
$name = AJXP_Utils::xmlEntities(SystemTextEncoding::toUTF8($repoObject->getDisplay()));
$name = (isSet($minisites[$repoIndex]) ? "[Minisite] ":""). AJXP_Utils::xmlEntities(SystemTextEncoding::toUTF8($repoObject->getDisplay()));
$repoArray[$name] = $repoIndex;
}
// Sort the list now by name
ksort($repoArray);
// Append child repositories
$sortedArray = array();
foreach ($repoArray as $name => $repoIndex) {
$sortedArray[$name] = $repoIndex;
if (isSet($childRepos[$repoIndex]) && is_array($childRepos[$repoIndex])) {
foreach ($childRepos[$repoIndex] as $childData) {
$sortedArray[$childData["name"]] = $childData["index"];
}
}
}
foreach ($sortedArray as $name => $repoIndex) {
$repoObject =& $repos[$repoIndex];
$repoAccesses = array();
foreach ($users as $userId => $userObject) {
Expand Down

0 comments on commit 2bdc8a9

Please sign in to comment.