[dokuwiki] Re: [Patch] [Upate] XMLRPC listLinks support
- From: Michael Klier <chi@xxxxxxxxxxx>
- To: dokuwiki@xxxxxxxxxxxxx
- Date: Fri, 9 Nov 2007 12:30:46 +0100
Michael Klier wrote:
> Hi everyone,
>
> attached is a patch that adds support for the listLinks() method
> (suggested in the Wiki RPC Interface 2 specs) to DokuWikis xmlrpc
> interface (and another one which fixes a little typo).
UPDATE: In this patch the listLinks() function didn't check the ACLs!
Attached is an updated version of the patch, patched against latest
darcs revision.
Regards,
Chi
--
Michael Klier
mail: chi@xxxxxxxxxxx
www: http://www.chimeric.de
icq: 206179334
jabber: chi@xxxxxxxxxxxxxxxxxx
key: http://downloads.chimeric.de/chi.asc
key-id: 0x8308F551
New patches:
[added XMLRPC linkList()
Michael Klier <chi@xxxxxxxxxxx>**20071109112720] {
hunk ./lib/exe/xmlrpc.php 95
-
hunk ./lib/exe/xmlrpc.php 101
+ $this->addCallback(
+ 'wiki.listLinks',
+ 'this:listLinks',
+ array('struct','string'),
+ 'Lists all links contained in a wiki page'
+ );
hunk ./lib/exe/xmlrpc.php 110
- 'wiki.listLinks'
hunk ./lib/exe/xmlrpc.php 147
- function listBacklinks($id){
+ function listBackLinks($id){
hunk ./lib/exe/xmlrpc.php 179
-
- function putPage($put_id, $put_text, $put_summary='', $put_minor=0,
$put_rev = '', $put_pre = '', $put_suf = '') {
-
+ function putPage($put_id, $put_text, $put_summary='', $put_minor=0,
$put_rev='', $put_pre='', $put_suf='') {
hunk ./lib/exe/xmlrpc.php 185
-
- if (checklock($put_id) !== false) {
-
+ if (checklock($put_id) !== false)
hunk ./lib/exe/xmlrpc.php 188
- }
-
hunk ./lib/exe/xmlrpc.php 189
- if(checkwordblock())
+ if(checkwordblock())
hunk ./lib/exe/xmlrpc.php 192
- // lock the page
-
hunk ./lib/exe/xmlrpc.php 194
- // save it
-
-
saveWikiText($put_id,con($put_pre,$put_text,$put_suf,1),$put_summary,$put_minor);
//use pretty mode for con
-
- // unlock it
+
saveWikiText($put_id,con($put_pre,$put_text,$put_suf,1),$put_summary,$put_minor);
hunk ./lib/exe/xmlrpc.php 199
+ }
+
+ /**
+ * Lists all links contained in a wiki page
+ */
+ function listLinks($id) {
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ return new IXR_Error(1, 'You are not allowed to read this page');
+ }
+ $links = array();
+
+ // resolve page instructions
+ $ins = p_cached_instructions(wikiFN(cleanID($id)));
+
+ // instantiate new Renderer - needed for interwiki links
+ include(DOKU_INC.'inc/parser/xhtml.php');
+ $Renderer = new Doku_Renderer_xhtml();
+ $Renderer->interwiki = getInterwiki();
+
+ // parse parse instructions
+ foreach($ins as $in) {
+ $link = array();
+ switch($in[0]) {
+ case 'internallink':
+ $link['type'] = 'local';
+ $link['page'] = $in[1][0];
+ $link['href'] = wl($in[1][0]);
+ array_push($links,$link);
+ break;
+ case 'externallink':
+ $link['type'] = 'extern';
+ $link['page'] = $in[1][0];
+ $link['href'] = $in[1][0];
+ array_push($links,$link);
+ break;
+ case 'interwikilink':
+ $url = $Renderer->_resolveInterWiki($in[1][2],$in[1][3]);
+ $link['type'] = 'extern';
+ $link['page'] = $url;
+ $link['href'] = $url;
+ array_push($links,$link);
+ break;
+ }
+ }
hunk ./lib/exe/xmlrpc.php 244
+ return $links;
}
Context:
[fix problems if $USERINFO['grps'] is not set
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20071102181850]
[russian language update
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20071102181710]
[utf8_trim bugfix
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20071102181430
Fixes the utf8_trim() function when a charlist is given
]
[TAG develsnap 2007-11-01
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20071101000001]
Patch bundle hash:
994c39d5c6cf08496941e178d5f0583a12bca9a4
Other related posts:
- » [dokuwiki] Re: [Patch] [Upate] XMLRPC listLinks support