/** * 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; }
/** * Extends an membership object with some handy properties * * @param object com_meego_devprogram_provider_membership object * @return object extended com_meego_devprogram_provider_membership object */ private static function extend_membership($object = null) { $membership = new com_meego_devprogram_provider_membership($object->guid); if ($membership) { // some urls $membership->read_url = com_meego_devprogram_utils::get_url('my_membership_read', array('membership_guid' => $membership->guid)); $membership->update_url = com_meego_devprogram_utils::get_url('my_membership_update', array('membership_guid' => $membership->guid)); $membership->delete_url = com_meego_devprogram_utils::get_url('my_membership_delete', array('membership_guid' => $membership->guid)); $membership->judge_url = com_meego_devprogram_utils::get_url('membership_judge', array('membership_guid' => $membership->guid)); // submitter's username $user = com_meego_devprogram_utils::get_user_by_person_guid($membership->person); if (is_object($user)) { // name of the person requested membership $membership->submitter = $user->firstname; //. ' ' . $user->lastname; } // pretty name of the provider $provider = new com_meego_devprogram_provider($membership->provider); $membership->providertitle = $provider->title; // human readable decision state of the application $mvc = midgardmvc_core::get_instance(); switch ($membership->status) { case CMD_MEMBERSHIP_PENDING: $state = $mvc->i18n->get('label_membership_state_pending'); $css = 'pending'; break; case CMD_MEMBERSHIP_APPROVED: $state = $mvc->i18n->get('label_membership_state_approved'); $css = 'approved'; break; case CMD_MEMBERSHIP_MOREINFO: $state = $mvc->i18n->get('label_membership_state_moreinfo'); $css = 'moreinfo'; break; case CMD_MEMBERSHIP_CANCELLED: $state = $mvc->i18n->get('label_membership_state_cancelled'); $css = 'cancelled'; break; case CMD_MEMBERSHIP_DENIED: $state = $mvc->i18n->get('label_membership_state_denied'); $css = 'denied'; break; default: $state = $mvc->i18n->get('label_membership_state_pending'); $css = 'pending'; } $membership->decision = ucfirst($state); $membership->state_css = $css; // now check if the applicant has actually updated since the last decision of the provider owner $membership->has_update = false; if ($membership->status == 1 && $membership->metadata->revisor == $membership->metadata->creator) { $membership->has_update = true; } return $membership; } }
/** * Extends an application object with some handy properties * * @param object com_meego_devprogram_application object * @return object extended com_meego_devprogram_application object */ private static function extend_application($object = null) { $application = new com_meego_devprogram_application($object->guid); if ($application) { // some urls $application->read_url = com_meego_devprogram_utils::get_url('my_application_read', array('application_guid' => $application->guid)); $application->update_url = com_meego_devprogram_utils::get_url('my_application_update', array('application_guid' => $application->guid)); $application->delete_url = com_meego_devprogram_utils::get_url('my_application_delete', array('application_guid' => $application->guid)); $application->judge_url = com_meego_devprogram_utils::get_url('application_judge', array('application_guid' => $application->guid)); // submitter's username $user = com_meego_devprogram_utils::get_user_by_person_guid($application->metadata->creator); if (is_object($user)) { $application->submitter = $user->firstname; #. ' ' . $user->lastname; } // human readable decision state of the application $mvc = midgardmvc_core::get_instance(); switch ($application->status) { case CMD_APPLICATION_PENDING: $state = $mvc->i18n->get('label_application_state_pending'); $css = 'pending'; break; case CMD_APPLICATION_APPROVED: $state = $mvc->i18n->get('label_application_state_approved'); $css = 'approved'; break; case CMD_APPLICATION_MOREINFO: $state = $mvc->i18n->get('label_application_state_moreinfo'); $css = 'moreinfo'; break; case CMD_APPLICATION_CANCELLED: $state = $mvc->i18n->get('label_application_state_cancelled'); $css = 'cancelled'; break; case CMD_APPLICATION_DENIED: $state = $mvc->i18n->get('label_application_state_denied'); $css = 'denied'; break; default: $state = $mvc->i18n->get('label_application_state_pending'); $css = 'pending'; } $application->decision = ucfirst($state); $application->state_css = $css; // now check if the applicant has actually updated since the last decision of the program owner $application->has_update = false; if ($application->status == 1 && $application->metadata->revisor == $application->metadata->creator) { $application->has_update = true; } // get the program this app is submitted for; get the provider and set it a new property to the app $programs = com_meego_devprogram_progutils::get_programs(array('id' => $application->program)); $application->programobject = $programs[0]; $application->provider = $programs[0]->provider; return $application; } }
/** * Adds some handy properties to device object * * @param object com_meego_devprogram_device object * @return object extended com_meego_devprogram_device object */ private function extend_device($object = null) { // q->toggle_readonly(false) does not work so we need a new object $device = new com_meego_devprogram_device($object->guid); $device->read_url = com_meego_devprogram_utils::get_url('device_read', array('device_name' => $device->name)); $device->update_url = com_meego_devprogram_utils::get_url('device_update', array('device_name' => $device->name)); $device->delete_url = com_meego_devprogram_utils::get_url('device_delete', array('device_name' => $device->name)); $mvc = midgardmvc_core::get_instance(); // set the pretty name of the device platform $device->prettyplatform = $mvc->configuration->platforms[$device->platform]; // set the provider of the device $device->providerobject = new com_meego_devprogram_provider($device->provider); return $device; }
/** * Adds some handy properties to program object * * @param object com_meego_devprogram_program object * @return object extended com_meego_devprogram_program object */ private static function extend_program($object = null) { // q->toggle_readonly(false) does not work so we need a new object $program = new com_meego_devprogram_program($object->guid); // set some urls, they can come handy $program->open_programs_url = com_meego_devprogram_utils::get_url('open_programs', array()); $program->read_url = com_meego_devprogram_utils::get_url('program_read', array('program_name' => $program->name)); $program->update_url = com_meego_devprogram_utils::get_url('program_update', array('program_name' => $program->name)); $program->delete_url = com_meego_devprogram_utils::get_url('program_delete', array('program_name' => $program->name)); $program->apply_url = com_meego_devprogram_utils::get_url('my_application_create', array('program_name' => $program->name)); // reformat the duedate value so that templates and controllers don't have to bother $program->deadline = date('Y-m-d', strtotime($program->duedate)); // create a placeholder for applications to this program by the curent user $program->myapps = array(); // if current user is owner then we can add more goodies $user = com_meego_devprogram_utils::get_current_user(); if (is_object($user)) { $program->read_my_url = com_meego_devprogram_utils::get_url('my_program_read', array('program_name' => $program->name)); $program->list_apps_url = com_meego_devprogram_utils::get_url('program_applications', array('program_name' => $program->name)); // set the number of apps (all but the cancelled ones) under this program $program->number_of_applications = com_meego_devprogram_apputils::get_count_applications_by_program($program->id); // gather all apps of this user to this program //$program->myapps = com_meego_devprogram_apputils::get_applications_of_current_user($object->id); } // get the provider of the device and set a new property to the program $devices = com_meego_devprogram_devutils::get_devices(array('id' => $program->device)); $providers = com_meego_devprogram_provutils::get_providers(array('guid' => $devices[0]->providerobject->guid)); $program->provider = $providers[0]; // by default everybody can apply $program->can_apply = true; // current date and time $now = new DateTime(); if ($object->duedate < $now) { // set the flag so we can show a user friendly status box $program->closed = true; } if (com_meego_devprogram_utils::is_current_user_creator($object) || count($program->myapps) && !$object->multiple || $object->duedate < $now) { // owners of a program or admins should not apply for that program // or // if user applied then we disable further applications // unless the program accepts multiple entries from the same person $program->can_apply = false; } return $program; }
/** * Prepares the delete page */ public function get_delete(array $args) { parent::get_delete($args); $this->data['index_url'] = com_meego_devprogram_utils::get_url('index', array()); $this->data['can_not_delete'] = com_meego_devprogram_progutils::any_open_program_uses_device($this->object->id); $this->data['delete_question'] = $this->mvc->i18n->get('question_device_delete', null, array('device_name' => $this->object->title)); }
/** * Prepares the delete page */ public function get_delete(array $args) { parent::get_delete($args); $this->data['index_url'] = com_meego_devprogram_utils::get_url('index', array()); $this->data['can_not_delete'] = false; $this->data['delete_question'] = $this->mvc->i18n->get('question_program_delete', null, array('program_name' => $this->data['program']->title)); }
/** * 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']); }