1*1794c5faSDominik Eckelmann<?php 2*1794c5faSDominik Eckelmann 3*1794c5faSDominik Eckelmannif(!defined('DOKU_INC')) die(); 4*1794c5faSDominik Eckelmann 5*1794c5faSDominik Eckelmannclass action_plugin_publish_start extends DokuWiki_Action_Plugin { 6*1794c5faSDominik Eckelmann 7*1794c5faSDominik Eckelmann private $hlp; 8*1794c5faSDominik Eckelmann 9*1794c5faSDominik Eckelmann function __construct() { 10*1794c5faSDominik Eckelmann $this->hlp = plugin_load('helper','publish'); 11*1794c5faSDominik Eckelmann } 12*1794c5faSDominik Eckelmann 13*1794c5faSDominik Eckelmann function register(&$controller) { 14*1794c5faSDominik Eckelmann $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'handle_start', array()); 15*1794c5faSDominik Eckelmann } 16*1794c5faSDominik Eckelmann 17*1794c5faSDominik Eckelmann function handle_start(&$event, $param) { 18*1794c5faSDominik Eckelmann global $ACT; 19*1794c5faSDominik Eckelmann global $REV; 20*1794c5faSDominik Eckelmann global $INFO; 21*1794c5faSDominik Eckelmann global $ID; 22*1794c5faSDominik Eckelmann 23*1794c5faSDominik Eckelmann if($ACT != 'show') { return; } 24*1794c5faSDominik Eckelmann 25*1794c5faSDominik Eckelmann if($REV != '') { return; } 26*1794c5faSDominik Eckelmann 27*1794c5faSDominik Eckelmann # apply to readers only 28*1794c5faSDominik Eckelmann if($INFO['perm'] != AUTH_READ) { return; } 29*1794c5faSDominik Eckelmann 30*1794c5faSDominik Eckelmann # Check for override token 31*1794c5faSDominik Eckelmann global $_GET; 32*1794c5faSDominik Eckelmann if($_GET['force_rev']) { return; } 33*1794c5faSDominik Eckelmann 34*1794c5faSDominik Eckelmann # Only apply to appropriate namespaces 35*1794c5faSDominik Eckelmann if(!$this->hlp->in_namespace($this->getConf('apr_namespaces'), $ID)) { return; } 36*1794c5faSDominik Eckelmann 37*1794c5faSDominik Eckelmann # Find latest rev 38*1794c5faSDominik Eckelmann $meta = p_get_metadata($ID); 39*1794c5faSDominik Eckelmann if($meta['approval'][$meta['last_change']['date']]) { return; } //REV=0 *is* approved 40*1794c5faSDominik Eckelmann 41*1794c5faSDominik Eckelmann if(!$meta['approval']) { return; } //no approvals 42*1794c5faSDominik Eckelmann 43*1794c5faSDominik Eckelmann # Get list of approvals 44*1794c5faSDominik Eckelmann $all = array_keys($meta['approval']); 45*1794c5faSDominik Eckelmann if(count($all) == 0) { return; } //no approvals 46*1794c5faSDominik Eckelmann 47*1794c5faSDominik Eckelmann $REV = $all[count($all)-1]; 48*1794c5faSDominik Eckelmann } 49*1794c5faSDominik Eckelmann 50*1794c5faSDominik Eckelmann} 51