function checkHighriseLogin() { require_once JPATH_ADMINISTRATOR . '/components/com_joomailermailchimpintegration/libraries/push2Highrise.php'; $highrise = new Push_Highrise($this->highrise_url, $this->highrise_api_token); if (!$highrise->loginCheck()) { $msg = '<table width="100%"><tr><td align="left" valign="center" colspan="6">'; $msg .= '<div style="border: 2px solid #ff0000; padding: 10px; margin: 0 0 1em 0;">'; $msg .= '<img src="' . JURI::root() . 'media/com_joomailermailchimpintegration/backend/images/warning.png" align="left"/>'; $msg .= '<span style="padding-left: 10px; line-height: 28px;">'; $msg .= JText::_('JM_INVALID_HIGHRISE_CREDENTIALS'); $msg .= '</span>'; $msg .= '</div>'; $msg .= '</td></tr>'; $msg .= '</table>'; return $msg; } else { return; } }
function addToHighrise( $uid ){ $user =& JFactory::getUser( $uid ); $db =& JFactory::getDBO(); $params =& JComponentHelper::getParams( 'com_joomailermailchimpintegration' ); $paramsPrefix = (version_compare(JVERSION,'1.6.0','ge')) ? 'params.' : ''; $highrise_url = $params->get( $paramsPrefix.'highrise_url' ); $highrise_api_token = $params->get( $paramsPrefix.'highrise_api_token' ); $config = $this->getCrmConfig( 'highrise' ); if( $config == NULL ){ jimport('joomla.filesystem.file'); if ( JFile::exists( JPATH_ADMINISTRATOR.'/components/com_comprofiler/admin.comprofiler.php') ) { jimport( 'joomla.application.component.helper' ); $cHelper = JComponentHelper::getComponent( 'com_comprofiler', true ); } else { $cHelper->enabled = false; } $config = new stdClass(); $config->{'first-name'} = ($cHelper->enabled) ? 'CB' : 'core'; $config->email_work = 'default'; } require_once( JPATH_ADMINISTRATOR.'/components/com_joomailermailchimpintegration/helpers'.DS.'common.php' ); $queryJS = false; $queryCB = false; $JSand = array(); foreach( $config as $k => $v ){ if( $k != 'first-name' && $k != 'last-name' ){ $vEx = explode(';', $v); if($vEx[0] == 'js' ) { $queryJS = true; $JSand[] = $vEx[1]; } else { $queryCB = true; } } } $JSand = implode("','", array_unique($JSand) ); require_once(JPATH_ADMINISTRATOR.'/components/com_joomailermailchimpintegration/libraries/push2Highrise.php'); $highrise = new Push_Highrise($highrise_url, $highrise_api_token); $userCB = false; if( $config->{'first-name'} == 'core' ){ $names = explode(' ', $user->name); $firstname = $names[0]; $lastname = ''; if(isset($names[1])){ for($i=1;$i<count($names);$i++){ $lastname .= $names[$i].' '; } } $lastname = trim($lastname); } else { $query = "SELECT * FROM #__comprofiler WHERE user_id = '$user->id'"; $db->setQuery($query); $userCB = $db->loadObjectList(); $firstname = $userCB[0]->firstname; $lastname = $userCB[0]->lastname; if( $userCB[0]->middlename != '' ){ $lastname = $userCB[0]->middlename.' '.$lastname; } } $highriseUser = $highrise->person_in_highrise( array( 'first-name' => $firstname, 'last-name' => $lastname) ); $request['id'] = $highriseUser->id; if( $queryJS ){ $query = "SELECT field_id, value FROM #__community_fields_values ". "WHERE user_id = '$user->id' ". "AND field_id IN ('$JSand')"; $db->setQuery($query); $JSfields = $db->loadObjectList(); $JSfieldsArray = array(); foreach($JSfields as $jsf){ $JSfieldsArray[$jsf->field_id] = $jsf->value; } } if( $queryCB ){ if( !$userCB ){ $query = "SELECT * FROM #__comprofiler WHERE user_id = '$user->id'"; $db->setQuery($query); $userCB = $db->loadObjectList(); } } $xml = "<person>\n"; if( (int)$highriseUser->id > 0){ $xml .= '<id>'.$highriseUser->id."</id>\n"; } $xml .= "<first-name>".htmlspecialchars($firstname)."</first-name>\n" ."<last-name>".htmlspecialchars($lastname)."</last-name>"; if( isset($config->title) && $config->title != '' ){ $conf = explode(';', $config->title); $value = ( $conf[0] == 'js' ) ? ( (isset($JSfieldsArray[$conf[1]]))?$JSfieldsArray[$conf[1]]:'') : ((isset($userCB[0]->{$conf[1]}))?$userCB[0]->{$conf[1]}:''); $xml .= "\n<title>".htmlspecialchars($value)."</title>"; } if( isset($config->background) && $config->background != '' ){ $conf = explode(';', $config->background); $value = ( $conf[0] == 'js' ) ? ( (isset($JSfieldsArray[$conf[1]]))?$JSfieldsArray[$conf[1]]:'') : ((isset($userCB[0]->{$conf[1]}))?$userCB[0]->{$conf[1]}:''); $xml .= "\n<background>".htmlspecialchars($value)."</background>"; } if( isset($config->company) && $config->company != '' ){ $conf = explode(';', $config->company); $value = ( $conf[0] == 'js' ) ? ( (isset($JSfieldsArray[$conf[1]]))?$JSfieldsArray[$conf[1]]:'') : ((isset($userCB[0]->{$conf[1]}))?$userCB[0]->{$conf[1]}:''); $xml .= "\n<company-name>".htmlspecialchars($value).'</company-name>'; } $xml .= "\n<contact-data>"; $xml .= "\n<email-addresses>"; $emailTypes = array( 'work', 'home', 'other' ); foreach ($emailTypes as $et){ if( isset($config->{'email_'.$et}) && $config->{'email_'.$et} != '' ){ if($config->{'email_'.$et} == 'default'){ $value = $user->email; } else { $conf = explode(';', $config->{'email_'.$et}); $value = ( $conf[0] == 'js' ) ? $JSfieldsArray[$conf[1]] : $userCB[0]->{$conf[1]}; } $fieldId = ''; if( isset($highriseUser->{'contact-data'}->{'email-addresses'}->{'email-address'}) ){ foreach( $highriseUser->{'contact-data'}->{'email-addresses'} as $hu){ foreach( $hu->{'email-address'} as $ea){ if( $ea->location == ucfirst($et) ){ $fieldId = '<id type="integer">'.$ea->id[0]."</id>\n"; break; } } } } $xml .= "\n<email-address>\n" .$fieldId ."<address>".htmlspecialchars($value)."</address>\n" ."<location>".ucfirst($et)."</location>\n" ."</email-address>"; } } $xml .= "\n</email-addresses>\n"; $xml .= "\n<phone-numbers>\n"; $phoneTypes = array('work','mobile','fax','pager','home','skype','other'); foreach($phoneTypes as $pt){ if( isset($config->{'phone_'.$pt}) && $config->{'phone_'.$pt} != '' ){ $conf = explode(';', $config->{'phone_'.$pt}); $value = ( $conf[0] == 'js' ) ? ( (isset($JSfieldsArray[$conf[1]]))?$JSfieldsArray[$conf[1]]:'') : ((isset($userCB[0]->{$conf[1]}))?$userCB[0]->{$conf[1]}:''); } $fieldId = ''; if( isset($highriseUser->{'contact-data'}->{'phone-numbers'}->{'phone-number'}) ){ foreach( $highriseUser->{'contact-data'}->{'phone-numbers'} as $hu){ foreach( $hu->{'phone-number'} as $pn){ if( $pn->location == ucfirst($pt) ){ $fieldId = '<id type="integer">'.$pn->id[0]."</id>\n"; break; } } } } $xml .= "<phone-number>\n" .$fieldId ."<number>".htmlspecialchars($value)."</number>\n" ."<location>".ucfirst($pt)."</location>\n" ."</phone-number>"; } $xml .= "\n</phone-numbers>\n"; $xml .= "\n<instant-messengers>\n"; $imTypes = array('AIM','MSN','ICQ','Jabber','Yahoo','Skype','QQ','Sametime','Gadu-Gadu','Google Talk','Other'); foreach($imTypes as $im){ if( isset($config->{$im}) && $config->{$im} != '' ){ $value = false; if( $config->{$im} == 'default' ){ $value = $user->email; } else if( $config->{$im} != '' ){ $conf = explode(';', $config->{$im}); $value = ( $conf[0] == 'js' ) ? ( (isset($JSfieldsArray[$conf[1]]))?$JSfieldsArray[$conf[1]]:'') : ((isset($userCB[0]->{$conf[1]}))?$userCB[0]->{$conf[1]}:''); } if( $value ){ $fieldId = ''; if( isset($highriseUser->{'contact-data'}->{'instant-messengers'}->{'instant-messenger'}) ){ foreach( $highriseUser->{'contact-data'}->{'instant-messengers'} as $imx){ foreach( $imx->{'instant-messenger'} as $ia){ if( $ia->protocol == $im ){ $fieldId = '<id type="integer">'.$ia->id[0]."</id>\n"; break; } } } } $xml .= "<instant-messenger>\n" .$fieldId ."<address>".htmlspecialchars($value)."</address>\n" ."<location>Work</location>\n" ."<protocol>".$im."</protocol>\n" ."</instant-messenger>"; } } } $xml .= "\n</instant-messengers>\n"; if( isset($config->website) && $config->website != '' ){ $xml .= "\n<web-addresses>\n"; $conf = explode(';', $config->website); $value = ( $conf[0] == 'js' ) ? ( (isset($JSfieldsArray[$conf[1]]))?$JSfieldsArray[$conf[1]]:'') : ((isset($userCB[0]->{$conf[1]}))?$userCB[0]->{$conf[1]}:''); $fieldId = ''; if( isset($highriseUser->{'contact-data'}->{'web-addresses'}->{'web-address'}) ){ foreach( $highriseUser->{'contact-data'}->{'web-addresses'} as $ws){ foreach( $ws->{'web-address'} as $wa){ if( $wa->location == 'Work' ){ $fieldId = '<id type="integer">'.$wa->id[0]."</id>\n"; break; } } } } $xml .= "<web-address>\n" .$fieldId ."<url>".htmlspecialchars($value)."</url>\n" ."<location>Work</location>\n" ."</web-address>"; $xml .= "\n</web-addresses>\n"; } if( isset($config->twitter) && $config->twitter != '' ){ $xml .= "\n<twitter-accounts>\n"; $conf = explode(';', $config->twitter); $value = ( $conf[0] == 'js' ) ? ( (isset($JSfieldsArray[$conf[1]]))?$JSfieldsArray[$conf[1]]:'') : ((isset($userCB[0]->{$conf[1]}))?$userCB[0]->{$conf[1]}:''); $value = removeSpecialCharacters( $value ); $fieldId = ''; if( isset($highriseUser->{'contact-data'}->{'twitter-accounts'}->{'twitter-account'}) ){ foreach( $highriseUser->{'contact-data'}->{'twitter-accounts'} as $tac){ foreach( $tac->{'twitter-account'} as $ta){ if( $ta->location == 'Personal' ){ $fieldId = '<id type="integer">'.$ta->id[0]."</id>\n"; break; } } } } $xml .= "<twitter-account>\n" .$fieldId ."<username>".htmlspecialchars( str_replace(' ','',$value) )."</username>\n" ."<location>Personal</location>\n" ."</twitter-account>"; $xml .= "\n</twitter-accounts>\n"; } if( ( isset($config->street) && $config->street != '' ) || ( isset($config->city) && $config->city != '' ) || ( isset($config->zip) && $config->zip != '' ) || ( isset($config->state) && $config->state != '' ) || ( isset($config->country)&& $config->country != '') ){ $xml .= "\n<addresses>\n"; $xml .= "<address>\n"; $fieldId = ''; if( isset($highriseUser->{'contact-data'}->addresses->address) ){ foreach( $highriseUser->{'contact-data'}->addresses as $ads){ foreach( $ads->address as $ad){ if( $ad->location == 'Work' ){ $fieldId = '<id type="integer">'.$ad->id[0]."</id>\n"; break; } } } } $xml .= $fieldId; if( isset($config->street) && $config->street != '' ) { $conf = explode(';', $config->street); $value = ( $conf[0] == 'js' ) ? ( (isset($JSfieldsArray[$conf[1]]))?$JSfieldsArray[$conf[1]]:'') : ((isset($userCB[0]->{$conf[1]}))?$userCB[0]->{$conf[1]}:''); $xml .= "<street>".htmlspecialchars($value)."</street>\n"; } if( isset($config->city) && $config->city != '' ) { $conf = explode(';', $config->city); $value = ( $conf[0] == 'js' ) ? ( (isset($JSfieldsArray[$conf[1]]))?$JSfieldsArray[$conf[1]]:'') : ((isset($userCB[0]->{$conf[1]}))?$userCB[0]->{$conf[1]}:''); $xml .= "<city>".htmlspecialchars($value)."</city>\n"; } if( isset($config->zip) && $config->zip != '' ) { $conf = explode(';', $config->zip); $value = ( $conf[0] == 'js' ) ? ( (isset($JSfieldsArray[$conf[1]]))?$JSfieldsArray[$conf[1]]:'') : ((isset($userCB[0]->{$conf[1]}))?$userCB[0]->{$conf[1]}:''); $xml .= "<zip>".htmlspecialchars($value)."</zip>\n"; } if( isset($config->state) && $config->state != '' ) { $conf = explode(';', $config->state); $value = ( $conf[0] == 'js' ) ? ( (isset($JSfieldsArray[$conf[1]]))?$JSfieldsArray[$conf[1]]:'') : ((isset($userCB[0]->{$conf[1]}))?$userCB[0]->{$conf[1]}:''); $xml .= "<state>".htmlspecialchars($value)."</state>\n"; } if( isset($config->country) && $config->country != '' ) { $conf = explode(';', $config->country); $value = ( $conf[0] == 'js' ) ? ( (isset($JSfieldsArray[$conf[1]]))?$JSfieldsArray[$conf[1]]:'') : ((isset($userCB[0]->{$conf[1]}))?$userCB[0]->{$conf[1]}:''); $xml .= "<country>".htmlspecialchars($value)."</country>\n"; } $xml .= "<location>Work</location>\n"; $xml .= "</address>\n"; $xml .= "</addresses>\n"; } $xml .= "\n</contact-data>"; $xml .= "\n</person>"; $request['xml'] = $xml; $highrise->pushContact($request); return; }
function sync_highrise() { $db =& JFactory::getDBO(); $params =& JComponentHelper::getParams('com_joomailermailchimpintegration'); $highrise_url = $params->get('params.highrise_url'); $highrise_api_token = $params->get('params.highrise_api_token'); $config = $this->getModel('sync')->getConfig('highrise'); if ($config == NULL) { jimport('joomla.application.component.helper'); $cHelper = JComponentHelper::getComponent('com_comprofiler', false); $cbInstalled = $cHelper->enabled; $config = new stdClass(); $config->{'first-name'} = $cbInstalled ? 'CB' : 'core'; $config->email_work = 'default'; } $validator = new EmailAddressValidator(); $elements = JRequest::getVar('elements', '', 'request', 'string'); $elements = json_decode($elements); if ($elements->done == 0) { $_SESSION['abortAJAX'] = 0; unset($_SESSION['addedUsers']); } $failed = $elements->errors; $errorMsg = $elements->errorMsg; $step = $elements->step; if ($_SESSION['abortAJAX'] != 1) { if (isset($_SESSION['addedUsers'])) { $exclude = $_SESSION['addedUsers']; } else { $exclude = array(); } $addedUsers = $exclude; if (isset($exclude[0])) { $exclude = implode('","', $exclude); $exclude = '"' . $exclude . '"'; $excludeCond = 'AND id NOT IN (' . $exclude . ') '; } else { $excludeCond = ''; } if ($elements->range == 'all') { $query = 'SELECT * FROM #__users ' . 'WHERE block = 0 ' . $excludeCond . 'ORDER BY id ' . 'LIMIT ' . $step; } else { $idList = implode(" OR id = ", $elements->cid); $query = 'SELECT * FROM #__users ' . 'WHERE block = 0 ' . $excludeCond . 'AND (id = ' . $idList . ') ' . 'ORDER BY id '; } $db->setQuery($query); $users = $db->loadObjectList(); $queryJS = false; $queryCB = false; $JSand = array(); foreach ($config as $k => $v) { if ($k != 'first-name' && $k != 'last-name') { $vEx = explode(';', $v); if ($vEx[0] == 'js') { $queryJS = true; $JSand[] = $vEx[1]; } else { if ($vEx[0] == 'CB') { $queryCB = true; } } } } $JSand = implode("','", array_unique($JSand)); require_once JPATH_ADMINISTRATOR . '/components/com_joomailermailchimpintegration/libraries/push2Highrise.php'; $highrise = new Push_Highrise($highrise_url, $highrise_api_token); $data = array(); $emails = array(); $x = 0; $new = $elements->new; $updated = $elements->updated; $userIDs = array(); foreach ($users as $user) { if ($validator->check_email_address($user->email)) { $request = array(); $userCB = false; $names = explode(' ', $user->name); $firstname = $names[0]; $lastname = ''; if (isset($names[1])) { for ($i = 1; $i < count($names); $i++) { $lastname .= $names[$i] . ' '; } } $lastname = trim($lastname); if ($config->{'first-name'} != 'core') { $query = "SELECT * FROM #__comprofiler WHERE user_id = '{$user->id}'"; $db->setQuery($query); $userCB = $db->loadObjectList(); $firstname = $userCB[0]->firstname ? $userCB[0]->firstname : $firstname; $lastname = $userCB[0]->lastname ? $userCB[0]->lastname : $lastname; if ($userCB[0]->middlename != '') { $lastname = $userCB[0]->middlename . ' ' . $lastname; } } $highriseUser = $highrise->person_in_highrise(array('first-name' => $firstname, 'last-name' => $lastname)); $request['id'] = $highriseUser->id; // var_dump($highriseUser);die; if ($queryJS) { $query = "SELECT field_id, value FROM #__community_fields_values " . "WHERE user_id = '{$user->id}' " . "AND field_id IN ('{$JSand}')"; $db->setQuery($query); $JSfields = $db->loadObjectList(); $JSfieldsArray = array(); foreach ($JSfields as $jsf) { $JSfieldsArray[$jsf->field_id] = $jsf->value; } } if ($queryCB) { if (!$userCB) { $query = "SELECT * FROM #__comprofiler WHERE user_id = '{$user->id}'"; $db->setQuery($query); $userCB = $db->loadObjectList(); } } $xml = "<person>\n"; if ((int) $highriseUser->id > 0) { $xml .= '<id>' . $highriseUser->id . "</id>\n"; } $xml .= "<first-name>" . htmlspecialchars($firstname) . "</first-name>\n" . "<last-name>" . htmlspecialchars($lastname) . "</last-name>"; if (isset($config->title) && $config->title != '') { $conf = explode(';', $config->title); $value = $conf[0] == 'js' ? isset($JSfieldsArray[$conf[1]]) ? $JSfieldsArray[$conf[1]] : '' : (isset($userCB[0]->{$conf[1]}) ? $userCB[0]->{$conf[1]} : ''); $xml .= "\n<title>" . htmlspecialchars($value) . "</title>"; } if (isset($config->background) && $config->background != '') { $conf = explode(';', $config->background); $value = $conf[0] == 'js' ? isset($JSfieldsArray[$conf[1]]) ? $JSfieldsArray[$conf[1]] : '' : (isset($userCB[0]->{$conf[1]}) ? $userCB[0]->{$conf[1]} : ''); $xml .= "\n<background>" . htmlspecialchars($value) . "</background>"; } if (isset($config->company) && $config->company != '') { $conf = explode(';', $config->company); $value = $conf[0] == 'js' ? isset($JSfieldsArray[$conf[1]]) ? $JSfieldsArray[$conf[1]] : '' : (isset($userCB[0]->{$conf[1]}) ? $userCB[0]->{$conf[1]} : ''); $xml .= "\n<company-name>" . htmlspecialchars($value) . '</company-name>'; } $xml .= "\n<contact-data>"; $xml .= "\n<email-addresses>"; $emailTypes = array('work', 'home', 'other'); foreach ($emailTypes as $et) { if (isset($config->{'email_' . $et}) && $config->{'email_' . $et} != '') { if ($config->{'email_' . $et} == 'default') { $value = $user->email; } else { $conf = explode(';', $config->{'email_' . $et}); $value = $conf[0] == 'js' ? $JSfieldsArray[$conf[1]] : $userCB[0]->{$conf[1]}; } $fieldId = ''; if (isset($highriseUser->{'contact-data'}->{'email-addresses'}->{'email-address'})) { foreach ($highriseUser->{'contact-data'}->{'email-addresses'} as $hu) { foreach ($hu->{'email-address'} as $ea) { if ($ea->location == ucfirst($et)) { $fieldId = '<id type="integer">' . $ea->id[0] . "</id>\n"; break; } } } } $xml .= "\n<email-address>\n" . $fieldId . "<address>" . htmlspecialchars($value) . "</address>\n" . "<location>" . ucfirst($et) . "</location>\n" . "</email-address>"; } } $xml .= "\n</email-addresses>\n"; $xml .= "\n<phone-numbers>\n"; $phoneTypes = array('work', 'mobile', 'fax', 'pager', 'home', 'skype', 'other'); foreach ($phoneTypes as $pt) { if ($config->{'phone_' . $pt} != NULL && $config->{'phone_' . $pt} != '') { $conf = explode(';', $config->{'phone_' . $pt}); $value = $conf[0] == 'js' ? isset($JSfieldsArray[$conf[1]]) ? $JSfieldsArray[$conf[1]] : '' : (isset($userCB[0]->{$conf[1]}) ? $userCB[0]->{$conf[1]} : ''); $fieldId = ''; if (isset($highriseUser->{'contact-data'}->{'phone-numbers'}->{'phone-number'})) { foreach ($highriseUser->{'contact-data'}->{'phone-numbers'} as $hu) { foreach ($hu->{'phone-number'} as $pn) { if ($pn->location == ucfirst($pt)) { $fieldId = '<id type="integer">' . $pn->id[0] . "</id>\n"; break; } } } } $xml .= "<phone-number>\n" . $fieldId . "<number>" . htmlspecialchars($value) . "</number>\n" . "<location>" . ucfirst($pt) . "</location>\n" . "</phone-number>"; } } $xml .= "\n</phone-numbers>\n"; $xml .= "\n<instant-messengers>\n"; $imTypes = array('AIM', 'MSN', 'ICQ', 'Jabber', 'Yahoo', 'Skype', 'QQ', 'Sametime', 'Gadu-Gadu', 'Google Talk', 'Other'); foreach ($imTypes as $im) { if (isset($config->{$im}) && $config->{$im} != '') { $value = false; if ($config->{$im} == 'default') { $value = $user->email; } else { if ($config->{$im} != '') { $conf = explode(';', $config->{$im}); $value = $conf[0] == 'js' ? isset($JSfieldsArray[$conf[1]]) ? $JSfieldsArray[$conf[1]] : '' : (isset($userCB[0]->{$conf[1]}) ? $userCB[0]->{$conf[1]} : ''); } } if ($value) { $fieldId = ''; if (isset($highriseUser->{'contact-data'}->{'instant-messengers'}->{'instant-messenger'})) { foreach ($highriseUser->{'contact-data'}->{'instant-messengers'} as $imx) { foreach ($imx->{'instant-messenger'} as $ia) { if ($ia->protocol == $im) { $fieldId = '<id type="integer">' . $ia->id[0] . "</id>\n"; break; } } } } $xml .= "<instant-messenger>\n" . $fieldId . "<address>" . htmlspecialchars($value) . "</address>\n" . "<location>Work</location>\n" . "<protocol>" . $im . "</protocol>\n" . "</instant-messenger>"; } } } $xml .= "\n</instant-messengers>\n"; if (isset($config->website) && $config->website != '') { $xml .= "\n<web-addresses>\n"; $conf = explode(';', $config->website); $value = $conf[0] == 'js' ? isset($JSfieldsArray[$conf[1]]) ? $JSfieldsArray[$conf[1]] : '' : (isset($userCB[0]->{$conf[1]}) ? $userCB[0]->{$conf[1]} : ''); $fieldId = ''; if (isset($highriseUser->{'contact-data'}->{'web-addresses'}->{'web-address'})) { foreach ($highriseUser->{'contact-data'}->{'web-addresses'} as $ws) { foreach ($ws->{'web-address'} as $wa) { if ($wa->location == 'Work') { $fieldId = '<id type="integer">' . $wa->id[0] . "</id>\n"; break; } } } } $xml .= "<web-address>\n" . $fieldId . "<url>" . htmlspecialchars($value) . "</url>\n" . "<location>Work</location>\n" . "</web-address>"; $xml .= "\n</web-addresses>\n"; } if (isset($config->twitter) && $config->twitter != '') { $xml .= "\n<twitter-accounts>\n"; $conf = explode(';', $config->twitter); $value = $conf[0] == 'js' ? isset($JSfieldsArray[$conf[1]]) ? $JSfieldsArray[$conf[1]] : '' : (isset($userCB[0]->{$conf[1]}) ? $userCB[0]->{$conf[1]} : ''); $value = removeSpecialCharacters($value); $fieldId = ''; if (isset($highriseUser->{'contact-data'}->{'twitter-accounts'}->{'twitter-account'})) { foreach ($highriseUser->{'contact-data'}->{'twitter-accounts'} as $tac) { foreach ($tac->{'twitter-account'} as $ta) { if ($ta->location == 'Personal') { $fieldId = '<id type="integer">' . $ta->id[0] . "</id>\n"; break; } } } } $xml .= "<twitter-account>\n" . $fieldId . "<username>" . htmlspecialchars(str_replace(' ', '', $value)) . "</username>\n" . "<location>Personal</location>\n" . "</twitter-account>"; $xml .= "\n</twitter-accounts>\n"; } if (isset($config->street) && $config->street != '' || isset($config->city) && $config->city != '' || isset($config->zip) && $config->zip != '' || isset($config->state) && $config->state != '' || isset($config->country) && $config->country != '') { $xml .= "\n<addresses>\n"; $xml .= "<address>\n"; $fieldId = ''; if (isset($highriseUser->{'contact-data'}->addresses->address)) { foreach ($highriseUser->{'contact-data'}->addresses as $ads) { foreach ($ads->address as $ad) { if ($ad->location == 'Work') { $fieldId = '<id type="integer">' . $ad->id[0] . "</id>\n"; break; } } } } $xml .= $fieldId; if (isset($config->street) && $config->street != '') { $conf = explode(';', $config->street); $value = $conf[0] == 'js' ? isset($JSfieldsArray[$conf[1]]) ? $JSfieldsArray[$conf[1]] : '' : (isset($userCB[0]->{$conf[1]}) ? $userCB[0]->{$conf[1]} : ''); $xml .= "<street>" . htmlspecialchars($value) . "</street>\n"; } if (isset($config->city) && $config->city != '') { $conf = explode(';', $config->city); $value = $conf[0] == 'js' ? isset($JSfieldsArray[$conf[1]]) ? $JSfieldsArray[$conf[1]] : '' : (isset($userCB[0]->{$conf[1]}) ? $userCB[0]->{$conf[1]} : ''); $xml .= "<city>" . htmlspecialchars($value) . "</city>\n"; } if (isset($config->zip) && $config->zip != '') { $conf = explode(';', $config->zip); $value = $conf[0] == 'js' ? isset($JSfieldsArray[$conf[1]]) ? $JSfieldsArray[$conf[1]] : '' : (isset($userCB[0]->{$conf[1]}) ? $userCB[0]->{$conf[1]} : ''); $xml .= "<zip>" . htmlspecialchars($value) . "</zip>\n"; } if (isset($config->state) && $config->state != '') { $conf = explode(';', $config->state); $value = $conf[0] == 'js' ? isset($JSfieldsArray[$conf[1]]) ? $JSfieldsArray[$conf[1]] : '' : (isset($userCB[0]->{$conf[1]}) ? $userCB[0]->{$conf[1]} : ''); $xml .= "<state>" . htmlspecialchars($value) . "</state>\n"; } if (isset($config->country) && $config->country != '') { $conf = explode(';', $config->country); $value = $conf[0] == 'js' ? isset($JSfieldsArray[$conf[1]]) ? $JSfieldsArray[$conf[1]] : '' : (isset($userCB[0]->{$conf[1]}) ? $userCB[0]->{$conf[1]} : ''); $xml .= "<country>" . htmlspecialchars($value) . "</country>\n"; } $xml .= "<location>Work</location>\n"; $xml .= "</address>\n"; $xml .= "</addresses>\n"; } $xml .= "\n</contact-data>"; $xml .= "\n</person>"; $request['xml'] = $xml; $apiResult = $highrise->pushContact($request); if ($apiResult['status'] != 200 && $apiResult['status'] != 201) { // error $failed++; $errorMsg .= '"Server returned error code ' . $apiResult['status'] . ' for user ' . $user->name . ' (ID ' . $user->id . ')", '; $apiResult['newContacts'] = 0; $apiResult['updated'] = 0; } else { // success $query = "INSERT INTO #__joomailermailchimpintegration_crm_users " . "(crm, user_id) VALUES " . "('highrise', '{$user->id}.')"; $db->setQuery($query); $db->execute(); $addedUsers[] = $user->id; } } else { $failed++; $errorMsg .= '"Invalid email => ' . $user->email . ' (' . $user->name . ' - ID ' . $user->id . ')", '; $apiResult['newContacts'] = 0; $apiResult['updated'] = 0; } } } else { unset($_SESSION['addedUsers']); $response['finished'] = 1; $response['addedUsers'] = ''; $response['abortAJAX'] = $_SESSION['abortAJAX']; echo json_encode($response); } if (!count($users)) { $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 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; $response['newContacts'] = $new + $apiResult['new']; $response['updated'] = $updated + $apiResult['updated']; $response['errors'] = $failed; $response['errorMsg'] = $errorMsg; if ($done + $failed >= $elements->total) { unset($_SESSION['addedUsers']); $response['finished'] = 1; if ($errorMsg) { $errorMsg = substr($errorMsg, 0, -2); $msgErrors = ' ; ' . $failed . ' ' . JText::_('JM_ERRORS') . ': ' . $errorMsg . ' '; } $msg = $done + $failed . ' ' . JText::_('JM_USERS_PROCESSED'); $msg .= ' (' . $response['newContacts'] . ' ' . JText::_('JM_NEW') . ' ; ' . $response['updated'] . ' ' . JText::_('JM_UPDATED') . ' '; if (isset($msgErrors) && $msgErrors) { $msg .= $msgErrors; } $msg .= ')'; $response['finalMessage'] = $msg; } else { $response['finished'] = 0; $response['finalMessage'] = ''; } $response['abortAJAX'] = $_SESSION['abortAJAX']; echo json_encode($response); }