/** * Retrieves programs of the currently loged in user * * @return array an array of com_meego_devprogram_programs objects * null if user is not logged in */ public static function get_open_programs_of_current_user() { $programs = array(); // retrieve the user's guid based on the login name $user = self::require_login(); if (!is_object($user)) { return null; } // all devices from this user and by fellow members of the same provider $memberships = com_meego_devprogram_membutils::get_memberships_of_current_user(); foreach ($memberships as $membership) { // check status if ($membership->status == CMD_MEMBERSHIP_APPROVED) { // get device objects $devices = com_meego_devprogram_devutils::get_devices(array('provider' => $membership->provider)); // find all programs belonging all devices found before foreach ($devices as $device) { $filters = array('status' => CMD_PROGRAM_OPEN, 'device' => $device->id); $programs = array_merge($programs, self::get_programs($filters)); } } } return $programs; }
/** * Prepares and shows the my program details page (cmd-my-program-details) * * Access: only owners and admins can load this page * * @param array args (not used) */ public function get_read_my(array $args) { $this->data['can_not_delete'] = true; $this->load_object($args); // admin of the program or belongs to the same provider if (com_meego_devprogram_utils::is_current_user_creator_or_admin($this->object) || com_meego_devprogram_membutils::is_current_user_member_of_provider($this->object->provider->id)) { if (!$this->object->number_of_applications) { // program can only be deleted in no one has applied for it yet $this->data['can_not_delete'] = false; } } else { // redirect to standard read page $this->relocate_to_read(); } }
/** * Prepares the update */ public function get_update(array $args) { $this->load_object($args); if (com_meego_devprogram_utils::is_current_user_creator_or_admin($this->object) || com_meego_devprogram_membutils::is_current_user_member_of_provider($this->object->id)) { // if creator // or admin // or good enough member parent::get_update($args); } else { $redirect = com_meego_devprogram_utils::get_url('provider_read', array('provider_name' => $args['provider_name'])); // redirect to the read page $this->mvc->head->relocate($redirect); } }
/** * Prepares and shows the application approval page * * Access: only owners of the programs can judge applications * * @param array args */ public function get_judge(array $args) { $this->load_object($args); if (!(com_meego_devprogram_utils::is_current_user_creator_or_admin($this->object) || com_meego_devprogram_membutils::is_current_user_member_of_provider($this->data['provider']->id))) { // not creator of the membership // not owner of the provider // not an administrator // nice try, but sorry, get back to index $this->mvc->head->relocate(com_meego_devprogram_utils::get_url('index', array())); } // we remove the toolbar on the judge form $this->data['membership']->can_manage = false; $this->load_judge_form(); $this->data['form'] = $this->form; unset($this->data['object']); }
/** * Retrieves devices of the currently loged in user * * @return array an array of com_meego_devprogram_device objects * null if user is not logged in */ public static function get_devices_of_current_user() { $devices = array(); $user = self::require_login(); if (!is_object($user)) { return null; } // all devices from this user and by fellow members of the same provider $memberships = com_meego_devprogram_membutils::get_memberships_of_current_user(); foreach ($memberships as $membership) { // check status if ($membership->status == CMD_MEMBERSHIP_APPROVED) { // get provider objects and add it to the array $devices = array_merge($devices, self::get_devices(array('provider' => $membership->provider))); } } return $devices; }
/** * Retrieves providers of the currently loged in user * * @return array an array of com_meego_devprogram_provider objects * null if user is not logged in */ public static function get_providers_of_current_user() { $providers = array(); $user = self::require_login(); if (!is_object($user)) { return null; } // get providers based on memberships $memberships = com_meego_devprogram_membutils::get_memberships_of_current_user(); foreach ($memberships as $membership) { // check status if ($membership->status == CMD_MEMBERSHIP_APPROVED) { // get provider objects and add it to the array $providers[] = self::get_provider_by_id($membership->provider); } } return $providers; }