>6)+192).chr(($num&63)+128); if ( $num<65536 ) return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128); if ( $num<2097152 ) return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128); return ''; } /** * Called for AJAX watch/unwatch requests. * @param $pagename Prefixed title string for page to watch/unwatch * @param $watch String 'w' to watch, 'u' to unwatch * @return String '' or '' on successful watch or unwatch, * respectively, followed by an HTML message to display in the alert box; or * '' on error */ function wfAjaxWatch($pagename = "", $watch = "") { if(wfReadOnly()) { // redirect to action=(un)watch, which will display the database lock // message return ''; } if('w' !== $watch && 'u' !== $watch) { return ''; } $watch = 'w' === $watch; $title = Title::newFromDBkey($pagename); if(!$title) { // Invalid title return ''; } $article = new Article($title); $watching = $title->userIsWatching(); if($watch) { if(!$watching) { $dbw = wfGetDB(DB_MASTER); $dbw->begin(); $ok = $article->doWatch(); $dbw->commit(); } } else { if($watching) { $dbw = wfGetDB(DB_MASTER); $dbw->begin(); $ok = $article->doUnwatch(); $dbw->commit(); } } // Something stopped the change if( isset($ok) && !$ok ) { return ''; } if( $watch ) { return ''.wfMsgExt( 'addedwatchtext', array( 'parse' ), $title->getPrefixedText() ); } else { return ''.wfMsgExt( 'removedwatchtext', array( 'parse' ), $title->getPrefixedText() ); } }