<?php
/*
Plugin Name: WooCommerce Attach Me!
Description: WCAM allows the shop admin to attach any file to any order and any product!
Author: Lagudi Domenico
Text Domain: woocommerce-attach-me
Domain Path: /languages/
Version: 26.9
WC requires at least: 6.5.0
WC tested up to: 13.0.0
Copyright: WooCommerce Attach Me! uses the ACF PRO plugin. ACF PRO files are not to be used or distributed outside of the WooCommerce Attach Me! plugin.
*/
define('wcam_PLUGIN_PATH', rtrim(plugin_dir_url(__FILE__), "/") ) ;
define('WCAM_PLUGIN_ABS_PATH', dirname( __FILE__ ) );
add_action( 'before_woocommerce_init', function() {
if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
\Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
}
} );
if ( !defined('WP_CLI') && ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ||
(is_multisite() && array_key_exists( 'woocommerce/woocommerce.php', get_site_option('active_sitewide_plugins') ))
)
)
{
if(isset($_POST['action']) && $_POST['action'] == 'edit-theme-plugin-file')
return;
if(isset($_REQUEST ['context']) && $_REQUEST['context'] == 'edit') //rest api
return;
if(isset($_POST['action']) && strpos($_POST['action'], 'health-check') !== false) //health check
return;
if(isset($_REQUEST['is_admin'])) //Fixes and uncompability with Project Manager plugin
return;
$wcam_id = 11975229;
$wcam_name = "WooCommerce Attach Me!";
$wcam_activator_slug = "wcam-activator";
include_once( "classes/com/WCAM_Acf.php");
include_once( "classes/com/WCAM_Globals.php");
require_once('classes/vendor/vanquish/admin/ActivationPage.php');
add_action('init', 'wcam_wp_init');
add_action('admin_notices', 'wcam_admin_notices' );
add_action('admin_menu', 'wcam_init_act');
if(defined('DOING_AJAX') && DOING_AJAX)
wcam_init_act();
}
function wcam_admin_notices()
{
global $lcam2, $wcam_name, $wcam_activator_slug;
if($lcam2 && (!isset($_GET['page']) || $_GET['page'] != $wcam_activator_slug))
{
?>
<div class="notice notice-success">
<p><?php wcam_html_escape_allowing_special_tags(sprintf(__( 'To complete the <span style="color:#96588a; font-weight:bold;">%s</span> plugin activation, you must verify your purchase license. Click <a href="%s">here</a> to verify it.', 'woocommerce-attach-me' ), $wcam_name, get_admin_url()."admin.php?page=".$wcam_activator_slug)); ?></p>
</div>
<?php
}
}
function wcam_wp_init()
{
if(current_user_can('administrator') && isset($_GET['wcam_reset_license']))
{
delete_option("_".$wcam_id);
delete_option("_".$wcam_id."_purchase_code");
}
load_plugin_textdomain('woocommerce-attach-me', false, basename( dirname( __FILE__ ) ) . '/languages' );
if ( ! function_exists( 'wp_handle_upload' ) ) {
require_once( ABSPATH . 'wp-admin/includes/file.php' );
}
if(!class_exists('WCAM_Notifier'))
{
require_once('classes/com/WCAM_Notifier.php');
$wcam_notifier = new WCAM_Notifier();
}
}
function wcam_init_act()
{
global $wcam_activator_slug, $wcam_name, $wcam_id;
new WCAM\vendor\vanquish\admin\ActivationPage($wcam_activator_slug, $wcam_name, 'woocommerce-attach-me', $wcam_id, wcam_PLUGIN_PATH);
}
function wcam_eu()
{
global $woocommerce_order_addon, $wcam_email_attachments_configurator, $wcam_email_preset_texts_configurator, $wcam_bulk_products_attachments_configurator,
$wcam_order_table_addon, $wcam_product_table_addon, $wcam_file_model, $wcam_order_model, $wcam_product_model, $wcam_shortcode_model, $wcam_customer_model,
$wcam_bulk_products_attachments_options, $wcam_woocommerce_order_details_addon, $wcam_my_account_page, $wcam_downloads_page, $wcam_product_page, $wcam_time_model, $wcam_html_model;
//Admin
if(!class_exists('WCAM_OrderAddon'))
{
require_once('classes/admin/WCAM_OrderAddon.php');
$woocommerce_order_addon = new WCAM_OrderAddon();
}
if(!class_exists('WCAM_EmailsAttachmentsConfigurator'))
{
require_once('classes/admin/WCAM_EmailsAttachmentsConfigurator.php');
$wcam_email_attachments_configurator = new WCAM_EmailsAttachmentsConfigurator();
}
if(!class_exists('WCAM_EmailsPresetTextsConfigurator'))
{
require_once('classes/admin/WCAM_EmailsPresetTextsConfigurator.php');
$wcam_email_preset_texts_configurator = new WCAM_EmailsPresetTextsConfigurator();
}
if(!class_exists('WCAM_BulkProductsAttachmentsConfigurator'))
{
require_once('classes/admin/WCAM_BulkProductsAttachmentsConfigurator.php');
$wcam_bulk_products_attachments_configurator = new WCAM_BulkProductsAttachmentsConfigurator();
}
if(!class_exists('WCAM_OrdersTableAddon'))
{
require_once('classes/admin/WCAM_OrdersTableAddon.php');
$wcam_order_table_addon = new WCAM_OrdersTableAddon();
}
if(!class_exists('WCAM_ProductTablePage'))
{
require_once('classes/admin/WCAM_ProductTablePage.php');
$wcam_product_table_addon = new WCAM_ProductTablePage();
}
//Com
require_once('classes/vendor/vanquish/com/Updater.php');
new WCAM\vendor\vanquish\com\Updater();
if(!class_exists('WCAM_Wpml'))
{
require_once('classes/com/WCAM_Wpml.php');
}
if(!class_exists('WCAM_File'))
{
require_once('classes/com/WCAM_File.php');
$wcam_file_model = new WCAM_File();
}
if(!class_exists('WCAM_Order'))
{
require_once('classes/com/WCAM_Order.php');
$wcam_order_model = new WCAM_Order();
}
if(!class_exists('WCAM_Product'))
{
require_once('classes/com/WCAM_Product.php');
$wcam_product_model = new WCAM_Product();
}
if(!class_exists('WCAM_Shortcode'))
{
require_once('classes/com/WCAM_Shortcode.php');
$wcam_shortcode_model = new WCAM_Shortcode();
}
if(!class_exists('WCAM_Customer'))
{
require_once('classes/com/WCAM_Customer.php');
$wcam_customer_model = new WCAM_Customer();
}
if(!class_exists('WCAM_Email'))
require_once('classes/com/WCAM_Email.php');
if(!class_exists('WCAM_Option'))
require_once('classes/com/WCAM_Option.php');
if(!class_exists('WCAM_BulkProductsAttachments'))
{
require_once('classes/com/WCAM_BulkProductsAttachments.php');
$wcam_bulk_products_attachments_options = new WCAM_BulkProductsAttachments();
}
if(!class_exists('WCAM_Time'))
{
require_once('classes/com/WCAM_Time.php');
$wcam_time_model = new WCAM_Time();
}
if(!class_exists('WCAM_HTML'))
{
require_once('classes/com/WCAM_HTML.php');
$wcam_html_model = new WCAM_HTML();
}
//Frontend
if(!class_exists('WCAM_OrderDetailsAddon'))
{
require_once('classes/frontend/WCAM_OrderDetailsAddon.php');
$wcam_woocommerce_order_details_addon = new WCAM_OrderDetailsAddon();
}
if(!class_exists('WCAM_MyAccountPage'))
{
require_once('classes/frontend/WCAM_MyAccountPage.php');
$wcam_my_account_page = new WCAM_MyAccountPage();
}
if(!class_exists('WCAM_DownloadsPage'))
{
require_once('classes/frontend/WCAM_DownloadsPage.php');
$wcam_downloads_page = new WCAM_DownloadsPage();
}
if(!class_exists('WCAM_ProductPage'))
{
require_once('classes/frontend/WCAM_ProductPage.php');
$wcam_product_page = new WCAM_ProductPage();
}
add_action('admin_init', 'wcam_register_settings');
add_action('admin_menu', 'wcam_init_admin_panel');
}
function wcam_register_settings()
{
register_setting('wcam_general_options_group','wcam_general_options');
}
function wcam_init_admin_panel()
{
if(!current_user_can('manage_woocommerce'))
return;
$place = $place = wcam_get_free_menu_position(55, 0.1);
add_menu_page( esc_html__( 'Attach Me!', 'woocommerce-attach-me' ), esc_html__( 'Attach Me!', 'woocommerce-attach-me' ), 'manage_woocommerce', 'woocommerce-attach-me', null, wcam_PLUGIN_PATH."/images/icon-clip.png", (string)$place );
add_submenu_page('woocommerce-attach-me', esc_html__('General options & texts','woocommerce-attach-me'), esc_html__('General options & texts','woocommerce-attach-me'), 'edit_shop_orders', 'woocommerce-attach-me-options', 'wcam_render_options_page');
remove_submenu_page( 'woocommerce-attach-me', 'woocommerce-attach-me');
add_filter('plugin_action_links_woocommerce-attach-me/attach-me.php', 'wcam_manage_plugin_actions_links');
}
function wcam_manage_plugin_actions_links($links)
{
$url = esc_url( add_query_arg(
'wcam_reset_license',
'true',
get_admin_url()
) );
// Create the link.
$settings_link = "<a href='$url' onclick='return confirm(\"".esc_html__('Are you sure?','woocommerce-attach-me')."\");'>" . esc_html__('Reset activation','woocommerce-attach-me') . '</a>';
// Adds the link to the end of the array.
array_push(
$links,
$settings_link
);
return $links;
}
function wcam_render_options_page()
{
if(!class_exists('WCAM_Options'))
require_once('classes/admin/WCAM_Options.php');
$page = new WCAM_Options();
$page->render_page();
}
function wcam_render_bulk_import_page()
{
if(!class_exists('WCAM_BulkAttach'))
require_once('classes/admin/WCAM_BulkAttach.php');
$page = new WCAM_BulkAttach();
$page->render_page();
}
function wcam_get_free_menu_position($start, $increment = 0.1)
{
foreach ($GLOBALS['menu'] as $key => $menu) {
$menus_positions[] = $key;
}
if (!in_array($start, $menus_positions)) return $start;
/* the position is already reserved find the closet one */
while (in_array($start, $menus_positions))
{
$start += $increment;
}
return $start;
}
?>