/** * connect to salesforce, get sforceClient * @return SforcePartnerClient */ public static function getClient() { if (self::$_sForceClient == NULL) { $sforceClient = new SforcePartnerClient(); // TODO now only partner client supported. $soapClient = $sforceClient->createConnection(self::$wsdlPartner); if (PHP_SAPI != 'cli') { @session_start(); if (isset($_SESSION[self::SESSION_KEY])) { $conf = $_SESSION[self::SESSION_KEY]; $sforceClient->setEndpoint($conf->location); $sforceClient->setSessionHeader($conf->sessionId); } else { $sforceLogin = $sforceClient->login(self::$username, self::$password . self::$securityToken); $conf = new stdClass(); $conf->location = $sforceClient->getLocation(); $conf->sessionId = $sforceClient->getSessionId(); $_SESSION[self::SESSION_KEY] = $conf; } } else { $sforceLogin = $sforceClient->login(self::$username, self::$password . self::$securityToken); } self::$_sForceClient = $sforceClient; } return self::$_sForceClient; }
public function testUpdateAll() { $j = new Sobject_Jyugyoin__c(); $j->Name = "佐藤" . time(); $j->JyugyoinBango__c = substr(time(), 5); $j->Age__c = 30; $result = $j->insert(); $this->assertTrue($result); $this->assertNotNull($j->Id); $j2 = new Sobject_Jyugyoin__c(); $j2->Id = $j->Id; $j2->Name = "加藤"; $j2->fieldnull('Age__c'); $j3 = new Sobject_Jyugyoin__c(); $j3->Name = "Kato"; $j3->Id = '12345600'; Srecord_Schema::updateAll(array($j2, $j3)); $this->assertEqual($j2->getState(), Srecord_ActiveRecord::STATE_SUCCESS); $j4 = Sobject_Jyugyoin__c::neu()->find($j2->Id); $this->assertEqual($j4->Age__c, ""); $this->assertEqual($j4->Name, "加藤"); $this->assertEqual($j3->getState(), SRecord_ActiveRecord::STATE_FAIL); $errors = $j3->getErrors(); print_r($errors); }
/** * generate entity * */ public function execute() { // connect to salesforce $client = Srecord_Schema::getClient(); // get object definition $objectTypes = array(); $global = $client->describeGlobal(); foreach ($global->sobjects as $def) { $objectTypes[] = $def->name; } $objectDefs = array(); $offset = 0; $length = 100; $max = count($objectTypes); while ($offset < $max) { $part = $client->describeSObjects(array_slice($objectTypes, $offset, $length)); foreach ($part as $one) { // TODO arrayの+でうまくいかなかった。。 $objectDefs[] = $one; } $offset += $length; } // generate class file foreach ($objectDefs as $def) { $this->manipMeta($def); $this->generate($def); } }
public function testUpsert() { $extid = substr(time(), 5); // create $j = new Sobject_Jyugyoin__c(); $j->Name = "Test Member" . time(); $j->JyugyoinBango__c = $extid; $j->Age__c = 30; Srecord_Schema::upsertAll('JyugyoinBango__c', array($j)); $this->assertEqual($j->getState(), Srecord_ActiveRecord::STATE_SUCCESS); $this->assertTrue(strlen($j->Id) > 1); }
public function testDeleteAll() { $list = Sobject_Jyugyoin__c::neu()->limit(3)->select(); Srecord_Schema::deleteAll($list); $this->assertEqual($list[0]->getState(), Srecord_ActiveRecord::STATE_SUCCESS); $this->assertEqual($list[1]->getState(), Srecord_ActiveRecord::STATE_SUCCESS); $this->assertEqual($list[2]->getState(), Srecord_ActiveRecord::STATE_SUCCESS); print " 0: " . $list[0]->Id; print " 1: " . $list[1]->Id; print " 2: " . $list[2]->Id; array_pop($list); Srecord_Schema::undeleteAll($list); $this->assertEqual($list[0]->getState(), Srecord_ActiveRecord::STATE_SUCCESS); $this->assertEqual($list[1]->getState(), Srecord_ActiveRecord::STATE_SUCCESS); }
public function testCreateAll() { $j = new Sobject_Jyugyoin__c(); $j->Name = "佐藤" . time(); $j2 = new Sobject_Jyugyoin__c(); $j2->Name = "Sato" . time(); $j2->JyugyoinBango__c = substr(time(), 5); // fail. Srecord_Schema::createAll(array($j, $j2)); $this->assertEqual($j->getState(), Srecord_ActiveRecord::STATE_FAIL); $this->assertEqual($j->getErrors()->statusCode, "REQUIRED_FIELD_MISSING"); $this->assertEqual($j->Id, ""); $this->assertEqual($j2->getState(), Srecord_ActiveRecord::STATE_SUCCESS); $this->assertTrue(strlen($j2->Id) > 1); print $j2->Id; }
// // autoload // function srecord_autoload($name) { $lower = strtolower($name); foreach (array('srecord', 'sobject', 'sobjectdef') as $target) { $check = $target . "_"; if (strpos($lower, $check) === 0) { $filename = substr($name, strlen($check)); include_once "{$target}/{$filename}.php"; } } } function __autoload($clsname) { srecord_autoload($clsname); } if (function_exists('spl_autoload_register')) { spl_autoload_register('srecord_autoload'); } //ini_set('unserialize_callback_func', 'srecord_autoload'); // // definition // define("PHPTOOLKIT_DIR", dirname(__FILE__) . '/phptoolkit-13_1'); Srecord_Schema::$username = '******'; Srecord_Schema::$password = '******'; Srecord_Schema::$securityToken = 'salesforcesecuritytoken'; Srecord_Schema::$wsdlPartner = dirname(__FILE__) . "/wsdl/partner.wsdl";
/** * undelete record of specified id. * Id must be set as a parameter or Id field. * if you want to undelete multiple records, use Srecord_Schema::undeleteAll() instead. * * @param string $id * @return bool */ public function undelete($id = NULL) { if ($id == NULL) { $id = $this->Id; } if ($this->_null($id) == NULL) { throw new SRecord_ActiveRecordException('Id is not specified.'); } // connect to salesforce. $client = Srecord_Schema::getClient(); $res = $client->undelete(array($id)); if ($res->success == 1) { $this->_state = self::STATE_SUCCESS; $this->_errors = NULL; return TRUE; } // error. $this->_state = self::STATE_FAIL; $this->_errors = $res->errors; return FALSE; }