public function display($tpl = null) { $app = JFactory::getApplication(); $user = JFactory::getUser(); $this->params = Djcatalog2Helper::getParams(); $price_auth = $this->params->get('price_restrict', '0') == '1' && $user->guest ? false : true; if (!$price_auth) { $return_url = base64_encode(DJCatalogHelperRoute::getCartRoute()); $app->redirect(JRoute::_('index.php?option=com_users&view=login&return=' . $return_url, false), JText::_('COM_DJCATALOG2_PLEASE_LOGIN')); return true; } $cart_items = $app->getUserState('com_djcatalog2.cart.items', array()); $this->basket = Djcatalog2HelperCart::getInstance(); $this->items = $this->basket->getItems(); if (empty($this->items)) { $app->redirect(JUri::base(), JText::_('COM_DJCATALOG2_CART_IS_EMPTY')); return true; } $user_profile = Djcatalog2Helper::getUserProfile(); $user = Djcatalog2Helper::getUser(); if (empty($user_profile) || empty($user_profile->id)) { $return_url = base64_encode(DJCatalogHelperRoute::getCheckoutRoute()); $app->setUserState('com_users.edit.profile.redirect', DJCatalogHelperRoute::getCheckoutRoute()); $app->redirect(JRoute::_('index.php?option=com_users&view=profile&layout=edit&return=' . $return_url, false), JText::_('COM_DJCATALOG2_PLEASE_FILLIN_BILLING_DETAILS')); return true; } $this->user_profile = $user_profile; $this->user = $user; $this->total = $this->basket->getTotal(); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->_prepareDocument(); parent::display($tpl); }
public function query_confirm() { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); if ($this->allowQuery() == false) { return false; } $app = JFactory::getApplication(); $date = JFactory::getDate(); $model = $this->getModel('Query'); $db = JFactory::getDbo(); $post_data = $app->input->post->get('jform', array(), 'array'); $basket = Djcatalog2HelperCart::getInstance(); $items = $basket->getItems(); $user = Djcatalog2Helper::getUser(); $user_data = Djcatalog2Helper::getUserProfile($user->id); $user_data = JArrayHelper::fromObject($user_data); $form = $model->getForm(array(), false); if (!$form) { $app->enqueueMessage($model->getError(), 'error'); return false; } $form_data = array(); $fields = $form->getFieldset('basicprofile'); foreach ($fields as $field) { if (isset($user_data[$field->fieldname])) { $form_data[$field->fieldname] = $user_data[$field->fieldname]; } if (isset($post_data['djcatalog2profile'][$field->fieldname])) { $form_data[$field->fieldname] = $post_data['djcatalog2profile'][$field->fieldname]; } if (!isset($form_data[$field->fieldname])) { $form_data[$field->fieldname] = null; } } $data = array('djcatalog2profile' => $form_data); if (empty($data) || empty($data['djcatalog2profile'])) { $data = array('djcatalog2profile' => $user_data); } // Test whether the data is valid. $validData = $model->validate($form, $data); // Check for validation errors. if ($validData === false) { // Get the validation messages. $errors = $model->getErrors(); // Push up to three validation messages out to the user. for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++) { if ($errors[$i] instanceof Exception) { $app->enqueueMessage($errors[$i]->getMessage(), 'warning'); } else { $app->enqueueMessage($errors[$i], 'warning'); } } // Save the data in the session. $app->setUserState('com_djcatalog2.query.data', $data); // Redirect back to the quote screen. $this->setRedirect(JRoute::_(DJCatalogHelperRoute::getQueryRoute(), false)); return false; } $app->setUserState('com_djcatalog2.query.data', $validData); $quoteData = $validData['djcatalog2profile']; $quote = array(); $quote['id'] = null; $quote['user_id'] = $user->id; if (($user->guest || empty($user->email)) && !empty($quoteData['email'])) { $quote['email'] = $quoteData['email']; } else { if (!empty($quoteData['email'])) { $quote['email'] = $quoteData['email']; } else { $quote['email'] = $user->email; } } $quote['created_date'] = $date->toSql(true); $quote['firstname'] = !empty($quoteData['firstname']) ? $quoteData['firstname'] : ''; $quote['lastname'] = !empty($quoteData['firstname']) ? $quoteData['lastname'] : ''; $quote['company'] = !empty($quoteData['company']) ? $quoteData['company'] : ''; $quote['address'] = !empty($quoteData['address']) ? $quoteData['address'] : ''; $quote['city'] = !empty($quoteData['city']) ? $quoteData['city'] : ''; $quote['postcode'] = !empty($quoteData['postcode']) ? $quoteData['postcode'] : ''; $quote['sendtime'] = (!empty($quoteData['sendtime']) and in_array($quoteData['sendtime'], array(0, 1, 2, 3))) ? $quoteData['sendtime'] : ''; $quote['country_id'] = !empty($quoteData['country_id']) ? $quoteData['country_id'] : ''; if ((empty($quoteData['country_name']) || $quoteData['country_name'] == '*') && !empty($quoteData['country_id'])) { $db->setQuery('select country_name from #__djc2_countries where id=' . (int) $quoteData['country_id']); $country = $db->loadResult(); $quote['country'] = $country ? $country : ''; } else { $quote['country'] = $quoteData['country_name']; } $quote['vat_id'] = !empty($quoteData['vat_id']) ? $quoteData['vat_id'] : ''; $quote['customer_note'] = !empty($quoteData['customer_note']) ? $quoteData['customer_note'] : ''; $quote_items = array(); foreach ($items as $item) { $record = array(); $record['id'] = 0; $record['item_id'] = $item->id; $record['item_name'] = $item->name; $record['quantity'] = $item->_quantity; $quote_items[] = $record; } $quote['quote_items'] = array(); foreach ($quote_items as $pos => $rec) { foreach ($rec as $key => $value) { if (!isset($quote['quote_items'][$key])) { $quote['quote_items'][$key] = array(); } $quote['quote_items'][$key][] = $value; } } if ($model->save($quote) == false) { $msg = $model->getError(); $app->redirect(JRoute::_(DJCatalogHelperRoute::getQueryRoute(), false), JText::_('COM_DJCATALOG2_QUOTE_STORE_ERRROR') . ' ' . $msg); return false; } $basket->clear(); $quote['id'] = $model->getState('query.id'); $quote['items'] = $quote_items; if ($this->_sendEmail($quote, 'query') == false) { $app->enqueueMessage(JText::_('COM_DJCATLAOG2_QUOTE_NOTIFICATION_ERROR'), 'error'); } //TODO: redirect to proper screen $app->redirect(JRoute::_(DJCatalogHelperRoute::getCartRoute(), false), JText::_('COM_DJCATALOG2_QUOTE_SENT')); return true; }
/*?> <div class="control-group"> <div class="control-label"> <label for="customer_note"><?php echo JText::_('COM_DJCATALOG2_QUERY_NOTES');?></label> </div> <div class="controls"> <textarea id="customer_note" rows="5" cols="40" name="customer_note" class="inputbox input input-large"></textarea> </div> </div> <?php */ ?> <div class="control-group"> <div class="controls"> <a class="button btn djc_back_to_cart_btn btn-primary" href="<?php echo JRoute::_(DJCatalogHelperRoute::getCartRoute()); ?> "><span><?php echo JText::_('COM_DJCATALOG2_BACK_TO_CART'); ?> </span></a> <input type="submit" value="<?php echo JText::_('COM_DJCATALOG2_CONFIRM_QUERY'); ?> " class="btn btn-success button validate" /> </div> </div> </fieldset>
public function display($tpl = null) { $app = JFactory::getApplication(); $user = JFactory::getUser(); $this->params = Djcatalog2Helper::getParams(); $model = JModelLegacy::getInstance('Order', 'Djcatalog2Model', array()); $this->setModel($model, true); $this->model = $this->getModel(); if ($this->params->get('cart_enabled', '1') != '1') { throw new Exception(JText::_('JERROR_ALERTNOAUTHOR'), 403); } $auth = $this->params->get('cart_registered', '1') == '1' && $user->guest ? false : true; if (!$auth) { $return_url = base64_encode(DJCatalogHelperRoute::getCheckoutRoute()); $app->redirect(JRoute::_('index.php?option=com_users&view=login&return=' . $return_url, false), JText::_('COM_DJCATALOG2_PLEASE_LOGIN')); return true; } $cart_items = $app->getUserState('com_djcatalog2.cart.items', array()); $this->basket = Djcatalog2HelperCart::getInstance(); foreach ($this->basket->items as $item) { if ($item->_prices['base']['display'] == 0.0 || !$item->onstock || floatval($item->stock) == 0.0) { $app->redirect(JRoute::_(DJCatalogHelperRoute::getCartRoute(), false), JText::sprintf('COM_DJCATALOG2_CHECKOUT_EMPTY_PRICES', JRoute::_('index.php?option=com_djcatalog2&task=cart.clearfree'))); return true; } } $this->items = $this->basket->getItems(); if (empty($this->items)) { $app->redirect(JUri::base(), JText::_('COM_DJCATALOG2_CART_IS_EMPTY')); return true; } if (count($this->items)) { JModelLegacy::addIncludePath(JPATH_BASE . DS . 'components' . DS . 'com_djcatalog2' . DS . 'models', 'DJCatalog2Model'); $itemsModel = JModelLegacy::getInstance('Items', 'Djcatalog2Model', array('ignore_request' => true)); $parents = array(); foreach ($this->items as $item) { if ($item->parent_id > 0) { $parents[] = $item->parent_id; } } if (count($parents) > 0) { $state = $itemsModel->getState(); $itemsModel->setState('list.start', 0); $itemsModel->setState('list.limit', 0); $itemsModel->setState('filter.catalogue', false); $itemsModel->setState('list.ordering', 'i.name'); $itemsModel->setState('list.direction', 'asc'); $itemsModel->setState('filter.parent', '*'); $itemsModel->setState('filter.state', '3'); $itemsModel->setState('filter.item_ids', $parents); $parentItems = $itemsModel->getItems(); foreach ($this->items as $id => $item) { if ($item->parent_id > 0 && isset($parentItems[$item->parent_id])) { $this->items[$id]->parent = $parentItems[$item->parent_id]; } else { $this->items[$id]->parent = false; } } } } $user_profile = Djcatalog2Helper::getUserProfile(); $user = Djcatalog2Helper::getUser(); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->form = $this->get('Form'); $data = JArrayHelper::fromObject($user_profile, false); $postOrder = (array) $app->getUserState('com_djcatalog2.order.data', array()); if (!empty($postOrder)) { foreach ($postOrder as $k => $v) { $data[$k] = $v; } } $this->user_valid = $this->model->validate($this->form, array('djcatalog2profile' => $data), 'djcatalog2profile'); $this->billing_valid = $this->model->validate($this->form, array('djcatalog2billing' => $data), 'djcatalog2billing'); $dispatcher = JEventDispatcher::getInstance(); JPluginHelper::importPlugin('djcatalog2payment'); JPluginHelper::importPlugin('djcatalog2delivery'); $deliveryMethods = $model->getDeliveryMethods(); $paymentMethods = $model->getPaymentMethods('*'); $deliveryRes = array(); $paymentRes = array(); foreach ($deliveryMethods as &$deliveryObject) { $params = new JRegistry(); $params->loadString($deliveryObject->params, 'JSON'); $deliveryObject->params = $params; $deliveryRes[$deliveryObject->id] = $dispatcher->trigger('onDJC2CheckoutDetailsDisplay', array('com_djcatalog2.checkout.delivery', $deliveryObject)); } unset($deliveryObject); foreach ($paymentMethods as &$paymentObject) { $params = new JRegistry(); $params->loadString($paymentObject->params, 'JSON'); $paymentObject->params = $params; $paymentRes[$paymentObject->id] = $dispatcher->trigger('onDJC2CheckoutDetailsDisplay', array('com_djcatalog2.checkout.payment', $paymentObject)); } unset($paymentObject); $this->delivery_info = $deliveryRes; $this->payment_info = $paymentRes; $this->user_profile = $user_profile; $this->user = $user; $this->total = $this->basket->getTotal(); $this->product_total = $this->basket->getProductTotal(); $this->_prepareDocument(); parent::display($tpl); }
<input type="hidden" name="return" value="<?php echo $return_url; ?> "/> <input type="hidden" name="item_id" value="<?php echo (int) $item->id; ?> "/> <?php echo JHtml::_('form.token'); ?> </form> </td> <td class="djc_td_cart_remove" nowrap="nowrap"> <form action="<?php echo DJCatalogHelperRoute::getCartRoute(); ?> " method="post" class="form-horizontal form"> <input type="submit" class="button btn djc_cart_remove_btn" value="<?php echo JText::_('COM_DJCATALOG2_CART_REMOVE_BUTTON'); ?> " title="<?php echo JText::_('COM_DJCATALOG2_CART_REMOVE_BUTTON_TITLE'); ?> " /> <input type="hidden" name="task" value="cart.remove"/> <input type="hidden" name="return" value="<?php echo $return_url; ?> "/> <input type="hidden" name="item_id" value="<?php
protected function allowCheckout() { $app = JFactory::getApplication(); $user_profile = Djcatalog2Helper::getUserProfile(); $user = Djcatalog2Helper::getUser(); $params = JComponentHelper::getParams('com_djcatalog2'); // TODO: add order cart parameter if ($params->get('cart_query_enabled', '1') != '1') { throw new Exception(403, JText::_('JERROR_ALERTNOAUTHOR')); } // TODO: allow guest orders - add new paramater $auth = $params->get('cart_query_registered', '1') == '1' && $user->guest ? false : true; if (!$auth) { $return_url = base64_encode(DJCatalogHelperRoute::getCheckoutRoute()); $app->redirect(JRoute::_('index.php?option=com_users&view=login&return=' . $return_url, false), JText::_('COM_DJCATALOG2_PLEASE_LOGIN')); return false; } $basket = Djcatalog2HelperCart::getInstance(true); $basket->recalculate(); if (empty($basket) || !$basket->getItems()) { $app->redirect(JUri::base(), JText::_('COM_DJCATALOG2_CART_IS_EMPTY')); return false; } foreach ($basket->items as $item) { if ($item->_prices['base']['display'] == 0.0) { $app->redirect(JRoute::_(DJCatalogHelperRoute::getCartRoute(), false), JText::sprintf('COM_DJCATALOG2_CHECKOUT_EMPTY_PRICES', JRoute::_('index.php?option=com_djcatalog2&task=cart.clearfree'))); return true; } } return true; }