public function commit() { if ($this->valid_origin) { $av = new ActivityValidate(array('writer' => $this->writer, 'target' => $this->target, 'title' => $this->title, 'description' => $this->description, 'begin' => $this->begin, 'end' => $this->end, 'origin' => $this->origin)); $v = new Validate(array('writer' => $this->writer, 'group' => $this->target->group(), 'item' => $av, 'type' => 'activity')); $v->insert(); } else { $a = new Activity(array('target' => $this->target, 'origin' => $this->origin, 'title' => $this->title, 'description' => $this->description, 'days' => '')); $a->insert(); $ai = new ActivityInstance(array('activity' => $a, 'writer' => $this->writer, 'comment' => '', 'begin' => $this->begin, 'end' => $this->end)); $ai->insert(); } return true; }
function handler_activity($page) { $title = Env::t('title', ''); $desc = Env::t('activity_description', ''); $activities = new ActivityFilter(new PFC_And(new AFC_TargetGroup(S::user()->castes(Rights::admin())->groups()), new AFC_Regular(true))); $activities = $activities->get(); $activities->select(ActivitySelect::base()); if (Env::has('send_new')) { $required_fields = array('origin_activity_proposal', 'target_group_activity', 'title', 'begin', 'end'); foreach ($required_fields as $field) { if (Env::v($field, '') == '') { throw new Exception("Missing field ({$field})"); } } try { // Origin & Target if (Env::t('origin_activity_proposal') == 'false') { $origin = false; } else { $origin = new Group(Env::i('origin_activity_proposal')); } list($target, $target_group) = self::target_picker_to_caste_group('activity'); $begin = new FrankizDateTime(Env::t('begin')); $end = new FrankizDateTime(Env::t('end')); if ($origin !== false && !S::user()->hasRights($origin, Rights::admin())) { if (S::user()->hasRights($origin, Rights::restricted())) { $valid_origin = true; $origin->select(GroupSelect::base()); } else { throw new Exception("Invalid credentials for origin Group"); } } else { $valid_origin = false; } $target->select(CasteSelect::validate()); $av = new ActivityValidate(array('writer' => S::user(), 'target' => $target, 'title' => $title, 'description' => $desc, 'begin' => $begin, 'end' => $end, 'origin' => $origin, 'valid_origin' => $valid_origin)); if ($origin !== false || S::user()->group()->id() != $target->group()->id()) { $v = new Validate(array('writer' => S::user(), 'group' => $valid_origin ? $origin : $target_group, 'item' => $av, 'type' => 'activity')); $v->insert(); } else { $av->commit(); $page->assign('auto', true); } $page->assign('envoye', true); } catch (Exception $e) { $page->assign('msg', $e->getMessage() . 'La date est incorrecte.'); } } if (Env::has('send_reg')) { $begin = Env::t('begin'); $end = Env::t('end'); $date = Env::t('other_date'); $aid = Env::i('regular_activity_proposal', ''); $a = $activities->get($aid); if (!$a) { $page->assign('msg', 'Tu n\'as pas le droit de créer de nouvelles instances de cette activité.'); } else { $dates = $a->next_dates(5); foreach ($dates as $temp) { foreach ($temp as $dat) { if (Env::has($dat . '_regular_proposal')) { try { $begin_c = new FrankizDateTime($dat . ' ' . $begin . ':00'); $end_c = new FrankizDateTime($dat . ' ' . $end . ':00'); $av = new ActivityInstance(array('activity' => $a, 'writer' => S::user(), 'begin' => $begin_c, 'end' => $end_c, 'comment' => Env::t('activity_comment', ''))); $av->insert(); } catch (Exception $e) { $page->assign('msg', 'Les dates sont fausses.'); } } } } if (Env::has('other_regular_proposal')) { try { $begin_c = new FrankizDateTime($date . ' ' . $begin . ':00'); $end_c = new FrankizDateTime($date . ' ' . $end . ':00'); $av = new ActivityInstance(array('activity' => $a, 'writer' => S::user(), 'begin' => $begin_c, 'end' => $end_c, 'comment' => Env::t('activity_comment', ''))); $av->insert(); } catch (Exception $e) { $page->assign('msg', 'Les dates sont fausses.'); } } $page->assign('msg', 'Ton activité a été rajoutée.'); } } $page->assign('title_activity', $title); $page->assign('desc', $desc); $page->assign('regular_activities', $activities); $page->assign('title', 'Proposer une activité'); $page->addCssLink('validate.css'); $page->changeTpl('validate/prop.activity.tpl'); }