/** * 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 and shows the provider details page (cmd-provider-details) * * Access: anyone can read the provider details * owners will get extra options on the page * * @param array args (not used) */ public function get_list(array $args) { $this->data['providers'] = com_meego_devprogram_provutils::get_providers(array(1 => 1)); }
/** * Prepares the membership page * * @param array args */ public function get_create(array $args) { if (!strlen($args['provider_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_membership_create', $args); $user = com_meego_devprogram_utils::require_login($redirect); // @todo: sanity check $providers = com_meego_devprogram_provutils::get_providers(array('name' => $args['provider_name'])); $provider = $providers[0]; if (!is_object($provider)) { throw new InvalidArgumentException("Provider: {$args['provider_name']} con not be found"); } $this->data['provider'] = $provider; $this->data['person'] = $user->person; // check if the user has applied for the program and // display a warning if yes $this->data['mymemberships'] = com_meego_devprogram_membutils::get_memberships_of_current_user($provider->id); if (!count($this->data['mymemberships'])) { // we move on if user has not member yet parent::get_create($args); } }