Commit d23ca1fb67a245394b4e10c9b96a5897b6149d32
1 parent
e1797035
Flatten nested ifs into more readable code.
git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3112 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
158 additions
and
154 deletions
presentation/lookAndFeel/knowledgeTree/foldermanagement/addFolderBL.php
| ... | ... | @@ -35,160 +35,164 @@ KTUtil::extractGPC('fDocumentTypeID', 'fFolderID', 'fFolderName'); |
| 35 | 35 | |
| 36 | 36 | require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); |
| 37 | 37 | |
| 38 | -if (checkSession()) { | |
| 39 | - require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); | |
| 40 | - | |
| 41 | - $oPatternCustom = & new PatternCustom(); | |
| 42 | - | |
| 43 | - if (isset($fFolderID)) { | |
| 44 | - //initialse a folder object | |
| 45 | - $oFolder = Folder::get($fFolderID); | |
| 46 | - require_once("$default->fileSystemRoot/lib/visualpatterns/PatternTableSqlQuery.inc"); | |
| 47 | - require_once("$default->fileSystemRoot/lib/visualpatterns/PatternListBox.inc"); | |
| 48 | - require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); | |
| 49 | - require_once("$default->fileSystemRoot/lib/foldermanagement/FolderDocTypeLink.inc"); | |
| 50 | - require_once("$default->fileSystemRoot/lib/foldermanagement/PhysicalFolderManagement.inc"); | |
| 51 | - require_once("$default->fileSystemRoot/lib/subscriptions/SubscriptionEngine.inc"); | |
| 52 | - require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc"); | |
| 53 | - require_once("$default->fileSystemRoot/presentation/Html.inc"); | |
| 54 | - require_once("addFolderUI.inc"); | |
| 55 | - | |
| 56 | - if (!isset($fFolderName)) { | |
| 57 | - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 58 | - //we're still browsing | |
| 59 | - | |
| 60 | - if (Permission::userHasFolderWritePermission($oFolder)) { | |
| 61 | - //if the user is allowed to add folders, then display the add button | |
| 62 | - $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID)); | |
| 63 | - } else { | |
| 64 | - //otherwise just let the user browse | |
| 65 | - $oPatternCustom->setHtml(renderBrowsePage($fFolderID)); | |
| 66 | - $main->setErrorMessage(_("You do not have permission to create new folders in this folder") . "</td><td><a href=\"$default->rootUrl/control.php?action=browse&fFolderID=$fFolderID\"><img src=\"" . KTHtml::getCancelButton() . "\" border=\"0\"></a>"); | |
| 67 | - } | |
| 68 | - $main->setCentralPayload($oPatternCustom); | |
| 69 | - $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 70 | - $main->setHasRequiredFields(true); | |
| 71 | - $main->render(); | |
| 72 | - } else { | |
| 73 | - // a document type has been specified | |
| 74 | - if (isset($fDocumentTypeID)) { | |
| 75 | - //have a folder name to store | |
| 76 | - if (Permission::userHasFolderWritePermission($oFolder)) { | |
| 77 | - //check for illegal characters in the folder name | |
| 78 | - | |
| 79 | - // strip slashes from the already EPGCS escaped form input | |
| 80 | - $sCheckFolderName = stripslashes($fFolderName); | |
| 81 | - if (strpos($sCheckFolderName, "\\") === false && strpos($sCheckFolderName, ">") === false && | |
| 82 | - strpos($sCheckFolderName, "<") === false && strpos($sCheckFolderName, ":") === false && | |
| 83 | - strpos($sCheckFolderName, "*") === false && strpos($sCheckFolderName, "?") === false && | |
| 84 | - strpos($sCheckFolderName, "|") === false && strpos($sCheckFolderName, "/") === false && | |
| 85 | - strpos($sCheckFolderName, "\"") === false) { | |
| 86 | - | |
| 87 | - if (Folder::folderExistsName($fFolderName, $fFolderID)) { | |
| 88 | - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 89 | - $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID)); | |
| 90 | - $main->setCentralPayload($oPatternCustom); | |
| 91 | - $main->setErrorMessage(sprintf(_("There is another folder named %s in this folder already"), $fFolderName)); | |
| 92 | - $main->setHasRequiredFields(true); | |
| 93 | - $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 94 | - $main->render(); | |
| 95 | - } else { | |
| 96 | - $oParentFolder = Folder::get($fFolderID); | |
| 97 | - //create the folder in the db, giving it the properties of it's parent folder | |
| 98 | - $oFolder = & new Folder($fFolderName, "", $fFolderID, $_SESSION["userID"], $oParentFolder->getUnitID()); | |
| 99 | - if ($oFolder->create()) { | |
| 100 | - $oFolderDocTypeLink = & new FolderDocTypeLink($oFolder->getID(), $fDocumentTypeID); | |
| 101 | - if ($oFolderDocTypeLink->create()) { | |
| 102 | - //create the folder on the file system | |
| 103 | - if (PhysicalFolderManagement::createFolder(Folder::getFolderPath($oFolder->getID()))) { | |
| 104 | - $default->log->info("addFolderBL.php successfully added folder $fFolderName to parent folder " . Folder::getFolderPath($fFolderID) . " id=$fFolderID"); | |
| 105 | - | |
| 106 | - // fire subscription alerts for the new folder | |
| 107 | - $count = SubscriptionEngine::fireSubscription($oParentFolder->getID(), SubscriptionConstants::subscriptionAlertType("AddFolder"), | |
| 108 | - SubscriptionConstants::subscriptionType("FolderSubscription"), | |
| 109 | - array( "newFolderName" => $fFolderName, | |
| 110 | - "parentFolderName" => $oParentFolder->getName()) ); | |
| 111 | - $default->log->info("addFolderBL.php fired $count subscription alerts for new folder $fFolderName"); | |
| 112 | - redirect("$default->rootUrl/control.php?action=editFolder&fFolderID=" . $oFolder->getID()); | |
| 113 | - } else { | |
| 114 | - //if we couldn't do that | |
| 115 | - $default->log->error("addFolderBL.php Filesystem error attempting to store folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' id=$fFolderID"); | |
| 116 | - | |
| 117 | - // remove the folder and its doc type link from the db and report and error | |
| 118 | - $oFolderDocTypeLink->delete(); | |
| 119 | - $oFolder->delete(); | |
| 120 | - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 121 | - $oPatternCustom->setHtml(renderBrowsePage($fFolderID)); | |
| 122 | - $main->setCentralPayload($oPatternCustom); | |
| 123 | - $main->setErrorMessage(sprintf(_("There was an error creating the folder %s on the filesystem"), $fFolderName)); | |
| 124 | - $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 125 | - $main->setHasRequiredFields(true); | |
| 126 | - $main->render(); | |
| 127 | - } | |
| 128 | - } else { | |
| 129 | - //couldn't associate the chosen document type with this folder | |
| 130 | - $default->log->error("addFolderBL.php DB error storing folder-document type link for folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' folderID=$fFolderID; docTypeID=$fDocumentTypeID"); | |
| 131 | - | |
| 132 | - //remove the folder from the database | |
| 133 | - $oFolder->delete(); | |
| 134 | - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 135 | - $oPatternCustom->setHtml(renderBrowsePage($fFolderID)); | |
| 136 | - $main->setCentralPayload($oPatternCustom); | |
| 137 | - $main->setErrorMessage(sprintf(_("There was an error creating the folder %s on the filesystem"), $fFolderName)); | |
| 138 | - $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 139 | - $main->setHasRequiredFields(true); | |
| 140 | - $main->render(); | |
| 141 | - } | |
| 142 | - } else { | |
| 143 | - //if we couldn't create the folder in the db, report an error | |
| 144 | - $default->log->error("addFolderBL.php DB error attempting to store folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' id=$fFolderID"); | |
| 145 | - | |
| 146 | - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 147 | - $oPatternCustom->setHtml(renderBrowsePage($fFolderID)); | |
| 148 | - $main->setCentralPayload($oPatternCustom); | |
| 149 | - $main->setErrorMessage(sprintf(_("There was an error creating the folder %s in the database"), $fFolderName)); | |
| 150 | - $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 151 | - $main->render(); | |
| 152 | - } | |
| 153 | - } | |
| 154 | - } else { | |
| 155 | - //the user entered an illegal character in the folder name | |
| 156 | - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 157 | - $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID)); | |
| 158 | - $main->setCentralPayload($oPatternCustom); | |
| 159 | - $main->setErrorMessage(_("Folder not created. Folder names may not contain: '<', '>', '*', '/', '\', '|', '?' or '\"' ")); | |
| 160 | - $main->setHasRequiredFields(true); | |
| 161 | - $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 162 | - $main->render(); | |
| 163 | - } | |
| 164 | - | |
| 165 | - } else { | |
| 166 | - //if the user doesn't have write permission for this folder, | |
| 167 | - //give them only browse facilities | |
| 168 | - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 169 | - $oPatternCustom->setHtml(renderBrowsePage($fFolderID)); | |
| 170 | - $main->setCentralPayload($oPatternCustom); | |
| 171 | - $main->setErrorMessage(_("You do not have permission to create new folders in this folder")); | |
| 172 | - $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 173 | - $main->render(); | |
| 174 | - } | |
| 175 | - } else { | |
| 176 | - //there are no document type assigned to this folder | |
| 177 | - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 178 | - $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID)); | |
| 179 | - $main->setCentralPayload($oPatternCustom); | |
| 180 | - $main->setErrorMessage(_("You did not specify a document type. If there are no system document types, please contact a System Administrator.")); | |
| 181 | - $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 182 | - $main->render(); | |
| 183 | - } | |
| 184 | - } | |
| 185 | - } else { | |
| 186 | - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 187 | - $oPatternCustom->setHtml(""); | |
| 188 | - $main->setCentralPayload($oPatternCustom); | |
| 189 | - $main->setErrorMessage(_("No folder currently selected")); | |
| 190 | - $main->render(); | |
| 191 | - } | |
| 38 | +if (!checkSession()) { | |
| 39 | + // Doesn't return anyway. Just in case... | |
| 40 | + exit(0); | |
| 192 | 41 | } |
| 193 | 42 | |
| 43 | +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); | |
| 44 | + | |
| 45 | +$oPatternCustom = & new PatternCustom(); | |
| 46 | + | |
| 47 | +if (!isset($fFolderID)) { | |
| 48 | + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 49 | + $oPatternCustom->setHtml(""); | |
| 50 | + $main->setCentralPayload($oPatternCustom); | |
| 51 | + $main->setErrorMessage(_("No folder currently selected")); | |
| 52 | + $main->render(); | |
| 53 | + exit(0); | |
| 54 | +} | |
| 55 | + | |
| 56 | +//initialse a folder object | |
| 57 | +$oFolder = Folder::get($fFolderID); | |
| 58 | +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternTableSqlQuery.inc"); | |
| 59 | +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternListBox.inc"); | |
| 60 | +require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); | |
| 61 | +require_once("$default->fileSystemRoot/lib/foldermanagement/FolderDocTypeLink.inc"); | |
| 62 | +require_once("$default->fileSystemRoot/lib/foldermanagement/PhysicalFolderManagement.inc"); | |
| 63 | +require_once("$default->fileSystemRoot/lib/subscriptions/SubscriptionEngine.inc"); | |
| 64 | +require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc"); | |
| 65 | +require_once("$default->fileSystemRoot/presentation/Html.inc"); | |
| 66 | +require_once("addFolderUI.inc"); | |
| 67 | + | |
| 68 | +if (!Permission::userHasFolderWritePermission($oFolder)) { | |
| 69 | + //if the user doesn't have write permission for this folder, | |
| 70 | + //give them only browse facilities | |
| 71 | + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 72 | + $oPatternCustom->setHtml(renderBrowsePage($fFolderID)); | |
| 73 | + $main->setCentralPayload($oPatternCustom); | |
| 74 | + $main->setErrorMessage(_("You do not have permission to create new folders in this folder")); | |
| 75 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 76 | + $main->render(); | |
| 77 | + exit(0); | |
| 78 | +} | |
| 79 | + | |
| 80 | + | |
| 81 | +if (!isset($fFolderName)) { | |
| 82 | + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 83 | + | |
| 84 | + $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID)); | |
| 85 | + $main->setCentralPayload($oPatternCustom); | |
| 86 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 87 | + $main->setHasRequiredFields(true); | |
| 88 | + $main->render(); | |
| 89 | + exit(0); | |
| 90 | +} | |
| 91 | + | |
| 92 | +// a document type has been specified | |
| 93 | +if (!isset($fDocumentTypeID)) { | |
| 94 | + //there are no document type assigned to this folder | |
| 95 | + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 96 | + $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID)); | |
| 97 | + $main->setCentralPayload($oPatternCustom); | |
| 98 | + $main->setErrorMessage(_("You did not specify a document type. If there are no system document types, please contact a System Administrator.")); | |
| 99 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 100 | + $main->render(); | |
| 101 | + exit(0); | |
| 102 | +} | |
| 103 | + | |
| 104 | +//check for illegal characters in the folder name | |
| 105 | + | |
| 106 | +// strip slashes from the already EPGCS escaped form input | |
| 107 | +$sCheckFolderName = stripslashes($fFolderName); | |
| 108 | +if (!(strpos($sCheckFolderName, "\\") === false && strpos($sCheckFolderName, ">") === false && | |
| 109 | + strpos($sCheckFolderName, "<") === false && strpos($sCheckFolderName, ":") === false && | |
| 110 | + strpos($sCheckFolderName, "*") === false && strpos($sCheckFolderName, "?") === false && | |
| 111 | + strpos($sCheckFolderName, "|") === false && strpos($sCheckFolderName, "/") === false && | |
| 112 | + strpos($sCheckFolderName, "\"") === false)) { | |
| 113 | + //the user entered an illegal character in the folder name | |
| 114 | + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 115 | + $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID)); | |
| 116 | + $main->setCentralPayload($oPatternCustom); | |
| 117 | + $main->setErrorMessage(_("Folder not created. Folder names may not contain: '<', '>', '*', '/', '\', '|', '?' or '\"' ")); | |
| 118 | + $main->setHasRequiredFields(true); | |
| 119 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 120 | + $main->render(); | |
| 121 | + exit(0); | |
| 122 | +} | |
| 123 | + | |
| 124 | +if (Folder::folderExistsName($fFolderName, $fFolderID)) { | |
| 125 | + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 126 | + $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID)); | |
| 127 | + $main->setCentralPayload($oPatternCustom); | |
| 128 | + $main->setErrorMessage(sprintf(_("There is another folder named %s in this folder already"), $fFolderName)); | |
| 129 | + $main->setHasRequiredFields(true); | |
| 130 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 131 | + $main->render(); | |
| 132 | + exit(0); | |
| 133 | +} | |
| 134 | + | |
| 135 | +$oParentFolder = Folder::get($fFolderID); | |
| 136 | +//create the folder in the db, giving it the properties of it's parent folder | |
| 137 | +$oFolder = & new Folder($fFolderName, "", $fFolderID, $_SESSION["userID"], $oParentFolder->getUnitID()); | |
| 138 | + | |
| 139 | +if (!$oFolder->create()) { | |
| 140 | + //if we couldn't create the folder in the db, report an error | |
| 141 | + $default->log->error("addFolderBL.php DB error attempting to store folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' id=$fFolderID"); | |
| 142 | + | |
| 143 | + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 144 | + $oPatternCustom->setHtml(renderBrowsePage($fFolderID)); | |
| 145 | + $main->setCentralPayload($oPatternCustom); | |
| 146 | + $main->setErrorMessage(sprintf(_("There was an error creating the folder %s in the database"), $fFolderName)); | |
| 147 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 148 | + $main->render(); | |
| 149 | + exit(0); | |
| 150 | +} | |
| 151 | + | |
| 152 | + | |
| 153 | +$oFolderDocTypeLink = & new FolderDocTypeLink($oFolder->getID(), $fDocumentTypeID); | |
| 154 | +if (!$oFolderDocTypeLink->create()) { | |
| 155 | + //couldn't associate the chosen document type with this folder | |
| 156 | + $default->log->error("addFolderBL.php DB error storing folder-document type link for folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' folderID=$fFolderID; docTypeID=$fDocumentTypeID"); | |
| 157 | + | |
| 158 | + //remove the folder from the database | |
| 159 | + $oFolder->delete(); | |
| 160 | + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 161 | + $oPatternCustom->setHtml(renderBrowsePage($fFolderID)); | |
| 162 | + $main->setCentralPayload($oPatternCustom); | |
| 163 | + $main->setErrorMessage(sprintf(_("There was an error creating the folder %s on the filesystem"), $fFolderName)); | |
| 164 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 165 | + $main->setHasRequiredFields(true); | |
| 166 | + $main->render(); | |
| 167 | + exit(0); | |
| 168 | +} | |
| 169 | + | |
| 170 | +//create the folder on the file system | |
| 171 | +if (!PhysicalFolderManagement::createFolder(Folder::getFolderPath($oFolder->getID()))) { | |
| 172 | + //if we couldn't do that | |
| 173 | + $default->log->error("addFolderBL.php Filesystem error attempting to store folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' id=$fFolderID"); | |
| 174 | + | |
| 175 | + // remove the folder and its doc type link from the db and report and error | |
| 176 | + $oFolderDocTypeLink->delete(); | |
| 177 | + $oFolder->delete(); | |
| 178 | + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | |
| 179 | + $oPatternCustom->setHtml(renderBrowsePage($fFolderID)); | |
| 180 | + $main->setCentralPayload($oPatternCustom); | |
| 181 | + $main->setErrorMessage(sprintf(_("There was an error creating the folder %s on the filesystem"), $fFolderName)); | |
| 182 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID"); | |
| 183 | + $main->setHasRequiredFields(true); | |
| 184 | + $main->render(); | |
| 185 | + exit(0); | |
| 186 | +} | |
| 187 | + | |
| 188 | +$default->log->info("addFolderBL.php successfully added folder $fFolderName to parent folder " . Folder::getFolderPath($fFolderID) . " id=$fFolderID"); | |
| 189 | + | |
| 190 | +// fire subscription alerts for the new folder | |
| 191 | +$count = SubscriptionEngine::fireSubscription($oParentFolder->getID(), SubscriptionConstants::subscriptionAlertType("AddFolder"), | |
| 192 | + SubscriptionConstants::subscriptionType("FolderSubscription"), | |
| 193 | + array( "newFolderName" => $fFolderName, | |
| 194 | + "parentFolderName" => $oParentFolder->getName()) ); | |
| 195 | +$default->log->info("addFolderBL.php fired $count subscription alerts for new folder $fFolderName"); | |
| 196 | +redirect("$default->rootUrl/control.php?action=editFolder&fFolderID=" . $oFolder->getID()); | |
| 197 | + | |
| 194 | 198 | ?> | ... | ... |