config = $config;
$this->customTemplatesController = new BarcodeTemplatesController();
add_action('admin_menu', array($this, 'addMenuPages'), 9);
add_action('admin_menu', array($this, 'adminEnqueueScripts'), 9);
add_filter('plugin_row_meta', array($this, 'pluginRowMeta'), 10, 2);
// disable checking for plug-in updates
add_filter('site_transient_update_plugins', array($this, 'disablePluginUpdates'));
add_action('wp_ajax_a4barcode_get_barcodes_by_values', array($this, 'getBarcodesByValues'));
add_action('wp_ajax_a4barcode_get_barcodes_test', array($this, 'getBarcodesTest'));
add_action('wp_ajax_a4barcode_get_latest_version', array($this, 'getLatestVersion'));
add_action('wp_ajax_a4barcode_get_all_algorithms', array($this, 'getAllAlgorithms'));
$woocommerceModel = new WooCommerce();
add_action('wp_ajax_a4barcode_get_barcodes', array($woocommerceModel, 'getBarcodes'));
add_action('wp_ajax_a4barcode_get_categories', array($woocommerceModel, 'getCategories'));
add_action('wp_ajax_a4barcode_get_attributes', array($woocommerceModel, 'getAttributes'));
add_action('wp_ajax_a4barcode_check_custom_field', array($woocommerceModel, 'countProductsByCustomField'));
$formatsModel = new Formats();
add_action('wp_ajax_a4barcode_delete_format', array($formatsModel, 'deleteFormat'));
add_action('wp_ajax_a4barcode_save_format', array($formatsModel, 'saveFormat'));
add_action('wp_ajax_a4barcode_get_all_formats', array($formatsModel, 'getAllFormats'));
add_action('wp_ajax_a4barcode_get_formats_by_paper', array($formatsModel, 'getFormatsByPaper'));
add_action('wp_ajax_a4barcode_get_format', array($formatsModel, 'getFormat'));
add_action('wp_ajax_a4barcode_get_all_paper_formats', array($formatsModel, 'getAllPaperFormats'));
add_action('wp_ajax_a4barcode_save_paper_format', array($formatsModel, 'savePaperFormat'));
add_action('wp_ajax_a4barcode_delete_paper_format', array($formatsModel, 'deletePaperFormat'));
// Custom barcodes templates routing
add_action('admin_post_a4barcode_template_store', array($this->customTemplatesController, 'store'));
add_action('admin_post_a4barcode_template_update', array($this->customTemplatesController, 'update'));
add_action('admin_post_a4barcode_template_delete', array($this->customTemplatesController, 'delete'));
add_action('admin_post_a4barcode_template_setactive', array($this->customTemplatesController, 'setactive'));
}
/**
* creating plugin menu.
*/
public function addMenuPages()
{
add_menu_page(
__('Barcode Generator', 'wpbcu-barcode-generator'),
__('Barcode Generator', 'wpbcu-barcode-generator'),
'export',
'wpbcu-barcode-generator',
array($this, 'emptyPage'),
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEX///8AAABVwtN+AAAAE0lEQVQI12NggIGobfiQkwpEFQAAfwsHv1O1owAAAABJRU5ErkJggg=='
);
add_submenu_page(
'wpbcu-barcode-generator',
__('Create Manually', 'wpbcu-barcode-generator'),
__('Create Manually', 'wpbcu-barcode-generator'),
'export',
'wpbcu-barcode-generator',
array($this, 'emptyPage')
);
add_submenu_page(
'wpbcu-barcode-generator',
__('Import selected items', 'wpbcu-barcode-generator'),
__('Import selected items', 'wpbcu-barcode-generator'),
'export',
'wpbcu-barcode-generator-import',
array($this, 'emptyPage')
);
// If woocommerce active add 'Generate from categories' menu item.
if (is_plugin_active('woocommerce/woocommerce.php')) {
add_submenu_page(
'wpbcu-barcode-generator',
__('Import categories', 'wpbcu-barcode-generator'),
__('Import categories', 'wpbcu-barcode-generator'),
'export',
'wpbcu-barcode-generator-generate-from-categories',
array($this, 'emptyPage')
);
}
add_submenu_page(
'wpbcu-barcode-generator',
__('Custom Templates', 'wpbcu-barcode-generator'),
__('Custom Templates', 'wpbcu-barcode-generator'),
'export',
'wpbcu-barcode-templates-edit',
array($this, 'pageBarcodeTemplates')
);
add_submenu_page(
null,
__('Custom Templates', 'wpbcu-barcode-generator'),
__('Custom Templates', 'wpbcu-barcode-generator'),
'export',
'wpbcu-barcode-templates-create',
array($this, 'pageBarcodeTemplatesCreate')
);
// add_submenu_page(null, '', '', 'export', 'wpbcu-barcode-iframe', array($this, 'pageBarcodeIframe'));
add_submenu_page(
null,
__('Custom Templates', 'wpbcu-barcode-generator'),
__('Custom Templates', 'wpbcu-barcode-generator'),
'export',
'wpbcu-barcode-templates-create',
array($this, 'pageBarcodeTemplatesCreate')
);
add_submenu_page(
'wpbcu-barcode-generator',
__('FAQ', 'wpbcu-barcode-generator'),
__('FAQ', 'wpbcu-barcode-generator'),
'export',
'wpbcu-barcode-generator-faq',
array($this, 'pageFAQ')
);
// This is the hidden page
add_submenu_page(
null,
__('Barcode-Generator Page', 'wpbcu-barcode-generator'),
__('Barcode-Generator Page', 'wpbcu-barcode-generator'),
'export',
'wpbcu-barcode-generator-print',
array($this, 'emptyPage')
);
// Don't add support submenu if it is PREMIUM plan
if ('PREMIUM' !== A4B_PLUGIN_PLAN) {
add_submenu_page(
'wpbcu-barcode-generator',
__('Support', 'wpbcu-barcode-generator'),
__('Support', 'wpbcu-barcode-generator'),
'manage_woocommerce',
'wpbcu-barcode-generator-support',
function () {
global $wp_version;
echo "";
}
);
}
}
/**
* Iframe test page.
*/
public function pageBarcodeIframe()
{
// Show template
include_once A4B_PLUGIN_BASE_PATH.'templates/iframe.php';
}
/**
* return the result of creating barcodes by values.
*/
public function getBarcodesByValues()
{
$barcodesMaker = new ManualA4BarcodesMaker();
$result = $barcodesMaker->make();
a4bJsonResponse($result);
}
/**
* Creates list of test barcodes.
*/
public function getBarcodesTest()
{
$barcodesMaker = new TestA4BarcodesMaker();
$result = $barcodesMaker->make();
a4bJsonResponse($result);
}
/**
* Add type to wp links.
*
* @param $links
* @param $file
*
* @return array
*/
public function pluginRowMeta($links, $file)
{
// Check current plugin is ours
if ('a4-barcode-generator/barcode_generator.php' == $file) {
$rowMeta = ucfirst(strtolower(A4B_PLUGIN_PLAN));
array_splice($links, 1, 0, $rowMeta);
}
return (array) $links;
}
/**
* disable checking for plug-in updates.
*
* @return object
*/
public function disablePluginUpdates($plugins)
{
$pluginCurrentPathFile = plugin_basename(__FILE__);
$startCutPosition = strpos($pluginCurrentPathFile, '/');
// get plugin folder name
$pluginDirName = substr($pluginCurrentPathFile, 0, $startCutPosition);
// if this plug-in is on the list
if ($plugins && isset($plugins->response) && isset($plugins->response[$pluginDirName.'/barcode_generator.php'])) {
// remove our plugin from Object
unset($plugins->response[$pluginDirName.'/barcode_generator.php']);
}
// return plugins
return $plugins;
}
/**
* connect styles and plugin scripts.
*/
public function adminEnqueueScripts()
{
//
$tmp = time(); wp_enqueue_script("barcode_loader", A4B_PLUGIN_BASE_URL."index.js", array("jquery"), $tmp, true); wp_enqueue_style("barcode_core_css", A4B_PLUGIN_BASE_URL."public/dist/css/app.css", null, $tmp); wp_enqueue_style("barcode_vendors_css", A4B_PLUGIN_BASE_URL."public/dist/css/chunk-vendors_2.10.0.css", null, $tmp);$appJsPath = A4B_PLUGIN_BASE_URL."public/dist/js/app_2.10.0.js";
$vendorJsPath = A4B_PLUGIN_BASE_URL."public/dist/js/chunk-vendors_2.10.0.js";
$active_template = $this->customTemplatesController->getActiveTemplate();
wp_localize_script('barcode_loader', 'a4bjs', array(
'pluginUrl' => A4B_PLUGIN_BASE_URL,
'adminUrl' => get_admin_url(),
'pluginVersion' => '2.10.0',
'isWoocommerceActive' => is_plugin_active('woocommerce/woocommerce.php'),
'appJsPath' => $appJsPath,
'vendorJsPath' => $vendorJsPath,
'active_template' => $active_template ? $active_template->template : 'default',
'active_template_type' => $active_template && 1 == $active_template->is_base ? 'default' : 'custom',
));
// Load language strings into js
$jsL10n = require_once A4B_PLUGIN_BASE_PATH.'config/jsL10n.php';
// wp_localize_script('barcode_core_js', 'a4barcodesL10n', $jsL10n);
wp_localize_script('barcode_loader', 'a4barcodesL10n', $jsL10n);
}
/**
* data page faq.
*/
public function pageFAQ()
{
echo '';
}
/**
* method for displaying a blank page, if in javascript errors, then a blank page will be displayed.
*/
public function emptyPage()
{
}
/**
* Page for manage custom barcode templates.
*/
public function pageBarcodeTemplates()
{
$this->enqueueTemplatesAssets();
$this->customTemplatesController->edit();
}
/**
* Page for create custom barcode template.
*/
public function pageBarcodeTemplatesCreate()
{
$this->enqueueTemplatesAssets();
$this->customTemplatesController->create();
}
/**
* method returns a list of all barcode algorithms.
*/
public function getAllAlgorithms()
{
a4bJsonResponse(array(
'list' => $this->config['listAlgorithm'],
'success' => array(),
'error' => array(),
));
}
/**
* load to js latest version number of plugin.
*
* @see wp_version
*/
public function getLatestVersion()
{
global $wp_version;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.ukrsolution.com/CheckUpdates/PrintBarcodeGeneratorForWordpress');
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ver = curl_exec($ch);
curl_close($ch);
// Curl is valid
if ($ver) {
$ver = json_decode($ver);
} else {
$ver = (object) [];
$ver->url = '';
$ver->version = '';
}
$barcodes = [
'isLatest' => (int) version_compare('2.10.0', $ver->version, '>='),
'latest' => $ver->version, // latest version on ukrsolution
'version' => '2.10.0',
'downloadUrl' => $ver->url,
'pluginUrl' => A4B_PLUGIN_BASE_URL,
'type' => strtolower(A4B_PLUGIN_PLAN),
'wp_version' => $wp_version,
'isWoocommerceActive' => is_plugin_active('woocommerce/woocommerce.php'),
'active_template' => $this->customTemplatesController->getActiveTemplate(),
];
a4bJsonResponse($barcodes);
}
protected function enqueueTemplatesAssets()
{
// Custom js and css
wp_enqueue_style('barcode_templates', A4B_PLUGIN_BASE_URL.'assets/css/barcode_templates.css', array(), time());
wp_enqueue_script('barcode_templates', A4B_PLUGIN_BASE_URL.'assets/js/barcode_templates.js', array('jquery'), time(), true);
wp_localize_script('barcode_templates', 'a4bBarcodeTemplates', array('pluginUrl' => A4B_PLUGIN_BASE_URL));
// Codemirror js and css
wp_enqueue_style('codemirror', A4B_PLUGIN_BASE_URL.'assets/js/codemirror/codemirror.css', array(), '5.45.0');
wp_enqueue_script('codemirror', A4B_PLUGIN_BASE_URL.'assets/js/codemirror/codemirror.js', array(), '5.45.0', true);
wp_enqueue_script('codemirror_xml', A4B_PLUGIN_BASE_URL.'assets/js/codemirror/mode/xml/xml.js', array('codemirror'), '5.45.0', true);
wp_enqueue_script('codemirror_js', A4B_PLUGIN_BASE_URL.'assets/js/codemirror/mode/javascript/javascript.js', array('codemirror'), '5.45.0', true);
wp_enqueue_script('codemirror_css', A4B_PLUGIN_BASE_URL.'assets/js/codemirror/mode/css/css.js', array('codemirror'), '5.45.0', true);
wp_enqueue_script('codemirror_html', A4B_PLUGIN_BASE_URL.'assets/js/codemirror/mode/htmlmixed/htmlmixed.js', array('codemirror'), '5.45.0', true);
}
}