DB error log
[lhc/web/wiklou.git] / includes / Title.php
index 85b16ed..35ae3e8 100644 (file)
@@ -88,7 +88,7 @@ class Title {
        # From a URL-encoded title
        /* static */ function newFromURL( $url )
        {
-               global $wgLang, $wgServer;
+               global $wgLang, $wgServer, $wgIsMySQL, $wgIsPg;
                $t = new Title();
                
                # For compatibility with old buggy URLs. "+" is not valid in titles,
@@ -109,14 +109,20 @@ class Title {
                
                $t->mDbkeyform = str_replace( " ", "_", $s );
                if( $t->secureAndSplit() ) {
-
                        # check that lenght of title is < cur_title size
-                       $sql = "SHOW COLUMNS FROM cur LIKE \"cur_title\";";
-                       $cur_title_object = wfFetchObject(wfQuery( $sql, DB_READ ));
+                       if ($wgIsMySQL) {
+                               $sql = "SHOW COLUMNS FROM cur LIKE \"cur_title\";";
+                               $cur_title_object = wfFetchObject(wfQuery( $sql, DB_READ ));
 
-                       preg_match( "/\((.*)\)/", $cur_title_object->Type, $cur_title_size);
+                               preg_match( "/\((.*)\)/", $cur_title_object->Type, $cur_title_type);
+                               $cur_title_size=$cur_title_type[1];
+                       } else {
+                               /* midom:FIXME pg_field_type does not return varchar length
+                                  assume 255 */
+                               $cur_title_size=255;
+                       }
 
-                       if (strlen($t->mDbkeyform) > $cur_title_size[1] ) {
+                       if (strlen($t->mDbkeyform) > $cur_title_size ) {
                                return NULL;
                        }
 
@@ -187,7 +193,7 @@ class Title {
                # Theoretically 0x80-0x9F of ISO 8859-1 should be disallowed, but
                # this breaks interlanguage links
                
-               $set = " %!\"$&'()*,\\-.\\/0-9:;<=>?@A-Z\\\\^_`a-z{}~\\x80-\\xFF";
+               $set = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z{}~\\x80-\\xFF";
                return $set;
        }
        
@@ -229,8 +235,7 @@ class Title {
        # The URL contains $1, which is replaced by the title
        function getInterwikiLink( $key )
        {       
-               global $wgMemc, $wgDBname, $wgInterwikiExpiry;
-               static $wgTitleInterwikiCache = array();
+               global $wgMemc, $wgDBname, $wgInterwikiExpiry, $wgTitleInterwikiCache;
 
                $k = "$wgDBname:interwiki:$key";
 
@@ -370,9 +375,6 @@ class Title {
                $n = $wgLang->getNsText( $this->mNamespace );
                if ( "" != $n ) { $n .= ":"; }
                $u = str_replace( "$1", $n . $this->mUrlform, $p );
-               if ( "" != $this->mFragment ) {
-                       $u .= "#" . wfUrlencode( $this->mFragment );
-               }
                return $u;
        }
 
@@ -526,7 +528,7 @@ class Title {
                if( in_array( $name, $wgWhitelistRead ) ) return true;
                
                # Compatibility with old settings
-               if( $this->getNamespace() == NS_ARTICLE ) {
+               if( $this->getNamespace() == NS_MAIN ) {
                        if( in_array( ":" . $name, $wgWhitelistRead ) ) return true;
                }
                return false;
@@ -675,7 +677,7 @@ class Title {
                        $this->mNamespace = NS_MAIN;
                } else {
                        # Namespace or interwiki prefix
-                       if ( preg_match( "/^((?:i|x|[a-z]{2,3})(?:-[a-z0-9]+)?|[A-Za-z0-9_\\x80-\\xff]+?)_*:_*(.*)$/", $t, $m ) ) {
+                       if ( preg_match( "/^(.+?)_*:_*(.*)$/", $t, $m ) ) {
                                #$p = strtolower( $m[1] );
                                $p = $m[1];
                                $lowerNs = strtolower( $p );
@@ -724,7 +726,12 @@ class Title {
                }
                
                # "." and ".." conflict with the directories of those namesa
-               if ( $r === "." || $r === ".." || strpos( $r, "./" ) !== false ) {
+               if ( strpos( $r, "." ) !== false &&
+                    ( $r === "." || $r === ".." ||
+                      strpos( $r, "./" ) === 0 ||
+                      strpos( $r, "/./" !== false ) ||
+                      strpos( $r, "/../" !== false ) ) )
+               {
                        return false;
                }
 
@@ -935,7 +942,7 @@ class Title {
                        $fname
                );
                
-               RecentChange::notifyMove( $now, $this, $nt, $wgUser, $comment );
+               RecentChange::notifyMoveOverRedirect( $now, $this, $nt, $wgUser, $comment );
 
                # Swap links
                
@@ -1055,7 +1062,7 @@ class Title {
                );
                
                # Record in RC
-               RecentChange::notifyMove( $now, $this, $nt, $wgUser, $comment );
+               RecentChange::notifyMoveToNew( $now, $this, $nt, $wgUser, $comment );
 
                # Purge squid and linkscc as per article creation
                Article::onArticleCreate( $nt );
@@ -1180,7 +1187,7 @@ class Title {
                $parents = array();
                
                # get the parents categories of this title from the database
-               $sql = "SELECT DISTINCT cl_from,cur_namespace,cur_title,cur_id FROM cur,categorylinks
+               $sql = "SELECT DISTINCT cur_id FROM cur,categorylinks
                        WHERE cl_from='$titlekey' AND cl_to=cur_title AND cur_namespace='$cns'
                                ORDER BY cl_sortkey" ;
                $res = wfQuery ( $sql, DB_READ ) ;
@@ -1221,7 +1228,7 @@ class Title {
                        # append the last child.
                        # TODO : We should have a last child unless there is an error in the
                        # "categorylinks" table.
-                       if(isset($lastchild) { $result .= $lastchild; }
+                       if(isset($lastchild)) { $result .= $lastchild; }
                        
                        $result .= "<br/>\n";
                        
@@ -1237,7 +1244,7 @@ class Title {
                                # add it to the stack
                                $stack[$this->getText()] = $tpar->getText();
                                # grab its parents
-                               $result .= $tpar->getAllParentCategories(&$stack);
+                               $result .= $tpar->getAllParentCategories($stack);
                        }
                }