/** * Delete task */ public function deleteTask($id) { $query = new TaskerMAN\Core\DBQuery("DELETE FROM `tasks` \n\t\t\tWHERE `id` = ?\n\t\t\tLIMIT 1\n\t\t"); $query->execute($id); $query = new TaskerMAN\Core\DBQuery("DELETE FROM `steps`\n\t\t\tWHERE `task_id` = ?\n\t\t"); $query->execute($id); }
/** * Validates a user with given email address and password, * returns either boolean false or a User object with that user's * information * * @param string $email * @param string $password * @return mixed Response */ public static function verifyCredentials($email, $password) { $query = new \TaskerMAN\Core\DBQuery("SELECT `id`, `password`\r\n\t\t\tFROM `users`\r\n\t\t\tWHERE `email` = ?\r\n\t\t\tLIMIT 1\r\n\t\t"); $query->execute($email); $fetch = $query->row(); // Compare given password with stored user password hash if (password_verify($password, $fetch['password'])) { return new User($fetch['id']); } else { return false; } }
/** * Loads user info into the object * * @return boolean */ private function load() { $query = new \TaskerMAN\Core\DBQuery("SELECT `email`, `name`, `admin`, `api_token`\r\n\t\t\tFROM `users`\r\n\t\t\tWHERE `id` = ?\r\n\t\t\tLIMIT 1\r\n\t\t"); $query->execute($this->id); $fetch = $query->row(); if (empty($fetch)) { return false; } $this->email = $fetch['email']; $this->name = $fetch['name']; $this->admin = (bool) $fetch['admin']; $this->api_token = $fetch['api_token']; return true; }
/** * Returns HTML for dropdown * * @param int $selected Already selected uid * @return string HTML output */ public static function generate($selected = null) { $output = ''; $query = new \TaskerMAN\Core\DBQuery("SELECT\n\t\t\t`users`.`id`,\n\t\t\t`users`.`name`\n\n\t\t\tFROM `users`\n\n\t\t\tORDER BY `users`.`name` ASC\n\t\t"); $query->execute(); while ($row = $query->row()) { $output .= '<option value="' . $row['id'] . '"'; if ($row['id'] == $selected) { $output .= ' selected'; } $output .= '>' . $row['name'] . '</option>' . "\n"; } return $output; }
/** * Saves the task object to the database, also triggers buildSteps() if * this is a new task. * * @return boolean * @throws TaskException */ public function save() { // Check if task is new. If so, INSERT query is run if ($this->new_task) { if (empty($this->temp_steps)) { // Each task must have at least one step associated with it throw new TaskException('Task creation requires at least one associated step'); return false; } $stmt = new \TaskerMAN\Core\DBQuery("INSERT INTO `tasks`\r\n\t\t\t\t(`created_uid`, `created_time`, `assignee_uid`, `due_by`, `completed_time`, `status`, `title`)\r\n\t\t\t\tVALUES\r\n\t\t\t\t(:created_uid, NOW(), :assignee_uid, :due_by, :completed_time, :status, :title)\r\n\t\t\t"); } else { $stmt = new \TaskerMAN\Core\DBQuery("UPDATE `tasks` SET\r\n\t\t\t\t`created_uid` = :created_uid,\r\n\t\t\t\t`assignee_uid` = :assignee_uid,\r\n\t\t\t\t`due_by` = :due_by,\r\n\t\t\t\t`completed_time` = :completed_time,\r\n\t\t\t\t`status` = :status,\r\n\t\t\t\t`title`= :title\r\n\r\n\t\t\t\tWHERE `id` = :id\r\n\t\t\t\tLIMIT 1\r\n\t\t\t"); $stmt->bindValue(':id', (int) $this->id, \PDO::PARAM_INT); } // Bind variables $stmt->bindValue(':created_uid', (int) $this->created_uid, \PDO::PARAM_INT); $stmt->bindValue(':assignee_uid', (int) $this->assignee_uid, \PDO::PARAM_INT); $stmt->bindValue(':due_by', (string) $this->due_by, \PDO::PARAM_STR); $stmt->bindValue(':completed_time', (string) $this->completed_time, \PDO::PARAM_STR); $stmt->bindValue(':status', (int) $this->status, \PDO::PARAM_INT); $stmt->bindValue(':title', (string) $this->title, \PDO::PARAM_STR); $stmt->execute(); // If this is a new task, run buildSteps() if ($this->new_task) { $this->id = $stmt->lastInsertID(); $this->new_task = false; $this->buildSteps(); } }
/** * Saves any changes to the database */ public function save() { if ($this->new_step) { $query = new \TaskerMAN\Core\DBQuery("INSERT INTO `steps`\r\n\t\t\t\t(`task_id`, `title`, `comment`)\r\n\t\t\t\tVALUES\r\n\t\t\t\t(:task_id, :title, :comment)\r\n\t\t\t"); $query->bindValue(':task_id', $this->task_id); $query->bindValue(':title', $this->title); $query->bindValue(':comment', $this->comment); $query->execute(); $this->id = $query->lastInsertID(); } else { $query = new \TaskerMAN\Core\DBQuery("UPDATE `steps` SET\r\n\t\t\t\t`title` = :title,\r\n\t\t\t\t`comment` = :comment\r\n\r\n\t\t\t\tWHERE `id` = :id\r\n\t\t\t\tLIMIT 1\r\n\t\t\t"); $query->bindValue(':id', $this->id); $query->bindValue(':title', $this->title); $query->bindValue(':comment', $this->comment); $query->execute(); } }
/** * Returns total count of users in database * * @return int Count */ public static function getNumUsers() { $conditional = self::buildConditional(); $query = new \TaskerMAN\Core\DBQuery("SELECT\r\n\t\t \tCOUNT(*) AS `count`\r\n\t\t\tFROM `users`\r\n\r\n\t\t\t{$conditional}\r\n\t\t"); // Bind any conditional parameters if (!is_null($conditional)) { foreach (self::$search_criteria as $key => $criteria) { if ($criteria['enabled']) { $query->bindValue($criteria['parameter'], $criteria['value']); } } } $query->execute(); $row = $query->row(); return $row['count']; }
<?php $tasks = range(1, 50); // Title generation $verbs = array('Fix', 'Create', 'Confirm', 'Eat', 'Drink', 'Paint', 'Code', 'Test'); $things = array('beer', 'user interface', 'burgers', 'pizza', 'code', 'Jack Reed', 'desktop application', 'Java', 'PHP', 'coffee', 'meeting', 'pasta'); // Get array of all user IDs $query = new TaskerMAN\Core\DBQuery("SELECT `id` FROM `users`"); $query->execute(); while ($row = $query->row()) { $users[] = $row['id']; } // Get array of all admins $query = new TaskerMAN\Core\DBQuery("SELECT `id` FROM `users` WHERE `admin` = '1'"); $query->execute(); while ($row = $query->row()) { $admins[] = $row['id']; } foreach ($tasks as $i) { $t = new TaskerMAN\Application\Task(); $t->setAssignee($users[array_rand($users)]); $due_by = rand_future_time(); $t->setDueBy(date('Y-m-d', $due_by)); $t->setCreatedByUser($admins[array_rand($admins)]); if (rand(1, 5) > 2) { $status = 2; } else { $status = 1; } $t->setStatus($status); $steps = range(1, rand(1, 3));
/** * Deletes a given user from the database * * @param int $id * @return boolean */ public static function delete($id) { // Do not allow deletion if only one user is registered $query = new \TaskerMAN\Core\DBQuery("SELECT COUNT(*) AS `rowCount`\r\n\t\t\tFROM `users`\r\n\t\t\tWHERE `admin` = '1'\r\n\t\t"); $query->execute(); $fetch = $query->row(); if ($fetch['rowCount'] == 1) { throw new UserManagementException('Cannot delete last remaining administrator'); return false; } $query = new \TaskerMAN\Core\DBQuery("DELETE FROM `users`\r\n\t\t\tWHERE `id` = ?\r\n\t\t\tLIMIT 1\r\n\t\t"); $query->execute($id); // Assign this user's tasks to currently logged in user $query = new \TaskerMAN\Core\DBQuery("UPDATE `tasks`\r\n\t\t\tSET `assignee_uid` = ?\r\n\t\t\tWHERE `assignee_uid` = ?\r\n\t\t"); $query->execute(\TaskerMAN\WebInterface\WebInterface::$user->getID(), $id); // Make all tasks this user created to now be created by the currently logged in user $query = new \TaskerMAN\Core\DBQuery("UPDATE `tasks`\r\n\t\t\tSET `created_uid` = ?\r\n\t\t\tWHERE `created_uid` = ?\r\n\t\t"); $query->execute(\TaskerMAN\WebInterface\WebInterface::$user->getID(), $id); return true; }
/** * Returns the API token for a given user id * * @param int user id * @return string API Token */ public static function getUserAPIToken($uid) { $query = new \TaskerMAN\Core\DBQuery("SELECT `api_token`\r\n\t\t\tFROM `users`\r\n\t\t\tWHERE `id` = ?\r\n\t\t\tLIMIT 1\r\n\t\t"); $query->execute($uid); if ($query->rowCount() < 1) { return false; } $fetch = $query->row(); return $fetch['api_token']; }
/** * Clean up and delete test user from database */ public function deleteUser($uid) { $query = new TaskerMAN\Core\DBQuery("DELETE FROM `users`\n\t\t\tWHERE `id` = ?\n\t\t\tLIMIT 1\n\t\t"); $query->execute($uid); }
/** * Returns number of tasks assigned to each user * * @return array statistics */ public static function getTaskDistribution() { $query = new \TaskerMAN\Core\DBQuery("SELECT \r\n\t\t\t`tasks`.`assignee_uid`,\r\n\t\t\tCOUNT(*) AS `count`,\r\n\t\t\t`users`.`name`\r\n\t\t\tFROM `tasks` \r\n\t\t\tJOIN `users` ON `users`.`id` = `tasks`.`assignee_uid`\r\n\t\t\tGROUP BY `tasks`.`assignee_uid`\r\n\t\t"); $query->execute(); return $query->results(); }