Beispiel #1
0
 public function whereCompiler(&$string, $array, $table_pointer = 'table', $advanced = null, $DEF_con = 'AND', $DEF_op = '=', $DEF_ow = "'", $DEF_cw = "'")
 {
     $_['associative'] = array_keys($array) !== range(0, count($array) - 1);
     $_['depth'] = SERVER::array_depth($array);
     $_['count'] = count($array);
     $i = 0;
     if ($_['associative'] && $_['depth'] >= 2) {
         foreach ($array as $column => $item) {
             $cleaned[$i] = array('column' => $column, 'operation' => $DEF_op, 'open_wrap' => $DEF_ow, 'value' => $item, 'close_wrap' => $DEF_cw, 'condition' => $i < $_['count'] - 1 ? $DEF_con : null);
             $i++;
         }
     } else {
         foreach ($array as $k => $value) {
             $mark = 0;
             $column = !empty($value[$mark]) ? $value[$mark] : false;
             $mark++;
             if (isset($value[$mark]) && (is_array($value[$mark]) || strlen($value[$mark]) > 2)) {
                 $oper = "=";
             } else {
                 $oper = !empty($value[$mark]) ? $value[$mark] : $DEF_op;
                 $mark++;
             }
             if (isset($value[$mark]) && (is_array($value[$mark]) || strlen($value[$mark]) > 2)) {
                 $start_wrap = "'";
             } else {
                 $start_wrap = !empty($value[$mark]) ? $value[$mark] : $DEF_ow;
                 $mark++;
             }
             $item = !empty($value[$mark]) ? $value[$mark] : "1";
             $mark++;
             if (isset($value[$mark]) && (is_array($value[$mark]) || strtolower($value[$mark]) == 'or' || strlen($value[$mark]) > 2)) {
                 $end_wrap = "'";
             } else {
                 $end_wrap = !empty($value[$mark]) ? $value[$mark] : $DEF_cw;
                 $mark++;
             }
             $cond = !empty($value[$mark]) ? $value[$mark] : $DEF_con;
             if (!is_array($item) && trim(strtoupper($oper)) == 'LIKE' && (bool) strpos($start_wrap . $end_wrap, '%')) {
                 $item = str_replace(array('saint', 'st', "'", '`', '.', ',', ' ', '-', '�', 'ƒ'), '%', strtolower($item));
             }
             $cleaned[$i] = array('column' => $column, 'operation' => $oper, 'open_wrap' => $start_wrap, 'value' => $item, 'close_wrap' => $end_wrap, 'condition' => $i < $_['count'] - 1 ? $cond : null);
             $i++;
         }
     }
     $_['cleaned'] = $cleaned;
     $string = $_;
 }