PluginProbe ʕ •ᴥ•ʔ
CommerceBird – AI Command Center, ERP Integrations & B2B for WooCommerce (Zoho, Exact Online). / 2.2.14
CommerceBird – AI Command Center, ERP Integrations & B2B for WooCommerce (Zoho, Exact Online). v2.2.14
3.0.3 3.0.2 3.0.1 trunk 2.2.14 2.2.15 2.2.16 2.2.17 2.2.18 2.2.19 2.3.0 2.3.1 2.3.10 2.3.11 2.3.12 2.3.13 2.3.14 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.7.91 2.7.92 2.7.93 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.9.0 2.9.1 2.9.2 2.9.3 3.0.0
commercebird / commercebird.php
commercebird Last commit date
.github 1 year ago admin 1 year ago includes 1 year ago languages 1 year ago LICENSE 1 year ago build-ubuntu.sh 1 year ago changelog.txt 1 year ago commercebird.php 1 year ago composer.json 1 year ago data-sync.php 1 year ago readme.txt 1 year ago
commercebird.php
199 lines
1 <?php
2 /**
3 * Plugin Name: CommerceBird
4 * Plugin URI: https://commercebird.com
5 * Author: CommerceBird
6 * Description: This plugin helps you get the most of CommerceBird by allowing you to upload product images, use integrations like Zoho Inventory, Zoho CRM, Exact Online and more. Requires a subscription at CommerceBird.com.
7 * Version: 2.2.14
8 * Requires PHP: 7.4
9 * Requires Plugins: woocommerce
10 * Requires at least: 6.5
11 * Tested up to: 6.7.1
12 * Text Domain: commercebird
13 * Domain Path: /languages
14 *
15 * License: GNU General Public License v3.0
16 * License URI: http://www.gnu.org/licenses/gpl-3.0.html
17 *
18 * @category Fulfillment
19 * @package CommerceBird
20 * @author Fawad Tiemoerie <info@commercebird.com>
21 * @copyright Copyright (c) 2024, CommerceBird
22 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0-or-later
23 *
24 * WC requires at least: 9.4.0
25 * WC tested up to: 9.6.1
26 */
27
28 if ( ! defined( 'ABSPATH' ) ) {
29 exit; // Exit if accessed directly
30 }
31
32 if ( ! defined( 'CMBIRD_VERSION' ) ) {
33 define( 'CMBIRD_VERSION', '2.2.14' );
34 }
35 if ( ! defined( 'CMBIRD_PATH' ) ) {
36 define( 'CMBIRD_PATH', plugin_dir_path( __FILE__ ) );
37 }
38 if ( ! defined( 'CMBIRD_URL' ) ) {
39 define( 'CMBIRD_URL', plugin_dir_url( __FILE__ ) );
40 }
41 if ( ! defined( 'CMBIRD_MENU_SLUG' ) ) {
42 define( 'CMBIRD_MENU_SLUG', 'commercebird-app' );
43 }
44
45 require_once CMBIRD_PATH . 'includes/woo-functions.php';
46 require_once CMBIRD_PATH . 'includes/sync/order-backend.php';
47 require_once CMBIRD_PATH . 'data-sync.php';
48
49 require __DIR__ . '/vendor/autoload.php';
50
51 use Automattic\WooCommerce\Utilities\FeaturesUtil;
52 use CommerceBird\Plugin;
53 use CommerceBird\Admin\Actions\Sync\ExactOnlineSync;
54 use CommerceBird\Admin\Actions\Sync\ZohoCRMSync;
55 use CommerceBird\API\ProductWebhook;
56 use CommerceBird\API\CreateOrderWebhook;
57 use CommerceBird\API\CreateSFOrderWebhook;
58 use CommerceBird\API\ShippingWebhook;
59 use CommerceBird\API\Zoho;
60 use CommerceBird\API\Exact;
61
62 /*
63 |--------------------------------------------------------------------------
64 | Activation, deactivation and uninstall event.
65 |--------------------------------------------------------------------------
66 */
67 register_activation_hook( __FILE__, array( Plugin::class, 'activate' ) );
68 register_deactivation_hook( __FILE__, array( Plugin::class, 'deactivate' ) );
69 register_uninstall_hook( __FILE__, array( Plugin::class, 'uninstall' ) );
70
71 /*
72 |--------------------------------------------------------------------------
73 | Load the plugin translations
74 |--------------------------------------------------------------------------
75 */
76 add_action( 'init', 'cmbird_load_textdomain' );
77 function cmbird_load_textdomain() {
78 load_plugin_textdomain( 'commercebird', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
79 }
80
81 /** Loading Purchase Order Class
82 * @since 1.0.0
83 */
84 function cmbird_purchase_order_class() {
85 if ( class_exists( 'WooCommerce' ) ) {
86 new CMBIRD_Purchase_Order();
87 }
88 }
89 add_action( 'woocommerce_init', 'cmbird_purchase_order_class' );
90 add_action( 'init', array( CMBIRD_PO_Admin_Manager::class, 'init' ), 11 );
91
92 /*
93 |--------------------------------------------------------------------------
94 | Start the plugin
95 |--------------------------------------------------------------------------
96 */
97 Plugin::init();
98
99 /**
100 * Declaring compatibility for WooCommerce HPOS
101 */
102 add_action(
103 'before_woocommerce_init',
104 function () {
105 if ( class_exists( FeaturesUtil::class) ) {
106 FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
107 }
108 }
109 );
110
111 /**
112 * Hooks for WC Action Scheduler to import or export products
113 */
114 $import_products = new CMBIRD_Products_ZI();
115 $import_pricelist = new CMBIRD_Pricelist_ZI();
116 $product_class = new CMBIRD_Products_ZI_Export();
117 $order_class = new CMBIRD_Order_Sync_ZI();
118 $contact_class = new CMBIRD_Contact_ZI();
119 $category_class = new CMBIRD_Categories_ZI();
120 $import_pricelist->wc_b2b_groups();
121 add_action( 'import_group_items_cron', array( $import_products, 'sync_groupitem_recursively' ), 10, 2 );
122 add_action( 'import_simple_items_cron', array( $import_products, 'sync_item_recursively' ), 10, 2 );
123 add_action( 'import_variable_product_cron', array( $import_products, 'import_variable_product_variations' ), 10, 2 );
124 add_action( 'sync_zi_product_cron', array( $product_class, 'cmbird_zi_products_prepare_sync' ), 10, 2 );
125 add_action( 'sync_zi_pricelist', array( $import_pricelist, 'zi_get_pricelist' ), 10, 2 );
126 add_action( 'sync_zi_order', array( $order_class, 'zi_orders_prepare_sync' ), 10, 2 );
127 add_action( 'sync_zi_import_contacts', array( $contact_class, 'cmbird_get_zoho_contacts' ), 10, 2 );
128 add_action( 'cmbird_zi_category_cron', array( $category_class, 'cmbird_zi_category_sync_call' ), 10 );
129 // add action to set the zoho rate limit option exceeded to false
130 add_action( 'cmbird_common', array( CMBIRD_Common_Functions::class, 'set_zoho_rate_limit_option' ) );
131 // Exact Online Hooks
132 add_action( 'cmbird_sync_eo', array( ExactOnlineSync::class, 'sync' ), 10, 3 );
133 add_action( 'cmbird_payment_status', array( ExactOnlineSync::class, 'cmbird_payment_status' ), 10, 1 );
134 add_action( 'cmbird_eo_get_payment_statuses', array( ExactOnlineSync::class, 'get_payment_status_via_cron' ) );
135 // Zoho CRM Hooks
136 add_action( 'init', array( ZohoCRMSync::class, 'refresh_token' ) );
137
138 // add classes to REST API
139 add_action(
140 'rest_api_init',
141 function () {
142 new Zoho();
143 new Exact();
144 new ProductWebhook();
145 new ShippingWebhook();
146 new CreateOrderWebhook();
147 new CreateSFOrderWebhook();
148 $po_controller = new CMBIRD_REST_Shop_Purchase_Controller();
149 $po_controller->register_routes();
150 }
151 );
152
153 add_action(
154 'save_post',
155 function ($post_id, $post) {
156 if ( $post->post_type === 'wcb2b_group' ) {
157 delete_transient( 'wc_b2b_groups' );
158 }
159 },
160 10,
161 2
162 );
163
164 /**
165 * Perform actions when the plugin is updated
166 * @param string $upgrader_object
167 * @param array $options
168 * @return void
169 */
170 add_action( 'upgrader_process_complete', 'cmbird_update_plugin_tasks', 10, 2 );
171
172 function cmbird_update_plugin_tasks( $upgrader_object, $options ) {
173 $this_plugin = plugin_basename( __FILE__ );
174
175 if ( $options['action'] === 'update' && $options['type'] === 'plugin' ) {
176 foreach ( $options['plugins'] as $plugin ) {
177 if ( $plugin === $this_plugin ) {
178 // Perform tasks when the plugin is updated
179 $zoho_inventory_url = get_option( 'cmbird_zoho_inventory_url' );
180 if ( $zoho_inventory_url ) {
181 $new_zoho_inventory_url = str_replace( 'inventory.zoho', 'www.zohoapis', $zoho_inventory_url );
182 update_option( 'cmbird_zoho_inventory_url', $new_zoho_inventory_url );
183 }
184 // change the post meta key name from "cost_price" to "_cost_price" using wpdb query
185 global $wpdb;
186 $wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '_cost_price' WHERE meta_key = 'cost_price'" );
187 // add 'cmbird_' to every option key name that starts with 'zoho_' using wpdb query
188 $zoho_options = $wpdb->get_results( "SELECT option_name FROM $wpdb->options WHERE option_name LIKE 'zoho_%' OR option_name LIKE 'zi_%'" );
189 foreach ( $zoho_options as $zoho_option ) {
190 if ( strpos( $zoho_option->option_name, 'cmbird_' ) !== 0 ) {
191 $new_option_name = 'cmbird_' . $zoho_option->option_name;
192 $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->options SET option_name = %s WHERE option_name = %s", $new_option_name, $zoho_option->option_name ) );
193 }
194 }
195 }
196 }
197 }
198 }
199