]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - SOAP.php
The new methods (almost)
[SourceForge/phpwiki.git] / SOAP.php
1 <?php
2 /**
3  * SOAP server
4  * Taken from http://www.wlug.org.nz/archive/
5  *
6  * Please see http://phpwiki.sourceforge.net/phpwiki/PhpWiki.wdsl
7  * for the wdsl discussion.
8  * Todo: 
9  *  Installer helper which changes server url of the default PhpWiki.wdsl
10  */
11
12 define ("WIKI_SOAP", "true");
13
14 require_once('lib/prepend.php');
15 include_once("index.php");
16
17 //require_once('lib/stdlib.php');
18 require_once('lib/nusoap/nusoap.php');
19 require_once('lib/WikiDB.php');
20 require_once('lib/config.php');
21
22 $server = new soap_server;
23
24 $server->register('getPageContent');
25 $server->register('getPageRevision');
26 $server->register('getCurrentRevision');
27 $server->register('getPageMeta');
28 //$server->register('doSavePage');
29 $server->register('getAllPagenames');
30 $server->register('getBackLinks');
31 $server->register('doTitleSearch');
32 $server->register('doFullTextSearch');
33
34 function doSavePage($pagename,$content,$credentials) {
35   $dbi = WikiDB::open($GLOBALS['DBParams']);
36   $page = $dbi->getPage($pagename);
37   $current = $page->getCurrentRevision();
38   $meta = $current->_data;
39   $meta['summary'] = sprintf(_("SOAP Request")); // from
40   $version = $current->getVersion();
41   //todo: check credentials
42   return $page->save($content, $version + 1, $meta);
43 }
44
45 function getPageContent($pagename) {
46   $dbi = WikiDB::open($GLOBALS['DBParams']);
47   $page = $dbi->getPage($pagename);
48   $rev = $page->getCurrentRevision();
49   $text = $rev->getPackedContent();
50   return $text;
51 }
52 function getPageRevision($pagename,$revision) {
53   $dbi = WikiDB::open($GLOBALS['DBParams']);
54   $page = $dbi->getPage($pagename);
55   $rev = $page->getCurrentRevision();
56   $text = $rev->getPackedContent();
57   return $text;
58 }
59 function getCurrentRevision($pagename) {
60   $dbi = WikiDB::open($GLOBALS['DBParams']);
61   $page = $dbi->getPage($pagename);
62   $rev = $page->getCurrentRevision();
63   $version = $current->getVersion();
64   return (double)$version;
65 }
66 function getPageMeta($pagename) {
67   $dbi = WikiDB::open($GLOBALS['DBParams']);
68   $page = $dbi->getPage($pagename);
69   $rev = $page->getCurrentRevision();
70   $meta = $rev->_data;
71   //todo: reformat the meta hash
72   return $meta;
73 }
74 function getAllPagenames() {
75   $dbi = WikiDB::open($GLOBALS['DBParams']);
76   $page_iter = $dbi->getAllPages();
77   $pages = array();
78   while ($page = $page_iter->next()) {
79     $pages[] = array('pagename' => $page->_pagename);
80   }
81   return $pages;
82 }
83 function getBacklinks($pagename) {
84   $dbi = WikiDB::open($GLOBALS['DBParams']);
85   $backend = &$dbi->_backend;
86   $result =  $backend->get_links($pagename);
87   $page_iter = new WikiDB_PageIterator($dbi, $result);
88   $pages = array();
89   while ($page = $page_iter->next()) {
90     $pages[] = array('pagename' => $page->_pagename);
91   }
92   return $pages;
93 }
94 function doTitleSearch($query) {
95   $dbi = WikiDB::open($GLOBALS['DBParams']);
96   $page_iter = $dbi->titleSearch($query);
97   $pages = array();
98   while ($page = $page_iter->next()) {
99     $pages[] = array('pagename' => $page->_pagename);
100   }
101   return $pages;
102 }
103 function doFullTextSearch($query) {
104   $dbi = WikiDB::open($GLOBALS['DBParams']);
105   $page_iter = $dbi->fullSearch($query);
106   $pages = array();
107   while ($page = $page_iter->next()) {
108     $pages[] = array('pagename' => $page->_pagename);
109   }
110   return $pages;
111 }
112
113
114 $server->service($GLOBALS['HTTP_RAW_POST_DATA']);
115
116 // (c-file-style: "gnu")
117 // Local Variables:
118 // mode: php
119 // tab-width: 8
120 // c-basic-offset: 4
121 // c-hanging-comment-ender-p: nil
122 // indent-tabs-mode: nil
123 // End:   
124 ?>