예제 #1
0
 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);
 }
예제 #2
0
파일: cart.php 프로젝트: ForAEdesWeb/AEW4
 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;
 }
예제 #3
0
/*?>
		<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>
	
	
예제 #4
0
 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);
 }
예제 #5
0
            		<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 
예제 #6
0
 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;
 }