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