load_plugin_textdomain();
if (class_exists( 'WC_Integration' )) {
self::load_module();
add_filter('woocommerce_integrations', array( $this, 'add_integration'));
} else {
add_action('admin_notices', array($this, 'woocommerce_missing_notice'));
}
}
public function woocommerce_missing_notice() {
if (static::isWooCommerceInstalled()) {
if (!is_plugin_active(static::WOOCOMMERCE_PLUGIN_PATH)) {
echo '
';
}
} else {
echo '
';
}
}
public function load_plugin_textdomain() {
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(self::checkCustomFile('include/interfaces/class-wc-retailcrm-builder-interface.php'));
require_once(self::checkCustomFile('include/models/class-wc-retailcrm-customer-switcher-state.php'));
require_once(self::checkCustomFile('include/models/class-wc-retailcrm-customer-switcher-result.php'));
require_once(self::checkCustomFile('include/components/class-wc-retailcrm-logger.php'));
require_once(self::checkCustomFile('include/components/class-wc-retailcrm-history-assembler.php'));
require_once(self::checkCustomFile('include/components/class-wc-retailcrm-paginated-request.php'));
require_once(self::checkCustomFile('include/components/class-wc-retailcrm-customer-switcher.php'));
require_once(self::checkCustomFile('include/abstracts/class-wc-retailcrm-abstract-builder.php'));
require_once(self::checkCustomFile('include/abstracts/class-wc-retailcrm-abstracts-settings.php'));
require_once(self::checkCustomFile('include/abstracts/class-wc-retailcrm-abstracts-data.php'));
require_once(self::checkCustomFile('include/abstracts/class-wc-retailcrm-abstracts-address.php'));
require_once(self::checkCustomFile('include/customer/woocommerce/class-wc-retailcrm-wc-customer-builder.php'));
require_once(self::checkCustomFile('include/order/class-wc-retailcrm-order.php'));
require_once(self::checkCustomFile('include/order/class-wc-retailcrm-order-payment.php'));
require_once(self::checkCustomFile('include/order/class-wc-retailcrm-order-item.php'));
require_once(self::checkCustomFile('include/order/class-wc-retailcrm-order-address.php'));
require_once(self::checkCustomFile('include/customer/class-wc-retailcrm-customer-address.php'));
require_once(self::checkCustomFile('include/customer/class-wc-retailcrm-customer-corporate-address.php'));
require_once(self::checkCustomFile('include/class-wc-retailcrm-icml.php'));
require_once(self::checkCustomFile('include/class-wc-retailcrm-orders.php'));
require_once(self::checkCustomFile('include/class-wc-retailcrm-customers.php'));
require_once(self::checkCustomFile('include/class-wc-retailcrm-inventories.php'));
require_once(self::checkCustomFile('include/class-wc-retailcrm-history.php'));
require_once(self::checkCustomFile('include/class-wc-retailcrm-ga.php'));
require_once(self::checkCustomFile('include/class-wc-retailcrm-daemon-collector.php'));
require_once(self::checkCustomFile('include/class-wc-retailcrm-base.php'));
require_once(self::checkCustomFile('include/functions.php'));
}
/**
* Check custom file
*
* @param string $file
*
* @return string
*/
public static function checkCustomFile($file)
{
$wooPath = WP_PLUGIN_DIR . '/woo-retailcrm/' . $file;
$withoutInclude = WP_CONTENT_DIR . '/retailcrm-custom/' . str_replace('include/', '', $file);
if (file_exists($withoutInclude)) {
return $withoutInclude;
}
if (file_exists($wooPath)) {
return $wooPath;
}
return dirname(__FILE__) . '/' . $file;
}
/**
* 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();
add_action('plugins_loaded', array('WC_Integration_Retailcrm', 'get_instance'), 0);
endif;