diff options
Diffstat (limited to 'includes/AjaxFunctions.php')
-rw-r--r-- | includes/AjaxFunctions.php | 85 |
1 files changed, 14 insertions, 71 deletions
diff --git a/includes/AjaxFunctions.php b/includes/AjaxFunctions.php index e3180e0a..8e5de31b 100644 --- a/includes/AjaxFunctions.php +++ b/includes/AjaxFunctions.php @@ -1,5 +1,7 @@ <?php /** + * Handler functions for Ajax requests + * * @file * @ingroup Ajax */ @@ -28,6 +30,7 @@ function js_unescape( $source, $iconv_to = 'UTF-8' ) { if ( $charAt == '%' ) { $pos++; $charAt = substr ( $source, $pos, 1 ); + if ( $charAt == 'u' ) { // we got a unicode character $pos++; @@ -48,7 +51,7 @@ function js_unescape( $source, $iconv_to = 'UTF-8' ) { } if ( $iconv_to != "UTF-8" ) { - $decodedStr = iconv( "UTF-8", $iconv_to, $decodedStr ); + $decodedStr = iconv( "utf-8", $iconv_to, $decodedStr ); } return $decodedStr; @@ -62,84 +65,23 @@ function js_unescape( $source, $iconv_to = 'UTF-8' ) { * @return utf8char */ function code2utf( $num ) { - if ( $num < 128 ) + if ( $num < 128 ) { return chr( $num ); - if ( $num < 2048 ) - return chr( ( $num >> 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 '<w#>' or '<u#>' on successful watch or unwatch, - * respectively, followed by an HTML message to display in the alert box; or - * '<err#>' on error - */ -function wfAjaxWatch( $pagename = "", $watch = "" ) { - if ( wfReadOnly() ) { - // redirect to action=(un)watch, which will display the database lock - // message - return '<err#>'; } - if ( 'w' !== $watch && 'u' !== $watch ) { - return '<err#>'; + if ( $num < 2048 ) { + return chr( ( $num >> 6 ) + 192 ) . chr( ( $num&63 ) + 128 ); } - $watch = 'w' === $watch; - $title = Title::newFromDBkey( $pagename ); - if ( !$title ) { - // Invalid title - return '<err#>'; + if ( $num < 65536 ) { + return chr( ( $num >> 12 ) + 224 ) . chr( ( ( $num >> 6 )&63 ) + 128 ) . chr( ( $num&63 ) + 128 ); } - $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 '<err#>'; - } - if ( $watch ) { - return '<w#>' . wfMsgExt( 'addedwatchtext', array( 'parse' ), $title->getPrefixedText() ); - } else { - return '<u#>' . wfMsgExt( 'removedwatchtext', array( 'parse' ), $title->getPrefixedText() ); + if ( $num < 2097152 ) { + return chr( ( $num >> 18 ) + 240 ) . chr( ( ( $num >> 12 )&63 ) + 128 ) . chr( ( ( $num >> 6 )&63 ) + 128 ) . chr( ( $num&63 ) + 128 ); } -} - -/** - * Called in some places (currently just extensions) - * to get the thumbnail URL for a given file at a given resolution. - */ -function wfAjaxGetThumbnailUrl( $file, $width, $height ) { - $file = wfFindFile( $file ); - - if ( !$file || !$file->exists() ) - return null; - - $url = $file->getThumbnail( $width, $height )->url; - return $url; + return ''; } /** @@ -149,8 +91,9 @@ function wfAjaxGetThumbnailUrl( $file, $width, $height ) { function wfAjaxGetFileUrl( $file ) { $file = wfFindFile( $file ); - if ( !$file || !$file->exists() ) + if ( !$file || !$file->exists() ) { return null; + } $url = $file->getUrl(); |