PageRenderTime 28ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/oiserver/apps/backend/modules/driver/actions/actions.class.php

http://openirudi.googlecode.com/
PHP | 219 lines | 147 code | 32 blank | 40 comment | 18 complexity | 361ab6dbf9efe1c6c526affb3b373043 MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-3.0
  1. <?php
  2. require_once dirname(__FILE__).'/../lib/driverGeneratorConfiguration.class.php';
  3. require_once dirname(__FILE__).'/../lib/driverGeneratorHelper.class.php';
  4. /**
  5. * driver actions.
  6. *
  7. * @package drivers
  8. * @subpackage driver
  9. * @author Your name here
  10. * @version SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
  11. */
  12. class driverActions extends autoDriverActions {
  13. public function executeIndex(sfWebRequest $request) {
  14. //kam
  15. if (DriverPeer::is_no_query($this->getFilters()))
  16. {
  17. $this->filters = $this->configuration->getFilterForm($this->getFilters());
  18. $this->setTemplate('no_query');
  19. }else{
  20. //
  21. ///////////////////////////////
  22. parent::executeIndex($request);
  23. ///////////////////////////////
  24. if (!$request->getParameter('sf_culture')) {
  25. if ($this->getUser()->isFirstRequest()) {
  26. $culture = $request->getPreferredCulture(array('eu', 'es', 'en'));
  27. $this->getUser()->setCulture($culture);
  28. $this->getUser()->isFirstRequest(false);
  29. } else {
  30. $culture = $this->getUser()->getCulture();
  31. }
  32. $this->redirect('@localized_driver');
  33. }
  34. }
  35. }
  36. public function executeReadInfs() {
  37. }
  38. public function executeLoading() {
  39. }
  40. public function executeOperate(sfWebRequest $request) {
  41. $this->getResponse()->setContentType('application/json');
  42. $result = array('text' => ParseINF::operate(sfConfig::get('app_const_packs_root')));
  43. return $this->renderText(json_encode($result));
  44. }
  45. public function executeFilesParsed(sfWebRequest $request) {
  46. }
  47. //public function executeSearch() {
  48. public function executeSearch(sfWebRequest $request) {
  49. //kam
  50. $params=$this->get_params_search($request);
  51. //
  52. $this->result = DriverPeer::searchDriver($params);
  53. if ($this->result !== false) Driver::returnSearch($this->result);
  54. return sfView::NONE;
  55. }
  56. public function executeView(sfWebRequest $request) {
  57. //$this->driver = $this->getRoute()->getObject();
  58. $this->driver =DriverPeer::retrieveByPk($request->getParameter('id'));
  59. $this->forward404Unless($this->driver);
  60. }
  61. public function executeFile(sfWebRequest $request) {
  62. //$this->driver = $this->getUrl();
  63. //$this->forward404Unless($url);
  64. $this->file = $request->getParameter('file');
  65. $this->forward404Unless($this->file);
  66. }
  67. public function executeFolder(sfWebRequest $request) {
  68. $this->driver = $this->getRoute()->getObject();
  69. $this->folder = $request->getParameter('folder');
  70. $this->forward404Unless($this->folder);
  71. }
  72. public function executeZip(sfWebRequest $request) {
  73. $this->driver = $this->getRoute()->getObject();
  74. return Driver::returnSearch($this->driver);
  75. }
  76. private function get_params_search(sfWebRequest $request){
  77. //return
  78. //type=$type&vid=$vendor&pid=$device&subsys=$subsys&rev=$rev
  79. $cfg='?';
  80. $args=array('type','vid','pid','subsys','rev');
  81. $kont=0;
  82. foreach($args as $i=>$name){
  83. if($request->hasParameter($name)){
  84. if($kont>0){
  85. $cfg.='&';
  86. }
  87. $cfg.=$name.'='.$request->getParameter($name);
  88. $kont++;
  89. }
  90. }
  91. return $cfg;
  92. }
  93. //kam
  94. protected function buildCriteria()
  95. {
  96. if (is_null($this->filters))
  97. {
  98. $this->filters = $this->configuration->getFilterForm($this->getFilters());
  99. }
  100. //kam
  101. $filters=$this->getFilters();
  102. if(isset($filters['vendor_id']) && !empty($filters['vendor_id'])){
  103. $filters=$this->fix_vendor_id($filters);
  104. }
  105. //
  106. $criteria = $this->filters->buildCriteria($filters);
  107. $this->addSortCriteria($criteria);
  108. $event = $this->dispatcher->filter(new sfEvent($this, 'admin.build_criteria'), $criteria);
  109. $criteria = $event->getReturnValue();
  110. return $criteria;
  111. }
  112. private function fix_vendor_id($filters){
  113. $cfg=$filters;
  114. $vendor_id_array=explode('-',$cfg['vendor_id']);
  115. $cfg['vendor_id']=$vendor_id_array[0];
  116. //$cfg['type_id']=$vendor_id_array[1];
  117. return $cfg;
  118. }
  119. //kam
  120. protected function addSortCriteria($criteria)
  121. {
  122. if (array(null, null) == ($sort = $this->getSort()))
  123. {
  124. return;
  125. }
  126. //kam
  127. if($sort[0]=='type_id'){
  128. $column=TypePeer::TYPE;
  129. $criteria->addJoin(DriverPeer::TYPE_ID,TypePeer::ID,Criteria::LEFT_JOIN);
  130. }else if($sort[0]=='vendor_id'){
  131. $column=VendorPeer::NAME;
  132. $criteria->addJoin(DriverPeer::VENDOR_ID,VendorPeer::CODE,Criteria::LEFT_JOIN);
  133. }else if($sort[0]=='device_id'){
  134. $column=DevicePeer::NAME;
  135. $criteria->addJoin(DriverPeer::DEVICE_ID,devicePeer::CODE,Criteria::LEFT_JOIN);
  136. }else{
  137. // camelize lower case to be able to compare with BasePeer::TYPE_PHPNAME translate field name
  138. $column = DriverPeer::translateFieldName(sfInflector::camelize(strtolower($sort[0])), BasePeer::TYPE_PHPNAME, BasePeer::TYPE_COLNAME);
  139. }
  140. //
  141. if ('asc' == $sort[1])
  142. {
  143. $criteria->addAscendingOrderByColumn($column);
  144. }
  145. else
  146. {
  147. $criteria->addDescendingOrderByColumn($column);
  148. }
  149. }
  150. //
  151. //kam
  152. public function executeFilter(sfWebRequest $request)
  153. {
  154. //kam
  155. //OHARRA::::autoocomplete ta device aurrizki bezela jarri ez gero filter balidazioan ez da ezer egin beharrik, filterraren parte driver_filters aurrizkia dutenak harzten baitira
  156. //OHARRA::::device_id bat aukeratzean, code,vendor_id ta type_id arabera begiratu behar da
  157. if ($request->hasParameter('_reset')){
  158. $this->getUser()->getAttributeHolder()->remove('driver_filters_device_id');
  159. $this->getUser()->getAttributeHolder()->remove('autocomplete_driver_filters_device_id');
  160. $this->getUser()->getAttributeHolder()->remove('device_driver_filters_vendor_id');
  161. $this->getUser()->getAttributeHolder()->remove('device_driver_filters_type_id');
  162. }else{
  163. $this->getUser()->setAttribute('driver_filters_device_id', $request->getParameter('driver_filters[device_id]'));
  164. $this->getUser()->setAttribute('autocomplete_driver_filters_device_id', $request->getParameter('autocomplete_driver_filters[device_id]'));
  165. $this->getUser()->setAttribute('device_driver_filters_vendor_id', $request->getParameter('device_driver_filters[vendor_id]'));
  166. $this->getUser()->setAttribute('device_driver_filters_type_id', $request->getParameter('device_driver_filters[type_id]'));
  167. }
  168. //
  169. parent::executeFilter($request);
  170. }
  171. //kam
  172. protected function getPager()
  173. {
  174. $pager = $this->configuration->getPager('Driver');
  175. $pager->setCriteria($this->buildCriteria());
  176. $pager->setPage($this->getPage());
  177. //kam
  178. /*$pager->setPeerMethod($this->configuration->getPeerMethod());
  179. $pager->setPeerCountMethod($this->configuration->getPeerCountMethod());*/
  180. //OHARRA::::device_id bat aukeratzean, code,vendor_id ta type_id arabera begiratu behar da
  181. $pager->setPeerMethod('doSelectCustom');
  182. $pager->setPeerCountMethod('doCountCustom');
  183. //
  184. $pager->init();
  185. return $pager;
  186. }
  187. }