%PDF- %PDF-
| Direktori : /home/lightco1/luminero.com.au/plugins/system/ecom360akeeba/ |
| Current File : /home/lightco1/luminero.com.au/plugins/system/ecom360akeeba/ecom360akeeba.php |
<?php
/**
* @package CMC
* @author Compojoom <contact-us@compojoom.com>
* @date 2016-04-15
*
* @copyright Copyright (C) 2008 - 2016 compojoom.com - Daniel Dimitrov, Yves Hoppe. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
// No direct access
defined('_JEXEC') or die('Restricted access');
// get the cmcHelpers
JLoader::discover('CmcHelper', JPATH_ADMINISTRATOR . '/components/com_cmc/helpers/');
/**
* Class plgSystemECom360Akeeba
*
* @since 1.3
*/
class plgSystemECom360Akeeba extends JPlugin
{
/**
* @param $row
* @param $info
*
* @return bool
*/
public function onAKSubscriptionChange($row, $info)
{
$app = JFactory::getApplication();
// This plugin is only intended for the frontend
if ($app->isAdmin())
{
return true;
}
if ($row->state == 'N' || $row->state == 'X')
{
return;
}
if (array_key_exists('state', (array) $info['modified']) && in_array($row->state, array('P', 'C')))
{
if ($row->enabled)
{
if (is_object($info['previous']) && $info['previous']->state == 'P')
{
// A pending subscription just got paid
$this->notifyMC($row, $info);
}
else
{
// A new subscription just got paid; send new subscription notification
$this->notifyMC($row, $info);
}
}
elseif ($row->state == 'C')
{
if ($row->contact_flag <= 2)
{
// A new subscription which is for a renewal (will be active in a future date)
$this->notifyMC($row, $info);
}
}
else
{
// A new subscription which is pending payment by the processor
$this->notifyMC($row, $info);
}
}
}
private function notifyMC($row, $info)
{
$session = JFactory::getSession();
// Trigger plugin only if user comes from Mailchimp
if (!$session->get('mc', '0'))
{
return;
}
// The shop data
$shop = new stdClass;
$shop->id = $this->params->get("store_id", 42);
$shop->name = $this->params->get('store_name', 'Akeeba store');
$shop->list_id = $this->params->get('list_id');
$shop->currency_code = $this->params->get('currency_code', 'EUR');
$akeebasubsLevel = FOFModel::getTmpInstance('Levels', 'AkeebasubsModel')->setId($row->akeebasubs_level_id)->getItem();
$customer = $this->getCustomer($row->user_id);
$products = array(
0 => array(
'id' => (string) $row->getId(),
"product_id" => (string) $row->akeebasubs_level_id,
'title' => $akeebasubsLevel->title,
'product_variant_id' => (string) $row->akeebasubs_level_id,
'product_variant_title' => $akeebasubsLevel->title,
'quantity' => 1,
'price' => $row->gross_amount,
'published_at_foreign' => $row->publish_up,
'description' => $akeebasubsLevel->description,
'type' => 'subscription'
)
);
// The order data
$order = new stdClass;
$order->id = $row->getId();
$order->currency_code = JComponentHelper::getParams('com_akeebasubs')->get('currency', 'EUR');
$order->payment_tax = (double) $row->tax_amount;
$order->order_total = (double) $row->gross_amount;
$order->processed_at_foreign = $row->created_on;
$chimp = new CmcHelperChimp;
return $chimp->addEcomOrder(
$session->get('mc_cid', '0'),
$shop,
$order,
$products,
$customer
);
}
private function getCustomer($id)
{
$joomlaUser = JFactory::getUser($id);
$user = new stdClass;
$user->email_address = $joomlaUser->email;
$name = explode(' ', $joomlaUser->name);
$user->first_name = isset($name[0]) ? $name[0] : '';
$user->last_name = isset($name[1]) ? $name[1] : '';
$user->id = md5($joomlaUser->email);
$user->opt_in_status = false;
return $user;
}
}