/**
  * Show companies index page
  *
  * @param void
  * @return null
  */
 function index()
 {
     if ($this->request->isApiCall()) {
         $this->serveData(Companies::findByIds($this->logged_user->visibleCompanyIds()), 'companies');
     } else {
         $page = (int) $this->request->get('page');
         if ($page < 1) {
             $page = 1;
         }
         // if
         list($companies, $pagination) = Companies::paginateActive($this->logged_user, $page, 30);
         $this->smarty->assign(array('companies' => $companies, 'pagination' => $pagination));
     }
     // if
 }
 /**
  * Returns array of companies that are involved in project
  * @param Project $project
  * @return array
  */
 function findByProject($project)
 {
     $people = ProjectUsers::findUsersByProject($project);
     if (is_foreachable($people)) {
         $company_ids = array();
         foreach ($people as $person) {
             if (!in_array($person->getCompanyId(), $company_ids)) {
                 $company_ids[] = $person->getCompanyId();
             }
             // if
         }
         // foreach
         return Companies::findByIds($company_ids);
     } else {
         return null;
     }
     // if
 }
 /**
  * Show people subscribed to a given object
  *
  * @param void
  * @return null
  */
 function subscriptions()
 {
     $this->skip_layout = $this->request->isAsyncCall();
     if (!$this->active_object->canEdit($this->logged_user)) {
         $this->httpError(HTTP_ERR_FORBIDDEN, null, true, $this->request->isApiCall());
     }
     // if
     $users = $this->active_project->getUsers();
     if (is_foreachable($users)) {
         $people = array();
         $grouped_users = array();
         foreach ($users as $user) {
             $company_id = $user->getCompanyId();
             if (!isset($people[$company_id])) {
                 $people[$company_id] = array('users' => null, 'company' => null);
             }
             // if
             $people[$company_id]['users'][] = $user;
         }
         // foreach
         $companies = Companies::findByIds(array_keys($people));
         foreach ($companies as $company) {
             $people[$company->getId()]['company'] = $company;
         }
         // foreach
         $this->smarty->assign('people', $people);
     } else {
         $this->smarty->assign('people', null);
     }
     // if
 }
 /**
  * Show people page
  *
  * @param void
  * @return null
  */
 function index()
 {
     if ($this->active_project->isNew()) {
         $this->httpError(HTTP_ERR_NOT_FOUND);
     }
     // if
     $users = $this->active_project->getUsers();
     // API
     if ($this->request->isApiCall()) {
         $project_users_data = array();
         if (is_foreachable($users)) {
             foreach ($users as $user) {
                 $user_data = array('user_id' => $user->getId(), 'role' => null, 'permissions' => array(), 'permalink' => $user->getViewUrl());
                 $permissions = array_keys(Permissions::findProject());
                 if ($user->isAdministrator()) {
                     $user_data['role'] = 'administrator';
                 } elseif ($user->isProjectManager()) {
                     $user_data['role'] = 'project-manager';
                 } elseif ($user->isProjectLeader($this->active_project)) {
                     $user_data['role'] = 'project-leader';
                 }
                 // if
                 if ($user_data['role'] === null) {
                     $project_role = $user->getProjectRole($this->active_project);
                     if (instance_of($project_role, 'Role')) {
                         $user_data['role'] = $project_role->getId();
                     } else {
                         $user_data['role'] = 'custom';
                     }
                     // if
                     foreach ($permissions as $permission) {
                         $user_data['permissions'][$permission] = (int) $user->getProjectPermission($permission, $this->active_project);
                     }
                     // foreach
                 } else {
                     foreach ($permissions as $permission) {
                         $user_data['permissions'][$permission] = PROJECT_PERMISSION_MANAGE;
                     }
                     // foreach
                 }
                 // if
                 $project_users_data[] = $user_data;
             }
             // foreach
         }
         // if
         $this->serveData($project_users_data, 'project_users');
         // Regular interface
     } else {
         if (is_foreachable($users)) {
             $people = array();
             $grouped_users = array();
             //BOF:mod 20110712 ticketid237
             $company_by_custom_sort = array();
             foreach ($users as $user) {
                 $company_id = $user->getCompanyId();
                 if (!in_array($company_id, $company_by_custom_sort)) {
                     $company_by_custom_sort[] = $company_id;
                 }
             }
             asort($company_by_custom_sort);
             foreach ($company_by_custom_sort as $company_id) {
                 $people[$company_id] = array('users' => null, 'company' => null);
             }
             //EOF:mod 20110712 ticketid237
             foreach ($users as $user) {
                 $company_id = $user->getCompanyId();
                 if (!isset($people[$company_id])) {
                     $people[$company_id] = array('users' => null, 'company' => null);
                 }
                 // if
                 $people[$company_id]['users'][] = $user;
             }
             // foreach
             $companies = Companies::findByIds(array_keys($people));
             foreach ($companies as $company) {
                 $people[$company->getId()]['company'] = $company;
             }
             // foreach
             $this->smarty->assign('people', $people);
         } else {
             $this->smarty->assign('people', null);
         }
         // if
     }
     // if
 }
 /**
  * Show and process object subscribers page
  *
  * @param void
  * @return null
  */
 function object_subscribers()
 {
     $this->skip_layout = true;
     $object = null;
     $object_id = $this->request->getId('object_id');
     if ($object_id) {
         $object = ProjectObjects::findById($object_id);
     }
     // if
     if (!instance_of($object, 'ProjectObject')) {
         $this->httpError(HTTP_ERR_NOT_FOUND);
     }
     // if
     $project = $object->getProject();
     if (!instance_of($project, 'Project')) {
         $this->httpError(HTTP_ERR_NOT_FOUND);
     }
     // if
     if (!$object->canEdit($this->logged_user)) {
         $this->httpError(HTTP_ERR_FORBIDDEN);
     }
     // if
     $this->smarty->assign(array('active_project' => $project, 'active_object' => $object));
     $users = $project->getUsers();
     if (is_foreachable($users)) {
         $people = array();
         $grouped_users = array();
         foreach ($users as $user) {
             $company_id = $user->getCompanyId();
             if (!isset($people[$company_id])) {
                 $people[$company_id] = array('users' => null, 'company' => null);
             }
             // if
             $people[$company_id]['users'][] = $user;
         }
         // foreach
         $companies = Companies::findByIds(array_keys($people));
         foreach ($companies as $company) {
             $people[$company->getId()]['company'] = $company;
         }
         // foreach
         $this->smarty->assign('people', $people);
     } else {
         $this->smarty->assign('people', null);
     }
     // if
 }
Esempio n. 6
0
 /**
  * Use array of users and organize them by category
  *
  * @param array $users
  * @return array
  */
 function groupByCompany($users)
 {
     $result = array();
     if (is_foreachable($users)) {
         $company_ids = array_unique(objects_array_extract($users, 'getCompanyId'));
         if (is_foreachable($company_ids)) {
             $companies = Companies::findByIds($company_ids);
             foreach ($companies as $company) {
                 $result[$company->getId()] = array('company' => $company, 'users' => array());
             }
             // foreach
             foreach ($users as $user) {
                 $result[$user->getCompanyId()]['users'][] = $user;
             }
             // foreach
         }
         // if
     }
     // if
     return $result;
 }