diff --git a/README.md b/README.md
index 1c382a79437..3fed724a1de 100644
--- a/README.md
+++ b/README.md
@@ -209,7 +209,8 @@ Most important changes will be listed here, all other changes since `19.4.0` can
- `Mage_Compiler`
- `Mage_GoogleBase`
- `Mage_PageCache` ([#2258](https://github.com/OpenMage/magento-lts/pull/2258))
- - `Mage_Poll` ([#3098](https://github.com/OpenMage/magento-lts/pull/3098))
+ - `Mage_Poll` ([#3098](https://github.com/OpenMage/magento-lts/pull/3098))
+ - `Mage_Sendfriend` ([#4274](https://github.com/OpenMage/magento-lts/pull/4274))
- `Mage_Xmlconnect`
- `Phoenix_Moneybookers`
@@ -217,6 +218,7 @@ _If you rely on those modules you can reinstall them with composer:_
- `Mage_Backup`: `composer require openmage/module-mage-backup`
- `Mage_PageCache`: `composer require openmage/module-mage-pagecache`
- `Mage_Poll`: `composer require openmage/module-mage-poll`
+- `Mage_Sendfriend`: `composer require openmage/module-mage-sendfriend`
- `Legacy frontend themes`: `composer require openmage/legacy-frontend-themes`
### Between OpenMage 19.x and 20.x
diff --git a/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Checktype.php b/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Checktype.php
deleted file mode 100644
index f49a012dde8..00000000000
--- a/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Checktype.php
+++ /dev/null
@@ -1,42 +0,0 @@
- Mage_Sendfriend_Helper_Data::CHECK_IP,
- 'label' => Mage::helper('adminhtml')->__('IP Address')
- ],
- [
- 'value' => Mage_Sendfriend_Helper_Data::CHECK_COOKIE,
- 'label' => Mage::helper('adminhtml')->__('Cookie (unsafe)')
- ],
- ];
- }
-}
diff --git a/app/code/core/Mage/Adminhtml/etc/adminhtml.xml b/app/code/core/Mage/Adminhtml/etc/adminhtml.xml
index 759cdd93c41..ea3ddbf0f67 100644
--- a/app/code/core/Mage/Adminhtml/etc/adminhtml.xml
+++ b/app/code/core/Mage/Adminhtml/etc/adminhtml.xml
@@ -197,10 +197,6 @@
Currency Setup
120
-
- Email to a Friend
- 140
-
Admin
100
diff --git a/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Sendfriend.php b/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Sendfriend.php
deleted file mode 100644
index 69cae45e20b..00000000000
--- a/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Sendfriend.php
+++ /dev/null
@@ -1,25 +0,0 @@
-getFormData()->getData('sender/name');
- if (!empty($name)) {
- return trim($name);
- }
-
- /** @var Mage_Customer_Model_Session $session */
- $session = Mage::getSingleton('customer/session');
-
- if ($session->isLoggedIn()) {
- return $session->getCustomer()->getName();
- }
-
- return '';
- }
-
- /**
- * Retrieve sender email address
- *
- * @return string
- */
- public function getEmail()
- {
- $email = $this->getFormData()->getData('sender/email');
- if (!empty($email)) {
- return trim($email);
- }
-
- /** @var Mage_Customer_Model_Session $session */
- $session = Mage::getSingleton('customer/session');
-
- if ($session->isLoggedIn()) {
- return $session->getCustomer()->getEmail();
- }
-
- return '';
- }
-
- /**
- * Retrieve Message text
- *
- * @return string
- */
- public function getMessage()
- {
- return $this->getFormData()->getData('sender/message');
- }
-
- /**
- * Retrieve Form data or empty Varien_Object
- *
- * @return Varien_Object
- */
- public function getFormData()
- {
- $data = $this->getData('form_data');
- if (!$data instanceof Varien_Object) {
- $formData = Mage::getSingleton('catalog/session')->getFormData(true);
- $data = new Varien_Object();
- if ($formData) {
- $data->addData($formData);
- }
- $this->setData('form_data', $data);
- }
-
- return $data;
- }
-
- /**
- * Set Form data array
- *
- * @param array $data
- * @return $this
- */
- public function setFormData($data)
- {
- if (is_array($data)) {
- $this->setData('form_data', new Varien_Object($data));
- }
-
- return $this;
- }
-
- /**
- * Retrieve Current Product Id
- *
- * @return int
- */
- public function getProductId()
- {
- return $this->getRequest()->getParam('id', null);
- }
-
- /**
- * Retrieve current category id for product
- *
- * @return int
- */
- public function getCategoryId()
- {
- return $this->getRequest()->getParam('cat_id', null);
- }
-
- /**
- * Retrieve Max Recipients
- *
- * @return int
- */
- public function getMaxRecipients()
- {
- return Mage::helper('sendfriend')->getMaxRecipients();
- }
-
- /**
- * Retrieve count of recipients
- *
- * @return int
- */
- public function getRecipientsCount()
- {
- $recipientsEmail = $this->getFormData()->getData('recipients/email');
- return (is_array($recipientsEmail)) ? count($recipientsEmail) : 0;
- }
-
- /**
- * Retrieve Send URL for Form Action
- *
- * @return string
- */
- public function getSendUrl()
- {
- return Mage::getUrl('*/*/sendmail', [
- 'id' => $this->getProductId(),
- 'cat_id' => $this->getCategoryId(),
- '_secure' => $this->_isSecure()
- ]);
- }
-
- /**
- * Return send friend model
- *
- * @return Mage_Sendfriend_Model_Sendfriend
- */
- protected function _getSendfriendModel()
- {
- return Mage::registry('send_to_friend_model');
- }
-
- /**
- * Check if user is allowed to send
- *
- * @return bool
- */
- public function canSend()
- {
- return !$this->_getSendfriendModel()->isExceedLimit();
- }
-}
diff --git a/app/code/core/Mage/Sendfriend/Helper/Data.php b/app/code/core/Mage/Sendfriend/Helper/Data.php
deleted file mode 100644
index df5ae0fca4b..00000000000
--- a/app/code/core/Mage/Sendfriend/Helper/Data.php
+++ /dev/null
@@ -1,124 +0,0 @@
-register();
- return $this;
- }
-}
diff --git a/app/code/core/Mage/Sendfriend/Model/Resource/Sendfriend.php b/app/code/core/Mage/Sendfriend/Model/Resource/Sendfriend.php
deleted file mode 100644
index 5c0e7834175..00000000000
--- a/app/code/core/Mage/Sendfriend/Model/Resource/Sendfriend.php
+++ /dev/null
@@ -1,93 +0,0 @@
-_init('sendfriend/sendfriend', 'log_id');
- }
-
- /**
- * Retrieve Sended Emails By Ip
- *
- * @param Mage_Sendfriend_Model_Sendfriend $object
- * @param int $ip
- * @param int $startTime
- * @param int $websiteId
- * @return int
- */
- public function getSendCount($object, $ip, $startTime, $websiteId = null)
- {
- $adapter = $this->_getReadAdapter();
- $select = $adapter->select()
- ->from($this->getMainTable(), ['count' => new Zend_Db_Expr('count(*)')])
- ->where('ip=:ip
- AND time>=:time
- AND website_id=:website_id');
- $bind = [
- 'ip' => $ip,
- 'time' => $startTime,
- 'website_id' => (int)$websiteId,
- ];
-
- $row = $adapter->fetchRow($select, $bind);
- return $row['count'];
- }
-
- /**
- * Add sended email by ip item
- *
- * @param int $ip
- * @param int $startTime
- * @param int $websiteId
- * @return $this
- */
- public function addSendItem($ip, $startTime, $websiteId)
- {
- $this->_getWriteAdapter()->insert(
- $this->getMainTable(),
- [
- 'ip' => $ip,
- 'time' => $startTime,
- 'website_id' => $websiteId
- ]
- );
- return $this;
- }
-
- /**
- * Delete Old logs
- *
- * @param int $time
- * @return $this
- */
- public function deleteLogsBefore($time)
- {
- $cond = $this->_getWriteAdapter()->quoteInto('time', $time);
- $this->_getWriteAdapter()->delete($this->getMainTable(), $cond);
-
- return $this;
- }
-}
diff --git a/app/code/core/Mage/Sendfriend/Model/Resource/Sendfriend/Collection.php b/app/code/core/Mage/Sendfriend/Model/Resource/Sendfriend/Collection.php
deleted file mode 100644
index ab99d4a502c..00000000000
--- a/app/code/core/Mage/Sendfriend/Model/Resource/Sendfriend/Collection.php
+++ /dev/null
@@ -1,32 +0,0 @@
-_init('sendfriend/sendfriend');
- }
-}
diff --git a/app/code/core/Mage/Sendfriend/Model/Resource/Setup.php b/app/code/core/Mage/Sendfriend/Model/Resource/Setup.php
deleted file mode 100644
index 385321ebf83..00000000000
--- a/app/code/core/Mage/Sendfriend/Model/Resource/Setup.php
+++ /dev/null
@@ -1,24 +0,0 @@
-_init('sendfriend/sendfriend');
- }
-
- /**
- * Retrieve Data Helper
- *
- * @return Mage_Sendfriend_Helper_Data
- */
- protected function _getHelper()
- {
- return Mage::helper('sendfriend');
- }
-
- /**
- * Retrieve Option Array
- *
- * @deprecated It Is a not Source model
- * @return array
- */
- public function toOptionArray()
- {
- return [];
- }
-
- /**
- * @return $this
- * @throws Mage_Core_Exception
- * @throws Mage_Core_Model_Store_Exception
- */
- public function send()
- {
- if ($this->isExceedLimit()) {
- Mage::throwException(Mage::helper('sendfriend')->__('You have exceeded limit of %d sends in an hour', $this->getMaxSendsToFriend()));
- }
-
- /** @var Mage_Core_Model_Translate $translate */
- $translate = Mage::getSingleton('core/translate');
- $translate->setTranslateInline(false);
-
- /** @var Mage_Core_Model_Email_Template $mailTemplate */
- $mailTemplate = Mage::getModel('core/email_template');
-
- $message = nl2br(htmlspecialchars($this->getSender()->getMessage()));
- $sender = [
- 'name' => $this->_getHelper()->escapeHtml($this->getSender()->getName()),
- 'email' => $this->_getHelper()->escapeHtml($this->getSender()->getEmail())
- ];
-
- $mailTemplate->setDesignConfig([
- 'area' => 'frontend',
- 'store' => Mage::app()->getStore()->getId()
- ]);
-
- foreach ($this->getRecipients()->getEmails() as $k => $email) {
- $name = $this->getRecipients()->getNames($k);
- $mailTemplate->sendTransactional(
- $this->getTemplate(),
- $sender,
- $email,
- $name,
- [
- 'name' => $name,
- 'email' => $email,
- 'product_name' => $this->getProduct()->getName(),
- 'product_url' => $this->getProduct()->getUrlInStore(),
- 'message' => $message,
- 'sender_name' => $sender['name'],
- 'sender_email' => $sender['email'],
- 'product_image' => Mage::helper('catalog/image')->init(
- $this->getProduct(),
- 'small_image'
- )->resize(75),
- ]
- );
- }
-
- $translate->setTranslateInline(true);
- $this->_incrementSentCount();
-
- return $this;
- }
-
- /**
- * Validate Form data
- *
- * @return bool|array
- */
- public function validate()
- {
- $errors = [];
-
- $name = $this->getSender()->getName();
- if (empty($name)) {
- $errors[] = Mage::helper('sendfriend')->__('The sender name cannot be empty.');
- }
-
- $email = $this->getSender()->getEmail();
- if (empty($email) || !Zend_Validate::is($email, 'EmailAddress')) {
- $errors[] = Mage::helper('sendfriend')->__('Invalid sender email.');
- }
-
- $message = $this->getSender()->getMessage();
- if (empty($message)) {
- $errors[] = Mage::helper('sendfriend')->__('The message cannot be empty.');
- }
-
- if (!$this->getRecipients()->getEmails()) {
- $errors[] = Mage::helper('sendfriend')->__('At least one recipient must be specified.');
- }
-
- // validate recipients email addresses
- foreach ($this->getRecipients()->getEmails() as $email) {
- if (!Zend_Validate::is($email, 'EmailAddress')) {
- $errors[] = Mage::helper('sendfriend')->__('An invalid email address for recipient was entered.');
- break;
- }
- }
-
- $maxRecipients = $this->getMaxRecipients();
- if (count($this->getRecipients()->getEmails()) > $maxRecipients) {
- $errors[] = Mage::helper('sendfriend')->__('No more than %d emails can be sent at a time.', $this->getMaxRecipients());
- }
-
- if (empty($errors)) {
- return true;
- }
-
- return $errors;
- }
-
- /**
- * Set cookie instance
- *
- * @param Mage_Core_Model_Cookie $cookie
- * @return $this
- */
- public function setCookie($cookie)
- {
- return $this->setData('_cookie', $cookie);
- }
-
- /**
- * Retrieve Cookie instance
- *
- * @throws Mage_Core_Exception
- * @return Mage_Core_Model_Cookie
- */
- public function getCookie()
- {
- $cookie = $this->_getData('_cookie');
- if (!$cookie instanceof Mage_Core_Model_Cookie) {
- Mage::throwException(Mage::helper('sendfriend')->__('Please define a correct Cookie instance.'));
- }
- return $cookie;
- }
-
- /**
- * Set Visitor Remote Address
- *
- * @param string|false $ipAddr the IP address on Long Format
- * @return $this
- */
- public function setRemoteAddr($ipAddr)
- {
- $this->setData('_remote_addr', $ipAddr);
- return $this;
- }
-
- /**
- * Retrieve Visitor Remote Address
- *
- * @return int
- */
- public function getRemoteAddr()
- {
- return $this->_getData('_remote_addr');
- }
-
- /**
- * Set Website Id
- *
- * @param int|string|null $id - website id
- * @return $this
- */
- public function setWebsiteId($id)
- {
- $this->setData('_website_id', $id);
- return $this;
- }
-
- /**
- * Retrieve Website Id
- *
- * @return int
- */
- public function getWebsiteId()
- {
- return $this->_getData('_website_id');
- }
-
- /**
- * Set Recipients
- *
- * @param array $recipients
- * @return $this
- */
- public function setRecipients($recipients)
- {
- // validate array
- if (!is_array($recipients) || !isset($recipients['email'])
- || !isset($recipients['name']) || !is_array($recipients['email'])
- || !is_array($recipients['name'])
- ) {
- return $this;
- }
-
- $emails = [];
- $names = [];
- foreach ($recipients['email'] as $k => $email) {
- if (!isset($emails[$email]) && isset($recipients['name'][$k])) {
- $emails[$email] = true;
- $names[] = $recipients['name'][$k];
- }
- }
-
- if ($emails) {
- $emails = array_keys($emails);
- }
-
- return $this->setData('_recipients', new Varien_Object([
- 'emails' => $emails,
- 'names' => $names
- ]));
- }
-
- /**
- * Retrieve Recipients object
- *
- * @return Varien_Object
- */
- public function getRecipients()
- {
- $recipients = $this->_getData('_recipients');
- if (!$recipients instanceof Varien_Object) {
- $recipients = new Varien_Object([
- 'emails' => [],
- 'names' => []
- ]);
- $this->setData('_recipients', $recipients);
- }
- return $recipients;
- }
-
- /**
- * Set product instance
- *
- * @param Mage_Catalog_Model_Product $product
- * @return $this
- */
- public function setProduct($product)
- {
- return $this->setData('_product', $product);
- }
-
- /**
- * Retrieve Product instance
- *
- * @throws Mage_Core_Exception
- * @return Mage_Catalog_Model_Product
- */
- public function getProduct()
- {
- $product = $this->_getData('_product');
- if (!$product instanceof Mage_Catalog_Model_Product) {
- Mage::throwException(Mage::helper('sendfriend')->__('Please define a correct Product instance.'));
- }
- return $product;
- }
-
- /**
- * Set Sender Information array
- *
- * @param array $sender
- * @return $this
- */
- public function setSender($sender)
- {
- if (!is_array($sender)) {
- Mage::helper('sendfriend')->__('Invalid Sender Information');
- }
-
- return $this->setData('_sender', new Varien_Object($sender));
- }
-
- /**
- * Retrieve Sender Information Object
- *
- * @throws Mage_Core_Exception
- * @return Varien_Object
- */
- public function getSender()
- {
- $sender = $this->_getData('_sender');
- if (!$sender instanceof Varien_Object) {
- Mage::throwException(Mage::helper('sendfriend')->__('Please define the correct Sender information.'));
- }
- return $sender;
- }
-
- /**
- * @deprecated after 1.3.2.4
- * For get count sent letters use Mage_Sendfriend_Model_Sendfriend::getSentCount
- * or Mage_Sendfriend_Model_Sendfriend::isExceedLimit
- *
- * @param int $ip
- * @param int $startTime
- * @return int
- */
- public function getSendCount($ip = null, $startTime = null)
- {
- if (is_null($ip)) {
- $ip = $this->getRemoteAddr();
- }
- if (is_null($startTime)) {
- $startTime = time() - $this->_getHelper()->getPeriod();
- }
-
- return $this->_getResource()->getSendCount($this, $ip, $startTime);
- }
-
- /**
- * Get max allowed uses of "Send to Friend" function per hour
- *
- * @return int
- */
- public function getMaxSendsToFriend()
- {
- return $this->_getHelper()->getMaxEmailPerPeriod();
- }
-
- /**
- * Get current Email "Send to friend" template
- *
- * @return string
- */
- public function getTemplate()
- {
- return $this->_getHelper()->getEmailTemplate();
- }
-
- /**
- * Get max allowed recipients for "Send to a Friend" function
- *
- * @return int
- */
- public function getMaxRecipients()
- {
- return $this->_getHelper()->getMaxRecipients();
- }
-
- /**
- * Check if user is allowed to email product to a friend
- *
- * @return bool
- */
- public function canEmailToFriend()
- {
- return $this->_getHelper()->isEnabled();
- }
-
- /**
- * Check if user is exceed limit
- *
- * @return bool
- */
- public function isExceedLimit()
- {
- return $this->getSentCount() >= $this->getMaxSendsToFriend();
- }
-
- /**
- * Return count of sent in last period
- *
- * @param bool $useCache - flag, is allow to use value of attribute of model if it is processed last time
- * @return int
- */
- public function getSentCount($useCache = true)
- {
- if ($useCache && !is_null($this->_sentCount)) {
- return $this->_sentCount;
- }
-
- switch ($this->_getHelper()->getLimitBy()) {
- case Mage_Sendfriend_Helper_Data::CHECK_COOKIE:
- return $this->_sentCount = $this->_sentCountByCookies(false);
- case Mage_Sendfriend_Helper_Data::CHECK_IP:
- return $this->_sentCount = $this->_sentCountByIp(false);
- default:
- return 0;
- }
- }
-
- /**
- * Increase count of sent
- *
- * @return int
- */
- protected function _incrementSentCount()
- {
- switch ($this->_getHelper()->getLimitBy()) {
- case Mage_Sendfriend_Helper_Data::CHECK_COOKIE:
- return $this->_sentCount = $this->_sentCountByCookies(true);
- case Mage_Sendfriend_Helper_Data::CHECK_IP:
- return $this->_sentCount = $this->_sentCountByIp(true);
- default:
- return 0;
- }
- }
-
- /**
- * Return count of sent in last period by cookie
- *
- * @param bool $increment - flag, increase count before return value
- * @return int
- */
- protected function _sentCountByCookies($increment = false)
- {
- $cookie = $this->_getHelper()->getCookieName();
- $time = time();
- $newTimes = [];
-
- $oldTimes = $this->_lastCookieValue[$cookie] ?? $this->getCookie()->get($cookie);
-
- if ($oldTimes) {
- $oldTimes = explode(',', $oldTimes);
- foreach ($oldTimes as $oldTime) {
- $periodTime = $time - $this->_getHelper()->getPeriod();
- if (is_numeric($oldTime) && $oldTime >= $periodTime) {
- $newTimes[] = $oldTime;
- }
- }
- }
-
- if ($increment) {
- $newTimes[] = $time;
- $newValue = implode(',', $newTimes);
- $this->getCookie()->set($cookie, $newValue);
- $this->_lastCookieValue[$cookie] = $newValue;
- }
-
- return count($newTimes);
- }
- /**
- * Return count of sent in last period by IP address
- *
- * @param bool $increment - flag, increase count before return value
- * @return int
- */
- protected function _sentCountByIp($increment = false)
- {
- $time = time();
- $period = $this->_getHelper()->getPeriod();
- $websiteId = $this->getWebsiteId();
-
- if ($increment) {
- // delete expired logs
- $this->_getResource()->deleteLogsBefore($time - $period);
- // add new item
- $this->_getResource()->addSendItem($this->getRemoteAddr(), $time, $websiteId);
- }
-
- return $this->_getResource()->getSendCount($this, $this->getRemoteAddr(), time() - $period, $websiteId);
- }
- /**
- * Register self in global register with name send_to_friend_model
- *
- * @return $this
- */
- public function register()
- {
- if (!Mage::registry('send_to_friend_model')) {
- Mage::register('send_to_friend_model', $this);
- }
- return $this;
- }
-
- /**
- * @deprecated after 1.3.2.4
- * use Mage_Sendfriend_Model_Sendfriend::_sentCountByCookies
- *
- * @return int
- */
- protected function _amountByCookies()
- {
- return $this->_sentCountByCookies(true);
- }
-
- /**
- * @deprecated after 1.3.2.4
- * use Mage_Sendfriend_Model_Sendfriend::_sentCountByIp
- *
- * @return int
- */
- protected function _amountByIp()
- {
- return $this->_sentCountByIp(true);
- }
-}
diff --git a/app/code/core/Mage/Sendfriend/controllers/ProductController.php b/app/code/core/Mage/Sendfriend/controllers/ProductController.php
deleted file mode 100644
index 09fb1248a52..00000000000
--- a/app/code/core/Mage/Sendfriend/controllers/ProductController.php
+++ /dev/null
@@ -1,193 +0,0 @@
-isEnabled()) {
- $this->norouteAction();
- return $this;
- }
-
- if (!$helper->isAllowForGuest() && !$session->authenticate($this)) {
- $this->setFlag('', self::FLAG_NO_DISPATCH, true);
- if ($this->getRequest()->getActionName() == 'sendemail') {
- $session->setBeforeAuthUrl(Mage::getUrl('*/*/send', [
- '_current' => true
- ]));
- Mage::getSingleton('catalog/session')
- ->setSendfriendFormData($this->getRequest()->getPost());
- }
- }
-
- return $this;
- }
-
- /**
- * Initialize Product Instance
- *
- * @return Mage_Catalog_Model_Product|false
- */
- protected function _initProduct()
- {
- $productId = (int)$this->getRequest()->getParam('id');
- if (!$productId) {
- return false;
- }
- $product = Mage::getModel('catalog/product')
- ->load($productId);
- if (!$product->getId() || !$product->isVisibleInCatalog()) {
- return false;
- }
-
- Mage::register('product', $product);
- return $product;
- }
-
- /**
- * Initialize send friend model
- *
- * @return Mage_Sendfriend_Model_Sendfriend
- */
- protected function _initSendToFriendModel()
- {
- $model = Mage::getModel('sendfriend/sendfriend');
- $model->setRemoteAddr(Mage::helper('core/http')->getRemoteAddr(true));
- $model->setCookie(Mage::app()->getCookie());
- $model->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
-
- Mage::register('send_to_friend_model', $model);
-
- return $model;
- }
-
- /**
- * Show Send to a Friend Form
- *
- * @return void
- */
- public function sendAction()
- {
- $product = $this->_initProduct();
- $model = $this->_initSendToFriendModel();
-
- if (!$product) {
- $this->_forward('noRoute');
- return;
- }
-
- if ($model->getMaxSendsToFriend() && $model->isExceedLimit()) {
- Mage::getSingleton('catalog/session')->addNotice(
- $this->__('The messages cannot be sent more than %d times in an hour', $model->getMaxSendsToFriend())
- );
- }
-
- $this->loadLayout();
- $this->_initLayoutMessages('catalog/session');
-
- Mage::dispatchEvent('sendfriend_product', ['product' => $product]);
- $data = Mage::getSingleton('catalog/session')->getSendfriendFormData();
- if ($data) {
- Mage::getSingleton('catalog/session')->setSendfriendFormData(true);
- $block = $this->getLayout()->getBlock('sendfriend.send');
- if ($block) {
- $block->setFormData($data);
- }
- }
-
- $this->renderLayout();
- }
-
- /**
- * Send Email Post Action
- *
- * @return $this|void
- */
- public function sendmailAction()
- {
- if (!$this->_validateFormKey()) {
- return $this->_redirect('*/*/send', ['_current' => true]);
- }
-
- $product = $this->_initProduct();
- $model = $this->_initSendToFriendModel();
- $data = $this->getRequest()->getPost();
-
- if (!$product || !$data) {
- $this->_forward('noRoute');
- return;
- }
-
- $categoryId = $this->getRequest()->getParam('cat_id', null);
- if ($categoryId) {
- $category = Mage::getModel('catalog/category')
- ->load($categoryId);
- $product->setCategory($category);
- Mage::register('current_category', $category);
- }
-
- $model->setSender($this->getRequest()->getPost('sender'));
- $model->setRecipients($this->getRequest()->getPost('recipients'));
- $model->setProduct($product);
-
- try {
- $validate = $model->validate();
- if ($validate === true) {
- $model->send();
- Mage::getSingleton('catalog/session')->addSuccess($this->__('The link to a friend was sent.'));
- $this->_redirectSuccess($product->getProductUrl());
- return;
- } else {
- if (is_array($validate)) {
- foreach ($validate as $errorMessage) {
- Mage::getSingleton('catalog/session')->addError($errorMessage);
- }
- } else {
- Mage::getSingleton('catalog/session')->addError($this->__('There were some problems with the data.'));
- }
- }
- } catch (Mage_Core_Exception $e) {
- Mage::getSingleton('catalog/session')->addError($e->getMessage());
- } catch (Exception $e) {
- Mage::getSingleton('catalog/session')
- ->addException($e, $this->__('Some emails were not sent.'));
- }
-
- // save form data
- Mage::getSingleton('catalog/session')->setSendfriendFormData($data);
-
- $this->_redirectError(Mage::getUrl('*/*/send', ['_current' => true]));
- }
-}
diff --git a/app/code/core/Mage/Sendfriend/etc/config.xml b/app/code/core/Mage/Sendfriend/etc/config.xml
deleted file mode 100644
index 84e160884fc..00000000000
--- a/app/code/core/Mage/Sendfriend/etc/config.xml
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-
-
-
- 1.6.0.1
-
-
-
-
-
- Mage_Sendfriend_Model
- sendfriend_resource
-
-
- Mage_Sendfriend_Model_Resource
- sendfriend_mysql4
- sendfriend_mysql4
-
-
-
-
-
-
-
-
-
-
- Mage_Sendfriend
- Mage_Sendfriend_Model_Resource_Setup
-
-
-
-
-
- Mage_Sendfriend_Block
-
-
-
-
- Mage_Sendfriend_Helper
-
-
-
-
-
- Send product to a friend
- product_share.html
- html
-
-
-
-
-
-
-
-
-
- Mage_Sendfriend.csv
-
-
-
-
-
-
-
-
-
-
- sendfriend/observer
- register
-
-
-
-
-
-
- standard
-
- Mage_Sendfriend
- sendfriend
-
-
-
-
-
-
- sendfriend.xml
-
-
-
-
-
-
-
- Mage_Sendfriend.csv
-
-
-
-
-
-
-
-
- 0
- sendfriend_email_template
- 0
- 5
- 5
- 0
-
-
-
-
diff --git a/app/code/core/Mage/Sendfriend/etc/system.xml b/app/code/core/Mage/Sendfriend/etc/system.xml
deleted file mode 100644
index 3fb9a64aaf5..00000000000
--- a/app/code/core/Mage/Sendfriend/etc/system.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
-
-
- Email to a Friend
- catalog
- 120
- 1
- 1
- 1
-
-
- Email Templates
- 1
- 1
- 1
- 1
-
-
- Enabled
- select
- adminhtml/system_config_source_yesno
- 1
- 1
- 1
- 1
- Warning! This functionality is vulnerable and can be abused to distribute spam.]]>
-
-
- Select Email Template
- select
- adminhtml/system_config_source_email_template
- 2
- 1
- 1
- 1
- 1
-
-
- Allow for Guests
- select
- adminhtml/system_config_source_yesno
- 3
- 1
- 1
- 1
- 1
-
-
- Max Recipients
- 4
- 1
- 1
- 1
- validate-digits
- 1
-
-
- Max Products Sent in 1 Hour
- 5
- 1
- 1
- 1
- validate-digits
- 1
-
-
- Limit Sending By
- select
- adminhtml/system_config_source_checktype
- 6
- 1
- 1
- 1
- 1
-
-
-
-
-
-
-
diff --git a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/install-1.6.0.0.php b/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/install-1.6.0.0.php
deleted file mode 100644
index b0a1847b9ad..00000000000
--- a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/install-1.6.0.0.php
+++ /dev/null
@@ -1,48 +0,0 @@
-startSetup();
-
-$table = $installer->getConnection()
- ->newTable($installer->getTable('sendfriend/sendfriend'))
- ->addColumn('log_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, [
- 'identity' => true,
- 'unsigned' => true,
- 'nullable' => false,
- 'primary' => true,
- ], 'Log ID')
- ->addColumn('ip', Varien_Db_Ddl_Table::TYPE_BIGINT, '20', [
- 'unsigned' => true,
- 'nullable' => false,
- 'default' => '0',
- ], 'Customer IP address')
- ->addColumn('time', Varien_Db_Ddl_Table::TYPE_INTEGER, null, [
- 'unsigned' => true,
- 'nullable' => false,
- 'default' => '0',
- ], 'Log time')
- ->addColumn('website_id', Varien_Db_Ddl_Table::TYPE_SMALLINT, null, [
- 'unsigned' => true,
- 'nullable' => false,
- 'default' => '0',
- ], 'Website ID')
- ->addIndex($installer->getIdxName('sendfriend/sendfriend', 'ip'), 'ip')
- ->addIndex($installer->getIdxName('sendfriend/sendfriend', 'time'), 'time')
- ->setComment('Send to friend function log storage table');
-$installer->getConnection()->createTable($table);
-
-$installer->endSetup();
diff --git a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-install-0.7.0.php b/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-install-0.7.0.php
deleted file mode 100644
index 39f18c81319..00000000000
--- a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-install-0.7.0.php
+++ /dev/null
@@ -1,32 +0,0 @@
-startSetup();
-
-$installer->run("
--- DROP TABLE IF EXISTS {$this->getTable('sendfriend_log')};
-CREATE TABLE {$this->getTable('sendfriend_log')} (
- `log_id` int(11) NOT NULL auto_increment,
- `ip` int(11) NOT NULL default '0',
- `time` int(11) NOT NULL default '0',
- PRIMARY KEY (`log_id`),
- KEY `ip` (`ip`),
- KEY `time` (`time`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Send to friend function log storage table';
-");
-
-$installer->endSetup();
diff --git a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-0.7.1-0.7.2.php b/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-0.7.1-0.7.2.php
deleted file mode 100644
index 55b24088bb3..00000000000
--- a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-0.7.1-0.7.2.php
+++ /dev/null
@@ -1,25 +0,0 @@
-startSetup();
-
-$installer->run("
-ALTER TABLE `{$this->getTable('sendfriend/sendfriend')}`
- MODIFY COLUMN `ip` int (11) unsigned DEFAULT '0' NOT NULL;
-");
-
-$installer->endSetup();
diff --git a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-0.7.2-0.7.3.php b/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-0.7.2-0.7.3.php
deleted file mode 100644
index 530a12ba888..00000000000
--- a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-0.7.2-0.7.3.php
+++ /dev/null
@@ -1,47 +0,0 @@
-startSetup();
-
-$installer->getConnection()->dropKey($installer->getTable('sendfriend/sendfriend'), 'ip');
-$installer->getConnection()->dropKey($installer->getTable('sendfriend/sendfriend'), 'time');
-$installer->getConnection()->modifyColumn(
- $installer->getTable('sendfriend/sendfriend'),
- 'log_id',
- 'int(10) unsigned NOT NULL'
-);
-$installer->getConnection()->modifyColumn(
- $installer->getTable('sendfriend/sendfriend'),
- 'ip',
- 'bigint(20) NOT NULL DEFAULT 0'
-);
-$installer->getConnection()->modifyColumn(
- $installer->getTable('sendfriend/sendfriend'),
- 'time',
- 'int(10) unsigned NOT NULL'
-);
-$installer->getConnection()->addKey(
- $installer->getTable('sendfriend/sendfriend'),
- 'IDX_REMOTE_ADDR',
- ['ip']
-);
-$installer->getConnection()->addKey(
- $installer->getTable('sendfriend/sendfriend'),
- 'IDX_LOG_TIME',
- ['time']
-);
-$installer->endSetup();
diff --git a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-0.7.3-0.7.4.php b/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-0.7.3-0.7.4.php
deleted file mode 100644
index ec1db9189c2..00000000000
--- a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-0.7.3-0.7.4.php
+++ /dev/null
@@ -1,31 +0,0 @@
-startSetup();
-
-$installer->getConnection()->modifyColumn(
- $installer->getTable('sendfriend/sendfriend'),
- 'log_id',
- 'int(10) unsigned NOT NULL auto_increment'
-);
-$installer->getConnection()->addColumn(
- $installer->getTable('sendfriend/sendfriend'),
- 'website_id',
- 'smallint(5) NOT NULL'
-);
-
-$installer->endSetup();
diff --git a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-1.5.9.9-1.6.0.0.php b/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-1.5.9.9-1.6.0.0.php
deleted file mode 100644
index 7fdecdaeef2..00000000000
--- a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-1.5.9.9-1.6.0.0.php
+++ /dev/null
@@ -1,92 +0,0 @@
-startSetup();
-
-/**
- * Drop indexes
- */
-$installer->getConnection()->dropIndex(
- $installer->getTable('sendfriend/sendfriend'),
- 'IDX_REMOTE_ADDR'
-);
-
-$installer->getConnection()->dropIndex(
- $installer->getTable('sendfriend/sendfriend'),
- 'IDX_LOG_TIME'
-);
-
-/**
- * Change columns
- */
-$tables = [
- $installer->getTable('sendfriend/sendfriend') => [
- 'columns' => [
- 'log_id' => [
- 'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
- 'identity' => true,
- 'unsigned' => true,
- 'nullable' => false,
- 'primary' => true,
- 'comment' => 'Log ID'
- ],
- 'ip' => [
- 'type' => Varien_Db_Ddl_Table::TYPE_BIGINT,
- 'length' => 20,
- 'unsigned' => true,
- 'nullable' => false,
- 'default' => '0',
- 'comment' => 'Customer IP address'
- ],
- 'time' => [
- 'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
- 'unsigned' => true,
- 'nullable' => false,
- 'default' => '0',
- 'comment' => 'Log time'
- ],
- 'website_id' => [
- 'type' => Varien_Db_Ddl_Table::TYPE_SMALLINT,
- 'unsigned' => true,
- 'nullable' => false,
- 'default' => '0',
- 'comment' => 'Website ID'
- ]
- ],
- 'comment' => 'Send to friend function log storage table',
- 'engine' => 'InnoDB'
- ]
-];
-
-$installer->getConnection()->modifyTables($tables);
-
-/**
- * Add indexes
- */
-$installer->getConnection()->addIndex(
- $installer->getTable('sendfriend/sendfriend'),
- $installer->getIdxName('sendfriend/sendfriend', ['ip']),
- ['ip']
-);
-
-$installer->getConnection()->addIndex(
- $installer->getTable('sendfriend/sendfriend'),
- $installer->getIdxName('sendfriend/sendfriend', ['time']),
- ['time']
-);
-
-$installer->endSetup();
diff --git a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-1.6.0.0-1.6.0.1.php b/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-1.6.0.0-1.6.0.1.php
deleted file mode 100644
index cfe4bbc13aa..00000000000
--- a/app/code/core/Mage/Sendfriend/sql/sendfriend_setup/mysql4-upgrade-1.6.0.0-1.6.0.1.php
+++ /dev/null
@@ -1,34 +0,0 @@
-startSetup();
-
-$installer->getConnection()->changeColumn(
- $installer->getTable('sendfriend/sendfriend'),
- 'ip',
- 'ip',
- 'varbinary(16)'
-);
-
-$installer->getConnection()->update(
- $installer->getTable('sendfriend/sendfriend'),
- [
- 'ip' => new Zend_Db_Expr('UNHEX(HEX(CAST(ip as UNSIGNED INT)))')
- ]
-);
-
-$installer->endSetup();
diff --git a/app/design/frontend/base/default/layout/sendfriend.xml b/app/design/frontend/base/default/layout/sendfriend.xml
deleted file mode 100644
index 31b06679017..00000000000
--- a/app/design/frontend/base/default/layout/sendfriend.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
- Catalog Product Email to a Friend
-
- page/2columns-right.phtml
-
-
-
-
-
-
-
-
-
-
diff --git a/app/design/frontend/base/default/template/sendfriend/send.phtml b/app/design/frontend/base/default/template/sendfriend/send.phtml
deleted file mode 100644
index e17ea3e1994..00000000000
--- a/app/design/frontend/base/default/template/sendfriend/send.phtml
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-
-
- getMessagesBlock()->toHtml() ?>
-
-
__('Email to a Friend') ?>
-
-
-
-
diff --git a/app/design/frontend/rwd/default/template/sendfriend/send.phtml b/app/design/frontend/rwd/default/template/sendfriend/send.phtml
deleted file mode 100644
index 25d4284ade7..00000000000
--- a/app/design/frontend/rwd/default/template/sendfriend/send.phtml
+++ /dev/null
@@ -1,198 +0,0 @@
-
-getRecipientsCount(); ?>
-
-
-
- getMessagesBlock()->toHtml() ?>
-
-
__('Email to a Friend') ?>
-
-
-
- getBlockHtml('formkey')?>
-
__('Sender:') ?>
-
-
-
-
__('Recipient:') ?>
-
-
-
-
-
-
diff --git a/app/etc/modules/Mage_Sendfriend.xml b/app/etc/modules/Mage_Sendfriend.xml
deleted file mode 100644
index 7f1f12bab74..00000000000
--- a/app/etc/modules/Mage_Sendfriend.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
- true
- core
-
-
-
-
-
-
diff --git a/app/locale/en_US/Mage_Sendfriend.csv b/app/locale/en_US/Mage_Sendfriend.csv
deleted file mode 100644
index a3ec96de500..00000000000
--- a/app/locale/en_US/Mage_Sendfriend.csv
+++ /dev/null
@@ -1,38 +0,0 @@
-"Add Recipient","Add Recipient"
-"Allow for Guests","Allow for Guests"
-"An invalid email address for recipient was entered.","An invalid email address for recipient was entered."
-"At least one recipient must be specified.","At least one recipient must be specified."
-"Back","Back"
-"Catalog Product Email to a Friend","Catalog Product Email to a Friend"
-"Email Address","Email Address"
-"Email Address:","Email Address:"
-"Email Templates","Email Templates"
-"Email to a Friend","Email to a Friend"
-"Email:","Email:"
-"Enabled","Enabled"
-"Invalid Sender Information","Invalid Sender Information"
-"Invalid sender email.","Invalid sender email."
-"Limit Sending By","Limit Sending By"
-"Max Products Sent in 1 Hour","Max Products Sent in 1 Hour"
-"Max Recipients","Max Recipients"
-"Maximum %d email addresses allowed.","Maximum %d email addresses allowed."
-"Message:","Message:"
-"Name","Name"
-"Name:","Name:"
-"No more than %d emails can be sent at a time.","No more than %d emails can be sent at a time."
-"Please define a correct Cookie instance.","Please define a correct Cookie instance."
-"Please define a correct Product instance.","Please define a correct Product instance."
-"Please define the correct Sender information.","Please define the correct Sender information."
-"Recipient:","Recipient:"
-"Remove Email","Remove Email"
-"Select Email Template","Select Email Template"
-"Send Email","Send Email"
-"Send product to a friend","Send product to a friend"
-"Sender:","Sender:"
-"Some emails were not sent.","Some emails were not sent."
-"The link to a friend was sent.","The link to a friend was sent."
-"The message cannot be empty.","The message cannot be empty."
-"The messages cannot be sent more than %d times in an hour","The messages cannot be sent more than %d times in an hour"
-"The sender name cannot be empty.","The sender name cannot be empty."
-"There were some problems with the data.","There were some problems with the data."
-"You have exceeded limit of %d sends in an hour","You have exceeded limit of %d sends in an hour"