Exemplo n.º 1
0
 /**
  * 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));
 }