static function process_session_request() { $t = $GLOBALS["t"]; $tname = $t["title"]; $tfolder = $t["folder"]; if (!empty($_REQUEST["today"])) { if (!is_numeric($_REQUEST["today"])) { $_REQUEST["today"] = modify::datetime_to_int($_REQUEST["today"]); } $today = sys_getdate($_REQUEST["today"]); } else { $today = sys_getdate(); } if (empty($_SESSION[$tname]["_" . $tfolder]["today"]) or !is_numeric($_SESSION[$tname]["_" . $tfolder]["today"]) or !empty($_REQUEST["today"]) or $_SESSION[$tname]["_" . $tfolder]["today"] < 1) { $_SESSION[$tname]["_" . $tfolder]["today"] = mktime(0, 0, 0, $today["mon"], $today["mday"], $today["year"]); } if (!isset($_SESSION[$tname]["_" . $tfolder]["weekstart"])) { $_SESSION[$tname]["_" . $tfolder]["weekstart"] = WEEKSTART; } if (isset($_REQUEST["weekstart"]) and is_numeric($_REQUEST["weekstart"]) and $_REQUEST["weekstart"] >= 0 and $_REQUEST["weekstart"] <= 6) { $_SESSION[$tname]["_" . $tfolder]["weekstart"] = $_REQUEST["weekstart"]; } if (!isset($_SESSION[$tname]["_" . $tfolder]["markdate"])) { if (!empty($GLOBALS["current_view"]["MARKDATE"])) { $_SESSION[$tname]["_" . $tfolder]["markdate"] = $GLOBALS["current_view"]["MARKDATE"]; } else { $_SESSION[$tname]["_" . $tfolder]["markdate"] = "week"; } } if (isset($_REQUEST["markdate"]) and in_array($_REQUEST["markdate"], array("day", "week", "month", "year", "gantt", "all"))) { $_SESSION[$tname]["_" . $tfolder]["markdate"] = $_REQUEST["markdate"]; } }
static function select($path, $fields, $where, $order, $limit, $vars, $mfolder) { $path = rtrim($path, "/"); $datas = sys_parse_csv($path); $rows = array(); $index = array_shift($datas); $i = 0; $map = array("subject" => "Subject", "description" => "Description", "location" => "Location", "category" => "Categories", "organizer" => "Meeting Organizer"); foreach ($datas as $data) { $i++; $row = array(); foreach ($fields as $field) { switch ($field) { case "id": $row[$field] = $path . "/?" . $i; break; case "folder": $row[$field] = $path; break; case "created": $row[$field] = 0; break; case "createdby": $row[$field] = ""; break; case "lastmodified": $row[$field] = 0; break; case "lastmodifiedby": $row[$field] = ""; break; case "searchcontent": $row[$field] = implode(" ", $data); break; case "begin": $key1 = array_search("Start Date", $index); $key2 = array_search("Start Time", $index); $row[$field] = modify::datetime_to_int($data[$key1] . " " . $data[$key2]); break; case "ending": $key1 = array_search("End Date", $index); $key2 = array_search("End Time", $index); $row[$field] = modify::datetime_to_int($data[$key1] . " " . $data[$key2]); $row["until"] = $row[$field]; break; case "duration": $row[$field] = $row["ending"] - $row["begin"]; break; case "priority": $key = array_search("Priority", $index); $row[$field] = strtolower($data[$key]); break; case "allday": $key = array_search("All day event", $index); $row[$field] = $data[$key] == "False" ? 0 : 1; break; case "participants_ext": $key = array_search("Required Attendees", $index); $row[$field] = $data[$key]; $key = array_search("Optional Attendees", $index); if ($row[$field] != "" and $data[$key] != "") { $row[$field] .= ", "; } $row[$field] .= $data[$key]; break; default: $row[$field] = ""; if (!isset($row[$field]) and in_array($field, $index)) { $key = array_search($field, $index); $row[$field] = $data[$key]; } else { if (isset($map[$field])) { $key = array_search($map[$field], $index); $row[$field] = $data[$key]; } } break; } } if (sys_select_where($row, $where, $vars)) { $rows[] = $row; } } $rows = sys_select($rows, $order, $limit, $fields); return $rows; }
static function select($path, $fields, $where, $order, $limit, $vars, $mfolder) { $path = rtrim($path, "/"); $csv_data = sys_parse_csv($path); $rows = array(); $index = array_shift($csv_data); $i = 0; $ids = array(); $datas = array(); foreach ($csv_data as $row) { $n_row = array(); foreach ($row as $key => $val) { if (!empty($index[$key])) { $key = strtolower($index[$key]); } $n_row[$key] = $val; } $datas[] = $n_row; } /* "Middle Name","Suffix","Business Street 2","Business Street 3", "Home Street","Home Street 2","Home Street 3","Home City","Home State","Home Postal Code", "Home Country/Region","Other Street","Other Street 2","Other Street 3","Other City", "Other State","Other Postal Code","Other Country/Region", "Assistant's Phone","Business Phone 2","Callback","Car Phone", "Company Main Phone","Home Fax","Home Phone 2","ISDN", "Other Fax","Other Phone","Primary Phone","Radio Phone","TTY/TDD Phone","Telex", "Account","Anniversary","Assistant's Name","Billing Information", "Business Address PO Box","Categories","Children","Directory Server" "E-mail Type","E-mail Display Name","E-mail 2 Address","E-mail 2 Type", "E-mail 2 Display Name","E-mail 3 Address","E-mail 3 Type","E-mail 3 Display Name", "Gender","Government ID Number","Hobby","Home Address PO Box","Initials", "Internet Free Busy","Keywords","Language","Location","Manager's Name","Mileage", "Office Location","Organizational ID Number","Other Address PO Box","Priority", "Private","Profession","Referred By","Sensitivity","Spouse","Web Page" */ $mapping = array("e-mail address" => "email", "company" => "company", "first name" => "firstname", "last name" => "lastname", "title" => "title", "mobile phone" => "mobile", "pager" => "pager", "business phone" => "phone", "business fax" => "fax", "notes" => "description", "job title" => "position", "e-mail 2" => "emailprivate", "home phone" => "phoneprivate", "business address" => "street", "business street" => "street", "business city" => "city", "business postal code" => "zipcode", "business state" => "state", "business country/region" => "country", "department" => "department", "birthday" => "birthday"); foreach ($datas as $data) { $i++; $row = array(); foreach ($fields as $field) { $row[$field] = ""; switch ($field) { case "id": $row[$field] = $path . "/?" . $i; break; case "folder": $row[$field] = $path; break; case "created": $row[$field] = 0; break; case "lastmodified": $row[$field] = 0; break; case "lastmodifiedby": $row[$field] = ""; break; case "searchcontent": $row[$field] = implode(" ", $data); break; case "contactid": if (empty($data["name"])) { if (!empty($data["last name"])) { $row[$field] = $data["last name"]; } if (!empty($data["first name"])) { $row[$field] .= " " . $data["first name"]; } if ($row[$field] == "" and !empty($data["e-mail address"])) { $row[$field] = $data["e-mail address"]; } } else { $row[$field] = $data["name"]; } $row[$field] = str_replace(array(" ", ".", ",", "@", "\"", "'"), array("_", "_", "", "_", "", ""), $row[$field]); $row[$field] = substr(trim($row[$field], " _-."), 0, 15); while (isset($ids[$row[$field]])) { $row[$field] .= "_2"; } $ids[$row[$field]] = ""; break; case "lastname": if (!empty($data["last name"])) { $row[$field] = $data["last name"]; } if ($row[$field] == "" and !empty($data["name"])) { if ($pos = strpos($data["name"], " ")) { $row[$field] = substr($data["name"], $pos + 1); } else { $row[$field] = $data["name"]; } } if ($row[$field] == "" and !empty($data["e-mail address"])) { preg_match("/[-._]?([^-._@]+)@/i", $data["e-mail address"], $match); if (!empty($match[1])) { $row[$field] = ucfirst(strtolower($match[1])); } } $row[$field] = trim($row[$field], " ,"); break; case "firstname": if (!empty($data["first name"])) { $row[$field] = $data["first name"]; } if ($row[$field] == "" and !empty($data["name"]) and $pos = strpos($data["name"], " ")) { $row[$field] = substr($data["name"], 0, $pos); } if ($row[$field] == "" and !empty($data["e-mail address"])) { preg_match("/([^-._@]+)[-._][^-._@]*@/i", $data["e-mail address"], $match); if (!empty($match[1])) { $row[$field] = ucfirst(strtolower($match[1])); } } $row[$field] = trim($row[$field], " ,"); break; default: if ($field_key = array_search($field, $mapping) and !empty($data[$field_key])) { $row[$field] = str_replace(array("\"", "'"), "", $data[$field_key]); } if ($field == "birthday" and $row[$field] != "0/0/00") { $row[$field] = modify::datetime_to_int($row[$field]); } break; } } if (sys_select_where($row, $where, $vars)) { $rows[] = $row; } } $rows = sys_select($rows, $order, $limit, $fields); return $rows; }
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); }
function set_filter($filters) { if ($filters == "") { return; } $ops = array("eq", "neq", "lt", "gt", "like", "nlike", "starts", "oneof"); foreach (explode("||", $filters) as $key => $filter) { $filter = explode("|", $filter); if (count($filter) != 3 or !isset($this->current_fields[$filter[0]])) { continue; } if (!in_array($filter[1], $ops) or trim($filter[2]) == "") { continue; } if ($this->current_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($this->current_fields[$filter[0]]["SIMPLE_TYPE"], array("date", "dateselect", "time", "datetime"))) { $filter[2] = modify::datetime_to_int($filter[2]); } $op = "="; switch ($filter[1]) { case "neq": $op = "!="; break; case "oneof": $op = "in"; 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; } $this->vars["filter_value_" . $key] = $filter[2]; $this->where[] = $filter[0] . " " . $op . " (@filter_value_" . $key . "@)"; } }