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 = $_; }