private static function chooseModule($search, $userRequest)
 {
     // es functian ancnuma konkret es texi vra grancvac u $search-in hamapatasxanox sax modulneri vra hertov, ete inch vor modulic stanumavor inq@ stugi hajordin stuguma hakarak depqum veredarznuma ardyunq@ kanchoxin
     $modulesList = FrameworkModuleVisibility_table::getModuleVisibility($search);
     //var_dump( $search, $modulesList );
     for ($i = 0; $i < count($modulesList); $i++) {
         $moduleResponse = self::getModuleView($modulesList[$i]["moduleId"], $userRequest);
         if ($moduleResponse->getStatus() != FrameworkResponse::$STATUS__CHANGE_MODULE) {
             return $moduleResponse;
         }
     }
     $moduleResponse = new FrameworkResponse();
     $moduleResponse->setStatus(FrameworkResponse::$STATUS__CHANGE_MODULE);
     return $moduleResponse;
 }
 public static function requestFromUser()
 {
     $userRequest = new FrameworkRequest();
     $userRequest->setHttpRequest($_REQUEST);
     $userResponse = new FrameworkResponse();
     $userResponse->setStatus(FrameworkResponse::$STATUS__CHANGE_TEMPLATE);
     $userResponse->setData($userRequest->getHttpRequestParam(FrameworkRequest::$REQUEST_PARAM__templateId));
     $returnView = "";
     $limit = 20;
     $count = 0;
     while ($userResponse->getStatus() == FrameworkResponse::$STATUS__CHANGE_TEMPLATE) {
         $count++;
         $oldTemplateId = $userResponse->getData();
         $userResponse = self::getTemplateResponse($userResponse->getData(), $userRequest);
         //if( $userResponse->getStatus() == FrameworkResponse::$STATUS__CHANGE_TEMPLATE && $userResponse->getData() == $oldTemplateId ){
         if ($count > $limit) {
             throw new \Exception('My Framework Exeption: template id forever in cycle problem');
         }
     }
     return $userResponse->getHtml();
 }
 private static function getAjaxResponse($model)
 {
     $res = new FrameworkResponse();
     $res->setStatus(FrameworkResponse::$STATUS__READY);
     if ($model->getCurrentState() == FrameModUserLoginRegister_Model::$STATE__NO_USER) {
         $json = array("moduleAction" => "defaultView");
         $res->setJson($json);
     } else {
         if ($model->getCurrentState() == FrameModUserLoginRegister_Model::$STATE__ADMIN_LOGIN) {
             $json = array("moduleAction" => "showLoginData", "moduleActionParam" => $model->getLoginUserData());
             $res->setJson($json);
         } else {
             if ($model->getCurrentState() == FrameModUserLoginRegister_Model::$STATE__INCORRECT_LOGIN) {
                 $json = array("moduleAction" => "showIncorrectLogin", "moduleActionParam" => "Your username or password is incorrect");
                 $res->setJson($json);
             }
         }
     }
     return $res;
 }
 public function getView($userRequest)
 {
     $userResponse = new FrameworkResponse();
     if (GlobalHelper::isRequestAjax()) {
         // json result for ajax call
         $json = array();
         $userRequest->setTemplatePlace("main");
         $placeResponse = FrameworkModuleManager::getModuleViewForTemplateArea(clone $userRequest);
         // if modules are more than one, then view separater is FrameworkModuleManager::$destMod_ModSeparator
         if ($placeResponse->getStatus() == FrameworkResponse::$STATUS__READY) {
             $json[] = $placeResponse->getJson();
         } else {
             //ete modulneric inch vor mek@ asuma sax normal chi orinak problem ka kam STATUS__CHANGE_TEMPLATE, miangamic @ndhatum enq u et veradarznum enq verev
             return $placeResponse;
         }
         $userResponse->setStatus(FrameworkResponse::$STATUS__READY);
         $userResponse->setHtml(json_encode($json));
     } else {
         //mixed html, script, import response for simple request
         $import = "";
         $script = "";
         $html = "<div align='center'>";
         /* place - main */
         $userRequest->setTemplatePlace("main");
         $placeResponse = FrameworkModuleManager::getModuleViewForTemplateArea(clone $userRequest);
         if ($placeResponse->getStatus() == FrameworkResponse::$STATUS__READY) {
             $html .= $placeResponse->getHtml();
             $import .= $placeResponse->getImport();
             $script .= $placeResponse->getScript();
         } else {
             //ete modulneric inch vor mek@ asuma sax normal chi orinak problem ka kam STATUS__CHANGE_TEMPLATE, miangamic @ndhatum enq u et veradarznum enq verev
             return $placeResponse;
         }
         $html .= "</div>";
         $userResponseView = "<html><head>" . $import . "<script>var _CURRENT_TEMPLATE_ID = '" . self::getTemplateId() . "';</script></head><body>" . $html . "<script>" . $script . "</script></body></html>";
         $userResponse->setStatus(FrameworkResponse::$STATUS__READY);
         $userResponse->setHtml($userResponseView);
     }
     return $userResponse;
 }
 protected function chooseActionByModelStatus($userRequest, $model, $actionMap, $viewClass)
 {
     $templatesMap = array($userRequest->getTemplateId(), "*");
     foreach ($templatesMap as $templ) {
         foreach ($actionMap as $action) {
             //@ste hima stugvuma menak cherez model_state bayc piti stugvi naev cherez template_id
             if ($action["templateId"] == $templ && $action["moduleState"] == $model->getCurrentState()) {
                 if ($action["action"] == "changeTemplate") {
                     if (GlobalHelper::isRequestAjax()) {
                         //JS change template
                         $res = new FrameworkResponse();
                         $res->setStatus(FrameworkResponse::$STATUS__READY);
                         $res->changeTemplate($action["actionParam"] . "&" . $userRequest->getHttpRequestParamsStr(array(FrameworkRequest::$REQUEST_PARAM__templateId, FrameworkRequest::$REQUEST_PARAM__ajaxCall)));
                     } else {
                         //PHP change template
                         $res = new FrameworkResponse();
                         $res->setStatus(FrameworkResponse::$STATUS__CHANGE_TEMPLATE);
                         $res->setData($action["actionParam"]);
                     }
                     return $res;
                 }
             }
         }
     }
     return $viewClass::getView($model);
     //call_user_func
 }
 public function getView($userRequest)
 {
     $userResponse = new FrameworkResponse();
     if (GlobalHelper::isRequestAjax()) {
         // json result for ajax call
         $json = array();
         $userRequest->setTemplatePlace("status_bar");
         $placeResponse = FrameworkModuleManager::getModuleViewForTemplateArea(clone $userRequest);
         // if modules are more than one, then view separater is FrameworkModuleManager::$destMod_ModSeparator
         if ($placeResponse->getStatus() == FrameworkResponse::$STATUS__READY) {
             $json[] = $placeResponse->getJson();
         } else {
             //ete modulneric inch vor mek@ asuma sax normal chi orinak problem ka kam STATUS__CHANGE_TEMPLATE, miangamic @ndhatum enq u et veradarznum enq verev
             return $placeResponse;
         }
         $userRequest->setTemplatePlace("main_content");
         $placeResponse = FrameworkModuleManager::getModuleViewForTemplateArea(clone $userRequest);
         // if modules are more than one, then view separater is FrameworkModuleManager::$destMod_ModSeparator
         if ($placeResponse->getStatus() == FrameworkResponse::$STATUS__READY) {
             $json[] = $placeResponse->getJson();
         } else {
             //ete modulneric inch vor mek@ asuma sax normal chi orinak problem ka kam STATUS__CHANGE_TEMPLATE, miangamic @ndhatum enq u et veradarznum enq verev
             return $placeResponse;
         }
         $userRequest->setTemplatePlace("menu");
         $placeResponse = FrameworkModuleManager::getModuleViewForTemplateArea(clone $userRequest);
         // if modules are more than one, then view separater is FrameworkModuleManager::$destMod_ModSeparator
         if ($placeResponse->getStatus() == FrameworkResponse::$STATUS__READY) {
             $json[] = $placeResponse->getJson();
         } else {
             //ete modulneric inch vor mek@ asuma sax normal chi orinak problem ka kam STATUS__CHANGE_TEMPLATE, miangamic @ndhatum enq u et veradarznum enq verev
             return $placeResponse;
         }
         $userResponse->setStatus(FrameworkResponse::$STATUS__READY);
         $userResponse->setHtml(json_encode($json));
     } else {
         //mixed html, script, import response for simple request
         $import = "";
         $script = "";
         $html = "<div align='center' style='background-color: #666666; height: 50px;'>";
         $userRequest->setTemplatePlace("status_bar");
         $placeResponse = FrameworkModuleManager::getModuleViewForTemplateArea(clone $userRequest);
         if ($placeResponse->getStatus() == FrameworkResponse::$STATUS__READY) {
             $html .= $placeResponse->getHtml();
             $import .= $placeResponse->getImport();
             $script .= $placeResponse->getScript();
         } else {
             //ete modulneric inch vor mek@ asuma sax normal chi orinak problem ka kam STATUS__CHANGE_TEMPLATE, miangamic @ndhatum enq u et veradarznum enq verev
             return $placeResponse;
         }
         $html .= "</div><div align='center'><table style='height: 100%; width: 100%;'><tr><td style='width: 200px; vertical-align: top;'>";
         $userRequest->setTemplatePlace("menu");
         $placeResponse = FrameworkModuleManager::getModuleViewForTemplateArea(clone $userRequest);
         if ($placeResponse->getStatus() == FrameworkResponse::$STATUS__READY) {
             $html .= $placeResponse->getHtml();
             $import .= $placeResponse->getImport();
             $script .= $placeResponse->getScript();
         } else {
             //ete modulneric inch vor mek@ asuma sax normal chi orinak problem ka kam STATUS__CHANGE_TEMPLATE, miangamic @ndhatum enq u et veradarznum enq verev
             return $placeResponse;
         }
         $html .= "</td><td style='vertical-align: top;'>";
         $userRequest->setTemplatePlace("main_content");
         $placeResponse = FrameworkModuleManager::getModuleViewForTemplateArea(clone $userRequest);
         if ($placeResponse->getStatus() == FrameworkResponse::$STATUS__READY) {
             $html .= $placeResponse->getHtml();
             $import .= $placeResponse->getImport();
             $script .= $placeResponse->getScript();
         } else {
             //ete modulneric inch vor mek@ asuma sax normal chi orinak problem ka kam STATUS__CHANGE_TEMPLATE, miangamic @ndhatum enq u et veradarznum enq verev
             return $placeResponse;
         }
         $html .= "</td></tr></table></div>";
         $userResponseView = "<html><head>" . $import . "<script>var _CURRENT_TEMPLATE_ID = '" . self::getTemplateId() . "';</script></head><body style='padding: 0px; margin: 0px;'>" . $html . "<script>" . $script . "</script></body></html>";
         $userResponse->setStatus(FrameworkResponse::$STATUS__READY);
         $userResponse->setHtml($userResponseView);
     }
     return $userResponse;
 }