Skip to content
Snippets Groups Projects
Commit b7a0bedb authored by Reinhold Kainhofer's avatar Reinhold Kainhofer
Browse files

ONShoppergroups: Plugin to make a variable depend on the shopper group of the buyer

parent 60e48eeb
No related branches found
No related tags found
No related merge requests found
Showing
with 332 additions and 0 deletions
BASE=ordernumber_shoppergroups
PLUGINTYPE=vmshopper
ZIPBASE=opentools_vmshopper
VERSION=1.0
PLUGINFILES=$(BASE).php $(BASE).script.php $(BASE).xml index.html
TRANSLATIONS=$(call wildcard,language/en*/*.plg_$(PLUGINTYPE)_$(BASE).*ini)
INDEXFILES=language/index.html $(call wildcard,language/**/index.html)
FIELDS=$(call wildcard,fields/*)
ZIPFILE=plg_$(ZIPBASE)_$(BASE)_v$(VERSION).zip
all: zip
zip: $(PLUGINFILES) $(TRANSLATIONS) $(ADVANCEDFILES) $(INDEXFILES)
@echo "Packing all files into distribution file $(ZIPFILE):"
@zip -r $(ZIPFILE) $(PLUGINFILES) $(TRANSLATIONS) $(INDEXFILES) $(FIELDS)
clean:
rm -f $(ZIPFILE)
<?php
defined('_JEXEC') or die();
/**
*
* @package VirtueMart
* @subpackage Plugins - Elements
* @author Valérie Isaksen
* @link http://www.virtuemart.net
* @copyright ${PHING.VM.COPYRIGHT}
* @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$
*/
JFormHelper::loadFieldClass('list');
jimport('joomla.form.formfield');
if (!class_exists( 'VmConfig' ))
require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php');
VmConfig::loadConfig();
class JFormFieldVmShopperGroup extends JFormFieldList {
/**
* The form field type.
*
* @var string
* @since 11.1
*/
var $type = 'vmShopperGroup';
protected function getOptions() {
VmConfig::loadJLang('com_virtuemart_orders', TRUE);
$options = array();
$db = JFactory::getDBO();
$query = 'SELECT `virtuemart_shoppergroup_id` AS value, `shopper_group_name` AS text
FROM `#__virtuemart_shoppergroups`
WHERE `virtuemart_vendor_id` = 1
ORDER BY `ordering` ASC, `virtuemart_shoppergroup_id` ASC ';
$db->setQuery($query);
$values = $db->loadObjectList();
$options[] = JHtml::_('select.option', -1, vmText::_('(No shopper group set)'));
$options[] = JHtml::_('select.option', 0, vmText::_('(Any group / set default)'));
foreach ($values as $value) {
$options[] = JHtml::_('select.option', $value->value, vmText::_($value->text));
}
return $options;
}
}
\ No newline at end of file
; VM Ordernumber plugin: Provide variables derived from the shopper groups
; Copyright (C) 2014 Reinhold Kainhofer, Open Tools. All rights reserved.
; License http://www.gnu.org/licenses/gpl.html GNU/GPL
; Note : All ini files need to be saved as UTF-8 - No BOM
VMORDERNUMBER_ORDERNUMBER_SHOPPERGROUPS="VM Ordernumbers - Shoppergroup-derived variables"
VMORDERNUMBER_ORDERNUMBER_SHOPPERGROUPS_DESC="This plugin provides variables for the Ordernumber plugin that are derived from the shopper's shopper group."
PLG_ORDERNUMBER_SHOPPERGROUPS_FIELDSET="Configuration"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP1HEADER="<b>Shopper group 1</b>"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP2HEADER="<b>Shopper group 2</b>"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP3HEADER="<b>Shopper group 3</b>"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP4HEADER="<b>Shopper group 4</b>"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP5HEADER="<b>Shopper group 5</b>"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP6HEADER="<b>Shopper group 6</b>"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP="Shopper Group"
PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE="Format Variable Name"
PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE="Value of the Variable"
; VM Ordernumber plugin: Provide variables derived from the shopper groups
; Copyright (C) 2014 Reinhold Kainhofer, Open Tools. All rights reserved.
; License http://www.gnu.org/licenses/gpl.html GNU/GPL
; Note : All ini files need to be saved as UTF-8 - No BOM
VMORDERNUMBER_ORDERNUMBER_SHOPPERGROUPS="VM Ordernumbers - Shoppergroup-derived variables"
VMORDERNUMBER_ORDERNUMBER_SHOPPERGROUPS_DESC="This plugin provides variables for the Ordernumber plugin that are derived from the shopper's shopper group."
PLG_ORDERNUMBER_SHOPPERGROUPS_FIELDSET="Configuration"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP1HEADER="<b>Shopper group 1</b>"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP2HEADER="<b>Shopper group 2</b>"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP3HEADER="<b>Shopper group 3</b>"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP4HEADER="<b>Shopper group 4</b>"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP5HEADER="<b>Shopper group 5</b>"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP6HEADER="<b>Shopper group 6</b>"
PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP="Shopper Group"
PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE="Format Variable Name"
PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE="Value of the Variable"
<!DOCTYPE html><title></title>
<!DOCTYPE html><title></title>
<?php
defined ('_JEXEC') or die('Restricted access');
/**
* Plugin providing Custom variables for the VM Ordernumber plugin
*
* @subpackage Plugins - vm ordernumber
* @copyright Copyright (C) 2014 Reinhold Kainhofer, office@open-tools.net
* @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.
* See administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
*
* http://open-tools.net/
*
*/
if (!class_exists('vmShopperPlugin'))
require(JPATH_VM_PLUGINS . DS . 'vmshopperplugin.php');
/** Extension plugin for the Odernumber plugin for VirtueMart
*/
class plgVmShopperOrderNumber_ShopperGroups extends VmShopperPlugin {
public function plgVmOnUpdateOrderBEShopper($_orderID) {}
/** Trigger to add variables to be used in the number formats
* You can add new variables to the $cartvals array or modify existing ones. They will be directly
* available in all formats. This trigger will be called whenever the ordernumber plugin creates a
* number. All built-in variables are already set in the $reps variable, so you can even override
* the built-in variables by changing $reps accordingly.
* $nrtype is 0 for ordernumber, 1 for invoice number, 2 for customer number and 3 for order password
* $details contains the order details
*/
function onVmOrdernumberGetVariables(&$reps, $fmt, $nrtype, $details) {
// JFactory::getApplication()->enqueueMessage("<pre>Order Details: ".print_r($details,1)."</pre>", 'error');
// JFactory::getApplication()->enqueueMessage("<pre>Plugin params: ".print_r($this->params,1)."</pre>", 'error');
$groups = array();
$uid = isset($details->virtuemart_user_id)?$details->virtuemart_user_id:0;
if ($uid>0) {
$userModel = VmModel::getModel('user');
$xrefTable = $userModel->getTable('vmuser_shoppergroups');
$groups = $xrefTable->load($uid);
}
foreach (range(1,6) as $i) {
$grp = $this->params->get('group'.(int)$i, 0);
$var = $this->params->get('variable'.(int)$i, null);
if (is_null($var)) continue;
$var = '['.strtolower($var).']';
$val = $this->params->get('value'.(int)$i, null);
$match = (($grp==0) || // Set default value
($grp<0 && empty($groups)) || // NO group set, user does not have any groups
($grp>0 && !empty($groups) && in_array($grp, $groups))); // Have a user with group -> check groups
if ($match) {
if (is_null($val))
unset($reps[$var]);
else
$reps[$var] = $val;
}
// JFactory::getApplication()->enqueueMessage("<pre>group $i: grp=$grp, var=$var; val=$val, match=$match</pre>", 'error');
}
// JFactory::getApplication()->enqueueMessage("<pre>Replacements: ".print_r($reps,1).", groups: ".print_r($groups,1)."</pre>", 'error');
}
}
// No closing tag
<?php
defined('_JEXEC') or die('Restricted access');
/**
* Installation script for the plugin
*
* @copyright Copyright (C) 2014 Reinhold Kainhofer, office@open-tools.net
* @license GPL v3+, http://www.gnu.org/copyleft/gpl.html
*/
// Adjust the class name. It has to be of the form:
// plgVmShopperOrderNumber_ShopperGroupsInstallerScript
class plgVmShopperOrderNumber_ShopperGroupsInstallerScript
{
/**
* Constructor
*
* @param JAdapterInstance $adapter The object responsible for running this script
*/
// public function __constructor(JAdapterInstance $adapter);
/**
* Called before any type of action
*
* @param string $route Which action is happening (install|uninstall|discover_install)
* @param JAdapterInstance $adapter The object responsible for running this script
*
* @return boolean True on success
*/
// public function preflight($route, JAdapterInstance $adapter);
/**
* Called after any type of action
*
* @param string $route Which action is happening (install|uninstall|discover_install)
* @param JAdapterInstance $adapter The object responsible for running this script
*
* @return boolean True on success
*/
// public function postflight($route, JAdapterInstance $adapter);
/**
* Called on installation
*
* @param JAdapterInstance $adapter The object responsible for running this script
*
* @return boolean True on success
*/
public function install(JAdapterInstance $adapter)
{
// enabling plugin upon installation
$db = JFactory::getDBO();
$db->setQuery('update #__extensions set enabled = 1 where type = "plugin" and element = "ordernumber_shoppergroups" and folder = "vmshopper"');
$db->query();
return True;
}
/**
* Called on update
*
* @param JAdapterInstance $adapter The object responsible for running this script
*
* @return boolean True on success
*/
// public function update(JAdapterInstance $adapter)
// {
// jimport( 'joomla.filesystem.file' );
// $file = JPATH_ROOT . DS . "administrator" . DS . "language" . DS . "en-GB" . DS . "en-GB.plg_vmshipmentrules_ordernumber_shoppergroups.sys.ini";
// if (JFile::exists($file)) JFile::delete($file);
// $file = JPATH_ROOT . DS . "administrator" . DS . "language" . DS . "de-DE" . DS . "de-DE.plg_vmshipmentrules_ordernumber_shoppergroups.sys.ini";
// if (JFile::exists($file)) JFile::delete($file);
// return true;
// }
/**
* Called on uninstallation
*
* @param JAdapterInstance $adapter The object responsible for running this script
*/
// public function uninstall(JAdapterInstance $adapter)
// {
// // Remove plugin table
// $db =& JFactory::getDBO();
// $db->setQuery('DROP TABLE IF EXISTS `#__virtuemart_vmshipmentrulesles_ordernumber_shoppergroups`;');
// $db->query();
// }
}
<?xml version="1.0" encoding="UTF-8" ?>
<extension version="2.5" type="plugin" group="vmshopper" method="upgrade">
<name>VMORDERNUMBER_ORDERNUMBER_SHOPPERGROUPS</name>
<creationDate>2014-12-10</creationDate>
<author>Reinhold Kainhofer, Open Tools</author>
<authorUrl>http://www.open-tools.net</authorUrl>
<copyright>Copyright (C) 2014, Reinhold Kainhofer</copyright>
<license>GPL v3+</license>
<version>1.0</version>
<description>VMORDERNUMBER_ORDERNUMBER_SHOPPERGROUPS_DESC</description>
<files>
<filename plugin="ordernumber_shoppergroups">ordernumber_shoppergroups.php</filename>
<folder>language</folder>
<folder>fields</folder>
</files>
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.plg_vmshopper_ordernumber_shoppergroups.ini</language>
<language tag="en-GB">en-GB/en-GB.plg_vmshopper_ordernumber_shoppergroups.sys.ini</language>
</languages>
<scriptfile>ordernumber_shoppergroups.script.php</scriptfile>
<config>
<fields name="params" addfieldpath="/plugins/vmshopper/ordernumber_shoppergroups/fields">
<fieldset name="config" label="PLG_ORDERNUMBER_SHOPPERGROUPS_FIELDSET">
<field name="group1spacer" type="spacer" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP1HEADER" />
<field name="group1" type="vmshoppergroup" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP" />
<field name="variable1" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE" />
<field name="value1" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE" />
<field name="group2spacer" type="spacer" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP2HEADER" />
<field name="group2" type="vmshoppergroup" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP" />
<field name="variable2" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE" />
<field name="value2" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE" />
<field name="group3spacer" type="spacer" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP3HEADER" />
<field name="group3" type="vmshoppergroup" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP" />
<field name="variable3" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE" />
<field name="value3" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE" />
<field name="group4spacer" type="spacer" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP4HEADER" />
<field name="group4" type="vmshoppergroup" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP" />
<field name="variable4" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE" />
<field name="value4" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE" />
<field name="group5spacer" type="spacer" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP5HEADER" />
<field name="group5" type="vmshoppergroup" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP" />
<field name="variable5" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE" />
<field name="value5" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE" />
<field name="group6spacer" type="spacer" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP6HEADER" />
<field name="group6" type="vmshoppergroup" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP" />
<field name="variable6" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE" />
<field name="value6" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE" />
</fieldset>
</fields>
</config>
</extension>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment