xref: /plugin/approve/action/move.php (revision b1ff32a17baf1beabefd296a982a636d4e4d64b5)
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