I'm trying to follow the instructions for adding a new site. It's not clear to me how to figure out what the file_path should be. In the examples (including the one provided by addSite.php's help flag), they differ from the page_path. Do I just need to mimic the the URL for a file in the File namespace?
Manual talk:Sites table
Appearance
One easy way to build it is to go to Special:Version
page of the wiki and look for the "Script path" in paragraph "Entry point URLs".
That path will look something like /wikifolder
. Then compose the file_path
by concatenating the base url of the wiki (like https://www.somewiki.org
), the Script path and /$1
into something like https://www.somewiki.org/wikifolder/$1
.
The page talks about using a custom script ("Insert wiki family (using Script)"). I have just used the populateSitesTable.php script running it once for each wiki ID, and it successfully populated the sites table for each language wiki with a list of default wiki sites. Now I think I need to add my own wiki to this list in order to be able to use the "add link" feature for any given page. Where would I use the suggested script? Do I create a php file somewhere? Or add this within another script such as addSite.php
?
$sites = [];
foreach ( [ 'en', 'fr' ] as $langCode ) {
$site = new MediaWikiSite();
$site->setGlobalId( $langCode . 'mywiki' );
$site->setGroup( 'mywiki' );
$site->setLanguageCode( $langCode );
$site->addInterwikiId( $langCode );
$site->addNavigationId( $langCode );
$site->setPath( MediaWikiSite::PATH_PAGE, "http://$langCode.mywiki.org/wiki/$1" );
$site->setPath( MediaWikiSite::PATH_FILE, "http://$langCode.mywiki.org/w/$1" );
$sites[] = $site;
}
$sitesTable = SiteSQLStore::newInstance();
$sitesTable->clear(); // This will remove all previous entries from the table. Remove this call if you want to keep them.
$sitesTable->saveSites( $sites );
Obviously switching out "mywiki" with my own wiki namespace.
I believe I have succeeded in completing this task. I created a file "addMyWikiFarm.php" in the maintenance folder with these contents:
1 <?php
2 class AddMyWikiFarm extends Maintenance {
3
4 public function __construct() {
5 $this->addDescription( 'Add my Custom Wiki Farm definitions into the sites table.' );
6
7 parent::__construct();
8 }
9
10 /**
11 * Imports the sites of my Wiki Farm
12 * into the sites table of this MediaWiki installation.
13 * @return bool
14 */
15 public function execute() {
16 $siteStore = MediaWikiServices::getInstance()->getSiteStore();
17 if ( method_exists( $siteStore, 'reset' ) ) {
18 // @phan-suppress-next-line PhanUndeclaredMethod
19 $siteStore->reset();
20 }
21
22 $sites = [];
23 foreach ( [ 'en', 'it' ] as $langCode ) {
24 $site = new MediaWikiSite();
25 if ( $siteStore->getSite( $langCode . 'mywikisite' ) !== null ) {
26 echo "Site with global id {$langCode}mywikisite already exists.\n";
27 return false;
28 }
29 $site->setGlobalId( $langCode . 'mywikisite' );
30 $site->setGroup( 'mywikifarm' );
31 $site->setLanguageCode( $langCode );
32 $site->addInterwikiId( $langCode );
33 $site->addNavigationId( $langCode );
34 $site->setPath( MediaWikiSite::PATH_PAGE, "https://pathto.mywikisitepages.com/$langCode/$1" );
35 $site->setPath( MediaWikiSite::PATH_FILE, "https://pathto.mywikisitescripts.com/$langCode/$1" );
36 $sites[] = $site;
37 }
38
39 $siteStore->saveSites( $sites );
40 if ( method_exists( $siteStore, 'reset' ) ) {
41 // @phan-suppress-next-line PhanUndeclaredMethod
42 $siteStore->reset();
43 }
44
45 echo "Done.\n";
46 }
47 }
48
49 $maintClass = AddMyWikiFarm::class;
50 require_once RUN_MAINTENANCE_IF_MAIN;
Then I ran php maintenance/addmyWikiFarm.php --wiki WIKIID from the command line for each of my language wikis and the wikifarm language sites do seem to have been added to the sites table of these wikis. Am still trying to figure out how to get the "add link" on the sidebar to work for the interwiki...
Is language code like en/ja/zh already defined in Mediawiki?
I tried to add Sites in following formate with addSite.php. This site do appear in Site table. However, there were nothing under site_language column. What's the correct way to insert type="language"?
<site type="mediawiki">
<globalid>enmoegirl</globalid>
<localid type="interwiki">enmoegirl</localid>
<localid type="language">en</localid>
<group>moegirlpedia</group>
<path type="link">https://en.moegirl.org/</path>
</site>
Hi,
I'd like to know what I have to enter into the site_data field. Currently my table looks like this:
a:1:{s:5:"paths";a:2:{s:9:"file_path";s:5:"/w/$1";s:9:"page_path";s:8:"/wiki/$1";}}
Is there some documentation out there on how to populate the site_data field?
Thanks and cheers,
P.S.: Looks like the number after "s:" seems to be the amount of characters followed, for example "file_path" has 9 characters.
There are no older topics