Back to PhocacartOrderRender class

Method render

public
render
(mixed $id, mixed $type = 1, mixed $format = 'html', mixed $token = '', mixed $pos = 0)

Method render - Source code

public function render($id, $type = 1, $format = 'html', $token = '', $pos = 0)
{
    $paramsC = PhocacartUtils::getComponentParameters();
    $pdf_invoice_qr_code = $paramsC->get('pdf_invoice_qr_code', '');
    // If frontend user orders: user login needed or token
    // If frontend POS: vendor login needed
    // isPosView - we are directly in POS view
    // $pos - we are not in POS view but we ask order view from pos view
    if ($pos && !PhocacartPos::isPosEnabled() && PhocacartPos::isPosView() && !PhocacartPos::isPosEnabled()) {
        die(Text::_('COM_PHOCACART_POS_IS_DISABLED'));
    }
    if ($id < 1) {
        return Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND');
    }
    $d = array();
    $d['params'] = PhocacartUtils::getComponentParameters();
    $d['type'] = $type;
    $d['format'] = $format;
    $layout = new FileLayout('order', null, array('client' => 0));
    $defaultTemplate = PhocacartUtils::getDefaultTemplate();
    if ($defaultTemplate != '') {
        $layout->addIncludePath(JPATH_SITE . '/templates/' . $defaultTemplate . '/html/layouts/com_phocacart');
    }
    HTMLHelper::stylesheet('media/com_phocacart/css/main.css');
    $app = Factory::getApplication();
    $order = new PhocacartOrderView();
    $d['common'] = $order->getItemCommon($id);
    $d['price'] = new PhocacartPrice();
    $d['price']->setCurrency($d['common']->currency_id);
    // Access rights actions ignored in administration
    if (!$app->isClient('administrator')) {
        if ($pos || PhocacartPos::isPosView()) {
            $user = $vendor = $ticket = $unit = $section = array();
            $dUser = PhocacartUser::defineUser($user, $vendor, $ticket, $unit, $section, 1);
            if ((int) $vendor->id < 1) {
                PhocacartLog::add(2, 'Render Order - ERROR', (int) $id, Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND') . 'Vendor not found (1)');
                die(Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND'));
            }
            if (!isset($d['common']->vendor_id)) {
                PhocacartLog::add(2, 'Render Order - ERROR', (int) $id, Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND') . 'Vendor not found (2)');
                die(Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND'));
            }
            if ($vendor->id != $d['common']->vendor_id) {
                PhocacartLog::add(2, 'Render Order - ERROR', (int) $id, Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND') . 'Vendor doesn\'t match');
                die(Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND'));
            }
        } else {
            $user = PhocacartUser::getUser();
            // Frontend displaying rules
            // Frontend, view = orders view or view = order view
            // Order status can prevent from displaying some documents (can be set for each order status, parameter: orders_view_diplay
            // So this rules only applies to frontend orders or order view (and of course then all other rules are applied too, like user or token
            $app = Factory::getApplication();
            $view = $app->input->get('view', '', 'string');
            $option = $app->input->get('option', '', 'string');
            $displayInOrderView = true;
            if ($option == 'com_phocacart' && ($view == 'orders' || $view == 'order')) {
                $displayDocument = json_decode($d['common']->ordersviewdisplay, true);
                if (!in_array($type, $displayDocument)) {
                    $displayInOrderView = false;
                }
            }
            // We are in orders/order view and order status cannot display current document
            if ($displayInOrderView == false) {
                PhocacartLog::add(2, 'Render Order - ERROR', (int) $id, Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND') . 'Order status does not allow this document to be displayed in Order/Orders View');
                die(Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND'));
            }
            if ((int) $user->id < 1 && $token == '') {
                PhocacartLog::add(2, 'Render Order - ERROR', (int) $id, Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND') . 'User not found (1)');
                // Add some debug here including debug_print_backtrace(); too see the flow which comes to this error - if from status or from view
                die(Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND'));
            }
            if (!isset($d['common']->user_id) && $token == '') {
                PhocacartLog::add(2, 'Render Order - ERROR', (int) $id, Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND') . 'User not found (2)');
                die(Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND'));
            }
            if ($user->id != $d['common']->user_id && $token == '') {
                PhocacartLog::add(2, 'Render Order - ERROR', (int) $id, Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND') . 'User doesn\'t match');
                die(Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND'));
            }
            if ((int) $user->id < 1 && $token != '' && $token != $d['common']->order_token) {
                PhocacartLog::add(2, 'Render Order - ERROR', (int) $id, Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND') . 'Token doesn\'t match');
                die(Text::_('COM_PHOCACART_ERROR_NO_ORDER_FOUND'));
            }
        }
    }
    $d['bas'] = $order->getItemBaS($id, 1);
    $d['products'] = $order->getItemProducts($id);
    $d['discounts'] = $order->getItemProductDiscounts($id, 0);
    $d['total'] = $order->getItemTotal($id, 1);
    $d['taxrecapitulation'] = $order->getItemTaxRecapitulation($id);
    // Prepare variables for possible replace in different text parts, e.g.:
    // - QR code on invoice
    // - TOP, BOTTOM, MIDDLE Description
    // user per function: PhocacartText::completeText($pdf_invoice_qr_code, $d['preparereplace'], 1);
    $d['preparereplace'] = PhocacartText::prepareReplaceText($order, $id, $d['common'], $d['bas']);
    // QR CODE IN PDF
    $d['qrcode'] = '';
    if ($type == 2 && $format == 'pdf') {
        $d['qrcode'] = PhocacartText::completeText($pdf_invoice_qr_code, $d['preparereplace'], 1);
        /*if (isset($d['bas']['b'])) {
        			$d['qrcode'] 	= PhocacartText::completeTextFormFields($d['qrcode'], $d['bas']['b'], 1);
        		}
        		if (isset($d['bas']['s'])) {
        			$d['qrcode'] = PhocacartText::completeTextFormFields($d['qrcode'], $d['bas']['s'], 2);
        		}*/
        if (!isset($d['bas']['b'])) {
            $d['bas']['b'] = array();
        }
        if (!isset($d['bas']['s'])) {
            $d['bas']['s'] = array();
        }
        if (isset($d['bas']['s'])) {
            $d['qrcode'] = PhocacartText::completeTextFormFields($d['qrcode'], $d['bas']['b'], $d['bas']['s']);
        }
    }
    //if ($type == 4 && $format == 'raw') {
    // POS RECEIPT IS MANAGED BY SPECIFIC RULES
    // array instead of output will be returned
    //return $layout->render($d);
    //} else {
    return $layout->render($d);
    //}
}