Mercurial > hg > extraction-interface
comparison controllers/extractapp.php @ 114:7d6a107c37da extractapp
refactoring, make it more condensed.
| author | Calvin Yeh <cyeh@mpiwg-berlin.mpg.de> |
|---|---|
| date | Thu, 28 Sep 2017 14:01:59 +0200 |
| parents | e542b161d907 |
| children |
comparison
equal
deleted
inserted
replaced
| 113:e26945b2aa85 | 114:7d6a107c37da |
|---|---|
| 14 * | 14 * |
| 15 * You should have received a copy of the GNU General Public License | 15 * You should have received a copy of the GNU General Public License |
| 16 * along with Extraction-interface. If not, see <http://www.gnu.org/licenses/>. | 16 * along with Extraction-interface. If not, see <http://www.gnu.org/licenses/>. |
| 17 */ | 17 */ |
| 18 | 18 |
| 19 /** | 19 /** |
| 20 * Extractapp class is extended from the BaseController class. | 20 * Extractapp class is extended from the BaseController class. |
| 21 * It sends commands to the ExtractappModel to process or update the ExtractappModel's state. | 21 * It sends commands to the ExtractappModel to process or update the ExtractappModel's state. |
| 22 * It can also pass the commands or data (from ExtractappModel) to the associated view (files in views/Extractapp/), | 22 * It can also pass the commands or data (from ExtractappModel) to the associated view (files in views/Extractapp/), |
| 23 * for example views/Extractapp/TaggingText.php , to change the view's presentation. | 23 * for example views/Extractapp/TaggingText.php , to change the view's presentation. |
| 24 * | 24 * |
| 25 * There are five actions in Extractapp: tagging text, exporting a table, | 25 * There are five actions in Extractapp: tagging text, exporting a table, |
| 26 * editing the wordlist, editing the taglist, and configurating tags in one topic. | 26 * editing the wordlist, editing the taglist, and configurating tags in one topic. |
| 27 * Each action is one of the methods in Extractapp. | 27 * Each action is one of the methods in Extractapp. |
| 28 * | 28 * |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 class Extractapp extends BaseController { | 31 class Extractapp extends BaseController { |
| 32 | 32 |
| 33 | 33 |
| 34 protected $viewmodel; | 34 protected $viewmodel; |
| 35 | 35 |
| 36 | 36 |
| 37 public function __construct($action, $urlvalues, $postdata){ | 37 public function __construct($action, $urlvalues, $postdata){ |
| 38 parent::__construct($action, $urlvalues, $postdata); | 38 parent::__construct($action, $urlvalues, $postdata); |
| 39 $this->viewmodel = new ExtractappModel(); | 39 $this->viewmodel = new ExtractappModel(); |
| 40 } | 40 } |
| 41 | 41 |
| 42 protected function TaggingText() { | 42 protected function TaggingText() { |
| 43 /** | 43 /** |
| 44 * TaggingText action in Extractapp handles the taging related actions, for example, | 44 * TaggingText action in Extractapp handles the taging related actions, for example, |
| 45 * tagging itself, saving tag results, loading and saving regular expression for tagging. | 45 * tagging itself, saving tag results, loading and saving regular expression for tagging. |
| 46 * They are handled by 'func' variable in postdata, which could come from LGService or from extraction-interface application itself. | 46 * They are handled by 'func' variable in postdata, which could come from LGService or from extraction-interface application itself. |
| 47 * | 47 * |
| 48 * From LGService, the postdata contains essential information about the file/section of local gazetteers data. | 48 * From LGService, the postdata contains essential information about the file/section of local gazetteers data. |
| 49 * This happens when user entering to extraction-interface the first time, or after s/he saved her/is tagging results to LGService. | 49 * This happens when user entering to extraction-interface the first time, or after s/he saved her/is tagging results to LGService. |
| 50 * (default one, SaveFullTextToLGService, SmartRegexLoad, SmartRegexSave case) | 50 * (default one, SaveFullTextToLGService, SmartRegexLoad, SmartRegexSave case) |
| 51 * | 51 * |
| 52 * From extraction-interface itself, it contains the information from previous page. | 52 * From extraction-interface itself, it contains the information from previous page. |
| 53 * This happens when user choosing another topic in the extraction-interface, | 53 * This happens when user choosing another topic in the extraction-interface, |
| 54 * the page need to retrieve related information from database for the topic. | 54 * the page need to retrieve related information from database for the topic. |
| 55 * (ContinueTagging case) | 55 * (ContinueTagging case) |
| 56 */ | 56 */ |
| 57 | 57 |
| 58 $viewmodel = $this->viewmodel; | 58 $viewmodel = $this->viewmodel; |
| 59 | 59 |
| 60 if (isset($this->postdata['func'])) { | 60 if (isset($this->postdata['func'])) { |
| 61 $func = $this->postdata['func']; | 61 $func = $this->postdata['func']; |
| 62 } else { | 62 } else { |
| 63 $func = ""; | 63 $func = ""; |
| 64 } | 64 } |
| 65 switch ($func) { | 65 switch ($func) { |
| 66 case 'SaveFullText': | 66 case 'SaveFullText': |
| 67 $viewmodel->SaveFullText($this->postdata); | 67 $viewmodel->SaveFullText($this->postdata); |
| 68 $this->ReturnView($viewmodel->StartTagging(), true); | 68 $this->ReturnView($viewmodel->StartTagging(), true); |
| 69 break; | 69 break; |
| 70 case 'SaveFullTextToLGService': | 70 case 'SaveFullTextToLGService': |
| 71 global $AT_LOCAL; | 71 |
| 72 $viewmodel->messages['info'] .= "SaveFullTextToLGService! "; | |
| 73 | |
| 74 global $AT_LOCAL; | |
| 75 | |
| 72 if ($AT_LOCAL) { | 76 if ($AT_LOCAL) { |
| 73 $viewmodel->messages['info'] .= "SaveFullTextToLGService! (local test) "; | 77 $viewmodel->messages['info'] .= "(local test) "; |
| 74 $viewmodel->SetInfoFromPreviousPage($this->postdata); | 78 } |
| 75 $response = $viewmodel->SaveFullTextToLGService($this->postdata); | 79 |
| 76 | 80 $viewmodel->SetInfoFromPreviousPage($this->postdata); |
| 77 $viewmodel->UpdateInfoResponsedFromLGService($response); // update file_id, branch_id, user_id | 81 |
| 78 $viewmodel->SetTextFromFileId(); | 82 $response = $viewmodel->SaveFullTextToLGService($this->postdata); |
| 79 | 83 |
| 80 } else { | 84 $viewmodel->UpdateInfoResponsedFromLGService($response); // update file_id, branch_id, user_id |
| 81 | 85 |
| 82 $viewmodel->messages['info'] .= "SaveFullTextToLGService! "; | 86 $viewmodel->SetTextFromFileId(); |
| 83 $viewmodel->SetInfoFromPreviousPage($this->postdata); | 87 |
| 84 $response = $viewmodel->SaveFullTextToLGService($this->postdata); | 88 $this->ReturnView($viewmodel->StartTagging(), true); |
| 85 | |
| 86 $viewmodel->UpdateInfoResponsedFromLGService($response); // update file_id, branch_id, user_id | |
| 87 | |
| 88 $viewmodel->SetTextFromFileId(); | |
| 89 } | |
| 90 $this->ReturnView($viewmodel->StartTagging(), true); | |
| 91 break; | 89 break; |
| 92 | 90 |
| 93 case 'SmartRegexLoad': | 91 case 'SmartRegexLoad': |
| 94 $viewmodel->LoadSmartRegex($this->postdata['topic_id']); | 92 $viewmodel->LoadSmartRegex($this->postdata['topic_id']); |
| 95 break; | 93 break; |
| 104 $this->ReturnView($viewmodel->StartTagging(), true); | 102 $this->ReturnView($viewmodel->StartTagging(), true); |
| 105 break; | 103 break; |
| 106 | 104 |
| 107 case 'ContinueTagging': | 105 case 'ContinueTagging': |
| 108 $viewmodel->messages['info'] .= "(Countinue tagging) "; | 106 $viewmodel->messages['info'] .= "(Countinue tagging) "; |
| 109 $viewmodel->SetInfoFromPreviousPage($this->postdata); | 107 $viewmodel->SetInfoFromPreviousPage($this->postdata); |
| 110 | 108 |
| 111 // when new section hasn't been saved to LGServices, no fileId and no branchId | 109 // when new section hasn't been saved to LGServices, no fileId and no branchId |
| 112 if ($this->postdata['fileId'] == 0) { | 110 if ($this->postdata['fileId'] == 0) { |
| 113 $viewmodel->SetTextFromSectionId(); | 111 $viewmodel->SetTextFromSectionId(); |
| 114 } else { | 112 } else { |
| 115 $viewmodel->SetTextFromFileId(); // get text by fileId, from LGService | 113 $viewmodel->SetTextFromFileId(); // get text by fileId, from LGService |
| 116 } | 114 } |
| 117 | 115 |
| 118 $viewmodel->SetTopic($this->postdata['topic']); | 116 $viewmodel->SetTopic($this->postdata['topic']); |
| 119 | 117 |
| 120 $this->ReturnView($viewmodel->StartTagging(), true); | 118 $this->ReturnView($viewmodel->StartTagging(), true); |
| 121 break; | 119 break; |
| 122 | 120 |
| 123 case 'CreateNewTopic': | 121 case 'CreateNewTopic': |
| 124 $result = $viewmodel->CreateNewTopic($this->postdata); | 122 $result = $viewmodel->CreateNewTopic($this->postdata); |
| 125 if ($result == "error") { | 123 if ($result == "error") { |
| 126 $viewmodel->messages['error'] .= "Fail to create the new topic <br> "; | 124 $viewmodel->messages['error'] .= "Fail to create the new topic <br> "; |
| 127 } else { | 125 } else { |
| 128 // then act like ContinueTagging | 126 // then act like ContinueTagging |
| 129 $viewmodel->messages['info'] .= "Created a new topic <br>"; | 127 $viewmodel->messages['info'] .= "Created a new topic <br>"; |
| 130 $viewmodel->SetInfoFromPreviousPage($result); | 128 $viewmodel->SetInfoFromPreviousPage($result); |
| 131 | 129 |
| 132 // when new section hasn't been saved to LGServices, no fileId and no branchId | 130 // when new section hasn't been saved to LGServices, no fileId and no branchId |
| 133 if ($this->postdata['fileId'] == 0) { | 131 if ($this->postdata['fileId'] == 0) { |
| 134 $viewmodel->SetTextFromSectionId(); | 132 $viewmodel->SetTextFromSectionId(); |
| 135 } else { | 133 } else { |
| 136 $viewmodel->SetTextFromFileId(); // get text by fileId, from LGService | 134 $viewmodel->SetTextFromFileId(); // get text by fileId, from LGService |
| 137 } | 135 } |
| 138 $viewmodel->SetTopic($result['topic']); | 136 $viewmodel->SetTopic($result['topic']); |
| 139 | 137 |
| 140 } | 138 } |
| 141 $this->ReturnView($viewmodel->StartTagging(), true); | 139 $this->ReturnView($viewmodel->StartTagging(), true); |
| 142 | 140 |
| 143 break; | 141 break; |
| 144 | 142 |
| 145 default: | 143 default: |
| 146 // This is where the first time user visit extraction interface from LGService | 144 // This is where the first time user visit extraction interface from LGService |
| 147 $viewmodel->messages['info'] .= "Welcome to Extraction Interface. "; | 145 $viewmodel->messages['info'] .= "Welcome to Extraction Interface. "; |
| 148 | 146 |
| 149 if (isset($this->postdata['fileId'])) { | 147 if (isset($this->postdata['fileId'])) { |
| 150 if ($this->postdata['fileId'] != 0) { // ($this->postdata['branchId'] != 0) { | 148 if ($this->postdata['fileId'] != 0) { // ($this->postdata['branchId'] != 0) { |
| 158 } else if ($this->postdata['sectionId'] != 0 && $this->postdata['userId'] != 0) { | 156 } else if ($this->postdata['sectionId'] != 0 && $this->postdata['userId'] != 0) { |
| 159 // --- New branch case --- | 157 // --- New branch case --- |
| 160 $viewmodel->SetInfoFromPreviousPage($this->postdata); | 158 $viewmodel->SetInfoFromPreviousPage($this->postdata); |
| 161 $viewmodel->SetBookMetadataBySectionId(); | 159 $viewmodel->SetBookMetadataBySectionId(); |
| 162 // get text by sectionId from LGService | 160 // get text by sectionId from LGService |
| 163 $viewmodel->SetTextFromSectionId(); | 161 $viewmodel->SetTextFromSectionId(); |
| 164 | 162 |
| 165 } else if ($this->postdata['sectionId'] != 0) { | 163 } else if ($this->postdata['sectionId'] != 0) { |
| 166 $viewmodel->SetTextFromLocal($this->postdata['sectionId']); | 164 $viewmodel->SetTextFromLocal($this->postdata['sectionId']); |
| 167 $viewmodel->SetBookMetadataBySectionId(); | 165 $viewmodel->SetBookMetadataBySectionId(); |
| 168 | 166 |
| 169 } else if (is_numeric($this->urlvalues['id'])) { | 167 } else if (is_numeric($this->urlvalues['id'])) { |
| 170 // get text from local file system (for development stage only) | 168 // get text from local file system (for development stage only) |
| 171 $viewmodel->SetTextFromLocal($this->urlvalues['id']); | 169 $viewmodel->SetTextFromLocal($this->urlvalues['id']); |
| 172 $viewmodel->SetBookMetadataBySectionId(); | 170 $viewmodel->SetBookMetadataBySectionId(); |
| 173 $this->ReturnView_localtest($viewmodel->StartTagging(), true); | 171 $this->ReturnView_localtest($viewmodel->StartTagging(), true); |
| 174 break; | 172 break; |
| 175 | 173 |
| 176 } else { | 174 } else { |
| 177 $viewmodel->messages['error'] .= "wrong url!!"; | 175 $viewmodel->messages['error'] .= "wrong url!!"; |
| 178 return; | 176 return; |
| 179 } | 177 } |
| 180 | 178 |
| 181 $this->ReturnView($viewmodel->StartTagging(), true); | 179 $this->ReturnView($viewmodel->StartTagging(), true); |
| 182 break; | 180 break; |
| 183 } | 181 } |
| 184 | 182 |
| 185 | 183 |
| 186 | 184 |
| 187 } | 185 } |
| 188 | 186 |
| 189 | 187 |
| 190 protected function ExportTabDelimited() { | 188 protected function ExportTabDelimited() { |
| 191 /** | 189 /** |
| 194 */ | 192 */ |
| 195 $viewmodel = $this->viewmodel; | 193 $viewmodel = $this->viewmodel; |
| 196 | 194 |
| 197 if (isset($this->postdata['fileId'])) { | 195 if (isset($this->postdata['fileId'])) { |
| 198 $viewmodel->SetInfoFromPreviousPage($this->postdata); // fileId in postdata | 196 $viewmodel->SetInfoFromPreviousPage($this->postdata); // fileId in postdata |
| 199 | 197 |
| 200 $viewmodel->SetTextFromFileId(); // this will also set section_id | 198 $viewmodel->SetTextFromFileId(); // this will also set section_id |
| 201 $viewmodel->SetBookMetadataBySectionId(); | 199 $viewmodel->SetBookMetadataBySectionId(); |
| 202 } | 200 } |
| 203 | 201 |
| 204 $this->ReturnView($viewmodel->ExportTable($this->postdata, true), false); | 202 $this->ReturnView($viewmodel->ExportTable($this->postdata, true), false); |
| 205 | 203 |
| 206 | 204 |
| 207 } | 205 } |
| 208 | 206 |
| 209 protected function ExportTable() { | 207 protected function ExportTable() { |
| 210 /** | 208 /** |
| 211 * ExportTable action returns "./views/Extractapp/ExportTable.php" view. | 209 * ExportTable action returns "./views/Extractapp/ExportTable.php" view. |
| 218 $func = ""; | 216 $func = ""; |
| 219 } | 217 } |
| 220 switch ($func) { | 218 switch ($func) { |
| 221 case 'exportFromExtractionInterface': | 219 case 'exportFromExtractionInterface': |
| 222 $viewmodel->SetInfoFromPreviousPage($this->postdata); | 220 $viewmodel->SetInfoFromPreviousPage($this->postdata); |
| 223 | 221 |
| 224 $this->ReturnView($viewmodel->ExportTable($this->postdata, false), true); | 222 $this->ReturnView($viewmodel->ExportTable($this->postdata, false), true); |
| 225 break; | 223 break; |
| 226 | 224 |
| 227 default: // from file | 225 default: // from file |
| 228 // exportFromLGServicesHtmlTable | 226 // exportFromLGServicesHtmlTable |
| 229 if (isset($this->postdata['fileId'])) { | 227 if (isset($this->postdata['fileId'])) { |
| 230 $viewmodel->SetInfoFromPreviousPage($this->postdata); // only fileId in postdata | 228 $viewmodel->SetInfoFromPreviousPage($this->postdata); // only fileId in postdata |
| 231 | 229 |
| 232 $viewmodel->SetTextFromFileId(); // this will also set section_id | 230 $viewmodel->SetTextFromFileId(); // this will also set section_id |
| 233 $viewmodel->SetBookMetadataBySectionId(); | 231 $viewmodel->SetBookMetadataBySectionId(); |
| 234 } | 232 } |
| 235 | 233 |
| 236 $this->ReturnView($viewmodel->ExportTable($this->postdata, true), false); | 234 $this->ReturnView($viewmodel->ExportTable($this->postdata, true), false); |
| 237 break; | 235 break; |
| 242 | 240 |
| 243 } | 241 } |
| 244 | 242 |
| 245 protected function EditWordlist() { | 243 protected function EditWordlist() { |
| 246 /** | 244 /** |
| 247 * EditWordlist action returns "./views/Extractapp/EditWordlist.php" view, | 245 * EditWordlist action returns "./views/Extractapp/EditWordlist.php" view, |
| 248 * It adds or saves wordlist based on the 'func' variable in postdata. | 246 * It adds or saves wordlist based on the 'func' variable in postdata. |
| 249 */ | 247 */ |
| 250 | 248 |
| 251 $viewmodel = $this->viewmodel; | 249 $viewmodel = $this->viewmodel; |
| 252 if (isset($this->postdata['func'])) { | 250 if (isset($this->postdata['func'])) { |
| 260 break; | 258 break; |
| 261 case 'SaveWordlist': | 259 case 'SaveWordlist': |
| 262 $this->ReturnView($viewmodel->SaveWordlist($this->postdata), true); | 260 $this->ReturnView($viewmodel->SaveWordlist($this->postdata), true); |
| 263 break; | 261 break; |
| 264 default: // EditWordlist | 262 default: // EditWordlist |
| 265 $this->ReturnView($viewmodel->EditWordlist(), true); | 263 $this->ReturnView($viewmodel->EditWordlist(), true); |
| 266 break; | 264 break; |
| 267 } | 265 } |
| 268 } | 266 } |
| 269 | 267 |
| 270 | 268 |
| 271 protected function EditTaglist() { | 269 protected function EditTaglist() { |
| 272 /** | 270 /** |
| 280 } else { | 278 } else { |
| 281 $func = ""; | 279 $func = ""; |
| 282 } | 280 } |
| 283 switch ($func) { | 281 switch ($func) { |
| 284 case 'NewTagElement': | 282 case 'NewTagElement': |
| 285 $this->ReturnView($viewmodel->NewTagElement($this->postdata), true); | 283 $this->ReturnView($viewmodel->NewTagElement($this->postdata), false); |
| 286 break; | 284 break; |
| 287 case 'SaveTagElement': | 285 case 'SaveTagElement': |
| 288 $this->ReturnView($viewmodel->SaveTagElement($this->postdata), true); | 286 $this->ReturnView($viewmodel->SaveTagElement($this->postdata), false); |
| 289 break; | 287 break; |
| 290 case 'DeleteTag': | 288 case 'DeleteTag': |
| 291 $this->ReturnView($viewmodel->DeleteTag($this->postdata), true); | 289 $this->ReturnView($viewmodel->DeleteTag($this->postdata), true); |
| 292 break; | 290 break; |
| 293 default: // EditTaglist | 291 default: // EditTaglist |
| 294 $this->ReturnView($viewmodel->EditTaglist($this->postdata), true); | 292 $this->ReturnView($viewmodel->EditTaglist($this->postdata), true); |
| 295 break; | 293 break; |
| 296 } | 294 } |
| 297 } | 295 } |
| 298 | 296 |
| 299 | 297 |
| 300 protected function ConfigTagsInTopic() { | 298 protected function ConfigTagsInTopic() { |
| 301 /** | 299 /** |
| 302 * ConfigTagsInTopic action returns "./views/Extractapp/ConfigTagsInTopic.php" view. | 300 * ConfigTagsInTopic action returns "./views/Extractapp/ConfigTagsInTopic.php" view. |
| 303 * It shows or updates the tags-in-topic relation. | 301 * It shows or updates the tags-in-topic relation. |
| 304 */ | 302 */ |
| 313 case 'Update': | 311 case 'Update': |
| 314 $viewmodel->UpdateTagsInTopic($this->postdata); | 312 $viewmodel->UpdateTagsInTopic($this->postdata); |
| 315 break; | 313 break; |
| 316 /* | 314 /* |
| 317 case 'CreateNewTopic': | 315 case 'CreateNewTopic': |
| 318 $result = $viewmodel->CreateNewTopic($this->postdata); | 316 $result = $viewmodel->CreateNewTopic($this->postdata); |
| 319 if ($result == "error") { | 317 if ($result == "error") { |
| 320 echo "Fail to create the new topic. Please contact us."; | 318 echo "Fail to create the new topic. Please contact us."; |
| 321 } else { | 319 } else { |
| 322 $this->ReturnView($viewmodel->ConfigTagsInTopic($result), true); | 320 $this->ReturnView($viewmodel->ConfigTagsInTopic($result), true); |
| 323 } | 321 } |
| 324 break; | 322 break; |
| 325 */ | 323 */ |
| 326 default: | 324 default: |
| 327 $this->ReturnView($viewmodel->ConfigTagsInTopic($this->postdata), true); | 325 $this->ReturnView($viewmodel->ConfigTagsInTopic($this->postdata), true); |
| 328 break; | 326 break; |
| 329 } | 327 } |
| 330 } | 328 } |
| 331 | 329 |
| 332 | 330 |
| 333 | 331 |
| 334 | 332 |
| 335 } | 333 } |
| 336 | 334 |
| 337 | 335 |
| 338 ?> | 336 ?> |
