Esempio n. 1
0
 function ajax_sync_hotness()
 {
     $elements = JRequest::getVar('elements', '', 'request', 'string');
     $elements = json_decode($elements);
     if ($elements->done == 0) {
         $_SESSION['abortAJAX'] = 0;
         unset($_SESSION['addedUsers']);
         unset($_SESSION['HotnessExists']);
     }
     if ($_SESSION['abortAJAX'] != 1) {
         $db =& JFactory::getDBO();
         $model =& $this->getModel('sync');
         $params =& JComponentHelper::getParams('com_joomailermailchimpintegration');
         $paramsPrefix = version_compare(JVERSION, '1.6.0', 'ge') ? 'params.' : '';
         $MCapi = $params->get($paramsPrefix . 'MCapi');
         $MC = new joomlamailerMCAPI($MCapi);
         $MCerrorHandler = new MCerrorHandler();
         $list_id = $elements->listid;
         $step = $elements->step;
         $offset = $elements->offset;
         // retrieve hotness rating
         require_once JPATH_COMPONENT_ADMINISTRATOR . DS . '/libraries/joomailer/hotActivityComposite.php';
         $composite = new hotActivityComposite();
         $hotnessRating = $composite->getAllUserHotnessValue($list_id);
         if (isset($_SESSION['addedUsers'])) {
             $exclude = $_SESSION['addedUsers'];
         } else {
             $exclude = array();
         }
         if (!$elements->failed) {
             $elements->failed = array();
         }
         $exclude = array_merge($exclude, $elements->failed);
         $exclude = implode('","', $exclude);
         $exclude = '"' . $exclude . '"';
         if (isset($exclude[0])) {
             $exclude = 'AND j.userid NOT IN (' . $exclude . ') ';
         } else {
             $exclude = '';
         }
         //		$data = array();
         //		$run = true;
         //		$page = 0;
         //		while($run){
         //		    $result = $MC->listMembers( $list_id, '', '', $page, '15000');
         //		    $page++;
         //		    if($result){
         //			$run = true;
         //			$data = array_merge($data, $result);
         //		    } else {
         //			$run = false;
         //		    }
         //		}
         $data = $MC->listMembers($list_id, '', '', $offset, $step);
         if (count($data) > 0) {
             // determine if the interest group Hotness already exists, if not: create it
             if (!isset($_SESSION['HotnessExists'])) {
                 $query = "SELECT value FROM #__joomailermailchimpintegration_misc WHERE type = 'hotness' AND listid = '" . $list_id . "' ";
                 $db->setQuery($query);
                 $hotnessId = $db->loadResult();
                 if ($hotnessId == NULL) {
                     $result = $MC->listInterestGroupingAdd($list_id, JText::_('JM_HOTNESS_RATING'), 'hidden', array(1, 2, 3, 4, 5));
                     if (is_int($result)) {
                         $query = "INSERT INTO #__joomailermailchimpintegration_misc (type, listid, value) VALUES ('hotness', '" . $list_id . "', '" . $result . "') ";
                         $db->setQuery($query);
                         $db->query();
                         $_SESSION['HotnessExists'] = $result;
                     }
                 } else {
                     $_SESSION['HotnessExists'] = $hotnessId;
                 }
             }
             /*
             		    $userIds = array();
             		    foreach($data as $dat){
             			$userIds[$dat->email] = $dat->id;
             		    }
             */
             $addedUsers = $elements->addedUsers;
             $m = 0;
             $successCount = 0;
             $errorcount = $msgErrorsCount = 0;
             $msg = $msgErrors = false;
             $counter = 0;
             $ids = '';
             $errorMsg = $elements->errorMsg;
             for ($x = 0; $x < count($data); $x += $step) {
                 if ($_SESSION['abortAJAX'] == 1) {
                     unset($_SESSION['addedUsers']);
                     break;
                 }
                 $k = 0;
                 $batch = array();
                 $errorcount = $msgErrorsCount = 0;
                 for ($y = $x; $y < $x + $step; $y++) {
                     if ($_SESSION['abortAJAX'] == 1) {
                         unset($_SESSION['addedUsers']);
                         break;
                     }
                     if (isset($data[$y])) {
                         $dat = $data[$y];
                     } else {
                         $dat = false;
                     }
                     if ($dat) {
                         $addedUsers[] = $dat['email'];
                         $batch[$k]['EMAIL'] = $dat['email'];
                         if (!isset($hotnessRating[$dat['email']])) {
                             $hotnessRating[$dat['email']] = 2;
                         }
                         $batch[$k]['GROUPINGS'][] = array('id' => $_SESSION['HotnessExists'], 'groups' => $hotnessRating[$dat['email']]);
                         $k++;
                     } else {
                         break;
                     }
                 }
                 if ($batch) {
                     $optin = false;
                     //yes, send optin emails
                     $up_exist = true;
                     // yes, update currently subscribed users
                     $replace_int = true;
                     // false = add interest, don't replace
                     $result = $MC->listBatchSubscribe($list_id, $batch, $optin, $up_exist, $replace_int);
                     $successCount = $successCount + $result['success_count'];
                     if ($result['error_count']) {
                         foreach ($result['errors'] as $e) {
                             $tmp = new stdClass();
                             $tmp->errorCode = $e['code'];
                             $tmp->errorMessage = $e['message'];
                             $errorMsg .= '"' . $MCerrorHandler->getErrorMsg($tmp) . ' => ' . $e['row']['EMAIL'] . '", ';
                             //  $addedUsers = array_diff($addedUsers, array($userIds[$e['row']['EMAIL']]));
                             //  $elements->failed[] = $userIds[$e['row']['EMAIL']];
                             $errorcount++;
                         }
                         $msgErrorsCount += $result['error_count'];
                     }
                 }
             }
             $addedUsers = array_unique($addedUsers);
             if (!count($data)) {
                 $done = $elements->total;
                 unset($_SESSION['addedUsers']);
                 $percent = 100;
             } else {
                 $done = count($addedUsers);
                 $_SESSION['addedUsers'] = $addedUsers;
                 $percent = $done / $elements->total * 100;
             }
             $response['msg'] = '<div id="bg"></div>' . '<div style="background:#FFFFFF none repeat scroll 0 0;border:10px solid #000000;height:100px;left:37%;position:relative;text-align:center;top:37%;width:300px; ">' . '<div style="margin: 35px auto 3px; width: 300px; text-align: center;">' . JText::_('adding users') . ' ( ' . $done . '/' . $elements->total . ' ' . JText::_('done') . ' )</div>' . '<div style="margin: auto; background: transparent url(' . JURI::root() . 'administrator/components/com_joomailermailchimpintegration/assets/images/progress_bar_grey.gif) repeat scroll 0% 0%; width: 190px; height: 14px; display: block;">' . '<div style="width: ' . $percent . '%; overflow: hidden;">' . '<img src="' . JURI::root() . 'administrator/components/com_joomailermailchimpintegration/assets/images/progress_bar.gif" style="margin: 0 5px 0 0;"/>' . '</div>' . '<div style="width: 190px; text-align: center; position: relative;top:-13px; font-weight:bold;">' . round($percent, 0) . ' %</div>' . '</div>' . '<a id="sbox-btn-close" style="text-indent:-5000px;right:-20px;top:-18px;outline:none;" href="javascript:abortAJAXnoRefresh();">abort</a>' . '</div>';
             $response['done'] = $done;
             $response['errors'] = count($elements->failed);
             $response['errorMsg'] = $errorMsg;
             $response['addedUsers'] = array_values(array_unique($addedUsers));
             //	    $response['failed']	    = $elements->failed;
             if ($done + count($elements->failed) + $elements->errors >= $elements->total) {
                 $response['finished'] = 1;
                 if ($errorMsg) {
                     $errorMsg = substr($errorMsg, 0, -2);
                     $msgErrors = ' ( ' . count($elements->failed) . ' ' . JText::_('Errors') . ': ' . $errorMsg . ' )';
                 }
                 if (!$msg) {
                     $msg = $done . ' ' . JText::_('JM_USERS_SYNCHRONIZED') . '.';
                 }
                 if ($msgErrors) {
                     $msg .= $msgErrors;
                 }
                 $response['finalMessage'] = $msg;
             } else {
                 $response['finished'] = 0;
                 $response['finalMessage'] = '';
             }
             $response['abortAJAX'] = $_SESSION['abortAJAX'];
         } else {
             unset($_SESSION['addedUsers']);
             $response['addedUsers'] = '';
             $response['finalMessage'] = JText::_('JM_NO_USERS_FOUND');
             $response['finished'] = 1;
             $response['abortAJAX'] = $_SESSION['abortAJAX'];
         }
         echo json_encode($response);
     } else {
         unset($_SESSION['addedUsers']);
         $response['addedUsers'] = '';
         $response['finished'] = 1;
         $response['abortAJAX'] = $_SESSION['abortAJAX'];
         echo json_encode($response);
     }
 }
