Skip to content

Commit 304e283

Browse files
authored
Merge pull request #290 from michitux/remoteapi
Remote API
2 parents 7f53b6c + c408662 commit 304e283

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

remote.php

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<?php
2+
3+
/**
4+
* DokuWiki Plugin move (Remote Component)
5+
*
6+
* @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
7+
* @author Claus-Justus Heine <[email protected]>
8+
*/
9+
class remote_plugin_move extends DokuWiki_Remote_Plugin
10+
{
11+
/**
12+
* Rename/move a given page
13+
*
14+
* @param string $fromId The original page ID
15+
* @param string $toId The new page ID
16+
* @return true Always true when no error occured
17+
* @throws \dokuwiki\Remote\RemoteException when renaming fails
18+
*/
19+
public function renamePage(string $fromId, string $toId)
20+
{
21+
$fromId = cleanID($fromId);
22+
$toId = cleanID($toId);
23+
24+
/** @var helper_plugin_move_op $MoveOperator */
25+
$MoveOperator = plugin_load('helper', 'move_op');
26+
27+
global $MSG;
28+
$MSG = [];
29+
if (!$MoveOperator->movePage($fromId, $toId)) {
30+
throw $this->msgToException($MSG);
31+
}
32+
33+
return true;
34+
}
35+
36+
/**
37+
* Rename/move a given media file
38+
*
39+
* @param string $fromId The original media ID
40+
* @param string $toId The new media ID
41+
* @return true Always true when no error occured
42+
* @throws \dokuwiki\Remote\RemoteException when renaming fails
43+
*/
44+
public function renameMedia(string $fromId, string $toId)
45+
{
46+
$fromId = cleanID($fromId);
47+
$toId = cleanID($toId);
48+
49+
/** @var helper_plugin_move_op $MoveOperator */
50+
$MoveOperator = plugin_load('helper', 'move_op');
51+
52+
global $MSG;
53+
$MSG = [];
54+
if (!$MoveOperator->moveMedia($fromId, $toId)) {
55+
throw $this->msgToException($MSG);
56+
}
57+
58+
return true;
59+
}
60+
61+
/**
62+
* Get an exception for the first error message found in the DokuWiki message array.
63+
*
64+
* Ideally the move operation should throw an exception, but currently only a return code is available.
65+
*
66+
* @param array $messages The DokuWiki message array
67+
* @return \dokuwiki\Remote\RemoteException
68+
*/
69+
protected function msgToException($messages)
70+
{
71+
foreach ($messages as $msg) {
72+
if ($msg['lvl'] === -1) {
73+
// error found return it
74+
return new \dokuwiki\Remote\RemoteException($msg['msg'], 100);
75+
}
76+
}
77+
// If we reach this point, no error was found
78+
return new \dokuwiki\Remote\RemoteException('Unknown error', 100);
79+
}
80+
}

0 commit comments

Comments
 (0)