From b46a244020d604621ca6f01d36916906d26e833c Mon Sep 17 00:00:00 2001
From: Reinhold Kainhofer <reinhold@kainhofer.com>
Date: Sun, 12 Apr 2015 02:20:37 +0200
Subject: [PATCH] Some fixes for the settings page, etc.

---
 templates/settings.php                | 10 ++---
 woocommerce-advanced-ordernumbers.php | 54 +++++++++++++--------------
 2 files changed, 31 insertions(+), 33 deletions(-)

diff --git a/templates/settings.php b/templates/settings.php
index 8016f52..3c56208 100644
--- a/templates/settings.php
+++ b/templates/settings.php
@@ -1,13 +1,13 @@
 <div class="wrap">
-    <h2>OpenTools Advanced ordernumbers</h2>
+    <h2>OpenTools Advanced Ordernumbers</h2>
     <form method="post" action="options.php"> 
-        <?php @settings_fields('create_ordernumber-group'); ?>
-        <?php @do_settings_fields('create_ordernumber-group'); ?>
+        <?php @settings_fields('create_ordernumbers-group'); ?>
+        <?php @do_settings_fields('create_ordernumbers-group'); ?>
 
         <table class="form-table">  
             <tr valign="top">
-                <th scope="row"><label for="customize_ordernumber">Customize Order Numbers</label></th>
-                <td><input type="text" name="customize_ordernumber" id="customize_ordernumber" value="<?php echo get_option('customize_ordernumber'); ?>" /></td>
+                <th scope="row"><label for="customize_ordernumbers">Customize Order Numbers</label></th>
+                <td><input type="text" name="customize_ordernumbers" id="customize_ordernumbers" value="<?php echo get_option('customize_ordernumbers'); ?>" /></td>
             </tr>
             <tr valign="top">
                 <th scope="row"><label for="ordernumber_format">Order Number Format</label></th>
diff --git a/woocommerce-advanced-ordernumbers.php b/woocommerce-advanced-ordernumbers.php
index 00d847a..1b80fd7 100644
--- a/woocommerce-advanced-ordernumbers.php
+++ b/woocommerce-advanced-ordernumbers.php
@@ -27,7 +27,7 @@ if ( ! defined( 'ABSPATH' ) ) {
 if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
     // Put your plugin code here
     // Load the language files
-	load_plugin_textdomain('your-unique-name', false, basename( dirname( __FILE__ ) ) . '/languages' );
+	load_plugin_textdomain('opentools-ordernumbers', false, basename( dirname( __FILE__ ) ) . '/languages' );
 
 	if (!class_exists("OpenToolsOrdernumbers")) {
 		class OpenToolsOrdernumbers {
@@ -36,10 +36,13 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
 			 */
 			public function __construct()
 			{
-				add_action ('woocommerce_order_number', array(&$this, 'get_ordernumber'));
-				add_action( 'admin_init', array(&$this, 'admin_init'));
-				add_action( 'admin_menu', array(&$this, 'admin_menu'));
+				$plugin = plugin_basename(__FILE__); 
 				// register actions
+				add_action( 'admin_init', array(&$this, 'admin_init'));
+				add_action( 'admin_menu', array(&$this, 'add_menu'));
+				// register filters
+				add_filter("plugin_action_links_$plugin", array(&$this, 'plugin_settings_link'));
+				add_filter ('woocommerce_order_number', array(&$this, 'get_ordernumber'), 10, 2/*<= Also get the order object! */);
 			}
     
 			/**
@@ -74,9 +77,10 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
 			public function init_settings()
 			{
 				// register the settings for this plugin
-				register_setting('opentools-ordernumber-group', 'customize_ordernumber');
-				register_setting('opentools-ordernumber-group', 'ordernumber_format');
-				register_setting('opentools-ordernumber-group', 'ordernumber_counter_scope');
+				// TODO: Properly design the set of options needed
+				register_setting('opentools-ordernumbers-group', 'customize_ordernumbers');
+				register_setting('opentools-ordernumbers-group', 'ordernumber_format');
+				register_setting('opentools-ordernumbers-group', 'ordernumber_counter_scope');
 			}
 			
 			/**
@@ -84,19 +88,27 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
 			 */     
 			public function add_menu()
 			{
+				// TODO: Move this inside the WooCommerce configuration!
 				add_options_page('Advanced Ordernumber Plugin Settings', 'OpenTools Advanced Ordernumbers', 
 					'manage_options', 'opentools-ordernumbers', array(&$this, 'plugin_settings_page'));
 			} // END public function add_menu()
 
+			function plugin_settings_link($links)
+			{ 
+				$settings_link = '<a href="options-general.php?page=opentools-ordernumbers">Settings</a>'; 
+				array_unshift($links, $settings_link); 
+				return $links; 
+			}
+
 			/**
 			 * Menu Callback
-			 */     
+			 */
 			public function plugin_settings_page()
 			{
-// 				if(!current_user_can('manage_options'))
-// 				{
-// 					wp_die(__('You do not have sufficient permissions to access this page.'));
-// 				}
+				if(!current_user_can('manage_options'))
+				{
+					wp_die(__('You do not have sufficient permissions to access this page.'));
+				}
 
 				// Render the settings template
 				include(sprintf("%s/templates/settings.php", dirname(__FILE__)));
@@ -108,13 +120,13 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
 			 * The hook to customize order numbers (requests the order number from the database; creates a new ordernumber if no entry exists in the database)
 			 */
 			function get_ordernumber($orderid, $order) {
-				$stored_number = get_post_meta( $orderid, 'ordernumber', 'true');
+				$stored_number = get_post_meta( $orderid, 'Order Number', 'true');
 				if (!empty($stored_number)) {
 					return $stored_number;
 				} else {
 					// create a new one (if this is a new order, otherwise we don't have/generate a number!)
 					$number = $this->create_ordernumber($orderid, $order);
-					update_post_meta( $orderid, 'ordernumber', $number );
+					update_post_meta( $orderid, 'Order Number', $number );
 					return $number;
 				}
 			}
@@ -134,20 +146,6 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
 
 		// instantiate the plugin class
 		$ordernumber_plugin = new OpenToolsOrdernumbers();
-		
-		// Add a link to the settings page onto the plugin page
-		if(isset($ordernumber_plugin)) {
-			// Add the settings link to the plugins page
-			function plugin_settings_link($links)
-			{ 
-				$settings_link = '<a href="options-general.php?page=wp_plugin_template">Settings</a>'; 
-				array_unshift($links, $settings_link); 
-				return $links; 
-			}
-
-			$plugin = plugin_basename(__FILE__); 
-			add_filter("plugin_action_links_$plugin", 'plugin_settings_link');
-		}	
 	}
  
 }
-- 
GitLab