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,160 +35,164 @@ KTUtil::extractGPC('fDocumentTypeID', 'fFolderID', 'fFolderName'); | ||
| 35 | 35 | ||
| 36 | require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); | 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 | ?> |