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); } }