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 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 ?>
... ...