/** * Adds some handy properties to provider object * * @param object com_meego_devprogram_provider object * @return object extended com_meego_devprogram_provider object */ private function extend_provider($object = null) { // q->toggle_readonly(false) does not work so we need a new object $provider = new com_meego_devprogram_provider($object->guid); $provider->read_url = com_meego_devprogram_utils::get_url('provider_read', array('provider_name' => $provider->name)); $provider->update_url = com_meego_devprogram_utils::get_url('provider_update', array('provider_name' => $provider->name)); $provider->delete_url = com_meego_devprogram_utils::get_url('provider_delete', array('provider_name' => $provider->name)); $provider->join_url = com_meego_devprogram_utils::get_url('my_membership_create', array('provider_name' => $provider->name)); // if current user is owner then we can add more goodies $user = com_meego_devprogram_utils::get_current_user(); $provider->number_of_members = false; $mvc = midgardmvc_core::get_instance(); // set the can join flag to true by default $provider->can_join = true; // set management fflag to false by default $provider->can_manage = false; // can current user manage the provider if (com_meego_devprogram_utils::is_current_user_creator_or_admin($object) || com_meego_devprogram_membutils::is_current_user_member_of_provider($object->id)) { $provider->can_manage = true; $provider->can_join = false; // set the url for the membership list page $provider->list_memberships_url = com_meego_devprogram_utils::get_url('provider_members', array('provider_name' => $provider->name)); // set the approved number of members (all but the cancelled ones) of this provider $provider->number_of_members = count(com_meego_devprogram_membutils::get_memberships_by_provider($provider->id)); // set the number of pending membership requests $provider->number_of_members = count(com_meego_devprogram_membutils::get_memberships_by_provider($provider->id)); } // can the provider be deleted; ie. check if provider has devices that belong to open programs $provider->can_not_delete = com_meego_devprogram_provutils::has_provider_devices($object->id); return $provider; }
/** * Prepares and shows the device details page (cmd-device-details) * * Access: anyone can read the device details * owners will get extra options on the page * * @param array args (not used) */ public function get_read(array $args) { $this->load_object($args); $this->data['device'] = $this->object; $this->data['can_manage'] = com_meego_devprogram_utils::is_current_user_creator_or_admin($this->object); $this->data['can_not_delete'] = com_meego_devprogram_progutils::any_open_program_uses_device($this->object->id); }
/** * 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']); }