Difference between revisions of "Extension:ImageHistoryClear"

From Organic Design wiki
m (Reverted edits by Jack (Talk); changed back to last version by Nad)
m
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
<source lang="php">
 
<?php
 
<?php
 
/**
 
/**
  * ImageHistoryClear extension - A extension made with [http://www.organicdesign.co.nz/Template:Extension Template:Extension] to strip the image history and links from image pages.
+
  * ImageHistoryClear extension - An extension to strip TOC, history and links information from image page views by anonymous users. Made with [http://www.organicdesign.co.nz/Template:Extension Template:Extension].
  *{{php}}{{Category:Extensions|ImageHistoryClear}}{{Category:Jack}}
+
  *
 
  * See http://www.mediawiki.org/wiki/Extension:ImageHistoryClear for installation and usage details
 
  * See http://www.mediawiki.org/wiki/Extension:ImageHistoryClear for installation and usage details
 
  *
 
  *
Line 11: Line 12:
 
  * @licence GNU General Public Licence 2.0 or later
 
  * @licence GNU General Public Licence 2.0 or later
 
  */
 
  */
 +
 
if (!defined('MEDIAWIKI')) die('Not an entry point.');
 
if (!defined('MEDIAWIKI')) die('Not an entry point.');
 
   
 
   
 
define('IMAGEHISTORYCLEAR_VERSION', '1.0.0, 2008-10-21');
 
define('IMAGEHISTORYCLEAR_VERSION', '1.0.0, 2008-10-21');
 
   
 
   
$egImageHistoryClearMagic            = "ImageHistoryClear";
+
$wgExtensionFunctions[] = 'efSetupImageHistoryClear';
$egImageHistoryClearTag              = "IHistoryClear";
 
$wgExtensionFunctions[]       = 'efSetupImageHistoryClear';
 
$wgHooks['LanguageGetMagic'][] = 'efImageHistoryClearLanguageGetMagic';
 
 
 
global $wgRequest,$wgUser,$wgGroupPermissions,$wgHooks;
 
 
 
$title = Title::newFromText($_REQUEST['title']);
 
if (is_object($title) && ($title->getNamespace() == NS_IMAGE) && $wgUser->isAllowed('edit'))
 
$wgHooks['OutputPageBeforeHTML'][] = 'egImageHistoryClear';
 
  
 
$wgExtensionCredits['parserhook'][] = array(
 
$wgExtensionCredits['parserhook'][] = array(
 
'name'        => 'ImageHistoryClear',
 
'name'        => 'ImageHistoryClear',
 
'author'      => '[http://www.organicdesign.co.nz/wiki/User:Jack User:Jack]',
 
'author'      => '[http://www.organicdesign.co.nz/wiki/User:Jack User:Jack]',
'description' => 'A extension made with [http://www.organicdesign.co.nz/Template:Extension Template:Extension] to strip the image history and links from image pages.',
+
'description' => 'An extension to strip TOC, history and links information from image page views by anonymous users. Made with [http://www.organicdesign.co.nz/Template:Extension Template:Extension].',
 
'url'        => 'http://www.organicdesign.co.nz/Extension:ImageHistoryClear',
 
'url'        => 'http://www.organicdesign.co.nz/Extension:ImageHistoryClear',
 
'version'    => IMAGEHISTORYCLEAR_VERSION
 
'version'    => IMAGEHISTORYCLEAR_VERSION
 
);
 
);
 
class ImageHistoryClear {
 
 
/**
 
* Properties
 
*/
 
var $prop1 = 'default value';
 
var $prop2 = 'default value';
 
 
/**
 
* Constructor
 
*/
 
function __construct() {
 
global $wgOut, $wgHooks, $wgParser, $egImageHistoryClearMagic, $egImageHistoryClearTag, $jktext;
 
 
# Add the parser-function
 
$wgParser->setFunctionHook($egImageHistoryClearMagic, array($this, 'magicImageHistoryClear'));
 
 
# Add the tagHook
 
$wgParser->setHook($egImageHistoryClearTag, array($this, 'tagIHistoryClear'));
 
 
$jktext = $wgOut->mBodytext;
 
print_r($jktext);
 
 
}
 
 
/**
 
* Expand the ImageHistoryClear-magic
 
*/
 
function magicImageHistoryClear(&$parser) {
 
global $egImageHistoryClearMagic;
 
# Populate $argv with both named and numeric parameters
 
$argv = array();
 
foreach (func_get_args() as $arg) if (!is_object($arg)) {
 
if (preg_match('/^(.+?)\\s*=\\s*(.+)$/',$arg,$match)) $argv[$match[1]] = $match[2]; else $argv[] = $arg;
 
}
 
 
# Build text of expanded result
 
$args = '';
 
foreach ($argv as $k => $v) $args .= "*'''$k:''' ''$v''\n";
 
        $args =  htmlspecialchars($args);
 
$text = "=== Magic $egImageHistoryClearMagic(): ===\n$args";
 
 
# Return result with available parser flags
 
return array(
 
$text,
 
'found'  => true,
 
'nowiki'  => false,
 
'noparse' => false,
 
'noargs'  => false,
 
'isHTML'  => false
 
);
 
 
}
 
 
/**
 
* Convert the <IHistoryClear> tags to HTML
 
*/
 
function tagIHistoryClear($text,$argv,&$parser) {
 
global $egImageHistoryClearTag;
 
$args = '';
 
foreach ($argv as $k => $v) {
 
$k = htmlspecialchars($k);
 
$v = htmlspecialchars($v);
 
$args .= "<li><b>$k:</b> <i>$v</i></li>\n";
 
}
 
$text =  htmlspecialchars($text);
 
return "<h3>Tag $egImageHistoryClearTag():</h3>\n<ul>$args<li>Content:</b>$text</ul>\n";
 
}
 
 
/**
 
* Needed in some versions to prevent Special:Version from breaking
 
*/
 
function __toString() { return __CLASS__; }
 
}
 
 
   
 
   
 
/**
 
/**
  * Called from $wgExtensionFunctions array when initialising extensions
+
  * Function called from the hook BeforePageDisplay, with a regular expression to replace TOC, history and image information.
 
  */
 
  */
