From ca2559a64f94ac6c48e4d4d4c056b8bba806daf4 Mon Sep 17 00:00:00 2001
From: Reinhold Kainhofer <reinhold@kainhofer.com>
Date: Mon, 25 Feb 2013 15:46:14 +0100
Subject: [PATCH] Version 1.0: First version, automatic and manual subscription
 works

---
 Makefile                                      |   7 +-
 acy_subscribe_buyer.php                       |  76 ++++++++++--------
 acy_subscribe_buyer.xml                       |  11 +--
 acy_subscribe_buyer/tmpl/button_subscribe.php |  32 +++++++-
 .../tmpl/button_subscribe_anon.php            |  20 -----
 .../tmpl/button_unsubscribe.php               |  20 -----
 de-DE.plg_vmcustom_acy_subscribe_buyer.ini    |  18 +++++
 ...E.plg_vmcustom_acy_subscribe_buyer.sys.ini |   7 ++
 en-GB.plg_vmcustom_acy_subscribe_buyer.ini    |   3 +-
 .../plg_vmcustom_acy_subscribe_buyer_v1.0.zip | Bin 0 -> 9942 bytes
 10 files changed, 106 insertions(+), 88 deletions(-)
 delete mode 100644 acy_subscribe_buyer/tmpl/button_subscribe_anon.php
 delete mode 100644 acy_subscribe_buyer/tmpl/button_unsubscribe.php
 create mode 100644 de-DE.plg_vmcustom_acy_subscribe_buyer.ini
 create mode 100644 de-DE.plg_vmcustom_acy_subscribe_buyer.sys.ini
 create mode 100644 releases/plg_vmcustom_acy_subscribe_buyer_v1.0.zip

diff --git a/Makefile b/Makefile
index 729711b..42aa07c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,13 +1,14 @@
-BASE=downloads_for_sale
+BASE=acy_subscribe_buyer
 PLUGINTYPE=vmcustom
