From 6ec2c348bcc73737f4083b4d0a95787d39156453 Mon Sep 17 00:00:00 2001 From: Reinhold Kainhofer <reinhold@kainhofer.com> Date: Wed, 24 Apr 2013 19:05:27 +0200 Subject: [PATCH] Version 1.4: Make status for download configurable; also set to shipped after download --- Makefile | 3 +- downloads_for_sale.php | 50 +++++++++++------ downloads_for_sale.xml | 6 +- elements/index.html | 0 elements/vmorderstates.php | 53 ++++++++++++++++++ .../de-DE.plg_vmcustom_downloads_for_sale.ini | 5 ++ .../en-GB.plg_vmcustom_downloads_for_sale.ini | 5 ++ .../plg_vmcustom_downloads_for_sale_v1.4.zip | Bin 0 -> 24719 bytes 8 files changed, 104 insertions(+), 18 deletions(-) create mode 100644 elements/index.html create mode 100644 elements/vmorderstates.php create mode 100644 releases/plg_vmcustom_downloads_for_sale_v1.4.zip diff --git a/Makefile b/Makefile index be10e51..e56e84c 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,12 @@ BASE=downloads_for_sale PLUGINTYPE=vmcustom -VERSION=1.3.1 +VERSION=1.4 PLUGINFILES=$(BASE).php $(BASE).script.php $(BASE).xml index.html TRANSLATIONS=$(call wildcard,language/*/*.plg_$(PLUGINTYPE)_$(BASE).*ini) INDEXFILES=$(BASE)/index.html language/index.html $(call wildcard,language/*/index.html) +ELEMENTS=$(call wildcard,elements/*.php) elements/index.html TMPLFILES=$(call wildcard,$(BASE)/tmpl/*.php) $(BASE)/index.html $(BASE)/tmpl/index.html ASSETS=$(call wildcard,$(BASE)/assets/*.png) $(call wildcard,$(BASE)/assets/*.css) $(BASE)/assets/index.html ZIPFILE=plg_$(PLUGINTYPE)_$(BASE)_v$(VERSION).zip diff --git a/downloads_for_sale.php b/downloads_for_sale.php index 592f526..362ab00 100644 --- a/downloads_for_sale.php +++ b/downloads_for_sale.php @@ -27,7 +27,6 @@ if (JVM_VERSION === 2) { } class plgVmCustomDownloads_for_Sale extends vmCustomPlugin { - var $status_allowed = array ('S', 'C'); function __construct(& $subject, $config) { parent::__construct($subject, $config); @@ -38,6 +37,8 @@ class plgVmCustomDownloads_for_Sale extends vmCustomPlugin { 'invoice_link_type'=>array('text', 'char'), 'product_link_type'=>array('image','char'), 'download_type'=>array('free_download','char'), + 'paid_status'=>array(array('S', 'C'), 'array'), + 'downloaded_status'=>array('S', 'char'), ); $this->setConfigParameterable('custom_params',$varsToPush); $this->onStoreInstallPluginTable($this->_psType); @@ -94,10 +95,10 @@ class plgVmCustomDownloads_for_Sale extends vmCustomPlugin { } $orderitems = array(); foreach ($orders as $order) { - if ($order && in_array($order['details']['BT']->order_status, $this->status_allowed)) { + if ($order && in_array($order['details']['BT']->order_status, $field->paid_status)) { foreach ($order['items'] as $i) { if ($i->virtuemart_product_id == $prodid) { - if (in_array($i->order_status, $this->status_allowed)) { + if (in_array($i->order_status, $field->paid_status)) { $orderitems[] = $i; } elseif ($show_warnings) { JFactory::getApplication()->enqueueMessage(JText::_('VMCUSTOM_DLSALE_ERROR_STATUS_NOT_AUTHORIZED'), 'error'); @@ -121,7 +122,7 @@ class plgVmCustomDownloads_for_Sale extends vmCustomPlugin { return ($userId>0); } // In all other cases, check that the orderitem has the correct state - if ($orderitem && in_array($orderitem->order_status, $this->status_allowed)) { + if ($orderitem && in_array($orderitem->order_status, $field->paid_status)) { return true; } return false; @@ -153,16 +154,18 @@ class plgVmCustomDownloads_for_Sale extends vmCustomPlugin { } header("Content-Type: " . $media->file_mimetype); header("Content-Disposition: attachment; filename=\"".JFile::getName($media->file_url)."\""); - if (!@readfile($media->file_url)) { + if (@readfile($media->file_url)) { + return true; + } else { header_remove("Content-Type"); header_remove("Content-Disposition"); JFactory::getApplication()->enqueueMessage(JText::sprintf('VMCUSTOM_DLSALE_ERROR_NO_FILE_SET', $media_id, $media->file_url), 'error'); return false; } - JExit(); } else { $output = JText::_('VMCUSTOM_DLSALE_NO_FILE_FOUND'); } + return false; } @@ -192,6 +195,20 @@ class plgVmCustomDownloads_for_Sale extends vmCustomPlugin { } } + + function updateOrderStatus ($field, $orderitem) { + if (!$orderitem) return; + $orderModel = VmModel::getModel('orders'); + + # Update the whole order: + $order = $this->orderDataFromItem ($orderitem->virtuemart_order_item_id); + $orderdata['order_status'] = $field->downloaded_status; + $orderdata['customer_notified'] = 0; + $orderdata['comments'] = ''; + if ($order->order_status != $orderdata['order_status']) { + $orderModel->updateStatusForOneOrder($order->virtuemart_order_id, $orderdata, /*triggers=*/false); + } + } function plgVmOnSelfCallFE($type,$name,&$render) { if ($name != $this->_name || $type != 'vmcustom') return false; @@ -206,11 +223,15 @@ class plgVmCustomDownloads_for_Sale extends vmCustomPlugin { $orderitem = empty($orderitems)?null:$orderitems[0]; if ($field) { if ($this->checkDownloadable ($field, $orderitem, true)) { - // TODO: Update download counter in the mysql table - $this->updateDownloadCounterSQL ($field, $orderitem); $handled = true; - $this->downloadFile ($field->media_id, $render); - return true; + if ($this->downloadFile ($field->media_id, $render)) { + // Successful download, so set order status to shipped, then exit to prevent the normal joomla page formatting (we sent a potentially binary file already!) + $this->updateDownloadCounterSQL ($field, $orderitem); + $this->updateOrderStatus ($field, $orderitem); + JExit(); + } else { + return true; + } } else { // JFactory::getApplication()->enqueueMessage(JText::_('VMCUSTOM_DLSALE_ERROR_NOT_AUTHORIZED_UNKNOWN'), 'error'); } @@ -259,10 +280,6 @@ class plgVmCustomDownloads_for_Sale extends vmCustomPlugin { $orderdownloads = array(); foreach ($orders as $order) { - if (!in_array($order['details']['BT']->order_status, $this->status_allowed)) { - // Order status does not allow a download in any case, so skip this order - continue; - } $orderinfo = $order; $orderinfo['download_products']=array(); foreach ($order['items'] as $i) { @@ -270,7 +287,8 @@ class plgVmCustomDownloads_for_Sale extends vmCustomPlugin { $productinfo->downloads = array(); $customs = (array)$customModel->getproductCustomslist ($i->virtuemart_product_id); foreach ($customs as $field) { - if (($field->custom_element == $this->_name) && ($this->checkDownloadable ($field, $i, false))) { + // Order needs to be downloadable and the individiaul field, too: + if (($field->custom_element == $this->_name) && in_array($order['details']['BT']->order_status, $field->paid_status) && ($this->checkDownloadable ($field, $i, false))) { $productinfo->downloads[] = $this->createDownloadLink ($field, 'order', $field->invoice_link_type, $i); } } @@ -362,7 +380,7 @@ class plgVmCustomDownloads_for_Sale extends vmCustomPlugin { foreach ($orderModel->getOrdersList($cuid, true) as $ol) { $o = $orderModel->getOrder($ol->virtuemart_order_id); foreach ($o['items'] as $i) { - if ($i->virtuemart_product_id == $field->virtuemart_product_id && in_array($i->order_status, $this->status_allowed)) { + if ($i->virtuemart_product_id == $field->virtuemart_product_id && in_array($i->order_status, $field->paid_status)) { $order = $o['details']['BT']; } } diff --git a/downloads_for_sale.xml b/downloads_for_sale.xml index 6e0ff45..3ad3cce 100644 --- a/downloads_for_sale.xml +++ b/downloads_for_sale.xml @@ -6,7 +6,7 @@ <authorUrl>http://www.open-tools.net/</authorUrl> <copyright>Copyright (C) 2013 Reinhold Kainhofer. All rights reserved.</copyright> <license>http://www.gnu.org/licenses/gpl.html GNU/GPL v3+</license> - <version>1.3.1</version> + <version>1.4</version> <description>VMCUSTOM_DLSALE_DESC</description> <files> <filename plugin="downloads_for_sale">downloads_for_sale.php</filename> @@ -14,6 +14,7 @@ <folder>downloads_for_sale</folder> <folder>language</folder> <filename>index.html</filename> + <folder>elements</folder> </files> <languages folder="language"> <language tag="en-GB">en-GB/en-GB.plg_vmcustom_downloads_for_sale.ini</language> @@ -22,6 +23,7 @@ <language tag="de-DE">de-DE/de-DE.plg_vmcustom_downloads_for_sale.sys.ini</language> </languages> <scriptfile>downloads_for_sale.script.php</scriptfile> + <params addpath="/plugins/vmcustom/downloads_for_sale/elements" /> <params addpath="/administrator/components/com_virtuemart/elements"> <param type="vmjpluginwarning" /> <param name="invoice_link_type" type="list" default="link" label="VMCUSTOM_DLSALE_INVOICE_LINK" description="VMCUSTOM_DLSALE_INVOICE_LINK_DESC" > @@ -39,5 +41,7 @@ <option value="registered_download">VMCUSTOM_DLSALE_TYPE_REGISTERED</option> <option value="paid_download">VMCUSTOM_DLSALE_TYPE_PAID</option> </param> + <param name="paid_status" type="vmorderstates" scope="com_virtuemart" default="C" label="VMCUSTOM_DLSALE_STATUS_PAID" description="VMCUSTOM_DLSALE_STATUS_PAID_EXPLAIN" /> + <param name="downloaded_status" type="vmorderstate" scope="com_virtuemart" default="S" label="VMCUSTOM_DLSALE_STATUS_DOWNLOADED" description="VMCUSTOM_DLSALE_STATUS_DOWNLOADED_EXPLAIN" /> </params> </install> diff --git a/elements/index.html b/elements/index.html new file mode 100644 index 0000000..e69de29 diff --git a/elements/vmorderstates.php b/elements/vmorderstates.php new file mode 100644 index 0000000..c55b18f --- /dev/null +++ b/elements/vmorderstates.php @@ -0,0 +1,53 @@ +<?php +defined ('_JEXEC') or die(); +/** + * + * @package VirtueMart + * @subpackage Plugins - Elements + * @author Valérie Isaksen + * @link http://www.virtuemart.net + * @copyright Copyright (c) 2004 - 2011 VirtueMart Team. All rights reserved. + * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php + * VirtueMart is free software. This version may have been modified pursuant + * to the GNU General Public License, and as distributed it includes or + * is derivative of works licensed under the GNU General Public License or + * other free or open source software licenses. + * @version $Id:$ + */ +/* + * This class is used by VirtueMart Payment or Shipment Plugins + * which uses JParameter + * So It should be an extension of JElement + * Those plugins cannot be configured througth the Plugin Manager anyway. + */ + +class JElementVmOrderStates extends JElement { + + /** + * Element name + * + * @access protected + * @var string + */ + var $_name = 'OrderStates'; + + function fetchElement ($name, $value, &$node, $control_name) { + + $db = JFactory::getDBO (); + + $query = 'SELECT `order_status_code` AS value, `order_status_name` AS text + FROM `#__virtuemart_orderstates` + WHERE `virtuemart_vendor_id` = 1 + ORDER BY `ordering` ASC '; + + $db->setQuery ($query); + $fields = $db->loadObjectList (); + $class = 'class="inputbox" multiple="multiple" size="6" '; + foreach ($fields as $field) { + $field->text= JText::_ ($field->text); + } + + return JHTML::_ ('select.genericlist', $fields, $control_name . '[' . $name . '][]', $class, 'value', 'text', $value, $control_name . $name); + } + +} diff --git a/language/de-DE/de-DE.plg_vmcustom_downloads_for_sale.ini b/language/de-DE/de-DE.plg_vmcustom_downloads_for_sale.ini index baf0cfb..e01397c 100644 --- a/language/de-DE/de-DE.plg_vmcustom_downloads_for_sale.ini +++ b/language/de-DE/de-DE.plg_vmcustom_downloads_for_sale.ini @@ -21,6 +21,11 @@ VMCUSTOM_DLSALE_TYPE_FREE="Kostenloser Download" VMCUSTOM_DLSALE_TYPE_REGISTERED="Download nur nach Registrierung" VMCUSTOM_DLSALE_TYPE_PAID="Bezahlter Download" +VMCUSTOM_DLSALE_STATUS_PAID="Status um bezahlte Download verfügbar zu machen" +VMCUSTOM_DLSALE_STATUS_PAID_EXPLAIN="Wählen sie die Liste der Statuswerte aus, wann bezahlte Downloads zur Verfügung gestellt werden." +VMCUSTOM_DLSALE_STATUS_DOWNLOADED="Status nach Download" +VMCUSTOM_DLSALE_STATUS_DOWNLOADED_EXPLAIN="Nach einem bezahlten Download wird der Status der Bestellung auf diesen Wert gesetzt." + VMCUSTOM_DLSALE_NO_FILES="Keine Mediendatein für den Download oder Verkauf gefunden." VMCUSTOM_DLSALE_DOWNLOAD_FILE="Datei zum Download" VMCUSTOM_DLSALE_ERROR_NOT_AUTHORIZED="Nicht zum Download authorisiert. Bitte loggen Sie sich als entsprechender Benutzer ein." diff --git a/language/en-GB/en-GB.plg_vmcustom_downloads_for_sale.ini b/language/en-GB/en-GB.plg_vmcustom_downloads_for_sale.ini index b4019df..0e9210a 100644 --- a/language/en-GB/en-GB.plg_vmcustom_downloads_for_sale.ini +++ b/language/en-GB/en-GB.plg_vmcustom_downloads_for_sale.ini @@ -21,6 +21,11 @@ VMCUSTOM_DLSALE_TYPE_FREE="Free download" VMCUSTOM_DLSALE_TYPE_REGISTERED="Download after registration" VMCUSTOM_DLSALE_TYPE_PAID="Paid download" +VMCUSTOM_DLSALE_STATUS_PAID="Status to enable paid download" +VMCUSTOM_DLSALE_STATUS_PAID_EXPLAIN="Select the statuses for paid downloads that allow the buyer to download the file." +VMCUSTOM_DLSALE_STATUS_DOWNLOADED="Status after download" +VMCUSTOM_DLSALE_STATUS_DOWNLOADED_EXPLAIN="After a file was downloaded through this plugin, the order status will be set to this value, indication a download was initiated by the user." + VMCUSTOM_DLSALE_NO_FILES="No media files found for download or sale." VMCUSTOM_DLSALE_DOWNLOAD_FILE="Download file" VMCUSTOM_DLSALE_ERROR_NOT_AUTHORIZED="Not authorized to download. Please log in." diff --git a/releases/plg_vmcustom_downloads_for_sale_v1.4.zip b/releases/plg_vmcustom_downloads_for_sale_v1.4.zip new file mode 100644 index 0000000000000000000000000000000000000000..ea44736fe22bf1a71bb51c9152fce3a8cc75933d GIT binary patch literal 24719 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 literal 0 HcmV?d00001 -- GitLab