public function updateAction()
 {
     //SxCms_Acl::requireAcl('subscriptions', 'subscription.update');
     $subscription_id = $this->_getParam('id');
     $proxy = new SxCms_Event_Subscription_DataMapper();
     $subscription = $proxy->getSubscriptionById($subscription_id);
     $proxyEvents = new SxCms_Event_DataMapper();
     $event = $proxyEvents->getEventById($subscription->getEventId());
     if ($this->getRequest()->isPost()) {
         if ($subscription->getStatus() != $this->_getParam('status') && $this->_getParam('status') == 1) {
             $subscription->sendConfirmation();
         }
         $subscription->setStatus($this->_getParam('status'));
         $subscription->save();
         foreach ($event->getFields() as $field) {
             if ($field->getType() == 'checkbox') {
                 $value = implode(';', $this->_getParam($field->getName()));
             } else {
                 $value = $this->_getParam($field->getName());
             }
             $SubF = new SxCms_Event_Subscription_Field();
             $SubF->setSubscriptionId($subscription_id)->setFieldId($field->getId())->setName($field->getName())->setValue($value);
             $mapperSubField = new SxCms_Event_Subscription_Field_DataMapper();
             if ($mapperSubField->checkIfExists($SubF)) {
                 $SubF->update();
             } else {
                 $SubF->save();
             }
         }
         $this->_helper->redirector->gotoSimple('list', 'event_subscription', null, array('id' => $event->getId()));
     }
     $this->view->subscription = $subscription;
     $this->view->event = $event;
     $this->view->messages = Sanmax_MessageStack::getInstance('SxCms_Event_Subscription');
 }
 public function indexAction()
 {
     $this->_helper->layout->setLayout('full');
     $event_id = $this->_getParam('id');
     if ($this->getRequest()->isGet()) {
         $proxy = new SxCms_Event_DataMapper();
         $event = $proxy->getEventById($event_id);
     }
     if ($this->getRequest()->isPost()) {
         $proxy = new SxCms_Event_DataMapper();
         $event = $proxy->getEventById($event_id);
         $subscription = array();
         $errors = array();
         foreach ($event->getFields() as $field) {
             if (!$this->_getParam($field->getName())) {
                 $errors[$field->getName()] = $field->getLabel();
             }
             $subscription[$field->getName()] = $this->_getParam($field->getName());
         }
         if (sizeof($errors) == 0) {
             $Subscription = new SxCms_Event_Subscription();
             $Subscription->setEventId($event_id);
             if ($event->isValidateIntern()) {
                 $Subscription->setStatus(0);
                 $sub_id = $Subscription->save();
             } else {
                 $Subscription->setStatus(1);
                 $sub_id = $Subscription->save();
                 $Subscription->sendConfirmation();
             }
             foreach ($event->getFields() as $field) {
                 if ($field->getType() == 'checkbox') {
                     $value = implode(';', $this->_getParam($field->getName()));
                 } else {
                     $value = $this->_getParam($field->getName());
                 }
                 $SubF = new SxCms_Event_Subscription_Field();
                 $SubF->setSubscriptionId($sub_id)->setFieldId($field->getId())->setName($field->getName())->setValue($value);
                 $SubF->save();
             }
             $this->view->result = true;
         } else {
             $this->view->errors = $errors;
         }
         $this->view->subscription = $subscription;
     }
     $mapperSub = new SxCms_Event_Subscription_DataMapper();
     $subscriptions = $mapperSub->getSubscriptionsForEvent($event_id);
     $now = strtotime(date('Y-m-d'));
     if (count($subscriptions) >= $event->getSubscriptionMax() || strtotime($event->getDateEnd()) < $now || strtotime($event->getDateStart()) > $now) {
         $event->setSubscriptionAllow(false);
     }
     $this->view->subscriptions = $subscriptions;
     $this->view->event = $event;
     $this->getResponse()->setHeader('Last-Modified', $event->getDateStart("%a, %d %b %Y %H:%I%S GMT"));
 }