function add_participant_to_cart()
 {
     require 'CRM/Core/Transaction.php';
     $transaction = new CRM_Core_Transaction();
     $cart_id = $_GET['cart_id'];
     $event_id = $_GET['event_id'];
     $cart = CRM_Event_Cart_BAO_Cart::find_by_id($_GET['cart_id']);
     $params_array = array('cart_id' => $cart->id, 'contact_id' => CRM_Event_Cart_Form_Cart::find_or_create_contact(), 'event_id' => $event_id);
     //XXX security?
     $participant = CRM_Event_Cart_BAO_MerParticipant::create($params_array);
     $participant->save();
     $form = new CRM_Core_Form();
     $pform = new CRM_Event_Cart_Form_MerParticipant($participant);
     $pform->appendQuickForm($form);
     $renderer = $form->getRenderer();
     $config = CRM_Core_Config::singleton();
     $templateDir = $config->templateDir;
     if (is_array($templateDir)) {
         $templateDir = array_pop($templateDir);
     }
     $requiredTemplate = file_get_contents($templateDir . '/CRM/Form/label.tpl');
     $renderer->setRequiredTemplate($requiredTemplate);
     $form->accept($renderer);
     $template = CRM_Core_Smarty::singleton();
     $template->assign('form', $renderer->toArray());
     $template->assign('participant', $participant);
     $output = $template->fetch("CRM/Event/Cart/Form/Checkout/Participant.tpl");
     $transaction->commit();
     echo $output;
     CRM_Utils_System::civiExit();
 }
示例#2
0
 function buildQuickForm()
 {
     $this->price_fields_for_event = array();
     foreach ($this->cart->get_main_event_participants() as $participant) {
         $form = new CRM_Event_Cart_Form_MerParticipant($participant);
         $form->appendQuickForm($this);
     }
     foreach ($this->cart->get_main_events_in_carts() as $event_in_cart) {
         $this->price_fields_for_event[$event_in_cart->event_id] = $this->build_price_options($event_in_cart->event);
     }
     // XXX
     $this->addElement('text', 'discountcode', ts('If you have a discount code, enter it here'));
     $this->assign('events_in_carts', $this->cart->get_main_events_in_carts());
     $this->assign('price_fields_for_event', $this->price_fields_for_event);
     $this->addButtons(array(array('type' => 'upload', 'name' => ts('Continue >>'), 'spacing' => '         ', 'isDefault' => TRUE)));
     if ($this->cid) {
         $params = array('id' => $this->cid);
         $contact = CRM_Contact_BAO_Contact::retrieve($params, $defaults);
         $contact_values = array();
         CRM_Core_DAO::storeValues($contact, $contact_values);
         $this->assign('contact', $contact_values);
     }
 }
 /**
  * Build quick form.
  */
 public function buildQuickForm()
 {
     $this->price_fields_for_event = array();
     foreach ($this->cart->get_main_event_participants() as $participant) {
         $form = new CRM_Event_Cart_Form_MerParticipant($participant);
         $form->appendQuickForm($this);
     }
     foreach ($this->cart->get_main_events_in_carts() as $event_in_cart) {
         $this->price_fields_for_event[$event_in_cart->event_id] = $this->build_price_options($event_in_cart->event);
     }
     //If events in cart have discounts the textbox for discount code will be displayed at the top, as long as this
     //form name is added to cividiscount
     $this->assign('events_in_carts', $this->cart->get_main_events_in_carts());
     $this->assign('price_fields_for_event', $this->price_fields_for_event);
     $this->addButtons(array(array('type' => 'upload', 'name' => ts('Continue'), 'spacing' => '         ', 'isDefault' => TRUE)));
     if ($this->cid) {
         $params = array('id' => $this->cid);
         $contact = CRM_Contact_BAO_Contact::retrieve($params, $defaults);
         $contact_values = array();
         CRM_Core_DAO::storeValues($contact, $contact_values);
         $this->assign('contact', $contact_values);
     }
 }