/** * This method is for sending a once-off document that has not been setup as a Template. * * @param string $path Absolute path of the document * @param array $payload Payload of the request * * @return array XML response parsed to array * * @throws Exception Missing required key */ public static function send($client, $path, $payload) { // validation of required arguments foreach (['action', 'type', 'recipients'] as $argument) { ArrayHelpers::ensureIsSet($payload, $argument); } $info = pathinfo($path); $payload['document_data'] = ['type' => $payload['type'], 'value' => $path]; // change the underlying document (url, base64) if ('base64' == $payload['type']) { $payload['document_data']['filename'] = $info['basename']; // get the resource content $resource = fopen($path, 'r'); $content = fread($resource, filesize($path)); fclose($resource); $payload['document_data']['value'] = base64_encode($content); } // make the request $payload = XmlHelpers::toXml(['document' => $payload]); $response = $client->post('/api/documents.xml', $payload); return XmlHelpers::toArray($response); }
/** * Transform an array-tree of args into a Prefill Template XML payload. * * @param array $args * * @return string */ private static function _preparePrefillRequest($args) { foreach (array('guid', 'action', 'subject', 'roles') as $k) { ArrayHelpers::ensureIsSet($args, $k); } $roles = $args['roles']; foreach ($roles as &$role) { $idKey = isset($role['role_name']) ? 'role_name' : 'role_id'; $role['@attributes'] = array($idKey => $role[$idKey]); unset($role[$idKey]); } $args['roles'] = array('role' => $roles); if (isset($args['merge_fields'])) { $mergeFields = $args['merge_fields']; foreach ($mergeFields as &$mergeField) { $idKey = isset($mergeField['merge_field_name']) ? 'merge_field_name' : 'merge_field_id'; $mergeField['@attributes'] = array($idKey => $mergeField[$idKey]); unset($mergeField[$idKey]); } $args['merge_fields'] = array('merge_field' => $mergeFields); } // TODO: tags return XmlHelpers::toXml(array('template' => $args)); }