Passed
Pull Request — master (#4)
by
unknown
08:12 queued 02:55
created

ht_pagantis::check()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 2
b 0
f 0
nc 1
nop 0
dl 0
loc 2
rs 10
1
<?php
2
/*
3
  $Id$
4
5
  osCommerce, Open Source E-Commerce Solutions
6
  http://www.oscommerce.com
7
8
  Copyright (c) 2010 osCommerce
9
10
  Released under the GNU General Public License
11
*/
12
13
define('TABLE_PAGANTIS_CONFIG', 'pagantis_config');
14
15
class ht_pagantis {
16
    var $code = 'ht_pagantis';
17
    var $group = 'header_tags';
18
    var $title;
19
    var $description;
20
    var $enabled = false;
21
22
23
    function ht_pagantis() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
24
        $this->title = MODULE_HEADER_TAGS_PAGANTIS_TITLE;
25
        $this->description = MODULE_HEADER_TAGS_PAGANTIS_DESCRIPTION;
26
        $this->sort_order = 0;
0 ignored issues
show
Bug Best Practice introduced by
The property sort_order does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
27
28
        if ( defined('MODULE_HEADER_TAGS_PAGANTIS_STATUS') ) {
29
            $this->enabled = (MODULE_HEADER_TAGS_PAGANTIS_STATUS == 'True');
30
        }
31
        $this->extraConfig = $this->getExtraConfig();
0 ignored issues
show
Bug Best Practice introduced by
The property extraConfig does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
32
        $this->pk = $this->getConfig('MODULE_PAYMENT_PAGANTIS_PK');
0 ignored issues
show
Bug Best Practice introduced by
The property pk does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
33
    }
34
35
    /**
36
     * @return array
37
     */
38
    private function getExtraConfig()
39
    {
40
        $checkTable = tep_db_query("SHOW TABLES LIKE '".TABLE_PAGANTIS_CONFIG."'");
0 ignored issues
show
Bug introduced by
The function tep_db_query was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

40
        $checkTable = /** @scrutinizer ignore-call */ tep_db_query("SHOW TABLES LIKE '".TABLE_PAGANTIS_CONFIG."'");
Loading history...
41
        $response = array();
42
        if (tep_db_num_rows($checkTable) > 0) {
0 ignored issues
show
Bug introduced by
The function tep_db_num_rows was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

42
        if (/** @scrutinizer ignore-call */ tep_db_num_rows($checkTable) > 0) {
Loading history...
43
            $query       = "select * from ".TABLE_PAGANTIS_CONFIG;
44
            $result      = tep_db_query($query);
45
            $response    = array();
46
            while ($resultArray = tep_db_fetch_array($result)) {
0 ignored issues
show
Bug introduced by
The function tep_db_fetch_array was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

46
            while ($resultArray = /** @scrutinizer ignore-call */ tep_db_fetch_array($result)) {
Loading history...
47
                $response[$resultArray['config']] = $resultArray['value'];
48
            }
49
        }
50
        return $response;
51
    }
52
53
    /**
54
     * @param string $config
55
     * @return array
56
     */
57
    private function getConfig($config = '')
58
    {
59
            $query       = "select configuration_value from ".TABLE_CONFIGURATION . " where configuration_key = '" . $config . "'";
0 ignored issues
show
Bug introduced by
The constant TABLE_CONFIGURATION was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
60
            $result      = tep_db_query($query);
0 ignored issues
show
Bug introduced by
The function tep_db_query was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

60
            $result      = /** @scrutinizer ignore-call */ tep_db_query($query);
Loading history...
61
            $resultArray = tep_db_fetch_array($result);
0 ignored issues
show
Bug introduced by
The function tep_db_fetch_array was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

61
            $resultArray = /** @scrutinizer ignore-call */ tep_db_fetch_array($result);
Loading history...
62
            return $resultArray['configuration_value'];
63
    }
64
65
    function execute() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
66
        if (isset($GLOBALS["HTTP_GET_VARS"]["products_id"])) {
67
            echo "<script src='https://cdn.pagantis.com/js/pg-v2/sdk.js'></script>". PHP_EOL;
68
            echo '<script>'. PHP_EOL;
69
70
            echo '        function loadSimulator()'. PHP_EOL;
71
            echo '        {'. PHP_EOL;
72
            echo '           if (typeof pgSDK != \'undefined\') {'. PHP_EOL;
73
            echo '               var positionSelector = \'' . $this->extraConfig['PAGANTIS_SIMULATOR_CSS_POSITION_SELECTOR']. '\';'. PHP_EOL;
74
            echo '               var priceSelector = \'' . $this->extraConfig['PAGANTIS_SIMULATOR_CSS_PRICE_SELECTOR']. '\';'. PHP_EOL;
75
            echo '               var quantitySelector = \'' . $this->extraConfig['PAGANTIS_SIMULATOR_CSS_QUANTITY_SELECTOR']. '\';'. PHP_EOL;
76
77
            echo '               if (positionSelector === \'default\') {'. PHP_EOL;
78
            echo '                   positionSelector = \'.buttonSet\''. PHP_EOL;
79
            echo '               }'. PHP_EOL;
80
81
            echo '               if (priceSelector === \'default\') {'. PHP_EOL;
82
            echo '                   priceSelector = \'#bodyContent>form>div>h1\''. PHP_EOL;
83
            echo '               }'. PHP_EOL;
84
85
            echo '               pgSDK.product_simulator = {};'. PHP_EOL;
86
            echo '               pgSDK.product_simulator.id = \'product-simulator\';'. PHP_EOL;
87
            echo '               pgSDK.product_simulator.publicKey = \'' . $this->pk . '\';'. PHP_EOL;
0 ignored issues
show
Bug introduced by
Are you sure $this->pk of type array can be used in concatenation? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

87
            echo '               pgSDK.product_simulator.publicKey = \'' . /** @scrutinizer ignore-type */ $this->pk . '\';'. PHP_EOL;
Loading history...
88
            echo '               pgSDK.product_simulator.selector = positionSelector;'. PHP_EOL;
89
            echo '               pgSDK.product_simulator.numInstalments = \'' . $this->extraConfig['PAGANTIS_SIMULATOR_START_INSTALLMENTS'] . '\';'. PHP_EOL;
90
            echo '               pgSDK.product_simulator.type = ' . $this->extraConfig['PAGANTIS_SIMULATOR_DISPLAY_TYPE'] . ';'. PHP_EOL;
91
            echo '               pgSDK.product_simulator.skin = ' . $this->extraConfig['PAGANTIS_SIMULATOR_DISPLAY_SKIN'] . ';'. PHP_EOL;
92
            echo '               pgSDK.product_simulator.position = ' . $this->extraConfig['PAGANTIS_SIMULATOR_DISPLAY_CSS_POSITION'] . ';'. PHP_EOL;
93
            echo '               pgSDK.product_simulator.itemAmountSelector = priceSelector;'. PHP_EOL;
94
95
            echo '               pgSDK.simulator.init(pgSDK.product_simulator);'. PHP_EOL;
96
            echo '               clearInterval(window.PSSimulatorId);'. PHP_EOL;
97
            echo '               return true;'. PHP_EOL;
98
            echo '           }'. PHP_EOL;
99
            echo '           return false;'. PHP_EOL;
100
            echo '       }'. PHP_EOL;
101
            echo '       window.PSSimulatorId = setInterval(function () {'. PHP_EOL;
102
            echo '          loadSimulator();'. PHP_EOL;
103
            echo '       }, 2000);'. PHP_EOL;
104
            echo '</script>'. PHP_EOL;
105
106
            if ($this->isPromoted($GLOBALS["HTTP_GET_VARS"]["products_id"])) {
107
                echo "<div id='promotedText' style='display:none'><br/>PRODUCTO PROMOCIONADO, AQUI PUEDE IR CUALQUIER HTML</div>";
108
                echo '<script>'. PHP_EOL;
109
                echo '        function loadPromoted()'. PHP_EOL;
110
                echo '        {'. PHP_EOL;
111
                echo 'var positionSelector = \'' . $this->extraConfig['PAGANTIS_SIMULATOR_CSS_POSITION_SELECTOR']. '\';'. PHP_EOL;
112
                echo 'if (positionSelector === \'default\') {'. PHP_EOL;
113
                echo 'positionSelector = \'.buttonSet\''. PHP_EOL;
114
                echo '}'. PHP_EOL;
115
                echo 'var docFather = document.querySelector(positionSelector);'.PHP_EOL;
116
                echo 'if (typeof docFather != \'undefined\') {'. PHP_EOL;
117
                echo 'var promotedNode = document.getElementById("promotedText");'.PHP_EOL;
118
                echo 'docFather.appendChild(promotedNode);'.PHP_EOL;
119
                echo 'promotedNode.style.display=""' . PHP_EOL;
120
                echo '               return true;'. PHP_EOL;
121
                echo '       }'. PHP_EOL;
122
                echo '               return false;'. PHP_EOL;
123
                echo '       }'. PHP_EOL;
124
                echo '       window.PSPromotedId = setInterval(function () {'. PHP_EOL;
125
                echo '          loadPromoted();'. PHP_EOL;
126
                echo '       }, 2000);'. PHP_EOL;
127
                echo '</script>'. PHP_EOL;
128
            }
129
        }
130
    }
131
132
    function isEnabled() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
133
        return $this->enabled;
134
    }
135
136
    function check() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
137
        return defined('MODULE_HEADER_TAGS_PAGANTIS_STATUS');
138
    }
