/KERCUS/controllers/components/busqueda.php

https://github.com/pakogonzalez/KERCUS · PHP · 136 lines · 121 code · 11 blank · 4 comment · 24 complexity · 114d83f3babb2d5d8caa997e80e18f86 MD5 · raw file

  1. <?php
  2. class BusquedaComponent extends Object {
  3. function busca2($searchField , $searchOper, $searchString) {
  4. switch($searchOper){
  5. case 'eq':
  6. $searchCondition = $searchField.' =';
  7. break;
  8. case 'ne':
  9. $searchCondition = $searchField.' !=';
  10. break;
  11. case 'bw':
  12. $searchCondition = $searchField." LIKE";
  13. $searchString = $searchString.'%';
  14. break;
  15. case 'bn':
  16. $searchCondition = $searchField.' NOT LIKE';
  17. $searchString = $searchString.'%';
  18. break;
  19. case 'ew':
  20. $searchCondition = $searchField.' LIKE';
  21. $searchString = '%'.$searchString ;
  22. break;
  23. case 'en':
  24. $searchCondition = $searchField.' NOT LIKE';
  25. $searchString = '%'.$searchString ;
  26. break;
  27. case 'cn':
  28. $searchCondition = $searchField." LIKE";
  29. $searchString = '%'.$searchString.'%';
  30. break;
  31. case 'nc':
  32. $searchCondition = $searchField.' NOT LIKE';
  33. $searchString = '%'.$searchString.'%';
  34. break;
  35. case 'lt':
  36. $searchCondition = $searchField.' <';
  37. break;
  38. case 'gt':
  39. $searchCondition = $searchField.' >';
  40. break;
  41. case 'le':
  42. $searchCondition = $searchField.' <=';
  43. break;
  44. case 'ge':
  45. $searchCondition = $searchField.' >= ';
  46. break;
  47. }
  48. return array($searchCondition,$searchString);
  49. }
  50. function busca($s){
  51. $qwery = array();
  52. //['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc']
  53. $qopers = array(
  54. 'eq'=>" = ",
  55. 'ne'=>" <> ",
  56. 'lt'=>" < ",
  57. 'le'=>" <= ",
  58. 'gt'=>" > ",
  59. 'ge'=>" >= ",
  60. 'bw'=>" LIKE ",
  61. 'bn'=>" NOT LIKE ",
  62. 'in'=>" IN ",
  63. 'ni'=>" NOT IN ",
  64. 'ew'=>" LIKE ",
  65. 'en'=>" NOT LIKE ",
  66. 'cn'=>" LIKE " ,
  67. 'nc'=>" NOT LIKE " );
  68. if ($s) {
  69. $jsona = $this->json_decode($s);
  70. if(is_array($jsona)){
  71. $gopr = $jsona['groupOp'];
  72. $rules = $jsona['rules'];
  73. //$i = 0;
  74. $qwery=array($gopr=>array());
  75. foreach($rules as $key=>$val) {
  76. $field = $val['field'];
  77. $op = $val['op'];
  78. $v = $val['data'];
  79. if($v && $op) {
  80. //$i++;
  81. //if ($i > 1) $qwery .= " " .$gopr." ";
  82. switch($op){
  83. case 'bw': $qwery[$gopr]["$field$qopers[$op]"] = "$v%";
  84. break;
  85. case 'bn': $qwery[$gopr]["$field$qopers[$op]"] = "$v%";
  86. break;
  87. case 'ew': $qwery[$gopr]["$field$qopers[$op]"] = "%$v";
  88. break;
  89. case 'en': $qwery[$gopr]["$field$qopers[$op]"] = "%$v";
  90. break;
  91. case 'cn': $qwery[$gopr]["$field$qopers[$op]"] = "%$v%";
  92. break;
  93. case 'nc': $qwery[$gopr]["$field$qopers[$op]"] = "%$v%";
  94. break;
  95. default: $qwery[$gopr]["$field$qopers[$op]"] = "$v";
  96. }
  97. }
  98. }
  99. }
  100. }
  101. return $qwery;
  102. }
  103. function json_decode($json)
  104. {
  105. $comment = false;
  106. $out = '$x=';
  107. for ($i=0; $i<strlen($json); $i++)
  108. {
  109. if (!$comment)
  110. {
  111. if ($json[$i] == '{') $out .= ' array(';
  112. else if ($json[$i] == '}') $out .= ')';
  113. else if ($json[$i] == ':') $out .= '=>';
  114. else if ($json[$i] == '[') $out .= ' array(';
  115. else if ($json[$i] == ']') $out .= ')';
  116. else $out .= $json[$i];
  117. }
  118. else $out .= $json[$i];
  119. if ($json[$i] == '"') $comment = !$comment;
  120. }
  121. eval($out . ';');
  122. return $x;
  123. }
  124. }
  125. ?>