ControllerAccountTransaction   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 93
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 56
c 0
b 0
f 0
dl 0
loc 93
rs 10
wmc 6

1 Method

Rating   Name   Duplication   Size   Complexity  
B index() 0 91 6
1
<?php
2
3
/* 	Divine CMS - Open source CMS for widespread use.
4
    Copyright (c) 2019 Mykola Burakov ([email protected])
5
6
    See SOURCE.txt for other and additional information.
7
8
    This file is part of Divine CMS.
9
10
    This program is free software: you can redistribute it and/or modify
11
    it under the terms of the GNU General Public License as published by
12
    the Free Software Foundation, either version 3 of the License, or
13
    (at your option) any later version.
14
15
    This program is distributed in the hope that it will be useful,
16
    but WITHOUT ANY WARRANTY; without even the implied warranty of
17
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
    GNU General Public License for more details.
19
20
    You should have received a copy of the GNU General Public License
21
    along with this program. If not, see <http://www.gnu.org/licenses/>. */
22
23
class ControllerAccountTransaction extends \Divine\Engine\Core\Controller
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
24
{
25
    public function index()
0 ignored issues
show
Coding Style introduced by
Expected 2 blank lines before function; 0 found
Loading history...
26
    {
27
        if (!$this->customer->isLogged()) {
28
            $this->session->data['redirect'] = $this->url->link('account/transaction', '', true);
29
30
            $this->response->redirect($this->url->link('account/login', '', true));
31
        }
32
33
        $this->load->language('account/transaction');
34
35
        $this->document->setTitle($this->language->get('heading_title'));
36
37
        $data['breadcrumbs'] = array();
0 ignored issues
show
Comprehensibility Best Practice introduced by
$data was never initialized. Although not strictly required by PHP, it is generally a good practice to add $data = array(); before regardless.
Loading history...
38
39
        $data['breadcrumbs'][] = array(
40
            'text' => $this->language->get('text_home'),
41
            'href' => $this->url->link('common/home')
42
        );
43
44
        $data['breadcrumbs'][] = array(
45
            'text' => $this->language->get('text_account'),
46
            'href' => $this->url->link('account/account', '', true)
47
        );
48
49
        $data['breadcrumbs'][] = array(
50
            'text' => $this->language->get('text_transaction'),
51
            'href' => $this->url->link('account/transaction', '', true)
52
        );
53
54
        $this->load->model('account/transaction');
55
56
        $data['heading_title'] = $this->language->get('heading_title');
57
58
        $data['column_date_added'] = $this->language->get('column_date_added');
59
        $data['column_description'] = $this->language->get('column_description');
60
        $data['column_amount'] = sprintf($this->language->get('column_amount'), $this->config->get('config_currency'));
61
62
        $data['text_total'] = $this->language->get('text_total');
63
        $data['text_empty'] = $this->language->get('text_empty');
64
65
        $data['button_continue'] = $this->language->get('button_continue');
66
67
        if (isset($this->request->get['page'])) {
68
            $page = $this->request->get['page'];
69
        } else {
70
            $page = 1;
71
        }
72
73
        $data['transactions'] = array();
74
75
        $filter_data = array(
76
            'sort'  => 'date_added',
77
            'order' => 'DESC',
78
            'start' => ($page - 1) * 10,
79
            'limit' => 10
80
        );
81
82
        $transaction_total = $this->model_account_transaction->getTotalTransactions();
83
84
        $results = $this->model_account_transaction->getTransactions($filter_data);
85
86
        foreach ($results as $result) {
87
            $data['transactions'][] = array(
88
                'amount'      => $this->currency->format($result['amount'], $this->config->get('config_currency')),
89
                'description' => $result['description'],
90
                'date_added'  => date($this->language->get('date_format_short'), strtotime($result['date_added']))
91
            );
92
        }
93
94
        $pagination = new \Divine\Engine\Library\Pagination();
95
        $pagination->total = $transaction_total;
96
        $pagination->page = $page;
97
        $pagination->limit = 10;
98
        $pagination->url = $this->url->link('account/transaction', 'page={page}', true);
99
100
        $data['pagination'] = $pagination->render();
101
102
        $data['results'] = sprintf($this->language->get('text_pagination'), ($transaction_total) ? (($page - 1) * 10) + 1 : 0, ((($page - 1) * 10) > ($transaction_total - 10)) ? $transaction_total : ((($page - 1) * 10) + 10), $transaction_total, ceil($transaction_total / 10));
103
104
        $data['total'] = $this->currency->format($this->customer->getBalance(), $this->session->data['currency']);
105
106
        $data['continue'] = $this->url->link('account/account', '', true);
107
108
        $data['column'] = $this->load->controller('common/column');
109
        
110
        $data['content_top'] = $this->load->controller('common/content_top');
111
        $data['content_bottom'] = $this->load->controller('common/content_bottom');
112
        $data['footer'] = $this->load->controller('common/footer');
113
        $data['header'] = $this->load->controller('common/header');
114
115
        $this->response->setOutput($this->load->view('account/transaction', $data));
116
    }
117
}
118