%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/lightco1/upgrade.lightco.com.au/plugins/user/joomlamailer/
Upload File :
Create Path :
Current File : /home/lightco1/upgrade.lightco.com.au/plugins/user/joomlamailer/joomlamailer.php

<?php

/**

* Copyright (C) 2015  freakedout (www.freakedout.de)

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this program.  If not, see <http://www.gnu.org/licenses/>.

**/



defined('JPATH_PLATFORM') or die;



if (!class_exists('joomlamailerMCAPI')) {

    require_once(JPATH_ADMINISTRATOR . '/components/com_joomailermailchimpintegration/libraries/MCAPI.class.php');

}



class PlgUserJoomlamailer extends JPlugin {



    private static $MC = null;

    private static $oldEmail;

    protected $api;

    protected $debug;

    protected $listId;

	protected $autoloadLanguage = true;



	public function __construct(&$subject, $config) {

        if (!class_exists('joomlamailerMCAPI')) {

            return;

        }



		parent::__construct($subject, $config);

		JFormHelper::addFieldPath(__DIR__ . '/fields');



        $this->api = $this->getApiInstance();

        $this->debug = JFactory::getConfig()->get('debug');

        $this->listId = $this->params->get('listid');

	}



    public function onAfterRender() {

        // "dirty hack" to make tabs appear in backend user profile

        $option = JRequest::getCmd('option');

        $view = JRequest::getVar('view');

        if (JFactory::getApplication()->isAdmin() && $option == 'com_users' && $view == 'user') {

            $body = JResponse::getBody();

            $script = '<script>!function($){

                $(document).ready(function(){

                    $("a[href=#joomlamailer_merges]").text("Newsletter Fields");

                    $("a[href=#joomlamailer_groupings]").text("Newsletter Groups");

                });

            }(jQuery);</script>';

            $body = preg_replace('#(</body>)#i', $script . '$1', $body);

            JResponse::setBody($body);

        }

    }



	public function onContentPrepareData($context, $data) {

		// Check we are manipulating a valid form.

		if (!in_array($context, array('com_users.profile', 'com_users.user', 'com_users.registration', 'com_admin.profile'))) {

			return true;

		}



		if (is_object($data)) {

			$userId = isset($data->id) ? $data->id : 0;



			if (!isset($data->joomlamailer) && $userId > 0) {

                $user = JFactory::getUser($userId);



                // check if user is subscribed

                $db = JFactory::getDBO();

                $query = $db->getQuery(true)

                    ->select(1)

                    ->from($db->qn('#__joomailermailchimpintegration'))

                    ->where($db->qn('userid') . ' = ' . $db->q($userId))

                    ->where($db->qn('listid') . ' = ' . $db->q($this->listId));

                try {

                    $isSubscribed = ($db->setQuery($query)->loadResult() ? 1 : 0);

                } catch (Exception $e) {

                    $isSubscribed = false;

                }



                $data->joomlamailer['subscribe'] = $isSubscribed;

                if (!JHtml::isRegistered('users.subscribe')) {

                    JHtml::register('users.subscribe', array(__CLASS__, 'subscribe'));

                }



                if (!$isSubscribed) {

                    return;

                }



                $userData = $this->api->listMemberInfo($this->listId, $user->email);

                if (isset($userData['merges']) && count($userData['merges'])) {

                    foreach ($userData['merges'] as $key => $value) {

                        $data->joomlamailer_merges[$key] = $value;

                    }

                }

                if (isset($userData['merges']['GROUPINGS']) && count($userData['merges']['GROUPINGS'])) {

                    foreach ($userData['merges']['GROUPINGS'] as $group) {

                        $data->joomlamailer_groupings[$group['id']] = $group['groups'];

                    }

                }



                if (!JHtml::isRegistered('users.birthday')) {

                    JHtml::register('users.birthday', array(__CLASS__, 'birthday'));

                }

                if (!JHtml::isRegistered('users.address')) {

                    JHtml::register('users.address', array(__CLASS__, 'address'));

                }

			}

		}



		return true;

	}



    public static function subscribe($value) {

        return JText::_(($value ? 'JYES' : 'JNO'));

    }



    public static function birthday($value) {

        jimport('joomla.plugin.helper');

        $plugin = JPluginHelper::getPlugin('user', 'joomlamailer');

        $pluginParams = new JRegistry($plugin->params);

        $dateFormat = $pluginParams->get('dateFormat');

        if ($dateFormat == 'DD/MM') {

            $value = explode('/', $value);

            $value = array_reverse($value);

            $value = implode('/', $value);

        }



        return $value;

    }



    public static function address($value) {

        return (is_array($value) ? implode(', ', $value) : '-');

    }



	/**

	 * adds additional fields to the user editing form

	 *

	 * @param   JForm  $form  The form to be altered.

	 * @param   mixed  $data  The associated data for the form.

	 *

	 * @return  boolean

	 *

	 * @since   1.6

	 */

	public function onContentPrepareForm($form, $data) {

		if (!($form instanceof JForm)) {

			$this->_subject->setError('JERROR_NOT_A_FORM');

			return false;

		}



        if (!$this->listId) {

            if ($this->debug) {

                $this->_subject->setError('No list selected in joomlamailer user plugin config!');

                return false;

            }



            return;

        }



		// Check we are manipulating a valid form.

		$name = $form->getName();

		if (!in_array($name, array('com_admin.profile', 'com_users.user', 'com_users.profile', 'com_users.registration'))) {

			return true;

		}



		// Add the registration fields to the form.

		JForm::addFormPath(__DIR__ . '/profiles');

		$form->loadFile('profile', false);



        $mergeFields = $this->api->listMergeVars($this->listId);

        if (is_array($mergeFields) && count($mergeFields)) {

            $mergeFieldsConfig = $this->params->get('fields', array());



            $elements = array();

            foreach ($mergeFields as $field) {

                if (in_array($field['tag'], array('EMAIL', 'FNAME', 'LNAME', 'SIGNUPAPI'))

                    || !in_array($field['tag'], $mergeFieldsConfig) || !$field['show'] || !$field['public']) {

                    continue;

                }



                $attr = $options = '';

                switch ($field['field_type']) {

                    case 'url':

                        $type = 'url';

                        break;

                    case 'birthday':

                        $type = 'birthday';

                        $attr = 'format="' . $this->params->get('dateFormat') . '"';

                        $field['helptext'] = $this->params->get('dateFormat');

                        break;

                    case 'address':

                        $type = 'address';

                        break;

                    case 'phone':

                        $type = 'tel';

                        break;

                    case 'number':

                        $type = 'number';

                        break;

                    case 'radio':

                        $type = 'radio';

                        if (isset($field['choices'])) {

                            foreach ($field['choices'] as $choice) {

                                $options .= '<option value="' . $choice . '">' . $choice . '</option>';

                            }

                        }

                        break;

                    case 'dropdown':

                        $type = 'list';

                        if (isset($field['choices'])) {

                            foreach ($field['choices'] as $choice) {

                                $options .= '<option value="' . $choice . '">' . $choice . '</option>';

                            }

                        }

                        $attr = 'multiple="false"';

                        break;

                    default:

                        $type = 'text';

                }

                $elements[] = new SimpleXMLElement('<fieldset name="joomlamailer_merges">

                    <field name="' . $field['tag'] . '"

                        type="' . $type . '"

                        label="' . $field['name'] . '"

                        description="' . $field['helptext'] . '"

                        class=""

                        size=""

                        required="' . $field['req'] . '" ' .

                        $attr . '>' .

                        $options . '

                        </field>

                </fieldset>');

            }

            if (count($elements)) {

                $form->setFields($elements, 'joomlamailer_merges');

            }

        }



        $interests = $this->api->listInterestGroupings($this->listId);

        if (is_array($interests) && count($interests)) {

            $interestsConfig = $this->params->get('interests', array());



            $elements = array();

            foreach ($interests as $interest) {

                if (!in_array($interest['id'], $interestsConfig)) {

                    continue;

                }

                $attr = '';

                switch ($interest['form_field']) {

                    case 'dropdown':

                        $type = 'list';

                        break;

                    case 'radio':

                        $type = 'radio';

                        break;

                    case 'checkboxes':

                        $type = 'checkbox';

                        $attr = 'multiple="true"';

                        break;

                }



                $options = '';

                foreach ($interest['groups'] as $group) {

                    $options .= '<option value="' . $group['name'] . '">' . $group['name'] . '</option>';

                }



                $elements[] = new SimpleXMLElement('<fieldset name="joomlamailer_groupings">

                    <field name="' . $interest['id'] . ($interest['form_field'] == 'checkbox' ? '][' : '') . '"

                        type="' . $type . '"

                        label="' . $interest['name'] . '" ' .

                        $attr . '>' .

                        $options . '

                        </field>

                </fieldset>');

            }

            if (count($elements)) {

                $form->setFields($elements, 'joomlamailer_groupings');

            }

        }



		return true;

	}



    /**

     * Method is called before user data is stored in the database

     *

     * @param   array    $user   Holds the old user data.

     * @param   boolean  $isnew  True if a new user is stored.

     * @param   array    $data   Holds the new user data.

     *

     * @return    boolean

     */

    public function onUserBeforeSave($oldUser, $isNew, $newUser) {

        self::$oldEmail = $oldUser['email'];

    }



	/**

	 * saves user profile data

	 *

	 * @param   array    $data    entered user data

	 * @param   boolean  $isNew   true if this is a new user

	 * @param   boolean  $success true if saving the user worked

	 * @param   string   $error   error message

	 *

	 * @return bool

	 */

	public function onUserAfterSave($data, $isNew, $success, $error) {

        if (!$this->listId || $success !== true) {

            return;

        }

        //var_dump($data);die;



        $db = JFactory::getDBO();

        $option = JRequest::getCmd('option');

        $task = JRequest::getVar('task');



        $userId = JArrayHelper::getValue($data, 'id', 0, 'int');

        $user = JFactory::getUser($userId);

        $email = $data['email'];



        //file_put_contents('register' . microtime(true) . '.txt', print_r($data, true) . "\n" . print_r($isNew, true)

        //  . "\n" . print_r($option, true) . "\n" . print_r($task, true) . "\n" . print_r($_POST, true));



        if (($option == 'com_users' && $task == 'activate') || ($option == 'com_comprofiler' && $task == 'confirm')

            || ($option == 'com_community' && $task == 'activate' && $data['activation'] == '')) {

            $query = $db->getQuery(true)

                ->select($db->qn(array('fname', 'lname', 'email', 'groupings', 'merges')))

                ->from($db->qn('#__joomailermailchimpintegration_signup'))

                ->where($db->qn('email') . ' = ' . $db->q($email));

            try {

                $res = $db->setQuery($query)->loadObject();

            } catch (Exception $e) {}

            if (!$res) {

                return;

            }



            // create hidden signup date merge var if it doesn't exist

            $createSignupdateMerge = true;

            $mergeVarsApi = $this->api->listMergeVars($this->listId);

            foreach ($mergeVarsApi as $mv) {

                if ($mv['tag'] == 'SIGNUPAPI') {

                    $createSignupdateMerge = false;

                    break;

                }

            }

            if ($createSignupdateMerge){

                $this->api->listMergeVarAdd($this->listId, 'SIGNUPAPI', 'date added (API)',

                    array('field_type' => 'date', 'public' => false));

            }



            // build API data object

            $mergeVars = json_decode($res->merges, true);

            $groupings = json_decode($res->groupings, true);



            $mergeVars = array_merge(array(

                'FNAME' => $res->fname,

                'LNAME' => $res->lname,

                'INTERESTS' => '',

                'GROUPINGS' => $groupings,

                'OPTINIP' => $this->getIpAddress(),

                'SIGNUPAPI' => date('Y-m-d')

            ), $mergeVars);



            //Subscribe the user

            $emailType = '';

            $doubleOptin = $updateExisting = $replaceInterests = $sendWelcome = false;



            $this->api->listSubscribe($this->listId, $email, $mergeVars, $emailType, $doubleOptin, $updateExisting,

                $replaceInterests, $sendWelcome);



            $query = $db->getQuery(true)

                ->delete($db->qn('#__joomailermailchimpintegration_signup'))

                ->where($db->qn('email') . ' = ' . $db->q($email));

            try {

                $db->setQuery($query)->execute();

            } catch (Exception $e) {}



            // 211 = List_InvalidOption; 215 = List_NotSubscribed

            if ($this->api->errorCode && !in_array($this->api->errorCode, array(211, 215))) {

                $this->_subject->setError("Unable to subscribe to the newsletter list!\n\tCode=" . $this->api->errorCode

                    . "\n\tMsg=" . $this->api->errorMessage . "\n");

                return false;

            } else {

                $query = $db->getQuery(true)

                    ->insert($db->qn('#__joomailermailchimpintegration'))

                    ->set($db->qn('userid') . ' = ' . $db->q($userId))

                    ->set($db->qn('email') . ' = ' . $db->q($email))

                    ->set($db->qn('listid') . ' = ' . $db->q($this->listId));

                try {

                    $db->setQuery($query)->execute();

                } catch (Exception $e) {}

            }



            return;

        }



        // process registration / profile form

        if ($option == 'com_community') {

            if (!$isNew || $task != 'registerUpdateProfile') {

                return;

            }

            $query = $db->getQuery(true)

                ->select($db->qn('id'))

                ->from($db->qn('#__community_fields'))

                ->where($db->qn('fieldcode') . ' = ' . $db->q('newsletter'));

            try {

                $fieldId = $db->setQuery($query)->loadResult();

            } catch (Exception $e) {}

            if (!$fieldId) {

                return;

            }

            $subscribe = (JRequest::getVar('field' . $fieldId, false) ? 1 : 0);

            $name = $data['name'];

        } else  if ($option == 'com_comprofiler') {

            $subscribe = JRequest::getVar('cb_newsletter', false);

            $name = JRequest::getVar('name');

        } else  if ($option == 'com_virtuemart') {

            $subscribe = JRequest::getVar('newsletter', false);

            $name = JRequest::getVar('name');

        } else {

            $jform = JRequest::getVar('jform');

            $subscribe = $jform['joomlamailer']['subscribe'];

            $name = $jform['name'];

        }



        $name = explode(' ', $name);

        $fname = $name[0];

        $lname = '';

        if (count($name) > 1) {

            unset($name[0]);

            $lname = implode(' ', $name);

        }



        // Check if the user is already activated and is subscribed

        $isSubscribed = false;

        if (!$user->activation && $user->email && self::$oldEmail) {

            $userlists = $this->api->listsForEmail(self::$oldEmail);

            if ($userlists && in_array($this->listId, $userlists)) {

                $isSubscribed = true;

            }

        }



        // User wishes to subscribe/update interests

        if ($subscribe == 1) {

            // Get merge vars from API

            $mergeFields = $this->api->listMergeVars($this->listId);

            $mergeFieldsConfig = $this->params->get('fields');

            // Get interest groupings from API

            $interests = $this->api->listInterestGroupings($this->listId);

            $interestsConfig = $this->params->get('interests');



            $merges = $groupings = array();



            if ($option == 'com_users') {

                if ($mergeFields && $mergeFieldsConfig) {

                    foreach ($mergeFields as $field) {

                        if (in_array($field['tag'], array('EMAIL', 'FNAME', 'LNAME', 'SIGNUPAPI'))) {

                            continue;

                        }

                        $value = @$jform['joomlamailer_merges'][$field['tag']];

                        if ($value) {

                            if ($field['field_type'] == 'birthday') {

                                $value = $value['month'] . '/' . $value['day'];

                            }

                            $merges[$field['tag']] = $value;

                        }

                    }

                }



                if ($interests && $interestsConfig) {

                    foreach ($interests as $interest) {

                        if (!in_array($interest['id'], $interestsConfig)) {

                            continue;

                        }

                        $postData = @$jform['joomlamailer_groupings'][$interest['id']];

                        if ($postData) {

                            $groups = array();

                            if (is_array($postData)) {

                                foreach ($postData as $selected) {

                                    foreach ($interest['groups'] as $group) {

                                        if ($selected == $group['bit']) {

                                            $groups[] = $group['name'];

                                            continue 2;

                                        }

                                    }

                                }

                            } else {

                                $groups[] = $postData;

                            }



                            $groupings[$interest['name']] = array(

                                'name'   => $interest['name'],

                                'id'     => $interest['id'],

                                'groups' => implode(',', $groups)

                            );

                        }

                    }

                }

            } else if (in_array($option, array('com_comprofiler', 'com_community', 'com_virtuemart'))) {

                // Get custom fields

                $query = $db->getQuery(true)

                    ->select($db->qn(array('dbfield', 'grouping_id', 'type', 'framework'), array('dbfield', 'gid', 'type', 'framework')))

                    ->from($db->qn('#__joomailermailchimpintegration_custom_fields'))

                    ->where($db->qn('listID') . ' = ' . $db->q($this->listId));

                $db->setQuery($query);

                $customFields = $db->loadAssocList();



                if ($customFields) {

                    // loop over merge vars

                    if ($mergeFields) {

                        foreach ($mergeFields as $f) {

                            foreach ($customFields as $cf) {

                                if ($cf['type'] == 'field') {

                                    if($f['tag'] == strtoupper($cf['gid'])) {

                                        if (($option == 'com_comprofiler' && $cf['framework'] == 'CB')

                                            || ($option == 'com_virtuemart' && $cf['framework'] == 'VM')) {

                                            if ($f['field_type'] == 'date') {

                                                if ($option == 'com_virtuemart') {

                                                    $valDay = JRequest::getVar('birthday_selector_day');

                                                    $valMonth = JRequest::getVar('birthday_selector_month');

                                                    $valYear = JRequest::getVar('birthday_selector_year');

                                                    $val = $valMonth . '/' . $valDay . '/' . $valYear;

                                                } else {

                                                    $val = JRequest::getVar($cf['dbfield']);

                                                }

                                                $merges[$f['tag']] = substr($val, 3, 2) . '-' . substr($val, 0, 2) .

                                                    '-' . substr($val, 6, 4);

                                            } else {

                                                $val = JRequest::getVar($cf['dbfield']);

                                                $merges[$f['tag']] = $val;

                                            }

                                        } else {

                                            if (JRequest::getVar('field' . $cf['dbfield'], 0)) {

                                                $val = JRequest::getVar('field' . $cf['dbfield']);

                                                if ($f['field_type'] == 'date') {

                                                    $merges[$f['tag']] = $val[2] . '-' . $val[1] . '-' . $val[0];

                                                } else {

                                                    $merges[$f['tag']] = $val;

                                                }

                                            }

                                        }

                                    }

                                }

                            }

                        }

                    }



                    // loop over groupings

                    if ($interests) {

                        foreach ($interests as $i) {

                            foreach ($customFields as $cf) {

                                if ($cf['type'] == 'group') {

                                    if ($i['id'] == $cf['gid']) {

                                        $groups = array();

                                        if (($option == 'com_comprofiler' && $cf['framework'] == 'CB')

                                            || ($option == 'com_virtuemart' && $cf['framework'] == 'VM')){

                                            $field = JRequest::getVar($cf['dbfield']);

                                        } else {

                                            if (JRequest::getVar('field' . $cf['dbfield'], 0)) {

                                                $field = JRequest::getVar('field' . $cf['dbfield']);

                                            }

                                        }

                                        if (isset($field) && is_array($field)) {

                                            foreach ($field as $g) {

                                                foreach ($i['groups'] as $gg) {

                                                    if ($g == $gg['name']) {

                                                        $groups[] = $gg['name'];

                                                    }

                                                }

                                            }

                                        } else {

                                            foreach ($i['groups'] as $gg) {

                                                if (isset($field) && $field == $gg['name']) {

                                                    $groups[] = $gg['name'];

                                                }

                                            }

                                        }



                                        $groupings[$i['name']] = array(

                                            'name'   => $i['name'],

                                            'id'     => $i['id'],

                                            'groups' => implode(',', $groups)

                                        );

                                    }

                                }

                            }

                        }

                    }

                }

            }





            // If this is a new user then just store details now and subscribe the user later at activation

            if ($user->activation || $data['activation']) {

                $query = $db->getQuery(true)

                    ->insert($db->qn('#__joomailermailchimpintegration_signup'))

                    ->set(array(

                        $db->qn('fname') . ' = ' . $db->q($fname),

                        $db->qn('lname') . ' = ' . $db->q($lname),

                        $db->qn('email') . ' = ' . $db->q($email),

                        $db->qn('merges') . ' = ' . $db->q(json_encode($merges)),

                        $db->qn('groupings') . ' = ' . $db->q(json_encode($groupings))

                    ));

                try {

                    $db->setQuery($query)->execute();

                } catch (Exception $e) {}



            } else if ($task != 'saveregisters') {

                $mergeVars = array(

                    'FNAME' => $fname,

                    'LNAME' => $lname,

                    'INTERESTS' => '',

                    'GROUPINGS' => $groupings

                );



                //Get the users ip address unless the admin is saving his profile in backend

                $app = JFactory::getApplication();

                if ($app->isSite()) {

                    $mergeVars['OPTINIP'] = $this->getIpAddress();

                }



                $mergeVars = array_merge($mergeVars, $merges);

                $emailType = '';

                $doubleOptin = $updateExisting = $replaceInterests = $sendWelcome = false;



                if ($isSubscribed === false) {

                    // subscribe the user

                    $this->api->listSubscribe($this->listId, $email, $mergeVars, $emailType, $doubleOptin,

                        $updateExisting, $replaceInterests, $sendWelcome);

                    $query = $db->getQuery(true)

                        ->insert($db->qn('#__joomailermailchimpintegration'))

                        ->set(array(

                            $db->qn('userid') . ' = ' . $db->q($user->id),

                            $db->qn('email') . ' = ' . $db->q($email),

                            $db->qn('listid') . ' = ' . $db->q($this->listId)

                        ));

                    try {

                        $db->setQuery($query)->execute();

                    } catch (Exception $e) {}

                } else {

                    // update the users subscription

                    if ($email != self::$oldEmail) {

                        // update local database entry

                        $query = $db->getQuery(true)

                            ->update($db->qn('#__joomailermailchimpintegration'))

                            ->set($db->qn('email') . ' = ' . $db->q($email))

                            ->where($db->qn('email') . ' = ' . $db->q(self::$oldEmail))

                            ->where($db->qn('listid') . ' = ' . $db->q($this->listId));

                        try {

                            $db->setQuery($query)->execute();

                        } catch (Exception $e) {}



                        // add new email address to merge vars array

                        $mergeVars['EMAIL'] = $email;

                    }



                    $this->api->listUpdateMember($this->listId, self::$oldEmail, $mergeVars, '', true);

                }

            }



        // user wishes to unsubscribe

        } else if (!$subscribe && $isSubscribed) {

            $this->api->listUnsubscribe($this->listId, $email, false, false, false);

            // remove local database entry

            $query = $db->getQuery(true)

                ->delete($db->qn('#__joomailermailchimpintegration'))

                ->where($db->qn('email') . ' = ' . $db->q($email))

                ->where($db->qn('listid') . ' = ' . $db->q($this->listId));

            try {

                $db->setQuery($query)->execute();

            } catch (Exception $e) {}

        }



        if ($this->api->errorCode && in_array($this->api->errorCode, array(211, 215)) === false) {

            $this->_subject->setError("Unable to load listSubscribe()!\n\tCode=" . $this->api->errorCode

                . "\n\tMsg=" . $this->api->errorMessage . "\n");

            return false;

        }



		return true;

	}



    // unsubscribe the user when his account is deleted and if this option is set in the plugin config

    public function onUserAfterDelete($user, $success, $msg) {

        $userId = JArrayHelper::getValue($user, 'id', 0, 'int');

        $unsubscribe = $this->params->get('unsubscribe', 0);



        if (!$success || !$userId || !$this->listId || !$unsubscribe) {

            return;

        }



        // unsubscribe the user

        $this->api->listUnsubscribe($this->listId, $user['email'], false, false, false);



        $db = JFactory::getDBO();

        $query = $db->getQuery(true)

            ->delete($db->qn('#__joomailermailchimpintegration'))

            ->where($db->qn('email') . ' = ' . $db->q($user['email']))

            ->where($db->qn('listid') . ' = ' . $db->q($this->listId));

        try {

            $db->setQuery($query)->execute();

        } catch (Exception $e) {}

    }



    private function getApiInstance() {

        if (!PlgUserJoomlamailer::$MC) {

            $params = JComponentHelper::getParams('com_joomailermailchimpintegration');

            $MCapi = $params->get('params.MCapi');

            PlgUserJoomlamailer::$MC = new joomlamailerMCAPI($MCapi);

        }



        return PlgUserJoomlamailer::$MC;

    }



    private function getIpAddress() {

        $keys = array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP',

            'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR');

        foreach ($keys as $key) {

            if (array_key_exists($key, $_SERVER) === true) {

                foreach (explode(',', $_SERVER[$key]) as $ip) {

                    if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {

                        return $ip;

                    }

                }

            }

        }



        return '';

    }

}


Zerion Mini Shell 1.0