/**
  * 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;
 }
Beispiel #2
0
/**
 * 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'));
}