function efSetupImageHistoryClear() {
+
function efImageHistoryClear(&$out) {
global $egImageHistoryClear;
+
$out->mBodytext = preg_replace('%(<ul id="filetoc">.+?</ul>)(.*)(<h2 id="filehistory".+$)%s', '\2', $out->mBodytext);
$egImageHistoryClear = new ImageHistoryClear();
+
return true;
 +
 
}
 
}
 
   
 
   
 
/**
 
/**
  * Needed in MediaWiki >1.8.0 for magic word hooks to work properly
+
  * Setup function specifies a condition for the user being anonymous and the page being an image page
 
  */
 
  */
function efImageHistoryClearLanguageGetMagic(&$magicWords, $langCode = 0) {
+
function efSetupImageHistoryClear() {
global $egImageHistoryClearMagic;
+
global $wgHooks, $wgUser, $wgRequest;
$magicWords[$egImageHistoryClearMagic] = array($langCode, $egImageHistoryClearMagic);
+
$title = Title::newFromText($wgRequest->getText('title'));
return true;
+
if (is_object($title) && $title->getNamespace() == NS_IMAGE && $wgUser->isAnon())
 +
$wgHooks['BeforePageDisplay'][] = 'efImageHistoryClear';
 
}
 
}
 +
</source>
 +
[[Category:Legacy Extensions]]

Latest revision as of 16:40, 20 April 2018

<?php
/**
 * ImageHistoryClear extension - An extension to strip TOC, history and links information from image page views by anonymous users. Made with [http://www.organicdesign.co.nz/Template:Extension Template:Extension].
 *
 * See http://www.mediawiki.org/wiki/Extension:ImageHistoryClear for installation and usage details
 *
 * @package MediaWiki
 * @subpackage Extensions
 * @author [http://www.organicdesign.co.nz/wiki/User:Jack User:Jack]
 * @copyright © 2008 [http://www.organicdesign.co.nz/wiki/User:Jack User:Jack]
 * @licence GNU General Public Licence 2.0 or later
 */

if (!defined('MEDIAWIKI')) die('Not an entry point.');
 
define('IMAGEHISTORYCLEAR_VERSION', '1.0.0, 2008-10-21');
 
$wgExtensionFunctions[] = 'efSetupImageHistoryClear';

$wgExtensionCredits['parserhook'][] = array(
	'name'        => 'ImageHistoryClear',
	'author'      => '[http://www.organicdesign.co.nz/wiki/User:Jack User:Jack]',
	'description' => 'An extension to strip TOC, history and links information from image page views by anonymous users. Made with [http://www.organicdesign.co.nz/Template:Extension Template:Extension].',
	'url'         => 'http://www.organicdesign.co.nz/Extension:ImageHistoryClear',
	'version'     => IMAGEHISTORYCLEAR_VERSION
	);
 
/**
 * Function called from the hook BeforePageDisplay, with a regular expression to replace TOC, history and image information.
 */
function efImageHistoryClear(&$out) {
	$out->mBodytext = preg_replace('%(<ul id="filetoc">.+?</ul>)(.*)(<h2 id="filehistory".+$)%s', '\2', $out->mBodytext);
	return true;
	
}
 
/**
 * Setup function specifies a condition for the user being anonymous and the page being an image page
 */
function efSetupImageHistoryClear() {
	global $wgHooks, $wgUser, $wgRequest;
	$title = Title::newFromText($wgRequest->getText('title'));
	if (is_object($title) && $title->getNamespace() == NS_IMAGE && $wgUser->isAnon()) 
		$wgHooks['BeforePageDisplay'][] = 'efImageHistoryClear';
}