Esempio n. 2
0
File: sync.php Progetto: rodhoff/MNW
 public function ajaxSyncAll()
 {
     $done = JRequest::getVar('done', '', 'POST', 'int');
     if ($done == 0) {
         $_SESSION['abortAJAX'] = 0;
         unset($_SESSION['addedUsers']);
     }
     if ($_SESSION['abortAJAX'] != 1) {
         $db = JFactory::getDBO();
         $params = JComponentHelper::getParams('com_joomailermailchimpintegration');
         $MCapi = $params->get('params.MCapi');
         $MC = new joomlamailerMCAPI($MCapi);
         $MCerrorHandler = new MCerrorHandler();
         $listId = JRequest::getVar('listId', '', 'POST', 'string');
         $total = JRequest::getVar('total', 0, 'POST', 'int');
         $errors = JRequest::getVar('errors', 0, 'POST', 'int');
         $step = JRequest::getVar('step', 100, 'POST', 'int');
         $failed = JRequest::getVar('failed', array(), 'POST');
         $addedUsers = JRequest::getVar('addedUsers', array(), 'POST');
         $errorMsg = JRequest::getVar('errorMsg', '', 'POST', 'string');
         if (!$addedUsers) {
             $addedUsers = array();
         }
         // create hidden signup date merge var if it doesn't exist
         $createSignupdateMerge = true;
         $mergeVars = $MC->listMergeVars($listId);
         foreach ($mergeVars as $mv) {
             if ($mv['tag'] == 'SIGNUPAPI') {
                 $createSignupdateMerge = false;
                 break;
             }
         }
         if ($createSignupdateMerge) {
             $MC->listMergeVarAdd($listId, 'SIGNUPAPI', 'date added (API)', array('date', false, false, true));
         }
         if (isset($_SESSION['addedUsers'])) {
             $exclude = $_SESSION['addedUsers'];
         } else {
             $exclude = array();
         }
         if (!$failed) {
             $failed = array();
         }
         if (count($failed)) {
             $exclude = array_merge($exclude, $failed);
         }
         $query = $db->getQuery(true)->select($db->qn(array('id', 'email')))->from($db->qn('#__users'))->where($db->qn('block') . ' = ' . $db->q(0))->where($db->qn('id') . ' NOT IN ("' . implode('","', $exclude) . '")');
         $db->setQuery($query, 0, $step);
         $users = $db->loadObjectList();
         $userIds = array();
         foreach ($users as $user) {
             $userIds[$user->email] = $user->id;
         }
         // gather custom fields data
         $query = $db->getQuery(true)->select('*')->from($db->qn('#__joomailermailchimpintegration_custom_fields'))->where($db->qn('listid') . ' = ' . $db->q($listId));
         $db->setQuery($query);
         $customFields = $db->loadObjectList();
         $m = $successCount = $errorcount = $msgErrorsCount = $counter = 0;
         $msg = $msgErrors = false;
         $ids = '';
         for ($x = 0; $x < count($users); $x += $step) {
             if ($_SESSION['abortAJAX'] == 1) {
                 unset($_SESSION['addedUsers']);
                 break;
             }
             $k = $errorcount = $msgErrorsCount = 0;
             $batch = array();
             for ($y = $x; $y < $x + $step; $y++) {
                 if ($_SESSION['abortAJAX'] == 1) {
                     unset($_SESSION['addedUsers']);
                     break;
                 }
                 $dat = isset($users[$y]) ? $users[$y] : false;
                 if ($dat) {
                     $user = $this->getModel('sync')->getUser($dat->id);
                     $addedUsers[] = $user[0]->id;
                     $batch[$k]['EMAIL'] = $user[0]->email;
                     // name
                     $names = explode(' ', $user[0]->name);
                     if (isset($names[0]) && isset($names[1])) {
                         $batch[$k]['FNAME'] = $names[0];
                         $batch[$k]['LNAME'] = '';
                         for ($i = 1; $i < count($names); $i++) {
                             $batch[$k]['LNAME'] .= $names[$i] . ' ';
                         }
                     } else {
                         $batch[$k]['FNAME'] = $user[0]->name;
                     }
                     if (count($customFields)) {
                         foreach ($customFields as $field) {
                             $query = $db->getQuery(true);
                             if ($field->framework == 'CB') {
                                 $query->select($db->qn($field->dbfield))->from($db->qn('#__comprofiler'))->where($db->qn('user_id') . ' = ' . $db->q($user[0]->id));
                             } else {
                                 $query->select($db->qn('value'))->from($db->qn('#__community_fields_values'))->where($db->qn('field_id') . ' = ' . $db->q($field->dbfield))->where($db->qn('user_id') . ' = ' . $db->q($user[0]->id));
                             }
                             $db->setQuery($query);
                             $fieldValue = $db->loadResult();
                             if ($field->framework == 'CB') {
                                 $fieldValue = str_replace('|*|', ',', $fieldValue);
                             }
                             if ($field->framework == 'JS') {
                                 if ($fieldValue == NULL) {
                                     $fieldValue = '';
                                 } else {
                                     $fieldValue = substr($fieldValue, strlen($fieldValue) - 1) == ',' ? $fieldValue = substr($fieldValue, 0, -1) : $fieldValue;
                                 }
                             }
                             if ($field->type == 'group') {
                                 $batch[$k]['GROUPINGS'][] = array('id' => $field->grouping_id, 'groups' => $fieldValue);
                             } else {
                                 $batch[$k][$field->grouping_id] = $fieldValue;
                             }
                         }
                     }
                     // add signup date
                     $batch[$k]['SIGNUPAPI'] = date('Y-m-d');
                     $query = $db->getQuery(true);
                     try {
                         $query->insert($db->qn('#__joomailermailchimpintegration'))->set($db->qn('userid') . ' = ' . $db->q($user[0]->id))->set($db->qn('email') . ' = ' . $db->q($user[0]->email))->set($db->qn('listid') . ' = ' . $db->q($listId));
                         $db->setQuery($query);
                         $db->execute();
                     } catch (Exception $e) {
                     }
                     $k++;
                 } else {
                     break;
                 }
             }
             if ($batch) {
                 $optin = false;
                 // do not send optin emails
                 $updateExisting = true;
                 // yes, update currently subscribed users
                 $replaceInterests = true;
                 // false = add interest, don't replace
                 $result = $MC->listBatchSubscribe($listId, $batch, $optin, $updateExisting, $replaceInterests);
                 $successCount = $successCount + $result['success_count'];
                 if ($result['error_count']) {
                     foreach ($result['errors'] as $e) {
                         $tmp = new stdClass();
                         $tmp->errorCode = $e['code'];
                         $tmp->errorMessage = $e['message'];
                         $errorMsg .= '"' . $MCerrorHandler->getErrorMsg($tmp) . ' => ' . $e['row']['EMAIL'] . '", ';
                         $query->getQuery(true);
                         $query->delete($db->qn('#__joomailermailchimpintegration'))->where($db->qn('listid') . ' = ' . $db->q($listId))->where($db->qn('email') . ' = ' . $db->q($e['row']['EMAIL']));
                         $db->setQuery($query, 0, 1);
                         $db->execute();
                         $addedUsers = array_diff($addedUsers, array($userIds[$e['row']['EMAIL']]));
                         $failed[] = $userIds[$e['row']['EMAIL']];
                         $errorcount++;
                     }
                     $msgErrorsCount += $result['error_count'];
                 }
             }
         }
         if (!count($users)) {
             $done = $total;
             unset($_SESSION['addedUsers']);
             $percent = 100;
         } else {
             $done = count($addedUsers);
             $_SESSION['addedUsers'] = $addedUsers;
             $percent = $done / $total * 100;
         }
         $response['msg'] = '<div id="bg"></div>' . '<div id="progressBarContainer">' . '<div id="progressBarTitle">' . JText::_('JM_ADDING_USERS') . ' (' . $done . '/' . $total . ' ' . JText::_('JM_DONE') . ')</div>' . '<div id="progressBarBg">' . '<div id="progressBarCompleted" style="width: ' . round($percent) . '%;"></div>' . '<div id="progressBarNumber">' . round($percent) . ' %</div>' . '</div>' . '<a id="sbox-btn-close" href="javascript:joomlamailerJS.sync.abortAJAX();">abort</a>' . '</div>';
         $response['done'] = $done;
         //	$msg = $successCount.' '.JText::_('JM_RECIPIENTS_SAVED').$msgErrors;
         $response['errors'] = count($failed);
         $response['errorMsg'] = $errorMsg;
         $response['addedUsers'] = array_values($addedUsers);
         $response['failed'] = $failed;
         if ($done + count($failed) + $errors >= $total) {
             $response['finished'] = 1;
             if ($errorMsg) {
                 $errorMsg = substr($errorMsg, 0, -2);
                 $msgErrors = ' (' . count($failed) . ' ' . JText::_('JM_ERRORS') . ': ' . $errorMsg . ')';
             }
             if (!$msg) {
                 $msg = $done . ' ' . JText::_('JM_RECIPIENTS_SAVED');
             }
             if ($msgErrors) {
                 $msg .= $msgErrors;
             }
             $response['finalMessage'] = $msg;
         } else {
             $response['finished'] = 0;
             $response['finalMessage'] = '';
         }
         $response['abortAJAX'] = $_SESSION['abortAJAX'];
         echo json_encode($response);
     } else {
         unset($_SESSION['addedUsers']);
         $response['finished'] = 1;
         $response['addedUsers'] = '';
         $response['abortAJAX'] = $_SESSION['abortAJAX'];
         echo json_encode($response);
     }
 }
