view controllers/extractapp.php @ 77:97c1e5102a22 extractapp

New: export table for a file from LGService
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Thu, 16 Apr 2015 14:53:22 +0200
parents 60b5a94163c3
children 960ba96efce1
line wrap: on
line source

<?php
/** 
    * Extractapp is extended from the BaseController.
    * This is where we handle the processes for every action.
    * 
    * For example, there are five actions in Extractapp, tagging text, exporting a table,
    * editing the wordlist, and configurating tags in one topic.
**/

class Extractapp extends BaseController {
	protected function Index() {
		$viewmodel = new ExtractappModel();
        $this->ReturnView($viewmodel->Index(), true);
	}
    protected $viewmodel;

       
    public function __construct($action, $urlvalues, $postdata){
        parent::__construct($action, $urlvalues, $postdata); 
        $this->viewmodel = new ExtractappModel();
    }

    protected function TaggingText() {
        /**
            * TaggingText action in Extractapp handles the taging related actions, for example, 
            * tagging itself, saving tag results, loading and saving regular expression for tagging.
            * They are handled by 'func' variable in postdata, which could come from LGService or from extraction-interface application itself.
            *
            * From LGService, the postdata contains essential information about the file/section of local gazetteers data.
            * This happens when user entering to extraction-interface the first time, or after s/he saved her/is tagging results to LGService.
            * (default one, SaveFullTextToLGService, SmartRegexLoad, SmartRegexSave case)
            * 
            * From extraction-interface itself, it contains the information from previous page.
            * This happens when user choosing another topic in the extraction-interface, 
            * the page need to retrieve related information from database for the topic.
            * (ContinueTagging case)
        */

        $viewmodel = $this->viewmodel;
        
        if (isset($this->postdata['func'])) {
            $func = $this->postdata['func'];
        }
        switch ($func) {
            case 'SaveFullText':
                $viewmodel->SaveFullText($this->postdata);          
                $this->ReturnView($viewmodel->StartTagging(), true); 
                break;   
            case 'SaveFullTextToLGService':
                $viewmodel->messages['info'] .= "SaveFullTextToLGService! ";
                $viewmodel->GetInfoFromPreviousPage($this->postdata);
                $response = $viewmodel->SaveFullTextToLGService($this->postdata);
                $viewmodel->UpdateInfoByResponseFromLGService($response);    // update file_id, branch_id, user_id
                $viewmodel->GetTextFromFileId();     
                $this->ReturnView($viewmodel->StartTagging(), true); 
                break;

            case 'SmartRegexLoad':
                $viewmodel->SmartRegexLoad($this->postdata['topic_id']);
                break;
            case 'SmartRegexSave':
                $viewmodel->SmartRegexSave($this->postdata);
                break;
            case 'ReloadText':
                $viewmodel->messages['info'] .= "Reload the latest text ";
                $viewmodel->GetInfoFromPreviousPage($this->postdata);
                $viewmodel->ReloadSetting();    // set file_id = current_fileId, current_fileId = 0
                $viewmodel->GetTextFromFileId();
                $this->ReturnView($viewmodel->StartTagging(), true);
                break;

            case 'ContinueTagging':
                $viewmodel->messages['info'] .= "(Countinue tagging) ";
                if ($this->postdata['topic']) {
                    $viewmodel->SetTopic($this->postdata['topic']);
                }
                $viewmodel->GetInfoFromPreviousPage($this->postdata);
                $this->ReturnView($viewmodel->StartTagging(), true); 
                break;


            default:    
                // This is where the first time user visit extraction interface from LGService
                $viewmodel->messages['info'] .= "Welcome to Extraction Interface. ";

                if (isset($this->postdata['fileId'])) {
                    if ($this->postdata['fileId'] != 0) { // ($this->postdata['branchId'] != 0) {
                        // --- Existing branch case ---
                        $viewmodel->GetInfoFromPreviousPage($this->postdata);
                        $viewmodel->SetBookMetaDataBySectionId();
                        // get text by fileId, from LGService
                        $viewmodel->GetTextFromFileId();
                    }

                } else if ($this->postdata['sectionId'] != 0 && $this->postdata['userId'] != 0) {
                    // --- New branch case ---
                    $viewmodel->GetInfoFromPreviousPage($this->postdata);
                    $viewmodel->SetBookMetaDataBySectionId();
                    // get text by sectionId from LGService
                    $viewmodel->GetTextFromSectionId();  

                } else if ($this->postdata['sectionId'] != 0) { 
                    $viewmodel->GetTextFromLocal($this->postdata['sectionId']);
                    $viewmodel->SetBookMetaDataBySectionId();

                } else if (is_numeric($this->urlvalues['id'])) {
                    // get text from local file system (for development stage only)
                    $viewmodel->GetTextFromLocal($this->urlvalues['id']);
                    $viewmodel->SetBookMetaDataBySectionId();
                    $this->ReturnView_localtest($viewmodel->StartTagging(), true); 
                    break;                    

                } else {
                    $viewmodel->messages['error'] .= "wrong url!!";
                    return;
                }

                $this->ReturnView($viewmodel->StartTagging(), true); 
                break;
        }

       
        
    }


