WooCommerce Checkout Manager - Version 4.3.7

Version Description

  • Fix: woocommerce checkout address 2 field required/optional
  • Fix: woocommerce checkout address removed required alert
Download this release

Release Info

Developer quadlayers
Plugin Icon 128x128 WooCommerce Checkout Manager
Version 4.3.7
Comparing to
See all releases

Code changes from version 4.3.6 to 4.3.7

changelog.txt DELETED
@@ -1,25 +0,0 @@
1
- Fifteen ( 15 ) fields types included: Text Input, Text Area, Password, Radio Button, Check Box, Select Options, Date Picker, Time Picker, Color Picker, Heading, Multi-Select, Multi-Checkbox, Country, State, File Picker.
2
-
3
- Compatible with WPML, WooCommerce Print Invoice & Delivery Note, Store Exporter Deluxe, WooCommerce Order/Customer CSV Export.
4
-
5
- Sort Orders by Field Name.
6
- Export Orders by Field Name.
7
-
8
- Create fields to remove tax
9
- Create fields to add additional amount
10
- Display Payment Method and Shipping Method used by customer.
11
- Disable any added field from Checkout details page and Order Receipt.
12
-
13
- DatePicker: Change the default format (dd-mm-yy), Set Minimum Date and Maximum Date, Disable days in the week (Sun – Sat).
14
- TimePicker: Includes restriction of both start and end hours, set the minutes interval and manually input labels.
15
- Display Order Time.
16
-
17
- Re-position the added fields: Before Shipping Form, After Shipping Form, Before Billing Form, After Billing Form or After Order Notes
18
-
19
- = 4.4.0 Beta =
20
- * Improvement: woocommerce order upload rebuilt
21
- * Improvement: woocommerce checkout upload rebuilt
22
- * Improvement: woocommerce order admin upload rebuilt
23
- * Improvement: woocommerce register fields rebuilt
24
- * Improvement: woocommerce register fields rebuilt
25
- * Fix: woocommerce checkout additional fields required
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin.php CHANGED
@@ -432,6 +432,7 @@ function wooccm_options_page() {
432
 
433
  case 'country':
434
  $defaults2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
 
435
  break;
436
 
437
  case 'first_name':
@@ -455,6 +456,7 @@ function wooccm_options_page() {
455
  case 'address_2':
456
  $defaults2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
457
  $defaults2['shipping_buttons'][$ship]['placeholder'] = __('Apartment, suite, unit etc. (optional)', 'woocommerce-checkout-manager');
 
458
  break;
459
 
460
  case 'city':
@@ -464,6 +466,7 @@ function wooccm_options_page() {
464
 
465
  case 'state':
466
  $defaults2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
 
467
  break;
468
  }
469
 
@@ -498,6 +501,7 @@ function wooccm_options_page() {
498
 
499
  case 'country':
500
  $defaults3['billing_buttons'][$bill]['position'] = 'form-row-wide';
 
501
  break;
502
 
503
  case 'first_name':
@@ -521,6 +525,8 @@ function wooccm_options_page() {
521
  case 'address_2':
522
  $defaults3['billing_buttons'][$bill]['position'] = 'form-row-wide';
523
  $defaults3['billing_buttons'][$bill]['placeholder'] = __('Apartment, suite, unit etc. (optional)', 'woocommerce-checkout-manager');
 
 
524
  break;
525
 
526
  case 'city':
@@ -530,6 +536,8 @@ function wooccm_options_page() {
530
 
531
  case 'state':
532
  $defaults3['billing_buttons'][$bill]['position'] = 'form-row-wide';
 
 
533
  break;
534
 
535
  case 'postcode':
@@ -931,11 +939,11 @@ function wooccm_options_validate_billing($input) {
931
  return $input;
932
  }
933
 
934
- /*function wooccm_admin_notices() {
935
 
936
  // Check the User has the manage_options capability
937
  if (current_user_can('manage_options') == false)
938
- return;
939
 
940
  // @mod - Removed as it tends to blow people Options up...
941
  // Data update from legacy (<3.0)
@@ -944,20 +952,20 @@ function wooccm_options_validate_billing($input) {
944
  $screen = get_current_screen();
945
 
946
  if (get_option('wooccm_beta_notice') == false) {
947
- $beta_url = 'https://www.visser.com.au/plugins/woocommerce-checkout-manager/#beta';
948
- $support_url = 'https://wordpress.org/support/plugin/woocommerce-checkout-manager#postform';
949
- $dismiss_url = add_query_arg(array('action' => 'wooccm_dismiss_beta_notice', '_wpnonce' => wp_create_nonce('wooccm_dismiss_beta_notice')));
950
-
951
- $message = '<span style="float:right;"><a href="' . $dismiss_url . '" class="woocommerce-message-close notice-dismiss">' . __('Dismiss', 'woocommerce-checkout-manager') . '</a></span>';
952
- $message .= __('<strong>WooCommerce Checkout Manager Notice:</strong> We urgently need developers, integrators and interested store owners to test early Plugin releases and provide feedback to help stabilise the 4.0+ series. Can you help?', 'woocommerce-checkout-manager');
953
- $message .= '
954
- <p class="submit">
955
- <a href="' . $beta_url . '" target="_blank" class="button-primary button-hero">' . __('Join the Developers list', 'woocommerce-checkout-manager') . '</a>
956
- <a href="' . $support_url . '" target="_blank" class="button-secondary button-hero">' . __('Send feedback', 'woocommerce-checkout-manager') . '</a>
957
- </p>';
958
- echo wooccm_admin_notice_html($message);
959
  }
960
- }*/
961
 
962
  function wooccm_admin_updater_notice() {
963
 
@@ -1417,16 +1425,16 @@ function wooccm_admin_edit_order_shipping_details($order) {
1417
  }
1418
  }
1419
 
1420
- /*function wooccm_validate_upload_process_customer() {
1421
 
1422
  $options = get_option('wccs_settings');
1423
 
1424
  if (!empty($options['checkness']['enable_file_upload'])) {
1425
- return true;
1426
  } else {
1427
- return false;
1428
  }
1429
- }*/
1430
 
1431
  // Check if the customer can upload images
1432
  // @mod - This disables the Order Uploaded Files meta box even for Administrators...?
@@ -1435,17 +1443,17 @@ function wooccm_admin_edit_order_shipping_details($order) {
1435
  * if (wooccm_validate_upload_process_customer()) {
1436
  add_action('woocommerce_view_order', 'wooccm_file_uploader_front_end');
1437
  add_action('add_meta_boxes', 'wooccm_admin_edit_order_metaboxes');
1438
- }*/
1439
 
1440
- /*function wooccm_admin_edit_order_metaboxes() {
1441
 
1442
  global $post;
1443
 
1444
  $post_type = 'shop_order';
1445
  add_meta_box('woocommerce-order-files', __('Order Uploaded Files', 'woocommerce-checkout-manager'), 'wooccm_admin_edit_order_uploaded_files_meta_box', $post_type, 'normal', 'default');
1446
- }*/
1447
  /*
1448
- function wooccm_admin_edit_order_uploaded_files_meta_box($post) {
1449
 
1450
  global $wpdb, $thepostid, $theorder, $woocommerce, $post;
1451
 
@@ -1461,71 +1469,71 @@ function wooccm_admin_edit_order_uploaded_files_meta_box($post) {
1461
 
1462
  $post_type = 'attachment';
1463
  $args = array(
1464
- 'post_type' => $post_type,
1465
- 'numberposts' => -1,
1466
- 'post_status' => null,
1467
- 'post_parent' => $order_id
1468
  );
1469
  $posts = get_posts($args);
1470
  // wooccm_error_log( 'posts: ' . print_r( $posts, true ) );
1471
  // @mod - Legacy versions were not correctly saving Post Parent so let's do a search if no results were returned
1472
  if (empty($posts)) {
1473
 
1474
- $meta_keys = array();
1475
 
1476
- // Additional section
1477
- $options = get_option('wccs_settings');
1478
- $buttons = ( isset($options['buttons']) ? $options['buttons'] : false );
1479
- if (!empty($buttons)) {
1480
- foreach ($buttons as $btn) {
1481
- if ($btn['type'] == 'wooccmupload')
1482
- $meta_keys[] = $btn['cow'];
1483
- }
1484
- }
1485
- // Billing section
1486
- $options = get_option('wccs_settings3');
1487
- $buttons = ( isset($options['billing_buttons']) ? $options['billing_buttons'] : false );
1488
- if (!empty($buttons)) {
1489
- foreach ($buttons as $btn) {
1490
- if ($btn['type'] == 'wooccmupload')
1491
- $meta_keys[] = sprintf('_billing_%s', $btn['cow']);
1492
- }
1493
- }
1494
- // Shipping section
1495
- $options = get_option('wccs_settings2');
1496
- $buttons = ( isset($options['shipping_buttons']) ? $options['shipping_buttons'] : false );
1497
- if (!empty($buttons)) {
1498
- foreach ($buttons as $btn) {
1499
- if ($btn['type'] == 'wooccmupload')
1500
- $meta_keys[] = sprintf('_shipping_%s', $btn['cow']);
1501
- }
1502
- }
1503
 
1504
- if (!empty($meta_keys)) {
1505
- $values = array();
1506
- // Check the Order for these meta keys
1507
- foreach ($meta_keys as $meta_key) {
1508
- $value = get_post_meta($order_id, $meta_key, true);
1509
- if (!empty($value)) {
1510
- if (is_array($value))
1511
- $array[] = implode(',', $value);
1512
- else
1513
- $array[] = $value;
1514
- }
1515
- }
1516
- }
1517
  }
1518
  // Check if there are any attachments
1519
  if (!empty($posts) || !empty($array)) {
1520
- if (!empty($posts)) {
1521
- foreach ($posts as $attachment) {
1522
- $array[] = $attachment->ID;
1523
- }
1524
- }
1525
- $default_wccm_values = implode(',', $array);
1526
- $product_image_gallery = implode(',', $array);
1527
- // wooccm_error_log( 'default_wccm_values: ' . print_r( $default_wccm_values, true ) );
1528
- // wooccm_error_log( 'product_image_gallery: ' . print_r( $product_image_gallery, true ) );
1529
  }
1530
 
1531
  $attachments = array_filter(explode(',', $product_image_gallery));
@@ -1533,166 +1541,166 @@ function wooccm_admin_edit_order_uploaded_files_meta_box($post) {
1533
  ?>
1534
 
1535
  <script type="text/javascript">
1536
- jQuery(document).ready(function ($) {
1537
-
1538
- $('#wccm_save_order_submit').click(function () {
1539
- $(".wccm_results").html("<?php _e('Saving, please wait...', 'woocommerce-checkout-manager'); ?>");
1540
- var data = {
1541
- action: 'update_attachment_wccm',
1542
- post_id: '<?php echo $post->ID; ?>',
1543
- product_image_gallery: $('#product_image_gallery').val(),
1544
- wccm_default_keys_load: $('#wccm_default_keys_load').val()
1545
- };
1546
-
1547
- // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
1548
- $.post(ajaxurl, data, function (response) {
1549
- $(".wccm_results").html(response);
1550
- });
1551
- });
1552
-
1553
- });
1554
  </script>
1555
 
1556
  <?php wp_enqueue_style('wccm_upload_file_style', plugins_url('includes/templates/admin/edit-order-uploads-file_editing_table.css', WOOCCM_PLUGIN_FILE)); ?>
1557
 
1558
  <div class="woocommerce_order_items_wrapper">
1559
- <table class="woocommerce_order_items back_end">
1560
-
1561
- <thead>
1562
- <tr>
1563
- <th nowrap>
1564
- <attr title="<?php _e('Attachment ID', 'woocommerce-checkout-manager'); ?>"><?php _e('ID', 'woocommerce-checkout-manager'); ?></attr>
1565
- </th>
1566
- <th><?php _e('Image', 'woocommerce-checkout-manager'); ?></th>
1567
- <th><?php _e('Filename', 'woocommerce-checkout-manager'); ?></th>
1568
- <th><?php _e('Dimensions', 'woocommerce-checkout-manager'); ?></th>
1569
- <th><?php _e('Extension', ' woocommerce-checkout-manager'); ?></th>
1570
- <th class="column-actions"><?php _e('Actions', 'woocommerce-checkout-manager'); ?></th>
1571
- </tr>
1572
- </thead>
1573
-
1574
- <tbody class="product_images">
1575
- <?php
1576
- if (!empty($attachments)) {
1577
- foreach ($attachments as $attachment_id) {
1578
-
1579
- $image_attributes = wp_get_attachment_url($attachment_id);
1580
- $image_attributes2 = wp_get_attachment_image_src($attachment_id);
1581
- $filename = basename($image_attributes);
1582
- $wp_filetype = wp_check_filetype($filename);
1583
-
1584
- $value_declear = array_diff(explode(',', $default_wccm_values), explode(',', $attachment_id));
1585
-
1586
- echo '
1587
- <tr class="image wccm_filesli wccmv_' . esc_attr($attachment_id) . '">
1588
- <script type="text/javascript">
1589
- jQuery(document).ready(function(){
1590
- jQuery(".wccmx_' . esc_attr($attachment_id) . '").click(function(){
1591
-
1592
- jQuery(".wccmv_' . esc_attr($attachment_id) . '").hide();
1593
- jQuery("#product_image_gallery").val(jQuery("#product_image_gallery").val().replace("' . esc_attr($attachment_id) . '", ""));
1594
-
1595
- });
1596
- });
1597
- </script>
1598
- <td>' . $attachment_id . '</td>
1599
- <td>' . wp_get_attachment_link($attachment_id, '', false, false, wp_get_attachment_image($attachment_id, array(75, 75), false)) . '</td>
1600
- <td>' . wp_get_attachment_link($attachment_id, '', false, false, preg_replace('/\.[^.]+$/', '', $filename)) . '</td>
1601
- <td>';
1602
- if ($image_attributes2[1] == '') {
1603
- echo '-';
1604
- } else {
1605
- echo $image_attributes2[1] . ' x ' . $image_attributes2[2];
1606
- }
1607
- echo '</td>
1608
- <td>' . strtoupper($wp_filetype['ext']) . '</td>
1609
- <td class="column-actions" nowrap>
1610
- <a href="' . $image_attributes2[0] . '" target="_blank" class="button">' . __('Download', 'woocommerce-checkout-manager') . '</a>
1611
- <a class="delete tips wccm_delete wccmx_' . esc_attr($attachment_id) . ' button" data-tip="' . __('Delete', 'woocommerce-checkout-manager') . '">' . __('Delete', 'woocommerce-checkout-manager') . '</a>
1612
- </td>
1613
- </tr>
1614
- ';
1615
- }
1616
- } else {
1617
- echo '
1618
- <tr>
1619
- <td colspan="6" style="text-align:left;">' . __('No files have been uploaded to this Order.', 'woocommerce-checkout-manager') . '</td>
1620
- </tr>';
1621
- }
1622
- ?>
1623
- </tbody>
1624
- </table>
1625
- <input type="hidden" class="wccm_add_to_list" id="product_image_gallery" name="product_image_gallery" value="<?php echo esc_attr($product_image_gallery); ?>" />
1626
- <input type="hidden" id="wccm_default_keys_load" name="wccm_default_keys_load" value="<?php echo esc_attr($default_wccm_values); ?>" />
1627
- <!-- .woocommerce_order_items -->
1628
-
1629
- <p class="add_product_images hide-if-no-js">
1630
- <form method="POST" action="">
1631
- <span class="btn button-primary wccm_add_order_link fileinput-button">
1632
- <span><?php _e('Add Order Files', 'woocommerce-checkout-manager'); ?></span>
1633
- <input type="file" name="files_wccm" id="files_wccm" multiple />
1634
- <button type="button" id="files_button_wccm"><?php _e('Upload Files!', 'woocommerce-checkout-manager'); ?></button>
1635
- </span>
1636
- </form>
1637
  </p>
1638
 
1639
  <!-- Edit Order: File upload -->
1640
  <script type="text/javascript">
1641
- jQuery(document).ready(function ($) {
1642
- (
1643
- function post_image_content() {
1644
 
1645
- var input = document.getElementById("files_wccm"), formdata = false;
1646
 
1647
- if (window.FormData) {
1648
- formdata = new FormData();
1649
- document.getElementById("files_button_wccm").style.display = "none";
1650
- }
1651
 
1652
- input.addEventListener("change", function (evt) {
1653
-
1654
- $(".wccm_results").html("Uploading, please wait....");
1655
-
1656
- var i = 0, len = this.files.length, img, reader, file;
1657
-
1658
- for (; i < len; i++) {
1659
- file = this.files[i];
1660
- if (formdata) {
1661
- formdata.append("files_wccm[]", file);
1662
- }
1663
- }
1664
-
1665
- if (formdata) {
1666
- $.ajax({
1667
- url: "<?php echo admin_url('/admin-ajax.php?action=wccs_upload_file_func&order_id=' . $order_id . '&name=files_wccm'); ?>",
1668
- type: "POST",
1669
- data: formdata,
1670
- processData: false,
1671
- contentType: false,
1672
- success: function (res) {
1673
- $('#files_wccm').show();
1674
- $(".wccm_results").html("Files uploaded successfully.");
1675
-
1676
-
1677
- $.ajax({
1678
- url: '<?php echo admin_url('/post.php?post=' . $post->ID . '&action=edit'); ?>',
1679
- data: {},
1680
- success: function (data) {
1681
- $("div#product_images_container").html($(data).find("div#product_images_container"));
1682
- $(".wccm_results").html("Files uploaded successfully.");
1683
-
1684
- },
1685
- dataType: 'html'
1686
- });
1687
- }
1688
- });
1689
- }
1690
- }, false);
1691
- }
1692
 
1693
- ());
1694
 
1695
- });
1696
  </script>
1697
 
1698
  <input type="button" id="wccm_save_order_submit" class="button button-primary" value="<?php _e('Save Changes', 'woocommerce-checkout-manager'); ?>">
@@ -1702,12 +1710,12 @@ function wooccm_admin_edit_order_uploaded_files_meta_box($post) {
1702
  </div>
1703
  <!-- .woocommerce_order_items_wrapper -->
1704
  <?php
1705
- }*/
1706
 
1707
- /*
1708
  * 1326
1709
  * front end for user
1710
- function wooccm_file_uploader_front_end($order_id) {
1711
 
1712
  global $wpdb, $thepostid, $theorder, $woocommerce, $post;
1713
 
@@ -1723,240 +1731,240 @@ function wooccm_file_uploader_front_end($order_id) {
1723
 
1724
  if (empty($options['checkness']['upload_os']) || ( $order->post_status == $prefix . $options['checkness']['upload_os'] )) {
1725
 
1726
- $post_type = 'attachment';
1727
- $upload_dir = wp_upload_dir();
1728
- $args = array(
1729
- 'post_type' => $post_type,
1730
- 'numberposts' => -1,
1731
- 'post_status' => null,
1732
- 'post_parent' => $order_id
1733
- );
1734
- $default_wccm_values = false;
1735
- $product_image_gallery = false;
1736
- $posts = get_posts($args);
1737
- // wooccm_error_log( 'posts: ' . print_r( $posts, true ) );
1738
- if (!empty($posts)) {
1739
- foreach ($posts as $attachment)
1740
- $array[] = $attachment->ID;
1741
- $default_wccm_values = implode(',', $array);
1742
- $product_image_gallery = implode(',', $array);
1743
- }
1744
- // wooccm_error_log( 'default_wccm_values: ' . print_r( $default_wccm_values, true ) );
1745
- // wooccm_error_log( 'product_image_gallery: ' . print_r( $product_image_gallery, true ) );
1746
- if (!empty($product_image_gallery))
1747
- $attachments = array_filter(explode(',', $product_image_gallery));
1748
- // wooccm_error_log( 'attachments: ' . print_r( $attachments, true ) );
1749
- ?>
1750
 
1751
- <script type="text/javascript">
1752
- jQuery(document).ready(function ($) {
1753
-
1754
- $('#wccm_save_order_submit').click(function () {
1755
- $(".wccm_results").html("Deleting files, please wait....");
1756
- var ajaxurl = '<?php echo admin_url('/admin-ajax.php'); ?>';
1757
- data = {
1758
- action: 'update_attachment_wccm',
1759
- product_image_gallery: $('#product_image_gallery').val(),
1760
- wccm_default_keys_load: $('#wccm_default_keys_load').val()
1761
- };
1762
-
1763
- // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
1764
- $.post(ajaxurl, data, function (response) {
1765
- $(".wccm_results").html(response);
1766
- });
1767
- });
 
 
 
1768
 
1769
- });
1770
- </script>
1771
 
1772
- <?php wp_enqueue_style('wccm_upload_file_style', plugins_url('includes/templates/admin/edit-order-uploads-file_editing_table.css', WOOCCM_PLUGIN_FILE)); ?>
1773
-
1774
- <h2><?php echo ( empty($options['checkness']['upload_title']) ? 'Order Uploaded Files' : esc_attr($options['checkness']['upload_title']) ); ?></h2>
1775
- <div class="woocommerce_order_items_wrapper front_end">
1776
- <table class="shop_table woocommerce_order_items front_end">
1777
-
1778
- <thead>
1779
- <tr>
1780
- <th style="width:15%;text-align: center;"><?php _e('Attachment ID', 'woocommerce-checkout-manager'); ?></th>
1781
- <th style="width:12%"><?php _e('Image', 'woocommerce-checkout-manager'); ?></th>
1782
- <th style="width:30%;text-align: center;"><?php _e('Name', 'woocommerce-checkout-manager'); ?></th>
1783
- <th style="width:12%"><?php _e('Dimensions', 'woocommerce-checkout-manager'); ?></th>
1784
- <th style="width:8%"><?php _e('Extension', 'woocommerce-checkout-manager'); ?></th>
1785
- <th style="width:10%" class="column-actions"><?php _e('Actions', 'woocommerce-checkout-manager'); ?></th>
1786
- </tr>
1787
- </thead>
1788
-
1789
- <tbody class="product_images front_end">
1790
- <?php
1791
- if (!empty($attachments)) {
1792
- foreach ($attachments as $attachment_id) {
1793
 
1794
- $image_attributes = wp_get_attachment_url($attachment_id);
1795
- $image_attributes2 = wp_get_attachment_image_src($attachment_id);
1796
- $filename = basename($image_attributes);
1797
- $wp_filetype = wp_check_filetype($filename);
1798
 
1799
- $value_declear = array_diff(explode(',', $default_wccm_values), explode(',', $attachment_id));
1800
 
1801
- echo '
1802
- <tr class="image wccm_filesli wccmv_' . esc_attr($attachment_id) . '">
1803
 
1804
- <td style="display:none;">
1805
- <script type="text/javascript">
1806
 
1807
- jQuery(document).ready(function(){
1808
 
1809
- jQuery(".wccmx_' . esc_attr($attachment_id) . '").click(function(){
1810
- jQuery(".wccmv_' . esc_attr($attachment_id) . '").hide();
1811
- jQuery("#product_image_gallery").val(jQuery("#product_image_gallery").val().replace("' . esc_attr($attachment_id) . '", ""));
1812
 
1813
- });
1814
- });
1815
 
1816
- </script>
1817
- </td>
1818
- <td>' . $attachment_id . '</td>
1819
- <td>' . wp_get_attachment_link($attachment_id, '', false, false, wp_get_attachment_image($attachment_id, array(75, 75), true)) . '</td>
1820
- <td>' . wp_get_attachment_link($attachment_id, '', false, false, preg_replace('/\.[^.]+$/', '', $filename)) . '</td>
1821
- <td>';
1822
- if ($image_attributes2[1] == '') {
1823
- echo '-';
1824
- } else {
1825
- echo $image_attributes2[1] . ' x ' . $image_attributes2[2];
1826
- }
1827
- echo '
1828
- </td>
1829
- <td>' . strtoupper($wp_filetype['ext']) . '</td>
1830
- <td class="column-actions" nowrap>
1831
- <a class="delete tips wccm_delete wccmx_' . esc_attr($attachment_id) . ' button" data-tip="' . __('Delete', 'woocommerce-checkout-manager') . '">' . __('Delete', 'woocommerce-checkout-manager') . '</a>
1832
- </td>
1833
- </tr>';
1834
- }
1835
- } else {
1836
- echo '
1837
- <tr>
1838
- <td colspan="7">' . __('No uploaded files have been assigned to this Order.', 'woocommerce-checkout-manager') . '</td>
1839
- </tr>
1840
- ';
1841
- }
1842
- ?>
1843
- </tbody>
1844
- </table>
1845
- <input type="hidden" class="wccm_add_to_list" id="product_image_gallery" name="product_image_gallery" value="<?php echo (!empty($product_image_gallery) ? esc_attr($product_image_gallery) : '' ); ?>" />
1846
- <input type="hidden" id="wccm_default_keys_load" name="wccm_default_keys_load" value="<?php echo (!empty($default_wccm_values) ? esc_attr($default_wccm_values) : '' ); ?>" />
1847
- <!-- .woocommerce_order_items -->
1848
- </div>
1849
- <!-- .woocommerce_order_items_wrapper -->
1850
 
1851
- <button type="button" id="wccm_save_order_submit" class="file_upload_delete wooccm-btn wooccm-btn-danger delete"><?php _e('Confirm Delete', 'woocommerce-checkout-manager'); ?></button>
1852
 
1853
- <span id="wccm_uploader_select">
1854
- <input type="file" style="display:none;" name="files_wccm" id="files_wccm" multiple />
1855
- <button type="button" class="file_upload_account wooccm-btn wooccm-btn-primary start" id="files_button_wccm"><?php _e('Upload Files', 'woocommerce-checkout-manager'); ?></button>
1856
- </span>
1857
- <!-- #wccm_uploader_select -->
1858
 
1859
- <div class="wccm_results front_end"></div>
1860
 
1861
- <div class="clear"></div>
1862
- <?php
1863
- // script for uploading the files
1864
- echo '
1865
- <!-- Edit Order: File upload -->
1866
- <script type="text/javascript">
1867
- jQuery(document).ready(function($){
1868
 
1869
- (function post_image_content() {
1870
 
1871
- var input = document.getElementById("files_wccm"), formdata = false;
1872
 
1873
- $("#files_button_wccm").click( function(){
1874
- $("#wccm_uploader_select input[type=file]").click();
1875
- return false;
1876
- });
1877
 
1878
- if (window.FormData) {
1879
- formdata = new FormData();
1880
- }
1881
 
1882
- input.addEventListener("change", function (evt) {
1883
- $("#wccm_uploader_select").block({
1884
- message: null,
1885
- overlayCSS: {
1886
- background: "#fff",
1887
- opacity: 0.6
1888
- }
1889
- });
1890
 
1891
- $("#wccm_uploader_select").block({
1892
- message: null,
1893
- overlayCSS: {
1894
- background: "#fff",
1895
- opacity: 0.6
1896
- }
1897
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1898
 
1899
- var length = ' . $length . ';
1900
- var file_array = ' . wooccm_js_array($file_types) . ';
1901
- var wooempt = "' . implode(',', $file_types) . '";
1902
-
1903
- for ( i = 0; i < length; i++ ) {
1904
- file = this.files[i];
1905
- for(x=0; x < ' . $number_of_types . '; x++){
1906
- if( !wooempt || file.type.match(file_array[x]) ) {
1907
- if (formdata) {
1908
- formdata.append("files_wccm[]",file);
1909
- }
1910
- }
1911
- }
1912
- }
1913
-
1914
- if (formdata) {
1915
- $.ajax({
1916
- url: "' . admin_url('/admin-ajax.php?action=wccs_upload_file_func&order_id=' . $order_id . '&name=files_wccm') . '",
1917
- type: "POST",
1918
- data: formdata,
1919
- processData: false,
1920
- contentType: false,
1921
- success: function (res) {
1922
- $("#files_wccm").show();
1923
-
1924
- $.ajax({
1925
- url: "' . $order->get_view_order_url() . '",
1926
- data: {},
1927
- success: function (data) {
1928
- $("div.woocommerce_order_items_wrapper.front_end").html($(data).find("div.woocommerce_order_items_wrapper.front_end"));
1929
- jQuery("#wccm_uploader_select").unblock();
1930
- },
1931
- dataType: "html"
1932
- });
1933
-
1934
- }
1935
- });
1936
- }
1937
- }, false);
1938
- }
1939
- ());
1940
- });
1941
- </script>';
1942
- // end script
1943
- // ------------
1944
  }
1945
- }
1946
- */
1947
- /*function wccs_upload_file_func_callback($order_id) {
 
 
 
 
 
 
 
 
 
 
1948
 
1949
  $name = ( isset($_REQUEST['name']) ? $_REQUEST['name'] : false );
1950
  $order_id = ( isset($_REQUEST['order_id']) ? absint($_REQUEST['order_id']) : false );
1951
 
1952
  if (empty($name)) {
1953
- echo ' ' . __('Upload failed. Files were not uploaded.', 'woocommerce-checkout-manager') . '';
1954
- die();
1955
  }
1956
 
1957
  if (empty($order_id)) {
1958
- echo ' ' . __('Invalid Order. Files were not uploaded.', 'woocommerce-checkout-manager') . '';
1959
- die();
1960
  }
1961
 
1962
  global $wpdb, $woocommerce, $post; // this is how you get access to the database
@@ -1976,94 +1984,94 @@ jQuery(document).ready(function($){
1976
  // $upload_overrides = array( 'test_form' => false );
1977
 
1978
  if (!empty($files['name'])) {
1979
- foreach ($files['name'] as $key => $value) {
1980
- if ($files['name'][$key]) {
1981
-
1982
- $file = array(
1983
- 'name' => $files['name'][$key],
1984
- 'type' => $files['type'][$key],
1985
- 'tmp_name' => $files['tmp_name'][$key],
1986
- 'error' => $files['error'][$key],
1987
- 'size' => $files['size'][$key]
1988
- );
1989
 
1990
- if (!empty($options['checkness']['cat_file_upload'])) {
1991
- add_filter('upload_dir', function( $param ) use ( $order_id ) {
1992
- $param['path'] = sprintf('%s/wooccm_uploads/%d', $param['basedir'], $order_id);
1993
- $param['url'] = sprintf('%s/wooccm_uploads/%d', $param['baseurl'], $order_id);
1994
- return $param;
1995
- }, 10, 1);
1996
- }
1997
 
1998
- // $movefile = wp_handle_upload($file, $upload_overrides);
1999
- $movefile = wp_handle_upload($file);
2000
 
2001
- // Check if the save process failed
2002
- if (isset($movefile['error'])) {
2003
- echo 'Could not save uploaded file. Files were not uploaded.';
2004
- die();
2005
- }
2006
 
2007
- $attachment = array(
2008
- 'guid' => $movefile['url'],
2009
- 'post_mime_type' => $movefile['type'],
2010
- 'post_title' => preg_replace('/\.[^.]+$/', '', basename($movefile['file'])),
2011
- 'post_content' => '',
2012
- 'post_status' => 'inherit',
2013
- 'post_parent' => $order_id
2014
- );
2015
 
2016
- $attach_id = wp_insert_attachment($attachment, $movefile['url'], $order_id);
2017
 
2018
- // you must first include the image.php file
2019
- // for the function wp_generate_attachment_metadata() to work
2020
 
2021
- require_once( ABSPATH . 'wp-admin/includes/image.php' );
2022
- $attach_data = wp_generate_attachment_metadata($attach_id, $movefile['url']);
2023
- wp_update_attachment_metadata($attach_id, $attach_data);
2024
 
2025
- $has_uploads = true;
2026
- }
2027
- }
2028
- if ($has_uploads) {
2029
 
2030
- // send email
2031
- $email_recipients = $options['checkness']['wooccm_notification_email'];
2032
- if (empty($email_recipients))
2033
- $email_recipients = get_option('admin_email');
2034
- $email_heading = __('Files Uploaded by Customer', 'woocommerce-checkout-manager');
2035
- $subject = sprintf(__('WooCommerce Checkout Manager - %s [%s]', 'woocommerce-checkout-manager'), $email_heading, $order->billing_first_name . ' ' . $order->billing_last_name);
2036
 
2037
- $mailer = WC()->mailer();
2038
 
2039
- // Buffer
2040
- ob_start();
2041
- ?>
2042
- <p>This is an automatic message from WooCommerce Checkout Manager, reporting that files have been uploaded by <?php echo $order->billing_first_name; ?> <?php echo $order->billing_last_name; ?>.</p>
2043
- <h3>Customer Details</h3>
2044
- <ul>
2045
- <li>Name: <?php echo $order->billing_first_name; ?> <?php $order->billing_last_name; ?></li>
2046
- <li>E-mail: <?php echo $order->billing_email; ?></li>
2047
- <li>Order Number: <?php echo $order_id; ?></li>
2048
- </ul>
2049
- <p>You can view the files and order details via back-end by following this <a href="<?php echo admin_url('/post.php?post=' . $order_id . '&action=edit'); ?>" target="_blank">link</a>.</p>
2050
- <?php
2051
- // Get contents
2052
- $message = ob_get_clean();
2053
 
2054
- $message = $mailer->wrap_message($email_heading, $message);
2055
 
2056
- // add_filter( 'wp_mail_content_type', 'wooccm_set_html_content_type' );
2057
- // wc_mail( $email_recipients, $subject, $message );
2058
- $mailer->send($email_recipients, strip_tags($subject), $message);
2059
- // remove_filter( 'wp_mail_content_type', 'wooccm_set_html_content_type' );
2060
- }
2061
- echo ' ' . __('Files were uploaded successfully.', 'woocommerce-checkout-manager') . '';
2062
  } else {
2063
- echo ' ' . __('No uploads were recognised. Files were not uploaded.', 'woocommerce-checkout-manager') . '';
2064
  }
2065
  die();
2066
- }*/
2067
 
2068
  //1326
2069
  //add_action("wp_ajax_wccs_upload_file_func", "wccs_upload_file_func_callback");
@@ -2073,7 +2081,7 @@ jQuery(document).ready(function($){
2073
  * function wooccm_set_html_content_type() {
2074
 
2075
  return 'text/html';
2076
- }*/
2077
 
2078
  function wooccm_js_str($s) {
2079
 
432
 
433
  case 'country':
434
  $defaults2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
435
+ $defaults2['shipping_buttons'][$ship]['type'] = 'wooccmcountry';
436
  break;
437
 
438
  case 'first_name':
456
  case 'address_2':
457
  $defaults2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
458
  $defaults2['shipping_buttons'][$ship]['placeholder'] = __('Apartment, suite, unit etc. (optional)', 'woocommerce-checkout-manager');
459
+ $defaults2['shipping_buttons'][$ship]['required'] = false;
460
  break;
461
 
462
  case 'city':
466
 
467
  case 'state':
468
  $defaults2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
469
+ $defaults2['shipping_buttons'][$ship]['type'] = 'wooccmstate';
470
  break;
471
  }
472
 
501
 
502
  case 'country':
503
  $defaults3['billing_buttons'][$bill]['position'] = 'form-row-wide';
504
+ $defaults3['billing_buttons'][$bill]['type'] = 'wooccmcountry';
505
  break;
506
 
507
  case 'first_name':
525
  case 'address_2':
526
  $defaults3['billing_buttons'][$bill]['position'] = 'form-row-wide';
527
  $defaults3['billing_buttons'][$bill]['placeholder'] = __('Apartment, suite, unit etc. (optional)', 'woocommerce-checkout-manager');
528
+ $defaults3['billing_buttons'][$bill]['checkbox'] = false;
529
+
530
  break;
531
 
532
  case 'city':
536
 
537
  case 'state':
538
  $defaults3['billing_buttons'][$bill]['position'] = 'form-row-wide';
539
+ $defaults3['billing_buttons'][$bill]['type'] = 'wooccmstate';
540
+
541
  break;
542
 
543
  case 'postcode':
939
  return $input;
940
  }
941
 
942
+ /* function wooccm_admin_notices() {
943
 
944
  // Check the User has the manage_options capability
945
  if (current_user_can('manage_options') == false)
946
+ return;
947
 
948
  // @mod - Removed as it tends to blow people Options up...
949
  // Data update from legacy (<3.0)
952
  $screen = get_current_screen();
953
 
954
  if (get_option('wooccm_beta_notice') == false) {
955
+ $beta_url = 'https://www.visser.com.au/plugins/woocommerce-checkout-manager/#beta';
956
+ $support_url = 'https://wordpress.org/support/plugin/woocommerce-checkout-manager#postform';
957
+ $dismiss_url = add_query_arg(array('action' => 'wooccm_dismiss_beta_notice', '_wpnonce' => wp_create_nonce('wooccm_dismiss_beta_notice')));
958
+
959
+ $message = '<span style="float:right;"><a href="' . $dismiss_url . '" class="woocommerce-message-close notice-dismiss">' . __('Dismiss', 'woocommerce-checkout-manager') . '</a></span>';
960
+ $message .= __('<strong>WooCommerce Checkout Manager Notice:</strong> We urgently need developers, integrators and interested store owners to test early Plugin releases and provide feedback to help stabilise the 4.0+ series. Can you help?', 'woocommerce-checkout-manager');
961
+ $message .= '
962
+ <p class="submit">
963
+ <a href="' . $beta_url . '" target="_blank" class="button-primary button-hero">' . __('Join the Developers list', 'woocommerce-checkout-manager') . '</a>
964
+ <a href="' . $support_url . '" target="_blank" class="button-secondary button-hero">' . __('Send feedback', 'woocommerce-checkout-manager') . '</a>
965
+ </p>';
966
+ echo wooccm_admin_notice_html($message);
967
  }
968
+ } */
969
 
970
  function wooccm_admin_updater_notice() {
971
 
1425
  }
1426
  }
1427
 
1428
+ /* function wooccm_validate_upload_process_customer() {
1429
 
1430
  $options = get_option('wccs_settings');
1431
 
1432
  if (!empty($options['checkness']['enable_file_upload'])) {
1433
+ return true;
1434
  } else {
1435
+ return false;
1436
  }
1437
+ } */
1438
 
1439
  // Check if the customer can upload images
1440
  // @mod - This disables the Order Uploaded Files meta box even for Administrators...?
1443
  * if (wooccm_validate_upload_process_customer()) {
1444
  add_action('woocommerce_view_order', 'wooccm_file_uploader_front_end');
1445
  add_action('add_meta_boxes', 'wooccm_admin_edit_order_metaboxes');
1446
+ } */
1447
 
1448
+ /* function wooccm_admin_edit_order_metaboxes() {
1449
 
1450
  global $post;
1451
 
1452
  $post_type = 'shop_order';
1453
  add_meta_box('woocommerce-order-files', __('Order Uploaded Files', 'woocommerce-checkout-manager'), 'wooccm_admin_edit_order_uploaded_files_meta_box', $post_type, 'normal', 'default');
1454
+ } */
1455
  /*
1456
+ function wooccm_admin_edit_order_uploaded_files_meta_box($post) {
1457
 
1458
  global $wpdb, $thepostid, $theorder, $woocommerce, $post;
1459
 
1469
 
1470
  $post_type = 'attachment';
1471
  $args = array(
1472
+ 'post_type' => $post_type,
1473
+ 'numberposts' => -1,
1474
+ 'post_status' => null,
1475
+ 'post_parent' => $order_id
1476
  );
1477
  $posts = get_posts($args);
1478
  // wooccm_error_log( 'posts: ' . print_r( $posts, true ) );
1479
  // @mod - Legacy versions were not correctly saving Post Parent so let's do a search if no results were returned
1480
  if (empty($posts)) {
1481
 
1482
+ $meta_keys = array();
1483
 
1484
+ // Additional section
1485
+ $options = get_option('wccs_settings');
1486
+ $buttons = ( isset($options['buttons']) ? $options['buttons'] : false );
1487
+ if (!empty($buttons)) {
1488
+ foreach ($buttons as $btn) {
1489
+ if ($btn['type'] == 'wooccmupload')
1490
+ $meta_keys[] = $btn['cow'];
1491
+ }
1492
+ }
1493
+ // Billing section
1494
+ $options = get_option('wccs_settings3');
1495
+ $buttons = ( isset($options['billing_buttons']) ? $options['billing_buttons'] : false );
1496
+ if (!empty($buttons)) {
1497
+ foreach ($buttons as $btn) {
1498
+ if ($btn['type'] == 'wooccmupload')
1499
+ $meta_keys[] = sprintf('_billing_%s', $btn['cow']);
1500
+ }
1501
+ }
1502
+ // Shipping section
1503
+ $options = get_option('wccs_settings2');
1504
+ $buttons = ( isset($options['shipping_buttons']) ? $options['shipping_buttons'] : false );
1505
+ if (!empty($buttons)) {
1506
+ foreach ($buttons as $btn) {
1507
+ if ($btn['type'] == 'wooccmupload')
1508
+ $meta_keys[] = sprintf('_shipping_%s', $btn['cow']);
1509
+ }
1510
+ }
1511
 
1512
+ if (!empty($meta_keys)) {
1513
+ $values = array();
1514
+ // Check the Order for these meta keys
1515
+ foreach ($meta_keys as $meta_key) {
1516
+ $value = get_post_meta($order_id, $meta_key, true);
1517
+ if (!empty($value)) {
1518
+ if (is_array($value))
1519
+ $array[] = implode(',', $value);
1520
+ else
1521
+ $array[] = $value;
1522
+ }
1523
+ }
1524
+ }
1525
  }
1526
  // Check if there are any attachments
1527
  if (!empty($posts) || !empty($array)) {
1528
+ if (!empty($posts)) {
1529
+ foreach ($posts as $attachment) {
1530
+ $array[] = $attachment->ID;
1531
+ }
1532
+ }
1533
+ $default_wccm_values = implode(',', $array);
1534
+ $product_image_gallery = implode(',', $array);
1535
+ // wooccm_error_log( 'default_wccm_values: ' . print_r( $default_wccm_values, true ) );
1536
+ // wooccm_error_log( 'product_image_gallery: ' . print_r( $product_image_gallery, true ) );
1537
  }
1538
 
1539
  $attachments = array_filter(explode(',', $product_image_gallery));
1541
  ?>
1542
 
1543
  <script type="text/javascript">
1544
+ jQuery(document).ready(function ($) {
1545
+
1546
+ $('#wccm_save_order_submit').click(function () {
1547
+ $(".wccm_results").html("<?php _e('Saving, please wait...', 'woocommerce-checkout-manager'); ?>");
1548
+ var data = {
1549
+ action: 'update_attachment_wccm',
1550
+ post_id: '<?php echo $post->ID; ?>',
1551
+ product_image_gallery: $('#product_image_gallery').val(),
1552
+ wccm_default_keys_load: $('#wccm_default_keys_load').val()
1553
+ };
1554
+
1555
+ // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
1556
+ $.post(ajaxurl, data, function (response) {
1557
+ $(".wccm_results").html(response);
1558
+ });
1559
+ });
1560
+
1561
+ });
1562
  </script>
1563
 
1564
  <?php wp_enqueue_style('wccm_upload_file_style', plugins_url('includes/templates/admin/edit-order-uploads-file_editing_table.css', WOOCCM_PLUGIN_FILE)); ?>
1565
 
1566
  <div class="woocommerce_order_items_wrapper">
1567
+ <table class="woocommerce_order_items back_end">
1568
+
1569
+ <thead>
1570
+ <tr>
1571
+ <th nowrap>
1572
+ <attr title="<?php _e('Attachment ID', 'woocommerce-checkout-manager'); ?>"><?php _e('ID', 'woocommerce-checkout-manager'); ?></attr>
1573
+ </th>
1574
+ <th><?php _e('Image', 'woocommerce-checkout-manager'); ?></th>
1575
+ <th><?php _e('Filename', 'woocommerce-checkout-manager'); ?></th>
1576
+ <th><?php _e('Dimensions', 'woocommerce-checkout-manager'); ?></th>
1577
+ <th><?php _e('Extension', ' woocommerce-checkout-manager'); ?></th>
1578
+ <th class="column-actions"><?php _e('Actions', 'woocommerce-checkout-manager'); ?></th>
1579
+ </tr>
1580
+ </thead>
1581
+
1582
+ <tbody class="product_images">
1583
+ <?php
1584
+ if (!empty($attachments)) {
1585
+ foreach ($attachments as $attachment_id) {
1586
+
1587
+ $image_attributes = wp_get_attachment_url($attachment_id);
1588
+ $image_attributes2 = wp_get_attachment_image_src($attachment_id);
1589
+ $filename = basename($image_attributes);
1590
+ $wp_filetype = wp_check_filetype($filename);
1591
+
1592
+ $value_declear = array_diff(explode(',', $default_wccm_values), explode(',', $attachment_id));
1593
+
1594
+ echo '
1595
+ <tr class="image wccm_filesli wccmv_' . esc_attr($attachment_id) . '">
1596
+ <script type="text/javascript">
1597
+ jQuery(document).ready(function(){
1598
+ jQuery(".wccmx_' . esc_attr($attachment_id) . '").click(function(){
1599
+
1600
+ jQuery(".wccmv_' . esc_attr($attachment_id) . '").hide();
1601
+ jQuery("#product_image_gallery").val(jQuery("#product_image_gallery").val().replace("' . esc_attr($attachment_id) . '", ""));
1602
+
1603
+ });
1604
+ });
1605
+ </script>
1606
+ <td>' . $attachment_id . '</td>
1607
+ <td>' . wp_get_attachment_link($attachment_id, '', false, false, wp_get_attachment_image($attachment_id, array(75, 75), false)) . '</td>
1608
+ <td>' . wp_get_attachment_link($attachment_id, '', false, false, preg_replace('/\.[^.]+$/', '', $filename)) . '</td>
1609
+ <td>';
1610
+ if ($image_attributes2[1] == '') {
1611
+ echo '-';
1612
+ } else {
1613
+ echo $image_attributes2[1] . ' x ' . $image_attributes2[2];
1614
+ }
1615
+ echo '</td>
1616
+ <td>' . strtoupper($wp_filetype['ext']) . '</td>
1617
+ <td class="column-actions" nowrap>
1618
+ <a href="' . $image_attributes2[0] . '" target="_blank" class="button">' . __('Download', 'woocommerce-checkout-manager') . '</a>
1619
+ <a class="delete tips wccm_delete wccmx_' . esc_attr($attachment_id) . ' button" data-tip="' . __('Delete', 'woocommerce-checkout-manager') . '">' . __('Delete', 'woocommerce-checkout-manager') . '</a>
1620
+ </td>
1621
+ </tr>
1622
+ ';
1623
+ }
1624
+ } else {
1625
+ echo '
1626
+ <tr>
1627
+ <td colspan="6" style="text-align:left;">' . __('No files have been uploaded to this Order.', 'woocommerce-checkout-manager') . '</td>
1628
+ </tr>';
1629
+ }
1630
+ ?>
1631
+ </tbody>
1632
+ </table>
1633
+ <input type="hidden" class="wccm_add_to_list" id="product_image_gallery" name="product_image_gallery" value="<?php echo esc_attr($product_image_gallery); ?>" />
1634
+ <input type="hidden" id="wccm_default_keys_load" name="wccm_default_keys_load" value="<?php echo esc_attr($default_wccm_values); ?>" />
1635
+ <!-- .woocommerce_order_items -->
1636
+
1637
+ <p class="add_product_images hide-if-no-js">
1638
+ <form method="POST" action="">
1639
+ <span class="btn button-primary wccm_add_order_link fileinput-button">
1640
+ <span><?php _e('Add Order Files', 'woocommerce-checkout-manager'); ?></span>
1641
+ <input type="file" name="files_wccm" id="files_wccm" multiple />
1642
+ <button type="button" id="files_button_wccm"><?php _e('Upload Files!', 'woocommerce-checkout-manager'); ?></button>
1643
+ </span>
1644
+ </form>
1645
  </p>
1646
 
1647
  <!-- Edit Order: File upload -->
1648
  <script type="text/javascript">
1649
+ jQuery(document).ready(function ($) {
1650
+ (
1651
+ function post_image_content() {
1652
 
1653
+ var input = document.getElementById("files_wccm"), formdata = false;
1654
 
1655
+ if (window.FormData) {
1656
+ formdata = new FormData();
1657
+ document.getElementById("files_button_wccm").style.display = "none";
1658
+ }
1659
 
1660
+ input.addEventListener("change", function (evt) {
1661
+
1662
+ $(".wccm_results").html("Uploading, please wait....");
1663
+
1664
+ var i = 0, len = this.files.length, img, reader, file;
1665
+
1666
+ for (; i < len; i++) {
1667
+ file = this.files[i];
1668
+ if (formdata) {
1669
+ formdata.append("files_wccm[]", file);
1670
+ }
1671
+ }
1672
+
1673
+ if (formdata) {
1674
+ $.ajax({
1675
+ url: "<?php echo admin_url('/admin-ajax.php?action=wccs_upload_file_func&order_id=' . $order_id . '&name=files_wccm'); ?>",
1676
+ type: "POST",
1677
+ data: formdata,
1678
+ processData: false,
1679
+ contentType: false,
1680
+ success: function (res) {
1681
+ $('#files_wccm').show();
1682
+ $(".wccm_results").html("Files uploaded successfully.");
1683
+
1684
+
1685
+ $.ajax({
1686
+ url: '<?php echo admin_url('/post.php?post=' . $post->ID . '&action=edit'); ?>',
1687
+ data: {},
1688
+ success: function (data) {
1689
+ $("div#product_images_container").html($(data).find("div#product_images_container"));
1690
+ $(".wccm_results").html("Files uploaded successfully.");
1691
+
1692
+ },
1693
+ dataType: 'html'
1694
+ });
1695
+ }
1696
+ });
1697
+ }
1698
+ }, false);
1699
+ }
1700
 
1701
+ ());
1702
 
1703
+ });
1704
  </script>
1705
 
1706
  <input type="button" id="wccm_save_order_submit" class="button button-primary" value="<?php _e('Save Changes', 'woocommerce-checkout-manager'); ?>">
1710
  </div>
1711
  <!-- .woocommerce_order_items_wrapper -->
1712
  <?php
1713
+ } */
1714
 
1715
+ /*
1716
  * 1326
1717
  * front end for user
1718
+ function wooccm_file_uploader_front_end($order_id) {
1719
 
1720
  global $wpdb, $thepostid, $theorder, $woocommerce, $post;
1721
 
1731
 
1732
  if (empty($options['checkness']['upload_os']) || ( $order->post_status == $prefix . $options['checkness']['upload_os'] )) {
1733
 
1734
+ $post_type = 'attachment';
1735
+ $upload_dir = wp_upload_dir();
1736
+ $args = array(
1737
+ 'post_type' => $post_type,
1738
+ 'numberposts' => -1,
1739
+ 'post_status' => null,
1740
+ 'post_parent' => $order_id
1741
+ );
1742
+ $default_wccm_values = false;
1743
+ $product_image_gallery = false;
1744
+ $posts = get_posts($args);
1745
+ // wooccm_error_log( 'posts: ' . print_r( $posts, true ) );
1746
+ if (!empty($posts)) {
1747
+ foreach ($posts as $attachment)
1748
+ $array[] = $attachment->ID;
1749
+ $default_wccm_values = implode(',', $array);
1750
+ $product_image_gallery = implode(',', $array);
1751
+ }
1752
+ // wooccm_error_log( 'default_wccm_values: ' . print_r( $default_wccm_values, true ) );
1753
+ // wooccm_error_log( 'product_image_gallery: ' . print_r( $product_image_gallery, true ) );
1754
+ if (!empty($product_image_gallery))
1755
+ $attachments = array_filter(explode(',', $product_image_gallery));
1756
+ // wooccm_error_log( 'attachments: ' . print_r( $attachments, true ) );
1757
+ ?>
1758
 
1759
+ <script type="text/javascript">
1760
+ jQuery(document).ready(function ($) {
1761
+
1762
+ $('#wccm_save_order_submit').click(function () {
1763
+ $(".wccm_results").html("Deleting files, please wait....");
1764
+ var ajaxurl = '<?php echo admin_url('/admin-ajax.php'); ?>';
1765
+ data = {
1766
+ action: 'update_attachment_wccm',
1767
+ product_image_gallery: $('#product_image_gallery').val(),
1768
+ wccm_default_keys_load: $('#wccm_default_keys_load').val()
1769
+ };
1770
+
1771
+ // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
1772
+ $.post(ajaxurl, data, function (response) {
1773
+ $(".wccm_results").html(response);
1774
+ });
1775
+ });
1776
+
1777
+ });
1778
+ </script>
1779
 
1780
+ <?php wp_enqueue_style('wccm_upload_file_style', plugins_url('includes/templates/admin/edit-order-uploads-file_editing_table.css', WOOCCM_PLUGIN_FILE)); ?>
 
1781
 
1782
+ <h2><?php echo ( empty($options['checkness']['upload_title']) ? 'Order Uploaded Files' : esc_attr($options['checkness']['upload_title']) ); ?></h2>
1783
+ <div class="woocommerce_order_items_wrapper front_end">
1784
+ <table class="shop_table woocommerce_order_items front_end">
1785
+
1786
+ <thead>
1787
+ <tr>
1788
+ <th style="width:15%;text-align: center;"><?php _e('Attachment ID', 'woocommerce-checkout-manager'); ?></th>
1789
+ <th style="width:12%"><?php _e('Image', 'woocommerce-checkout-manager'); ?></th>
1790
+ <th style="width:30%;text-align: center;"><?php _e('Name', 'woocommerce-checkout-manager'); ?></th>
1791
+ <th style="width:12%"><?php _e('Dimensions', 'woocommerce-checkout-manager'); ?></th>
1792
+ <th style="width:8%"><?php _e('Extension', 'woocommerce-checkout-manager'); ?></th>
1793
+ <th style="width:10%" class="column-actions"><?php _e('Actions', 'woocommerce-checkout-manager'); ?></th>
1794
+ </tr>
1795
+ </thead>
1796
+
1797
+ <tbody class="product_images front_end">
1798
+ <?php
1799
+ if (!empty($attachments)) {
1800
+ foreach ($attachments as $attachment_id) {
 
 
1801
 
1802
+ $image_attributes = wp_get_attachment_url($attachment_id);
1803
+ $image_attributes2 = wp_get_attachment_image_src($attachment_id);
1804
+ $filename = basename($image_attributes);
1805
+ $wp_filetype = wp_check_filetype($filename);
1806
 
1807
+ $value_declear = array_diff(explode(',', $default_wccm_values), explode(',', $attachment_id));
1808
 
1809
+ echo '
1810
+ <tr class="image wccm_filesli wccmv_' . esc_attr($attachment_id) . '">
1811
 
1812
+ <td style="display:none;">
1813
+ <script type="text/javascript">
1814
 
1815
+ jQuery(document).ready(function(){
1816
 
1817
+ jQuery(".wccmx_' . esc_attr($attachment_id) . '").click(function(){
1818
+ jQuery(".wccmv_' . esc_attr($attachment_id) . '").hide();
1819
+ jQuery("#product_image_gallery").val(jQuery("#product_image_gallery").val().replace("' . esc_attr($attachment_id) . '", ""));
1820
 
1821
+ });
1822
+ });
1823
 
1824
+ </script>
1825
+ </td>
1826
+ <td>' . $attachment_id . '</td>
1827
+ <td>' . wp_get_attachment_link($attachment_id, '', false, false, wp_get_attachment_image($attachment_id, array(75, 75), true)) . '</td>
1828
+ <td>' . wp_get_attachment_link($attachment_id, '', false, false, preg_replace('/\.[^.]+$/', '', $filename)) . '</td>
1829
+ <td>';
1830
+ if ($image_attributes2[1] == '') {
1831
+ echo '-';
1832
+ } else {
1833
+ echo $image_attributes2[1] . ' x ' . $image_attributes2[2];
1834
+ }
1835
+ echo '
1836
+ </td>
1837
+ <td>' . strtoupper($wp_filetype['ext']) . '</td>
1838
+ <td class="column-actions" nowrap>
1839
+ <a class="delete tips wccm_delete wccmx_' . esc_attr($attachment_id) . ' button" data-tip="' . __('Delete', 'woocommerce-checkout-manager') . '">' . __('Delete', 'woocommerce-checkout-manager') . '</a>
1840
+ </td>
1841
+ </tr>';
1842
+ }
1843
+ } else {
1844
+ echo '
1845
+ <tr>
1846
+ <td colspan="7">' . __('No uploaded files have been assigned to this Order.', 'woocommerce-checkout-manager') . '</td>
1847
+ </tr>
1848
+ ';
1849
+ }
1850
+ ?>
1851
+ </tbody>
1852
+ </table>
1853
+ <input type="hidden" class="wccm_add_to_list" id="product_image_gallery" name="product_image_gallery" value="<?php echo (!empty($product_image_gallery) ? esc_attr($product_image_gallery) : '' ); ?>" />
1854
+ <input type="hidden" id="wccm_default_keys_load" name="wccm_default_keys_load" value="<?php echo (!empty($default_wccm_values) ? esc_attr($default_wccm_values) : '' ); ?>" />
1855
+ <!-- .woocommerce_order_items -->
1856
+ </div>
1857
+ <!-- .woocommerce_order_items_wrapper -->
1858
 
1859
+ <button type="button" id="wccm_save_order_submit" class="file_upload_delete wooccm-btn wooccm-btn-danger delete"><?php _e('Confirm Delete', 'woocommerce-checkout-manager'); ?></button>
1860
 
1861
+ <span id="wccm_uploader_select">
1862
+ <input type="file" style="display:none;" name="files_wccm" id="files_wccm" multiple />
1863
+ <button type="button" class="file_upload_account wooccm-btn wooccm-btn-primary start" id="files_button_wccm"><?php _e('Upload Files', 'woocommerce-checkout-manager'); ?></button>
1864
+ </span>
1865
+ <!-- #wccm_uploader_select -->
1866
 
1867
+ <div class="wccm_results front_end"></div>
1868
 
1869
+ <div class="clear"></div>
1870
+ <?php
1871
+ // script for uploading the files
1872
+ echo '
1873
+ <!-- Edit Order: File upload -->
1874
+ <script type="text/javascript">
1875
+ jQuery(document).ready(function($){
1876
 
1877
+ (function post_image_content() {
1878
 
1879
+ var input = document.getElementById("files_wccm"), formdata = false;
1880
 
1881
+ $("#files_button_wccm").click( function(){
1882
+ $("#wccm_uploader_select input[type=file]").click();
1883
+ return false;
1884
+ });
1885
 
1886
+ if (window.FormData) {
1887
+ formdata = new FormData();
1888
+ }
1889
 
1890
+ input.addEventListener("change", function (evt) {
1891
+ $("#wccm_uploader_select").block({
1892
+ message: null,
1893
+ overlayCSS: {
1894
+ background: "#fff",
1895
+ opacity: 0.6
1896
+ }
1897
+ });
1898
 
1899
+ $("#wccm_uploader_select").block({
1900
+ message: null,
1901
+ overlayCSS: {
1902
+ background: "#fff",
1903
+ opacity: 0.6
1904
+ }
1905
+ });
1906
+
1907
+ var length = ' . $length . ';
1908
+ var file_array = ' . wooccm_js_array($file_types) . ';
1909
+ var wooempt = "' . implode(',', $file_types) . '";
1910
+
1911
+ for ( i = 0; i < length; i++ ) {
1912
+ file = this.files[i];
1913
+ for(x=0; x < ' . $number_of_types . '; x++){
1914
+ if( !wooempt || file.type.match(file_array[x]) ) {
1915
+ if (formdata) {
1916
+ formdata.append("files_wccm[]",file);
1917
+ }
1918
+ }
1919
+ }
1920
+ }
1921
+
1922
+ if (formdata) {
1923
+ $.ajax({
1924
+ url: "' . admin_url('/admin-ajax.php?action=wccs_upload_file_func&order_id=' . $order_id . '&name=files_wccm') . '",
1925
+ type: "POST",
1926
+ data: formdata,
1927
+ processData: false,
1928
+ contentType: false,
1929
+ success: function (res) {
1930
+ $("#files_wccm").show();
1931
+
1932
+ $.ajax({
1933
+ url: "' . $order->get_view_order_url() . '",
1934
+ data: {},
1935
+ success: function (data) {
1936
+ $("div.woocommerce_order_items_wrapper.front_end").html($(data).find("div.woocommerce_order_items_wrapper.front_end"));
1937
+ jQuery("#wccm_uploader_select").unblock();
1938
+ },
1939
+ dataType: "html"
1940
+ });
1941
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1942
  }
1943
+ });
1944
+ }
1945
+ }, false);
1946
+ }
1947
+ ());
1948
+ });
1949
+ </script>';
1950
+ // end script
1951
+ // ------------
1952
+ }
1953
+ }
1954
+ */
1955
+ /* function wccs_upload_file_func_callback($order_id) {
1956
 
1957
  $name = ( isset($_REQUEST['name']) ? $_REQUEST['name'] : false );
1958
  $order_id = ( isset($_REQUEST['order_id']) ? absint($_REQUEST['order_id']) : false );
1959
 
1960
  if (empty($name)) {
1961
+ echo ' ' . __('Upload failed. Files were not uploaded.', 'woocommerce-checkout-manager') . '';
1962
+ die();
1963
  }
1964
 
1965
  if (empty($order_id)) {
1966
+ echo ' ' . __('Invalid Order. Files were not uploaded.', 'woocommerce-checkout-manager') . '';
1967
+ die();
1968
  }
1969
 
1970
  global $wpdb, $woocommerce, $post; // this is how you get access to the database
1984
  // $upload_overrides = array( 'test_form' => false );
1985
 
1986
  if (!empty($files['name'])) {
1987
+ foreach ($files['name'] as $key => $value) {
1988
+ if ($files['name'][$key]) {
1989
+
1990
+ $file = array(
1991
+ 'name' => $files['name'][$key],
1992
+ 'type' => $files['type'][$key],
1993
+ 'tmp_name' => $files['tmp_name'][$key],
1994
+ 'error' => $files['error'][$key],
1995
+ 'size' => $files['size'][$key]
1996
+ );
1997
 
1998
+ if (!empty($options['checkness']['cat_file_upload'])) {
1999
+ add_filter('upload_dir', function( $param ) use ( $order_id ) {
2000
+ $param['path'] = sprintf('%s/wooccm_uploads/%d', $param['basedir'], $order_id);
2001
+ $param['url'] = sprintf('%s/wooccm_uploads/%d', $param['baseurl'], $order_id);
2002
+ return $param;
2003
+ }, 10, 1);
2004
+ }
2005
 
2006
+ // $movefile = wp_handle_upload($file, $upload_overrides);
2007
+ $movefile = wp_handle_upload($file);
2008
 
2009
+ // Check if the save process failed
2010
+ if (isset($movefile['error'])) {
2011
+ echo 'Could not save uploaded file. Files were not uploaded.';
2012
+ die();
2013
+ }
2014
 
2015
+ $attachment = array(
2016
+ 'guid' => $movefile['url'],
2017
+ 'post_mime_type' => $movefile['type'],
2018
+ 'post_title' => preg_replace('/\.[^.]+$/', '', basename($movefile['file'])),
2019
+ 'post_content' => '',
2020
+ 'post_status' => 'inherit',
2021
+ 'post_parent' => $order_id
2022
+ );
2023
 
2024
+ $attach_id = wp_insert_attachment($attachment, $movefile['url'], $order_id);
2025
 
2026
+ // you must first include the image.php file
2027
+ // for the function wp_generate_attachment_metadata() to work
2028
 
2029
+ require_once( ABSPATH . 'wp-admin/includes/image.php' );
2030
+ $attach_data = wp_generate_attachment_metadata($attach_id, $movefile['url']);
2031
+ wp_update_attachment_metadata($attach_id, $attach_data);
2032
 
2033
+ $has_uploads = true;
2034
+ }
2035
+ }
2036
+ if ($has_uploads) {
2037
 
2038
+ // send email
2039
+ $email_recipients = $options['checkness']['wooccm_notification_email'];
2040
+ if (empty($email_recipients))
2041
+ $email_recipients = get_option('admin_email');
2042
+ $email_heading = __('Files Uploaded by Customer', 'woocommerce-checkout-manager');
2043
+ $subject = sprintf(__('WooCommerce Checkout Manager - %s [%s]', 'woocommerce-checkout-manager'), $email_heading, $order->billing_first_name . ' ' . $order->billing_last_name);
2044
 
2045
+ $mailer = WC()->mailer();
2046
 
2047
+ // Buffer
2048
+ ob_start();
2049
+ ?>
2050
+ <p>This is an automatic message from WooCommerce Checkout Manager, reporting that files have been uploaded by <?php echo $order->billing_first_name; ?> <?php echo $order->billing_last_name; ?>.</p>
2051
+ <h3>Customer Details</h3>
2052
+ <ul>
2053
+ <li>Name: <?php echo $order->billing_first_name; ?> <?php $order->billing_last_name; ?></li>
2054
+ <li>E-mail: <?php echo $order->billing_email; ?></li>
2055
+ <li>Order Number: <?php echo $order_id; ?></li>
2056
+ </ul>
2057
+ <p>You can view the files and order details via back-end by following this <a href="<?php echo admin_url('/post.php?post=' . $order_id . '&action=edit'); ?>" target="_blank">link</a>.</p>
2058
+ <?php
2059
+ // Get contents
2060
+ $message = ob_get_clean();
2061
 
2062
+ $message = $mailer->wrap_message($email_heading, $message);
2063
 
2064
+ // add_filter( 'wp_mail_content_type', 'wooccm_set_html_content_type' );
2065
+ // wc_mail( $email_recipients, $subject, $message );
2066
+ $mailer->send($email_recipients, strip_tags($subject), $message);
2067
+ // remove_filter( 'wp_mail_content_type', 'wooccm_set_html_content_type' );
2068
+ }
2069
+ echo ' ' . __('Files were uploaded successfully.', 'woocommerce-checkout-manager') . '';
2070
  } else {
2071
+ echo ' ' . __('No uploads were recognised. Files were not uploaded.', 'woocommerce-checkout-manager') . '';
2072
  }
2073
  die();
2074
+ } */
2075
 
2076
  //1326
2077
  //add_action("wp_ajax_wccs_upload_file_func", "wccs_upload_file_func_callback");
2081
  * function wooccm_set_html_content_type() {
2082
 
2083
  return 'text/html';
2084
+ } */
2085
 
2086
  function wooccm_js_str($s) {
2087
 
includes/install.php CHANGED
@@ -1,250 +1,251 @@
1
  <?php
 
2
  // Plugin activation script
3
  function wooccm_install() {
4
 
5
- $options = get_option( 'wccs_settings' );
6
- $options2 = get_option( 'wccs_settings2' );
7
- $options3 = get_option( 'wccs_settings3' );
8
-
9
- update_option( WOOCCM_PREFIX . '_update_notice', 0 );
10
-
11
- if( function_exists( 'icl_register_string' ) )
12
- icl_register_string( 'WooCommerce Checkout Manager', 'is a required field.', 'is a required field.' );
13
-
14
- if( empty( $options['checkness']['position'] ) ) {
15
- $options['checkness']['position'] = 'after_order_notes';
16
- }
17
- if( empty( $options['checkness']['wooccm_notification_email'] ) ) {
18
- $options['checkness']['wooccm_notification_email'] = get_option( 'admin_email' );
19
- }
20
- if( empty( $options['checkness']['payment_method_d'] ) ) {
21
- $options['checkness']['payment_method_d'] = 'Payment Method';
22
- }
23
- if( empty( $options['checkness']['time_stamp_title'] ) ) {
24
- $options['checkness']['time_stamp_title'] = 'Order Time';
25
- }
26
- if( empty( $options['checkness']['payment_method_t'] ) ) {
27
- $options['checkness']['payment_method_t'] = '1';
28
- }
29
- if( empty( $options['checkness']['shipping_method_d'] ) ) {
30
- $options['checkness']['shipping_method_d'] = 'Shipping Method';
31
- }
32
- if( empty( $options['checkness']['shipping_method_t'] ) ) {
33
- $options['checkness']['shipping_method_t'] = '1';
34
- }
35
- if( empty( $options2['shipping_buttons'] ) ) {
36
- $shipping = array(
37
- 'country' => 'Country',
38
- 'first_name' => 'First Name',
39
- 'last_name' => 'Last Name',
40
- 'company' => 'Company Name',
41
- 'address_1' => 'Address',
42
- 'address_2' => '',
43
- 'city' => 'Town/ City',
44
- 'state' => 'State',
45
- 'postcode' => 'Zip'
46
- );
47
- $ship = 0;
48
- foreach( $shipping as $name => $value ) {
49
-
50
- $options2['shipping_buttons'][$ship]['label'] = ( !empty( $value ) ? __( $value, 'woocommerce-checkout-manager' ) : false );
51
- $options2['shipping_buttons'][$ship]['cow'] = $name;
52
- $options2['shipping_buttons'][$ship]['checkbox'] = 'true';
53
- $options2['shipping_buttons'][$ship]['order'] = $ship + 1;
54
- $options2['shipping_buttons'][$ship]['type'] = 'wooccmtext';
55
-
56
- if ( $name == 'country') {
57
- $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
58
- }
59
-
60
- if ( $name == 'first_name') {
61
- $options2['shipping_buttons'][$ship]['position'] = 'form-row-first';
62
- }
63
-
64
- if ( $name == 'last_name') {
65
- $options2['shipping_buttons'][$ship]['position'] = 'form-row-last';
66
- $options2['shipping_buttons'][$ship]['clear_row'] = true;
67
- }
68
-
69
- if ( $name == 'company') {
70
- $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
71
- }
72
-
73
- if ( $name == 'address_1') {
74
- $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
75
- $options2['shipping_buttons'][$ship]['placeholder'] = __( 'Street address', 'woocommerce-checkout-manager' );
76
- }
77
-
78
- if ( $name == 'address_2') {
79
- $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
80
- $options2['shipping_buttons'][$ship]['placeholder'] = __( 'Apartment, suite, unit etc. (optional)', 'woocommerce-checkout-manager' );
81
- }
82
-
83
- if ( $name == 'city') {
84
- $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
85
- $options2['shipping_buttons'][$ship]['placeholder'] = __( 'Town / City', 'woocommerce-checkout-manager' );
86
- }
87
-
88
- if ( $name == 'state') {
89
- $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
90
- }
91
-
92
- if ( $name == 'postcode') {
93
- $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
94
- $options2['shipping_buttons'][$ship]['placeholder'] = __( 'Postcode / Zip', 'woocommerce-checkout-manager' );
95
- $options2['shipping_buttons'][$ship]['clear_row'] = true;
96
- }
97
-
98
- $ship++;
99
- }
100
- }
101
-
102
- if( empty( $options3['billing_buttons'] ) ) {
103
- $billing = array(
104
- 'country' => 'Country',
105
- 'first_name' => 'First Name',
106
- 'last_name' => 'Last Name',
107
- 'company' => 'Company Name',
108
- 'address_1' => 'Address',
109
- 'address_2' => '',
110
- 'city' => 'Town/ City',
111
- 'state' => 'State',
112
- 'postcode' => 'Zip',
113
- 'email' => 'Email Address',
114
- 'phone' => 'Phone'
115
- );
116
- $bill = 0;
117
- foreach( $billing as $name => $value ) {
118
-
119
- $options3['billing_buttons'][$bill]['label'] = ( !empty( $value ) ? __( $value, 'woocommerce-checkout-manager' ) : false );
120
- $options3['billing_buttons'][$bill]['cow'] = $name;
121
- $options3['billing_buttons'][$bill]['checkbox'] = 'true';
122
- $options3['billing_buttons'][$bill]['order'] = $bill + 1;
123
- $options3['billing_buttons'][$bill]['type'] = 'wooccmtext';
124
-
125
- if ( $name == 'country') {
126
- $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
127
- }
128
-
129
- if ( $name == 'first_name') {
130
- $options3['billing_buttons'][$bill]['position'] = 'form-row-first';
131
- }
132
-
133
- if ( $name == 'last_name') {
134
- $options3['billing_buttons'][$bill]['position'] = 'form-row-last';
135
- $options3['billing_buttons'][$bill]['clear_row'] = true;
136
- }
137
-
138
- if ( $name == 'company') {
139
- $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
140
- }
141
-
142
- if ( $name == 'address_1') {
143
- $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
144
- $options3['billing_buttons'][$bill]['placeholder'] = __( 'Street address', 'woocommerce-checkout-manager' );
145
- }
146
-
147
- if ( $name == 'address_2') {
148
- $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
149
- $options3['billing_buttons'][$bill]['placeholder'] = __( 'Apartment, suite, unit etc. (optional)', 'woocommerce-checkout-manager' );
150
- }
151
-
152
- if ( $name == 'city') {
153
- $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
154
- $options3['billing_buttons'][$bill]['placeholder'] = __( 'Town / City', 'woocommerce-checkout-manager' );
155
- }
156
-
157
- if ( $name == 'state') {
158
- $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
159
- }
160
-
161
- if ( $name == 'postcode') {
162
- $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
163
- $options3['billing_buttons'][$bill]['placeholder'] = __( 'Postcode / Zip', 'woocommerce-checkout-manager' );
164
- $options3['billing_buttons'][$bill]['clear_row'] = true;
165
- }
166
-
167
- if ( $name == 'email') {
168
- $options3['billing_buttons'][$bill]['position'] = 'form-row-first';
169
- }
170
-
171
- if ( $name == 'phone') {
172
- $options3['billing_buttons'][$bill]['position'] = 'form-row-last';
173
- $options3['billing_buttons'][$bill]['clear_row'] = true;
174
- }
175
-
176
- $bill++;
177
- }
178
- }
179
-
180
- if ( !empty($options['buttons']) ) {
181
- foreach( $options['buttons'] as $i => $btn ) {
182
-
183
- if( !empty($btn['check_1']) || !empty($btn['check_2']) ) {
184
- $options['buttons'][$i]['option_array'] = implode( '||', array( wooccm_wpml_string( $btn['check_1'] ), wooccm_wpml_string( $btn['check_2'] ) ) );
185
- $options['buttons'][$i]['check_1'] = '';
186
- $options['buttons'][$i]['check_2'] = '';
187
- }
188
-
189
- $options['buttons'][$i]['type'] = ( $btn['type'] == 'checkbox' ) ? 'checkbox_wccm' : $btn['type'];
190
- $options['buttons'][$i]['type'] = ( $btn['type'] == 'text' ) ? 'wooccmtext' : $btn['type'];
191
- $options['buttons'][$i]['type'] = ( $btn['type'] == 'select' ) ? 'wooccmselect' : $btn['type'];
192
- $options['buttons'][$i]['type'] = ( $btn['type'] == 'date' ) ? 'datepicker' : $btn['type'];
193
-
194
- if (empty($btn['option_array'])) {
195
- $btn['option_array'] = '';
196
- }
197
-
198
- $mysecureop = explode( '||', $btn['option_array']);
199
-
200
- if ( !empty($btn['option_a']) ) {
201
- array_push($mysecureop, $btn['option_a'] );
202
- }
203
-
204
- if ( !empty($btn['option_b']) ) {
205
- array_push($mysecureop, $btn['option_b'] );
206
- }
207
-
208
- $uniqueThevalues = array_unique($mysecureop);
209
-
210
- $options['buttons'][$i]['option_array'] = implode( '||', $uniqueThevalues);
211
-
212
- }
213
- }
214
-
215
- foreach( $options3['billing_buttons'] as $i => $btn ) {
216
-
217
- if( !empty($btn['check_1']) || !empty($btn['check_2']) ) {
218
- $options3['billing_buttons'][$i]['option_array'] = implode( '||', array( wooccm_wpml_string( $btn['check_1'] ), wooccm_wpml_string( $btn['check_2'] ) ) );
219
- $options3['billing_buttons'][$i]['check_1'] = '';
220
- $options3['billing_buttons'][$i]['check_2'] = '';
221
- }
222
-
223
- $options3['billing_buttons'][$i]['type'] = ( $btn['type'] == 'checkbox' ) ? 'checkbox_wccm' : $btn['type'];
224
- $options3['billing_buttons'][$i]['type'] = ( $btn['type'] == 'text' ) ? 'wooccmtext' : $btn['type'];
225
- $options3['billing_buttons'][$i]['type'] = ( $btn['type'] == 'select' ) ? 'wooccmselect' : $btn['type'];
226
- $options3['billing_buttons'][$i]['type'] = ( $btn['type'] == 'date' ) ? 'datepicker' : $btn['type'];
227
-
228
- }
229
-
230
- foreach( $options2['shipping_buttons'] as $i => $btn ) {
231
-
232
- if( !empty($btn['check_1']) || !empty($btn['check_2']) ) {
233
- $options2['shipping_buttons'][$i]['option_array'] = implode( '||', array( wooccm_wpml_string( $btn['check_1'] ), wooccm_wpml_string( $btn['check_2'] ) ) );
234
- $options2['shipping_buttons'][$i]['check_1'] = '';
235
- $options2['shipping_buttons'][$i]['check_2'] = '';
236
- }
237
-
238
- $options2['shipping_buttons'][$i]['type'] = ( $btn['type'] == 'checkbox' ) ? 'checkbox_wccm' : $btn['type'];
239
- $options2['shipping_buttons'][$i]['type'] = ( $btn['type'] == 'text' ) ? 'wooccmtext' : $btn['type'];
240
- $options2['shipping_buttons'][$i]['type'] = ( $btn['type'] == 'select' ) ? 'wooccmselect' : $btn['type'];
241
- $options2['shipping_buttons'][$i]['type'] = ( $btn['type'] == 'date' ) ? 'datepicker' : $btn['type'];
242
-
243
- }
244
-
245
- update_option( 'wccs_settings', $options );
246
- update_option( 'wccs_settings2', $options2 );
247
- update_option( 'wccs_settings3', $options3 );
248
-
249
  }
 
250
  ?>
1
  <?php
2
+
3
  // Plugin activation script
4
  function wooccm_install() {
5
 
6
+ $options = get_option('wccs_settings');
7
+ $options2 = get_option('wccs_settings2');
8
+ $options3 = get_option('wccs_settings3');
9
+
10
+ update_option(WOOCCM_PREFIX . '_update_notice', 0);
11
+
12
+ if (function_exists('icl_register_string'))
13
+ icl_register_string('WooCommerce Checkout Manager', 'is a required field.', 'is a required field.');
14
+
15
+ if (empty($options['checkness']['position'])) {
16
+ $options['checkness']['position'] = 'after_order_notes';
17
+ }
18
+ if (empty($options['checkness']['wooccm_notification_email'])) {
19
+ $options['checkness']['wooccm_notification_email'] = get_option('admin_email');
20
+ }
21
+ if (empty($options['checkness']['payment_method_d'])) {
22
+ $options['checkness']['payment_method_d'] = 'Payment Method';
23
+ }
24
+ if (empty($options['checkness']['time_stamp_title'])) {
25
+ $options['checkness']['time_stamp_title'] = 'Order Time';
26
+ }
27
+ if (empty($options['checkness']['payment_method_t'])) {
28
+ $options['checkness']['payment_method_t'] = '1';
29
+ }
30
+ if (empty($options['checkness']['shipping_method_d'])) {
31
+ $options['checkness']['shipping_method_d'] = 'Shipping Method';
32
+ }
33
+ if (empty($options['checkness']['shipping_method_t'])) {
34
+ $options['checkness']['shipping_method_t'] = '1';
35
+ }
36
+ if (empty($options2['shipping_buttons'])) {
37
+ $shipping = array(
38
+ 'country' => 'Country',
39
+ 'first_name' => 'First Name',
40
+ 'last_name' => 'Last Name',
41
+ 'company' => 'Company Name',
42
+ 'address_1' => 'Address',
43
+ 'address_2' => '',
44
+ 'city' => 'Town/ City',
45
+ 'state' => 'State',
46
+ 'postcode' => 'Zip'
47
+ );
48
+ $ship = 0;
49
+ foreach ($shipping as $name => $value) {
50
+
51
+ $options2['shipping_buttons'][$ship]['label'] = (!empty($value) ? __($value, 'woocommerce-checkout-manager') : false );
52
+ $options2['shipping_buttons'][$ship]['cow'] = $name;
53
+ $options2['shipping_buttons'][$ship]['checkbox'] = 'true';
54
+ $options2['shipping_buttons'][$ship]['order'] = $ship + 1;
55
+ $options2['shipping_buttons'][$ship]['type'] = 'wooccmtext';
56
+
57
+ if ($name == 'country') {
58
+ $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
59
+ }
60
+
61
+ if ($name == 'first_name') {
62
+ $options2['shipping_buttons'][$ship]['position'] = 'form-row-first';
63
+ }
64
+
65
+ if ($name == 'last_name') {
66
+ $options2['shipping_buttons'][$ship]['position'] = 'form-row-last';
67
+ $options2['shipping_buttons'][$ship]['clear_row'] = true;
68
+ }
69
+
70
+ if ($name == 'company') {
71
+ $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
72
+ }
73
+
74
+ if ($name == 'address_1') {
75
+ $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
76
+ $options2['shipping_buttons'][$ship]['placeholder'] = __('Street address', 'woocommerce-checkout-manager');
77
+ }
78
+
79
+ if ($name == 'address_2') {
80
+ $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
81
+ $options2['shipping_buttons'][$ship]['placeholder'] = __('Apartment, suite, unit etc. (optional)', 'woocommerce-checkout-manager');
82
+ }
83
+
84
+ if ($name == 'city') {
85
+ $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
86
+ $options2['shipping_buttons'][$ship]['placeholder'] = __('Town / City', 'woocommerce-checkout-manager');
87
+ }
88
+
89
+ if ($name == 'state') {
90
+ $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
91
+ }
92
+
93
+ if ($name == 'postcode') {
94
+ $options2['shipping_buttons'][$ship]['position'] = 'form-row-wide';
95
+ $options2['shipping_buttons'][$ship]['placeholder'] = __('Postcode / Zip', 'woocommerce-checkout-manager');
96
+ $options2['shipping_buttons'][$ship]['clear_row'] = true;
97
+ }
98
+
99
+ $ship++;
100
+ }
101
+ }
102
+
103
+ if (empty($options3['billing_buttons'])) {
104
+ $billing = array(
105
+ 'country' => 'Country',
106
+ 'first_name' => 'First Name',
107
+ 'last_name' => 'Last Name',
108
+ 'company' => 'Company Name',
109
+ 'address_1' => 'Address',
110
+ 'address_2' => '',
111
+ 'city' => 'Town/ City',
112
+ 'state' => 'State',
113
+ 'postcode' => 'Zip',
114
+ 'email' => 'Email Address',
115
+ 'phone' => 'Phone'
116
+ );
117
+ $bill = 0;
118
+ foreach ($billing as $name => $value) {
119
+
120
+ $options3['billing_buttons'][$bill]['label'] = (!empty($value) ? __($value, 'woocommerce-checkout-manager') : false );
121
+ $options3['billing_buttons'][$bill]['cow'] = $name;
122
+ $options3['billing_buttons'][$bill]['checkbox'] = 'true';
123
+ $options3['billing_buttons'][$bill]['order'] = $bill + 1;
124
+ $options3['billing_buttons'][$bill]['type'] = 'wooccmtext';
125
+
126
+ if ($name == 'country') {
127
+ $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
128
+ $options3['billing_buttons'][$bill]['type'] = 'wooccmcountry';
129
+ }
130
+
131
+ if ($name == 'first_name') {
132
+ $options3['billing_buttons'][$bill]['position'] = 'form-row-first';
133
+ }
134
+
135
+ if ($name == 'last_name') {
136
+ $options3['billing_buttons'][$bill]['position'] = 'form-row-last';
137
+ $options3['billing_buttons'][$bill]['clear_row'] = true;
138
+ }
139
+
140
+ if ($name == 'company') {
141
+ $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
142
+ }
143
+
144
+ if ($name == 'address_1') {
145
+ $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
146
+ $options3['billing_buttons'][$bill]['placeholder'] = __('Street address', 'woocommerce-checkout-manager');
147
+ }
148
+
149
+ if ($name == 'address_2') {
150
+ $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
151
+ $options3['billing_buttons'][$bill]['placeholder'] = __('Apartment, suite, unit etc. (optional)', 'woocommerce-checkout-manager');
152
+ $options3['billing_buttons'][$bill]['required'] = false;
153
+ }
154
+
155
+ if ($name == 'city') {
156
+ $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
157
+ $options3['billing_buttons'][$bill]['placeholder'] = __('Town / City', 'woocommerce-checkout-manager');
158
+ }
159
+
160
+ if ($name == 'state') {
161
+ $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
162
+ $options3['billing_buttons'][$bill]['type'] = 'wooccmstate';
163
+ }
164
+
165
+ if ($name == 'postcode') {
166
+ $options3['billing_buttons'][$bill]['position'] = 'form-row-wide';
167
+ $options3['billing_buttons'][$bill]['placeholder'] = __('Postcode / Zip', 'woocommerce-checkout-manager');
168
+ $options3['billing_buttons'][$bill]['clear_row'] = true;
169
+ }
170
+
171
+ if ($name == 'email') {
172
+ $options3['billing_buttons'][$bill]['position'] = 'form-row-first';
173
+ }
174
+
175
+ if ($name == 'phone') {
176
+ $options3['billing_buttons'][$bill]['position'] = 'form-row-last';
177
+ $options3['billing_buttons'][$bill]['clear_row'] = true;
178
+ }
179
+
180
+ $bill++;
181
+ }
182
+ }
183
+
184
+ if (!empty($options['buttons'])) {
185
+ foreach ($options['buttons'] as $i => $btn) {
186
+
187
+ if (!empty($btn['check_1']) || !empty($btn['check_2'])) {
188
+ $options['buttons'][$i]['option_array'] = implode('||', array(wooccm_wpml_string($btn['check_1']), wooccm_wpml_string($btn['check_2'])));
189
+ $options['buttons'][$i]['check_1'] = '';
190
+ $options['buttons'][$i]['check_2'] = '';
191
+ }
192
+
193
+ $options['buttons'][$i]['type'] = ( $btn['type'] == 'checkbox' ) ? 'checkbox_wccm' : $btn['type'];
194
+ $options['buttons'][$i]['type'] = ( $btn['type'] == 'text' ) ? 'wooccmtext' : $btn['type'];
195
+ $options['buttons'][$i]['type'] = ( $btn['type'] == 'select' ) ? 'wooccmselect' : $btn['type'];
196
+ $options['buttons'][$i]['type'] = ( $btn['type'] == 'date' ) ? 'datepicker' : $btn['type'];
197
+
198
+ if (empty($btn['option_array'])) {
199
+ $btn['option_array'] = '';
200
+ }
201
+
202
+ $mysecureop = explode('||', $btn['option_array']);
203
+
204
+ if (!empty($btn['option_a'])) {
205
+ array_push($mysecureop, $btn['option_a']);
206
+ }
207
+
208
+ if (!empty($btn['option_b'])) {
209
+ array_push($mysecureop, $btn['option_b']);
210
+ }
211
+
212
+ $uniqueThevalues = array_unique($mysecureop);
213
+
214
+ $options['buttons'][$i]['option_array'] = implode('||', $uniqueThevalues);
215
+ }
216
+ }
217
+
218
+ foreach ($options3['billing_buttons'] as $i => $btn) {
219
+
220
+ if (!empty($btn['check_1']) || !empty($btn['check_2'])) {
221
+ $options3['billing_buttons'][$i]['option_array'] = implode('||', array(wooccm_wpml_string($btn['check_1']), wooccm_wpml_string($btn['check_2'])));
222
+ $options3['billing_buttons'][$i]['check_1'] = '';
223
+ $options3['billing_buttons'][$i]['check_2'] = '';
224
+ }
225
+
226
+ $options3['billing_buttons'][$i]['type'] = ( $btn['type'] == 'checkbox' ) ? 'checkbox_wccm' : $btn['type'];
227
+ $options3['billing_buttons'][$i]['type'] = ( $btn['type'] == 'text' ) ? 'wooccmtext' : $btn['type'];
228
+ $options3['billing_buttons'][$i]['type'] = ( $btn['type'] == 'select' ) ? 'wooccmselect' : $btn['type'];
229
+ $options3['billing_buttons'][$i]['type'] = ( $btn['type'] == 'date' ) ? 'datepicker' : $btn['type'];
230
+ }
231
+
232
+ foreach ($options2['shipping_buttons'] as $i => $btn) {
233
+
234
+ if (!empty($btn['check_1']) || !empty($btn['check_2'])) {
235
+ $options2['shipping_buttons'][$i]['option_array'] = implode('||', array(wooccm_wpml_string($btn['check_1']), wooccm_wpml_string($btn['check_2'])));
236
+ $options2['shipping_buttons'][$i]['check_1'] = '';
237
+ $options2['shipping_buttons'][$i]['check_2'] = '';
238
+ }
239
+
240
+ $options2['shipping_buttons'][$i]['type'] = ( $btn['type'] == 'checkbox' ) ? 'checkbox_wccm' : $btn['type'];
241
+ $options2['shipping_buttons'][$i]['type'] = ( $btn['type'] == 'text' ) ? 'wooccmtext' : $btn['type'];
242
+ $options2['shipping_buttons'][$i]['type'] = ( $btn['type'] == 'select' ) ? 'wooccmselect' : $btn['type'];
243
+ $options2['shipping_buttons'][$i]['type'] = ( $btn['type'] == 'date' ) ? 'datepicker' : $btn['type'];
244
+ }
245
+
246
+ update_option('wccs_settings', $options);
247
+ update_option('wccs_settings2', $options2);
248
+ update_option('wccs_settings3', $options3);
 
249
  }
250
+
251
  ?>
new/fields_handler.php CHANGED
@@ -7,7 +7,7 @@ if (!class_exists('WOOCCM_Fields_Handler')) {
7
  protected static $instance;
8
  protected static $i = 0;
9
 
10
- function field_user_roles($field, $key, $args, $value) {
11
 
12
  global $current_user;
13
 
@@ -31,34 +31,61 @@ if (!class_exists('WOOCCM_Fields_Handler')) {
31
  }
32
 
33
  return $field;
34
- }
35
 
36
- /*function field_after_clear($field, $key, $args, $value) {
37
 
38
- if (!empty($args['clear'])) {
39
- $field .= '<span class="clear">teeeeeest</span>';
40
- }
41
- //error_log($field);
42
 
43
- return $field;
44
- }*/
 
 
 
 
 
 
 
45
 
46
- function field_class_clear($args, $key, $value) {
47
 
48
- if (!empty($args['clear'])) {
49
 
50
- $args['class'][] = 'wooccm-clearfix';
 
 
51
 
52
- //$field .= '<span class="clear">teeeeeest</span>';
 
 
 
 
 
 
 
 
 
53
  }
54
 
55
- return $args;
 
 
 
 
56
  }
57
 
58
  function init() {
59
- add_filter('woocommerce_form_field', array($this, 'field_user_roles'), 10, 4);
60
- //add_filter('woocommerce_form_field', array($this, 'field_after_clear'), 10, 4);
61
- add_filter('woocommerce_form_field_args', array($this, 'field_class_clear'), 10, 3);
 
 
 
 
 
 
 
62
  }
63
 
64
  public static function instance() {
7
  protected static $instance;
8
  protected static $i = 0;
9
 
10
+ /*function field_user_roles($field, $key, $args, $value) {
11
 
12
  global $current_user;
13
 
31
  }
32
 
33
  return $field;
34
+ }*/
35
 
36
+ function remove_checkout_fields($fields) {
37
 
38
+ foreach ($fields as $key => $type) {
39
+ foreach ($type as $id => $field) {
 
 
40
 
41
+ // Remove disabled
42
+ // -------------------------------------------------------------------
43
+ if (!empty($field['disabled'])) {
44
+ unset($fields[$key][$id]);
45
+ }
46
+ // Remove based on roles
47
+ // -------------------------------------------------------------------
48
+
49
+ if (!empty($field['user_role']) && (!empty($field['role_options']) || !empty($field['role_options2']))) {
50
 
51
+ $rolekeys = explode('||', $field['role_options']);
52
 
53
+ $rolekeys2 = explode('||', $field['role_options2']);
54
 
55
+ if (!empty($field['role_options']) && !in_array($user_role, $rolekeys)) {
56
+ unset($fields[$key][$id]);
57
+ }
58
 
59
+ if (!empty($field['role_options2']) && in_array($user_role, $rolekeys2)) {
60
+ unset($fields[$key][$id]);
61
+ }
62
+ }
63
+ }
64
+ }
65
+
66
+ // Fix for required address field
67
+ if (get_option('woocommerce_ship_to_destination') == 'billing_only') {
68
+ unset($fields['shipping']);
69
  }
70
 
71
+ return $fields;
72
+ }
73
+
74
+ function woocommerce_checkout_address_2_field($option) {
75
+ return 'required';
76
  }
77
 
78
  function init() {
79
+
80
+ // Remove fields
81
+ // -----------------------------------------------------------------------
82
+ add_filter('woocommerce_checkout_fields', array($this, 'remove_checkout_fields'));
83
+
84
+ // Fix address_2 field
85
+ // -----------------------------------------------------------------------
86
+ add_filter('default_option_woocommerce_checkout_address_2_field', array($this, 'woocommerce_checkout_address_2_field'));
87
+
88
+ //add_filter('woocommerce_form_field', array($this, 'field_user_roles'), 10, 4);
89
  }
90
 
91
  public static function instance() {
new/fields_register.php CHANGED
@@ -32,71 +32,116 @@ if (!class_exists('WOOCCM_Fields_Register')) {
32
  'country'
33
  );
34
 
35
- if ($custom_field['cow'] == 'country') {
36
- // Country override
37
- $fields[$key]['type'] = 'wooccmcountry';
38
- } elseif ($custom_field['cow'] == 'state') {
39
- // State override
40
- $fields[$key]['type'] = 'wooccmstate';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  } else {
42
- $fields[$key]['type'] = $custom_field['type'];
 
 
 
 
43
  }
44
 
 
 
45
  if ($custom_field['cow'] !== 'country' || $custom_field['cow'] !== 'state') {
46
  $fields[$key]['placeholder'] = ( isset($custom_field['placeholder']) ? $custom_field['placeholder'] : '' );
47
  }
48
-
49
- // Default to Position wide
50
- $custom_field['position'] = ( isset($custom_field['position']) ? $custom_field['position'] : 'form-row-wide' );
51
- $fields[$key]['class'] = array($custom_field['position'] . ' ' . ( isset($custom_field['conditional_tie']) ? $custom_field['conditional_tie'] : '' ) . ' ' . ( isset($custom_field['extra_class']) ? $custom_field['extra_class'] : '' ));
52
- $fields[$key]['label'] = wooccm_wpml_string($custom_field['label']);
53
- $fields[$key]['clear'] = ( isset($custom_field['clear_row']) ? $custom_field['clear_row'] : '' );
54
- $fields[$key]['default'] = ( isset($custom_field['force_title2']) ? $custom_field['force_title2'] : '' );
55
- $fields[$key]['options'] = ( isset($custom_field['option_array']) ? $custom_field['option_array'] : '' );
56
- $fields[$key]['user_role'] = ( isset($custom_field['user_role']) ? $custom_field['user_role'] : '' );
57
- $fields[$key]['role_options'] = ( isset($custom_field['role_options']) ? $custom_field['role_options'] : '' );
58
- $fields[$key]['role_options2'] = ( isset($custom_field['role_options2']) ? $custom_field['role_options2'] : '' );
59
- //$fields[$key]['required'] = ( isset($custom_field['checkbox']) ? $custom_field['checkbox'] : '' );
60
- $fields[$key]['wooccm_required'] = ( isset($custom_field['checkbox']) ? $custom_field['checkbox'] : '' );
61
- $fields[$key]['cow'] = ( isset($custom_field['cow']) ? $custom_field['cow'] : '' );
62
- $fields[$key]['color'] = ( isset($custom_field['colorpickerd']) ? $custom_field['colorpickerd'] : '' );
63
- $fields[$key]['colorpickertype'] = ( isset($custom_field['colorpickertype']) ? $custom_field['colorpickertype'] : '' );
64
- $fields[$key]['order'] = ( isset($custom_field['order']) ? $custom_field['order'] : '' );
65
- $fields[$key]['priority'] = ( isset($custom_field['priority']) ? $custom_field['priority'] : $fields[$key]['order'] );
66
- $fields[$key]['fancy'] = ( isset($custom_field['fancy']) ? $custom_field['fancy'] : '' );
67
-
68
- // 1326
69
- // -----------------------------------------------------------------------
70
- //if ($custom_field['type'] == 'wooccmtext' || $fields[$key]['type'] == 'wooccmtext') {
71
- //$fields[$key]['type'] = 'text';
72
- //}
73
-
74
- if ($custom_field['type'] == 'wooccmstate' || $fields[$key]['type'] == 'wooccmstate') {
75
- $fields[$key]['type'] = 'state';
76
  }
77
 
78
- if ($custom_field['type'] == 'wooccmcountry' || $fields[$key]['type'] == 'wooccmcountry') {
 
 
 
79
  $fields[$key]['type'] = 'country';
80
  }
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  // Remove required for heading
 
83
  if ($custom_field['type'] == 'heading') {
84
  $fields[$key]['required'] = false;
85
-
86
- //error_log(json_encode($fields[$key]));
87
  }
88
 
89
  // Check if Multi-checkbox has options assigned to it
 
90
  if ($custom_field['type'] == 'multicheckbox' && empty($custom_field['option_array'])) {
91
  $custom_field['disabled'] = true;
92
  }
93
 
94
  // Bolt on address-field for address-based fields
 
95
  if (in_array($custom_field['cow'], $defaults)) {
96
  $fields[$key]['class'][] = 'address-field';
97
  }
98
 
99
  // Override for State fields
 
100
  if ($fields[$key]['type'] == 'wooccmstate') {
101
  $country_key = false;
102
  if ($key == 'billing_state') {
@@ -132,18 +177,18 @@ if (!class_exists('WOOCCM_Fields_Register')) {
132
 
133
  $key = sprintf("%s%s", $prefix, $custom_field['cow']);
134
 
135
- $fields[$key] = $this->add_checkout_field_filter($key, $fields, $custom_field);
136
-
137
  // Remove disabled fields
138
- if (!empty($custom_field['disabled'])) {
139
- unset($fields[$key]);
140
- }
 
 
141
  }
142
  }
143
  }
144
  }
145
 
146
- // Resort the fields by order
147
  $fields[] = uasort($fields, 'wooccm_sort_fields');
148
 
149
  if ($fields[0]) {
@@ -175,22 +220,19 @@ if (!class_exists('WOOCCM_Fields_Register')) {
175
  }
176
 
177
  function add_checkout_billing_fields($fields) {
178
-
179
- //error_log('add_checkout_billing_fields');
180
-
181
  return $this->add_checkout_fields_filter($fields, 'wccs_settings3', 'billing_buttons', 'billing_');
182
  }
183
 
184
  function init() {
185
-
186
  // Billing fields
187
  // -----------------------------------------------------------------------
188
  add_filter('woocommerce_billing_fields', array($this, 'add_checkout_billing_fields'));
189
-
190
  // Shipping fields
191
  // -----------------------------------------------------------------------
192
-
193
  add_filter('woocommerce_shipping_fields', array($this, 'add_checkout_shipping_fields'));
 
194
  // Additional fields
195
  // -----------------------------------------------------------------------
196
  switch ($this->get_positioning()) {
@@ -214,12 +256,6 @@ if (!class_exists('WOOCCM_Fields_Register')) {
214
  add_action('woocommerce_after_order_notes', array($this, 'add_checkout_additional_fields'));
215
  break;
216
  }
217
-
218
- // Default pptions
219
- // -----------------------------------------------------------------------
220
- //add_filter('default_option_wccs_settings', array($this, 'wccs_settings'));
221
- //add_filter('default_option_wccs_settings2', array($this, 'wccs_settings2'));
222
- //add_filter('default_option_wccs_settings3', array($this, 'wccs_settings3'));
223
  }
224
 
225
  public static function instance() {
32
  'country'
33
  );
34
 
35
+ $fields[$key] = wp_parse_args($custom_field, (array) @$fields[$key]);
36
+
37
+ // Priority
38
+ // -----------------------------------------------------------------------
39
+ if (isset($custom_field['order'])) {
40
+ $fields[$key]['priority'] = $fields[$key]['order'];
41
+ }
42
+
43
+ // Color
44
+ // -----------------------------------------------------------------------
45
+ if (isset($custom_field['colorpickerd'])) {
46
+ $fields[$key]['color'] = $fields[$key]['colorpickerd'];
47
+ }
48
+
49
+ // Options
50
+ // -----------------------------------------------------------------------
51
+ if (isset($custom_field['force_title2'])) {
52
+ $fields[$key]['option'] = $fields[$key]['force_title2'];
53
+ }
54
+
55
+ // Default
56
+ // -----------------------------------------------------------------------
57
+ if (isset($custom_field['force_title2'])) {
58
+ $fields[$key]['default'] = $fields[$key]['force_title2'];
59
+ }
60
+
61
+ // Clear
62
+ // -----------------------------------------------------------------------
63
+ //var_dump($fields[$key]);
64
+
65
+ if (isset($custom_field['clear_row'])) {
66
+ $fields[$key]['clear'] = $fields[$key]['clear_row'];
67
+ }
68
+
69
+ // Class
70
+ // -----------------------------------------------------------------------
71
+
72
+ if (isset($fields[$key]['class'])) {
73
+ if (isset($custom_field['position'])) {
74
+ $fields[$key]['class'] = array_diff($fields[$key]['class'], array('form-row-wide', 'form-row-first', 'form-row-last'));
75
+ $fields[$key]['class'][] = $custom_field['position'];
76
+ }
77
+ if (isset($custom_field['conditional_tie'])) {
78
+ $fields[$key]['class'][] = $custom_field['conditional_tie'];
79
+ }
80
+ if (isset($custom_field['extra_class'])) {
81
+ $fields[$key]['class'][] = $custom_field['extra_class'];
82
+ }
83
  } else {
84
+ $fields[$key]['class'] = array('form-row-wide');
85
+ }
86
+
87
+ if (!empty($custom_field['clear_row'])) {
88
+ $fields[$key]['class'][] = 'wooccm-clearfix';
89
  }
90
 
91
+ // Remove placeholder
92
+ // -----------------------------------------------------------------------
93
  if ($custom_field['cow'] !== 'country' || $custom_field['cow'] !== 'state') {
94
  $fields[$key]['placeholder'] = ( isset($custom_field['placeholder']) ? $custom_field['placeholder'] : '' );
95
  }
96
+
97
+ //var_dump($fields[$key]);
98
+
99
+ // Scape wooccm field fielter
100
+ // -----------------------------------------------------------------------
101
+ if ($fields[$key]['type'] == 'wooccmtext') {
102
+ $fields[$key]['type'] = 'text';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  }
104
 
105
+ if ($fields[$key]['type'] == 'wooccmstate') {
106
+ $fields[$key]['type'] = 'state';
107
+ }
108
+ if ($fields[$key]['type'] == 'wooccmcountry') {
109
  $fields[$key]['type'] = 'country';
110
  }
111
 
112
+ // Required
113
+ // -----------------------------------------------------------------------
114
+ if (!empty($custom_field['checkbox'])) {
115
+ $fields[$key]['checkbox'] = true;
116
+ $fields[$key]['required'] = true;
117
+ $fields[$key]['wooccm_required'] = true;
118
+ } else {
119
+ $fields[$key]['checkbox'] = false;
120
+ $fields[$key]['required'] = false;
121
+ $fields[$key]['wooccm_required'] = false;
122
+ }
123
+
124
+ //echo ($key . '//' . intval($fields[$key]['required']));
125
  // Remove required for heading
126
+ // -----------------------------------------------------------------------
127
  if ($custom_field['type'] == 'heading') {
128
  $fields[$key]['required'] = false;
 
 
129
  }
130
 
131
  // Check if Multi-checkbox has options assigned to it
132
+ // -----------------------------------------------------------------------
133
  if ($custom_field['type'] == 'multicheckbox' && empty($custom_field['option_array'])) {
134
  $custom_field['disabled'] = true;
135
  }
136
 
137
  // Bolt on address-field for address-based fields
138
+ // -----------------------------------------------------------------------
139
  if (in_array($custom_field['cow'], $defaults)) {
140
  $fields[$key]['class'][] = 'address-field';
141
  }
142
 
143
  // Override for State fields
144
+ // -----------------------------------------------------------------------
145
  if ($fields[$key]['type'] == 'wooccmstate') {
146
  $country_key = false;
147
  if ($key == 'billing_state') {
177
 
178
  $key = sprintf("%s%s", $prefix, $custom_field['cow']);
179
 
 
 
180
  // Remove disabled fields
181
+ //if (!empty($custom_field['disabled'])) {
182
+ //unset($fields[$key]);
183
+ //} else {
184
+ $fields[$key] = $this->add_checkout_field_filter($key, $fields, $custom_field);
185
+ //}
186
  }
187
  }
188
  }
189
  }
190
 
191
+ // Resort the fields by order
192
  $fields[] = uasort($fields, 'wooccm_sort_fields');
193
 
194
  if ($fields[0]) {
220
  }
221
 
222
  function add_checkout_billing_fields($fields) {
 
 
 
223
  return $this->add_checkout_fields_filter($fields, 'wccs_settings3', 'billing_buttons', 'billing_');
224
  }
225
 
226
  function init() {
227
+
228
  // Billing fields
229
  // -----------------------------------------------------------------------
230
  add_filter('woocommerce_billing_fields', array($this, 'add_checkout_billing_fields'));
231
+
232
  // Shipping fields
233
  // -----------------------------------------------------------------------
 
234
  add_filter('woocommerce_shipping_fields', array($this, 'add_checkout_shipping_fields'));
235
+
236
  // Additional fields
237
  // -----------------------------------------------------------------------
238
  switch ($this->get_positioning()) {
256
  add_action('woocommerce_after_order_notes', array($this, 'add_checkout_additional_fields'));
257
  break;
258
  }
 
 
 
 
 
 
259
  }
260
 
261
  public static function instance() {
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://quadlayers.com/
4
  Tags: woocommerce, woocommerce checkout, field manager, checkout editor, checkout field, shipping field, billing field, order field, additional field
5
  Requires at least: 3.0
6
  Tested up to: 5.2.3
7
- Stable tag: 4.3.6
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -137,6 +137,10 @@ Example:
137
 
138
  == Changelog ==
139
 
 
 
 
 
140
  = 4.3.6 =
141
  * Fix: woocommerce checkout css
142
 
4
  Tags: woocommerce, woocommerce checkout, field manager, checkout editor, checkout field, shipping field, billing field, order field, additional field
5
  Requires at least: 3.0
6
  Tested up to: 5.2.3
7
+ Stable tag: 4.3.7
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
137
 
138
  == Changelog ==
139
 
140
+ = 4.3.7 =
141
+ * Fix: woocommerce checkout address 2 field required/optional
142
+ * Fix: woocommerce checkout address removed required alert
143
+
144
  = 4.3.6 =
145
  * Fix: woocommerce checkout css
146
 
woocommerce-checkout-manager.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: WooCommerce Checkout Manager
4
  * Description: Manages WooCommerce Checkout, the advanced way.
5
- * Version: 4.3.6
6
  * Author: QuadLayers
7
  * Author URI: https://www.quadlayers.com
8
  * Copyright: 2019 QuadLayers (https://www.quadlayers.com)
@@ -16,7 +16,7 @@ if (!defined('WOOCCM_PLUGIN_NAME')) {
16
  define('WOOCCM_PLUGIN_NAME', 'WooCommerce Checkout Manager');
17
  }
18
  if (!defined('WOOCCM_PLUGIN_VERSION')) {
19
- define('WOOCCM_PLUGIN_VERSION', '4.3.6');
20
  }
21
  if (!defined('WOOCCM_PLUGIN_FILE')) {
22
  define('WOOCCM_PLUGIN_FILE', __FILE__);
2
  /**
3
  * Plugin Name: WooCommerce Checkout Manager
4
  * Description: Manages WooCommerce Checkout, the advanced way.
5
+ * Version: 4.3.7
6
  * Author: QuadLayers
7
  * Author URI: https://www.quadlayers.com
8
  * Copyright: 2019 QuadLayers (https://www.quadlayers.com)
16
  define('WOOCCM_PLUGIN_NAME', 'WooCommerce Checkout Manager');
17
  }
18
  if (!defined('WOOCCM_PLUGIN_VERSION')) {
19
+ define('WOOCCM_PLUGIN_VERSION', '4.3.7');
20
  }
21
  if (!defined('WOOCCM_PLUGIN_FILE')) {
22
  define('WOOCCM_PLUGIN_FILE', __FILE__);