Esempio n. 3
0
 function ajax_sync_all()
 {
     //		jimport( 'joomla.html.html.behavior' );
     //		JHTMLBehavior::keepalive();
     $elements = JRequest::getVar('elements', '', 'request', 'string');
     $elements = json_decode($elements);
     if ($elements->done == 0) {
         $_SESSION['abortAJAX'] = 0;
         unset($_SESSION['addedUsers']);
     }
     if ($_SESSION['abortAJAX'] != 1) {
         $params =& JComponentHelper::getParams('com_joomailermailchimpintegration');
         $paramsPrefix = version_compare(JVERSION, '1.6.0', 'ge') ? 'params.' : '';
         $MCapi = $params->get($paramsPrefix . 'MCapi');
         $MC = new joomlamailerMCAPI($MCapi);
         $MCerrorHandler = new MCerrorHandler();
         $list_id = $elements->listid;
         $step = $elements->step;
         $db =& JFactory::getDBO();
         $model =& $this->getModel('sync');
         if (isset($_SESSION['addedUsers'])) {
             $exclude = $_SESSION['addedUsers'];
         } else {
             $exclude = array();
         }
         if (!$elements->failed) {
             $elements->failed = array();
         }
         $exclude = array_merge($exclude, $elements->failed);
         $exclude = implode('","', $exclude);
         $exclude = '"' . $exclude . '"';
         $query = 'SELECT id,email FROM #__users WHERE id NOT IN (' . $exclude . ') AND block = 0 LIMIT ' . $step;
         $db->setQuery($query);
         $data = $db->loadObjectList();
         $userIds = array();
         foreach ($data as $dat) {
             $userIds[$dat->email] = $dat->id;
         }
         // gather custom fields data
         $db =& JFactory::getDBO();
         $query = "SELECT * FROM #__joomailermailchimpintegration_custom_fields WHERE listid = '" . $list_id . "' ";
         $db->setQuery($query);
         $custom_fields = $db->loadObjectList();
         if (!isset($custom_fields[0])) {
             $custom_fields = false;
         }
         $addedUsers = $elements->addedUsers;
         $m = 0;
         $successCount = 0;
         $errorcount = $msgErrorsCount = 0;
         $msg = $msgErrors = false;
         $counter = 0;
         $ids = '';
         $errorMsg = $elements->errorMsg;
         //	foreach ($data as $dat){
         for ($x = 0; $x < count($data); $x += $step) {
             if ($_SESSION['abortAJAX'] == 1) {
                 unset($_SESSION['addedUsers']);
                 break;
             }
             $k = 0;
             $batch = array();
             $errorcount = $msgErrorsCount = 0;
             for ($y = $x; $y < $x + $step; $y++) {
                 if ($_SESSION['abortAJAX'] == 1) {
                     unset($_SESSION['addedUsers']);
                     break;
                 }
                 if (isset($data[$y])) {
                     $dat = $data[$y];
                 } else {
                     $dat = false;
                 }
                 if ($dat) {
                     $user = $model->getUser($dat->id);
                     $addedUsers[] = $user[0]->id;
                     $batch[$k]['EMAIL'] = $user[0]->email;
                     // name
                     $names = explode(' ', $user[0]->name);
                     if (isset($names[0]) && isset($names[1])) {
                         $batch[$k]['FNAME'] = $names[0];
                         $batch[$k]['LNAME'] = '';
                         for ($i = 1; $i < count($names); $i++) {
                             $batch[$k]['LNAME'] .= $names[$i] . ' ';
                         }
                     } else {
                         $batch[$k]['FNAME'] = $user[0]->name;
                     }
                     $custom = array();
                     if ($custom_fields) {
                         foreach ($custom_fields as $field) {
                             if ($field->framework == 'CB') {
                                 $query = "SELECT " . $field->dbfield . " FROM #__comprofiler WHERE user_id = '" . $user[0]->id . "' ";
                             } else {
                                 $query = "SELECT value FROM #__community_fields_values WHERE field_id = " . $field->dbfield . " AND user_id = '" . $user[0]->id . "' ";
                             }
                             $db->setQuery($query);
                             $field_value = $db->loadResult();
                             if ($field->framework == 'CB') {
                                 $field_value = str_replace('|*|', ',', $field_value);
                             }
                             if ($field->framework == 'JS') {
                                 $field_value = substr($field_value, strlen($field_value) - 1) == ',' ? $field_value = substr($field_value, 0, -1) : $field_value;
                                 if ($field_value == NULL) {
                                     $field_value = '';
                                 }
                             }
                             if ($field->type == 'group') {
                                 $batch[$k]['GROUPINGS'][] = array('id' => $field->grouping_id, 'groups' => $field_value);
                             } else {
                                 $batch[$k][$field->grouping_id] = $field_value;
                             }
                             //	$batch[$k]['GROUPINGS'][] = array( 'id' => (int)$field->grouping_id, 'groups' => $field_value);
                         }
                     }
                     $query = 'INSERT INTO #__joomailermailchimpintegration (userid,email,listid) VALUES ("' . $user[0]->id . '", "' . $user[0]->email . '", "' . $list_id . '")';
                     $db->setQuery($query);
                     $db->query();
                     $k++;
                 } else {
                     break;
                 }
             }
             if ($batch) {
                 $optin = false;
                 //yes, send optin emails
                 $up_exist = true;
                 // yes, update currently subscribed users
                 $replace_int = true;
                 // false = add interest, don't replace
                 //				    var_dump($batch);die;
                 $result = $MC->listBatchSubscribe($list_id, $batch, $optin, $up_exist, $replace_int);
                 $successCount = $successCount + $result['success_count'];
                 if ($result['error_count']) {
                     foreach ($result['errors'] as $e) {
                         $tmp = new stdClass();
                         $tmp->errorCode = $e['code'];
                         $tmp->errorMessage = $e['message'];
                         $errorMsg .= '"' . $MCerrorHandler->getErrorMsg($tmp) . ' => ' . $e['row']['EMAIL'] . '", ';
                         $query = 'DELETE FROM #__joomailermailchimpintegration WHERE `listid` = "' . $list_id . '" AND `email` = "' . $e['row']['EMAIL'] . '" LIMIT 1';
                         $db->setQuery($query);
                         $db->query();
                         $addedUsers = array_diff($addedUsers, array($userIds[$e['row']['EMAIL']]));
                         $elements->failed[] = $userIds[$e['row']['EMAIL']];
                         $errorcount++;
                     }
                     $msgErrorsCount += $result['error_count'];
                 }
             }
         }
         if (!count($data)) {
             $done = $elements->total;
             unset($_SESSION['addedUsers']);
             $percent = 100;
         } else {
             $done = count($addedUsers);
             $_SESSION['addedUsers'] = $addedUsers;
             $percent = $done / $elements->total * 100;
         }
         //		$response['msg'] = $done.'/'.$elements->total.' users added';
         $response['msg'] = '<div id="bg"></div>' . '<div style="background:#FFFFFF none repeat scroll 0 0;border:10px solid #000000;height:100px;left:37%;position:relative;text-align:center;top:37%;width:300px; ">' . '<div style="margin: 35px auto 3px; width: 300px; text-align: center;">' . JText::_('JM_ADDING_USERS') . ' ( ' . $done . '/' . $elements->total . ' ' . JText::_('JM_DONE') . ' )</div>' . '<div style="margin: auto; background: transparent url(' . JURI::root() . 'administrator/components/com_joomailermailchimpintegration/assets/images/progress_bar_grey.gif) repeat scroll 0% 0%; width: 190px; height: 14px; display: block;">' . '<div style="width: ' . $percent . '%; overflow: hidden;">' . '<img src="' . JURI::root() . 'administrator/components/com_joomailermailchimpintegration/assets/images/progress_bar.gif" style="margin: 0 5px 0 0;"/>' . '</div>' . '<div style="width: 190px; text-align: center; position: relative;top:-13px; font-weight:bold;">' . round($percent, 0) . ' %</div>' . '</div>' . '<a id="sbox-btn-close" style="text-indent:-5000px;right:-20px;top:-18px;outline:none;" href="javascript:abortAJAX();">abort</a>' . '</div>';
         /*							
         		$response['msg'] = '<div style="width: 190px; text-align: center">'.JText::_( 'adding users' ).' ( '.$done.'/'.$elements->total.' '.JText::_( 'done' ).')</div>'
         				    .'<div style="background: transparent url('.JURI::root().'administrator/components/com_joomailermailchimpintegration/assets/images/progress_bar_grey.gif); width: 190px; height: 14px; display: block;">'
         				    .'<div style="width: '.$percent.'%; overflow: hidden; background: transparent url('.JURI::root().'administrator/components/com_joomailermailchimpintegration/assets/images/progress_bar.gif);">'
         				    .'</div>'
         				    .'<div style="width: 190px; text-align: center; position: relative;">'.round($percent,0).' %</div>'
         				    .'</div>';
         */
         $response['done'] = $done;
         //	$msg = $successCount.' '.JText::_( 'JM_RECIPIENTS_SAVED' ).$msgErrors;
         $response['errors'] = count($elements->failed);
         $response['errorMsg'] = $errorMsg;
         $response['addedUsers'] = array_values($addedUsers);
         $response['failed'] = $elements->failed;
         if ($done + count($elements->failed) + $elements->errors >= $elements->total) {
             $response['finished'] = 1;
             if ($errorMsg) {
                 $errorMsg = substr($errorMsg, 0, -2);
                 $msgErrors = ' ( ' . count($elements->failed) . ' ' . JText::_('JM_ERRORS') . ': ' . $errorMsg . ' )';
             }
             if (!$msg) {
                 $msg = $done . ' ' . JText::_('JM_RECIPIENTS_SAVED');
             }
             if ($msgErrors) {
                 $msg .= $msgErrors;
             }
             $response['finalMessage'] = $msg;
         } else {
             $response['finished'] = 0;
             $response['finalMessage'] = '';
         }
         $response['abortAJAX'] = $_SESSION['abortAJAX'];
         echo json_encode($response);
     } else {
         unset($_SESSION['addedUsers']);
         $response['finished'] = 1;
         $response['addedUsers'] = '';
         $response['abortAJAX'] = $_SESSION['abortAJAX'];
         echo json_encode($response);
     }
 }