/**
  * 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();
Ejemplo n.º 4
0
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;
}