summaryrefslogtreecommitdiff
path: root/app/Model/ProjectModel.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Model/ProjectModel.php')
-rw-r--r--app/Model/ProjectModel.php43
1 files changed, 32 insertions, 11 deletions
diff --git a/app/Model/ProjectModel.php b/app/Model/ProjectModel.php
index aa7c002d..097806d8 100644
--- a/app/Model/ProjectModel.php
+++ b/app/Model/ProjectModel.php
@@ -202,16 +202,23 @@ class ProjectModel extends Base
* Return the list of all projects
*
* @access public
- * @param bool $prepend If true, prepend to the list the value 'None'
+ * @param bool $prependNone
+ * @param bool $noPrivateProjects
* @return array
*/
- public function getList($prepend = true)
+ public function getList($prependNone = true, $noPrivateProjects = true)
{
- if ($prepend) {
- return array(t('None')) + $this->db->hashtable(self::TABLE)->asc('name')->getAll('id', 'name');
+ if ($noPrivateProjects) {
+ $projects = $this->db->hashtable(self::TABLE)->eq('is_private', 0)->asc('name')->getAll('id', 'name');
+ } else {
+ $projects = $this->db->hashtable(self::TABLE)->asc('name')->getAll('id', 'name');
}
- return $this->db->hashtable(self::TABLE)->asc('name')->getAll('id', 'name');
+ if ($prependNone) {
+ return array(t('None')) + $projects;
+ }
+
+ return $projects;
}
/**
@@ -310,11 +317,11 @@ class ProjectModel extends Base
}
return $this->db
- ->table(ProjectModel::TABLE)
- ->columns(self::TABLE.'.*', UserModel::TABLE.'.username AS owner_username', UserModel::TABLE.'.name AS owner_name')
- ->join(UserModel::TABLE, 'id', 'owner_id')
- ->in(self::TABLE.'.id', $project_ids)
- ->callback(array($this, 'applyColumnStats'));
+ ->table(ProjectModel::TABLE)
+ ->columns(self::TABLE.'.*', UserModel::TABLE.'.username AS owner_username', UserModel::TABLE.'.name AS owner_name')
+ ->join(UserModel::TABLE, 'id', 'owner_id')
+ ->in(self::TABLE.'.id', $project_ids)
+ ->callback(array($this, 'applyColumnStats'));
}
/**
@@ -348,6 +355,10 @@ class ProjectModel extends Base
*/
public function create(array $values, $userId = 0, $addUser = false)
{
+ if (! empty($userId) && ! $this->userModel->exists($userId)) {
+ return false;
+ }
+
$this->db->startTransaction();
$values['token'] = '';
@@ -440,6 +451,10 @@ class ProjectModel extends Base
$values['end_date'] = $this->dateParser->getIsoDate($values['end_date']);
}
+ if (! empty($values['owner_id']) && ! $this->userModel->exists($values['owner_id'])) {
+ return false;
+ }
+
$this->helper->model->convertIntegerFields($values, array('priority_default', 'priority_start', 'priority_end'));
return $this->exists($values['id']) &&
@@ -455,7 +470,13 @@ class ProjectModel extends Base
*/
public function remove($project_id)
{
- return $this->db->table(self::TABLE)->eq('id', $project_id)->remove();
+ $this->db->startTransaction();
+
+ $this->db->table(TagModel::TABLE)->eq('project_id', $project_id)->remove();
+ $result = $this->db->table(self::TABLE)->eq('id', $project_id)->remove();
+
+ $this->db->closeTransaction();
+ return $result;
}
/**