%PDF- %PDF-
| Direktori : /home1/lightco1/www/administrator/components/com_joomailermailchimpintegration/libraries/ |
| Current File : //home1/lightco1/www/administrator/components/com_joomailermailchimpintegration/libraries/sugar.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/>.
**/
// no direct access
defined('_JEXEC') or die('Restricted Access');
require_once(JPATH_ADMINISTRATOR.'/components/com_joomailermailchimpintegration/libraries/nusoap/nusoap.php');
// Wrapper class for SugarCRM Web Services
class SugarCRMWebServices {
// Let's define a place to store our access credentials
var $username;
var $password;
var $uri;
// We'll store the session ID here for later use
var $session;
// We'll initialize a brand new NuSOAP Client object into this one
var $soap;
// Constructor (PHP4-style)
function SugarCRM($username, $password, $uri)
{
$this->username = $username;
$this->password = $password;
if (substr($uri, -1) == '/'){
$uri = substr($uri, 0, -1);
}
$this->soap = new nusoap_client($uri.'/soap.php');
}
// Login function which stores our session ID
function login()
{
$result = $this->soap->call('login', array('user_auth' => array('user_name' => $this->username, 'password' => md5($this->password), 'version' => '.01'), 'application_name' => 'My Application'));
$this->session = $result['id'];
}
// Create a brand new Lead, return the SOAP result
function createLead($data)
{
// Parse the data and store it into a name/value catalog
// which will then pe passed on to Sugar through SOAP
$name_value_list = array();
foreach($data as $key => $value)
array_push($name_value_list, array('name' => $key, 'value' => $value));
// Fire the set_entry call to the Leads module
$result = $this->soap->call('set_entry', array(
'session' => $this->session,
'module_name' => 'Leads',
'name_value_list' => $name_value_list
));
return $result;
}
// Create a new Contact, return the SOAP result
function setContact($data)
{
$name_value_list = array();
foreach($data as $key => $value) {
array_push($name_value_list, array('name' => $key, 'value' => $value));
}
$result = $this->soap->call('set_entry', array(
'session' => $this->session,
'module_name' => 'Contacts',
'name_value_list' => $name_value_list
));
return $result;
}
// Create several new Contacts, return the SOAP result
function setContactMulti($data)
{
$name_value_list = array();
$i = 0;
foreach($data as $d) {
$name_value_list[$i] = array();
foreach($d as $key => $value) {
array_push($name_value_list[$i], array('name' => $key, 'value' => $value));
}
$i++;
}
$result = $this->soap->call('set_entries', array(
'session' => $this->session,
'module_name' => 'Contacts',
'name_value_list' => $name_value_list
));
return $result;
}
function getContact($emails){
// $emails = implode("','", $emails);
$result = $this->soap->call('get_entry_list', array(
'session' => $this->session,
'module_name' => 'Contacts',
'query' => "contacts.id in (
SELECT eabr.bean_id
FROM email_addr_bean_rel eabr JOIN email_addresses ea
ON (ea.id = eabr.email_address_id)
WHERE eabr.deleted=0 AND ea.email_address IN ('".$emails."'))",
'order_by' => '',
'offset' => 0,
'select_fields' => array('result_count'),
'max_results' => 10,
'deleted' => -1
));
return $result;
}
function updateContact($data){
$name_value_list = array(array('name' => 'id', 'value' => '758a7b32-6f70-7803-e130-4d3d5881fedf'));
foreach($data as $key => $value) {
array_push($name_value_list, array('name' => $key, 'value' => $value));
}
$result = $this->soap->call('set_entry', array(
'session' => $this->session,
'module_name' => 'Contacts',
'name_value_list' => $name_value_list
));
var_dump($result);die;
return $result;
}
function findUserByEmail($emails) {
$found = array();
if (!is_array($emails)) {
$temp = $emails;
$emails = array();
$emails[] = $temp;
}
$emailsStr = implode("','", $emails);
$info = $this->soap->call('get_entry_list',
array(
'session' => $this->session,
'module_name' => 'Contacts',
'query' => "contacts.id in (
SELECT eabr.bean_id
FROM email_addr_bean_rel eabr
JOIN email_addresses ea
ON (ea.id = eabr.email_address_id)
WHERE eabr.deleted = 0
AND ea.email_address IN ('$emailsStr')
)",
'order_by' => '',
'offset' => 0,
'select_fields' => array(),
'max_results' => 25,
'deleted' => -1
)
);
if ($info){
foreach ($info['entry_list'] as $entry) {
foreach ($entry as $ent) {
if (is_array($ent)) {
foreach ($ent as $e) {
if (isset($e['name']) && $e['name'] == 'email1') {
if (in_array($e['value'], $emails)){
$found[$e['value']] = $entry['id'];
}
}
}
}
}
}
}
return $found;
}
function getModuleFields($module){
$fields = $this->soap->call('get_module_fields',
array(
'session' => $this->session,
'module_name' => $module
)
);
return $fields["module_fields"];
}
}