Exemple #1
0
 function checkSugarLogin()
 {
     require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_joomailermailchimpintegration' . DS . 'libraries' . DS . 'sugar.php';
     $sugar = new SugarCRMWebServices();
     $sugar->SugarCRM($this->sugar_name, $this->sugar_pwd, $this->sugar_url);
     $sugar->login();
     if ($sugar->session === NULL || $sugar->session == -1) {
         $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_SUGARCRM_CREDENTIALS');
         $msg .= '</span>';
         $msg .= '</div>';
         $msg .= '</td></tr>';
         $msg .= '</table>';
         return $msg;
     } else {
         return;
     }
 }
	function addToSugar( $uid ){

	    $user =& JFactory::getUser( $uid );
	    $db	=& JFactory::getDBO();
	    $params =& JComponentHelper::getParams( 'com_joomailermailchimpintegration' );
	    $paramsPrefix = (version_compare(JVERSION,'1.6.0','ge')) ? 'params.' : '';
	    $sugar_name = $params->get( $paramsPrefix.'sugar_name' );
	    $sugar_pwd  = $params->get( $paramsPrefix.'sugar_pwd' );
	    $sugar_url  = $params->get( $paramsPrefix.'sugar_url' );

	    $config = $this->getCrmConfig( 'sugar' );
	    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';
	    }

	    require_once(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_joomailermailchimpintegration'.DS.'libraries'.DS.'sugar.php');
	    $sugar = new SugarCRMWebServices;
	    $sugar->SugarCRM( $sugar_name, $sugar_pwd, $sugar_url );
	    $sugar->login();

	    $queryJS = false;
	    $queryCB = false;
	    $JSand = array();
	    foreach( $config as $k => $v ){
		if( $k != 'firstname' && $k != 'lastname' ){
		    $vEx = explode(';', $v);
		    if($vEx[0] == 'js' ) {
			$queryJS = true;
			$JSand[] = $vEx[1];
		    } else {
			$queryCB = true;
		    }
		}
	    }
	    $JSand = implode("','", array_unique($JSand) );

	    $userCB = false;

	    if( $config->first_name == 'core' ){
		$names = explode(' ', $user->name);
		$first_name = $names[0];
		$last_name = '';
		if(isset($names[1])){
		    for($i=1;$i<count($names);$i++){
			$last_name .= $names[$i].' ';
		    }
		}
		$last_name = trim($last_name);
	    } else {
		$query = "SELECT * FROM #__comprofiler WHERE user_id = '$user->id'";
		$db->setQuery($query);
		$userCB = $db->loadObjectList();

		$first_name = $userCB[0]->firstname;
		$last_name  = $userCB[0]->lastname;
		if( $userCB[0]->middlename != '' ){
		    $last_name = $userCB[0]->middlename.' '.$last_name;
		}
	    }
	    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();
		}
	    }
	    $data = array('first_name'  => $first_name,
			  'last_name'   => $last_name,
			  'email1'	=> $user->email
			 );
	    foreach( $config as $k => $v ){
		if( $k != 'first_name' && $k != 'last_name' ){
		    if( $v ){
			$vEx = explode(';', $v);
			if($vEx[0] == 'js' ) {
			    $data[$k] = ( isset($JSfieldsArray[$vEx[1]]) ) ? $JSfieldsArray[$vEx[1]] : '';
			} else {
			    $data[$k] = ( isset( $userCB[0]->{$vEx[1]} ) ) ? str_replace('|*|',', ',$userCB[0]->{$vEx[1]}) : '';
			}
		    }

		}
	    }

	    $existing_user = $sugar->findUserByEmail( $user->email );

	    if( isset( $existing_users[ $data['email1'] ] ) ){
		$data['id'] = $existing_user[ $d['email1'] ];
	    }

	    $sendData = array( $data );

	    $result = $sugar->setContactMulti( $sendData );


	    return;
	}
Exemple #3
0
 public function getSugarFields()
 {
     $params = JComponentHelper::getParams('com_joomailermailchimpintegration');
     $sugar_name = $params->get('params.sugar_name');
     $sugar_pwd = $params->get('params.sugar_pwd');
     $sugar_url = $params->get('params.sugar_url');
     require_once JPATH_ADMINISTRATOR . '/components/com_joomailermailchimpintegration/libraries/sugar.php';
     $sugar = new SugarCRMWebServices();
     $sugar->SugarCRM($sugar_name, $sugar_pwd, $sugar_url);
     $sugar->login();
     $fields = $sugar->getModuleFields('Contacts');
     $disallowedFields = array('id', 'date_entered', 'date_modified', 'modified_user_id', 'modified_by_name', 'created_by', 'created_by_name', 'deleted', 'assigned_user_id', 'assigned_user_name', 'email1');
     for ($x = 0; $x < count($fields); $x++) {
         if (in_array($fields[$x]['name'], $disallowedFields)) {
             unset($fields[$x]);
         }
     }
     return $fields;
 }
