PluginProbe
MakeCommerce for WooCommerce / 1.1.7
MakeCommerce for WooCommerce v1.1.7
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 +290 -81 1.1.51.1.7 View file →
@@ -1,9 +1,9 @@
1 1 <?php
2 2 /*
3 3 Plugin Name: MakeCommerce for WooCommerce
4 4 Description: Adds MakeCommerce payment gateway and Itella/Omniva parcel machine shipping methods to Woocommerce checkout
5 - Version: 1.1.4
5 + Version: 1.1.7
6 6 Author: Maksekeskus AS
7 7 Author URI: https://MakeCommerce.net/
8 8 Text Domain: wc_makecommerce_domain
9 9 */
@@ -71,9 +71,9 @@
71 71 const module_homepage_url = 'https://maksekeskus.ee/en/integration-modules/makecommerce-woocommerce-payment-plugin/';
72 72 const testenv_homepage_url = 'http://maksekeskus.ee/en/for-developers/test-environment/';
73 73
74 74 public $id = 'makecommerce';
75 - public $version = '1.1.2';
75 + public $version = '1.1.7';
76 76
77 77 public $return_url;
78 78 public $return_url_cancel;
79 79
@@ -316,21 +316,10 @@
316 316 'type' => 'checkbox',
317 317 'default' => 'yes',
318 318 'desc_tip' => __('It will pass user Name and e-mail address to the Credit Card dialog to make the form filling easier', 'wc_makecommerce_domain'),
319 319 );
320 - $this->form_fields['cc_shop_name'] = array(
321 - 'title' => __('Shop name on credit card payment', 'wc_makecommerce_domain'),
322 - 'type' => 'text',
323 - 'desc_tip' => __('This will appear on buyer\'s credit card transaction', 'wc_makecommerce_domain'),
324 - );
325 - $this->form_fields['cc_cart_reference_string'] = array(
326 - 'title' => __('Order reference on credit card payment', 'wc_makecommerce_domain'),
327 - 'type' => 'text',
328 - 'default' => 'Order %s',
329 - 'desc_tip' => __('This will appear on buyer\'s credit card transaction where "%s" is the order number', 'wc_makecommerce_domain'),
330 - );
331 320 $this->form_fields['adv_title'] = array(
332 - 'title' => '<br>'.__('Advanced Settings', 'wc_makecommerce_domain'),
321 + 'title' => '<hr><br>'.__('Advanced Settings', 'wc_makecommerce_domain'),
333 322 'type' => 'title',
334 323 );
335 324 $this->form_fields['reload_links'] = array(
336 325 'type' => 'mc_banklinks_reload',
@@ -337,8 +326,13 @@
337 326 'title' => __('Update payment methods', 'wc_makecommerce_domain'),
338 327 'description' => __('Update', 'wc_makecommerce_domain'),
339 328 'desc_tip' => __('This will update shop configuration from MakeCommerce servers.', 'wc_makecommerce_domain'),
340 329 );
330 + $this->form_fields['cron_info'] = array(
331 + 'type' => 'cron_link',
332 + 'title' => __('Update url', 'wc_makecommerce_domain'),
333 + 'desc_tip' => __('Update url for cron job.', 'wc_makecommerce_domain'),
334 + );
341 335 }
342 336
343 337 public function generate_mc_hidden_html( $key, $data ) {
344 338 $field_key = $this->get_field_key($key);
@@ -351,9 +345,43 @@
351 345 </tr>
352 346 <?php
353 347 return ob_get_clean();
354 348 }
349 +
350 + public function generate_cron_link_html( $key, $data ) {
351 + $field = $this->get_field_key( $key );
352 + $defaults = array(
353 + 'title' => '',
354 + 'disabled' => false,
355 + 'class' => '',
356 + 'css' => '',
357 + 'placeholder' => '',
358 + 'type' => 'text',
359 + 'desc_tip' => false,
360 + 'description' => '',
361 + 'custom_attributes' => array()
362 + );
355 363
364 + $data = wp_parse_args( $data, $defaults );
365 + $shop_id_text = get_option('mc_banklinks_api_type', false) == 'live' ? 'mk-shop-id': 'mk-test-shop-id';
366 + ob_start();
367 + ?>
368 + <tr valign="top">
369 + <th scope="row" class="titledesc">
370 + <label for="<?php echo esc_attr( $field ); ?>"><?php echo wp_kses_post( $data['title'] ); ?></label>
371 + <?php echo $this->get_tooltip_html( $data ); ?>
372 + </th>
373 + <td class="forminp">
374 + <fieldset>
375 + <legend class="screen-reader-text"><span><?php echo wp_kses_post( $data['title'] ); ?></span></legend>
376 + <p><?php echo get_site_url(null, '?mk-action=mk-update&'.$shop_id_text.'=') . get_option('mk_test_shop_id', false);?></p>
377 + </fieldset>
378 + </td>
379 + </tr>
380 + <?php
381 + return ob_get_clean();
382 + }
383 +
356 384 public function generate_mc_banklinks_reload_html( $key, $data ) {
357 385
358 386 $field = $this->get_field_key( $key );
359 387 $defaults = array(
@@ -491,9 +519,9 @@
491 519 }
492 520
493 521 public function mc_banklinks_reload($force = false) {
494 522 if ($force || (defined('DOING_AJAX') && DOING_AJAX)) {
495 -
523 +
496 524 global $wpdb;
497 525 global $mkDbTable;
498 526 global $wp_version;
499 527
@@ -511,13 +539,15 @@
511 539 return false;
512 540 }
513 541
514 542 try {
515 - $methods = $this->_api->getShopConfig($request_params)->payment_methods;
543 + $shopConfig = $this->_api->getShopConfig($request_params);
544 + $methods = $shopConfig->payment_methods;
516 545 } catch (Exception $e) {
517 546 error_log(print_r($e, 1));
518 547 return false;
519 548 }
549 +
520 550 if(isset($methods->banklinks)) {
521 551 foreach($methods->banklinks as $method) {
522 552 $wpdb->insert($tableName, array('type' => 'banklink', 'country' => $method->country, 'name' => $method->name, 'url' => $method->url));
523 553 }
@@ -529,11 +559,17 @@
529 559 $wpdb->insert($tableName, array('type' => 'card', 'name' => $method->name));
530 560 }
531 561 $updated = true;
532 562 }
563 +
564 + if(isset($shopConfig) && strlen($shopConfig->name)) {
565 + update_option( 'mc_shop_name', $shopConfig->name );
566 + }
567 +
533 568 if ($updated) {
534 569 update_option( 'mc_banklinks_api_type', get_option('mk_api_type', false) );
535 570 }
571 +
536 572 if ($force) {
537 573 $this->initBankLinks();
538 574 return $updated;
539 575 }
@@ -664,8 +700,9 @@
664 700 <?php
665 701 }
666 702 ?>
667 703 </ul>
704 + <div class="mc-clear-both"></div>
668 705 <script type="text/javascript">
669 706 var makecommerceId = '<?php echo $this->id; ?>';
670 707 var selectedCountry = jQuery('input[name=makecommerce_country_picker]:checked').val();
671 708
@@ -955,10 +992,10 @@
955 992 'locale' => !empty($_GET['lang']) ? $_GET['lang'] : (defined('ICL_LANGUAGE_CODE') ? ICL_LANGUAGE_CODE : strtolower(substr(get_locale(), 0, 2))),
956 993 'open-on-load' => 'true',
957 994 'client-name' => ($this->settings['cc_pass_cust_data'] == 'yes' ? (string) ($order->billing_first_name . ' ' . $order->billing_last_name) : ''),
958 995 'email' => ($this->settings['cc_pass_cust_data'] == 'yes' ? (string) $order->billing_email : ''),
959 - 'name' => $this->settings['cc_shop_name'],
960 - 'description' => (string)sprintf($this->settings['cc_cart_reference_string'], (string) $idReference),
996 + 'name' => get_option('mc_shop_name', ''),
997 + 'description' => __('Order', 'woocommerce') . '&nbsp;' . (string) $idReference,
961 998 'completed' => 'makecommerce_cc_complete',
962 999 'currency' => 'EUR',
963 1000 );
964 1001 ?>
@@ -1276,14 +1313,55 @@
1276 1313 add_action('woocommerce_checkout_update_order_meta', array(&$this, 'add_parcelmachine_order_meta'));
1277 1314 add_filter('woocommerce_order_shipping_to_display_shipped_via', array(&$this, 'add_admin_parcelmachine_via_field'));
1278 1315 }
1279 1316
1317 + public function generate_shipping_ui_javascript_html( $key, $data ) { ?>
1318 + <script type="text/javascript">
1319 + jQuery(document).ready(function($) {
1320 + var country_select = $('#woocommerce_parcelmachine_<?php echo strtolower($this->ext); ?>_countries');
1321 + var prices = [], free_shippings = [];
1322 + $.each(country_select.find('option'), function(i, option) {
1323 + prices[$(option).val()] = $('#woocommerce_parcelmachine_<?php echo strtolower($this->ext); ?>_price_' + $(option).val().toLowerCase()).closest('tr');
1324 + free_shippings[$(option).val()] = $('#woocommerce_parcelmachine_<?php echo strtolower($this->ext); ?>_free_shipping_min_amount_' + $(option).val().toLowerCase()).closest('tr');
1325 + });
1326 + country_select.on('change', function(){
1327 + var countries = $(this).val();
1328 + if(countries) {
1329 + hidePrices(countries);
1330 + }
1331 + });
1332 + hidePrices(country_select.val());
1333 + function hidePrices(countries) {
1334 + for (var key in prices) {
1335 + if(countries.indexOf(key) == -1){
1336 + prices[key].hide();
1337 + free_shippings[key].hide();
1338 + } else {
1339 + prices[key].show();
1340 + free_shippings[key].show();
1341 + }
1342 + }
1343 + }
1344 + });
1345 + </script>
1346 + <?php }
1347 +
1280 1348 function calculate_shipping($package = array()) {
1349 + $price = $this->settings['price_'.strtolower($package['destination']['country'])];
1281 1350
1282 - $price = $this->settings['price_'.strtolower($package['destination']['country'])];
1283 - if ($this->free_shipping_min_amount && $package['contents_cost'] >= $this->free_shipping_min_amount) {
1351 + $free_shipping_min_amount = $this->settings['free_shipping_min_amount_'.strtolower($package['destination']['country'])];
1352 +
1353 + if ($free_shipping_min_amount && $package['contents_cost'] >= $free_shipping_min_amount) {
1284 1354 $price = 0;
1285 1355 }
1356 +
1357 + $free_shipping = true;
1358 + foreach ($package['contents'] as $line) {
1359 + $free_shipping = get_post_meta($line['product_id'], '_no_shipping_cost', true) === 'yes' ? $free_shipping : false;
1360 + }
1361 + if($free_shipping) {
1362 + $price = 0;
1363 + }
1286 1364 $rate = array(
1287 1365 'id' => $this->id,
1288 1366 'label' => $this->title,
1289 1367 'cost' => $price,
@@ -1378,9 +1456,9 @@
1378 1456 $res .= '<optgroup label="'.$machine['city'].'">';
1379 1457 }
1380 1458 $mname = $machine['name'];
1381 1459 if ($this->short_office_names !== 'yes') $mname .= ' - ' . $machine['city'] . ', ' . $machine['address'];
1382 - $res .= '<option value="'.esc_attr($machine['provider'].'||'.$machine['id']).'">'.$mname.'</option>';
1460 + $res .= '<option value="'.esc_attr($machine['carrier'].'||'.$machine['id']).'">'.$mname.'</option>';
1383 1461 $pcity = $city;
1384 1462 }
1385 1463 if ($pcity) $res .= '</optgroup>';
1386 1464 $res .= '</select>';
@@ -1416,36 +1494,60 @@
1416 1494 function init_form_fields() {
1417 1495
1418 1496 $this->form_fields = array();
1419 1497 $this->form_fields['logo'] = array('type' => 'title', 'title' => __get_logo_html());
1420 - $this->form_fields['generic'] = array('type' => 'title', 'title' => __('Generic and pricing options', 'wc_makecommerce_domain'));
1498 + $this->form_fields['generic'] = array(
1499 + 'type' => 'title',
1500 + 'title' => __('Generic and pricing options', 'wc_makecommerce_domain'),
1501 + 'description' => __('You can always exclude a product from being available for the Parcel Machine delivery by clicking "Does not fit parcel machine" in the product\'s shipping options.', 'wc_makecommerce_domain').'<br>'.__('You can mark there also a product as "Free shipping in parcel machine."', 'wc_makecommerce_domain'),
1502 + );
1421 1503 $this->form_fields['active'] = array(
1422 1504 'title' => __('Enable', 'wc_makecommerce_domain'),
1423 1505 'type' => 'checkbox',
1424 1506 'label' => __('enabled', 'wc_makecommerce_domain'),
1425 1507 'default' => 'no',
1426 - 'description' => __('You can always exclude a product from being available for the Parcel Machine delivery by clicking "Does not fit parcel machine" in the product\'s shipping options', 'wc_makecommerce_domain'),
1427 1508 );
1509 + $this->form_fields['countries'] = array(
1510 + 'title' => __('Enable Shipping to', 'wc_makecommerce_domain'),
1511 + 'type' => 'multiselect',
1512 + 'class' => 'wp-enhanced-select',
1513 + 'css' => 'width: 450px;',
1514 + 'default' => array('EE','LV','LT'),
1515 + 'options' => array('EE' => __('Estonia - EE'), 'LV' => __('Latvia - LV'), 'LT' => __('Lithuania - LT')),
1516 + 'description' => __('use Shift key to select multiple lines', 'wc_makecommerce_domain'),
1517 + );
1428 1518 $this->form_fields['price_ee'] = array(
1429 - 'title' => __('Price EE', 'wc_makecommerce_domain'),
1519 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' EE',
1430 1520 'type' => 'text',
1431 1521 'default' => '2.99'
1432 1522 );
1523 + $this->form_fields['free_shipping_min_amount_ee'] = array(
1524 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain').' EE',
1525 + 'type' => 'number',
1526 + 'default' => '0',
1527 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1528 + );
1433 1529 $this->form_fields['price_lv'] = array(
1434 - 'title' => __('Price LV', 'wc_makecommerce_domain'),
1530 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' LV',
1435 1531 'type' => 'text',
1436 1532 'default' => '7.99'
1437 1533 );
1534 + $this->form_fields['free_shipping_min_amount_lv'] = array(
1535 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain').' LV',
1536 + 'type' => 'number',
1537 + 'default' => '0',
1538 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1539 + );
1438 1540 $this->form_fields['price_lt'] = array(
1439 - 'title' => __('Price LT', 'wc_makecommerce_domain'),
1541 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' LT',
1440 1542 'type' => 'text',
1441 1543 'default' => '8.99'
1442 1544 );
1443 - $this->form_fields['free_shipping_min_amount'] = array(
1444 - 'title' => __('Minimum amount for free shipping', 'wc_makecommerce_domain'),
1545 + $this->form_fields['free_shipping_min_amount_lt'] = array(
1546 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain').' LT',
1445 1547 'type' => 'number',
1446 1548 'default' => '0',
1447 - 'description' => '(0 means no free shipping)'
1549 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1448 1550 );
1449 1551 $this->form_fields['maximum_weight'] = array(
1450 1552 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'),
1451 1553 'type' => 'text',
@@ -1450,17 +1552,10 @@
1450 1552 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'),
1451 1553 'type' => 'text',
1452 1554 'default' => '15'
1453 1555 );
1454 - $this->form_fields['countries'] = array(
1455 - 'title' => __('Specific Countries', 'wc_makecommerce_domain'),
1456 - 'type' => 'multiselect',
1457 - 'class' => 'wp-enhanced-select',
1458 - 'css' => 'width: 450px;',
1459 - 'default' => array('EE','LV','LT'),
1460 - 'options' => array('EE' => __('Estonia'), 'LV' => __('Latvia'), 'LT' => __('Lithuania')),
1461 - );
1462 - $this->form_fields['look_and_feel'] = array( 'type' => 'title', 'title' => __('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on check-out page', 'wc_makecommerce_domain'));
1556 +
1557 + $this->form_fields['look_and_feel'] = array( 'type' => 'title', 'title' => '<hr><br>'.__('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on check-out page', 'wc_makecommerce_domain'));
1463 1558 $languages = apply_filters('wpml_active_languages', NULL, 'skip_missing=0');
1464 1559 if (empty($languages)) {
1465 1560 $this->form_fields['method_name'] = array(
1466 1561 'title' => __('Shipping Method Title', 'wc_makecommerce_domain'),
@@ -1488,9 +1583,9 @@
1488 1583 'type' => 'checkbox',
1489 1584 'label' => __('Display only parcel machine names, without addresses', 'wc_makecommerce_domain'),
1490 1585 'default' => 'no'
1491 1586 );
1492 - $this->form_fields['api_access'] = array( 'type' => 'title', 'title' => '<br>'.__('API access for', 'wc_makecommerce_domain').' '.$this->ext, 'description' => sprintf(__('You can automatically create shipments into Omniva system and print the out the package labels right here, at the shop orders view. <br> Please set your Omniva web servises account credentials below here. <br>(see more on <a href="https://makecommerce.net/en/integration-modules/makecommerce-woocommerce-payment-plugin/#carriers-integration">MakeCommerce plugin page</a>. Don\'t forget to enable also <a href="%s">MC API keys</a>!)', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=api&section=mk_api')));
1587 + $this->form_fields['api_access'] = array( 'type' => 'title', 'title' => '<hr><br>'.__('API access for', 'wc_makecommerce_domain').' '.$this->ext, 'description' => sprintf(__('You can automatically create shipments into Omniva system and print the out the package labels right here, at the shop orders view. <br> Please set your Omniva web servises account credentials below here. <br>(see more on <a href="https://makecommerce.net/en/integration-modules/makecommerce-woocommerce-payment-plugin/#carriers-integration">MakeCommerce plugin page</a>. Don\'t forget to enable also <a href="%s">MC API keys</a>!)', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=api&section=mk_api')));
1493 1588 $this->form_fields['service_user'] = array(
1494 1589 'title' => __('Omniva web services username', 'wc_makecommerce_domain'),
1495 1590 'type' => 'text',
1496 1591 'default' => ''
@@ -1515,8 +1610,13 @@
1515 1610 'type' => 'text',
1516 1611 'title' => __('Shop email', 'wc_makecommerce_domain'),
1517 1612 'class' => 'input-text regular-input',
1518 1613 );
1614 + $this->form_fields['shop_address_city'] = array(
1615 + 'type' => 'text',
1616 + 'title' => __('Shop address city', 'wc_makecommerce_domain'),
1617 + 'class' => 'input-text regular-input',
1618 + );
1519 1619 $this->form_fields['shop_postal_code'] = array(
1520 1620 'type' => 'text',
1521 1621 'title' => __('Shop postal code', 'wc_makecommerce_domain'),
1522 1622 'class' => 'input-text regular-input',
@@ -1521,8 +1621,11 @@
1521 1621 'title' => __('Shop postal code', 'wc_makecommerce_domain'),
1522 1622 'class' => 'input-text regular-input',
1523 1623 'description' => __('Put here zip-code of the Parcel Terminal you use for returns, see: <a href="https://www.omniva.ee/era/kaart/asukohad">List of Omniva Terminals</a>', 'wc_makecommerce_domain')
1524 1624 );
1625 + $this->form_fields['shipping_ui_javascript'] = array(
1626 + 'type' => 'shipping_ui_javascript',
1627 + );
1525 1628 }
1526 1629
1527 1630 }
1528 1631 class WC_ParcelMachine_Shipping_Method_Smartpost extends WC_ParcelMachine_Shipping_Method {
@@ -1543,23 +1646,37 @@
1543 1646 'label' => __('enabled', 'wc_makecommerce_domain'),
1544 1647 'default' => 'no',
1545 1648 'description' => __('You can always exclude a product from being available for the Parcel Machine delivery by clicking "Does not fit parcel machine" in the product\'s shipping options', 'wc_makecommerce_domain'),
1546 1649 );
1650 + $this->form_fields['countries'] = array(
1651 + 'title' => __('Specific Countries', 'wc_makecommerce_domain'),
1652 + 'type' => 'multiselect',
1653 + 'class' => 'wp-enhanced-select',
1654 + 'css' => 'width: 450px;',
1655 + 'default' => array('EE','FI'),
1656 + 'options' => array('EE' => __('Estonia - EE'), 'FI' => __('Finland - FI')),
1657 + );
1547 1658 $this->form_fields['price_ee'] = array(
1548 - 'title' => __('Price EE', 'wc_makecommerce_domain'),
1659 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' EE',
1549 1660 'type' => 'text',
1550 1661 'default' => '2.99'
1551 1662 );
1663 + $this->form_fields['free_shipping_min_amount_ee'] = array(
1664 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain').' EE',
1665 + 'type' => 'number',
1666 + 'default' => '0',
1667 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1668 + );
1552 1669 $this->form_fields['price_fi'] = array(
1553 - 'title' => __('Price FI', 'wc_makecommerce_domain'),
1670 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' FI',
1554 1671 'type' => 'text',
1555 1672 'default' => '10.99'
1556 1673 );
1557 - $this->form_fields['free_shipping_min_amount'] = array(
1558 - 'title' => __('Minimum amount for free shipping', 'wc_makecommerce_domain'),
1674 + $this->form_fields['free_shipping_min_amount_fi'] = array(
1675 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain'). ' FI',
1559 1676 'type' => 'number',
1560 1677 'default' => '0',
1561 - 'description' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1678 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1562 1679 );
1563 1680 $this->form_fields['maximum_weight'] = array(
1564 1681 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'),
1565 1682 'type' => 'text',
@@ -1564,17 +1681,10 @@
1564 1681 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'),
1565 1682 'type' => 'text',
1566 1683 'default' => '15'
1567 1684 );
1568 - $this->form_fields['countries'] = array(
1569 - 'title' => __('Specific Countries', 'wc_makecommerce_domain'),
1570 - 'type' => 'multiselect',
1571 - 'class' => 'wp-enhanced-select',
1572 - 'css' => 'width: 450px;',
1573 - 'default' => array('EE','FI'),
1574 - 'options' => array('EE' => __('Estonia'), 'FI' => __('Finland')),
1575 - );
1576 - $this->form_fields['look_and_feel'] = array( 'type' => 'title', 'title' => __('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on checkout page', 'wc_makecommerce_domain'));
1685 +
1686 + $this->form_fields['look_and_feel'] = array( 'type' => 'title', 'title' => '<br>'.__('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on checkout page', 'wc_makecommerce_domain'));
1577 1687 $languages = apply_filters('wpml_active_languages', NULL, 'skip_missing=0');
1578 1688 if (empty($languages)) {
1579 1689 $this->form_fields['method_name'] = array(
1580 1690 'title' => __('Shipping Method Title', 'wc_makecommerce_domain'),
@@ -1629,8 +1739,11 @@
1629 1739 'type' => 'text',
1630 1740 'title' => __('Shop email', 'wc_makecommerce_domain'),
1631 1741 'class' => 'input-text regular-input',
1632 1742 );
1743 + $this->form_fields['shipping_ui_javascript'] = array(
1744 + 'type' => 'shipping_ui_javascript',
1745 + );
1633 1746 }
1634 1747
1635 1748 }
1636 1749 }
@@ -1731,12 +1844,16 @@
1731 1844 'type' => 'text',
1732 1845 'title' => __('Publishable key (test)', 'wc_makecommerce_domain'),
1733 1846 'class' => 'input-text regular-input',
1734 1847 ),
1848 + array(
1849 + 'id' => 'mk_javascript_ui',
1850 + 'type' => 'api_javascript_ui',
1851 + ),
1735 1852 array('type' => 'sectionend', 'id' => 'mk_api_settings')
1736 1853 );
1737 1854 }
1738 -
1855 +
1739 1856 function mk_admin_save_settings() {
1740 1857 // reload banklinks
1741 1858 global $current_section;
1742 1859 if ($current_section !== 'mk_api') {
@@ -1745,25 +1862,52 @@
1745 1862 $wcmc = New woocommerce_makecommerce(true);
1746 1863 $wcmc->mc_banklinks_reload(true);
1747 1864 }
1748 1865
1749 - function __get_logo_html() {
1750 - return '<div class="makecommerce-info">'.
1751 - '<div class="makecommerce-logo">'.
1752 - '<a target="_blank" href="http://maksekeskus.ee"><img src="'. plugins_url('/images/makecommerce_logo_en.svg', __FILE__) .'" class="makecommerce-logo"></a>'.
1753 - '</div>'.
1754 - '<div class="makecommerce-links">'.
1755 - '<div class="makecommerce-link"><a target="_blank" href="https://merchant.maksekeskus.ee">Merchant Portal</a></div>'.
1756 - '<div class="makecommerce-link"><a target="_blank" href="https://makecommerce.net/">makecommerce.net</a></div>'.
1757 - '<div class="makecommerce-link"><a target="_blank" href="http://maksekeskus.ee">maksekeskus.ee</a></div>'.
1758 - '</div>'.
1759 - '</div>';
1760 - }
1866 + function __get_logo_html() {
1867 + return '<div class="makecommerce-info">'.
1868 + '<div class="makecommerce-logo">'.
1869 + '<a target="_blank" href="http://maksekeskus.ee"><img src="'. plugins_url('/images/makecommerce_logo_en.svg', __FILE__) .'" class="makecommerce-logo"></a>'.
1870 + '</div>'.
1871 + '<div class="makecommerce-links">'.
1872 + '<div class="makecommerce-link"><a target="_blank" href="https://merchant.maksekeskus.ee">Merchant Portal</a></div>'.
1873 + '<div class="makecommerce-link"><a target="_blank" href="https://makecommerce.net/">makecommerce.net</a></div>'.
1874 + '<div class="makecommerce-link"><a target="_blank" href="http://maksekeskus.ee">maksekeskus.ee</a></div>'.
1875 + '</div>'.
1876 + '</div>';
1877 + }
1761 1878
1762 1879 add_action('woocommerce_get_sections_api', 'mk_admin_add_settings');
1763 1880 add_filter('woocommerce_get_settings_api', 'mk_admin_all_settings', 10, 2);
1764 1881 add_action('woocommerce_settings_saved', 'mk_admin_save_settings', 30, 0);
1882 + add_action('woocommerce_admin_field_api_javascript_ui', 'api_javascript_ui');
1883 + function api_javascript_ui( $data ) {
1884 + ?>
1885 + <script type="text/javascript">
1886 + jQuery(document).ready(function($) {
1887 + var env_select = $('#mk_api_type');
1888 + var test_fields = ['mk_test_shop_id', 'mk_test_private_key', 'mk_test_public_key'];
1889 + var live_fields = ['mk_shop_id', 'mk_private_key', 'mk_public_key'];
1765 1890
1891 + env_select.on('change', function(){
1892 + hideFileds($(this).val());
1893 + });
1894 + hideFileds(env_select.val());
1895 + function hideFileds(type) {
1896 + var hide = type == 'live' ? test_fields : live_fields;
1897 + var show = type == 'live' ? live_fields : test_fields;
1898 + $.each(hide, function(i, elem) {
1899 + $('#'+elem).closest('tr').hide();
1900 + });
1901 + $.each(show, function(i, elem) {
1902 + $('#'+elem).closest('tr').show();
1903 + });
1904 + }
1905 + });
1906 + </script>
1907 + <?php
1908 + }
1909 +
1766 1910 function mk_admin_restrict_manage_posts() {
1767 1911 global $typenow;
1768 1912 if ( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ) ) ) {
1769 1913 $selected_method = !empty($_REQUEST['_shipping_method']) ? $_REQUEST['_shipping_method'] : false;
@@ -1795,10 +1939,9 @@
1795 1939 add_filter('posts_where', 'mk_admin_shipping_filter', 10, 2);
1796 1940
1797 1941 function mk_admin_bulk_actions() {
1798 1942 global $post_type;
1799 - if ('shop_order' === $post_type) {
1800 -?>
1943 + if ('shop_order' === $post_type) { ?>
1801 1944 <script type="text/javascript">
1802 1945 jQuery(function() {
1803 1946 jQuery('<option>').val('parcel_machine_labels').text('<?php _e( 'Register parcel machine shipments', 'wc_makecommerce_domain' )?>').appendTo('select[name="action"]');
1804 1947 jQuery('<option>').val('parcel_machine_labels').text('<?php _e( 'Register parcel machine shipments', 'wc_makecommerce_domain' )?>').appendTo('select[name="action2"]');
@@ -1805,18 +1948,15 @@
1805 1948 jQuery('<option>').val('parcel_machine_print_labels').text('<?php _e( 'Print parcel machine labels', 'wc_makecommerce_domain' )?>').appendTo('select[name="action"]');
1806 1949 jQuery('<option>').val('parcel_machine_print_labels').text('<?php _e( 'Print parcel machine labels', 'wc_makecommerce_domain' )?>').appendTo('select[name="action2"]');
1807 1950 });
1808 1951 </script>
1809 -<?php
1810 - if (!empty($_REQUEST['mk_pdf'])) {
1811 -?>
1812 - <script type="text/javascript">
1813 - jQuery(function(){
1814 - window.open('<?php echo $_REQUEST['mk_pdf'] ?>', 'pdf');
1815 - });
1816 - </script>
1817 -<?php
1818 - }
1952 + <?php if (!empty($_REQUEST['mk_pdf'])) { ?>
1953 + <script type="text/javascript">
1954 + jQuery(function(){
1955 + window.open('<?php echo $_REQUEST['mk_pdf'] ?>', 'pdf');
1956 + });
1957 + </script>
1958 + <?php }
1819 1959 }
1820 1960 }
1821 1961 function mk_admin_bulk_action_labels() {
1822 1962 $wp_list_table = _get_list_table('WP_Posts_List_Table');
@@ -1901,13 +2041,23 @@
1901 2041 'label' => __('Does not fit parcel machine', 'wc_makecommerce_domain'),
1902 2042 'description' => __('When this is checked, parcel machine shipping option is not available for a cart with this product', 'wc_makecommerce_domain')
1903 2043 )
1904 2044 );
2045 + woocommerce_wp_checkbox(
2046 + array(
2047 + 'id' => '_no_shipping_cost',
2048 + 'wrapper_class' => 'show_if_simple',
2049 + 'label' => __('Free parcel machine', 'wc_makecommerce_domain'),
2050 + 'description' => __('When this is checked, parcel machine if free for this product', 'wc_makecommerce_domain')
2051 + )
2052 + );
1905 2053 echo '</div>';
1906 2054 }
1907 2055 function mk_admin_product_fields_save($post_id) {
1908 2056 $no_parcel_machine = isset($_POST['_no_parcel_machine']) ? 'yes' : 'no';
1909 2057 update_post_meta($post_id, '_no_parcel_machine', $no_parcel_machine);
2058 + $no_shipping_cost = isset($_POST['_no_shipping_cost']) ? 'yes' : 'no';
2059 + update_post_meta($post_id, '_no_shipping_cost', $no_shipping_cost);
1910 2060 }
1911 2061
1912 2062 add_action('woocommerce_product_options_shipping', 'mk_admin_product_option_fields');
1913 2063 add_action('woocommerce_process_product_meta', 'mk_admin_product_fields_save');
@@ -1989,9 +2139,9 @@
1989 2139 }
1990 2140 }
1991 2141 }
1992 2142
1993 - function mk_get_labels($post_ids) {
2143 + function mk_get_labels($post_ids, $ajax = false) {
1994 2144 if (!is_array($post_ids)) {
1995 2145 $post_ids = array($post_ids);
1996 2146 }
1997 2147 parcelmachine_add_method();
@@ -2055,8 +2205,11 @@
2055 2205 }
2056 2206 if (empty($response->labelUrl)) {
2057 2207 return;
2058 2208 }
2209 + if($ajax) {
2210 + return $response->labelUrl;
2211 + }
2059 2212 $sendback = add_query_arg(array('post_type' => 'shop_order', 'mk_pdf' => urlencode($response->labelUrl)), '');
2060 2213 wp_redirect(esc_url_raw($sendback));
2061 2214 exit();
2062 2215 }
@@ -2103,9 +2256,9 @@
2103 2256 }
2104 2257 foreach ($data as $machine) {
2105 2258 if ($machine->country === $country && $machine->type === 'APT' && ($provider === '*' || strtolower($provider) === strtolower($machine->provider))) {
2106 2259 $machines[] = array(
2107 - 'provider' => strtolower($machine->provider),
2260 + 'carrier' => strtolower($machine->provider),
2108 2261 'id' => $machine->id,
2109 2262 'name' => $machine->name,
2110 2263 'city' => $machine->city,
2111 2264 'address' => !empty($machine->address) ? $machine->address : '',
@@ -2123,9 +2276,9 @@
2123 2276
2124 2277 function mk_get_machine($provider, $id) {
2125 2278 $machines = mk_get_machines($provider);
2126 2279 foreach ($machines as $machine) {
2127 - if ($machine['provider'] === $provider && $machine['id'] === $id) {
2280 + if ($machine['carrier'] === $provider && $machine['id'] === $id) {
2128 2281 return $machine;
2129 2282 }
2130 2283 }
2131 2284 return false;
@@ -2132,5 +2285,61 @@
2132 2285 }
2133 2286 function mk_admin_error() {
2134 2287 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'));
2135 2288 }
2289 +
2290 + add_filter('query_vars', 'mk_cron_query_vars');
2291 + add_action('parse_request', 'mk_parse_cron_update_vars');
2292 + function mk_cron_query_vars($vars) {
2293 + $vars[] = 'mk-action';
2294 + $vars[] = 'mk-shop-id';
2295 + $vars[] = 'mk-test-shop-id';
2296 + return $vars;
2297 + }
2298 + function mk_parse_cron_update_vars($wp) {
2299 + if (array_key_exists('mk-action', $wp->query_vars) && $wp->query_vars['mk-action'] == 'mk-update'
2300 + && (array_key_exists('mk-shop-id', $wp->query_vars) || array_key_exists('mk-test-shop-id', $wp->query_vars) ) ) {
2301 + if( (strlen($wp->query_vars['mk-shop-id']) && $wp->query_vars['mk-shop-id'] == get_option('mk_shop_id', false) )
2302 + || (strlen($wp->query_vars['mk-test-shop-id']) && $wp->query_vars['mk-test-shop-id'] == get_option('mk_test_shop_id', false) ) ) {
2303 + $obj = new woocommerce_makecommerce();
2304 + $obj->mc_banklinks_reload(true);
2305 + exit();
2306 + }
2307 + }
2308 + }
2309 + function print_parcel_machine_label_action( $post_id ) {
2310 + ?>
2311 + <li class="wide">
2312 + <a id="print_parcel_machine_label" href="#" class="button"><?php _e('Print parcel label', 'wc_makecommerce_domain');?></a>
2313 + <img class="mc_loading" src="<?php echo site_url('/wp-admin/images/loading.gif');?>">
2314 + <script type="text/javascript">
2315 + jQuery(function($){
2316 + var data = {
2317 + 'action': 'print_pml',
2318 + 'id': '<?php echo $post_id; ?>'
2319 + };
2320 + var loading = $('.mc_loading');
2321 + $('#print_parcel_machine_label').click(function(e){
2322 + e.preventDefault();
2323 + var button = $(this);
2324 + button.addClass('disabled');
2325 + loading.show();
2326 + $.post(ajaxurl, data, function(response) {
2327 + button.removeClass('disabled');
2328 + loading.hide();
2329 + window.open(response, 'pdf');
2330 + });
2331 + });
2332 + });
2333 + </script>
2334 + </li>
2335 + <?php
2336 + }
2337 + add_action('woocommerce_order_actions_end', 'print_parcel_machine_label_action');
2338 + function ajax_print_pml() {
2339 + if(!current_user_can('manage_woocommerce') ) {
2340 + die();
2341 + }
2342 + die(mk_get_labels(intval($_POST['id']), true));
2343 + }
2344 + add_action( 'wp_ajax_print_pml', 'ajax_print_pml' );
2136 2345 }