first commit
This commit is contained in:
4
lib/Service/NotFoundException.php
Normal file
4
lib/Service/NotFoundException.php
Normal file
@ -0,0 +1,4 @@
|
||||
<?php
|
||||
namespace OCA\MyWiki\Service;
|
||||
|
||||
class NotFoundException extends ServiceException {}
|
4
lib/Service/ReadOnlyException.php
Normal file
4
lib/Service/ReadOnlyException.php
Normal file
@ -0,0 +1,4 @@
|
||||
<?php
|
||||
namespace OCA\MyWiki\Service;
|
||||
|
||||
class ReadOnlyException extends ServiceException {}
|
6
lib/Service/ServiceException.php
Normal file
6
lib/Service/ServiceException.php
Normal file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
namespace OCA\MyWiki\Service;
|
||||
|
||||
use Exception;
|
||||
|
||||
class ServiceException extends Exception {}
|
97
lib/Service/WikiService.php
Normal file
97
lib/Service/WikiService.php
Normal file
@ -0,0 +1,97 @@
|
||||
<?php
|
||||
namespace OCA\MyWiki\Service;
|
||||
|
||||
use Exception;
|
||||
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
|
||||
|
||||
use OCA\MyWiki\Db\Wiki;
|
||||
use OCA\MyWiki\Db\WikiMapper;
|
||||
use OCA\MyWiki\Helper\WikiHelper;
|
||||
|
||||
class WikiService {
|
||||
|
||||
private $mapper;
|
||||
private $rootFolder;
|
||||
|
||||
public function __construct(WikiMapper $mapper,IRootFolder $rootFolder){
|
||||
$this->mapper = $mapper;
|
||||
$this->rootFolder = $rootFolder;
|
||||
|
||||
// , IUserSession $userSession
|
||||
}
|
||||
|
||||
public function test(string $userId) {
|
||||
echo 'JDG :: Test for '.$userId;
|
||||
}
|
||||
|
||||
public function findAll(string $userId) {
|
||||
return $this->mapper->findAll($userId);
|
||||
}
|
||||
|
||||
private function handleException ($e) {
|
||||
if ($e instanceof DoesNotExistException ||
|
||||
$e instanceof MultipleObjectsReturnedException) {
|
||||
throw new NotFoundException($e->getMessage());
|
||||
} else {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
public function find(int $id, string $userId) {
|
||||
try {
|
||||
return $this->mapper->find($id, $userId);
|
||||
|
||||
// in order to be able to plug in different storage backends like files
|
||||
// for instance it is a good idea to turn storage related exceptions
|
||||
// into service related exceptions so controllers and service users
|
||||
// have to deal with only one type of exception
|
||||
} catch(Exception $e) {
|
||||
$this->handleException($e);
|
||||
}
|
||||
}
|
||||
|
||||
public function create(string $title, int $fileId, string $userId) {
|
||||
if ( !WikiHelper::isFolder($fileId) ) {
|
||||
throw new ReadOnlyException('The folder is not valid');
|
||||
}
|
||||
if ( !WikiHelper::isWiki($fileId) ) {
|
||||
if ( !WikiHelper::initWiki($fileId, $title) ) {
|
||||
throw new ReadOnlyException('Error creating wiki');
|
||||
}
|
||||
}
|
||||
|
||||
$wiki = new Wiki();
|
||||
$wiki->setTitle($title);
|
||||
$wiki->setFileId($fileId);
|
||||
$wiki->setUserId($userId);
|
||||
return $this->mapper->insert($wiki);
|
||||
}
|
||||
|
||||
public function update(int $id, string $title, string $userId) {
|
||||
try {
|
||||
$wiki = $this->mapper->find($id, $userId);
|
||||
$wiki->setTitle($title);
|
||||
return $this->mapper->update($wiki);
|
||||
} catch(Exception $e) {
|
||||
$this->handleException($e);
|
||||
}
|
||||
}
|
||||
|
||||
public function delete(int $id, bool $removeFiles, string $userId) {
|
||||
try {
|
||||
$wiki = $this->mapper->find($id, $userId);
|
||||
if ($removeFiles) {
|
||||
$fileId = $wiki->getFileId();
|
||||
$this->mapper->usersCount($fileId);
|
||||
WikiHelper::removePage($fileId, true);
|
||||
}
|
||||
$this->mapper->delete($wiki);
|
||||
return $wiki;
|
||||
} catch(Exception $e) {
|
||||
$this->handleException($e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user