Extension talk:CategoryWatch
That would be a very useful tool for those who work in Wikipedias along a field. It is not easy to keep in touch with new articles. So keep up the work, I hope to see that tool in action soon! Regards, Denis Barthel 19:43, 5 September 2008 (UTC)
Notification message in 1.15.1 [edit]
Hey folks. I seem to have CategoryWatch working nicely in 1.15.1. However, the message sent to a user watching the category contains only the standard notification for article watching (ie. whatever is in 'MediaWiki:Enotif body'). Could someone drop a hint regarding what needs to change to get category move-in/out details sent? Is there something in Enotif_body that needs to be there to trigger it? - Lucas Billett 17:00, 9 December 2009 (UTC)
- My bad. I had removed the $NEWPAGE element from enotif, which is what the extension strtr()'s on. - Lucas Billett 19:56, 9 December 2009 (UTC)
MW 1.14? [edit]
Doesn't seem to work in MW 1.14?
Also would it be possible to have a $wgCategoryWatchNotifyOnlyAdditions? So the user is only notified about new pages being added to the category not Page edits, moves or deletions etc.? Maybe a prefs setting is better: "[_] When I watch a category page only notify me about new additons." --Subfader 22:32, 15 March 2009 (UTC)
- yeah good idea, we're using this extension a lot and I've been getting a bit annoyed with notifications of articles moving out of my watched categories since this never requires any action from me. It doesn't currently notify users when articles in the category are edited though. I'll check out the 1.14 problem asap as we've just upgraded our main wiki to 1.14. --Nad 10:07, 16 March 2009 (UTC)
- It works. I got emails for 2 articles being added to the category. The mails were not very helpful (plain text, nothing linked). --Subfader 13:42, 16 March 2009 (UTC)
How to use extension [edit]
Just a question I am hoping you can answer (probably a stupid question)... but...
I know how to add a page to my watchlist. But with this extension properly installed, how does it know to email me if any page is created that has the same category name as the page that I put on my watch list. Is there somewhere that I specify that ALL pages which are labelled as CategoryX, for instance, and have been changed or added that I get an email.... or is just putting 1 page with that category on my watch list automatically put that category on my watch list. Thanks
Salutation Wrong [edit]
I noticed that the source code was modified on Apr 24 09:48:21 2009 [49810] to add $WATCHINGUSERNAME in the emailed message.
$WATCHINGUSERNAME was assigned $name. Should it be assigned $watchingUser->getName(). $name is the person who edited the page not the person who is watching the page.
I also modified my version of the code so that an email is not sent if the editor and watcher are the same person. This mimics how the normal watch works.
Wolcott 16:26, 27 May 2009 (UTC)
Watching changes to all pages in a category [edit]
Does anybody know if it is possible to be notified of all changes to pages in a particular category.
Current implementation tells you when pages are added/moved, but I would be interested in an extension that lets you know when any page in a category is updated, to easily keep up with all pages in a category. Could this functionality be added? or are there other extensions covering this?
--Carter040 12:53, 14 September 2009 (UTC)
- Update: Have looked at the code and made a modification so the above mentioned is realized. However I would like to know how to get permission or agreement on incorporating this here in the repository. The behaviour is currently implemented so it can be controlled by a global variable..
--Carter040 12:17, 15 September 2009 (UTC)
I have also made this modification (changed the rest of the behavior a bit for our purposes, so it's not just a clean update) but in addition, added notification for everything that happens in subcategories of the category. The code snippets below should be relatively easy to implement for users familiar with php. It has a deadswitch for infinite categories, not particularly elegant.
/** * Recursively find all parents of the given categories * * @param $catarray array * @return void */ function findCategoryParents ($catarray) { $this->i++; if ($this->i == 200) { return; } $dbr = wfGetDB( DB_SLAVE ); $cl = $dbr->tableName( 'categorylinks' ); foreach ($catarray as $catname) { $this->allparents[] = $catname; $id = $this->getCategoryArticleId($catname); if (is_numeric($id)) { $res = $dbr->select( $cl, 'cl_to', "cl_from = $id", __METHOD__, array( 'ORDER BY' => 'cl_sortkey' ) ); while ( $row = $dbr->fetchRow( $res ) ) { $this->allparents[] = $row[0]; $parents = $this->findCategoryParents(array($row[0])); if (is_array($parents)) { $this->allparents = array_merge($this->allparents, $parents); } } $dbr->freeResult( $res ); } } $this->allparents = array_unique($this->allparents); } /** * Load page ID of one category * * @param $catname string * @return integer */ function getCategoryArticleId ($catname) { $dbr = wfGetDB( DB_SLAVE ); $cl = $dbr->tableName( 'page' ); $res = $dbr->select( $cl, 'page_id', "page_title = '$catname'", __METHOD__); $row = $dbr->fetchRow( $res ); $dbr->freeResult( $res ); return $row[0]; }
and in function onArticleSaveComplete
$this->i = 0; $this->findCategoryParents($this->after); ## For each active parent category, send the mail foreach ( $this->allparents as $cat ) { $title = Title::newFromText( $cat, NS_CATEGORY ); $message = wfMsg( 'categorywatch-catchange', $page, $this->friendlyCat( $cat ) ); $this->notifyWatchers( $title, $user, $message, $summary, $medit ); }
and of course you need
$messages['en'] = array( 'categorywatch-catchange' => 'changed $1'
--Cm 11:55, 29 October 2009 (UTC)
Subject, No Subject.. [edit]
This extension is fantastic and useful. I use the extension for our events mailing list, so that our mailing list has got an user (admin user) with watchlist the category:event. I used this extension since mediawiki 1.13; now I'm using mediawiki 1.15.1 release. It is writing very well so I'm added some custom msgs into CategoryWatch.i18n.php and I'm changed two lines with others into CategoryWatch.php:
$subject = wfMsg( 'categorywatch-emailsubject', $page ); $body = wfMsgForContent( 'enotif_body' );
changed with:
0. $array = array ("{{Event","title=","description=","responsable=","}}");
1. $event = preg_split("/\|/",$summary);
2. $summary = str_replace("|others=", " and ", $summary);
3. $summary = str_replace("|", "", $summary);
4. $summary = str_replace($array, "", $summary);
5. $event_s = str_replace("title=", "", $event[1]);
6. $summary = str_replace($event_s, "", $summary);
7. if (!$event_s) $event_s = "New event";
8. $subject = wfMsg( 'categorywatch-emailsubject', $event_s );
9. $body = wfMsg( 'categorywatch-enotif_body' );
Results are:
- when we create new event (new page into category:event), we receive email with subject "New event" and string $event_s is removed from $summary
- only one admin has got category:event into watchlist, and this admin receive email with subject $event_s and string $event_s is removed from $summary
- if I modify line 8 with $subject = wfMsg( "categorywatch-emailsubject", $page );, we receive always email with subject $page and string $event_s is removed from $summary
Why is $event_s not empty until line 6 and after is it empty? Can you help me about it? -- Bilardi 08:55, 21 October 2009 (UTC)
Using CategoryWatch [edit]
Please explain this part. Thanks. Bennylin 10:42, 6 April 2010 (UTC)
Error with MediaWiki 1.15.3 [edit]
Tried the current development trunk and got this error:
Detected bug in an extension! Hook CategoryWatch::onArticleSaveComplete failed to return a value; should return true to continue hook processing or false to abort.
--217.6.32.154 15:35, 25 May 2010 (UTC) Artur
I see the same error on a 1.5.1 wiki (and PHP 5.3.2). It occurs when saving a page that places it into a watched category. Alexkozak 03:54, 15 July 2010 (UTC)
- Check in your Special:Version page that you have the most recent version of CategoryWatch, version 1.1.1, as the current code returns true in that hook function --118.90.5.202 04:43, 15 July 2010 (UTC)
I am at Version r48218 because I checked it out of subversion. Should I not do that? Alexkozak 04:38, 21 July 2010 (UTC)- Ok I can confirm this error is still present on 1.2.0 Alexkozak 00:48, 22 July 2010 (UTC)
- I've done some digging through the code, and I can get some functionality if I change line 89 to:
function onArticleSaveComplete( &$article, &$user, $text, $summary, $medit )However, the changes don't get added to the watchlist, and the only thing that appears to work is an email when something is added to the category. Alexkozak 01:16, 22 July 2010 (UTC)
- I've done some digging through the code, and I can get some functionality if I change line 89 to:
Error in 1.15.1 as well [edit]
Software Configuration:
MediaWiki 1.15.1 PHP 5.3.2-1ubuntu4.2 (apache2handler) MySQL 5.1.41-3ubuntu12.3
When saving a page I get the following errors :-(
Detected bug in an extension! Hook CategoryWatch::onArticleSaveComplete failed to return a value; should return true to continue hook processing or false to abort.
Backtrace:
#0 /data/prod/webapps/mediawiki-1.15.1/includes/Article.php(1779): wfRunHooks('ArticleSaveComp...', Array)
#1 /data/prod/webapps/mediawiki-1.15.1/includes/Article.php(1472): Article->doEdit('Artikel ist ALT...', '', 114)
#2 /data/prod/webapps/mediawiki-1.15.1/includes/EditPage.php(1027): Article->updateArticle('Artikel ist ALT...', '', false, true, true, '')
#3 /data/prod/webapps/mediawiki-1.15.1/includes/EditPage.php(2483): EditPage->internalAttemptSave(false, true)
#4 /data/prod/webapps/mediawiki-1.15.1/includes/EditPage.php(449): EditPage->attemptSave()
#5 /data/prod/webapps/mediawiki-1.15.1/includes/EditPage.php(340): EditPage->edit()
#6 /data/prod/webapps/mediawiki-1.15.1/includes/Wiki.php(510): EditPage->submit()
#7 /data/prod/webapps/mediawiki-1.15.1/includes/Wiki.php(63): MediaWiki->performAction(Object(OutputPage), Object(Article), Object(Title), Object(User), Object(WebRequest))
#8 /data/prod/webapps/mediawiki-1.15.1/index.php(116): MediaWiki->initialize(Object(Title), Object(Article), Object(OutputPage), Object(User), Object(WebRequest))
#9 {main}
-- MMX 10:57, 23 July 2010 (UTC)
Configuration example for $wgCategoryWatchUseAutoCat [edit]
Hi
Sorry, but I don't understand usage of $wgCategoryWatchUseAutoCat.
Is there a example somewhere which describes this more detailed?
If I'd like my users to automatically get notified about changes of pages in category:Projects and pages in category:Foundations, what do I have to configure for this?
Thanks for any advice
Daniel Steiner 18:15, 22 June 2010 (UTC)
- If you set that global to true, then it means that all users are automatically watching the category named "Automatically watched by USERNAME", e.g. if you were logged in to the wiki as User:Foo, then you would automatically be notified of any changes to articles in Category:Automatically watched by Foo. The format of the category name is defined in the system message categorywatch-autocat. --118.90.5.202 04:53, 15 July 2010 (UTC)
- I think that if you added all the pages you want to watch (all pages in Projects and Foundations categories) it would consider the named user as watching that page, and enable enotif and the like. So really, it's the same as watching a page, however now you can invoke it with a template! So instead of added each page to a category, add a template to those pages that adds it to the category you want AND the 'Automatically watched by user' category.
- At least, thats how I interpret the instructions. I've tried my damnedest to get it to work in 1.16, but with little success. It would be an awesome feature - Lbillett 19:42, 6 April 2011 (UTC)
Latest version (for MW 1.15)? [edit]
When I download the latest version for MW 1.15, I get version 1.0.0, 2009-03-22. This is strange because the article page shows the latest version as 1.2.0 (2010-07-15). When I attempt to get the development version, I get an SVN error.
So I have two questions:
- How can I get the latest version (1.2.0)?
- Does this version include all the fixes in #Watching changes to all pages in a category, above? I've got Carter040's changes locally, but have they been included into the final version?
--Robinson Weijman 08:43, 22 July 2010 (UTC)
Hello,
I can confirm the download problem. When I download the extension through the ExtensionDistributor for MW 1.15.x, I get the following tar.gz file: CategoryWatch-MW1.15-r69579.tar.gz This file however includes old files: define( 'CATEGORYWATCH_VERSION', '1.0.0, 2009-03-22' );
Would be great if that dowload problem could be fixed! --80.123.158.221 09:09, 16 August 2010 (UTC)
Does not work in 1.16.0 [edit]
Software:
MediaWiki 1.16.0 PHP 5.3.2-1ubuntu4.2 (apache2handler) MySQL 5.1.41-3ubuntu12.3 CategoryWatch (Version 1.1.0, 2009-04-21) User:Nad
While saving an articel , I get the following errors:
Detected bug in an extension! Hook CategoryWatch::onArticleSaveComplete failed to return a value; should return true to continue hook processing or false to abort.
Backtrace:
#0 /data/dev/webapps/mediawiki-1.16.0/includes/Article.php(2099): wfRunHooks('ArticleSaveComp...', Array)
#1 /data/dev/webapps/mediawiki-1.16.0/includes/Article.php(1791): Article->doEdit('Ich h??tte da w...', '', 114)
#2 /data/dev/webapps/mediawiki-1.16.0/includes/EditPage.php(1047): Article->updateArticle('Ich h??tte da w...', '', false, true, true, '')
#3 /data/dev/webapps/mediawiki-1.16.0/includes/EditPage.php(2552): EditPage->internalAttemptSave(false, true)
#4 /data/dev/webapps/mediawiki-1.16.0/includes/EditPage.php(389): EditPage->attemptSave()
#5 /data/dev/webapps/mediawiki-1.16.0/includes/EditPage.php(271): EditPage->edit()
#6 /data/dev/webapps/mediawiki-1.16.0/includes/Wiki.php(553): EditPage->submit()
#7 /data/dev/webapps/mediawiki-1.16.0/includes/Wiki.php(70): MediaWiki->performAction(Object(OutputPage), Object(Article), Object(Title), Object(User), Object(WebRequest))
#8 /data/dev/webapps/mediawiki-1.16.0/index.php(117): MediaWiki->performRequestForTitle(Object(Title), Object(Article), Object(OutputPage), Object(User), Object(WebRequest))
#9 {main}
Now I updated the extension to version 1.2 vom 15. July, still the same :-(
Please help. thanks.
--MMX 14:29, 3 August 2010 (UTC)
- Are you absolutely sure you've updated the extension? check the version in the Special:Version page, I can't see any way for the ArticleSaveComplete hook to not be returning a value in version 1.2. --Nad 23:28, 3 August 2010 (UTC)
-
- I see the problem (I had this as well). It is due to PHP 5.3 (MediaWiki currently runs on 5.2). The solution is to change this:
-
function onArticleSaveComplete( &$article, &$user, &$text, &$summary, &$medit, &$watchthis, &$sectionanchor, &$flags, &$revision ) {
-
- into this:
-
function onArticleSaveComplete( &$article, &$user, $text, $summary, $medit, $watchthis, $sectionanchor, &$flags, $revision ) {
-
- HTH --Robinson Weijman 12:33, 4 August 2010 (UTC)
- You mean not using the reference operator on some of those args? ok I've tried doing that, but I can't test the results since the problem doesn't occur for me, try the new version 1.2.1 and see if it fixes it... --Nad 08:26, 5 August 2010 (UTC)
- HTH --Robinson Weijman 12:33, 4 August 2010 (UTC)
-
-
-
- Hi Nad - yes, correct about the reference operator. Did you include Carter040's changes (above) in the latest version? --Robinson Weijman 09:43, 5 August 2010 (UTC)
-
-
Hardcoded "WikiAdmin" mail sender [edit]
CategoryWatch sends out mails with the hardcoded sender name "WikiAdmin" and the mail address from $wgPasswordSender:
$adminAddress = new MailAddress( $wgPasswordSender, 'WikiAdmin' );
Mediawiki has a new config variable $wgPasswordSenderName since today (SVN trunk r76234, seebugzilla:25728for details). Please use this variable instead of hardcoded "WikiAdmin" in future versions of CategoryWatch. --Cboltz 16:46, 7 November 2010 (UTC)
- Done in rev:76253. Max Semenik 16:54, 7 November 2010 (UTC)
No more notification when page is removed [edit]
Hi,
I just noticed that the notification for the removal of a page from a category has been commented out/removed in recent CategoryWatch versions. http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/CategoryWatch/CategoryWatch.php?r1=49744&r2=48655 See Line 106 und 118.
Is there a special reason for that?
Thank you, Christoph
- I noticed this too. Had to paste the 2nd loop code back in to get it to work again. Should this maybe be changed into an option of sorts? - Lucas Billett 19:15, 6 April 2011 (UTC)
Works MediaWiki 1.16.2 / CategoryWatch 1.2.1 [edit]
CaliVW78 08:39, 22 March 2011 (UTC)
Link in the notification email? [edit]
Would it be possible for the notification email to contain a link to the newly added/removed page? That would come in very handy. Thank you! --Nadyro 11:52, 6 July 2011 (UTC)
Fatal Error when adding multiple categories to a page [edit]
When tagging a page with more than one category with this extension enabled, it results in the following error on MW 1.16.5:
Fatal error: Allowed memory size of [xxxxxx] bytes exhausted (tried to allocate 523800 bytes) in /htdocs/w/includes/db/LoadBalancer.php on line 443
I'm working on finding a solution, but has anyone else run across this and found a fix?
--Jlemley 17:13, 16 January 2012 (UTC)
- Answer: The function findCategoryParents calls itself. It looks like it attempts to prevent infinite loops with the below code, but the "return" is not ending the loop, it's just returning back to itself and moving on with the next loop:
$this->i++; if ($this->i == 200) { return; }
- I moved the latter part of this code into the while loop later in this function and changed "return" to "continue", as follows:
... while ( $row = $dbr->fetchRow( $res ) ) { $this->allparents[] = $row[0]; if ($this->i == 200) { continue; } $parents = $this->findCategoryParents(array($row[0])); ...
- This seems to resolve the issue.
- --Jlemley 19:29, 16 January 2012 (UTC)
message removed from I18n?! [edit]
Heiya, message "Categorywatch-emailbody" somehow vanished from the I18n file. However, a lot of other messages do not make any sense without it. Cheers --[[kgh]] (talk) 20:05, 21 August 2012 (UTC)
- I don't think that message ever existed, it's always used enotif_body which is the message used by the normal watchlist wmail notification --Nad (talk) 12:52, 12 September 2012 (UTC)
Watching Talk Pages [edit]
Have been using this extension for a while and noticed that editors are not being notified of creation, addition, or edits to talk pages for the categories they watch. Can this be added or do I perhaps have something configured incorrectly? We are using Liquid Threads, however, we tested in both LT and just editing the talk page itself. Both failed to send a notification.
--Thanks! Jaime Lemley