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; }
public function __construct($ais) { $this->aids = ActivityInstance::toIds(unflatten($ais)); }
function handler_ajax_modify($page, $type) { $json = json_decode(Env::v('json')); if ($type == 'instance') { $id = $json->admin_id; $ai = new ActivityInstance($id); $ai->select(ActivityInstanceSelect::base()); if (!S::user()->hasRights($ai->target()->group(), Rights::admin())) { throw new Exception("Invalid credentials"); } S::assert_xsrf_token(); try { $begin = new FrankizDateTime($json->begin); $end = new FrankizDateTime($json->end); if ($ai->regular()) { $ai->comment($json->activity_comment); $ai->begin($begin); $ai->end($end); } else { $ai->begin($begin); $ai->end($end); $a = $ai->activity(); $a->title($json->title); $a->description($json->activity_description); } $page->jsonAssign('success', true); } catch (Exception $e) { $page->jsonAssign('success', false); } } else { if ($type == 'regular') { $id = $json->aid; $a = new Activity($id); $a->select(ActivitySelect::base()); if (!S::user()->hasRights($a->target()->group(), Rights::admin())) { throw new Exception("Invalid credentials"); } S::assert_xsrf_token(); if (preg_match('`^\\d{2}:\\d{2}:\\d{2}$`', $json->begin) && strtotime($json->begin) !== false && preg_match('`^\\d{2}:\\d{2}:\\d{2}$`', $json->end) && strtotime($json->end) !== false) { $a->title($json->title); $a->description($json->activity_description); $key = 'days[]'; $days = unflatten($json->{$key}); $a->days(implode(',', $days)); $a->default_begin($json->begin); $a->default_end($json->end); $page->jsonAssign('success', true); } else { $page->jsonAssign('success', false); } } } return PL_JSON; }
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'); }