PluginProbe
MakeCommerce for WooCommerce / 2.6.2
MakeCommerce for WooCommerce v2.6.2
4.1.0 4.0.8 trunk 1.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 2.0.0 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2.0 2.2.1 2.2.2 All 96 releases
← All changes | makecommerce.php +566 -40 trunk2.6.2 View file →
@@ -1,46 +1,572 @@
1 1 <?php
2 -/**
3 - * @link https://makecommerce.net/
4 - * @since 4.0.0
5 - * @package Makecommerce
6 - *
7 - * @wordpress-plugin
8 - * Plugin Name: MakeCommerce
9 - * Plugin URI: https://makecommerce.net/
10 - * Description: Adds MakeCommerce payment gateway and shipping methods to WooCommerce checkout
11 - * Version: 4.1.0
12 - * Author: Maksekeskus AS
13 - * Author URI: https://makecommerce.net/
14 - * License: GPL-2.0+
15 - * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
16 - * Text Domain: makecommerce
17 - * Domain Path: /languages
18 - * Requires Plugins: woocommerce
19 - * Requires at least: 6.8.1
20 - * Requires PHP: 8.1
21 - * WC requires at least: 9.9.3
22 - * WC tested up to: 11.0.1
23 - * WC HPOS compatibility: yes
24 - * WC Legacy Order Table Compatibility: yes
25 - */
2 +/*
3 + Plugin Name: MakeCommerce for WooCommerce
4 + Description: Adds MakeCommerce payment gateway and Itella/Omniva parcel machine shipping methods to Woocommerce checkout
5 + Version: 2.6.2
6 + Author: Maksekeskus AS
7 + Author URI: https://MakeCommerce.net/
8 + Text Domain: wc_makecommerce_domain
9 + WC requires at least: 3.0
10 + WC tested up to: 4.5.1
11 +*/
26 12
27 -function mc_table_exists(string $table): bool {
28 - global $wpdb;
29 - $table_name = $wpdb->prefix . $table;
30 - return $wpdb->get_var($wpdb->prepare("SHOW TABLES LIKE %s", $table_name)) === $table_name;
13 +if (!defined('ABSPATH')) {
14 + exit; // Exit if accessed directly.
31 15 }
32 16
17 +include_once(ABSPATH.'wp-admin/includes/plugin.php');
18 +if (is_plugin_active('woocommerce/woocommerce.php')) {
33 19
34 -if (
35 - (
36 - get_option('mc_version') !== false ||
37 - get_option('wc_mc_version') !== false ||
38 - mc_table_exists('mc_banklinks')
39 - ) &&
40 - !filter_var(get_option('mc_shipping_plus'), FILTER_VALIDATE_BOOLEAN)
41 -) {
42 - require_once plugin_dir_path(__FILE__) . 'config.php';
43 -} else {
44 - require_once plugin_dir_path(__FILE__) . 'makecommerce/makecommerce.php';
20 + define('WC_MC_VERSION', 2.0);
21 +
22 + $enable_experimental = get_option('mk_checkout_sco', 'no');
23 + if ($enable_experimental === 'yes') {
24 + require_once(__DIR__.'/makecommerce-simplecheckout.php');
25 + }
26 + require_once(__DIR__.'/makecommerce-transport.php');
27 + require_once(__DIR__.'/makecommerce-payment.php');
28 +
29 + if (is_admin() && !extension_loaded('curl')) {
30 + add_action('admin_notices', function(){
31 + $class = 'notice notice-error';
32 + $message = __( 'You have enabled MakeCommerce module but it seems that you don\'t have CURL enabled. This way MakeCommerce unfortunately does not work!', 'wc_makecommerce_domain');
33 + printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
34 + });
35 + }
36 +
37 +
38 + global $mkDbTable;
39 + $mkDbTable = 'mc_banklinks';
40 +
41 + function mc_install() {
42 + global $wpdb;
43 + global $mkDbTable;
44 +
45 + $tableName = $wpdb->prefix . $mkDbTable;
46 +
47 + $charset = $wpdb->get_charset_collate();
48 +
49 + $sql = "CREATE TABLE $tableName (
50 + id mediumint(9) NOT NULL AUTO_INCREMENT,
51 + type varchar(10) NOT NULL,
52 + country char(2) NOT NULL,
53 + name varchar(25) NOT NULL,
54 + url varchar(250) NOT NULL,
55 + logo_url varchar(250),
56 + min_amount mediumint(9),
57 + max_amount mediumint(9),
58 + UNIQUE KEY id (id)
59 + ) $charset;";
60 +
61 + require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
62 + dbDelta( $sql );
63 + }
64 +
65 + register_activation_hook( __FILE__, 'mc_install' );
66 +
67 + // On uninstall remove scheduled hook
68 + function mc_uninstall() {
69 + if (wp_next_scheduled ( 'mc_banklinks_update_cron' )) {
70 + wp_clear_scheduled_hook('mc_banklinks_update_cron');
71 + }
72 + }
73 +
74 + register_deactivation_hook(__FILE__, 'mc_uninstall');
75 +
76 + // WP schedule callable action
77 + add_action('mc_banklinks_update_cron', 'update_mc_banklinks');
78 + // Assign schedule if not set, update compatible no need to reactivate, format('U') php 5.2 compatible
79 + // Assigns task at 23.59.59 by local time, task runs if time has passed and somebody navigates the site
80 + if (! wp_next_scheduled ( 'mc_banklinks_update_cron' )) {
81 + $date = new DateTime();
82 + $date->setTime(rand(0,23),rand(0,59),00);
83 + $timestamp = intval($date->format('U'));
84 + //$local = 3600 * intval(get_option('gmt_offset'));
85 + //wp_schedule_event($timestamp - $local, 'twicedaily', 'mc_banklinks_update_cron');
86 + wp_schedule_event($timestamp, 'twicedaily', 'mc_banklinks_update_cron');
87 + }
88 +
89 + if (!class_exists('wc_makecommerce_domain')) {
90 + require_once('includes/vendor/autoload.php');
91 + require_once('includes/Maksekeskus.php');
92 + }
93 +
94 + function mk_check_payment() {
95 +
96 + global $woocommerce;
97 + $api = mk_get_api();
98 +
99 + //set the correct language
100 + if (isset($_GET["lang1"])) {
101 + //set polylang language
102 + if (function_exists('pll_current_language')) {
103 + //get the correct locale name from polylang
104 + $polylangLangs = pll_the_languages(array('raw' => 1));
105 + if (isset($polylangLangs[$_GET["lang1"]])) {
106 + $locale = str_replace("-", "_", $polylangLangs[$_GET["lang1"]]["locale"]);
107 + }
108 +
109 + //first change WP language, this triggers some polylang hooks
110 + switch_to_locale($locale);
111 +
112 + //second, change WPML language?!?! this ensures the correct landingpage (works with polylang)
113 + do_action('wpml_switch_language', $_GET["lang1"]);
114 + } else {
115 + if (function_exists('icl_object_id')) { //weirdly enough icl_object ID exists in this point of the request. It doesn't in other locations...
116 + //set wpml language
117 + do_action('wpml_switch_language', $_GET["lang1"]);
118 + }
119 + }
120 + }
121 +
122 + $returnUrl = home_url();
123 +
124 + $request = stripslashes_deep($_POST);
125 + if ($api->verifyMac($request)) {
126 + $data = $api->extractRequestData($request);
127 + $reference = false;
128 +
129 + if (!empty($data['error']) ) {
130 + wc_add_notice(__('Payment failed', 'wc_makecommerce_domain'), 'error');
131 + return $returnUrl;
132 + }
133 +
134 + if (!empty($data['message_type']) ) {
135 + if ($data['message_type'] == 'payment_return') {
136 + $transactionId = $data['transaction'];
137 + $reference = $data['reference'];
138 + $paymentStatus = $data['status'];
139 + }
140 + if ($data['message_type'] == 'token_return') {
141 + if (!empty($data['transaction']['reference'])) {
142 + $reference = $data['transaction']['reference'];
143 + }
144 + $paymentStatus = $data['transaction']['status'];
145 + $transactionId = $data['transaction']['id'];
146 +
147 + // for API backward compatibility - if we didn't find reference in the mesage, or the transaction state vas still PENDING
148 + // we'll fetch the transaction data from API, and make a payment request if needed
149 + // this all can be removed after 2017-jan
150 + if (!$reference or $paymentStatus == 'PENDING') {
151 + $transaction = $api->getTransaction($transactionId);
152 + if (!empty($transaction->reference)) {
153 + $reference = $transaction->reference;
154 + }
155 +
156 + $paymentStatus = $transaction->status;
157 +
158 + if ($paymentStatus == 'PENDING') {
159 + $paymentRequest = array(
160 + 'amount' => (string)sprintf("%.2f", $transaction->amount),
161 + 'currency' => $transaction->currency,
162 + 'token' => $data['token']['id']
163 + );
164 + $payment = $api->createPayment($transactionId, $paymentRequest);
165 + // TODO: validate
166 + $paymentStatus = $payment->transaction->status;
167 + }
168 +
169 + }
170 +
171 +
172 + }
173 +
174 + }
175 + }
176 +
177 + // if we didn't find reference to an Order, we send user to shop landing-page. TODO: could be improved
178 + if (!$reference) { return $returnUrl; }
179 +
180 + $order = new WC_Order($reference);
181 + // if we din't find the Order, we send user to shop landing-page. TODO: could be improved
182 + if (!$order->get_id()) { return $returnUrl; }
183 +
184 + $returnUrl = $order->get_checkout_order_received_url();
185 +
186 + if ($paymentStatus == 'CANCELLED' || $paymentStatus == 'COMPLETED') {
187 + //get transaction to update the payment method.
188 + $transaction = $api->getTransaction($transactionId);
189 +
190 + //make sure the payment method is the same for simplecheckout and normal version.
191 + $paymentMethod = "";
192 + if (isset($transaction->type) && isset($transaction->method)) {
193 + if ($transaction->type == "card") {
194 + $paymentMethod = "card_".$transaction->method;
195 + } else {
196 + if (isset($transaction->country)) {
197 + $paymentMethod = $transaction->country."_".$transaction->method;
198 + }
199 + }
200 + }
201 +
202 + //update _makecommerce_preselected_method
203 + update_post_meta($order->get_id(), '_makecommerce_preselected_method', $paymentMethod);
204 + }
205 +
206 + switch($paymentStatus) {
207 +
208 + case 'CANCELLED':
209 + $order->update_status( 'cancelled' );
210 + wc_add_notice(__('Payment transaction cancelled', 'wc_makecommerce_domain'), 'error');
211 + $returnUrl = wc_get_cart_url();
212 + break;
213 +
214 + case 'COMPLETED':
215 + $orderNote = array();
216 + $orderNote[] = __('Transaction ID', 'wc_makecommerce_domain') . ': <a target=_blank href="'.$api->getEnvUrls()->merchantUrl.'/merchant/shop/deals/detail.html?id='. $transactionId .'">'.$transactionId.'</a>';
217 + $orderNote[] = __('Payment option', 'wc_makecommerce_domain') . ': ' . get_post_meta($order->get_id(), '_makecommerce_preselected_method', true);
218 + $order->add_order_note(implode("\r\n", $orderNote));
219 + if (!empty($data['token']) && !empty($data['token']['multiuse'])) {
220 + update_post_meta($order->get_id(), '_makecommerce_payment_token', $data['token']['id']);
221 + update_post_meta($order->get_id(), '_makecommerce_payment_token_valid_until', $data['token']['valid_until']);
222 + }
223 +
224 + if (isset($_GET['lang1'])) {
225 + $order->update_meta_data('wpml_language', $_GET["lang1"]);
226 + }
227 +
228 + $order->payment_complete( $transactionId );
229 + $woocommerce->cart->empty_cart();
230 + break;
231 + }
232 +
233 + return $returnUrl;
234 + }
235 +
236 +
237 +
238 +
239 + $MKAPI = false;
240 + function mk_get_api() {
241 + global $MKAPI;
242 + if ($MKAPI) {
243 + //return $MKAPI;
244 + }
245 + $mk_api_type = get_option('mk_api_type', false);
246 + if (!$mk_api_type) {
247 + return false;
248 + }
249 + if ($mk_api_type !== 'live') {
250 + $key_prefix = $mk_api_type.'_';
251 + } else {
252 + $key_prefix = '';
253 + }
254 + $mk_shop_id = get_option('mk_'.$key_prefix.'shop_id', '');
255 + $mk_public_key = get_option('mk_'.$key_prefix.'public_key', '');
256 + $mk_private_key = get_option('mk_'.$key_prefix.'private_key', '');
257 + if (!$mk_shop_id || !$mk_public_key || !$mk_shop_id) {
258 + return false;
259 + }
260 + $MKAPI = new \Maksekeskus\Maksekeskus($mk_shop_id, $mk_public_key, $mk_private_key, $mk_api_type === 'live' ? false : true);
261 + return $MKAPI;
262 + }
263 +
264 + function mk_is_api_set() {
265 + $mk_api_type = get_option('mk_api_type', false);
266 + if (!$mk_api_type) {
267 + return false;
268 + }
269 + if ($mk_api_type !== 'live') {
270 + $key_prefix = $mk_api_type.'_';
271 + } else {
272 + $key_prefix = '';
273 + }
274 + $mk_shop_id = get_option('mk_'.$key_prefix.'shop_id', '');
275 + $mk_public_key = get_option('mk_'.$key_prefix.'public_key', '');
276 + $mk_private_key = get_option('mk_'.$key_prefix.'private_key', '');
277 + if (!$mk_shop_id || !$mk_public_key || !$mk_shop_id) {
278 + return false;
279 + }
280 + return true;
281 + }
282 +
283 +
284 + function mk_admin_error() {
285 + printf( '<div class="%1$s"><p>%2$s</p></div>', 'notice notice-error', __('Please check that you have configured correctly MakeCommerce API accesses', 'wc_makecommerce_domain'));
286 + }
287 +
288 +
289 +
290 + add_filter('query_vars', 'mk_cron_query_vars');
291 + add_action('parse_request', 'mk_parse_cron_update_vars');
292 +
293 + function mk_cron_query_vars($vars) {
294 + $vars[] = 'mk-action';
295 + $vars[] = 'mk-shop-id';
296 + $vars[] = 'mk-test-shop-id';
297 + return $vars;
298 + }
299 +
300 + function mk_parse_cron_update_vars($wp) {
301 + if (array_key_exists('mk-action', $wp->query_vars) && $wp->query_vars['mk-action'] == 'mk-update'
302 + && (array_key_exists('mk-shop-id', $wp->query_vars) || array_key_exists('mk-test-shop-id', $wp->query_vars) ) ) {
303 + if( (strlen($wp->query_vars['mk-shop-id']) && $wp->query_vars['mk-shop-id'] == get_option('mk_shop_id', false) )
304 + || (strlen($wp->query_vars['mk-test-shop-id']) && $wp->query_vars['mk-test-shop-id'] == get_option('mk_test_shop_id', false) ) ) {
305 + update_mc_banklinks();
306 + exit();
307 + }
308 + }
309 + }
310 +
311 + function mk_admin_login_update($user_login, $user) {
312 + if(user_can( $user, 'administrator' )) {
313 + update_mc_banklinks();
314 + }
315 + }
316 + add_action('wp_login', 'mk_admin_login_update', 10, 2);
317 +
318 +
319 +
320 + function mk_admin_add_api_settings($sections) {
321 + $sections['mk_api'] = __('MakeCommerce API access', 'wc_makecommerce_domain');
322 + return $sections;
323 + }
324 +
325 + function mk_admin_api_settings($settings) {
326 + global $current_section;
327 + if ($current_section !== 'mk_api') {
328 + return $settings;
329 + }
330 + return array(
331 + array('type' => 'title', 'desc' => __get_logo_html()),
332 + array(
333 + 'type' => 'title',
334 + 'title' => __('MakeCommerce API access credentials', 'wc_makecommerce_domain'),
335 + 'desc' => __('To use MakeCommerce/Maksekeskus services you need to enter API credentials below here <br/> <br/>', 'wc_makecommerce_domain').
336 + sprintf( __('To further configure the Payment methods please go to <a href=."%s">MakeCommerce Checkout Options</a>, links to settings of our Shipment methods are listed below', 'wc_makecommerce_domain'), 'admin.php?page=wc-settings&tab=checkout&section=makecommerce'),
337 + 'id' => 'mk_api_settings'
338 + ),
339 + array(
340 + 'type' => 'select',
341 + 'title' => __('Current environment', 'wc_makecommerce_domain'),
342 + 'desc' => __('See more about <a href="https://maksekeskus.ee/en/for-developers/test-environment/">MakeCommerce Test environment</a>', 'wc_makecommerce_domain'),
343 + 'default' => 'live',
344 + 'options' => array(
345 + 'live' => __('Live', 'wc_makecommerce_domain'),
346 + 'test' => __('Test', 'wc_makecommerce_domain'),
347 + ),
348 + 'id' => 'mk_api_type'
349 + ),
350 + array(
351 + 'id' => 'mk_shop_id',
352 + 'type' => 'text',
353 + 'title' => __('Shop ID (live)', 'wc_makecommerce_domain'),
354 + 'desc' => __('Get it from <a href="https://merchant.maksekeskus.ee/api.html" target="_blank">Merchant Portal</a>','wc_makecommerce_domain'),
355 + 'class' => 'input-text regular-input',
356 + ),
357 + array(
358 + 'id' => 'mk_private_key',
359 + 'type' => 'text',
360 + 'title' => __('Secret key (live)', 'wc_makecommerce_domain'),
361 + 'class' => 'input-text regular-input',
362 + ),
363 + array(
364 + 'id' => 'mk_public_key',
365 + 'type' => 'text',
366 + 'title' => __('Publishable key (live)', 'wc_makecommerce_domain'),
367 + 'class' => 'input-text regular-input',
368 + ),
369 + array(
370 + 'id' => 'mk_test_shop_id',
371 + 'type' => 'text',
372 + 'title' => __('Shop ID (test)', 'wc_makecommerce_domain'),
373 + 'class' => 'input-text regular-input',
374 + 'default' => 'f64b4f20-5ef9-4b7b-a6fa-d623d87f0b9c',
375 + 'desc' => __('Get it from <a href="https://merchant-test.maksekeskus.ee/api.html" target="_blank">Merchant Portal Test</a>','wc_makecommerce_domain'),
376 + ),
377 + array(
378 + 'id' => 'mk_test_private_key',
379 + 'type' => 'text',
380 + 'title' => __('Secret key (test)', 'wc_makecommerce_domain'),
381 + 'default' => 'MPjcVMoRZPAucsTuGK5ZukOlV7BlzgSvXOowJUkk9IFSQPVooRwcVOxzz3mhEpgM',
382 + 'class' => 'input-text regular-input',
383 + ),
384 + array(
385 + 'id' => 'mk_test_public_key',
386 + 'type' => 'text',
387 + 'title' => __('Publishable key (test)', 'wc_makecommerce_domain'),
388 + 'default' => '7Hog41ci2mKkmtviMycWxpNx14pNP70m',
389 + 'class' => 'input-text regular-input',
390 + ),
391 + array('type' => 'sectionend', 'id' => 'mk_api_settings'),
392 + array(
393 + 'type' => 'title',
394 + 'desc' => '<br><hr><br>',
395 + ),
396 + array(
397 + 'id' => 'mk_module_title',
398 + 'type' => 'title',
399 + 'title' => __('Makecommerce modules', 'wc_makecommerce_domain'),
400 + 'desc' => __('Our plugin adds several modules to your shop. Here you can switch off modules that are not important for you, they will disappear from Woocommerce settings menus.<br> Each active module have their own settings dialog, where they must also be Enabled before use.', 'wc_makecommerce_domain'),
401 + 'class' => '',
402 + ),
403 + array(
404 + 'id' => 'mk_transport_apt_omniva',
405 + 'type' => 'checkbox',
406 + 'default' => 'yes',
407 + 'title' => __('Omniva Parcel Machine', 'wc_makecommerce_domain'),
408 + 'desc' => __('enable Omniva parcel machines shipping method', 'wc_makecommerce_domain').' ('. sprintf(__('<a href="%s">module settings</a>', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=shipping&section=parcelmachine_omniva')).')',
409 + 'class' => '',
410 + ),
411 + array(
412 + 'id' => 'mk_transport_apt_smartpost',
413 + 'type' => 'checkbox',
414 + 'default' => 'yes',
415 + 'title' => __('SmartPOST Parcel Machine', 'wc_makecommerce_domain'),
416 + 'desc' => __('enable SmartPOST parcel machines shipping method', 'wc_makecommerce_domain').' ('. sprintf(__('<a href="%s">module settings</a>', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=shipping&section=parcelmachine_smartpost')).')',
417 + 'class' => '',
418 + ),
419 + array(
420 + 'id' => 'mk_transport_apt_dpd',
421 + 'type' => 'checkbox',
422 + 'default' => 'no',
423 + 'title' => __('DPD', 'wc_makecommerce_domain') . ' ' . __('parcel machine', 'wc_makecommerce_domain'),
424 + 'desc' => __('enable DPD parcel machine shipping method', 'wc_makecommerce_domain').' ('. sprintf(__('<a href="%s">module settings</a>', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=shipping&section=parcelmachine_dpd')).')',
425 + 'class' => '',
426 + ),
427 + array(
428 + 'id' => 'mk_transport_courier_omniva',
429 + 'type' => 'checkbox',
430 + 'default' => 'yes',
431 + 'title' => __('Omniva Courier', 'wc_makecommerce_domain'),
432 + 'desc' => __('enable Omniva courier shipping method', 'wc_makecommerce_domain').' ('. sprintf(__('<a href="%s">module settings</a>', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=shipping&section=courier_omniva')).')',
433 + 'class' => '',
434 + ),
435 + array(
436 + 'id' => 'mk_transport_courier_smartpost',
437 + 'type' => 'checkbox',
438 + 'default' => 'yes',
439 + 'title' => __('SmartPOST Courier', 'wc_makecommerce_domain'),
440 + 'desc' => __('enable SmartPOST courier shipping method', 'wc_makecommerce_domain').' ('. sprintf(__('<a href="%s">module settings</a>', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=shipping&section=courier_smartpost')).')',
441 + 'class' => '',
442 + ),
443 + array(
444 + 'id' => 'mk_checkout_sco',
445 + 'type' => 'checkbox',
446 + 'title' => __('SimpleCheckout', 'wc_makecommerce_domain'),
447 + 'desc' => __('enable SimpleCheckout&trade; Checkout method', 'wc_makecommerce_domain').' ('. sprintf(__('<a href="%s">module settings</a>', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=checkout&section=makecommerce_sc')).')',
448 + 'class' => '',
449 + ),
450 + array(
451 + 'id' => 'mk_product_slice',
452 + 'type' => 'checkbox',
453 + 'title' => __('Indivy Slice 3 information in product view', 'wc_makecommerce_domain'),
454 + 'desc' => __('enable Indivy Slice 3 in product view', 'wc_makecommerce_domain'),
455 + 'class' => '',
456 + ),
457 + array(
458 + 'id' => 'mk_javascript_ui',
459 + 'type' => 'api_javascript_ui',
460 + ),
461 + array('type' => 'sectionend', 'id' => 'mk_api_settings')
462 + );
463 + }
464 +
465 + function mk_wc_version($version) {
466 + global $woocommerce;
467 + if ( version_compare( $woocommerce->version, "3.4.0", ">=" ) ) {
468 + return true;
469 + } else {
470 + return false;
471 + }
472 + }
473 +
474 + function mk_admin_save_api_settings() {
475 + // reload banklinks
476 + global $current_section;
477 + if ($current_section !== 'mk_api') {
478 + return;
479 + }
480 + update_mc_banklinks();
481 + }
482 +
483 + function mk_admin_plugin_settings_link($links) {
484 + if (mk_wc_version("3.4.0"))
485 + $settings_link = '<a href="admin.php?page=wc-settings&tab=advanced&section=mk_api">API '.__('Settings').'</a>';
486 + else
487 + $settings_link = '<a href="admin.php?page=wc-settings&tab=api&section=mk_api">API '.__('Settings').'</a>';
488 + array_unshift($links, $settings_link);
489 + return $links;
490 + }
491 +
492 + function wc_mc_shop_slice_button() {
493 + if (get_option('mk_product_slice', 'no') == 'yes') {
494 + global $product;
495 + // $price_excl_tax = wc_get_price_excluding_tax( $product ); // price without VAT
496 + $price_incl_tax = wc_get_price_including_tax( $product ); // price with VAT
497 + global $wpdb;
498 + global $mkDbTable;
499 + $tableName = $wpdb->prefix . $mkDbTable;
500 + $methods = $wpdb->get_results('SELECT * FROM '.$tableName);
501 + $slice = false;
502 + if(count($methods)) {
503 + foreach ($methods as $method) {
504 + if ($method->name =="slice") {
505 + if ( $price_incl_tax >= $method->min_amount ) {
506 + if ( $price_incl_tax <= $method->max_amount ) {
507 + $slice = true;
508 + }
509 + }
510 + }
511 + }
512 + }
513 + if ($slice == true) {
514 + echo '<div style="width:100%; margin-top: 20px; margin-bottom: auto;"><img src="'.plugins_url('/images/slice_logo_dark_176x62.svg', __FILE__).'" width="88" weight="31"/>&nbsp;&nbsp;Osta kohe, maksa hiljem. Kolmes võrdses osas 3 x '.sprintf("%.2f",$price_incl_tax/3).' €</div>'; // sprintf("%.2f",$price_incl_tax/3).' in month
515 + }
516 + }
517 + }
518 + // Slice Promo 1
519 + add_action( 'woocommerce_after_add_to_cart_button', 'wc_mc_shop_slice_button', 20 );
520 +
521 + // if (mk_wc_version("3.4.0")) {
522 + add_filter('woocommerce_get_settings_advanced', 'mk_admin_api_settings', 10, 2);
523 + add_action('woocommerce_get_sections_advanced', 'mk_admin_add_api_settings');
524 + add_filter('woocommerce_get_settings_api', 'mk_admin_api_settings', 10, 2);
525 + // } else {
526 + add_action('woocommerce_get_sections_api', 'mk_admin_add_api_settings');
527 + add_action('woocommerce_settings_saved', 'mk_admin_save_api_settings', 30, 0);
528 + add_filter("plugin_action_links_".plugin_basename(__FILE__), 'mk_admin_plugin_settings_link' );
529 + // }
530 +
531 + function __get_logo_html() {
532 + return '<div class="makecommerce-info">'.
533 + '<div class="makecommerce-logo">'.
534 + '<a target="_blank" href="http://maksekeskus.ee"><img src="'. plugins_url('/images/makecommerce_logo_en.svg', __FILE__) .'" class="makecommerce-logo"></a>'.
535 + '</div>'.
536 + '<div class="makecommerce-links">'.
537 + '<div class="makecommerce-link"><a target="_blank" href="https://merchant.maksekeskus.ee">Merchant Portal</a></div>'.
538 + '<div class="makecommerce-link"><a target="_blank" href="https://makecommerce.net/">makecommerce.net</a></div>'.
539 + '<div class="makecommerce-link"><a target="_blank" href="http://maksekeskus.ee">maksekeskus.ee</a></div>'.
540 + '</div>'.
541 + '</div>';
542 + }
543 +
544 + /* add new column (makecommerce_payment_method) to orders list */
545 + function wc_makecommerce_payment_method_order_column($columns)
546 + {
547 + $columns['makecommerce_payment_method'] = __('Payment method (MC)');
548 + return $columns;
549 + }
550 +
551 + add_filter('manage_edit-shop_order_columns', 'wc_makecommerce_payment_method_order_column');
552 +
553 + // Make custom column sortable
554 + add_filter( "manage_edit-shop_order_sortable_columns", 'makecommerce_payment_method_sortable' );
555 + function makecommerce_payment_method_sortable($columns)
556 + {
557 + $meta_key = 'makecommerce_payment_method';
558 + return wp_parse_args(array('makecommerce_payment_method' => $meta_key), $columns);
559 + }
560 +
561 + /* fill content for makecommerce_payment_method */
562 + function wc_makecommerce_payment_method_order_column_content($column)
563 + {
564 + global $post;
565 +
566 + if ('makecommerce_payment_method' === $column) {
567 + echo get_post_meta($post->ID, '_makecommerce_preselected_method', true);
568 + }
569 + }
570 +
571 + add_action('manage_shop_order_posts_custom_column', 'wc_makecommerce_payment_method_order_column_content');
45 572 }
46 -