/**
  * Establishes a connection to the salesforce server
  *
  * @param array $config configuration to be used for creating connection
  * @return bool true on success
  */
 protected function _connect(array $config)
 {
     $this->config = $config;
     if (empty($this->config['my_wsdl'])) {
         throw new \ErrorException("A WSDL needs to be provided");
     } else {
         $wsdl = CONFIG . DS . $this->config['my_wsdl'];
     }
     $mySforceConnection = new \SforceEnterpriseClient();
     $mySoapClient = $mySforceConnection->createConnection($wsdl);
     $sflogin = (array) Cache::read('salesforce_login', 'salesforce');
     if (!empty($sflogin['sessionId'])) {
         $mySforceConnection->setSessionHeader($sflogin['sessionId']);
         $mySforceConnection->setEndPoint($sflogin['serverUrl']);
     } else {
         try {
             $mylogin = $mySforceConnection->login($this->config['username'], $this->config['password']);
             $sflogin = array('sessionId' => $mylogin->sessionId, 'serverUrl' => $mylogin->serverUrl);
             Cache::write('salesforce_login', $sflogin, 'salesforce');
         } catch (Exception $e) {
             $this->log("Error logging into salesforce - Salesforce down?");
             $this->log("Username: "******"Password: " . $this->config['password']);
         }
     }
     $this->client = $mySforceConnection;
     $this->connected = true;
     return $this->connected;
 }
 /**
  * Initialize method
  *
  * @param  array $config The configuration for the Table.
  * @return void
  */
 public function initialize(array $config)
 {
     parent::initialize($config);
     $this->table(false);
     $this->displayField('Id');
     $this->primaryKey('Id');
     if (!empty($config['connection']->config()['my_wsdl'])) {
         $wsdl = CONFIG . DS . $config['connection']->config()['my_wsdl'];
     } else {
         throw new \Exception("You need to provide a WSDL");
     }
     $mySforceConnection = new \SforceEnterpriseClient();
     $mySoapClient = $mySforceConnection->createConnection($wsdl);
     $sflogin = (array) Cache::read('salesforce_login', 'salesforce');
     if (!empty($sflogin['sessionId'])) {
         $mySforceConnection->setSessionHeader($sflogin['sessionId']);
         $mySforceConnection->setEndPoint($sflogin['serverUrl']);
     } else {
         try {
             $mylogin = $mySforceConnection->login($config['connection']->config()['username'], $config['connection']->config()['password']);
             $sflogin = array('sessionId' => $mylogin->sessionId, 'serverUrl' => $mylogin->serverUrl);
             Cache::write('salesforce_login', $sflogin, 'salesforce');
         } catch (Exception $e) {
             $this->log("Error logging into salesforce from Table - Salesforce down?");
         }
     }
     if (!($sObject = Cache::read($this->name . '_sObject', 'salesforce'))) {
         $sObject = $mySforceConnection->describeSObject($this->name);
         Cache::write($this->name . '_sObject', $sObject, 'salesforce');
     }
     foreach ($sObject->fields as $field) {
         if (substr($field->soapType, 0, 3) != "ens") {
             //we dont want type of ens
             if (substr($field->soapType, 4) == "int") {
                 $type_name = "integer";
             } elseif (substr($field->soapType, 4) == "boolean") {
                 $type_name = "boolean";
             } elseif (substr($field->soapType, 4) == "dateTime" || substr($field->soapType, 4) == "date") {
                 $type_name = "datetime";
             } else {
                 $type_name = "string";
             }
             if ($field->updateable) {
                 $this->updatable_fields[$field->name] = ['type' => $type_name, 'length' => $field->length, 'null' => $field->nillable];
                 $this->selectable_fields[$field->name] = ['type' => $type_name, 'length' => $field->length, 'null' => $field->nillable];
             } else {
                 $this->selectable_fields[$field->name] = ['type' => $type_name, 'length' => $field->length, 'null' => $field->nillable];
             }
         }
     }
     //Cache select fields right away as most likely need them immediately
     Cache::write($this->name . '_selectable_schema', $this->selectable_fields, 'salesforce');
     if (!$this->schema(Cache::read($this->name . '_updatable_schema', 'salesforce'))) {
         $this->schema($this->updatable_fields);
         Cache::write($this->name . '_updatable_schema', $this->updatable_fields, 'salesforce');
     }
 }
