"bk_sess" ,"auth" => "bk_cr_auth" ,"perm" => "bk_perm" ,"user" => "bk_user")); include(LIBDIR . "plist.inc"); $tpl->set_file(array( standard => "common.standard.tpl", body => "search.body.tpl", results => "search.results.tpl" )); ### Submit Handler ### Get a database connection $db = new bk_db; // the following fields are selectable $field = array( "bookmark.name" => "Name" ,"bookmark.keywords" => "Keywords" ,"bookmark.url" => "URL" ,"bookmark.ldesc" => "Description" ,"category.name" => "Category" ,"subcategory.name" => "Sub Category" ,"rating.name" => "Rating" ,"bookmark.id" => "ID"); # PHPLIB's sqlquery class loads this string when # no query has been specified. $noquery = "1=0"; # if we don't have a query object for this session yet, # then create one and save as a session variable. if (!isset($q)) { $q = new bk_Sql_Query; $sess->register("q"); } # if a WHERE clause was specified in the URL, then use it if (isset($where)) { $q->query = base64_decode($where); } ## Check if there was a submission while ( is_array($HTTP_POST_VARS) && list($key, $val) = each($HTTP_POST_VARS)) { switch ($key) { ## Load a Saved Search case "bks_load": ## Do we have all necessary data? if ($search > 0 ) { } else { $error_msg .= "
Please select a Saved Search to load!"; break; } ## get the saved search $query = sprintf("select query from search where id=%s and username='%s'", $search, ($auth->is_nobody()?"":$auth->auth["uname"])); $db->query($query); if ($db->Errno == 0) { if ($db->next_record()){ $q->query = $db->f("query"); } else { $error_msg .= "
Saved Search not found in database!"; break; } $msg .= "
Saved Search loaded sucessfully."; } break; ## Change Saved Search case "bks_save": ## Do we have permission to do so? if (!$perm->have_perm("editor")) { $error_msg .= "
You do not have permission to change Saved Searches."; break; } ## Do we have all necessary data? if ($search > 0 ) { } else { $error_msg .= "
Please select a Saved Search to update!"; break; } if ($q->query == $noquery) { $error_msg .= "
No query to save!"; break; } ## Update bookmark information. $query = sprintf("update search set query='%s' where id=%s and username='%s'", addslashes($q->query), $search, $auth->auth["uname"]); $db->query($query); if ($db->Errno == 0) { $msg .= "
Saved Search changed sucessfully."; } break; ## Delete the saved search case "bks_delete": ## Do we have permission to do so? if (!$perm->have_perm("editor")) { $error_msg .= "
You do not have permission to delete Saved Searches."; break; } ## Do we have all necessary data? if ($search > 0 ) { } else { $error_msg .= "
Please select a Saved Search to delete!"; break; } ## Delete that bookmark. $query = sprintf("delete from search where id='%s' and username='%s'", $search, $auth->auth["uname"]); $db->query($query); if ($db->Errno == 0) { $msg .= "
Saved Search deleted sucessfully."; } break; ## Create a new saved search case "bks_create": ## Do we have permission to do so? if (!$perm->have_perm("editor")) { $error_msg .= "
You do not have permission to create Saved Searches."; break; } ## Trim form fields $name = trim($name); ## Do we have all necessary data? if (empty($name)) { $error_msg .= "
Please enter a Name for the Saved Search!"; break; } if ($q->query == $noquery) { $error_msg .= "
No query to save!"; break; } ## Does the search already exist? ## NOTE: This should be a transaction, but it isn't... $query = sprintf("select id from search where name='%s' and username = '%s'",addslashes($name), $auth->auth["uname"]); $db->query($query); if ($db->Errno == 0) { if ($db->nf() > 0) { $error_msg .= sprintf("
Saved Search named %s already exists!", $url); break; } } ## Get the next available ID key $id = $db->nextid('search'); if ($db->Errno != 0) break; ## Insert the search $query = sprintf("insert into search (id, name, query, username) values(%s, '%s', '%s', '%s')", $id, addslashes($name), addslashes($q->query), $auth->auth["uname"]); $db->query($query); if ($db->Errno == 0) { $msg .= "
Saved Search created sucessfully."; } break; default: break; } } # build the where clause based on user entered fields if (isset($x)) { # # we need to pre-process the input fields so we can # handle quotes properly. we can't put an addslashes # on the resulting sql because the sql_query object # doesn't do the quotes correctly reset($x); while (list($key, $value) = each ($x)) { $y[$key] = addslashes($value); } $q->query = $q->where("y", 1); } # load the list of previously saved searches # and prepare the save search form load_ddlb("search", $search, &$search_select, FALSE); $tpl->set_var(array( SEARCH_SELECT => $search_select, FORM_ACTION => $sess->url("search.php3") )); # build the search form $tpl->set_var(QUERY_FORM, $q->form("x", $field, "qry", $sess->url("search.php3"))); if ($q->query == $noquery) { } else { $limit = 0; $offset = 0; # db callout to allow database specific override to the # generated query syntax. $q->query = $bk_db_callout->fix_search_sql ($q->query); print_list ($q->query, $limit, $offset, "search.php3", &$bookmark_list, &$error_msg); $tree_search_url = $sess->url( "tree.php3?where=" . base64_encode($q->query)); $tpl->set_var(array( QUERY_CONDITION => htmlspecialchars($q->query), BOOKMARK_LIST => $bookmark_list, TREE_SEARCH_URL => $tree_search_url )); $tpl->parse(QUERY_RESULTS, "results"); } set_standard("buscar", &$tpl); include(LIBDIR . "bkend.inc"); ?>