After another week or so of work and a little helpful advice from Brion
Vibber, I have MediaWiki 1.10 (modules pulled from the SVN trunk and added
to the 1.93 baseliine) pretty much all working on Microsoft SQL Server 2000.
I won't try to get my stuff merged in until after the 1.10 release passes,
since I suspect the core developers will have their hands full until then.
The problems identified in my 15 March post have been fixed.
In particular, the "pagers" are working. To get this to work, I had to add
three or four lines to the PHP database driver I'm using (ADOdb). By
default, the ADOdb driver does not allow moving backward through a record
set, even though it uses a static, client-side cursor (at least when
connected to SQL Server) perfectly capable of doing do. I also had to wrap
the database query from the IndexPager class (Pager.php) with calls to set
the fetch mode to associative and then back to the default numeric. Unlike
the MySQL driver, ADOdb does not do both at the same time. Almost all of the
MediaWiki PHP code works fine with numeric fetches, but the pagers need
associative fetches.
Interlanguage links are handled by making a change to LocalSettings.php as
suggested by Brion, as is template documentation that's referenced as
{{/doc}}
I discovered that the template processing problems I was trying to debug are
known, and I didn't introduce them. HTML generated by templates is not
always valid, and therefore MediaWiki doesn't correctly produce WikiPedia
articles without HTML tidy. Getting HTML tidy to work on my server was more
frustrating than it had to be, since the external tidy won't work in
conjunction with the MediaWiki as it's currently set up on Windows (tidy and
MediaWiki engage in a deadly embrace) and the API to use the internal tidy
has changed from the time that section of the MediaWiki code was written.
Help pages from
PHP.net weren't as helpful as they could be, since they
mostly document the 4.3 version instead of the 5.1+ version -- and I'm using
a pretty recent PHP release. Fortunately, the 5.1 syntax is reasonably close
to 4.3, albeit now using bona fide classes. It's working.
The tables seem to be mostly behaving themselves now. In particular,
redirects are now being populated, recentchanges being recorded and (as of
today) logging seems to work as it should. This last one took a little
longer, because my logging table lacked a column (log_id) that was missing
from the tables.sql that I used as a baseline -- but that gets referenced in
queries later on. I threw in an IDENTITY column named log_id and all is
well.
Very few changes had to be made outside of the DatabaseADOB (extends
Database) class. Here and there, things were getting over-quoted (i.e.
putting quotes around the result of calling DatabaseADODB::addQuotes) and
the stuff right after the comment:
# This is a hack to work around PHP's flawed invocation of cmd.exe
#
http://news.php.net/php.internals/21796
in the function wfShellExec in GlobalFunctions.php well, that was just wrong
-- must be a PHP 4 thing. I couldn't get Batik or ImageMagick working until
after I fixed that stuff.