Hi Platonides
2013/1/15 Platonides Platonides@gmail.com:
I tried to get the content via getArticleID() ... $titleObj=Title::newFromText("Existing page"); $articleID=$titleObj->getArticleID(); Article::newFromID($articleID)->fetchContent(); etc. ... but it returns $articleID=0 although the page exits. With MW 1.18 this approach worked fine, but after upgrade to MW 1.20.2 it does not any more.
It should be working, and it works for me on 1.20.2 Can you provide more details on that $title->getArticleID(); which is not working?
On the http://offene-naturfuehrer.de/web/Spezial:MobileKeyV1 I want to generate a MobileKey for "Lamium (Deutschland)" (the page exists) and the PHP code wants to get the content of page "Unterlippe (Lamiaceae)" (the page exists too) but the PHP code above stops at the step retrieving the articleID. The strange thing is, when I want to generate a MobileKey for "Lamium (Deutschland)" and just print out (1) Title::newFromText("Unterlippe (Lamiaceae)") and (2) Title::newFromText("Lamium (Deutschland)") ... I get only an articleID for (2) not for (1)
Andreas
--- printout of title object for page (1) "Unterlippe (Lamiaceae)"
Title Object ( [mTextform] => Unterlippe (Lamiaceae) [mUrlform] => Unterlippe_(Lamiaceae) [mDbkeyform] => Unterlippe_(Lamiaceae) [mUserCaseDBKey] => Unterlippe_(Lamiaceae) [mNamespace] => 0 [mInterwiki] => [mFragment] => [mArticleID] => 0 [mLatestID] => [mEstimateRevisions:Title:private] => [mRestrictions] => Array ( )
[mOldRestrictions] => [mCascadeRestriction] => [mCascadingRestrictions] => [mRestrictionsExpiry] => Array ( )
[mHasCascadingRestrictions] => [mCascadeSources] => [mRestrictionsLoaded] => [mPrefixedText] => [mTitleProtection] => [mDefaultNamespace] => 0 [mWatched] => [mLength] => -1 [mRedirect] => [mNotificationTimestamp] => Array ( )
[mHasSubpage] => )
--- printout of title object for page (2) "Lamium (Deutschland)" Title Object ( [mTextform] => Lamium (Deutschland) [mUrlform] => Lamium_(Deutschland) [mDbkeyform] => Lamium_(Deutschland) [mUserCaseDBKey] => Lamium_(Deutschland) [mNamespace] => 0 [mInterwiki] => [mFragment] => [mArticleID] => 36 [mLatestID] => [mEstimateRevisions:Title:private] => [mRestrictions] => Array ( )
[mOldRestrictions] => [mCascadeRestriction] => [mCascadingRestrictions] => [mRestrictionsExpiry] => Array ( )
[mHasCascadingRestrictions] => [mCascadeSources] => [mRestrictionsLoaded] => [mPrefixedText] => [mTitleProtection] => [mDefaultNamespace] => 0 [mWatched] => [mLength] => -1 [mRedirect] => [mNotificationTimestamp] => Array ( )
[mHasSubpage] => )
Hi Platonides
(sorry I posted from a wrong Email address, I try again with a proper subject line to get the thread line correct on http://news.gmane.org/gmane.science.linguistics.wikipedia.technical)
2013/1/15 Platonides Platonides@gmail.com:
I tried to get the content via getArticleID() ... $titleObj=Title::newFromText("Existing page"); $articleID=$titleObj->getArticleID(); Article::newFromID($articleID)->fetchContent(); etc. ... but it returns $articleID=0 although the page exits. With MW 1.18 this approach worked fine, but after upgrade to MW 1.20.2 it does not any more.
It should be working, and it works for me on 1.20.2 Can you provide more details on that $title->getArticleID(); which is not working?
On the http://offene-naturfuehrer.de/web/Spezial:MobileKeyV1 I want to generate a MobileKey for "Lamium (Deutschland)" (the page exists) and the PHP code wants to get the content of page "Unterlippe (Lamiaceae)" (the page exists too) but the PHP code above stops at the step retrieving the articleID. The strange thing is, when I want to generate a MobileKey for "Lamium (Deutschland)" and just print out (1) Title::newFromText("Unterlippe (Lamiaceae)") and (2) Title::newFromText("Lamium (Deutschland)") ... I get only an articleID for (2) not for (1)
WikiPage::factory ($titleObj) prints the same articleID data as Title::newFromText(...)
Andreas
--- printout of title object for page (1) "Unterlippe (Lamiaceae)"
Title Object ( [mTextform] => Unterlippe (Lamiaceae) [mUrlform] => Unterlippe_(Lamiaceae) [mDbkeyform] => Unterlippe_(Lamiaceae) [mUserCaseDBKey] => Unterlippe_(Lamiaceae) [mNamespace] => 0 [mInterwiki] => [mFragment] => [mArticleID] => 0 [mLatestID] => [mEstimateRevisions:Title:private] => [mRestrictions] => Array ( )
[mOldRestrictions] => [mCascadeRestriction] => [mCascadingRestrictions] => [mRestrictionsExpiry] => Array ( )
[mHasCascadingRestrictions] => [mCascadeSources] => [mRestrictionsLoaded] => [mPrefixedText] => [mTitleProtection] => [mDefaultNamespace] => 0 [mWatched] => [mLength] => -1 [mRedirect] => [mNotificationTimestamp] => Array ( )
[mHasSubpage] => )
--- printout of title object for page (2) "Lamium (Deutschland)" Title Object ( [mTextform] => Lamium (Deutschland) [mUrlform] => Lamium_(Deutschland) [mDbkeyform] => Lamium_(Deutschland) [mUserCaseDBKey] => Lamium_(Deutschland) [mNamespace] => 0 [mInterwiki] => [mFragment] => [mArticleID] => 36 [mLatestID] => [mEstimateRevisions:Title:private] => [mRestrictions] => Array ( )
[mOldRestrictions] => [mCascadeRestriction] => [mCascadingRestrictions] => [mRestrictionsExpiry] => Array ( )
[mHasCascadingRestrictions] => [mCascadeSources] => [mRestrictionsLoaded] => [mPrefixedText] => [mTitleProtection] => [mDefaultNamespace] => 0 [mWatched] => [mLength] => -1 [mRedirect] => [mNotificationTimestamp] => Array ( )
[mHasSubpage] => )
Hi,
One of Tyler Romeo's suggested approach is to use
Article::newFromTitle($titleObj)
... but it does need a second argument of type IContextSource. I do not know how to get it or how to instantiate it yet. At the moment it does not retrieve the page content as well because of the missing IContextSource ...
Can somebody Maybe Article::newFromTitle($titleObj, IContextSource-something) would
Do I need that IContextSource? I read at Manual:Article.php to use the WikiPage class instead, so maybe at this point I don't have to use IContextSource(?). WikiPage::factory($titleObj) prints the same Title Object structure as Title::newFromText("Existing page but not existing for Title object class");
Does it may have to do with data base update, some of the maintenance scripts? Maybe data in the data base are not entirely correct after upgrading from MW 1.18 to MW 1.20.2? How do I ensure that the data base has correct page data? When I run php ./update.php --conf /path/to/LocalSettings.php all is fine ... any further idea?
Thanks, Andreas
You could try RequestContext::getMain() to get the context source object.
Alex Monk On 16/01/13 16:56, Andreas Plank wrote:
Hi,
One of Tyler Romeo's suggested approach is to use
Article::newFromTitle($titleObj)
... but it does need a second argument of type IContextSource. I do not know how to get it or how to instantiate it yet. At the moment it does not retrieve the page content as well because of the missing IContextSource ...
2013/1/16 Krenair krenair@gmail.com:
You could try RequestContext::getMain() to get the context source object.
Alex Monk
On 16/01/13 16:56, Andreas Plank wrote:
I tried many functions in various classes: RequestContext WikiPage Title Article ... but it is always the same I do not get the raw page content. I believe these functions should work but somehow they do not get the right incoming data. In an earlier post I printed the Title object and it is almost empty, I wonder about that too, might be related?
Maybe it has nothing to do with these functions but with the database? However browsing and editing those pages runs smoothly but my application does not get the related page data. I wonder too, because with MW 1.18 it did work fine.
If I switch on $wgDebugDumpSql there are a lot of queries and also a page query SELECT page_id, page_namespace, page_title, page_restrictions, page_counter, page_is_redirect, page_is_new, page_random, page_touched, page_latest, page_len FROM `page` WHERE page_namespace = 'X' LIMIT N ... So it seems the right query from a quick look.
Has anybody an idea how I can trace and debug the data flow until my app asserts “the page does not exist”?
Andreas
Hi,
thanks for your suggestions, at the end I found it :-)
It was a closed data base connection, that prevented Title::newFrom...-methods to get articleId etc. --- the eval part --- $dbReadOnly2 = wfGetDB(DB_SLAVE); # do some stuff $dbReadOnly2->close();
# use another method that needs data base access will fail -----------
It is because wfGetDB(...); will get the database object as *reference* not as copy (see PHP code of wfGetDB() in file includes/GlobalFunctions.php) and as it is a reference and some other function closes the dabta base connection then there is "silence" ... at least for the db connection
Andreas
2013/1/16 Andreas Plank andreas.plank@web.de:
2013/1/16 Krenair krenair@gmail.com:
You could try RequestContext::getMain() to get the context source object.
Alex Monk
On 16/01/13 16:56, Andreas Plank wrote:
I tried many functions in various classes: RequestContext WikiPage Title Article ... but it is always the same I do not get the raw page content. I believe these functions should work but somehow they do not get the right incoming data. In an earlier post I printed the Title object and it is almost empty, I wonder about that too, might be related?
Maybe it has nothing to do with these functions but with the database? However browsing and editing those pages runs smoothly but my application does not get the related page data. I wonder too, because with MW 1.18 it did work fine.
If I switch on $wgDebugDumpSql there are a lot of queries and also a page query SELECT page_id, page_namespace, page_title, page_restrictions, page_counter, page_is_redirect, page_is_new, page_random, page_touched, page_latest, page_len FROM `page` WHERE page_namespace = 'X' LIMIT N ... So it seems the right query from a quick look.
Has anybody an idea how I can trace and debug the data flow until my app asserts “the page does not exist”?
Andreas
wikitech-l@lists.wikimedia.org