$wgNamespacesWithSubpages = array( -1 => 0, 0 => 0, 1 => 1,
2 => 1, 3 => 1, 4 => 0, 5 => 1, 6 => 0, 7 => 1 );
+$wgNamespacesToBeSearchedDefault = array( -1 => 0, 0 => 1, 1 => 0,
+ 2 => 0, 3 => 0, 4 => 0, 5 => 0, 6 => 0, 7 => 0 );
+
?>
function queryNamespaces()
{
- return "cur_namespace IN (" . implode( ",", $this->namespacesToSearch ) . ")";
+ $namespaces = implode( ",", $this->namespacesToSearch );
+ if ($namespaces == "") {
+ $namespaces = "0";
+ }
+ return "AND cur_namespace IN (" . $namespaces . ")";
#return "1";
}
return "AND cur_is_redirect=0 ";
}
+
+
+ /* private */ function initNamespaceCheckbox( $i )
+ {
+ global $wgUser, $wgNamespacesToBeSearchedDefault;
+
+
+ if ($wgUser->getRights()) {
+ // User is logged in so we retrieve his default namespaces
+ return $wgUser->getOption( "searchNs".$i );
+ }
+ else {
+ // User is not logged in so we give him the global default namespaces
+ return $wgNamespacesToBeSearchedDefault[ $i ];
+ }
+ }
+
+
+
function powersearch()
{
global $wgUser, $wgOut, $wgLang, $wgTitle;
$search = $_REQUEST['search'];
$searchx = $_REQUEST['searchx'];
$listredirs = $_REQUEST['redirs'];
- $nscb[0] = $_REQUEST['ns0'];
- $nscb[1] = $_REQUEST['ns1'];
- $nscb[2] = $_REQUEST['ns2'];
- $nscb[3] = $_REQUEST['ns3'];
- $nscb[4] = $_REQUEST['ns4'];
- $nscb[5] = $_REQUEST['ns5'];
- $nscb[6] = $_REQUEST['ns6'];
- $nscb[7] = $_REQUEST['ns7'];
+
if ( ! isset ( $searchx ) ) { /* First time here */
- $nscb[0] = $listredirs = 1; /* All others should be unset */
+ $listredirs = 1;
+ for ($i = 0; ($i <= 7); $i++)
+ {
+ $nscb[$i] = $this->initNamespaceCheckbox($i);
+ }
+ } else {
+ $nscb[0] = $_REQUEST['ns0'];
+ $nscb[1] = $_REQUEST['ns1'];
+ $nscb[2] = $_REQUEST['ns2'];
+ $nscb[3] = $_REQUEST['ns3'];
+ $nscb[4] = $_REQUEST['ns4'];
+ $nscb[5] = $_REQUEST['ns5'];
+ $nscb[6] = $_REQUEST['ns6'];
+ $nscb[7] = $_REQUEST['ns7'];
}
+
$this->checkboxes["searchx"] = 1;
$ret = wfMsg("powersearchtext");
$sql = "SELECT cur_id,cur_namespace,cur_title," .
"cur_text FROM cur,searchindex " .
"WHERE cur_id=si_page AND {$this->mTitlecond} " .
- "AND {$searchnamespaces} {$redircond}" .
+ "{$searchnamespaces} {$redircond}" .
"LIMIT {$offset}, {$limit}";
$res1 = wfQuery( $sql, $fname );
$num = wfNumRows($res1);
$sql = "SELECT cur_id,cur_namespace,cur_title," .
"cur_text FROM cur,searchindex " .
"WHERE cur_id=si_page AND {$this->mTextcond} " .
- "AND {$searchnamespaces} {$redircond} " .
+ "{$searchnamespaces} {$redircond} " .
"LIMIT {$offset}, {$limit}";
$res2 = wfQuery( $sql, $fname );
$num = $num + wfNumRows($res2);
}
}
+
+/* private */ function validateCheckbox( $cb )
+{
+ if ( $cb )
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+
+
/* private */ function savePreferences()
{
global $wgUser, $wgLang, $wgDeferredUpdateList;
global $wpSkin, $wpMath, $wpEmail, $wpEmailFlag, $wpNick, $wpSearch, $wpRecent;
global $wpSearchLines, $wpSearchChars, $wpStubs;
global $wpRows, $wpCols, $wpHourDiff, $HTTP_POST_VARS;
+ global $wpNs0, $wpNs1, $wpNs2, $wpNs3, $wpNs4, $wpNs5, $wpNs6, $wpNs7;
if ( "" != $wpNewpass ) {
if ( $wpNewpass != $wpRetype ) {
$wgUser->setOption( "stubthreshold", validateIntOrNull( $wpStubs ) );
$wgUser->setOption( "timecorrection", validateIntOrNull( $wpHourDiff, -12, 14 ) );
- if ( $wpEmailFlag ) { $wgUser->setOption( "disablemail", 1 ); }
- else { $wgUser->setOption( "disablemail", 0 ); }
+ $wgUser->setOption( "searchNs0", validateCheckbox( $wpNs0 ) );
+ $wgUser->setOption( "searchNs1", validateCheckbox( $wpNs1 ) );
+ $wgUser->setOption( "searchNs2", validateCheckbox( $wpNs2 ) );
+ $wgUser->setOption( "searchNs3", validateCheckbox( $wpNs3 ) );
+ $wgUser->setOption( "searchNs4", validateCheckbox( $wpNs4 ) );
+ $wgUser->setOption( "searchNs5", validateCheckbox( $wpNs5 ) );
+ $wgUser->setOption( "searchNs6", validateCheckbox( $wpNs6 ) );
+ $wgUser->setOption( "searchNs7", validateCheckbox( $wpNs7 ) );
+
+
+ $wgUser->setOption( "disablemail", validateCheckbox( $wpEmailFlag ) );
$togs = $wgLang->getUserToggles();
foreach ( $togs as $tname => $ttext ) {
}
}
+
+
+
+/* private */ function namespacesCheckboxes()
+{
+ global $wgLang, $wgUser;
+ $nscb = array();
+
+
+ for ($i = 0; ($i < 8); $i++)
+ {
+ $nscb[$i] = $wgUser->getOption( "searchNs".$i );
+ }
+
+ # Determine namespace checkboxes
+
+ $ns = $wgLang->getNamespaces();
+ array_shift( $ns ); /* Skip "Special" */
+
+ $r1 = "";
+ for ( $i = 0; $i < count( $ns ); ++$i ) {
+ $checked = "";
+ if ( $nscb[$i] == 1 ) {
+ $checked = " checked";
+ }
+ $name = str_replace( "_", " ", $ns[$i] );
+ if ( "" == $name ) { $name = "(Main)"; }
+
+ if ( 0 != $i ) { $r1 .= " "; }
+ $r1 .= "<input type=checkbox value=\"1\" name=\"" .
+ "wpNs{$i}\"{$checked}>{$name}\n";
+ }
+
+ return $r1;
+}
+
+
+
+
/* private */ function mainPrefsForm( $err )
{
global $wgUser, $wgOut, $wgLang;
$scl = wfMsg( "contextlines" );
$scc = wfMsg( "contextchars" );
$rcc = wfMsg( "recentchangescount" );
+ $dsn = wfMsg( "defaultns" );
$wgOut->addHTML( "<form id=\"preferences\" name=\"preferences\" action=\"$action\"
method=\"post\"><table border=\"1\"><tr><td valign=top nowrap><b>$qb:</b><br>\n" );
if ( $wpEmailFlag ) { $emfc = "checked"; }
else { $emfc = ""; }
+ $ps = namespacesCheckboxes();
+
$wgOut->addHTML( "<td valign=top nowrap>
<label>$yem: <input type=text name=\"wpEmail\" value=\"{$wpEmail}\" size=20></label><br>
<label><input type=checkbox $emfc value=\"1\" name=\"wpEmailFlag\"> $emf</label><br>
<label>$scl: <input type=text name=\"wpSearchLines\" value=\"$wpSearchLines\" size=6></label><br>
<label>$scc: <input type=text name=\"wpSearchChars\" value=\"$wpSearchChars\" size=6></label></td>
</tr><tr>
+<td colspan=2>
+<b>$dsn</b><br>
+$ps
+</td>
+</tr><tr>
<td align=center><input type=submit name=\"wpSaveprefs\" value=\"$svp\"></td>
<td align=center><input type=submit name=\"wpReset\" value=\"$rsp\"></td>
</tr></table>* {$tzt} </form>\n" );
function loadDefaults()
{
global $wgLang ;
+ global $wgNamespacesToBeSearchedDefault;
$this->mId = $this->mNewtalk = 0;
$this->mName = getenv( "REMOTE_ADDR" );
foreach ( $defOpt as $oname => $val ) {
$this->mOptions[$oname] = $val;
}
+ foreach ($wgNamespacesToBeSearchedDefault as $nsnum => $val) {
+ $this->mOptions["searchNs".$nsnum] = $val;
+ }
unset( $this->mSkin );
$this->mDataLoaded = false;
$this->mBlockedby = -1; # Unset
"servertime" => "Server time is now",
"guesstimezone" => "Fill in from browser",
"emailflag" => "Disable e-mail from other users",
+"defaultns" => "Search in these namespaces by default:",
# Recent changes
#
"servertime" => "Aktuelle Zeit auf dem Server",
"guesstimezone" => "Einfügen aus dem Browser",
"emailflag" => "Keine E-Mail von anderen Benutzern erhalten",
+"defaultns" => "In diesen Namensräumen soll standardmäßig gesucht werden:",
# Recent changes
#