From 5b2f363a408ebee5d10957a66e838431c47b2d91 Mon Sep 17 00:00:00 2001 From: Reinhold Kainhofer <reinhold@kainhofer.com> Date: Mon, 13 Jan 2014 12:31:33 +0100 Subject: [PATCH] Version 1.8.2: Fix some warnings about getting properties of non-objects --- Makefile | 2 +- ordernumber.php | 55 ++++++++++-------- ordernumber.script.php | 6 ++ ordernumber.xml | 6 +- releases/plg_vmshopper_ordernumber_v1.8.2.zip | Bin 0 -> 14672 bytes 5 files changed, 40 insertions(+), 29 deletions(-) create mode 100644 releases/plg_vmshopper_ordernumber_v1.8.2.zip diff --git a/Makefile b/Makefile index 4a8de4d..c99db71 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ BASE=ordernumber PLUGINTYPE=vmshopper -VERSION=1.8.1 +VERSION=1.8.2 PLUGINFILES=$(BASE).php $(BASE).script.php $(BASE).xml index.html diff --git a/ordernumber.php b/ordernumber.php index 38cd01c..7ad7753 100644 --- a/ordernumber.php +++ b/ordernumber.php @@ -2,7 +2,7 @@ /** * @package VirtueMart 2 OrderNumber plugin for Joomla! 2.5 * @author Reinhold Kainhofer, reinhold@kainhofer.com - * @copyright (C) 2012 - Reinhold Kainhofer + * @copyright (C) 2012-2014 - Reinhold Kainhofer * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html **/ @@ -88,42 +88,47 @@ class plgVmShopperOrdernumber extends vmShopperPlugin { "[ampm]" => date("a"), "[minute]" => date("i"), "[second]" => date("s"), - "[userid]" => $details->virtuemart_user_id, - "[vendorid]" => $details->virtuemart_vendor_id + "[userid]" => $details->virtuemart_user_id ); + if (isset($details->virtuemart_vendor_id)) $reps["[vendorid]"] = $details->virtuemart_vendor_id; + if ($nrtype==0 or $nrtype == 1) { // Order nr and Invoice nr - $reps["[ipaddress]"] = $details->ip_address; + if (isset($details->ip_address)) $reps["[ipaddress]"] = $details->ip_address; } if ($nrtype==1 or $nrtype==2) { // Invoice nr and Customer nr - $reps["[email]"] = $details->email; - $reps["[title]"] = $details->title; - $reps["[firstname]"] = $details->first_name; - $reps["[middlename]"] = $details->middle_name; - $reps["[lastname]"] = $details->last_name; - - $reps["[company]"] = $details->company; - $reps["[zip]"] = $details->zip; - $reps["[city]"] = $details->city; + if (isset($details->email)) $reps["[email]"] = $details->email; + if (isset($details->title)) $reps["[title]"] = $details->title; + if (isset($details->first_name)) $reps["[firstname]"] = $details->first_name; + if (isset($details->middle_name)) $reps["[middlename]"] = $details->middle_name; + if (isset($details->last_name)) $reps["[lastname]"] = $details->last_name; + + if (isset($details->company)) $reps["[company]"] = $details->company; + if (isset($details->zip)) $reps["[zip]"] = $details->zip; + if (isset($details->city)) $reps["[city]"] = $details->city; - $reps["[countryid]"] = $details->virtuemart_country_id; - $country = $this->getCountryFromID ($details->virtuemart_country_id); - $reps["[country]"] = $country->country_name; - $reps["[countrycode2]"] = $country->country_2_code; - $reps["[countrycode3]"] = $country->country_3_code; + if (isset($details->virtuemart_country_id)) $reps["[countryid]"] = $details->virtuemart_country_id; + if (isset($details->virtuemart_country_id)) { + $country = $this->getCountryFromID ($details->virtuemart_country_id); + if ($country) { + $reps["[country]"] = $country->country_name; + $reps["[countrycode2]"] = $country->country_2_code; + $reps["[countrycode3]"] = $country->country_3_code; + } + } - $reps["[stateid]"] = $details->virtuemart_state_id; + if (isset($details->virtuemart_state_id)) $reps["[stateid]"] = $details->virtuemart_state_id; } if ($nrtype==1) { // Only for Invoice: - $reps["[ordernumber]"] = $details->order_number; - $reps["[orderid]"] = $details->virtuemart_order_id; - $reps["[orderstatus]"] = $details->order_status; + if (isset($details->order_number)) $reps["[ordernumber]"] = $details->order_number; + if (isset($details->virtuemart_order_id)) $reps["[orderid]"] = $details->virtuemart_order_id; + if (isset($details->order_status)) $reps["[orderstatus]"] = $details->order_status; } if ($nrtype==2) { // Customer number: - $reps["[username]"] = $details->username; - $reps["[name]"] = $details->name; - $reps["[user_is_vendor]"] = $details->user_is_vendor; + if (isset($details->username)) $reps["[username]"] = $details->username; + if (isset($details->name)) $reps["[name]"] = $details->name; + if (isset($details->user_is_vendor)) $reps["[user_is_vendor]"] = $details->user_is_vendor; } return str_ireplace (array_keys($reps), array_values($reps), $fmt); } diff --git a/ordernumber.script.php b/ordernumber.script.php index 964866f..ef1d784 100644 --- a/ordernumber.script.php +++ b/ordernumber.script.php @@ -1,5 +1,11 @@ <?php defined('_JEXEC') or die('Restricted access'); +/** + * Installation script for the plugin + * + * @copyright Copyright (C) 2013 Reinhold Kainhofer, office@open-tools.net + * @license GPL v3+, http://www.gnu.org/copyleft/gpl.html + */ class plgVmShopperOrdernumberInstallerScript { diff --git a/ordernumber.xml b/ordernumber.xml index 7460e16..f2460e2 100644 --- a/ordernumber.xml +++ b/ordernumber.xml @@ -5,10 +5,10 @@ <author>Reinhold Kainhofer</author> <authorEmail>office@open-tools.net</authorEmail> <authorUrl>http://www.open-tools.net/</authorUrl> - <copyright>Copyright (C) 2012-2013 Reinhold Kainhofer. All rights reserved.</copyright> + <copyright>Copyright (C) 2012-2014 Reinhold Kainhofer. All rights reserved.</copyright> <license>http://www.gnu.org/licenses/gpl-3.0.html GNU/GPLv3</license> - <version>1.8.1</version> - <releaseDate>2013-02-26</releaseDate> + <version>1.8.2</version> + <releaseDate>2014-01-13</releaseDate> <releaseType>Minor update</releaseType> <downloadUrl>http://www.open-tools.net/virtuemart-2-extensions/vm2-ordernumber-plugin.html</downloadUrl> diff --git a/releases/plg_vmshopper_ordernumber_v1.8.2.zip b/releases/plg_vmshopper_ordernumber_v1.8.2.zip new file mode 100644 index 0000000000000000000000000000000000000000..ff1104f7329671d2ca952a3716b342370445d9df GIT binary patch literal 14672 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 literal 0 HcmV?d00001 -- GitLab