arastta/arastta

View on GitHub
catalog/controller/account/recurring.php

Summary

Maintainability
C
1 day
Test Coverage
<?php
/**
 * @package     Arastta eCommerce
 * @copyright   2015-2017 Arastta Association. All rights reserved.
 * @copyright   See CREDITS.txt for credits and other copyright notices.
 * @license     GNU GPL version 3; see LICENSE.txt
 * @link        https://arastta.org
 */

class ControllerAccountRecurring extends Controller {
    public function index() {
        if (!$this->customer->isLogged()) {
            $this->session->data['redirect'] = $this->url->link('account/order', '', 'SSL');

            $this->response->redirect($this->url->link('account/login', '', 'SSL'));
        }

        $this->language->load('account/recurring');

        $this->load->model('account/recurring');

        $this->document->setTitle($this->language->get('heading_title'));

        $url = '';

        if (isset($this->request->get['page'])) {
            $url .= '&page=' . $this->request->get['page'];
        }

        $data['breadcrumbs'] = array();

        $data['breadcrumbs'][] = array(
            'text'      => $this->language->get('text_home'),
            'href'      => $this->url->link('common/home'),
        );

        $data['breadcrumbs'][] = array(
            'text'      => $this->language->get('text_account'),
            'href'      => $this->url->link('account/account', '', 'SSL'),
        );

        $data['breadcrumbs'][] = array(
            'text'      => $this->language->get('heading_title'),
            'href'      => $this->url->link('account/recurring', $url, 'SSL'),
        );

        $data['heading_title'] = $this->language->get('heading_title');
        $data['column_date_added'] = $this->language->get('column_date_added');
        $data['column_status'] = $this->language->get('column_status');
        $data['column_product'] = $this->language->get('column_product');
        $data['column_action'] = $this->language->get('column_action');
        $data['column_recurring_id'] = $this->language->get('column_recurring_id');
        $data['text_empty'] = $this->language->get('text_empty');
        $data['button_view'] = $this->language->get('button_view');
        $data['button_continue'] = $this->language->get('button_continue');

        if (isset($this->request->get['page'])) {
            $page = $this->request->get['page'];
        } else {
            $page = 1;
        }

        $data['orders'] = array();

        $recurring_total = $this->model_account_recurring->getTotalRecurring();

        $results = $this->model_account_recurring->getAllProfiles(($page - 1) * 10, 10);

        $data['recurrings'] = array();

        if ($results) {
            foreach ($results as $result) {
                $data['recurrings'][] = array(
                    'id'                    => $result['order_recurring_id'],
                    'name'                  => $result['product_name'],
                    'status'                => $result['status'],
                    'date_added'               => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
                    'href'                  => $this->url->link('account/recurring/info', 'recurring_id=' . $result['order_recurring_id'], 'SSL'),
                );
            }
        }

        $data['status_types'] = array(
            1 => $this->language->get('text_status_inactive'),
            2 => $this->language->get('text_status_active'),
            3 => $this->language->get('text_status_suspended'),
            4 => $this->language->get('text_status_cancelled'),
            5 => $this->language->get('text_status_expired'),
            6 => $this->language->get('text_status_pending'),
        );

        $pagination = new Pagination();
        $pagination->total = $recurring_total;
        $pagination->page = $page;
        $pagination->limit = 10;
        $pagination->text = $this->language->get('text_pagination');
        $pagination->url = $this->url->link('account/recurring', 'page={page}', 'SSL');

        $data['pagination'] = $pagination->render();

        $data['continue'] = $this->url->link('account/account', '', 'SSL');

        $data['column_left'] = $this->load->controller('common/column_left');
        $data['column_right'] = $this->load->controller('common/column_right');
        $data['content_top'] = $this->load->controller('common/content_top');
        $data['content_bottom'] = $this->load->controller('common/content_bottom');
        $data['footer'] = $this->load->controller('common/footer');
        $data['header'] = $this->load->controller('common/header');

        if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/account/recurring_list.tpl')) {
            $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/account/recurring_list.tpl', $data));
        } else {
            $this->response->setOutput($this->load->view('default/template/account/recurring_list.tpl', $data));
        }
    }

    public function info() {
        $this->load->model('account/recurring');
        $this->load->language('account/recurring');

        if (isset($this->request->get['recurring_id'])) {
            $recurring_id = $this->request->get['recurring_id'];
        } else {
            $recurring_id = 0;
        }

        if (!$this->customer->isLogged()) {
            $this->session->data['redirect'] = $this->url->link('account/recurring/info', 'recurring_id=' . $recurring_id, 'SSL');

            $this->response->redirect($this->url->link('account/login', '', 'SSL'));
        }

        if (isset($this->session->data['error'])) {
            $data['error_warning'] = $this->session->data['error'];
            unset($this->session->data['error']);
        } else {
            $data['error_warning'] = '';
        }

        if (isset($this->session->data['success'])) {
            $data['success'] = $this->session->data['success'];
            unset($this->session->data['success']);
        } else {
            $data['success'] = '';
        }

        $recurring = $this->model_account_recurring->getProfile($this->request->get['recurring_id']);

        $data['status_types'] = array(
            1 => $this->language->get('text_status_inactive'),
            2 => $this->language->get('text_status_active'),
            3 => $this->language->get('text_status_suspended'),
            4 => $this->language->get('text_status_cancelled'),
            5 => $this->language->get('text_status_expired'),
            6 => $this->language->get('text_status_pending'),
        );

        $data['transaction_types'] = array(
            0 => $this->language->get('text_transaction_date_added'),
            1 => $this->language->get('text_transaction_payment'),
            2 => $this->language->get('text_transaction_outstanding_payment'),
            3 => $this->language->get('text_transaction_skipped'),
            4 => $this->language->get('text_transaction_failed'),
            5 => $this->language->get('text_transaction_cancelled'),
            6 => $this->language->get('text_transaction_suspended'),
            7 => $this->language->get('text_transaction_suspended_failed'),
            8 => $this->language->get('text_transaction_outstanding_failed'),
            9 => $this->language->get('text_transaction_expired'),
        );

        if ($recurring) {
            $recurring['transactions'] = $this->model_account_recurring->getProfileTransactions($this->request->get['recurring_id']);

            $recurring['date_added'] = date($this->language->get('date_format_short'), strtotime($recurring['date_added']));
            $recurring['product_link'] = $this->url->link('product/product', 'product_id=' . $recurring['product_id'], 'SSL');
            $recurring['order_link'] = $this->url->link('account/order/info', 'order_id=' . $recurring['order_id'], 'SSL');

            $this->document->setTitle($this->language->get('text_recurring'));

            $data['breadcrumbs'] = array();

            $data['breadcrumbs'][] = array(
                'text'      => $this->language->get('text_home'),
                'href'      => $this->url->link('common/home'),
            );

            $data['breadcrumbs'][] = array(
                'text'      => $this->language->get('text_account'),
                'href'      => $this->url->link('account/account', '', 'SSL'),
            );

            $url = '';

            if (isset($this->request->get['page'])) {
                $url .= '&page=' . $this->request->get['page'];
            }

            $data['breadcrumbs'][] = array(
                'text'      => $this->language->get('heading_title'),
                'href'      => $this->url->link('account/recurring', $url, 'SSL'),
            );

            $data['breadcrumbs'][] = array(
                'text'      => $this->language->get('text_recurring'),
                'href'      => $this->url->link('account/recurring/info', 'recurring_id=' . $this->request->get['recurring_id'] . $url, 'SSL'),
            );

            $data['heading_title'] = $this->language->get('text_recurring');

            $data['column_date_added'] = $this->language->get('column_date_added');
            $data['column_type'] = $this->language->get('column_type');
            $data['column_amount'] = $this->language->get('column_amount');

            $data['text_recurring_id'] = $this->language->get('text_recurring_id');
            $data['text_date_added'] = $this->language->get('text_date_added');
            $data['text_empty_transactions'] = $this->language->get('text_empty_transactions');
            $data['text_payment_method'] = $this->language->get('text_payment_method');
            $data['text_recurring_detail'] = $this->language->get('text_recurring_detail');
            $data['text_status'] = $this->language->get('text_status');
            $data['text_ref'] = $this->language->get('text_ref');
            $data['text_product'] = $this->language->get('text_product');
            $data['text_order'] = $this->language->get('text_order');
            $data['text_quantity'] = $this->language->get('text_quantity');
            $data['text_transactions'] = $this->language->get('text_transactions');
            $data['text_recurring_description'] = $this->language->get('text_recurring_description');

            $data['recurring'] = $recurring;

            $data['buttons'] = $this->load->controller('payment/' . $recurring['payment_code'] . '/recurringButtons');
            $data['column_left'] = $this->load->controller('common/column_left');
            $data['column_right'] = $this->load->controller('common/column_right');
            $data['content_top'] = $this->load->controller('common/content_top');
            $data['content_bottom'] = $this->load->controller('common/content_bottom');
            $data['footer'] = $this->load->controller('common/footer');
            $data['header'] = $this->load->controller('common/header');

            if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/account/recurring_info.tpl')) {
                $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/account/recurring_info.tpl', $data));
            } else {
                $this->response->setOutput($this->load->view('default/template/account/recurring_info.tpl', $data));
            }
        } else {
            $this->response->redirect($this->url->link('account/recurring', '', 'SSL'));
        }
    }
}