For almost a week now I have not made the ArticleSave hook works. Has anyone done this before? Please help!!!
Problem: I would like to insert into the ArticleSave hook a simple php function (that does nothing but returns true) as following:
function myFunction() { return true; }
Background: I need to collect and compile some statistics of all posts and display them to a special page. The most natural way is when the Save Page button is hit, a php function (myFunction) will do the work and after that resume back to saving of the current page as normal. I have posted this problem here twice before, Erik Moeller has helped me to analyze the problem and guided me to read /docs/hooks.doc. I understand (I think so.) the concept, but have not been able to implemented. The above problem is the most reduced version of what I would like to do. I need to be over that hump before I can do anything else. Please help by giving me a step by step instructions. Please!!!
ngungo
Hello,
I understand your frustration. But, as far as I can tell, and I've been members of this kind of communities, that's not the way to get answers. First of all, you have to describe your question really clearly. Unless you do so not many people will say that they didn't understand what you're asking for. You'll get nothing instead.
And second, you have to show that you spent some effort trying to solve the problem yourself. Without this nobody will be willing to write code for you while all you do is ask and wait. You should try to understand how the code works, then ask specific smaller questions.
And third, I've never seen that begging for help works.
And last, these are not the definitive rules, these are some of my observations and I don't always follow them either.
ngungo wrote:
For almost a week now I have not made the ArticleSave hook works. Has anyone done this before? Please help!!!
Problem: I would like to insert into the ArticleSave hook a simple php function (that does nothing but returns true) as following:
function myFunction() { return true; }
Background: I need to collect and compile some statistics of all posts and display them to a special page. The most natural way is when the Save Page button is hit, a php function (myFunction) will do the work and after that resume back to saving of the current page as normal. I have posted this problem here twice before, Erik Moeller has helped me to analyze the problem and guided me to read /docs/hooks.doc. I understand (I think so.) the concept, but have not been able to implemented. The above problem is the most reduced version of what I would like to do. I need to be over that hump before I can do anything else. Please help by giving me a step by step instructions. Please!!!
ngungo _______________________________________________ MediaWiki-l mailing list MediaWiki-l@Wikimedia.org http://mail.wikipedia.org/mailman/listinfo/mediawiki-l
Hi Muzaffer,
Thanks for the advice. I really sound desperate and pitty huh!!! I don't how to reduce my problem simpler than I have stated:
Problem: I would like to insert into the ArticleSave hook a simple php function (that does nothing but returns true) as following:
function myFunction() { return true; }
I also included the background:
Background: I need to collect and compile some statistics of all posts and display them to a special page. The most natural way is when the Save Page button is hit, a php function (myFunction) will do the work and after that resume back to saving of the current page as normal. I have
posted
this problem here twice before, Erik Moeller has helped me to analyze the problem and guided me to read /docs/hooks.doc. I understand (I
think
so.) the concept, but have not been able to implemented. The above problem is the most reduced version of what I would like to do. I need to be over that hump before I can do anything else. Please help by giving me a step by step instructions. Please!!!
I am new here, this is my first time. I've been back and for with Erik and proposed what I should do (I also implemented that unsuccessfully as following), but haven heard from him for two days. I guess he is busy. I forgot to include what we have discussed:
Hi Erik,
doc/hooks.doc is really helpful. It provides me the theory of the hooks mechanism. For implementaion I need to learn more. Here's my understanding about the specific ArticleSave hook.
1. I saw ArticleSave has been hooked twice in the function editForm like:
if (wfRunHooks('ArticleSave', $this->mArticle, $wgUser, $this->textbox1, $this->summary, $this->minoredit, $this->watchthis, NULL)) { ... ... }
2. I have to resister the hook in DefaultSettings.php with like this:
/** * Global list of hooks. * Add a hook by doing: * $wgHooks['event_name'][] = $function; * or: * $wgHooks['event_name'][] = array($function, $data); * or: * $wgHooks['event_name'][] = array($object, 'method'); */ $wgHooks = array(); $wgHooks['ArticleSave'][] = 'myFunction'; // new
3. The function will be:
function myFunction() { // Call function Article::updateArticle // (to post this statistics on a Special:TextStatistics page). return true; }
4. Where do I write the above 'myFunction'? On what class? Article (or editPage)?
-----Original Message----- From: mediawiki-l-bounces@Wikimedia.org [mailto:mediawiki-l-bounces@Wikimedia.org] On Behalf Of Muzaffer Ozakca Sent: Wednesday, March 02, 2005 12:54 PM To: MediaWiki announcements and site admin list Subject: Re: [Mediawiki-l] ArticleSave hook
Hello,
I understand your frustration. But, as far as I can tell, and I've been members of this kind of communities, that's not the way to get answers. First of all, you have to describe your question really clearly. Unless you do so not many people will say that they didn't understand what you're asking for. You'll get nothing instead.
And second, you have to show that you spent some effort trying to solve the problem yourself. Without this nobody will be willing to write code for you while all you do is ask and wait. You should try to understand how the code works, then ask specific smaller questions.
And third, I've never seen that begging for help works.
And last, these are not the definitive rules, these are some of my observations and I don't always follow them either.
ngungo wrote: [snip]
- I have to resister the hook in DefaultSettings.php with like this:
You should never edit DefaultSettings.php unless you're hacking up the main software itself; avoiding that is why we have extension hooks in the first place. Put customizations in LocalSettings.php.
function myFunction() { // Call function Article::updateArticle // (to post this statistics on a Special:TextStatistics page). return true; }
This function won't actually do anything, obviously, as it consists only of a comment and a true return. It won't even produce any evidence that it's being run unless you're stepping line by line in a debugger; how are you checking whether or not it's running successfully? What's the problem that you're posting about?
- Where do I write the above 'myFunction'? On what class? Article (or
editPage)?
In your own file, which you can include from LocalSettings.php. The purpose of hooks is to allow adding in some functions *without* changing the core code.
I tried putting this into my test REL1_4 installation's LocalSettings.php:
$wgHooks['ArticleSave'][] = 'myFunction'; // new function myFunction() { die("Testing!"); }
When I try to save, the script dies and prints "Testing!" as expected, showing clearly that the hook is run.
-- brion vibber (brion @ pobox.com)
By making a dummy function that returns true, I think ngungo misunderstands the use of hooks.
To paraphrase Brion (correct me if I'm wrong), hook functions must have side-effects if they are to be useful. Their return value is discarded.
For example, an ArticleSave hook might determine if an article had certain dynamic content tags, and then mark the article in such a way that it would not be cached in the future. (To tie two threads together... :-)
On 2 Mar 2005, at 13:50, Brion Vibber wrote:
ngungo wrote: [snip]
- I have to resister the hook in DefaultSettings.php with like this:
You should never edit DefaultSettings.php unless you're hacking up the main software itself; avoiding that is why we have extension hooks in the first place. Put customizations in LocalSettings.php.
function myFunction() { // Call function Article::updateArticle // (to post this statistics on a Special:TextStatistics page). return true; }
This function won't actually do anything, obviously, as it consists only of a comment and a true return. It won't even produce any evidence that it's being run unless you're stepping line by line in a debugger; how are you checking whether or not it's running successfully? What's the problem that you're posting about?
- Where do I write the above 'myFunction'? On what class? Article (or
editPage)?
In your own file, which you can include from LocalSettings.php. The purpose of hooks is to allow adding in some functions *without* changing the core code.
I tried putting this into my test REL1_4 installation's LocalSettings.php:
$wgHooks['ArticleSave'][] = 'myFunction'; // new function myFunction() { die("Testing!"); }
When I try to save, the script dies and prints "Testing!" as expected, showing clearly that the hook is run.
-- brion vibber (brion @ pobox.com) _______________________________________________ MediaWiki-l mailing list MediaWiki-l@Wikimedia.org http://mail.wikipedia.org/mailman/listinfo/mediawiki-l
:::: News is what powerful people don’t want you to hear; everything else is just publicity. -- Bill Moyers :::: Jan Steinman http://www.Bytesmiths.com/Van
At 3/2/2005 11:03 PM, Jan Steinman wrote:
By making a dummy function that returns true, I think ngungo misunderstands the use of hooks.
To paraphrase Brion (correct me if I'm wrong), hook functions must have side-effects if they are to be useful. Their return value is discarded.
For example, an ArticleSave hook might determine if an article had certain dynamic content tags, and then mark the article in such a way that it would not be cached in the future. (To tie two threads together... :-)
I did not know that, thanks for the tip :)
I grepped for wgHook in 1.3.10, and could not find it. Is it in 1.4 only ? Let me download that... Oh I see, 1.4 indeed. So you guys added the command-event/observer design pattern, that's neat.
Is is still time to request specific events for 1.4 ? I'm trying to force a specific skin to be used for specific pages (I know it's evil, but trust me on this one). No way to do it with the current extension mechanism. I assume it's in OutputPage::output(), around $sk = $wgUser->getSkin(); ? Could you eventually add a hook at the beginning and end of OutputPage::output() ?
We have implemented command/observer (i.e. event/hooks) in our C++ products a while back, and here is my 2 cents about it: it's pretty powerful, but people who are not directly involved in the main source code had difficulties finding them, since they are typically spread all around the code. External developers would not know what could be done, what could be "observed", who would invoke events, who would listen to them, etc. I would just suggest you make sure your documentation (i.e. hooks.doc) is up-to-date and in-sync. A long time ago I wrote a script to do that automatically on a nightly basis, i.e. create a specific page documenting who invokes events (and where), and (optionally) who listens to them (i.e. who installs hooks, it helps).
This is actually even more important because of the way you implemented the pattern: it seems the event/hook signature is not "frozen": each event/hook can have a different number of arguments attached to it. So unless I'm wrong, any change made to an event/hook signature in the MediaWiki code will break people's hooks. In C++, we "avoided" that problem by passing a void* (that you would cast to whatever, int*, float*, object*, etc).
-- Sebastien Barre
On Thu, 03 Mar 2005 11:53:28 +0100, Sebastien BARRE sebastien.barre@kitware.com wrote:
Is is still time to request specific events for 1.4 ? I'm trying to force a specific skin to be used for specific pages (I know it's evil, but trust me on this one). No way to do it with the current extension mechanism. I assume it's in OutputPage::output(), around $sk = $wgUser->getSkin(); ? Could you eventually add a hook at the beginning and end of OutputPage::output() ?
Note that the skin is stored as a member of the User object, and "got" from there whenever it's needed (i.e. all over the place). So you couldn't just change the code in one place where it's retrieved, you'd have to change it in User::getSkin itself (which seemingly loads the option on first request), or override the member variable in some other way (and do it very early on in the code, so that other things haven't already used the 'wrong' one). But maybe that latter option is what you're trying to do already.
This is actually even more important because of the way you implemented the pattern: it seems the event/hook signature is not "frozen": each event/hook can have a different number of arguments attached to it. So unless I'm wrong, any change made to an event/hook signature in the MediaWiki code will break people's hooks. In C++, we "avoided" that problem by passing a void* (that you would cast to whatever, int*, float*, object*, etc).
I thought that when I first heard of the hooks system. Wouldn't it be better to pass an associative array, so that the number and order of arguments could be varied with reasonable safety? (The order being irrelevant, and new or obsolete ones being ignorable if you didn't actually need them). AIUI, associative arrays are pretty basic data in PHP, what with all arrays being associative by nature, etc...
At 3/3/2005 03:02 PM, Rowan Collins wrote:
Note that the skin is stored as a member of the User object, and "got" from there whenever it's needed (i.e. all over the place). So you couldn't just change the code in one place where it's retrieved, you'd have to change it in User::getSkin itself (which seemingly loads the option on first request), or override the member variable in some other way
You got me, that's what I was planning to do :) Save it somewhere, override it, then restore it. Evil, but it's a small website. I thought OutputPage::output() would be the right place to do it, but you are right, I just grepped for ->getSkin(), and it's scary how many times it is invoked. I would have to test exactly where a hook would solve my problem, but feel free to put one in ::output() already, I'm pretty sure it would be useful. Or is 1.4 already released ?
This is actually even more important because of the way you implemented the pattern: it seems the event/hook signature is not "frozen": each event/hook can have a different number of arguments attached to it. So unless I'm wrong, any change made to an event/hook signature in the MediaWiki code will break people's hooks. In C++, we "avoided" that problem by passing a void* (that you would cast to whatever, int*, float*, object*, etc).
I thought that when I first heard of the hooks system. Wouldn't it be better to pass an associative array,
You are right, I did not think about it, associate arrays would have been nice. Did you guy freeze that feature already ?
-- Sebastien Barre
Sebastien BARRE wrote:
At 3/3/2005 03:02 PM, Rowan Collins wrote:
You got me, that's what I was planning to do :) Save it somewhere, override it, then restore it. Evil, but it's a small website. I thought OutputPage::output() would be the right place to do it, but you are right, I just grepped for ->getSkin(), and it's scary how many times it is invoked. I would have to test exactly where a hook would solve my problem, but feel free to put one in ::output() already, I'm pretty sure it would be useful. Or is 1.4 already released ?
Sebastian,
I might be totally wrong but why not put the call to the hook mechanism in getSkin() function if you want quick and dirty fix? :)
I got it now. Thanks everyone. I can sleep tonight!!!
ngungo
-----Original Message----- From: mediawiki-l-bounces@Wikimedia.org [mailto:mediawiki-l-bounces@Wikimedia.org] On Behalf Of Brion Vibber Sent: Wednesday, March 02, 2005 3:50 PM To: MediaWiki announcements and site admin list Subject: Re: [Mediawiki-l] ArticleSave hook
ngungo wrote: [snip]
- I have to resister the hook in DefaultSettings.php with like this:
You should never edit DefaultSettings.php unless you're hacking up the main software itself; avoiding that is why we have extension hooks in the first place. Put customizations in LocalSettings.php.
function myFunction() { // Call function Article::updateArticle // (to post this statistics on a Special:TextStatistics page). return true; }
This function won't actually do anything, obviously, as it consists only of a comment and a true return. It won't even produce any evidence that it's being run unless you're stepping line by line in a debugger; how are you checking whether or not it's running successfully? What's the problem that you're posting about?
- Where do I write the above 'myFunction'? On what class? Article (or
editPage)?
In your own file, which you can include from LocalSettings.php. The purpose of hooks is to allow adding in some functions *without* changing the core code.
I tried putting this into my test REL1_4 installation's LocalSettings.php:
$wgHooks['ArticleSave'][] = 'myFunction'; // new function myFunction() { die("Testing!"); }
When I try to save, the script dies and prints "Testing!" as expected, showing clearly that the hook is run.
-- brion vibber (brion @ pobox.com)
brion wrote:
I tried putting this into my test REL1_4 installation's LocalSettings.php:
$wgHooks['ArticleSave'][] = 'myFunction'; // new function myFunction() { die("Testing!"); }
When I try to save, the script dies and prints "Testing!" as expected, showing clearly that the hook is run.
Hello brion,
I did exactly as you said here and the result is the same as you said (proof of the hook is running). Next, I want to see without the die("Testing!") statement. Something is wrong. It never comes back to the Display state after the Save Page was hit. It stays on Edit state all the time.
I use MediaWiki 1.4rc1, PHP 4.3.10, MySQL 4.0.22
On Thu, 3 Mar 2005 08:14:52 -0600, ngungo ngungo@56degrees.com wrote:
I did exactly as you said here and the result is the same as you said (proof of the hook is running). Next, I want to see without the die("Testing!") statement. Something is wrong. It never comes back to the Display state after the Save Page was hit. It stays on Edit state all the time.
What return value did you give your function? According to docs/hooks.doc:
<< Hooks can return three possible values: * true: the hook has operated successfully * "some string": an error occurred; processing should stop and the error should be shown to the user * false: the hook has successfully done the work necessary and the calling function should skip
The last result would be for cases where the hook function replaces the main functionality.
Note that if you didn't explicitly return anything, it will implicitly return "NULL", which I think will evaluate to false, and thus cause the function to "skip". [See comments on http://uk.php.net/manual/en/functions.returning-values.php]
Yes, Rowan! You are 100% correct. I tested them all and the result is as expected. Thanks a lot.
What return value did you give your function? According to docs/hooks.doc:
<< Hooks can return three possible values: * true: the hook has operated successfully * "some string": an error occurred; processing should stop and the error should be shown to the user * false: the hook has successfully done the work necessary and the calling function should skip
The last result would be for cases where the hook function replaces the main functionality.
Note that if you didn't explicitly return anything, it will implicitly return "NULL", which I think will evaluate to false, and thus cause the function to "skip". [See comments on http://uk.php.net/manual/en/functions.returning-values.php]
In the section Events and parameters of hooks.doc (for ArticleSave) there is a list of parameters:
'ArticleSave': before an article is saved $article: the article (object) being saved $user: the user (object) saving the article $text: the new article text $summary: the article summary (comment) $isminor: minor flag $iswatch: watch flag $section: section #
My question is how do I make use of these parameters in myFunction()? Or how to declare them before using them? Let's say for example parameter $text, I tried: die($text); it did not show anything.
Thanks, ngungo
Background: ================== In LocalSettings.php, I inserted:
require_once('extensions/myExtension.php'); $wgHooks['ArticleSave'][] = 'myFunction';
in extension directory I have a file myExtension.php as following:
<?php function myFunction() { return true; } ?>
On Sat, 5 Mar 2005 09:41:14 -0600, ngungo ngungo@56degrees.com wrote:
My question is how do I make use of these parameters in myFunction()? Or how to declare them before using them? Let's say for example parameter $text, I tried: die($text); it did not show anything.
You'll need to declare your function as having the appropriate parameters (and in the right order). So:
function myFunction($article, $user, $text, $summary, $isminor, $iswatch, $section) { /* your code here */ }
By the way, the best way of checking that code is doing what you expect is probably to set $wgDebugLogFile to somewhere the software can write its log messages, and then use wfDebug().
I stick my name or something in the debug message, like: wfDebug("-- IMSoP: text received is $text --" ); That way, I can run a command like tail -f logfile | grep "IMSoP" to watch nothing but my debug messages, as they are output.
1.
function myFunction($article, $user, $text, $summary, $isminor, $iswatch, $section) { /* your code here */ }
I put the parameters in correct order, it works fine (with $text, I haven't tried others yet, especially the object $article where I am most interested in), but when I altered the value of $text, it would not change as the outcome of the save. I understand this since probably the formal parameters are in-type parameter (I am an C# programmer, learning PHP now).
So the question is how do I alter the outcome of the parameters and pass back to the calling routine (in this case, the function editForm of EditPage.php)?
2.
I stick my name or something in the debug message, like: wfDebug("-- IMSoP: text received is $text --" ); That way, I can run a command like tail -f logfile | grep "IMSoP" to watch nothing but my debug messages, as they are output.
# In the LocalSettings.php, I set: $wgDebugLogFile = "$wgScriptPath/logfile"; (also tried $wgDebugLogFile = "$wgScriptPath/";)
then tried it out, in both cases it could not find the file: tail: logfile: No such file or directory
Thanks, ngungo
-----Original Message----- From: mediawiki-l-bounces@Wikimedia.org [mailto:mediawiki-l-bounces@Wikimedia.org] On Behalf Of Rowan Collins Sent: Saturday, March 05, 2005 9:58 AM To: MediaWiki announcements and site admin list Subject: Re: [Mediawiki-l] ArticleSave hook
On Sat, 5 Mar 2005 09:41:14 -0600, ngungo ngungo@56degrees.com wrote:
My question is how do I make use of these parameters in myFunction()?
Or
how to declare them before using them? Let's say for example parameter $text, I tried: die($text); it did not show anything.
You'll need to declare your function as having the appropriate parameters (and in the right order). So:
function myFunction($article, $user, $text, $summary, $isminor, $iswatch, $section) { /* your code here */ }
http://d0om.fnal.gov/d0admin/doctaur/dtdocs/p-langs/web_prog_bookshelf/php/c...
(provided by google)
section 3.4.2, passing params by reference
You don't pass params back to the calling function, you get a reference instead of a value (should be similar in C#).
ngungo wrote:
function myFunction($article, $user, $text, $summary, $isminor, $iswatch, $section) { /* your code here */ }
I put the parameters in correct order, it works fine (with $text, I haven't tried others yet, especially the object $article where I am most interested in), but when I altered the value of $text, it would not change as the outcome of the save. I understand this since probably the formal parameters are in-type parameter (I am an C# programmer, learning PHP now).
So the question is how do I alter the outcome of the parameters and pass back to the calling routine (in this case, the function editForm of EditPage.php)?
I stick my name or something in the debug message, like: wfDebug("-- IMSoP: text received is $text --" ); That way, I can run a command like tail -f logfile | grep "IMSoP" to watch nothing but my debug messages, as they are output.
# In the LocalSettings.php, I set: $wgDebugLogFile = "$wgScriptPath/logfile"; (also tried $wgDebugLogFile = "$wgScriptPath/";)
then tried it out, in both cases it could not find the file: tail: logfile: No such file or directory
Thanks, ngungo
-----Original Message----- From: mediawiki-l-bounces@Wikimedia.org [mailto:mediawiki-l-bounces@Wikimedia.org] On Behalf Of Rowan Collins Sent: Saturday, March 05, 2005 9:58 AM To: MediaWiki announcements and site admin list Subject: Re: [Mediawiki-l] ArticleSave hook
On Sat, 5 Mar 2005 09:41:14 -0600, ngungo ngungo@56degrees.com wrote:
My question is how do I make use of these parameters in myFunction()?
Or
how to declare them before using them? Let's say for example parameter $text, I tried: die($text); it did not show anything.
You'll need to declare your function as having the appropriate parameters (and in the right order). So:
function myFunction($article, $user, $text, $summary, $isminor, $iswatch, $section) { /* your code here */ }
MediaWiki-l mailing list MediaWiki-l@Wikimedia.org http://mail.wikipedia.org/mailman/listinfo/mediawiki-l
Hi again,
I think now I have an idea about what you're asking. I never used hooks before. From what I can tell by looking at hooks.doc, you should (by convention) probably put your hook function in an extension file under the extension directory. Then you should add a line to LocalSettings.php
require_once('extensions/yourextension.php');
Although I didn't have time to read hooks.doc in full, it's one of the most extensive documentation I've ever seen for Mediawiki :)
Read on and try different ways, I suggest.
ngungo wrote:
Hi Muzaffer,
Thanks for the advice. I really sound desperate and pitty huh!!! I don't how to reduce my problem simpler than I have stated:
Problem: I would like to insert into the ArticleSave hook a simple php function (that does nothing but returns true) as following:
function myFunction() { return true; }
I also included the background:
Background: I need to collect and compile some statistics of all posts and display them to a special page. The most natural way is when the Save Page button is hit, a php function (myFunction) will do the work and after that resume back to saving of the current page as normal. I have
posted
this problem here twice before, Erik Moeller has helped me to analyze the problem and guided me to read /docs/hooks.doc. I understand (I
think
so.) the concept, but have not been able to implemented. The above problem is the most reduced version of what I would like to do. I need to be over that hump before I can do anything else. Please help by giving me a step by step instructions. Please!!!
I am new here, this is my first time. I've been back and for with Erik and proposed what I should do (I also implemented that unsuccessfully as following), but haven heard from him for two days. I guess he is busy. I forgot to include what we have discussed:
Hi Erik,
doc/hooks.doc is really helpful. It provides me the theory of the hooks mechanism. For implementaion I need to learn more. Here's my understanding about the specific ArticleSave hook.
- I saw ArticleSave has been hooked twice in the function editForm
like:
if (wfRunHooks('ArticleSave', $this->mArticle, $wgUser, $this->textbox1, $this->summary, $this->minoredit, $this->watchthis, NULL)) { ... ... }
- I have to resister the hook in DefaultSettings.php with like this:
/**
- Global list of hooks.
- Add a hook by doing:
$wgHooks['event_name'][] = $function;
- or:
$wgHooks['event_name'][] = array($function, $data);
- or:
$wgHooks['event_name'][] = array($object, 'method');
*/
$wgHooks = array(); $wgHooks['ArticleSave'][] = 'myFunction'; // new
- The function will be:
function myFunction() { // Call function Article::updateArticle // (to post this statistics on a Special:TextStatistics page). return true; }
- Where do I write the above 'myFunction'? On what class? Article (or
editPage)?
-----Original Message----- From: mediawiki-l-bounces@Wikimedia.org [mailto:mediawiki-l-bounces@Wikimedia.org] On Behalf Of Muzaffer Ozakca Sent: Wednesday, March 02, 2005 12:54 PM To: MediaWiki announcements and site admin list Subject: Re: [Mediawiki-l] ArticleSave hook
Hello,
I understand your frustration. But, as far as I can tell, and I've been members of this kind of communities, that's not the way to get answers. First of all, you have to describe your question really clearly. Unless you do so not many people will say that they didn't understand what you're asking for. You'll get nothing instead.
And second, you have to show that you spent some effort trying to solve the problem yourself. Without this nobody will be willing to write code for you while all you do is ask and wait. You should try to understand how the code works, then ask specific smaller questions.
And third, I've never seen that begging for help works.
And last, these are not the definitive rules, these are some of my observations and I don't always follow them either.
MediaWiki-l mailing list MediaWiki-l@Wikimedia.org http://mail.wikipedia.org/mailman/listinfo/mediawiki-l
mediawiki-l@lists.wikimedia.org