139
140
    function install() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
141
        tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Pagantis Module', 'MODULE_HEADER_TAGS_PAGANTIS_STATUS', 'True', '', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
0 ignored issues
show
Bug introduced by
The function tep_db_query was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

141
        /** @scrutinizer ignore-call */ 
142
        tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Pagantis Module', 'MODULE_HEADER_TAGS_PAGANTIS_STATUS', 'True', '', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
Loading history...
Bug introduced by
The constant TABLE_CONFIGURATION was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
142
143
    }
144
145
    function remove() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
146
        tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
0 ignored issues
show
Bug introduced by
The function tep_db_query was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

146
        /** @scrutinizer ignore-call */ 
147
        tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
Loading history...
Bug introduced by
The constant TABLE_CONFIGURATION was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
147
    }
148
149
    function keys() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
150
        return array('MODULE_HEADER_TAGS_PAGANTIS_STATUS');
151
    }
152
153
    private function isPromoted($productId)
154
    {
155
        if ($this->extraConfig['PAGANTIS_PROMOTION'] == '') {
156
            $promotedProducts = array();
157
        } else {
158
            $promotedProducts = array_values((array)unserialize($this->extraConfig['PAGANTIS_PROMOTION']));
159
        }
160
161
        return (in_array($productId, $promotedProducts));
162
    }
163
}
164
?>
0 ignored issues
show
Best Practice introduced by
It is not recommended to use PHP's closing tag ?> in files other than templates.

Using a closing tag in PHP files that only contain PHP code is not recommended as you might accidentally add whitespace after the closing tag which would then be output by PHP. This can cause severe problems, for example headers cannot be sent anymore.

A simple precaution is to leave off the closing tag as it is not required, and it also has no negative effects whatsoever.

Loading history...
165