/** * Return array of users that are subscribed to this specific message * * @param ProjectDataObject $message * @return array */ static function getUsersByObject(ProjectDataObject $object) { $users = array(); $subscriptions = ObjectSubscriptions::findAll(array('conditions' => '`object_id` = ' . DB::escape($object->getId()) . ' AND `object_manager` = ' . DB::escape(get_class($object->manager())))); // findAll if (is_array($subscriptions)) { foreach ($subscriptions as $subscription) { $user = $subscription->getUser(); if (!$user instanceof User) { continue; } $user_object_workspaces = $object->getWorkspaces($user->getWorkspacesQuery()); $can_read = true; foreach ($user_object_workspaces as $ws) { $can_read = can_read_type($user, $ws, get_class($object->manager())); if ($can_read) { break; } } if (!$can_read) { continue; } $users[] = $user; } // foreach } // if return $users; }
function allowed_users_view_events() { $comp_array = array(); $actual_user_id = isset($_GET['user']) ? $_GET['user'] : logged_user()->getId(); $wspace_id = isset($_GET['ws_id']) ? $_GET['ws_id'] : 0; $ws = Projects::findByCSVIds($wspace_id); $evid = array_var($_GET, 'evid'); $companies = Companies::findAll(); $i = 0; foreach ($companies as $comp) { $users = $comp->getUsersOnWorkspaces($ws); if (is_array($users)) { foreach ($users as $k => $user) { // removing event creator from notification list $keep = false; foreach ($ws as $w) { if (can_read_type($user, $w, 'ProjectEvents')) { $keep = true; } } if (!$keep) { unset($users[$k]); } } if (count($users) > 0) { $comp_data = array('id' => $i++, 'object_id' => $comp->getId(), 'name' => $comp->getName(), 'logo_url' => $comp->getLogoUrl(), 'users' => array()); foreach ($users as $user) { $comp_data['users'][] = array('id' => $user->getId(), 'name' => $user->getDisplayName(), 'avatar_url' => $user->getAvatarUrl(), 'invited' => $evid == 0 ? $user->getId() == $actual_user_id : EventInvitations::findOne(array('conditions' => "`event_id` = {$evid} and `user_id` = " . $user->getId())) != null, 'mail' => $user->getEmail()); } $comp_array[] = $comp_data; } } } $object = array("totalCount" => count($comp_array), "start" => 0, "companies" => array()); $object['companies'] = $comp_array; ajx_extra_data($object); ajx_current("empty"); }
if (!isset($workspaces)) { $workspaces = array(active_or_personal_project()); } if (!isset($genid)) { $genid = gen_id(); } // get users with permissions $users = array(); foreach ($workspaces as $ws) { $someUsers = $ws->getUsers(false); foreach ($someUsers as $u) { if ($type == 'Contacts' && $u->getCanManageContacts()) { $canRead = true; } else { // see if user can read type of object in the workspace $canRead = can_read_type($u, $ws, $type); } if ($canRead) { $users["u" . $u->getId()] = $u; } } } $users = array_values($users); $grouped = array(); $allChecked = true; foreach ($users as $user) { if (!in_array($user->getId(), $subscriberIds)) { $allChecked = false; } if (!isset($grouped[$user->getCompanyId()]) || !is_array($grouped[$user->getCompanyId()])) { $grouped[$user->getCompanyId()] = array();
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; }