centralM
[ class tree: centralM ] [ index: centralM ] [ all elements ]

Source for file actions.class.php

Documentation is available at actions.class.php

  1. <?php
  2.  
  3. /**
  4.  * agent actions.
  5.  *
  6.  * @package    centralM
  7.  * @subpackage agent
  8.  * @author     Your name here
  9.  * @version    SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
  10.  */
  11. class agentActions extends sfActions
  12. {
  13.  
  14.   
  15.   /**
  16.    * Creates new Agent Object
  17.    *
  18.    * @param  sfWebRequest  The current context request
  19.    *
  20.    * @return json encode
  21.    */
  22.   public function executeJsonCreate(sfWebRequest $request)
  23.   {
  24.      $isAjax $request->isXmlHttpRequest();
  25.  
  26.      if(!$isAjaxreturn $this->redirect('@homepage');
  27.  
  28.      if(!$request->isMethod('post')){
  29.          $info array('success'=>false,'errors'=>'Wrong parameters');
  30.          $error $this->setJsonError($info);
  31.          return $this->renderText($error);
  32.      }
  33.         
  34.      $this->form new EtvaAgentForm();
  35.        
  36.      $result $this->processJsonForm($request$this->form);
  37.  
  38.      if(!$result['success']){
  39.          $error $this->setJsonError($result);
  40.          return $this->renderText($error);
  41.      }
  42.         
  43.      $result json_encode($result);
  44.  
  45.      $this->getContext()->getResponse()->setHttpHeader("X-JSON"'()')// set a header, (although it is empty, it is nicer than without a correct header. Filling the header with the result will not be parsed by extjs as far as I have seen).
  46.      //    sfConfig::set('sf_web_debug', false); // set to false for speed-up (done automatically for production-environment)
  47.      return $this->renderText($result);      
  48.  
  49.   }
  50.  
  51.  
  52.   public function executeSoapJsonCreate(sfWebRequest $request)
  53.   {
  54.  
  55.     if(SF_ENVIRONMENT == 'soap'){
  56.         $this->form new EtvaAgentForm();
  57.         $result $this->processJsonForm($request$this->form);
  58.         return $result;
  59.     }
  60.   }
  61.  
  62.  
  63.  
  64.   public function executeJsonUpdate(sfWebRequest $request)
  65.   {
  66.     $isAjax $request->isXmlHttpRequest();
  67.  
  68.     if(!$isAjaxreturn $this->redirect('@homepage');
  69.  
  70.     if(!$request->isMethod('post'&& !$request->isMethod('put')){
  71.          $info array('success'=>false,'errors'=>'Wrong parameters');
  72.          $error $this->setJsonError($info);
  73.          return $this->renderText($error);
  74.     }
  75.         
  76.     if(!$etva_agent EtvaAgentPeer::retrieveByPk($request->getParameter('id'))){
  77.         $error_msg sprintf('Object etva_agent does not exist (%s).'$request->getParameter('id'));
  78.         $info array('success'=>false,'errors'=>$error_msg);
  79.         $error $this->setJsonError($info);
  80.         return $this->renderText($error);
  81.     }
  82.  
  83.     $etva_agent->setByName($request->getParameter('field')$request->getParameter('value'));
  84.     $etva_agent->save();
  85.  
  86.     $result array('success'=>true);
  87.     $result json_encode($result);
  88.     $this->getResponse()->setHttpHeader("X-JSON"'()')// set a header, (although it is empty, it is nicer than without a correct header. Filling the header with the result will not be parsed by extjs as far as I have seen).
  89.     //    sfConfig::set('sf_web_debug', false); // set to false for speed-up (done automatically for production-environment)
  90.     return $this->renderText($result);
  91.  
  92.   }
  93.  
  94.  
  95.  
  96.   public function executeJsonDelete(sfWebRequest $request)
  97.   {
  98.     $isAjax $request->isXmlHttpRequest();
  99.  
  100.     if(!$isAjaxreturn $this->redirect('@homepage');
  101.     
  102.     if(!$etva_agent EtvaAgentPeer::retrieveByPk($request->getParameter('id'))){
  103.         $error_msg sprintf('Object etva_agent does not exist (%s).'$request->getParameter('id'));
  104.         $info array('success'=>false,'errors'=>$error_msg);
  105.         $error $this->setJsonError($info);
  106.         return $this->renderText($error);
  107.     }
  108.  
  109.     $etva_agent->delete();
  110.  
  111.     $result array('success'=>true);
  112.     $result json_encode($result);
  113.     $this->getResponse()->setHttpHeader("X-JSON"'()')// set a header, (although it is empty, it is nicer than without a correct header. Filling the header with the result will not be parsed by extjs as far as I have seen).
  114.     //    sfConfig::set('sf_web_debug', false); // set to false for speed-up (done automatically for production-environment)
  115.     return $this->renderText($result);
  116.   }
  117.  
  118.  
  119.  
  120.   public function executeJsonGrid($request)
  121.   {
  122.     $isAjax $request->isXmlHttpRequest();
  123.  
  124.     if(!$isAjaxreturn $this->redirect('@homepage');
  125.  
  126.     $limit $this->getRequestParameter('limit'10);
  127.     $page floor($this->getRequestParameter('start'0$limit)+1;
  128.  
  129.     // pager
  130.     $this->pager new sfPropelPager('EtvaAgent'$limit);
  131.     $c new Criteria();
  132.  
  133.     $this->addSortCriteria($c);
  134.     $this->addServerCriteria($c);
  135.     
  136.     $this->pager->setCriteria($c);
  137.     $this->pager->setPage($page);
  138.  
  139.     $this->pager->setPeerMethod('doSelectJoinAll');
  140.     $this->pager->setPeerCountMethod('doCountJoinAll');
  141.  
  142.     $this->pager->init();
  143.  
  144.  
  145.     $elements array();
  146.  
  147.     # Get data from Pager
  148.     foreach($this->pager->getResults(as $item)
  149.                 $elements[$item->toArray();
  150.  
  151.     $final array(
  152.       'total' =>   $this->pager->getNbResults(),
  153.       'data'  => $elements
  154.     );
  155.  
  156.     $result json_encode($final);
  157.  
  158.     $this->getResponse()->setHttpHeader("X-JSON"'()')// set a header, (although it is empty, it is nicer than without a correct header. Filling the header with the result will not be parsed by extjs as far as I have seen).
  159.     return $this->renderText($result);
  160.       
  161.   }
  162.  
  163.  
  164.   protected function addSortCriteria($criteria)
  165.   {
  166.     if ($this->getRequestParameter('sort')==''return;
  167.  
  168.     $column EtvaAgentPeer::translateFieldName(sfInflector::camelize($this->getRequestParameter('sort'))BasePeer::TYPE_PHPNAMEBasePeer::TYPE_COLNAME);
  169.  
  170.     if ('asc' == strtolower($this->getRequestParameter('dir')))
  171.       $criteria->addAscendingOrderByColumn($column);
  172.     else
  173.       $criteria->addDescendingOrderByColumn($column);
  174.   }
  175.  
  176.  
  177.   protected function addServerCriteria($criteria)
  178.   {
  179.         $serverID $this->getRequestParameter("sid");
  180.         $criteria->add(EtvaAgentPeer::SERVER_ID$serverID);        
  181.   }
  182.  
  183.  
  184.  
  185.   protected function processJsonForm(sfWebRequest $requestsfForm $form)
  186.   {
  187.     //  return "1";
  188.     //return $form->getName()." ".$request->getParameter('etva_agent');
  189.      // return $request->getFiles($form->getName());
  190.  
  191.     $form->bind($request->getParameter($form->getName())$request->getFiles($form->getName()));
  192.  
  193.     if ($form->isValid())
  194.     {
  195.        
  196.           $etva_agent $form->save();
  197.  
  198.           $result array('success'=>true,'insert_id'=>$etva_agent->getId());
  199.           return $result;
  200.  
  201.  
  202.     }
  203.     else{
  204.         
  205.         $errors array();
  206.         foreach ($form->getErrorSchema(as $field => $error)
  207.                         $errors[$field$error->getMessage();
  208.           $result array('success'=>false,'errors'=>$errors);
  209.           
  210.           return $result;
  211.     }
  212.  
  213.  
  214.   }
  215.  
  216.   private function setJsonError($info,$statusCode 400){
  217.  
  218.       $this->getContext()->getResponse()->setStatusCode($statusCode);
  219.       $error json_encode($info);
  220.       $this->getContext()->getResponse()->setHttpHeader("X-JSON"'()');
  221.       return $error;
  222.  
  223.   }
  224.   
  225. }

Documentation generated on Fri, 19 Jun 2009 10:45:40 +0100 by phpDocumentor 1.4.2