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