Ejemplo n.º 1
0
 /**
  * Gathers roles that belong to a package
  * @param guid of a package
  * @return array
  */
 public function get_roles($package_guid, $filter = null)
 {
     $retval = array();
     $storage = new midgard_query_storage('com_meego_package_role');
     $q = new midgard_query_select($storage);
     $qc = new midgard_query_constraint_group('AND');
     $qc->add_constraint(new midgard_query_constraint(new midgard_query_property('package'), '=', new midgard_query_value($package_guid)));
     if ($filter) {
         $qc->add_constraint(new midgard_query_constraint(new midgard_query_property('role'), '=', new midgard_query_value($filter)));
     } else {
         $qc->add_constraint(new midgard_query_constraint(new midgard_query_property('id'), '>', new midgard_query_value(0)));
     }
     $q->set_constraint($qc);
     $q->execute();
     $roles = $q->list_objects();
     if ($roles) {
         foreach ($roles as $role) {
             if (!array_key_exists($role->role, $retval)) {
                 $retval[$role->role] = array();
                 $retval[$role->role]['users'] = array();
             }
             if (isset($role->user)) {
                 $user = com_meego_packages_utils::get_user_by_guid($role->user);
                 if (!array_key_exists($user->login, $retval[$role->role]['users'])) {
                     $retval[$role->role]['users'][$user->login] = array();
                 }
                 $retval[$role->role]['users'][$user->login]['login'] = $user->login;
                 $retval[$role->role]['users'][$user->login]['profile'] = $this->mvc->configuration->user_profile_prefix . $user->login;
             }
             if (count($retval[$role->role]['users']) > 1) {
                 $retval[$role->role]['title'] = $this->mvc->i18n->get('label_roles_' . $role->role);
             } else {
                 $retval[$role->role]['title'] = $this->mvc->i18n->get('label_role_' . $role->role);
             }
         }
     }
     return $retval;
 }