-VERSION=1.1
+VERSION=1.0
 
 PLUGINFILES=$(BASE).php $(BASE).script.php $(BASE).xml index.html
 
 TRANSLATIONS=$(call wildcard,*.plg_$(PLUGINTYPE)_$(BASE).*ini) 
 INDEXFILES=$(BASE)/index.html
 TMPLFILES=$(call wildcard,$(BASE)/tmpl/*.php) $(BASE)/index.html $(BASE)/tmpl/index.html
-ASSETS=$(call wildcard,assets/*.png) $(call wildcard,assets/*.css) assets/index.html
+ASSETS=$(call wildcard,assets/*.png) $(call wildcard,assets/*.css) 
+# assets/index.html
 ZIPFILE=plg_$(PLUGINTYPE)_$(BASE)_v$(VERSION).zip
 
 
diff --git a/acy_subscribe_buyer.php b/acy_subscribe_buyer.php
index 6b6859c..493ccab 100644
--- a/acy_subscribe_buyer.php
+++ b/acy_subscribe_buyer.php
@@ -15,6 +15,10 @@ defined('_JEXEC') or 	die( 'Direct Access to ' . basename( __FILE__ ) . ' is not
  * http://kainhofer.com
  */
 if (!class_exists('vmCustomPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmcustomplugin.php');
+if(!include_once(rtrim(JPATH_ADMINISTRATOR,DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_acymailing'.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'helper.php')){
+	echo 'This plugin requires the AcyMailing Component to be installed';
+	return;
+};
 
 class plgVmCustomAcy_subscribe_Buyer extends vmCustomPlugin {
 
@@ -67,7 +71,7 @@ class plgVmCustomAcy_subscribe_Buyer extends vmCustomPlugin {
 	function getUserSubscriptions ($uid) {
 		if (!($uid>0)) return array();
 		$db = &JFactory::getDBO();
-		$q = "SELECT `listid` FROM `#__acymailing_listsub` WHERE `subid` = '".(int)$uid."'";
+		$q = "SELECT `listid` FROM `#__acymailing_listsub` WHERE `subid` = '".(int)$uid."' AND `status`='1'";
 		$db->setQuery($q);
 		$subscribed = $db->loadColumn();
 		return $subscribed;
@@ -79,7 +83,6 @@ class plgVmCustomAcy_subscribe_Buyer extends vmCustomPlugin {
 			$q = "SELECT `id`, `name`, `email` FROM `#__users` WHERE `id`=".(int)$uid;
 			$db->setQuery($q);
 			$userinfo = $db->loadObject();
-// print("<pre>addAcyUser ($name, $email, $uid): loaded user data <br>(SQL: $q) <br/>".print_r($userinfo,1)."</pre>");
 			if (empty($email)) 
 				$email = $userinfo->email;
 			if (empty($name))
@@ -97,7 +100,7 @@ class plgVmCustomAcy_subscribe_Buyer extends vmCustomPlugin {
 		}
 		return $db->insertid();
 	}
-	/** Adds the acy user to all the given lists (the subscriber has already been created).*/
+	/** Adds the acy user to all the given lists (the subscriber has already been created). If the user has unsubscribed, he will not be subscribed again! */
 	function subscribeUser ($acyuid, $lists) {
 		$db = &JFactory::getDBO();
 		foreach ($lists as $l) {
@@ -109,10 +112,6 @@ class plgVmCustomAcy_subscribe_Buyer extends vmCustomPlugin {
 			$db->query();
 		}
 	}
-	/** Removes the user from all the given lists */
-	function unsubscribeUser ($acyuid, $lists) {
-		// TODO
-	}
 
 	/**
 	 * @see Form displayed in the product edit page in the BE, configure the download file
@@ -144,29 +143,40 @@ class plgVmCustomAcy_subscribe_Buyer extends vmCustomPlugin {
 		return true ;
 	}
 	
+	function addAcyStuff () {
+		acymailing_initModule('header',null);
+	}
+	function getThisURL() {
+		if (isset ($_SERVER['REQUEST_URI'])) {
+			$request_uri = $_SERVER['REQUEST_URI'];
+		} else {
+			$request_uri = $_SERVER['PHP_SELF'];
+			if (!empty($_SERVER['QUERY_STRING'])) $request_uri .= '?' . $_SERVER['QUERY_STRING'];
+		}
+		return ((empty($_SERVER['HTTPS']) OR strtolower($_SERVER['HTTPS']) != "on") ? "http://" : "https://") . $_SERVER['HTTP_HOST'].$request_uri;
+	}
+	
+	
 	function displayProduct($field) {
-$this->addAcyUser("Reinhold Kainhofer", "reinhold@kainhofer.com" , 673);
 		$html = '';
 		$this->parseCustomParams($field);
-		$user = JFactory::getUser()->get('id');
-		if ($user>0) {
-			$acyuid = $this->getAcyUidFromUser($user);
+		$user = JFactory::getUser();
+		$uid = $user->get('id');
+		if ($uid>0) {
+			$acyuid = $this->getAcyUidFromUser($uid);
 			$allsubscriptions = $this->getUserSubscriptions($acyuid);
-			$subscribed = array_intersect ($field->lists, $allsubscriptions);
-			$notsubscribed = array_diff ($field->lists, $allsubscriptions);
-			if (!empty($notsubscribed)) {
-				$html .= $this->renderByLayout('button_subscribe', array($notsubscribed, $user, $field));
-				// TODO: implement subscribe button
-			}
-			if (!empty($subscribed)) {
-				// TODO: implement unsubscribe button
-				$html .= $this->renderByLayout('button_unsubscribe', array($subscribed, $user, $field));
-			}
-// 			$html .= "<pre>USER: $user, field: ".print_r($field,1).", all subscriptions: ".print_r($allsubscriptions,1).", subscriptions: ".print_r($subscribed,1).", unsubscriptions: ".print_r($notsubscribed,1).", lists: ".print_r($field->lists, 1)."</pre>";
+			$uinfo = array(
+				'id' => $uid,
+				'name' => $user->get('name'), 
+				'email' => $user->get('email'),
+				'subscribed' => array_intersect ($field->lists, $allsubscriptions),
+				'notsubscribed' => array_diff ($field->lists, $allsubscriptions),
+			);
+			$this->addAcyStuff();
+			$html .= $this->renderByLayout('button_subscribe', array(acymailing_getModuleFormName(), $uinfo, $field->lists, $this->getThisURL(), $field));
 		} elseif ($field->allow_subscribe) {
-			$html .= $this->renderByLayout('button_subscribe_anon', array($field->lists, $field));
-			// TODO: Display anonymous subscribe button
-			$html = "<pre>NO USER, SUBSCRIBE allowed</pre>";
+			$this->addAcyStuff();
+			$html .= $this->renderByLayout('button_subscribe', array(acymailing_getModuleFormName(), array(), $field->lists, $this->getThisURL(), $field));
 		} else {
 			// Not logged in, manual subscription not allowed
 		}
@@ -245,25 +255,23 @@ $this->addAcyUser("Reinhold Kainhofer", "reinhold@kainhofer.com" , 673);
 		$customModel = VmModel::getModel('customfields');
 		foreach ($order['items'] as $item) {
 			$customs = $customModel->getproductCustomslist ($item->virtuemart_product_id);
-JFactory::getApplication()->enqueueMessage("<pre>Custom fields: ".print_r($customs,1)."</pre>", 'error');
 			foreach ($customs as $field) {
 				if ($field->custom_element != $this->_name) continue;
 				if (!$field->subscribe_buyers) continue;
 				// Add the user to the lists:
 				if(!($acyuid>0)) {
-					$acyuid = $this->addAcyUser($name, $email, $uid);
+					$acyuid = $this->addAcyUser ($name, $email, $uid);
 				}
-				$allsubscriptions = $this->getUserSubscriptions($acyuid);
+				$allsubscriptions = $this->getUserSubscriptions ($acyuid);
 				$notsubscribed = array_diff ($field->lists, $allsubscriptions);
 				$this->subscribeUser($acyuid, $notsubscribed);
-				foreach ($notsubscribed as $l) {
-					$listname=$this->getAcyListname($l);
-					JFactory::getApplication()->enqueueMessage(JText::sprintf('VMCUSTOM_ACYBUYER_ADDED_USER', $name, $email, $listname), 'info');
-				}
+				// TODO: Shall we display an infor message about the subscription?
+				// foreach ($notsubscribed as $l) {
+				//	$listname=$this->getAcyListname($l);
+				//	JFactory::getApplication()->enqueueMessage(JText::sprintf('VMCUSTOM_ACYBUYER_ADDED_USER', $name, $email, $listname), 'info');
+				// }
 			}
 		}
-		// TODO: If auto-subscribe 
-JFactory::getApplication()->enqueueMessage("plgVmConfirmedOrder, cart: <pre>".print_r($cart,1)."</pre><br><h2>ORDER:</h2><pre>".print_r($order,1)."</pre>", 'error');
 	}
 }
 
diff --git a/acy_subscribe_buyer.xml b/acy_subscribe_buyer.xml
index e8df6c9..7597a46 100644
--- a/acy_subscribe_buyer.xml
+++ b/acy_subscribe_buyer.xml
@@ -15,16 +15,11 @@
     </files>
     <languages>
         <language tag="en-GB">en-GB.plg_vmcustom_acy_subscribe_buyer.ini</language>
+        <language tag="de-DE">de-DE.plg_vmcustom_acy_subscribe_buyer.ini</language>
+        <language tag="en-GB">en-GB.plg_vmcustom_acy_subscribe_buyer.sys.ini</language>
+        <language tag="de-DE">de-DE.plg_vmcustom_acy_subscribe_buyer.sys.ini</language>
     </languages>
     <scriptfile>acy_subscribe_buyer.script.php</scriptfile>
     <params addpath="/administrator/components/com_virtuemart/elements">
-	<param name="auto_subscribe" type="radio" default="1" label="VMCUSTOM_ACYBUYER_AUTO_SUBSCRIBE" description="VMCUSTOM_ACYBUYER_AUTO_SUBSCRIBE_DESC" >
-                        <option value="0">COM_VIRTUEMART_NO</option>
-                        <option value="1">COM_VIRTUEMART_YES</option>
-                </param>
-	<param name="allow_registered_subscribe" type="radio" default="1" label="VMCUSTOM_ACYBUYER_ALLOW_SUBSCRIBE" description="VMCUSTOM_ACYBUYER_ALLOW_SUBSCRIBE_DESC" >
-                        <option value="0">COM_VIRTUEMART_NO</option>
-                        <option value="1">COM_VIRTUEMART_YES</option>
-                </param>
     </params>
 </install>
diff --git a/acy_subscribe_buyer/tmpl/button_subscribe.php b/acy_subscribe_buyer/tmpl/button_subscribe.php
index 0b4c40e..72bee4b 100644
--- a/acy_subscribe_buyer/tmpl/button_subscribe.php
+++ b/acy_subscribe_buyer/tmpl/button_subscribe.php
@@ -9,6 +9,13 @@
  *
  **/
   
+// Data passed to this template (as $viewData array):
+// $viewData[0] ... acy mailing form name
+// $viewData[1] ... user info (id, mail, name, subscribed, notsubscribed), typically extracted from the registered user
+// $viewData[2] ... list ids for this product
+// $viewData[3] ... Redirect URL
+// $viewData[4] ... the whole custom field
+
 defined('_JEXEC') or die();
 if(JFile::exists(JPATH_SITE.DS.'plugins'.DS.'vmcustom'.DS.'acy_subscribe_buyer'.DS.'assets'.DS.'acy_subscribe_buyer.css')) {
 	$doc =& JFactory::getDocument();
@@ -16,5 +23,28 @@ if(JFile::exists(JPATH_SITE.DS.'plugins'.DS.'vmcustom'.DS.'acy_subscribe_buyer'.
 }
 ?>
 <div class="acy_subscribe_buyer">
-<div style="background: #00FF00;">Subscribe user <?php echo $viewData[1]; ?> to: <?php print_r($viewData[0]); ?></div>
+<form name="<?php echo $viewData[0]?>" method="post" onsubmit="return submitacymailingform('optin','<?php echo $viewData[0]?>')" action="<?php echo JRoute::_('index.php'); ?>" id="<?php echo $viewData[0]?>">
+<?php if (empty($viewData[1]['name']) && empty($viewData[1]['email'])) { ?>
+	<input type="text" value="Your Name" name="user[name]" id="user_name_<?php echo $viewData[0]?>">
+	<input type="text" value="email@example.com" name="user[email]" id="user_email_<?php echo $viewData[0]?>">
+<?php } else { ?>
+	<input type="hidden" value="<?php echo $viewData[1]['name'];?>" name="user[name]" id="user_name_<?php echo $viewData[0]?>">
+	<input type="hidden" value="<?php echo $viewData[1]['email'];?>" name="user[email]" id="user_email_<?php echo $viewData[0]?>">
+<?php } ?>
+	<input type="hidden" value="0" name="ajax">
+	<input type="hidden" value="sub" name="ctrl">
+	<input type="hidden" value="notask" name="task">
+	<input type="hidden" value="<?php echo $viewData[3];?>" name="redirect">
+	<input type="hidden" value="<?php echo $viewData[3];?>" name="redirectunsub">
+	<input type="hidden" value="com_acymailing" name="option">
+	<input type="hidden" value="" name="visiblelists">
+	<input type="hidden" value="<?php echo implode (',', $viewData[2]); ?>" name="hiddenlists">
+	<input type="hidden" value="<?php echo $viewData[0]?>" name="acyformname">
+<?php if (!isset($viewData[1]['notsubscribed']) or !empty($viewData[1]['notsubscribed'])) { ?>
+	<input type="submit" onclick="try{ return submitacymailingform('optin','<?php echo $viewData[0]?>'); }catch(err){alert('The form could not be submitted '+err);return false;}" name="Submit" value="Subscribe" class="button subbutton btn btn-primary">
+<?php }
+      if (!isset($viewData[1]['subscribed']) or !empty($viewData[1]['subscribed'])) { ?>
+	<input type="button" onclick="return submitacymailingform('optout','<?php echo $viewData[0]?>')" name="Submit" value="Unsubscribe" class="button unsubbutton btn btn-inverse">
+<?php } ?>
+</form>
 </div>
\ No newline at end of file
diff --git a/acy_subscribe_buyer/tmpl/button_subscribe_anon.php b/acy_subscribe_buyer/tmpl/button_subscribe_anon.php
deleted file mode 100644
index 90fd0f8..0000000
--- a/acy_subscribe_buyer/tmpl/button_subscribe_anon.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- *
- * @author Reinhold Kainhofer
- * @package VirtueMart
- * @subpackage custom
- * @copyright Copyright (C) 2013 RK - All rights reserved.
- * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
- *
- **/
-  
-defined('_JEXEC') or die();
-if(JFile::exists(JPATH_SITE.DS.'plugins'.DS.'vmcustom'.DS.'acy_subscribe_buyer'.DS.'assets'.DS.'acy_subscribe_buyer.css')) {
-	$doc =& JFactory::getDocument();
-	$doc->addStyleSheet(JURI::root().'plugins/vmcustom/acy_subscribe_buyer/assets/acy_subscribe_buyer.css');  
-}
-?>
-<div class="acy_subscribe_buyer">
-<div style="background: #00FF00;">Subscribing anonymous to: <?php print_r($viewData[0]); ?></div>
-</div>
\ No newline at end of file
diff --git a/acy_subscribe_buyer/tmpl/button_unsubscribe.php b/acy_subscribe_buyer/tmpl/button_unsubscribe.php
deleted file mode 100644
index bf1370e..0000000
--- a/acy_subscribe_buyer/tmpl/button_unsubscribe.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- *
- * @author Reinhold Kainhofer
- * @package VirtueMart
- * @subpackage custom
- * @copyright Copyright (C) 2013 RK - All rights reserved.
- * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
- *
- **/
- 
-defined('_JEXEC') or die();
-if(JFile::exists(JPATH_SITE.DS.'plugins'.DS.'vmcustom'.DS.'acy_subscribe_buyer'.DS.'assets'.DS.'acy_subscribe_buyer.css')) {
-	$doc =& JFactory::getDocument();
-	$doc->addStyleSheet(JURI::root().'plugins/vmcustom/acy_subscribe_buyer/assets/acy_subscribe_buyer.css');  
-}
-?>
-<div class="acy_subscribe_buyer">
-<div style="background: red">Unsubscribe user <?php echo $viewData[1]; ?> from: <?php print_r($viewData[0]); ?></div>
-</div>
\ No newline at end of file
diff --git a/de-DE.plg_vmcustom_acy_subscribe_buyer.ini b/de-DE.plg_vmcustom_acy_subscribe_buyer.ini
new file mode 100644
index 0000000..362b07a
--- /dev/null
+++ b/de-DE.plg_vmcustom_acy_subscribe_buyer.ini
@@ -0,0 +1,18 @@
+; Virtuemart! Project
+; Copyright (C)  2011 Virtuemart Team. All rights reserved.
+; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+; Note : All ini files need to be saved as UTF-8 - No BOM
+
+VMCUSTOM_ACYBUYER="VM Käufer zu AcyMailing Listen hinzufügen"
+VMCUSTOM_ACYBUYER_DESC="VirtueMart Benutzerfeld-Plugin, um Käufer automatisch zu AcyMailing Listen hinzuzufügen, bzw. die manuelle Bestellung/Abbestellung von Newslettern auf der Produkseite zu ermöglichen."
+
+VMCUSTOM_ACYBUYER_AUTO_SUBSCRIBE="Käufer automatisch eintragen"
+VMCUSTOM_ACYBUYER_AUTO_SUBSCRIBE_DESC="Trägt jeden Käufer des Produkts automatisch nach Abschluss der Bestellung in die Mailingliste ein."
+VMCUSTOM_ACYBUYER_ALLOW_SUBSCRIBE="Manuelle Eintragung erlauben"
+VMCUSTOM_ACYBUYER_ALLOW_SUBSCRIBE_DESC="Zeigt auf der Produktseite die Möglichkeit, die AcyMailing Listen des jeweiligen Produktes zu abonnieren oder abzubestellen. Für registrierte Benutzer wird dabei die Mail-Adresse des Joomla Kontos benutzt, anonyme Benutzer können die Adresse eingeben."
+
+VMCUSTOM_ACYBUYER_NO_LISTS="Es sind keine AcyMailing Listen verfügbar"
+VMCUSTOM_ACYBUYER_LIST="AcyMailing Listen:"
+
+VMCUSTOM_ACYBUYER_ADDED_USER="Benutzer '%s' (%s) zur Liste '%s' hinzugefügt."
+VMCUSTOM_ACYBUYER_SQL_ERROR="SQL Fehler! Bitte <a href='mailto:reinhold@kainhofer.com'>kontaktieren Sie den Autor</a> und geben Sie folgende Fehlermeldung an:<br/>%s"
\ No newline at end of file
diff --git a/de-DE.plg_vmcustom_acy_subscribe_buyer.sys.ini b/de-DE.plg_vmcustom_acy_subscribe_buyer.sys.ini
new file mode 100644
index 0000000..ee2b586
--- /dev/null
+++ b/de-DE.plg_vmcustom_acy_subscribe_buyer.sys.ini
@@ -0,0 +1,7 @@
+; Virtuemart! Project
+; Copyright (C)  2011 Virtuemart Team. All rights reserved.
+; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
+; Note : All ini files need to be saved as UTF-8 - No BOM
+
+VMCUSTOM_ACYBUYER="VM Käufer zu AcyMailing Listen hinzufügen"
+VMCUSTOM_ACYBUYER_DESC="VirtueMart Benutzerfeld-Plugin, um Käufer automatisch zu AcyMailing Listen hinzuzufügen, bzw. die manuelle Bestellung/Abbestellung von Newslettern auf der Produkseite zu ermöglichen."
diff --git a/en-GB.plg_vmcustom_acy_subscribe_buyer.ini b/en-GB.plg_vmcustom_acy_subscribe_buyer.ini
index c5d85a3..f640671 100644
--- a/en-GB.plg_vmcustom_acy_subscribe_buyer.ini
+++ b/en-GB.plg_vmcustom_acy_subscribe_buyer.ini
@@ -6,7 +6,6 @@
 VMCUSTOM_ACYBUYER="VM Subscribe Buyers to AcyMailing"
 VMCUSTOM_ACYBUYER_DESC="VirtueMart custom field plugin to automatically subscribe buyers to AcyMailing lists."
 
-VMCUSTOM_ACYBUYER_ALLOW_SUBSCRIBE
 VMCUSTOM_ACYBUYER_AUTO_SUBSCRIBE="Auto-subscribe buyers"
 VMCUSTOM_ACYBUYER_AUTO_SUBSCRIBE_DESC="Automatically add users to the mailing list after a successful purchase."
 VMCUSTOM_ACYBUYER_ALLOW_SUBSCRIBE="Allow manual subscription"
@@ -16,4 +15,4 @@ VMCUSTOM_ACYBUYER_NO_LISTS="No AcyMailing lists are available"
 VMCUSTOM_ACYBUYER_LIST="AcyMailing lists:"
 
 VMCUSTOM_ACYBUYER_ADDED_USER="User '%s' (%s) added to mailing list %s."
-VMCUSTOM_ACYBUYER_SQL_ERROR="SQL error, please contact the author with the following information:<br/>%s"
\ No newline at end of file
+VMCUSTOM_ACYBUYER_SQL_ERROR="SQL error, please <a href='mailto:reinhold@kainhofer.com'>contact the author</a> with the following information:<br/>%s"
\ No newline at end of file
diff --git a/releases/plg_vmcustom_acy_subscribe_buyer_v1.0.zip b/releases/plg_vmcustom_acy_subscribe_buyer_v1.0.zip
new file mode 100644
index 0000000000000000000000000000000000000000..eacb7ee7c7a86ec072b575b47a2de18f60bf1336
GIT binary patch
literal 9942
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

literal 0
HcmV?d00001

-- 
GitLab