/** * 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; }