Example #1
0
 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;
 }
Example #2
0
 public function __construct($ais)
 {
     $this->aids = ActivityInstance::toIds(unflatten($ais));
 }
Example #3
0
 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;
 }
Example #4
0
 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');
 }