/** * 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; }
/** * Renders a list of users to add as subscribers, used to add subscribers from the objects view. * @param $object * @param $genid * @param $subscribers * @param $workspaces * @return html text */ function render_add_subscribers_select(ProjectDataObject $object, $genid = null, $subscribers = null, $workspaces = null) { if (!isset($genid)) { $genid = gen_id(); } $subscriberIds = array(); if (is_array($subscribers)) { foreach ($subscribers as $u) { $subscriberIds[] = $u->getId(); } } else { if ($object->isNew()) { $subscriberIds[] = logged_user()->getId(); } else { foreach ($object->getSubscribers() as $u) { $subscriberIds[] = $u->getId(); } } } if (!isset($workspaces)) { if ($object->isNew()) { $workspaces = array(active_or_personal_project()); } else { $workspaces = $object->getWorkspaces(); } } tpl_assign('type', get_class($object->manager())); tpl_assign('workspaces', $workspaces); tpl_assign('subscriberIds', $subscriberIds); tpl_assign('genid', $genid); return tpl_fetch(get_template_path('add_subscribers_list', 'object')); }