PHP code example of smith-carson / prosperworks-sdk
1. Go to this page and download the library: Download smith-carson/prosperworks-sdk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
smith-carson / prosperworks-sdk example snippets
//runs GET /people/10 to retrieve a single record
$people = CRM::person()->find(10);
//runs GET /people multiple times (it's paged) until all entries are retrieved
$people = CRM::person()->all();
//there's no such operation in some endpoints; all() runs an empty /search, instead
//runs POST /people to generate a new record
$newPerson = CRM::person()->create(['name' => 'xxx']);
//runs PUT /people/25 to edit a given record
$person = CRM::person()->edit(25, ['name' => 'xxx']);
//runs DELETE /people/10 to destroy that record
$bool = CRM::person()->delete(10);
//runs POST /people/search with the given parameters until all entries are found (it's paged)
$people = CRM::person()->search(['email' => '[email protected]']);
//plural calls do the same as the singular all() call
$people = CRM::people(); //same as CRM::person()->all()
$tasks = CRM::tasks(); //same as CRM::task()->all()
$companies = CRM::companies(); //same as CRM::company()->all()
//there's also two other types of magic calls
$people = CRM::person(23); //same as CRM::person()->find(23)
$people = CRM::person(['country' => 'US']); //same as CRM::person()->search(...)
$types = CRM::fieldList('contactType'); //singular!
print_r($types);
// gives an array of names, indexed by ID:
// (
// [123] => Potential Customer
// [124] => Current Customer
// [125] => Uncategorized
// [126] => Former Customer
// )
echo CRM::fieldList('contactType', 524131); //search argument
// prints "Potential Customer". That argument searches on both sides of the array
$actTypes = CRM::fieldList('activityType', null, true); //asks for "detailed response"
print_r($actTypes);
// gives the entire resources, still indexed by ID
// [166] => stdClass Object
// (
// [id] => 166
// [category] => user
// [name] => Social Media
// [is_disabled] =>
// [count_as_interaction] => 1
// )
//
// [...]
// )
// you always have to feed the origin resource ID to related()
// and then call the operation you want, like:
$tasks = CRM::task()->related(10)->all(); //lists all
$task_projects = CRM::task()->related(22)->projects(); //lists specific type
$task_project = CRM::task()->related(22)->create(10, 'project'); //create one
$task_project = CRM::task()->related(22)->delete(27, 'project'); //and remove
//this call is using a simple generator
$thousandsOfTasksQueryResult = [...];
$allTasks = CRM::task()->createMany(function() use ($thousandsOfTasksQueryResult) {
foreach ($thousandsOfTasksQueryResult as $task) {
yield [
'name' => $task->name,
'due_date' => $task->dueDate->format('U'),
'status' => $task->completed? 'Completed' : 'Open'
];
}
});
// as that's a batch operation, it seemed unsafe to throw harsh errors.
// thus, success will give an object of data, while errors return a simple message
$toDelete = [];
foreach ($allTasks as $response) {
if (is_object($response) {
$toDelete[] = $response->id;
} else {
$logger->warning("Couldn't create Task: $response");
}
}
//here we use a plain list of arguments: you have to unpack the array
CRM::task()->delete(...$toDelete);
}
use ProsperWorks\SubResources\Relation;
$relClientsQuery = [...];
CRM::task()->relatedBatch()->create(function() use ($relClientsQuery, $pwTaskId) {
foreach ($relatedClientsQuery as $client) {
// this would generate an array of Relation() objects, indexed by the same ID
// causes no error; this won't become a real array (thus, with keys conflicts)
yield new $pwTaskId => new Relation($client->id, 'company');
// the following would also work
//yield new $pwTaskId => ['id' => $client->id, 'type' => 'company'];
}
});