mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-10 19:43:16 +00:00
PHRAS-946_delete-record-api
- add : api route to delete record : verb DELETE ; /api/v1/records/{{databox_id}}/{{record_id}}
This commit is contained in:
@@ -1936,6 +1936,22 @@ class V1Controller extends Controller
|
|||||||
return Result::create($request, $ret)->createResponse();
|
return Result::create($request, $ret)->createResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param int $databox_id
|
||||||
|
* @param int $record_id
|
||||||
|
* @return Response
|
||||||
|
*/
|
||||||
|
public function deleteRecordAction(Request $request, $databox_id, $record_id)
|
||||||
|
{
|
||||||
|
$databox = $this->findDataboxById($databox_id);
|
||||||
|
$record = $databox->get_record($record_id);
|
||||||
|
|
||||||
|
$record->delete();
|
||||||
|
|
||||||
|
return Result::create($request, [])->createResponse();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return detailed information about one record
|
* Return detailed information about one record
|
||||||
*
|
*
|
||||||
@@ -2843,6 +2859,18 @@ class V1Controller extends Controller
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function ensureCanDeleteRecord(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getApiAuthenticatedUser();
|
||||||
|
$record = $this->findDataboxById($request->attributes->get('databox_id'))
|
||||||
|
->get_record($request->attributes->get('record_id'));
|
||||||
|
|
||||||
|
if (!$this->getAclForUser($user)->has_right_on_base($record->getBaseId(), 'candeleterecord')) {
|
||||||
|
return Result::createError($request, 401, 'You are not authorized')->createResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public function ensureJsonContentType(Request $request)
|
public function ensureJsonContentType(Request $request)
|
||||||
{
|
{
|
||||||
|
@@ -175,6 +175,11 @@ class V1 implements ControllerProviderInterface, ServiceProviderInterface
|
|||||||
'controller.api.v1:getBadRequestAction'
|
'controller.api.v1:getBadRequestAction'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$controllers->delete('/records/{databox_id}/{record_id}/', 'controller.api.v1:deleteRecordAction')
|
||||||
|
->before('controller.api.v1:ensureCanDeleteToRecord')
|
||||||
|
->assert('databox_id', '\d+')
|
||||||
|
->assert('record_id', '\d+');
|
||||||
|
|
||||||
$controllers->get('/records/{databox_id}/{record_id}/', 'controller.api.v1:getRecordAction')
|
$controllers->get('/records/{databox_id}/{record_id}/', 'controller.api.v1:getRecordAction')
|
||||||
->before('controller.api.v1:ensureCanAccessToRecord')
|
->before('controller.api.v1:ensureCanAccessToRecord')
|
||||||
->assert('databox_id', '\d+')
|
->assert('databox_id', '\d+')
|
||||||
|
@@ -950,14 +950,15 @@ class ACL implements cache_cacheableInterface
|
|||||||
$this->_limited = $data;
|
$this->_limited = $data;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
} catch (\Exception $e) {
|
}
|
||||||
|
catch (\Exception $e) {
|
||||||
|
// no-op
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = 'SELECT u.* FROM basusr u, bas b, sbas s
|
$sql = "SELECT u.* FROM basusr u, bas b, sbas s\n"
|
||||||
WHERE usr_id= :usr_id
|
. "WHERE usr_id= :usr_id\n"
|
||||||
AND b.base_id = u.base_id
|
. "AND b.base_id = u.base_id\n"
|
||||||
AND b.sbas_id = s.sbas_id
|
. "AND s.sbas_id = b.sbas_id";
|
||||||
AND s.sbas_id = b.sbas_id ';
|
|
||||||
|
|
||||||
$stmt = $this->app->getApplicationBox()->get_connection()->prepare($sql);
|
$stmt = $this->app->getApplicationBox()->get_connection()->prepare($sql);
|
||||||
$stmt->execute([':usr_id' => $this->user->getId()]);
|
$stmt->execute([':usr_id' => $this->user->getId()]);
|
||||||
|
@@ -1360,16 +1360,6 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
|
|||||||
$stmt->execute([':record_id' => $this->getRecordId()]);
|
$stmt->execute([':record_id' => $this->getRecordId()]);
|
||||||
$stmt->closeCursor();
|
$stmt->closeCursor();
|
||||||
|
|
||||||
$sql = "DELETE FROM prop WHERE record_id = :record_id";
|
|
||||||
$stmt = $connection->prepare($sql);
|
|
||||||
$stmt->execute([':record_id' => $this->getRecordId()]);
|
|
||||||
$stmt->closeCursor();
|
|
||||||
|
|
||||||
$sql = "DELETE FROM idx WHERE record_id = :record_id";
|
|
||||||
$stmt = $connection->prepare($sql);
|
|
||||||
$stmt->execute([':record_id' => $this->getRecordId()]);
|
|
||||||
$stmt->closeCursor();
|
|
||||||
|
|
||||||
$sql = "DELETE FROM permalinks WHERE subdef_id IN (SELECT subdef_id FROM subdef WHERE record_id=:record_id)";
|
$sql = "DELETE FROM permalinks WHERE subdef_id IN (SELECT subdef_id FROM subdef WHERE record_id=:record_id)";
|
||||||
$stmt = $connection->prepare($sql);
|
$stmt = $connection->prepare($sql);
|
||||||
$stmt->execute([':record_id' => $this->getRecordId()]);
|
$stmt->execute([':record_id' => $this->getRecordId()]);
|
||||||
@@ -1385,19 +1375,9 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
|
|||||||
$stmt->execute([':record_id' => $this->getRecordId()]);
|
$stmt->execute([':record_id' => $this->getRecordId()]);
|
||||||
$stmt->closeCursor();
|
$stmt->closeCursor();
|
||||||
|
|
||||||
$sql = "DELETE FROM thit WHERE record_id = :record_id";
|
$sql = "DELETE FROM regroup WHERE rid_parent = :record_id1 OR rid_child = :record_id2";
|
||||||
$stmt = $connection->prepare($sql);
|
$stmt = $connection->prepare($sql);
|
||||||
$stmt->execute([':record_id' => $this->getRecordId()]);
|
$stmt->execute([':record_id1' => $this->getRecordId(), ':record_id2' => $this->getRecordId()]);
|
||||||
$stmt->closeCursor();
|
|
||||||
|
|
||||||
$sql = "DELETE FROM regroup WHERE rid_parent = :record_id";
|
|
||||||
$stmt = $connection->prepare($sql);
|
|
||||||
$stmt->execute([':record_id' => $this->getRecordId()]);
|
|
||||||
$stmt->closeCursor();
|
|
||||||
|
|
||||||
$sql = "DELETE FROM regroup WHERE rid_child = :record_id";
|
|
||||||
$stmt = $connection->prepare($sql);
|
|
||||||
$stmt->execute([':record_id' => $this->getRecordId()]);
|
|
||||||
$stmt->closeCursor();
|
$stmt->closeCursor();
|
||||||
|
|
||||||
$orderElementRepository = $this->app['repo.order-elements'];
|
$orderElementRepository = $this->app['repo.order-elements'];
|
||||||
|
Reference in New Issue
Block a user