Commit d23ca1fb67a245394b4e10c9b96a5897b6149d32

Authored by Neil Blakey-Milner
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
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 ?>