/** * Returns true if user can assign the task or an error string if not. * @param $user * @param $task * @param $company_id * @param $user_id * @return mixed */ function can_assign_task_to_company_user(User $user, ProjectTask $task, $company_id, $user_id) { if ($company_id != 0) { $workspace = $task->getProject(); if ($user_id != 0) { $assignee = Users::findById($user_id); if (!$assignee instanceof User) { return lang('error assign task user dnx'); } else { if (!can_assign_task($user, $workspace, $assignee)) { return lang('error assign task permissions user'); } } } else { $company = Companies::findById($company_id); if (!$company instanceof Company) { return lang('error assign task company dnx'); } else { if (!can_assign_task($user, $workspace, $company)) { return lang('error assign task permissions company'); } } } } return true; }
function allowed_users_to_assign($wsid) { $ws = Projects::findById($wsid); $comp_array = array(); $companies = Companies::findAll(); if ($companies != null) { foreach ($companies as $comp) { if ($ws != null) { $users = $comp->getUsersOnProject($ws); } else { continue; } if (is_array($users)) { foreach ($users as $k => $user) { // if logged_user can assign tasks to user and user can read tasks the user is allowed if (!can_assign_task(logged_user(), $ws, $user) || !can_read_type($user, $ws, 'ProjectTasks')) { unset($users[$k]); } } if (count($users) > 0) { $comp_data = array('id' => $comp->getId(), 'name' => $comp->getName(), 'users' => array()); foreach ($users as $user) { $comp_data['users'][] = $user->getArrayInfo(); } //if ($ws == null || can_assign_task(logged_user(), $ws, $comp)) { if (count($users) > 0) { $comp_array[] = $comp_data; } } } } } return $comp_array; }