diff -r 41c45314ac27 -r 5e8fd89c02ea plugins/SpecialPageFuncs.php --- a/plugins/SpecialPageFuncs.php Wed Jun 18 22:43:16 2008 -0400 +++ b/plugins/SpecialPageFuncs.php Sun Jun 22 18:13:59 2008 -0400 @@ -67,6 +67,13 @@ \'namespace\'=>\'Special\', \'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\', )); + + $paths->add_page(Array( + \'name\'=>\'specialpage_autofill\', + \'urlname\'=>\'Autofill\', + \'namespace\'=>\'Special\', + \'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\', + )); '); // function names are IMPORTANT!!! The name pattern is: page__ @@ -828,4 +835,73 @@ $plugins->attachHook('compile_template', 'sidebar_add_tag_cloud();'); +function page_Special_Autofill() +{ + global $db, $session, $paths, $template, $plugins; // Common objects + global $lang; + + header('Content-type: text/javascript'); + + $dataset = array(); + if ( isset($_GET['type']) ) + { + switch($_GET['type']) + { + case 'username': + if ( isset($_GET['userinput']) && strlen($_GET['userinput']) >= 3 ) + { + $search = '%' . escape_string_like($_GET['userinput']) . '%'; + $q = $db->sql_query('SELECT username FROM ' . table_prefix . "users WHERE " . ENANO_SQLFUNC_LOWERCASE . "(username) LIKE '$search' AND user_id > 1"); + if ( !$q ) + $db->die_json(); + + while ( $row = $db->fetchrow() ) + { + $key = array( + 'name' => $row['username'], + 'name_highlight' => highlight_term($_GET['userinput'], $row['username'], '', '') + ); + $key = array_merge($key, $session->get_user_rank($row['username'])); + $key['rank_title'] = $lang->get($key['rank_title']); + $dataset[] = $key; + } + } + break; + case 'page': + if ( isset($_GET['userinput']) && strlen($_GET['userinput']) >= 3 ) + { + $search = '%' . escape_string_like($_GET['userinput']) . '%'; + $q = $db->sql_query('SELECT urlname, namespace, name FROM ' . table_prefix . "users\n" + . " WHERE (\n" + . " " . ENANO_SQLFUNC_LOWERCASE . "(urlname) LIKE '$search'\n" + . " OR " . ENANO_SQLFUNC_LOWERCASE . "(name) LIKE '$search'\n" + . " ) AND user_id > 1"); + if ( !$q ) + $db->die_json(); + + while ( $row = $db->fetchrow() ) + { + $pathskey = ( isset($paths->nslist[$row['namespace']]) ? $paths->nslist[$row['namespace']] : $row['namespace'] . substr($paths->nslist['Special'], -1) ) . $row['urlname']; + $key = array( + 'page_id' => $pathskey, + 'pid_highlight' => highlight_term($_GET['userinput'], dirtify_page_id($pathskey), '', ''), + 'name_highlight' => highlight_term($_GET['userinput'], $row['name'], '', '') + ); + $dataset[] = $key; + } + } + break; + default: + $code = $plugins->setHook('autofill_json_request'); + foreach ( $code as $cmd ) + { + eval($cmd); + } + break; + } + } + + echo enano_json_encode($dataset); +} + ?> \ No newline at end of file