Merging in page['visible'] patch from unstable, pages marked as invisible should now be omitted from searches
authorDan
Thu, 12 Jun 2008 10:58:48 -0400
changeset 296 a21faa57e6c6
parent 295 53233b86e054
child 299 0f6f1ace701f
child 304 fc42bccc65e5
Merging in page['visible'] patch from unstable, pages marked as invisible should now be omitted from searches
includes/paths.php
includes/search.php
--- a/includes/paths.php	Fri May 09 23:33:11 2008 -0400
+++ b/includes/paths.php	Thu Jun 12 10:58:48 2008 -0400
@@ -759,6 +759,15 @@
       {
         $page = array('name' => dirtify_page_id($row['page_id']));
       }
+      // make sure the page is indexable
+      if ( isset($page['visible']) )
+      {
+        if ( $page['visible'] == 0 )
+        {
+          // not indexable, just continue
+          continue;
+        }
+      }
       $texts[(string)$row['page_idstring']] = $row['page_text'] . ' ' . $page['name'];
     }
     if ( $verbose )
@@ -819,7 +828,15 @@
     $row = $db->fetchrow();
     $db->free_result();
     $search = new Searcher();
-    $search->buildIndex(Array("ns={$namespace};pid={$page_id}"=>$row['page_text'] . ' ' . $this->pages[$idstring]['name']));
+    // if the page shouldn't be indexed, send a blank set of strings to the indexing engine
+    if ( $this->pages[$idstring]['visible'] == 0 )
+    {
+      $search->buildIndex(Array("ns={$namespace};pid={$page_id}"=>''));
+    }
+    else
+    {
+      $search->buildIndex(Array("ns={$namespace};pid={$page_id}"=>$row['page_text'] . ' ' . $this->pages[$idstring]['name']));
+    }
     $new_index = $search->index;
     
     if ( ENANO_DBLAYER == 'MYSQL' )
--- a/includes/search.php	Fri May 09 23:33:11 2008 -0400
+++ b/includes/search.php	Thu Jun 12 10:58:48 2008 -0400
@@ -391,7 +391,7 @@
     $sql = 'SELECT ' . $concat_column . ' AS id, p.name FROM ' . table_prefix . "page_text AS t\n"
             . "  LEFT JOIN " . table_prefix . "pages AS p\n"
             . "    ON ( p.urlname = t.page_id AND p.namespace = t.namespace )\n"
-            . "  WHERE\n  $where_any\n  $where_req;";
+            . "  WHERE p.visible = 1 AND (\n    $where_any\n    $where_req\n  );";
     if ( !($q = $db->sql_unbuffered_query($sql)) )
       $db->_die('Error is in perform_search(), includes/search.php, query 2. Parsed query dump follows:<pre>(indexable) ' . htmlspecialchars(print_r($query, true)) . '(non-indexable) ' . htmlspecialchars(print_r($query_phrase, true)) . '</pre>');
 
@@ -463,7 +463,7 @@
   $sql = 'SELECT ' . $concat_column . ' AS id, t.page_id, t.namespace, CHAR_LENGTH(t.page_text) AS page_length, t.page_text, p.name AS page_name FROM ' . table_prefix . "page_text AS t
             LEFT JOIN " . table_prefix . "pages AS p
               ON ( p.urlname = t.page_id AND p.namespace = t.namespace )
-            WHERE $text_where $where_not;";
+            WHERE p.visible = 1 AND ( $text_where $where_not );";
   if ( !($q = $db->sql_unbuffered_query($sql)) )
     $db->_die('Error is in perform_search(), includes/search.php, query 3');
 
@@ -496,7 +496,7 @@
 
   foreach ( $paths->pages as $id => $page )
   {
-    if ( $page['namespace'] != 'Special' )
+    if ( $page['namespace'] != 'Special' || $page['visible'] == 0 )
       continue;
     if ( !is_int($id) )
       continue;