/** * 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; } }
/** * Deletes the device * First it makes sure that all expired programs are deleted, * otherwise a device can not be deleted if it is assigned to a program */ public function post_delete(array $args) { # make sure all closed (expired) programs are marked deleted # before attempting to delete a device com_meego_devprogram_progutils::delete_expired_programs(); parent::post_delete($args); }
/** * Prepares and shows the program list page (cmd-list-programs) * * Access: anyone can list closed programs * * @param array args (not used) */ public function get_closed_programs_list(array $args) { $this->data['type'] = 'closed'; $this->data['index_url'] = com_meego_devprogram_utils::get_url('index', array()); $this->data['programs'] = com_meego_devprogram_progutils::get_programs(array('status' => CMD_PROGRAM_CLOSED, 'deleted' => true)); }
/** * Prepares the application page * * @param array args */ public function get_create(array $args) { if (!strlen($args['program_name'])) { $url = com_meego_devprogram_utils::get_url('index', $args); $this->mvc->head->relocate($url); } // require login $redirect = com_meego_devprogram_utils::get_url('my_application_create', $args); $user = com_meego_devprogram_utils::require_login($redirect); // @todo: sanity check $programs = com_meego_devprogram_progutils::get_programs(array('name' => $args['program_name'])); $program = $programs[0]; if (!is_object($program)) { throw new InvalidArgumentException("Program: {$args['program_name']} con not be found"); } $this->data['program'] = $program; // check if the user has applied for the program and // display a warning if yes // in case of multiple applications we only refer to the 1st $this->data['myapps'] = com_meego_devprogram_apputils::get_applications_of_current_user($program->id); $now = new DateTime(); if ($program->duedate >= $now && (!count($this->data['myapps']) || $program->multiple)) { // we move on if user has not applied or // the program accepts multiple entries from the same person parent::get_create($args); } // load the text limiter js files $this->mvc->head->add_jsfile(MIDGARDMVC_STATIC_URL . '/' . $this->component . '/js/textLimit.js'); $this->mvc->head->add_jsfile(MIDGARDMVC_STATIC_URL . '/' . $this->component . '/js/limiter_for_applications.js'); }
/** * Prepares and shows the index page (cmd-index) * * @param array args (not used) */ public function get_index(array $args) { $this->data['latest'] = com_meego_devprogram_progutils::get_latest_program(); $this->data['closing'] = com_meego_devprogram_progutils::get_closing_programs(); }