From f0cb23a7a8071247b259dc80359d722981eeccb0 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 21 Feb 2019 14:29:50 +0100 Subject: [PATCH 1/2] pass user to hook addRoute --- index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.php b/index.php index 27fef289d..8323df83c 100644 --- a/index.php +++ b/index.php @@ -55,7 +55,7 @@ if(true) { if(isset($GLOBALS['SEEDDMS_HOOKS']['initDMS'])) { foreach($GLOBALS['SEEDDMS_HOOKS']['initDMS'] as $hookObj) { if (method_exists($hookObj, 'addRoute')) { - $hookObj->addRoute(array('dms'=>$dms, 'app'=>$app, 'settings'=>$settings)); + $hookObj->addRoute(array('dms'=>$dms, 'user'=>$user, 'app'=>$app, 'settings'=>$settings)); } } } From b3bdf6e09d5f15a2a8379aa6bdaad290a6b895d7 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 21 Feb 2019 14:30:12 +0100 Subject: [PATCH 2/2] add version_comment and version_date to document data --- restapi/index.php | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/restapi/index.php b/restapi/index.php index 974eb5318..30ed4a7ab 100644 --- a/restapi/index.php +++ b/restapi/index.php @@ -65,6 +65,8 @@ function __getLatestVersionData($lc) { /* {{{ */ 'keywords'=>$document->getKeywords(), 'mimetype'=>$lc->getMimeType(), 'version'=>$lc->getVersion(), + 'version_comment'=>$lc->getComment(), + 'version_date'=>$lc->getDate(), 'size'=>$lc->getFileSize(), ); $cats = $document->getCategories(); @@ -611,11 +613,23 @@ function updateDocument($request, $response, $args) { /* {{{ */ $document = $dms->getDocument($args['id']); if($document) { - $uploadedFiles = $request->getUploadedFiles(); if ($document->getAccessMode($userobj, 'updateDocument') >= M_READWRITE) { $params = $request->getParsedBody(); $origfilename = isset($params['origfilename']) ? $params['origfilename'] : null; $comment = isset($params['comment']) ? $params['comment'] : null; + $attributes = isset($params["attributes"]) ? $params["attributes"] : array(); + foreach($attributes as $attrdefid=>$attribute) { + if($attrdef = $dms->getAttributeDefinition($attrdefid)) { + if($attribute) { + if(!$attrdef->validate($attribute)) { + return $response->withJson(array('success'=>false, 'message'=>getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute), 'data'=>''), 400); + } + } elseif($attrdef->getMinValues() > 0) { + return $response->withJson(array('success'=>false, 'message'=>getMLText("attr_min_values", array("attrname"=>$attrdef->getName())), 'data'=>''), 400); + } + } + } + $uploadedFiles = $request->getUploadedFiles(); if (count($uploadedFiles) == 0) { return $response->withJson(array('success'=>false, 'message'=>'No file detected', 'data'=>''), 400); } @@ -627,7 +641,7 @@ function updateDocument($request, $response, $args) { /* {{{ */ $userfiletype = finfo_file($finfo, $temp); $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); finfo_close($finfo); - $res=$document->addContent($comment, $userobj, $temp, $origfilename, $fileType, $userfiletype); + $res=$document->addContent($comment, $userobj, $temp, $origfilename, $fileType, $userfiletype, array(), array(), 0, $attributes); unlink($temp); if($res) { @@ -980,6 +994,34 @@ function getDocumentVersion($request, $response, $args) { /* {{{ */ } } /* }}} */ +function updateDocumentVersion($request, $response, $args) { /* {{{ */ + global $dms, $userobj; + $document = $dms->getDocument($args['id']); + + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $lc = $document->getContentByVersion($args['version']); + if($lc) { + $params = $request->getParsedBody(); + if (isset($params['comment'])) { + $lc->setComment($params['comment']); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No such version', 'data'=>''), 400); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($document === null) + $status=400; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); + } +} /* }}} */ + function getDocumentFiles($request, $response, $args) { /* {{{ */ global $dms, $userobj; $document = $dms->getDocument($args['id']); @@ -2008,6 +2050,7 @@ $app->post('/document/{id}/move/{folderid}', 'moveDocument'); $app->get('/document/{id}/content', 'getDocumentContent'); $app->get('/document/{id}/versions', 'getDocumentVersions'); $app->get('/document/{id}/version/{version}', 'getDocumentVersion'); +$app->put('/document/{id}/version/{version}', 'updateDocumentVersion'); $app->get('/document/{id}/files', 'getDocumentFiles'); $app->get('/document/{id}/file/{fileid}', 'getDocumentFile'); $app->get('/document/{id}/links', 'getDocumentLinks');