• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List

E:/E/GEAMP/www/openbiz/openbiz/bin/easy/SearchHelper.php

00001 <?php
00025 function inputValToRule($fieldName, $inputVal, $formObj)
00026 {
00027     // todo: should check single quote for nonoperators clauses
00028     // find locations for all sql key words
00029     // search for starting ' and closing ' pair, check if sql key word in the pair
00030 
00031     $val = strtoupper(trim($inputVal));
00032     // check " AND ", " OR "
00033     if (($pos=strpos($val, " AND "))!==false)
00034     {
00035         $inputArr = explode(" AND ", $val);
00036         $retStr = null;
00037         foreach($inputArr as $v)
00038             $retStr .= ($retStr) ? " AND ".inputValToRule($fieldName, $v, $formObj) : inputValToRule($fieldName, $v, $formObj);
00039         return $retStr;
00040     }
00041     else if (($pos=strpos($val, " OR "))!==false)
00042     {
00043         $inputArr = explode(" OR ", $val);
00044         $retStr = null;
00045         foreach($inputArr as $v)
00046             $retStr .= ($retStr) ? " OR ".inputValToRule($fieldName, $v, $formObj) : inputValToRule($fieldName, $v, $formObj);
00047         return "(".$retStr.")";
00048     }
00049 
00050     // check >=, >, <=, <, =
00051     if (($pos=strpos($val, "<>"))!==false || ($pos=strpos($val, "!="))!==false)
00052     {
00053         $opr = "<>";
00054         $oprlen = 2;
00055     }
00056     else if (($pos=strpos($val, ">="))!==false)
00057     {
00058         $opr = ">=";
00059         $oprlen = 2;
00060     }
00061     else if (($pos=strpos($val, ">"))!==false)
00062     {
00063         $opr = ">";
00064         $oprlen = 1;
00065     }
00066     else if (($pos=strpos($val, "<="))!==false)
00067     {
00068         $opr = "<=";
00069         $oprlen = 2;
00070     }
00071     else if (($pos=strpos($val, "<"))!==false)
00072     {
00073         $opr = "<";
00074         $oprlen = 1;
00075     }
00076     else if (($pos=strpos($val, "="))!==false)
00077     {
00078         $opr = "=";
00079         $oprlen = 1;
00080     }
00081     if ($opr)
00082     {
00083         $val = trim(substr($val, $pos+$oprlen));
00084     }
00085 
00086     if (strpos($val, "*") !== false)
00087     {
00088         $opr = "LIKE";
00089         $val = str_replace("*", "%", $val);
00090     }
00091     //if (strpos($val, "'") !== false) {   // not needed since addslashes() is called before
00092     //   $val = str_replace("'", "\\'", $val);
00093     //}
00094     if (!$opr)
00095         $opr = "=";
00096 
00097     // unformat value to real value data
00098     $bizField = $formObj->getDataObj()->getField($fieldName);
00099     $realValue = BizSystem::typeManager()->formattedStringToValue($bizField->m_Type, $bizField->m_Format, $val);
00100 
00101     // set the query param
00102     $queryString = QueryStringParam::formatQueryString("[$fieldName]", $opr, $realValue);
00103     return $queryString;
00104 
00105     //return "[" . $field . "] " . $opr . " '" . $realVal . "'";
00106 }
00107 
00108 ?>

Generated on Thu Apr 19 2012 17:09:13 for openbiz by  doxygen 1.7.2