    protected function ExportTable() {
        /**
            * ExportTable action returns "./views/Extractapp/ExportTable.php" view.
        */
        $viewmodel = $this->viewmodel;

        if (isset($this->postdata['func'])) {
            $func = $this->postdata['func'];
        }
        switch ($func) {
            case 'exportFromExtractionInterface':
                $this->ReturnView($viewmodel->ExportTable($this->postdata, false), true);
                break;

            default:    // from file
                $viewmodel->GetInfoFromPreviousPage($this->postdata);
                $viewmodel->GetTextFromFileId();
                $this->ReturnView($viewmodel->ExportTable($this->postdata, true), true);
                break;

        }

    }

    protected function EditWordlist() {
        /**
            * EditWordlist action returns "./views/Extractapp/EditWordlist.php" view, 
            * It adds or saves wordlist based on the 'func' variable in postdata.
        */

        $viewmodel = $this->viewmodel;
        if (isset($this->postdata['func'])) {
            $func = $this->postdata['func'];
        }
        switch ($func) {
            case 'AddNewList':
                $this->ReturnView($viewmodel->AddNewList($this->postdata), true);
                break;
            case 'SaveWordlist':
                $this->ReturnView($viewmodel->SaveWordlist($this->postdata), true);
                break;
            default:    // EditWordlist
                $this->ReturnView($viewmodel->EditWordlist(), true);    
            break;
         } 
    }


    protected function EditTaglist() {
        /**
            * EditTaglist action returns "./views/Extractapp/EditTaglist.php" view.
            * It adds, saves or delete tag in the current topic.
        */

        $viewmodel = $this->viewmodel;
        if (isset($this->postdata['func'])) {
            $func = $this->postdata['func'];
        }
        switch ($func) {
            case 'NewTagElement':
                $this->ReturnView($viewmodel->NewTagElement($this->postdata), true);
                break;
            case 'SaveTagElement':
                $this->ReturnView($viewmodel->SaveTagElement($this->postdata), true);
                break;
            case 'DeleteTag':
                $this->ReturnView($viewmodel->DeleteTag($this->postdata), true);
                break;
            default:    // EditTaglist
                $this->ReturnView($viewmodel->EditTaglist($this->postdata), true);
                break;
        }
    }

 
    protected function ConfigTagsInTopic() {
        /**
            * ConfigTagsInTopic action returns "./views/Extractapp/ConfigTagsInTopic.php" view.
            * It shows or updates the tags-in-topic relation.
        */

        $viewmodel = $this->viewmodel;
        if (isset($this->postdata['func'])) {
            $func = $this->postdata['func'];
        }
        switch ($func) {
            case 'Update':
                $viewmodel->UpdateTagsInTopic($this->postdata);
                break;
            default:    
                $this->ReturnView($viewmodel->ConfigTagsInTopic($this->postdata), true);  
                break;
         } 
    }


    
	
}


?>