function asset_process_session_request() { $t =& $GLOBALS["t"]; $tname = $t["title"]; $tview = $t["view"]; $tfolder = $t["folder"]; if (SYNC4J and !empty($GLOBALS["sel_folder"]["anchor"])) { _asset_process_syncml_requests(); } if ($tview == "search") { if (empty($_SESSION["_" . $tfolder]["request"]["search"])) { $_SESSION["_" . $tfolder]["request"]["search"] = array("query" => "*", "module" => "", "subfolders" => 1); } if (isset($_REQUEST["search"])) { if (empty($_REQUEST["module"])) { $_REQUEST["module"] = ""; } if (empty($_REQUEST["similar"])) { $_REQUEST["similar"] = ""; } if (!isset($_REQUEST["subfolders"])) { $_REQUEST["subfolders"] = 1; } $_SESSION["_" . $tfolder]["request"]["search"] = array("query" => $_REQUEST["search"], "module" => $_REQUEST["module"], "similar" => $_REQUEST["similar"], "subfolders" => $_REQUEST["subfolders"]); } $t["search"] = $_SESSION["_" . $tfolder]["request"]["search"]; $value = modify::searchindex($t["search"]["query"]); $search_snd = ""; if (!empty($t["search"]["similar"])) { $search_arr = explode(" ", $value); foreach ($search_arr as $key => $value) { $val = soundex($value); if ($val != "0000") { $search_arr[$key] = $val; } else { unset($search_arr[$key]); } } $search_snd = implode(" ", $search_arr); } if ($search_snd != "") { $search_snd = "%" . $search_snd . "%"; } if ($value != "") { $term_two = "%" . $value . "%"; } else { $term_two = ""; } $search_rights = str_replace("r@right@_", "t.rread_", $_SESSION["permission_sql"]) . " and " . str_replace("r@right@_", "s.rread_", $_SESSION["permission_sql"]); if (!isset($GLOBALS["sel_folder"]["lft"])) { $folder = array("lft" => 0, "rgt" => 0); } else { $folder = $GLOBALS["sel_folder"]; } $vars = array("lft" => $folder["lft"], "rgt" => $folder["rgt"], "search" => $value, "search2" => $term_two, "search_snd" => $search_snd, "module" => $t["search"]["module"], "subfolders" => $t["search"]["subfolders"]); $t["sqlvars"] = array_merge($t["sqlvars"], $vars); $t["sqlvarsnoquote"] = array_merge($t["sqlvarsnoquote"], array("search_rights" => $search_rights)); } if ($t["default_sql"] != "" and $t["default_sql"] != "no_select") { $matches = ""; if (preg_match_all("|@(.*?)@|i", $t["default_sql"], $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { if (count($match) != 2) { continue; } $req_key = $match[1]; if (isset($_SESSION[$req_key])) { $t["default_sql"] = str_replace("@" . $req_key . "@", sys_correct_quote($_SESSION[$req_key]), $t["default_sql"]); } } } } if (isset($_REQUEST["session_remove_request"])) { $_SESSION["_" . $tfolder]["request"] = array(); $_SESSION["_" . $tfolder][$tview] = array(); } if (isset($_REQUEST["subitem"])) { $_SESSION["_" . $tfolder][$tview]["subitem"] = $_REQUEST["subitem"]; } if (isset($_SESSION["_" . $tfolder][$tview]["subitem"])) { $t["subitem"] = $_SESSION["_" . $tfolder][$tview]["subitem"]; } if (isset($_REQUEST["filters"])) { $_SESSION["_" . $tfolder][$tview]["filters"] = $_REQUEST["filters"]; } if (isset($_SESSION["_" . $tfolder][$tview]["filters"])) { $t["filter"] = $_SESSION["_" . $tfolder][$tview]["filters"]; } if ($t["filter"] != "") { $t["sqlfilters"] = array(); $ops = array("eq", "neq", "lt", "gt", "like", "nlike", "starts", "oneof"); foreach (explode("||", $t["filter"]) as $key => $filter) { $filter = explode("|", $filter); if (count($filter) == 3 and isset($t["fields"][$filter[0]]) and in_array($filter[1], $ops)) { if (trim($filter[2]) == "") { continue; } if (!empty($t["search"])) { if ($filter[0] == "lastmodifiedby") { $t["search"]["user"] = $filter[2]; } if ($filter[0] == "lastmodified") { $t["search"]["modified"] = array("type" => $filter[1], "value" => $filter[2]); } } $t["sqlfilters"][] = array("field" => $filter[0], "type" => $filter[1], "value" => $filter[2]); if ($t["fields"][$filter[0]]["SIMPLE_TYPE"] == "checkbox") { $filter[2] = $filter[2] == "{t}yes{/t}" ? "1" : "0"; } if ($filter[1] == "oneof") { $filter[2] = explode(",", $filter[2]); } if (in_array($t["fields"][$filter[0]]["SIMPLE_TYPE"], array("date", "dateselect", "time", "datetime"))) { $filter[2] = modify::datetime_to_int($filter[2]); } $op = "="; $key_var = "@filter_value_" . $key . "@"; switch ($filter[1]) { case "neq": $op = "!="; break; case "oneof": $op = "in"; $key_var = "(" . $key_var . ")"; break; case "lt": $op = "<"; break; case "gt": $op = ">"; break; case "like": $op = "like"; $filter[2] = "%" . $filter[2] . "%"; break; case "nlike": $op = "not like"; $filter[2] = "%" . $filter[2] . "%"; break; case "starts": $op = "like"; $filter[2] = $filter[2] . "%"; break; } $t["sqlvars"]["filter_value_" . $key] = $filter[2]; $t["sqlwhere"][] = $filter[0] . " " . $op . " " . $key_var; $t["sqlwhere_default"][] = $filter[0] . " " . $op . " " . $key_var; } } } if (!empty($t["att"]["ENABLE_ASSET_RIGHTS"])) { $t["sqlvarsnoquote"]["permission_sql_read_nq"] = $_SESSION["permission_sql_read"]; $t["sqlvarsnoquote"]["permission_sql_write_nq"] = $_SESSION["permission_sql_write"]; } foreach ($t["sqlwhere_default"] as $key => $value) { if (!preg_match_all("|@(.*?)@|i", $value, $matches, PREG_SET_ORDER)) { continue; } foreach ($matches as $match) { if (count($match) != 2) { continue; } $req_key = $match[1]; if (isset($_SESSION[$req_key])) { $t["sqlvars"][$req_key] = $_SESSION[$req_key]; } } } if ($t["default_sql"] == "" or $t["default_sql"] != "no_select") { $vars = array("handler" => $t["handler"], "sqlvarsnoquote" => $t["sqlvarsnoquote"], "default_sql" => $t["default_sql"], "custom_name" => $t["custom_name"]); $fcount = $GLOBALS["sel_folder"]["fcount"]; if (!empty($vars["handler"]) or !empty($vars["default_sql"]) or count($t["sqlvars"]["folders"]) > 1 or !empty($t["custom_name"])) { $t["maxdatasets"] = db_count($tname, $t["sqlwhere_default"], $t["sqlvars"], $vars); } else { if (!sys_strbegins($tname, "simple_sys_") and ($t["sqlwhere_default"] == array("folder in (@folders@)") or $fcount == 0)) { $t["maxdatasets"] = $fcount; } else { if ($fcount > 100) { $cid = "dbcount_" . sha1(serialize(array($t["sqlvars"], $t["sqlwhere_default"], $fcount))); $t["maxdatasets"] = sys_cache_get($cid); if ($t["maxdatasets"] === false) { $t["maxdatasets"] = db_count($tname, $t["sqlwhere_default"], $t["sqlvars"], $vars); sys_cache_set($cid, $t["maxdatasets"], OUTPUT_CACHE); } } else { $t["maxdatasets"] = db_count($tname, $t["sqlwhere_default"], $t["sqlvars"], $vars); } } } } else { $t["maxdatasets"] = 0; } if (isset($_REQUEST["orderby"]) and isset($_REQUEST["order"])) { $_SESSION[$tname][$tview]["orderby"] = $_REQUEST["orderby"]; $_SESSION[$tname][$tview]["order"] = $_REQUEST["order"]; } $t["hidden_fields"] = array(); if (isset($_REQUEST["hide_fields"])) { $_SESSION[$tname][$tview]["hidden"] = explode(",", $_REQUEST["hide_fields"]); } if (!empty($_SESSION[$tname][$tview]["hidden"]) and empty($t["views"][$tview]["SCHEMA_MODE"])) { $t["hidden_fields"] = $_SESSION[$tname][$tview]["hidden"]; foreach ($t["hidden_fields"] as $field) { unset($t["fields"][$field]); } } if (isset($_SESSION[$tname][$tview]["order"]) and isset($_SESSION[$tname][$tview]["orderby"]) and in_array($_SESSION[$tname][$tview]["order"], array("asc", "desc")) and isset($t["fields"][$_SESSION[$tname][$tview]["orderby"]])) { $t["orderby"] = $_SESSION[$tname][$tview]["orderby"]; $t["order"] = $_SESSION[$tname][$tview]["order"]; } foreach ($t["sqlwhere"] as $key => $value) { if (!preg_match_all("|@(.*?)@|i", $value, $matches, PREG_SET_ORDER)) { continue; } foreach ($matches as $match) { if (count($match) != 2) { continue; } $req_key = $match[1]; if ($req_key == "folders") { continue; } if ($req_key == "item") { $skey = $tview; } else { $skey = "request"; } if (isset($_SESSION["_" . $tfolder][$skey][$req_key])) { $t["sqlvars"][$req_key] = $_SESSION["_" . $tfolder][$skey][$req_key]; } if (isset($_SESSION[$req_key])) { $t["sqlvars"][$req_key] = $_SESSION[$req_key]; } if (isset($_REQUEST[$req_key])) { $t["sqlvars"][$req_key] = $_REQUEST[$req_key]; $_SESSION["_" . $tfolder][$skey][$req_key] = $_REQUEST[$req_key]; } if (!isset($t["sqlvars"][$req_key]) and empty($t["sqlvarsnoquote"][$req_key])) { $t["sqlwhere"][$key] = "1=1"; } } } if (!isset($_SESSION[$tname][$tview]["group"])) { $_SESSION[$tname][$tview]["group"] = $t["group"]; } if (!isset($_SESSION[$tname][$tview]["groupby"])) { $_SESSION[$tname][$tview]["groupby"] = $t["groupby"]; } if (isset($_REQUEST["group"])) { if ($_SESSION[$tname][$tview]["groupby"] == "") { $_SESSION[$tname][$tview]["groupby"] = $t["orderby"]; $_SESSION[$tname][$tview]["group"] = $t["order"]; } else { $_SESSION[$tname][$tview]["groupby"] = ""; $_SESSION[$tname][$tview]["group"] = ""; } } if (!isset($_REQUEST["plain"])) { $t["groupby"] = $_SESSION[$tname][$tview]["groupby"]; $t["group"] = $_SESSION[$tname][$tview]["group"]; } else { $t["groupby"] = ""; $t["group"] = ""; } if ($t["groupby"] != "" and isset($t["fields"][$t["groupby"]])) { $field = $t["fields"][$t["groupby"]]; $field["WIDTH"] = 0; unset($t["fields"][$t["groupby"]]); unset($t["fields_query"][$t["groupby"]]); $t["fields"] = array_merge(array($t["groupby"] => $field), $t["fields"]); $t["fields_query"] = array_unique(array_merge(array($t["groupby"]), $t["fields_query"])); } _asset_process_pages($t["maxdatasets"]); if (!isset($t["views"][$tview]["NOSQLORDER"])) { $t["sqlorder"] = ($t["groupby"] != "" ? $t["groupby"] . " " . $t["group"] . "," : "") . $t["orderby"] . " " . $t["order"]; } if (!isset($t["views"][$tview]["NOSQLLIMIT"]) and empty($_REQUEST["print_all"]) and (empty($_REQUEST["export"]) or !empty($_REQUEST["limit"]))) { $t["sqllimit"] = array(($t["page"] - 1) * $t["limit"], $t["limit"]); } if (!empty($_REQUEST["iframe"]) and isset($_REQUEST["session_remove_request"])) { $t["sqllimit"] = array(); } // offline reading if (!empty($t["sqlvars"]["item"]) and $t["views"][$tview]["SCHEMA_MODE"] == "edit" and $t["maxdatasets"] == 0) { sys_warning("{t}Item(s) not found or access denied.{/t}"); } if ($t["maxdatasets"] != 0) { _asset_get_rows(); } if ((!empty($_REQUEST["form_submit_create"]) or !empty($_REQUEST["form_submit_edit"])) and $t["rights"]["write"] and $t["schema_mode"] != "") { $mode = $t["schema_mode"] == "edit" ? "edit" : "create"; list($t["errors"], $defaults, $form_ids, $saved_ids) = asset::create_edit($tfolder, $tview, $mode); foreach ($t["limits"] as $key => $val) { if (in_array($val, $form_ids)) { unset($t["limits"][$key]); } } if (count($t["errors"]) == 0) { $t["limits"] = range(0, $t["limit"] - 1); if (!empty($_REQUEST["form_submit_return"])) { $arr = array_pop(array_slice($_SESSION["history"], -2, 1)); if (empty($arr[2])) { $arr[2] = "default"; } sys_redirect("index.php?view=" . $arr[2] . "&" . sys::$urladdon); } if (!empty($_REQUEST["form_submit_go_edit"])) { $items = ""; foreach ($saved_ids as $id) { $items .= "&item[]=" . rawurlencode($id); } sys_redirect("index.php?view=edit" . $items . "&" . sys::$urladdon); } } foreach ($defaults as $id => $field) { foreach ($field as $field_name => $value) { $t["fields"][$field_name]["SIMPLE_DEFAULTS"][$id] = $value; $t["fields"][$field_name]["SIMPLE_DEFAULT"] = ""; } } } sys::$smarty->assign_by_ref("t", $t); }