| 
							- <?php
 - 
 - namespace dokuwiki\Remote;
 - 
 - use dokuwiki\Utf8\PhpString;
 - use IXR\DataType\Base64;
 - use IXR\DataType\Date;
 - 
 - /**
 -  * Provides wrappers for the API calls as they existed in API Version 11
 -  *
 -  * No guarantees are made about the exact compatibility of the return values.
 -  *
 -  * @deprecated
 -  */
 - class LegacyApiCore extends ApiCore
 - {
 -     /** @inheritdoc */
 -     public function getMethods()
 -     {
 -         $methods = parent::getMethods();
 - 
 -         return array_merge(
 -             $methods,
 -             [
 -                 'dokuwiki.getVersion' => new ApiCall([$this, 'legacyGetVersion'], 'legacy'),
 -                 'dokuwiki.login' => (new ApiCall([$this, 'legacyLogin'], 'legacy'))->setPublic(),
 -                 'dokuwiki.logoff' => new ApiCall([$this, 'legacyLogoff'], 'legacy'),
 -                 'dokuwiki.getPagelist' => new ApiCall([$this, 'legacyGetPagelist'], 'legacy'),
 -                 'dokuwiki.search' => new ApiCall([$this, 'legacySearch'], 'legacy'),
 -                 'dokuwiki.getTime' => new ApiCall([$this, 'legacyGetTime'], 'legacy'),
 -                 'dokuwiki.setLocks' => new ApiCall([$this, 'legacySetLocks'], 'legacy'),
 -                 'dokuwiki.getTitle' => (new ApiCall([$this, 'legacyGetTitle'], 'legacy'))->setPublic(),
 -                 'dokuwiki.appendPage' => new ApiCall([$this, 'legacyAppendPage'], 'legacy'),
 -                 'dokuwiki.createUser' => new ApiCall([$this, 'legacyCreateUser'], 'legacy'),
 -                 'dokuwiki.deleteUsers' => new ApiCall([$this, 'legacyDeleteUsers'], 'legacy'),
 -                 'wiki.getPage' => new ApiCall([$this, 'legacyGetPage'], 'legacy'),
 -                 'wiki.getPageVersion' => new ApiCall([$this, 'legacyGetPageVersion'], 'legacy'),
 -                 'wiki.getPageHTML' => new ApiCall([$this, 'legacyGetPageHTML'], 'legacy'),
 -                 'wiki.getPageHTMLVersion' => new ApiCall([$this, 'legacyGetPageHTMLVersion'], 'legacy'),
 -                 'wiki.getAllPages' => new ApiCall([$this, 'legacyGetAllPages'], 'legacy'),
 -                 'wiki.getAttachments' => new ApiCall([$this, 'legacyGetAttachments'], 'legacy'),
 -                 'wiki.getBackLinks' => new ApiCall([$this, 'legacyGetBackLinks'], 'legacy'),
 -                 'wiki.getPageInfo' => new ApiCall([$this, 'legacyGetPageInfo'], 'legacy'),
 -                 'wiki.getPageInfoVersion' => new ApiCall([$this, 'legacyGetPageInfoVersion'], 'legacy'),
 -                 'wiki.getPageVersions' => new ApiCall([$this, 'legacyGetPageVersions'], 'legacy'),
 -                 'wiki.putPage' => new ApiCall([$this, 'legacyPutPage'], 'legacy'),
 -                 'wiki.listLinks' => new ApiCall([$this, 'legacyListLinks'], 'legacy'),
 -                 'wiki.getRecentChanges' => new ApiCall([$this, 'legacyGetRecentChanges'], 'legacy'),
 -                 'wiki.getRecentMediaChanges' => new ApiCall([$this, 'legacyGetRecentMediaChanges'], 'legacy'),
 -                 'wiki.aclCheck' => new ApiCall([$this, 'legacyAclCheck'], 'legacy'),
 -                 'wiki.putAttachment' => new ApiCall([$this, 'legacyPutAttachment'], 'legacy'),
 -                 'wiki.deleteAttachment' => new ApiCall([$this, 'legacyDeleteAttachment'], 'legacy'),
 -                 'wiki.getAttachment' => new ApiCall([$this, 'legacyGetAttachment'], 'legacy'),
 -                 'wiki.getAttachmentInfo' => new ApiCall([$this, 'legacyGetAttachmentInfo'], 'legacy'),
 -                 'dokuwiki.getXMLRPCAPIVersion' => (new ApiCall([$this, 'legacyGetXMLRPCAPIVersion'], 'legacy'))
 -                     ->setPublic(),
 -                 'wiki.getRPCVersionSupported' => (new ApiCall([$this, 'legacyGetRPCVersionSupported'], 'legacy'))
 -                     ->setPublic(),
 -             ]
 -         );
 -     }
 - 
 -     /**
 -      * This returns a XMLRPC object that will not work for the new JSONRPC API
 -      *
 -      * @param int $ts
 -      * @return Date
 -      */
 -     protected function toDate($ts)
 -     {
 -         return new Date($ts);
 -     }
 - 
 - 
 -     /**
 -      * @deprecated use core.getWikiVersion instead
 -      */
 -     public function legacyGetVersion()
 -     {
 -         return getVersion();
 -     }
 - 
 -     /**
 -      * @deprecated use core.getWikiTime instead
 -      */
 -     public function legacyGetTime()
 -     {
 -         return $this->getWikiTime();
 -     }
 - 
 - 
 -     /**
 -      * @deprecated use core.getPage instead
 -      */
 -     public function legacyGetPage($id)
 -     {
 -         try {
 -             return $this->getPage($id);
 -         } catch (RemoteException $e) {
 -             if ($e->getCode() === 121) {
 -                 return '';
 -             }
 -             throw $e;
 -         }
 -     }
 - 
 -     /**
 -      * @deprecated use core.getPage instead
 -      */
 -     public function legacyGetPageVersion($id, $rev = '')
 -     {
 -         try {
 -             return $this->getPage($id, $rev);
 -         } catch (RemoteException $e) {
 -             if ($e->getCode() === 121) {
 -                 return '';
 -             }
 -             throw $e;
 -         }
 -     }
 - 
 -     /**
 -      * @deprecated use core.getMedia instead
 -      */
 -     public function legacyGetAttachment($id)
 -     {
 -         return new Base64(base64_decode($this->getMedia($id)));
 -     }
 - 
 -     /**
 -      * @deprecated use core.getMediaInfo instead
 -      */
 -     public function legacygetAttachmentInfo($id)
 -     {
 -         $info = $this->getMediaInfo($id);
 -         return [
 -             'lastModified' => $this->toDate($info->revision),
 -             'size' => $info->size,
 -         ];
 -     }
 - 
 -     /**
 -      * @deprecated use core.getPageHTML instead
 -      */
 -     public function legacyGetPageHTML($id)
 -     {
 -         try {
 -             return $this->getPageHTML($id);
 -         } catch (RemoteException $e) {
 -             if ($e->getCode() === 121) {
 -                 return '';
 -             }
 -             throw $e;
 -         }
 -     }
 - 
 -     /**
 -      * @deprecated use core.getPageHTML instead
 -      */
 -     public function legacyGetPageHTMLVersion($id, $rev = '')
 -     {
 -         try {
 -             return $this->getPageHTML($id, (int)$rev);
 -         } catch (RemoteException $e) {
 -             if ($e->getCode() === 121) {
 -                 return '';
 -             }
 -             throw $e;
 -         }
 -     }
 - 
 -     /**
 -      * @deprecated use core.listPages instead
 -      */
 -     public function legacyGetAllPages()
 -     {
 -         $pages = $this->listPages('', 0);
 - 
 -         $result = [];
 -         foreach ($pages as $page) {
 -             $result[] = [
 -                 'id' => $page->id,
 -                 'perms' => $page->permission,
 -                 'size' => $page->size,
 -                 'lastModified' => $this->toDate($page->revision),
 -             ];
 -         }
 -         return $result;
 -     }
 - 
 -     /**
 -      * @deprecated use core.listPages instead
 -      */
 -     public function legacyGetPagelist($ns, $opts = [])
 -     {
 -         $data = $this->listPages($ns, $opts['depth'] ?? 0, $opts['hash'] ?? false);
 -         $result = [];
 - 
 -         foreach ($data as $page) {
 -             $result[] = [
 -                 'id' => $page->id,
 -                 'perms' => $page->permission,
 -                 'size' => $page->size,
 -                 'rev' => $page->revision,
 -                 'mtime' => $page->revision,
 -                 'hash' => $page->hash,
 - 
 -             ];
 -         }
 - 
 -         return $result;
 -     }
 - 
 -     /**
 -      * @deprecated use core.searchPages instead
 -      */
 -     public function legacySearch($query)
 -     {
 -         $this->searchPages($query);
 -         $pages = [];
 - 
 -         foreach ($this->searchPages($query) as $page) {
 -             $pages[] = [
 -                 'id' => $page->id,
 -                 'score' => $page->score,
 -                 'rev' => $page->revision,
 -                 'lastModified' => $this->toDate($page->revision),
 -                 'size' => $page->size,
 -                 'snippet' => $page->snippet,
 -                 'title' => $page->title
 -             ];
 -         }
 - 
 -         return $pages;
 -     }
 - 
 -     /**
 -      * @deprecated use core.getWikiTitle instead
 -      */
 -     public function legacyGetTitle()
 -     {
 -         return $this->getWikiTitle();
 -     }
 - 
 -     /**
 -      * @deprecated use core.listMedia instead
 -      */
 -     public function legacyGetAttachments($ns, $options = [])
 -     {
 -         $files = $this->listMedia($ns, $options['pattern'] ?? '', $options['depth'] ?? 0, $options['hash'] ?? false);
 -         $result = [];
 -         foreach ($files as $file) {
 -             $result[] = [
 -                 'id' => $file->id,
 -                 'perms' => $file->permission,
 -                 'size' => $file->size,
 -                 'rev' => $file->revision,
 -                 'lastModified' => $this->toDate($file->revision),
 -                 'mtime' => $this->toDate($file->revision),
 -                 'hash' => $file->hash,
 -                 'file' => PhpString::basename(mediaFN($file->id)),
 -                 'writable' => is_writable(mediaFN($file->id)),
 -                 'isimg' => $file->isimage,
 - 
 -             ];
 -         }
 -         return $result;
 -     }
 - 
 -     /**
 -      * @deprecated use core.getPageBackLinks instead
 -      */
 -     public function legacyGetBackLinks($id)
 -     {
 -         return $this->getPageBackLinks($id);
 -     }
 - 
 -     /**
 -      * @deprecated use core.getPageInfo instead
 -      */
 -     public function legacyGetPageInfo($id)
 -     {
 -         $info = $this->getPageInfo($id, 0);
 -         return [
 -             'name' => $info->id,
 -             'lastModified' => $this->toDate($info->revision),
 -             'author' => $info->author,
 -             'version' => $info->revision,
 -         ];
 -     }
 - 
 -     /**
 -      * @deprecated use core.getPageInfo instead
 -      */
 -     public function legacyGetPageInfoVersion($id, $rev = '')
 -     {
 -         $info = $this->getPageInfo($id, $rev);
 -         return [
 -             'name' => $info->id,
 -             'lastModified' => $this->toDate($info->revision),
 -             'author' => $info->author,
 -             'version' => $info->revision,
 -         ];
 -     }
 - 
 -     /**
 -      * @deprecated use core.savePage instead
 -      */
 -     public function legacyPutPage($id, $text, $params = [])
 -     {
 -         return $this->savePage($id, $text, $params['sum'] ?? '', $params['minor'] ?? false);
 -     }
 - 
 -     /**
 -      * @deprecated use core.appendPage instead
 -      */
 -     public function legacyAppendPage($id, $text, $params = [])
 -     {
 -         $ok = $this->appendPage($id, $text, $params['summary'] ?? '', $params['minor'] ?? false);
 -         if ($ok === true) {
 -             return cleanID($id);
 -         } else {
 -             return $ok;
 -         }
 -     }
 - 
 -     /**
 -      * @deprecated use plugin.usermanager.createUser instead
 -      */
 -     public function legacyCreateUser($userStruct)
 -     {
 -         if (!auth_isadmin()) {
 -             throw new AccessDeniedException('Only admins are allowed to create users', 114);
 -         }
 - 
 -         /** @var AuthPlugin $auth */
 -         global $auth;
 - 
 -         if (!$auth->canDo('addUser')) {
 -             throw new AccessDeniedException(
 -                 sprintf('Authentication backend %s can\'t do addUser', $auth->getPluginName()),
 -                 114
 -             );
 -         }
 - 
 -         $user = trim($auth->cleanUser($userStruct['user'] ?? ''));
 -         $password = $userStruct['password'] ?? '';
 -         $name = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $userStruct['name'] ?? ''));
 -         $mail = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $userStruct['mail'] ?? ''));
 -         $groups = $userStruct['groups'] ?? [];
 - 
 -         $notify = (bool)$userStruct['notify'] ?? false;
 - 
 -         if ($user === '') throw new RemoteException('empty or invalid user', 401);
 -         if ($name === '') throw new RemoteException('empty or invalid user name', 402);
 -         if (!mail_isvalid($mail)) throw new RemoteException('empty or invalid mail address', 403);
 - 
 -         if ((string)$password === '') {
 -             $password = auth_pwgen($user);
 -         }
 - 
 -         if (!is_array($groups) || $groups === []) {
 -             $groups = null;
 -         }
 - 
 -         $ok = $auth->triggerUserMod('create', [$user, $password, $name, $mail, $groups]);
 - 
 -         if ($ok !== false && $ok !== null) {
 -             $ok = true;
 -         }
 - 
 -         if ($ok) {
 -             if ($notify) {
 -                 auth_sendPassword($user, $password);
 -             }
 -         }
 - 
 -         return $ok;
 -     }
 - 
 - 
 -     /**
 -      * @deprecated use plugin.usermanager.deleteUser instead
 -      */
 -     public function legacyDeleteUsers($usernames)
 -     {
 -         if (!auth_isadmin()) {
 -             throw new AccessDeniedException('Only admins are allowed to delete users', 114);
 -         }
 -         /** @var AuthPlugin $auth */
 -         global $auth;
 -         return (bool)$auth->triggerUserMod('delete', [$usernames]);
 -     }
 - 
 -     /**
 -      * @deprecated use core.saveMedia instead
 -      */
 -     public function legacyPutAttachment($id, $file, $params = [])
 -     {
 -         $ok = $this->saveMedia($id, base64_encode($file), $params['ow'] ?? false);
 -         if ($ok === true) {
 -             return cleanID($id);
 -         } else {
 -             return $ok;
 -         }
 -     }
 - 
 -     /**
 -      * @deprecated use core.deleteMedia instead
 -      */
 -     public function legacyDeleteAttachment($id)
 -     {
 -         $ok = $this->deleteMedia($id);
 -         if ($ok === true) {
 -             return 0;
 -         } else {
 -             return $ok;
 -         }
 -     }
 - 
 -     /**
 -      * @deprecated use core.aclCheck instead
 -      */
 -     public function legacyAclCheck($id, $user = null, $groups = null)
 -     {
 -         return $this->aclCheck($id, (string)$user, (string)$groups);
 -     }
 - 
 -     /**
 -      * @deprecated use core.listLinks instead
 -      */
 -     public function legacyListLinks($id)
 -     {
 -         $links = $this->getPageLinks($id);
 -         $result = [];
 -         foreach ($links as $link) {
 -             $result[] = [
 -                 'type' => $link['type'],
 -                 'page' => $link['page'],
 -                 'href' => $link['href'],
 -             ];
 -         }
 -         return $result;
 -     }
 - 
 -     /**
 -      * @deprecated use core.getRecentChanges instead
 -      */
 -     public function legacyGetRecentChanges($timestamp)
 -     {
 -         $recents = $this->getRecentPageChanges($timestamp);
 -         $result = [];
 -         foreach ($recents as $recent) {
 -             $result[] = [
 -                 'name' => $recent->id,
 -                 'lastModified' => $this->toDate($recent->revision),
 -                 'author' => $recent->author,
 -                 'version' => $recent->revision,
 -                 'perms' => auth_quickaclcheck($recent->id),
 -                 'size' => @filesize(wikiFN($recent->id)),
 -             ];
 -         }
 -         return $result;
 -     }
 - 
 -     /**
 -      * @deprecated use core.getRecentMediaChanges instead
 -      */
 -     public function legacyGetRecentMediaChanges($timestamp)
 -     {
 -         $recents = $this->getRecentMediaChanges($timestamp);
 -         $result = [];
 -         foreach ($recents as $recent) {
 -             $result[] = [
 -                 'name' => $recent->id,
 -                 'lastModified' => $this->toDate($recent->revision),
 -                 'author' => $recent->author,
 -                 'version' => $recent->revision,
 -                 'perms' => auth_quickaclcheck($recent->id),
 -                 'size' => @filesize(mediaFN($recent->id)),
 -             ];
 -         }
 -         return $result;
 -     }
 - 
 -     /**
 -      * @deprecated use core.getPageHistory instead
 -      */
 -     public function legacyGetPageVersions($id, $first = 0)
 -     {
 -         $revisions = $this->getPageHistory($id, $first);
 -         $result = [];
 - 
 -         foreach ($revisions as $revision) {
 -             $result[] = [
 -                 'user' => $revision->author,
 -                 'ip' => $revision->ip,
 -                 'type' => $revision->type,
 -                 'sum' => $revision->summary,
 -                 'modified' => $this->toDate($revision->revision),
 -                 'version' => $revision->revision,
 -             ];
 -         }
 -         return $result;
 -     }
 - 
 -     /**
 -      * @deprecated Wiki RPC spec is no longer supported
 -      */
 -     public function legacyGetRPCVersionSupported()
 -     {
 -         return 2;
 -     }
 - 
 -     /**
 -      * @deprecated use core.lockPages and core.unlockPages instead
 -      */
 -     public function legacySetLocks($set)
 -     {
 -         $locked = $this->lockPages($set['lock']);
 -         $lockfail = array_diff($set['lock'], $locked);
 - 
 -         $unlocked = $this->unlockPages($set['unlock']);
 -         $unlockfail = array_diff($set['unlock'], $unlocked);
 - 
 -         return [
 -             'locked' => $locked,
 -             'lockfail' => $lockfail,
 -             'unlocked' => $unlocked,
 -             'unlockfail' => $unlockfail
 -         ];
 -     }
 - 
 -     /**
 -      * @deprecated use core.getAPIVersion instead
 -      */
 -     public function legacyGetXMLRPCAPIVersion()
 -     {
 -         return $this->getAPIVersion();
 -     }
 - 
 -     /**
 -      * @deprecated use core.login instead
 -      */
 -     public function legacyLogin($user, $pass)
 -     {
 -         return parent::login($user, $pass);
 -     }
 - 
 -     /**
 -      * @deprecated use core.logoff instead
 -      */
 -     public function legacyLogoff()
 -     {
 -         return parent::logoff();
 -     }
 - }
 
 
  |