PageRenderTime 56ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/oiserver/lib/model/DriverPeer.php

http://openirudi.googlecode.com/
PHP | 341 lines | 303 code | 13 blank | 25 comment | 47 complexity | 33224315e4ea1ae1f867785f4599ceb0 MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-3.0
  1. <?php
  2. /**
  3. * Subclass for performing query and update operations on the 'driver' table.
  4. *
  5. *
  6. *
  7. * @package lib.model
  8. */
  9. class DriverPeer extends BaseDriverPeer
  10. {
  11. static function version($date) {
  12. $temp = explode(',', $date);
  13. $date = trim($temp[0]);
  14. if (strlen($date) > 10) {
  15. if (strpos($date, 'mon') !== false) {
  16. $date = trim(str_replace('mon', '', $date));
  17. } elseif (strpos($date, 'tue') !== false) {
  18. $date = trim(str_replace('tue', '', $date));
  19. } elseif (strpos($date, 'wed') !== false) {
  20. $date = trim(str_replace('wed', '', $date));
  21. } elseif (strpos($date, 'thu') !== false) {
  22. $date = trim(str_replace('thu', '', $date));
  23. } elseif (strpos($date, 'fri') !== false) {
  24. $date = trim(str_replace('fri', '', $date));
  25. } elseif (strpos($date, 'sat') !== false) {
  26. $date = trim(str_replace('sat', '', $date));
  27. } elseif (strpos($date, 'sun') !== false) {
  28. $date = trim(str_replace('sun', '', $date));
  29. }
  30. }
  31. if ((int)substr($date, 0, 2) > 12 && strlen(substr($date, 6, strlen($date))) == 4) {
  32. $temp = explode('/', $date);
  33. $date = $temp[1].'/'.$temp[0].'/'.$temp[2];
  34. }
  35. if (strpos($date, '(') !== false) $date = trim(substr($date, 0, strpos($date, '(')));
  36. if (strpos($date, ')') !== false) $date = trim(substr($date, 0, strpos($date, ')')));
  37. return $date;
  38. }
  39. static function dbUpdateHook(&$class, &$date, &$name, &$url, &$dr_id) {
  40. $dr = DriverPeer::retrieveByPK($dr_id);
  41. $dr->setClassType($class);
  42. $dr->setDate($date);
  43. $dr->setName($name);
  44. $dr->setUrl($url);
  45. try {
  46. $dr->save();
  47. return true;
  48. } catch(Exception $e) {
  49. return false;
  50. }
  51. }
  52. static function saveDriver($string, $driver, $dr_cont, $sub_cont, $os, $file_path) {
  53. if (isset($string[7]) && $string[6] == 'subsys') {
  54. //Check if Subsys exists
  55. $c = new Criteria;
  56. $c->add(DevicePeer::CODE, $string[5]);
  57. $device = DevicePeer::doSelectOne($c);
  58. if (!is_null($device)) {
  59. $device_id = $device->getId();
  60. unset($c, $device);
  61. $c = new Criteria;
  62. $c->add(SubsysPeer::CODE, $string[7]);
  63. $c->add(SubsysPeer::DEVICE_ID, $device_id);
  64. if (isset($string[9]) && $string[8] == 'rev') {
  65. $c->add(SubsysPeer::REVISION, $string[9]);
  66. } else $c->add(SubsysPeer::REVISION, '0');
  67. $subsys = SubsysPeer::doSelectOne($c);
  68. if (is_null($subsys)) {
  69. $sub = new Subsys();
  70. $sub->setCode($string[7]);
  71. $sub->setDeviceId($device_id);
  72. if (isset($string[9]) && $string[8] == 'rev') $sub->setRevision($string[9]);
  73. $sub->save();
  74. unset($sub);
  75. $sub_cont ++;
  76. }
  77. unset($c, $device_id, $subsys, $subs);
  78. }
  79. }
  80. $dr_cont ++;
  81. $dr_id = $driver->getId();
  82. //New System
  83. $system = new System();
  84. $system->setDriverId($dr_id);
  85. $system->setName('$'.str_replace('$', '', $os).'$');
  86. $system->save();
  87. unset($system);
  88. //New Path
  89. $path = new Path();
  90. $path->setDriverId($dr_id);
  91. $path->setPath(pathinfo($file_path, PATHINFO_DIRNAME));
  92. $path->save();
  93. $path_id = $path->getId();
  94. unset($path);
  95. //New Pack
  96. unset($dr_id);
  97. return array($sub_cont, $dr_cont);
  98. }
  99. static function updateDriverDependencies($string, $dr_id, $os, $file_path) {
  100. //Update System
  101. $c = new Criteria;
  102. $c->add(SystemPeer::DRIVER_ID, $dr_id);
  103. $system = SystemPeer::doSelectOne($c);
  104. $system->setName('$'.str_replace('$', '', $os).'$');
  105. $system->save();
  106. unset($system, $c);
  107. //Update Path
  108. $c = new Criteria;
  109. $c->add(PathPeer::DRIVER_ID, $dr_id);
  110. $path = PathPeer::doSelectOne($c);
  111. $path->setPath(pathinfo($file_path, PATHINFO_DIRNAME));
  112. $path->save();
  113. $path_id = $path->getId();
  114. unset($path, $c);
  115. //Update Pack
  116. unset($dr_id);
  117. return;
  118. }
  119. static function searchDriver($params) {
  120. $string = self::stringSearch($params);
  121. //echo 'string='.$string.'<BR/>';
  122. if ($string == '0') return false;
  123. else {
  124. //Check if String exists in Driver table
  125. $c = new Criteria;
  126. $c->add(DriverPeer::STRING, $string);
  127. $driver = DriverPeer::doSelectOne($c);
  128. unset($c);
  129. if (!is_null($driver)) {
  130. $result = true;
  131. //$result = Driver::returnSearch($driver);
  132. } else {
  133. $result = false;
  134. unset($driver);
  135. }
  136. if (!$result) {
  137. if (stripos($string, '&REV_') !== false) {
  138. $string = substr($string, 0, (stripos($string, '&REV_')));
  139. $c = new Criteria;
  140. $c->add(DriverPeer::STRING, $string);
  141. $driver = DriverPeer::doSelectOne($c);
  142. unset($c);
  143. if (!is_null($driver)) {
  144. $result = true;
  145. //$result = Driver::returnSearch($driver);
  146. } else {
  147. $result = false;
  148. unset($driver);
  149. }
  150. }
  151. if (!$result) {
  152. if (stripos($string, '&SUBSYS_') !== false) {
  153. $string = substr($string, 0, (stripos($string, '&SUBSYS_')));
  154. $c = new Criteria;
  155. $c->add(DriverPeer::STRING, $string);
  156. $driver = DriverPeer::doSelectOne($c);
  157. unset($c);
  158. if (!is_null($driver)) {
  159. $result = true;
  160. //$result = Driver::returnSearch($driver);
  161. } else {
  162. $result = false;
  163. unset($driver);
  164. }
  165. }
  166. }
  167. }
  168. if ($result === true) {
  169. return $driver;
  170. } elseif ($result === false) {
  171. return false;
  172. }
  173. }
  174. }
  175. static function stringSearch($params) {
  176. //kam
  177. //$act = '/driver/search';
  178. //$needle='/drivers/web/index.php/en/driver/search';
  179. //$req = str_replace($_SERVER['SCRIPT_NAME'].$act, '', stristr(ParseINF::selfURL(), $needle));
  180. //$req_old = str_replace($needle, '', stristr(ParseINF::selfURL(), $needle));
  181. //echo $req_old.'<BR/>';
  182. $req=$params;
  183. $data = explode('&', str_replace('?', '', $req));
  184. if (count($data) < 3 || count($data) > 5) $ret = 0;
  185. elseif (count($data) > 2 && count($data) < 6) {
  186. $string = array();
  187. foreach($data as $item) {
  188. $item_array = explode('=', $item);
  189. if ($item_array[0] == 'type')
  190. $string['type'] = $item_array[1].'\\';
  191. elseif ($item_array[0] == 'vid' && isset($string['type']) && strtolower($string['type']) == 'usb\\')
  192. $string['vid'] = 'vid_'.$item_array[1];
  193. elseif ($item_array[0] == 'vid' && isset($string['type']) && strtolower($string['type']) == 'pci\\')
  194. $string['vid'] = 'ven_'.$item_array[1];
  195. elseif ($item_array[0] == 'pid' && isset($string['type']) && isset($string['vid']) && strtolower($string['type']) == 'usb\\')
  196. $string['pid'] = '&pid_'.$item_array[1];
  197. elseif ($item_array[0] == 'pid' && isset($string['type']) && isset($string['vid']) && strtolower($string['type']) == 'pci\\')
  198. $string['pid'] = '&dev_'.$item_array[1];
  199. elseif (count($data) > 3 && $item_array[0] == 'subsys' && isset($string['type']) && isset($string['vid']) && isset($string['pid']))
  200. $string['subsys'] = '&subsys_'.$item_array[1];
  201. elseif (count($data) > 4 && $item_array[0] == 'rev' && isset($string['type']) && isset($string['vid']) && isset($string['pid']) && isset($string['subsys']))
  202. $string['rev'] = '&rev_'.$item_array[1];
  203. else $ret = 0;
  204. unset($item);
  205. }
  206. unset($item, $item_array);
  207. if (!isset($ret)) {
  208. $ret = '';
  209. foreach($string as $item) $ret .= $item;
  210. unset($item, $string);
  211. }
  212. }
  213. else $ret = 0;
  214. unset($data, $req, $act, $zipfile);
  215. return $ret;
  216. }
  217. //
  218. public static function is_no_query($filters){
  219. if(count($filters)>0){
  220. foreach($filters as $name=>$value){
  221. if(is_array($value)){
  222. if(count($value)>0){
  223. foreach($value as $value_name=>$v){
  224. if(!empty($v)){
  225. return 0;
  226. }
  227. }
  228. }
  229. }else if(!empty($value)){
  230. return 0;
  231. }
  232. }
  233. }
  234. return 1;
  235. }
  236. //kam
  237. public static function doSelectCustom(Criteria $criteria, PropelPDO $con = null)
  238. {
  239. //kam
  240. if(self::is_apply_custom_criteria()){
  241. $criteria=self::add_custom_criteria($criteria);
  242. }
  243. //
  244. return DriverPeer::populateObjects(DriverPeer::doSelectStmt($criteria, $con));
  245. }
  246. //kam
  247. private static function add_custom_criteria(Criteria $criteria){
  248. //OHARRA::::device_id bat aukeratzean, code,vendor_id ta type_id arabera begiratu behar da
  249. $criteria=clone $criteria;
  250. $sf_user=sfContext::getInstance()->getUser();
  251. $filters=$sf_user->getAttribute('driver.filters',array(),'admin_module');
  252. if(empty($filters['vendor_id'])){
  253. $criteria->add(self::VENDOR_ID,$sf_user->getAttribute('device_driver_filters_vendor_id'));
  254. }
  255. if(empty($filters['type_id'])){
  256. $criteria->add(self::TYPE_ID,$sf_user->getAttribute('device_driver_filters_type_id'));
  257. }
  258. return $criteria;
  259. }
  260. //
  261. //kam
  262. public static function doCountCustom(Criteria $criteria, $distinct = false, PropelPDO $con = null)
  263. {
  264. $criteria = clone $criteria;
  265. $criteria->setPrimaryTableName(DriverPeer::TABLE_NAME);
  266. if ($distinct && !in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) {
  267. $criteria->setDistinct();
  268. }
  269. if (!$criteria->hasSelectClause()) {
  270. DriverPeer::addSelectColumns($criteria);
  271. }
  272. $criteria->clearOrderByColumns(); $criteria->setDbName(self::DATABASE_NAME);
  273. if ($con === null) {
  274. $con = Propel::getConnection(DriverPeer::DATABASE_NAME, Propel::CONNECTION_READ);
  275. }
  276. //kam
  277. if(self::is_apply_custom_criteria()){
  278. $criteria=self::add_custom_criteria($criteria);
  279. }
  280. //
  281. $stmt = BasePeer::doCount($criteria, $con);
  282. if ($row = $stmt->fetch(PDO::FETCH_NUM)) {
  283. $count = (int) $row[0];
  284. } else {
  285. $count = 0; }
  286. $stmt->closeCursor();
  287. return $count;
  288. }
  289. //kam
  290. private static function is_apply_custom_criteria(){
  291. $sf_user=sfContext::getInstance()->getUser();
  292. /*$my_array=sfConfig::get('app_driver_custom_criteria_fields');
  293. if(count($my_array)>0){
  294. foreach($my_array as $i=>$f){
  295. if($sf_user->getAttribute($f)){
  296. return 1;
  297. }
  298. }
  299. }*/
  300. if($sf_user->getAttribute('driver_filters_device_id')){
  301. return 1;
  302. }
  303. return 0;
  304. }
  305. //kam
  306. public static function get_autocomplete_driver_name_list($q='', $limit=10) {
  307. $c=new Criteria();
  308. $c->add(self::NAME, $q.'%', Criteria::LIKE);
  309. $c->addAscendingOrderByColumn(self::NAME);
  310. $c->addGroupByColumn(self::NAME);
  311. $c->setLimit($limit);
  312. $cfg=self::doSelect($c);
  313. return $cfg;
  314. }
  315. }