1*b1ff32a1SSzymon Olewniczak<?php 2*b1ff32a1SSzymon Olewniczak 3*b1ff32a1SSzymon Olewniczak// must be run within Dokuwiki 4*b1ff32a1SSzymon Olewniczak 5*b1ff32a1SSzymon Olewniczakif(!defined('DOKU_INC')) die(); 6*b1ff32a1SSzymon Olewniczak 7*b1ff32a1SSzymon Olewniczakclass action_plugin_approve_move extends DokuWiki_Action_Plugin { 8*b1ff32a1SSzymon Olewniczak 9*b1ff32a1SSzymon Olewniczak /** @var helper_plugin_sqlite */ 10*b1ff32a1SSzymon Olewniczak protected $sqlite; 11*b1ff32a1SSzymon Olewniczak 12*b1ff32a1SSzymon Olewniczak /** 13*b1ff32a1SSzymon Olewniczak * @return helper_plugin_sqlite 14*b1ff32a1SSzymon Olewniczak */ 15*b1ff32a1SSzymon Olewniczak protected function sqlite() { 16*b1ff32a1SSzymon Olewniczak if (!$this->sqlite) { 17*b1ff32a1SSzymon Olewniczak /** @var helper_plugin_approve_db $db_helper */ 18*b1ff32a1SSzymon Olewniczak $db_helper = plugin_load('helper', 'approve_db'); 19*b1ff32a1SSzymon Olewniczak $this->sqlite = $db_helper->getDB(); 20*b1ff32a1SSzymon Olewniczak } 21*b1ff32a1SSzymon Olewniczak return $this->sqlite; 22*b1ff32a1SSzymon Olewniczak } 23*b1ff32a1SSzymon Olewniczak 24*b1ff32a1SSzymon Olewniczak /** 25*b1ff32a1SSzymon Olewniczak * Registers a callback function for a given event 26*b1ff32a1SSzymon Olewniczak * 27*b1ff32a1SSzymon Olewniczak * @param Doku_Event_Handler $controller DokuWiki's event controller object 28*b1ff32a1SSzymon Olewniczak * @return void 29*b1ff32a1SSzymon Olewniczak */ 30*b1ff32a1SSzymon Olewniczak public function register(Doku_Event_Handler $controller) { 31*b1ff32a1SSzymon Olewniczak $controller->register_hook('PLUGIN_MOVE_PAGE_RENAME', 'AFTER', $this, 'handle_move', true); 32*b1ff32a1SSzymon Olewniczak } 33*b1ff32a1SSzymon Olewniczak 34*b1ff32a1SSzymon Olewniczak /** 35*b1ff32a1SSzymon Olewniczak * Renames all occurances of a page ID in the database 36*b1ff32a1SSzymon Olewniczak * 37*b1ff32a1SSzymon Olewniczak * @param Doku_Event $event event object by reference 38*b1ff32a1SSzymon Olewniczak * @param bool $ispage is this a page move operation? 39*b1ff32a1SSzymon Olewniczak * @return bool 40*b1ff32a1SSzymon Olewniczak */ 41*b1ff32a1SSzymon Olewniczak public function handle_move(Doku_Event $event, $ispage) { 42*b1ff32a1SSzymon Olewniczak $old = $event->data['src_id']; 43*b1ff32a1SSzymon Olewniczak $new = $event->data['dst_id']; 44*b1ff32a1SSzymon Olewniczak 45*b1ff32a1SSzymon Olewniczak //move revision history 46*b1ff32a1SSzymon Olewniczak $this->sqlite()->query('UPDATE revision SET page=? WHERE page=?', $new, $old); 47*b1ff32a1SSzymon Olewniczak } 48*b1ff32a1SSzymon Olewniczak 49*b1ff32a1SSzymon Olewniczak} 50