Extension:MagicNoCache/el
From MediaWiki.org
|
MagicNoCache Release status: beta |
|
|---|---|
| Implementation | Page action |
| Hooks used | MagicWordMagicWords |
| 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] Εγκατάσταση
- Αντιγράψτε τον παρακάτω κώδικα σε ένα νέο αρχείο με το όνομα "MagicNoCache.php" στον κατάλογο "extensions"
- Προσθέστε την παρακάτω γραμμή στο τέλος του αρχείου 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; } } ?>