Exemple #4
0
 function ajax_sync_sugar()
 {
     $db =& JFactory::getDBO();
     $params =& JComponentHelper::getParams('com_joomailermailchimpintegration');
     $paramsPrefix = version_compare(JVERSION, '1.6.0', 'ge') ? 'params.' : '';
     $sugar_name = $params->get('params.sugar_name');
     $sugar_pwd = $params->get('params.sugar_pwd');
     $sugar_url = $params->get('params.sugar_url');
     $config = $this->getModel('sync')->getConfig('sugar');
     if ($config == NULL) {
         jimport('joomla.application.component.helper');
         $cHelper = JComponentHelper::getComponent('com_comprofiler', true);
         $cbInstalled = $cHelper->enabled;
         $config = new stdClass();
         $config->first_name = $cbInstalled ? 'CB' : 'core';
     }
     $validator = new EmailAddressValidator();
     require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_joomailermailchimpintegration' . DS . 'libraries' . DS . 'sugar.php';
     $sugar = new SugarCRMWebServices();
     $sugar->SugarCRM($sugar_name, $sugar_pwd, $sugar_url);
     $sugar->login();
     $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 != 'firstname' && $k != 'lastname') {
                 $vEx = explode(';', $v);
                 if ($vEx[0] == 'js') {
                     $queryJS = true;
                     $JSand[] = $vEx[1];
                 } else {
                     if ($vEx[0] == 'CB') {
                         $queryCB = true;
                     }
                 }
             }
         }
         $JSand = implode("','", array_unique($JSand));
         $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)) {
                 $userCB = false;
                 if ($config->first_name == 'core') {
                     $names = explode(' ', $user->name);
                     $first_name = $names[0];
                     $last_name = '';
                     if (isset($names[1])) {
                         for ($i = 1; $i < count($names); $i++) {
                             $last_name .= $names[$i] . ' ';
                         }
                     }
                     $last_name = trim($last_name);
                 } else {
                     $query = "SELECT * FROM #__comprofiler WHERE user_id = '{$user->id}'";
                     $db->setQuery($query);
                     $userCB = $db->loadObjectList();
                     $first_name = $userCB[0]->firstname;
                     $last_name = $userCB[0]->lastname;
                     if ($userCB[0]->middlename != '') {
                         $last_name = $userCB[0]->middlename . ' ' . $last_name;
                     }
                 }
                 //	var_dump($first_name, $last_name);
                 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();
                     }
                 }
                 $data[$x] = array('first_name' => $first_name, 'last_name' => $last_name, 'email1' => $user->email);
                 foreach ($config as $k => $v) {
                     if ($k != 'first_name' && $k != 'last_name') {
                         if ($v) {
                             $vEx = explode(';', $v);
                             if ($vEx[0] == 'js') {
                                 $data[$x][$k] = isset($JSfieldsArray[$vEx[1]]) ? $JSfieldsArray[$vEx[1]] : '';
                             } else {
                                 $data[$x][$k] = isset($userCB[0]->{$vEx[1]}) ? str_replace('|*|', ', ', $userCB[0]->{$vEx[1]}) : '';
                             }
                         }
                     }
                 }
                 $emails[$x] = $user->email;
                 $userIDs[] = $user->id;
                 $x++;
             } else {
                 $errorMsg .= '"Invalid email => ' . $user->email . '", ';
                 $failed++;
             }
             $addedUsers[] = $user->id;
         }
         if (isset($emails[0])) {
             $existing_users = $sugar->findUserByEmail($emails);
         } else {
             $existing_users = array();
         }
         $sendData = array();
         $x = 0;
         foreach ($data as $d) {
             $sendData[$x] = $d;
             if (isset($existing_users[$d['email1']])) {
                 $sendData[$x]['id'] = $existing_users[$d['email1']];
                 $updated++;
             } else {
                 $new++;
             }
             $x++;
         }
         $sugarResult = $sugar->setContactMulti($sendData);
         if ($sugarResult !== false && isset($userIDs[0])) {
             $userIDsInserts = array();
             foreach ($userIDs as $uid) {
                 $userIDsInserts[] = "('sugar', '{$uid}')";
             }
             $userIDsInsert = implode(', ', $userIDsInserts);
             $query = "INSERT INTO #__joomailermailchimpintegration_crm_users " . "(crm, user_id) VALUES " . $userIDsInsert;
             $db->setQuery($query);
             $db->execute();
         }
     } 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'] = $elements->run++;
     $response['done'] = $done;
     $response['newUser'] = $new;
     $response['updated'] = $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 . ' ' . JText::_('JM_USERS_PROCESSED');
         $msg .= ' (' . $new . ' ' . JText::_('JM_NEW') . ' ; ' . $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);
 }