1
0
mirror of synced 2025-03-06 00:56:09 +03:00
woocommerce-module/src/retailcrm.php

177 lines
6.6 KiB
PHP
Raw Normal View History

<?php
/**
* Version: 4.0.0
* WC requires at least: 3.0
2020-03-05 13:06:25 +03:00
* WC tested up to: 3.9.3
2020-03-31 15:26:33 +03:00
* Plugin Name: WooCommerce retailCRM
* Plugin URI: https://wordpress.org/plugins/woo-retailcrm/
2020-03-31 15:26:33 +03:00
* Description: Integration plugin for WooCommerce & retailCRM
* Author: RetailDriver LLC
2018-05-28 12:56:19 +03:00
* Author URI: http://retailcrm.pro/
* Text Domain: retailcrm
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
if (!class_exists( 'WC_Integration_Retailcrm')) :
/**
* Class WC_Integration_Retailcrm
*/
class WC_Integration_Retailcrm {
const WOOCOMMERCE_SLUG = 'woocommerce';
const WOOCOMMERCE_PLUGIN_PATH = 'woocommerce/woocommerce.php';
private static $instance;
public static function get_instance() {
if (null === self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Construct the plugin.
*/
public function __construct() {
2018-08-22 15:54:47 +03:00
$this->load_plugin_textdomain();
if (class_exists( 'WC_Integration' )) {
self::load_module();
add_filter('woocommerce_integrations', array( $this, 'add_integration'));
} else {
2018-08-22 15:54:47 +03:00
add_action('admin_notices', array($this, 'woocommerce_missing_notice'));
}
}
2018-08-22 15:54:47 +03:00
public function woocommerce_missing_notice() {
if (static::isWooCommerceInstalled()) {
if (!is_plugin_active(static::WOOCOMMERCE_PLUGIN_PATH)) {
echo '
<div class="error">
<p>
Activate WooCommerce in order to enable retailCRM integration!
<a href="' . wp_nonce_url(admin_url('plugins.php')) . '" aria-label="Activate WooCommerce">
Click here to open plugins manager
</a>
</p>
</div>
';
}
} else {
echo '
<div class="error">
<p>
<a href="'
. static::generatePluginInstallationUrl(static::WOOCOMMERCE_SLUG)
. '" aria-label="Install WooCommerce">Install WooCommerce</a> in order to enable retailCRM integration!
</p>
</div>
';
}
2018-08-22 15:54:47 +03:00
}
public function load_plugin_textdomain() {
2018-08-22 15:54:47 +03:00
load_plugin_textdomain('retailcrm', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
/**
* Add a new integration to WooCommerce.
*
* @param $integrations
*
* @return array
*/
public function add_integration( $integrations ) {
$integrations[] = 'WC_Retailcrm_Base';
return $integrations;
}
/**
* Loads module classes.
*/
public static function load_module()
{
require_once(dirname(__FILE__) . '/include/interfaces/class-wc-retailcrm-builder-interface.php');
require_once(dirname(__FILE__) . '/include/models/class-wc-retailcrm-customer-switcher-state.php');
require_once(dirname(__FILE__) . '/include/models/class-wc-retailcrm-customer-switcher-result.php');
require_once(dirname(__FILE__ ) . '/include/components/class-wc-retailcrm-logger.php');
require_once(dirname(__FILE__ ) . '/include/components/class-wc-retailcrm-history-assembler.php');
require_once(dirname(__FILE__ ) . '/include/components/class-wc-retailcrm-paginated-request.php');
require_once(dirname(__FILE__) . '/include/components/class-wc-retailcrm-customer-switcher.php');
require_once(dirname(__FILE__ ) . '/include/abstracts/class-wc-retailcrm-abstract-builder.php');
require_once(dirname(__FILE__ ) . '/include/abstracts/class-wc-retailcrm-abstracts-settings.php');
require_once(dirname(__FILE__ ) . '/include/abstracts/class-wc-retailcrm-abstracts-data.php');
require_once(dirname(__FILE__ ) . '/include/abstracts/class-wc-retailcrm-abstracts-address.php');
require_once(dirname(__FILE__ ) . '/include/customer/woocommerce/class-wc-retailcrm-wc-customer-builder.php');
require_once(dirname(__FILE__ ) . '/include/order/class-wc-retailcrm-order.php');
require_once(dirname(__FILE__ ) . '/include/order/class-wc-retailcrm-order-payment.php');
require_once(dirname(__FILE__ ) . '/include/order/class-wc-retailcrm-order-item.php');
require_once(dirname(__FILE__ ) . '/include/order/class-wc-retailcrm-order-address.php');
require_once(dirname(__FILE__ ) . '/include/customer/class-wc-retailcrm-customer-address.php');
require_once(dirname(__FILE__ ) . '/include/customer/class-wc-retailcrm-customer-corporate-address.php');
require_once(dirname(__FILE__ ) . '/include/class-wc-retailcrm-base.php');
require_once(dirname(__FILE__ ) . '/include/functions.php');
}
/**
* Returns true if WooCommerce was found in plugin cache
*
* @return bool
*/
private function isWooCommerceInstalled()
{
$plugins = wp_cache_get( 'plugins', 'plugins' );
if (!$plugins) {
$plugins = get_plugins();
} elseif (isset($plugins[''])) {
$plugins = $plugins[''];
}
if (!isset($plugins[static::WOOCOMMERCE_PLUGIN_PATH])) {
return false;
}
return true;
}
/**
* Generate plugin installation url
*
* @param $pluginSlug
*
* @return string
*/
private function generatePluginInstallationUrl($pluginSlug)
{
$action = 'install-plugin';
return wp_nonce_url(
add_query_arg(
array(
'action' => $action,
'plugin' => $pluginSlug
),
admin_url( 'update.php' )
),
$action.'_'.$pluginSlug
);
}
}
if (!class_exists('WC_Retailcrm_Plugin')) {
require_once (dirname(__FILE__) . '/include/class-wc-retailcrm-plugin.php');
}
$plugin = WC_Retailcrm_Plugin::getInstance(__FILE__);
$plugin->register_activation_hook();
$plugin->register_deactivation_hook();
2018-05-28 12:56:19 +03:00
add_action('plugins_loaded', array('WC_Integration_Retailcrm', 'get_instance'), 0);
endif;