Commit 69a82945 authored by Reinhold Kainhofer's avatar Reinhold Kainhofer

Code generalization, mainly in connection with invoice numbers for other plugins

-) Add filters to query whether a third-party plugin claims responsibility for invoice numbers
-) Add filter to get the configuration link for this plugin
-) Move all configuration / documentation links to a class-wide property to avoide duplication
-) Generic function to check whether order/invoice numbers are enabled
parent 68f5e2aa
......@@ -330,7 +330,7 @@ class OpenToolsOrdernumbers extends OpenToolsOrdernumbersBasic {
}
function thirdparty_get_invoicenumber($default, $orderid) {
if (get_option('customize_invoice', 'no')!='no') {
if ($this->invoicenumbers_activated()) {
$_of = new WC_Order_Factory();
$order = $_of->get_order($orderid);
$number = $this->get_or_create_number($orderid, $order, 'invoice');
......@@ -381,7 +381,7 @@ class OpenToolsOrdernumbers extends OpenToolsOrdernumbersBasic {
* The action to actually create the number and store it as post meta with the order
*/
function thirdparty_wpo_wcpdf_create_number($type, $orderid) {
if ($type=='invoice' && (get_option('customize_'.$type, 'no')!='no') ) {
if ($type=='invoice' && $this->invoicenumbers_activated() ) {
$_of = new WC_Order_Factory();
$order = $_of->get_order($orderid);
$number = $this->get_or_create_number($orderid, $order, $type);
......@@ -398,11 +398,12 @@ class OpenToolsOrdernumbers extends OpenToolsOrdernumbersBasic {
*/
function thirdparty_wpo_wcpdf_remove_options() {
global $wp_settings_fields;
if (get_option('customize_invoice', 'no')!='no') {
if ($this->invoicenumbers_activated()) {
$wp_settings_fields['wpo_wcpdf_template_settings']['invoice']['display_number']['title'] = $this->helper->__('Display invoice number');
$wp_settings_fields['wpo_wcpdf_template_settings']['invoice']['display_number']['args']['description'] = $this->helper->__('The <a href="admin.php?page=wc-settings&tab=checkout&section=ordernumber">Open Tools Ordernumber plugin</a> has invoice numbers enabled and will generate invoice numbers for this plugin.' );
unset($wp_settings_fields['wpo_wcpdf_template_settings']['invoice']['next_invoice_number']);
unset($wp_settings_fields['wpo_wcpdf_template_settings']['invoice']['invoice_number_formatting']);
unset($wp_settings_fields['wpo_wcpdf_template_settings']['invoice']['yearly_reset_invoice_number']);
} else {
$wp_settings_fields['wpo_wcpdf_template_settings']['invoice']['display_number']['args']['description'] = $this->helper->__('To let the Open Tools ordernumber plugin create invoice numbers with your desired format, please enable invoices in <a href="admin.php?page=wc-settings&tab=checkout&section=ordernumber">that plugin\'s configuration page</a>.' );
}
......@@ -430,7 +431,7 @@ class OpenToolsOrdernumbers extends OpenToolsOrdernumbersBasic {
// TODO: Modify the invoice number section text to hint at the installed order number plugin and how to enable it!
global $wp_settings_fields;
return;
if (get_option('customize_invoice', 'no')!='no') {
if ($this->invoicenumbers_activated()) {
// bewpi_template_settings -> invoice_number ->
// -) bewpi_invoice_number_type
// -) bewpi_reset_counter
......
......@@ -18,6 +18,11 @@ class OpenToolsOrdernumbersBasic {
public $ordernumber_meta = "_oton_number_";
public $ordernumber_new_placeholder = "[New Order]";
public $plugin_basename = '';
public $plugin_config_link = 'admin.php?page=wc-settings&tab=checkout&section=ordernumber';
public $plugin_url = 'https://wordpress.org/plugins/woocommerce-basic-ordernumbers/';
public $plugin_url_advanced = 'http://open-tools.net/woocommerce/advanced-ordernumbers-for-woocommerce.html';
public $plugin_url_docs = 'http://open-tools.net/documentation/advanced-order-numbers-for-woocommerce.html';
public $plugin_url_support = 'http://open-tools.net/support-forum/ordernumbers-for-woocommerce.html';
protected $helper = null;
protected $settings = array();
......@@ -51,6 +56,15 @@ class OpenToolsOrdernumbersBasic {
*/
protected function initializeHooks() {
$helper = OrdernumberHelperWooCommerce::getHelper();
// Information for other plugins
add_filter( 'opentools_ordernumbers_activated', array( &$this, 'ordernumbers_activated'));
add_filter( 'opentools_invoicenumbers_activated', array( &$this, 'invoicenumbers_activated'));
add_filter ('woocommerce_invoice_number_by_plugin', array( &$this, 'invoicenumbers_activated'));
add_filter ('woocommerce_order_number_by_plugin', array( &$this, 'ordernumbers_activated'));
add_filter ('woocommerce_invoice_number_configuration_link', array( &$this, 'invoicenumbers_config_link'));
add_filter ('woocommerce_order_number_configuration_link', array( &$this, 'ordernumbers_config_link'));
// CONFIGURATION SCREENS
add_filter( 'woocommerce_get_sections_checkout', array( &$this, 'add_admin_section'));
// The checkout settings page assumes all subpages are payment gateways, so we have to override this and manually pass our settings:
......@@ -107,7 +121,7 @@ class OpenToolsOrdernumbersBasic {
'desc_tip' => true,
'id' => 'opentools_ordernumbers_upgrade',
'type' => 'opentools_ordernumbers_upgrade',
'link' => 'http://open-tools.net/woocommerce/advanced-ordernumbers-for-woocommerce.html',
'link' => $this->plugin_url_advanced,
),
);
return $settings;
......@@ -116,7 +130,7 @@ class OpenToolsOrdernumbersBasic {
$settings = array();
$settings[] = array(
'name' => $this->helper->__( 'Configure Order Numbers'),
'desc' => $this->helper->__( 'Configure the format and the counters of the order numbers in WooCommerce. For help, check out the plugin\'s <a href="http://open-tools.net/documentation/advanced-order-numbers-for-woocommerce.html">documentation at OpenTools</a>.'),
'desc' => sprintf( $this->helper->__( 'Configure the format and the counters of the order numbers in WooCommerce. For help, check out the plugin\'s <a href="%s">documentation at OpenTools</a>.'), esc_attr($this->plugin_url_docs)),
'type' => 'title',
'id' => 'ordernumber_options'
);
......@@ -166,12 +180,42 @@ class OpenToolsOrdernumbersBasic {
protected function initializeSettingsOther() {
return array();
}
/**
* Filters for other plugins to get information about this one, e.g.
* indicating whether invoice/order numbers are to be created by this plugin
* and getting the link to the configuration page.
*/
public function numbers_activated($type) {
return (get_option('customize_'.$type, 'no')!='no');
}
public function ordernumbers_activated($default=false) {
return $this->numbers_activated('ordernumber');
}
public function invoicenumbers_activated($default=false) {
return $this->numbers_activated('invoice');
}
public function invoicenumbers_config_link($default=null) {
// if ($this->invoicenumbers_activated())
return $this->plugin_config_link;
// else
// return $default;
}
public function ordernumbers_config_link($default=null) {
// if ($this->invoicenumbers_activated())
return $this->plugin_config_link;
// else
// return $default;
}
/**
* Add settings link to plugins page
*/
public function ordernumber_add_settings_link( $links ) {
$link = '<a href="admin.php?page=wc-settings&tab=checkout&section=ordernumber">'. $this->helper->__( 'Settings' ) . '</a>';
$link = '<a href="'.esc_attr($this->plugin_config_link).'">'. $this->helper->__( 'Settings' ) . '</a>';
// Prepend the settings link:
array_unshift( $links, $link );
// $links['settings'] = $link;
......@@ -179,15 +223,15 @@ class OpenToolsOrdernumbersBasic {
}
public function ordernumber_plugin_row_meta( $links, $file ) {
if ($file==$this->plugin_basename) {
$links['docs'] = '<a href="' . esc_url( 'http://open-tools.net/documentation/advanced-order-numbers-for-woocommerce.html' ) . '" title="' . esc_attr( $this->helper->__( 'Plugin Documentation' ) ) . '">' . $this->helper->__( 'Plugin Documentation' ) . '</a>';
$links['support'] = '<a href="' . esc_url( 'http://open-tools.net/support-forum/ordernumbers-for-woocommerce.html' ) . '" title="' . esc_attr( $this->helper->__( 'Support Forum' ) ) . '">' . $this->helper->__( 'Support Forum' ) . '</a>';
$links['docs'] = '<a href="' . esc_url( $this->plugin_url_docs ) . '" title="' . esc_attr( $this->helper->__( 'Plugin Documentation' ) ) . '">' . $this->helper->__( 'Plugin Documentation' ) . '</a>';
$links['support'] = '<a href="' . esc_url( $this->plugin_url_support ) . '" title="' . esc_attr( $this->helper->__( 'Support Forum' ) ) . '">' . $this->helper->__( 'Support Forum' ) . '</a>';
}
return (array)$links;
}
public function basic_ordernumber_plugin_row_meta( $links, $file ) {
if ($file==$this->plugin_basename && !$this->is_advanced) {
$links['advanced'] = '<a href="' . esc_url( 'http://open-tools.net/woocommerce/advanced-ordernumbers-for-woocommerce.html' ) . '" title="' . esc_attr( $this->helper->__('Purchase Advanced Version')) . '">' . $this->helper->__('Purchase Advanced Version') . '</a>';
$links['advanced'] = '<a href="' . esc_url( $this->plugin_url_advanced ) . '" title="' . esc_attr( $this->helper->__('Purchase Advanced Version')) . '">' . $this->helper->__('Purchase Advanced Version') . '</a>';
}
return (array)$links;
}
......@@ -383,7 +427,7 @@ class OpenToolsOrdernumbersBasic {
}
function generateNumber($orderid, $order, $type='ordernumber') {
if (get_option('customize_'.$type, 'no')!='no') {
if ($this->numbers_activated($type)) {
$fmt = get_option ($type.'_format', "#");
$ctrsettings = array(
"${type}_format" => '',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment