mirror of
https://github.com/YunoHost-Apps/kanboard_ynh.git
synced 2024-09-03 19:36:17 +02:00
113 lines
4.2 KiB
PHP
113 lines
4.2 KiB
PHP
<?php
|
|
|
|
namespace Kanboard\Api\Procedure;
|
|
|
|
use Kanboard\Api\Authorization\ProjectAuthorization;
|
|
|
|
/**
|
|
* Project API controller
|
|
*
|
|
* @package Kanboard\Api\Procedure
|
|
* @author Frederic Guillot
|
|
*/
|
|
class ProjectProcedure extends BaseProcedure
|
|
{
|
|
public function getProjectById($project_id)
|
|
{
|
|
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'getProjectById', $project_id);
|
|
return $this->formatProject($this->projectModel->getById($project_id));
|
|
}
|
|
|
|
public function getProjectByName($name)
|
|
{
|
|
$project = $this->projectModel->getByName($name);
|
|
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'getProjectByName', $project['id']);
|
|
return $this->formatProject($project);
|
|
}
|
|
|
|
public function getProjectByIdentifier($identifier)
|
|
{
|
|
$project = $this->formatProject($this->projectModel->getByIdentifier($identifier));
|
|
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'getProjectByIdentifier', $project['id']);
|
|
return $this->formatProject($project);
|
|
}
|
|
|
|
public function getAllProjects()
|
|
{
|
|
return $this->formatProjects($this->projectModel->getAll());
|
|
}
|
|
|
|
public function removeProject($project_id)
|
|
{
|
|
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'removeProject', $project_id);
|
|
return $this->projectModel->remove($project_id);
|
|
}
|
|
|
|
public function enableProject($project_id)
|
|
{
|
|
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'enableProject', $project_id);
|
|
return $this->projectModel->enable($project_id);
|
|
}
|
|
|
|
public function disableProject($project_id)
|
|
{
|
|
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'disableProject', $project_id);
|
|
return $this->projectModel->disable($project_id);
|
|
}
|
|
|
|
public function enableProjectPublicAccess($project_id)
|
|
{
|
|
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'enableProjectPublicAccess', $project_id);
|
|
return $this->projectModel->enablePublicAccess($project_id);
|
|
}
|
|
|
|
public function disableProjectPublicAccess($project_id)
|
|
{
|
|
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'disableProjectPublicAccess', $project_id);
|
|
return $this->projectModel->disablePublicAccess($project_id);
|
|
}
|
|
|
|
public function getProjectActivities(array $project_ids)
|
|
{
|
|
foreach ($project_ids as $project_id) {
|
|
ProjectAuthorization::getInstance($this->container)
|
|
->check($this->getClassName(), 'getProjectActivities', $project_id);
|
|
}
|
|
|
|
return $this->helper->projectActivity->getProjectsEvents($project_ids);
|
|
}
|
|
|
|
public function getProjectActivity($project_id)
|
|
{
|
|
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'getProjectActivity', $project_id);
|
|
return $this->helper->projectActivity->getProjectEvents($project_id);
|
|
}
|
|
|
|
public function createProject($name, $description = null, $owner_id = 0, $identifier = null)
|
|
{
|
|
$values = $this->filterValues(array(
|
|
'name' => $name,
|
|
'description' => $description,
|
|
'identifier' => $identifier,
|
|
));
|
|
|
|
list($valid, ) = $this->projectValidator->validateCreation($values);
|
|
return $valid ? $this->projectModel->create($values, $owner_id, $this->userSession->isLogged()) : false;
|
|
}
|
|
|
|
public function updateProject($project_id, $name = null, $description = null, $owner_id = null, $identifier = null)
|
|
{
|
|
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'updateProject', $project_id);
|
|
|
|
$values = $this->filterValues(array(
|
|
'id' => $project_id,
|
|
'name' => $name,
|
|
'description' => $description,
|
|
'owner_id' => $owner_id,
|
|
'identifier' => $identifier,
|
|
));
|
|
|
|
list($valid, ) = $this->projectValidator->validateModification($values);
|
|
return $valid && $this->projectModel->update($values);
|
|
}
|
|
}
|