Extension:MagicNoCache/el

From MediaWiki.org

Jump to: navigation, search
MediaWiki Extension
MagicNoCache

Release status: beta

Implementation Page action
Hooks used MagicWordMagicWords

MagicWordwgVariableIDs
LanguageGetMagic
ParserAfterStrip

Description Disables caching for a page
Author(s) Kimon Andreou (Kimon talk)
Version 1.0.0 (2007-10-29)
MediaWiki Tested on 1.10
License GPL
Download See below

[edit] Περιγραφή

Η επέκταση αυτή δημιουργεί τη νέα "μαγική λέξη" __NOCACHE__ και απενεργοποιεί την μνήμη cache για όποια σελίδα στην οποία βρίσκει τη λέξη αυτή.

Η επέκταση θα προσπαθήσει να απενεργοποιήσει τη μνήμη cache της σελίδας καλώντας την εντολή disableCache() του αντικειμένου Parser και επίσης την εντολή enableClientCache() του αντικειμένου OutputPage ($wgOut)

Έγραψα την επέκταση αυτή γιατί έψαχνα για ένα τρόπο με τον οποίο να μπορώ να σιγουρέψω πως σεγκεκριμές σελίδες θα έχουν πάντα τις νεότερες αλλαγές επειδή ανανεώνονται πολύ συχνα.

[edit] Εγκατάσταση

  1. Αντιγράψτε τον παρακάτω κώδικα σε ένα νέο αρχείο με το όνομα "MagicNoCache.php" στον κατάλογο "extensions"
  2. Προσθέστε την παρακάτω γραμμή στο τέλος του αρχείου LocalSettings.php/el:
    require_once( "$IP/extensions/MagicNoCache.php" );
    

[edit] Κώδικας

<?php
#Extension to allow editors to disable caching on select pages
#by using the magic word __NOCACHE__
 
# @addtogroup Extensions
# @author Kimon Andreou
# @copyright 2007 Kimon Andreou
# @license GPL General Public License 2.0 or later
 
 
#Check to see if we're being called as an extension or directly
if ( !defined( 'MEDIAWIKI' ) ) {
        die( 'This file is a MediaWiki extension, it is not a valid entry point' );
}
 
#register ourselves with Special:Version
$wgExtensionCredits['parserhook'][] = array(
  'name' => 'MagicNoCache',
  'url' => 'http://www.mediawiki/wiki/Extension:MagicNoCache',
  'author' => 'Kimon Andreou',
  'description' => 'Adds a NOCACHE magic word to disable caching of certain pages.',
);
 
#decalre var to be used for hooks
$NoCache = new NoCache();
 
#register hooks
$wgHooks['MagicWordMagicWords'][] = array($NoCache, 'addMagicWord');
$wgHooks['MagicWordwgVariableIDs'][] = array($NoCache, 'addMagicWordId');
$wgHooks['LanguageGetMagic'][] = array($NoCache, 'addMagicWordLanguage');
$wgHooks['ParserAfterStrip'][] = array($NoCache, 'checkForMagicWord');
 
#extension class
class NoCache
{
  #constructor - empty
  function NoCache() {}
 
  #register the new magic word with the system
  function addMagicWord(&$magicWords) {
    $magicWords[] = 'MAG_NOCACHE';
    return true;
  }
 
  #add the id
  function addMagicWordId(&$magicWords) {
    $magicWords[] = MAG_NOCACHE;
  }
 
  #set the magic word for the various languages - English is default
  #todo: add more languages
  function addMagicWordLanguage(&$magicWords, $langCode) {
    switch($langCode) {
    default:
      $magicWords[MAG_NOCACHE] = array(0, '__NOCACHE__');
    }
    return true;
  }
 
  #ok, check to see if we have the magic word in the article
  function checkForMagicWord(&$parser, &$text, &$strip_state) {
    global $wgOut;
    $mw = MagicWord::get('MAG_NOCACHE');
 
    #woohoo! we do! - no remove the word from the text
    if (!in_array($action, array('edit', 'submit')) && $mw->matchAndRemove($text)) {
      $parser->disableCache();
      $wgOut->enableClientCache(false);
    }
 
    return true;
  }
}
 
?>
Personal tools