private function getBooks($project_id, $page = 1) { if (!Session::exists('member')) { Router::redirect('home.index'); } $nb = self::NUMBER_ITEM_PER_PAGE; $member = Session::get('member'); $user = $this->checkUser($member['id'], $member['nickname']); $search = Helper::post('research'); $project = Projects::select()->where('id', $project_id)->andWhere('id_leader', $member['id'])->get(0, 1); if (empty($project)) { Router::url('home.index'); } $project = $project[0]; $book = UsersBook::select()->addFields(['users_book.status' => 'status', 'F.id' => 'id_from', 'F.nickname' => 'nickname_from', 'T.id' => 'id_to', 'T.nickname' => 'nickname_to'])->innerJoin('users', 'F')->onJoin('F.id', '=', 'users_book.id_user_from')->innerJoin('users', 'T')->onJoin('T.id', '=', 'users_book.id_user_to')->where('status', 2)->andGroup([new Condition('WHERE', '', 'users_book.id_user_from', '!=', $project->id_client, false), new Condition('WHERE', 'AND', 'users_book.id_user_to', '!=', $project->id_client, false)])->andGroup([new Condition('WHERE', '', 'F.nickname', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'F.mail', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'T.nickname', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'T.mail', 'LIKE', '%' . $search . '%', false)])->andGroup([new Condition('WHERE', '', 'id_user_from', '=', $member['id'], false), new Condition('WHERE', 'OR', 'id_user_to', '=', $member['id'], false)])->get(($page - 1) * $nb, $nb); $count = UsersBook::select()->addFields(['COUNT(*)' => 'nb_row'])->innerJoin('users', 'F')->onJoin('F.id', '=', 'users_book.id_user_from')->innerJoin('users', 'T')->onJoin('T.id', '=', 'users_book.id_user_to')->where('status', 2)->andGroup([new Condition('WHERE', '', 'F.nickname', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'F.mail', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'T.nickname', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'T.mail', 'LIKE', '%' . $search . '%', false)])->andGroup([new Condition('WHERE', '', 'id_user_from', '=', $member['id'], false), new Condition('WHERE', 'OR', 'id_user_to', '=', $member['id'], false)])->get(0, 1)[0]; $max_page = ceil($count->nb_row / $nb); if ($max_page == 0) { $max_page = 1; } $this->set('books', $book); $this->set('max_page', $max_page); $this->set('project', $project); $this->set('user', $user); $this->render('task/detail_user'); }
public function index() { if (Session::exists('member')) { $member = Session::get('member'); $projects = Projects::select('P')->addFields(['TIMESTAMPDIFF(DAY, NOW(), P.deadline)' => 'nb_day', 'P.id' => 'project_id', 'P.name', 'P.price', 'P.deadline', 'U.id' => 'id_user_leader', 'U.nickname' => 'nickname_user_leader', 'UC.id' => 'id_user_client', 'UC.nickname' => 'nickname_user_client'])->innerJoin('users', 'U')->onJoin('U.id', 'P.id_leader')->leftJoin('tasks', 'T')->onJoin('T.id_project', 'P.id')->leftJoin('task_users', 'task_users')->onJoin('task_users.id_task', 'T.id')->leftJoin('users', 'UC')->onJoin('UC.id', 'P.id_client')->where('id_client', $member['id'])->orWhere('id_leader', $member['id'])->orWhere('task_users.id_user', $member['id'])->groupBy('project_id')->get(); $this->set('projects', $projects); } $this->script('projects'); $this->render('task/home', 'home.task.title'); }
public static function canUpdate($user) { $can_update = false; if (Session::exists('member')) { $member = Session::get('member'); if ($member['nickname'] == $user->nickname && $member['id'] == $user->id && $member['user_key'] == $user->user_key) { $can_update = true; } } return $can_update; }
public static function check($type, $auths) { $id_group = 0; if (Session::exists('member')) { $member = Session::get('member'); $id_group = $member['id_group']; } $auth = self::$authorization[$type]['nothing_right']; if ($id_group != 0) { $group = Groups::select()->where('id', $id_group)->get(); if (!empty($group)) { $field = "auth_" . $type; $auth = $group[0]->{$field}; } } $br = new BinaryRight($auth); return $br->compare($auths); }
private function getForContact($page = 1) { if (!Session::exists('member')) { Router::redirect('home.index'); } $nb = self::NUMBER_ITEM_PER_PAGE; $member = Session::get('member'); $member = $this->checkUser($member['id'], $member['nickname']); $search = Helper::post('research'); $all_contact = UsersBook::select()->where('id_user_from', $member->id)->orWhere('id_user_to', $member->id)->get(); $list = [$member->id]; foreach ($all_contact as $contact) { if ($contact->id_user_from == $member->id) { $list[] = $contact->id_user_to; } else { $list[] = $contact->id_user_from; } } $users = Users::select()->addFields(['users.id' => 'user_id', 'users.nickname' => 'user_nickname', 'users.mail' => 'user_mail'])->where('users.mail_check', '1')->andWhere('users.id', 'NOT IN', $list)->andGroup([new Condition('WHERE', '', 'users.nickname', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'users.mail', 'LIKE', '%' . $search . '%', false)])->get(($page - 1) * $nb, $nb); $count = Users::select()->addFields(['COUNT(*)' => 'nb_user'])->where('users.mail_check', '1')->andWhere('users.id', 'NOT IN', $list)->andGroup([new Condition('WHERE', '', 'users.nickname', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'users.mail', 'LIKE', '%' . $search . '%', false)])->get(0, 1); $max_page = 0; if (!empty($count)) { $count = $count[0]; $max_page = ceil($count->nb_user / $nb); } if ($max_page == 0) { $max_page = 1; } $this->set('max_page', $max_page); $this->set('users', $users); $this->set('member', $member); $this->render('user/search'); }