function b1n_search($sql, $search_config, $search, $select_first_if_none = true, $where_plus = '') { $ret["select_fields"] = $search_config["select_fields"]; $ret["possible_fields"] = $search_config["possible_fields"]; $ret["possible_quantities"] = $search_config["possible_quantities"]; // ---------------------- Checking and Session storing ---------------- if (!b1n_checkSearch($search, $ret, $search_config["session_hash_name"], $select_first_if_none)) { $ret["search"] = $search; return $ret; } $ret["search"] = $search; $_SESSION["search"][$search_config["session_hash_name"]] = $search; if (empty($search["search_text"])) { $isnull = " OR " . $search["search_field"] . " IS NULL"; } else { $isnull = ""; } // ---------------------- WHERE --------------------------- if (!empty($search["search_field"])) { $where = " WHERE " . $search["search_field"] . " ILIKE '%" . b1n_inBd($search["search_text"]) . "%'" . $where_plus . $isnull; } else { $where = $where_plus; } // ---------------------- ORDER BY --------------------------- if (!empty($search['search_order'])) { $orderby = " ORDER BY LOWER(" . $search['search_order'] . ") "; if (!empty($search['search_order_type'])) { $orderby .= " " . $search['search_order_type']; } } else { $orderby = ''; } // ---------------------- LIMIT & OFFSET ---------------- if ($search["search_quantity"] == 'all') { $limit = ''; $ret['pg_actual'] = 1; $ret['pg_pages'] = 1; } else { $query = "\n SELECT DISTINCT\n COUNT(" . $search_config["id_field"] . ")\n FROM\n \"" . $search_config["table"] . "\"" . $where; $rs_count = $sql->singleQuery($query); $ret["pg_pages"] = max(1, ceil($rs_count["count"] / $search["search_quantity"])); if ($search["pg_actual"] > $ret["pg_pages"]) { $search["pg_actual"] = $ret["pg_pages"]; } $ret["pg_actual"] = $search["pg_actual"]; $limit = " LIMIT " . $search['search_quantity'] . ' OFFSET ' . ($search['pg_actual'] - 1) * $search['search_quantity']; } // ---------------------- DB Search --------------------------- $select_fields = $search_config['id_field'] . " AS id, " . implode(", ", $search_config['select_fields']); $query = "\n SELECT\n " . $select_fields . "\n FROM\n \"" . $search_config['table'] . "\" " . $where . $orderby . $limit; $ret["result"] = $sql->query($query); return $ret; }
function b1n_regSearchLeg($sql, $search_config, $search) { $ret["select_fields"] = $search_config["select_fields"]; $ret["possible_fields"] = $search_config["possible_fields"]; $ret["possible_quantities"] = $search_config["possible_quantities"]; // ---------------------- Checking and Session storing ---------------- if (!b1n_checkSearch($search, $ret, $search_config["session_hash_name"], true)) { $ret["search"] = $search; return $ret; } $ret["search"] = $search; $_SESSION["search"][$search_config["session_hash_name"]] = $search; // ---------------------- WHERE --------------------------- switch ($search["search_field"]) { case "apt_name_depart": $field = "\n CASE WHEN (apt_depart.apt_icao IS NOT NULL) THEN\n apt_depart.apt_name || ' (' || apt_depart.apt_icao || ')'\n ELSE\n apt_depart.apt_name\n END"; break; case "apt_name_arrive": $field = "\n CASE WHEN (apt_arrive.apt_icao IS NOT NULL) THEN\n apt_arrive.apt_name || ' (' || apt_arrive.apt_icao || ')'\n ELSE \n apt_arrive.apt_name\n END"; break; default: $field = $search["search_field"]; break; } // ---------------------- LIMIT & OFFSET ---------------- if ($search["search_quantity"] == 'all') { $ret['pg_actual'] = 1; $ret['pg_pages'] = 1; $limit_quantity = 0; $limit_offset = 0; } else { $query = "\n SELECT DISTINCT\n COUNT(leg_id)\n FROM\n \"leg\"\n LEFT OUTER JOIN \"airport\" apt_depart ON (apt_id_depart = apt_depart.apt_id)\n LEFT OUTER JOIN \"airport\" apt_arrive ON (apt_id_arrive = apt_arrive.apt_id)\n WHERE " . $field . " ILIKE '%" . b1n_inBd($search['search_text']) . "%'"; $rs_count = $sql->singleQuery($query); $ret["pg_pages"] = max(1, ceil($rs_count["count"] / $search["search_quantity"])); if ($search["pg_actual"] > $ret["pg_pages"]) { $search["pg_actual"] = $ret["pg_pages"]; } $ret["pg_actual"] = $search["pg_actual"]; $limit_quantity = $search['search_quantity']; $limit_offset = ($search['pg_actual'] - 1) * $search['search_quantity']; } // ---------------------- DB Search --------------------------- $query = "\n SELECT\n *\n FROM\n func_list_leg (\n '" . b1n_inBd($field) . "', \n '" . b1n_inBd($search["search_text"]) . "', \n '" . $search["search_order"] . "', \n '" . $search["search_order_type"] . "', \n '" . $limit_quantity . "',\n '" . $limit_offset . "'\n )\n AS \n (\n apt_name_depart text,\n apt_name_arrive text,\n apt_timezone_depart text,\n apt_timezone_arrive text,\n\n leg_etd_dt text,\n leg_etd_localtime_dt text,\n \n leg_ete_i interval,\n\n leg_eta_dt text,\n leg_eta_localtime_dt text,\n leg_groundtime_i interval,\n\n id integer,\n leg_trip integer,\n leg_distance integer,\n leg_wind integer,\n leg_fuel integer,\n leg_remarks text\n )"; $ret["result"] = $sql->query($query); return $ret; }