Beispiel #3
0
define("PASSWORD", "***");
define("SECURITY_TOKEN", "***");
ini_set("soap.wsdl_cache_enabled", "0");
try {
    echo "<table border=\"1\"><tr><td>";
    echo "First with the enterprise client<br/><br/>\n";
    $mySforceConnection = new SforceEnterpriseClient();
    $mySforceConnection->createConnection("PHPToolkit/soapclient/enterprise.wsdl.xml");
    // Simple example of session management - first call will do
    // login, refresh will use session ID and location cached in
    // PHP session
    if (isset($_SESSION['enterpriseSessionId'])) {
        $location = $_SESSION['enterpriseLocation'];
        $sessionId = $_SESSION['enterpriseSessionId'];
        $mySforceConnection->setEndpoint($location);
        $mySforceConnection->setSessionHeader($sessionId);
        echo "Used session ID for enterprise<br/><br/>\n";
    } else {
        $mySforceConnection->login(USERNAME, PASSWORD . SECURITY_TOKEN);
        $_SESSION['enterpriseLocation'] = $mySforceConnection->getLocation();
        $_SESSION['enterpriseSessionId'] = $mySforceConnection->getSessionId();
        echo "Logged in with enterprise<br/><br/>\n";
    }
    /*
    $query = "SELECT Id, FirstName, LastName, Phone from Contact";
    $response = $mySforceConnection->query($query);
    echo "Results of query '$query'<br/><br/>\n";
    foreach ($response->records as $record) {
        echo $record->Id.": ".$record->FirstName." "
       .$record->LastName." ".$record->Phone."<br/>\n";
    }
Beispiel #4
0
    echo "key : " . $key;
    echo "\t";
    echo "value : " . $val;
    echo "\n";
}
foreach ($_GET as $key => $val) {
    echo "key : " . $key;
    echo "\t";
    echo "value : " . $val;
    echo "\n";
}
require_once 'lib/soapclient/SforceEnterpriseClient.php';
//$mySforceConnection->createConnection("lib/soapclient/enterprise8.wsdl.xml");
//$mySforceConnection->login("*****@*****.**", "saasten2011");
try {
    $mySforceConnection = new SforceEnterpriseClient();
    $mySforceConnection->createConnection("lib/soapclient/enterprise1.wsdl.xml");
    $mySforceConnection->setSessionHeader($_GET['session'] . "");
    $mySforceConnection->setEndpoint($_GET['url']);
    $UserInfo = $mySforceConnection->getUserInfo();
    var_dump($UserInfo->userName);
    if (!empty($UserInfo->userName)) {
        $query = "SELECT Id, FirstName, LastName FROM Contact";
        $response = $mySforceConnection->query($query);
        echo "<pre>";
        var_dump($response);
        echo "</pre>";
    }
} catch (Exception $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
}
 /**
  * Use WSDL for basic fields first of all
  * passes the salesforce credentals for login
  * @return boolean True on success, false on failure
  */
 public function connect()
 {
     //Vendor loading seems to be picky using App::import
     require_once App::Path('Vendor')[0] . 'salesforce/soapclient/SforceEnterpriseClient.php';
     if (empty($this->config['my_wsdl'])) {
         $wsdl = App::Path('Vendor')[0] . 'salesforce/soapclient/' . $this->config['standard_wsdl'];
     } else {
         $wsdl = APP . "Config" . DS . $this->config['my_wsdl'];
     }
     $mySforceConnection = new SforceEnterpriseClient();
     //Dont forget to Change your API version in here!
     $mySoapClient = $mySforceConnection->createConnection($wsdl);
     $sflogin = (array) Cache::read('salesforce_login', 'short');
     if (!empty($sflogin['sessionId'])) {
         $mySforceConnection->setSessionHeader($sflogin['sessionId']);
         $mySforceConnection->setEndPoint($sflogin['serverUrl']);
     } else {
         $mylogin = $mySforceConnection->login($this->config['username'], $this->config['password']);
         $sflogin = array('sessionId' => $mylogin->sessionId, 'serverUrl' => $mylogin->serverUrl);
         Cache::write('salesforce_login', $sflogin, 'short');
     }
     $this->client = $mySforceConnection;
     $this->connected = true;
     return $this->connected;
 }