'…' ]. * @type int $plazo_dias 1..30 (en prueba, se acorta a 3). Por defecto 7. * @type bool $confidencial Por defecto false. * @type bool $validar_contacto Por defecto false. * @type string $referencia Opcional. Dato del programador, vuelve en los ganchos. * } * @return int|WP_Error Id del envío en el sitio. */ function validafirma_enviar_a_firma( array $args ) { if ( ! Validafirma_Conexion::conectada() ) { return new WP_Error( 'validafirma_desconectado', __( 'El sitio no está conectado a ValidaFirma.', 'validafirma' ) ); } $archivo = isset( $args['archivo'] ) ? (string) $args['archivo'] : ''; if ( '' === $archivo || ! is_readable( $archivo ) || ! preg_match( '/\.pdf$/i', $archivo ) ) { return new WP_Error( 'validafirma_archivo', __( 'El archivo debe ser un PDF legible.', 'validafirma' ) ); } if ( filesize( $archivo ) > 10 * MB_IN_BYTES ) { return new WP_Error( 'validafirma_archivo', __( 'El PDF pesa más de 10 MB.', 'validafirma' ) ); } if ( empty( $args['firmantes'] ) || ! is_array( $args['firmantes'] ) ) { return new WP_Error( 'validafirma_firmantes', __( 'Falta al menos un firmante.', 'validafirma' ) ); } $resultado = Validafirma_Enviador::enviar( array( 'origen' => 'funcion', 'origen_ref' => isset( $args['referencia'] ) ? (string) $args['referencia'] : '', 'titulo' => isset( $args['titulo'] ) ? (string) $args['titulo'] : '', 'archivo' => $archivo, 'copiar_archivo' => true, 'firmantes' => $args['firmantes'], 'plazo_dias' => isset( $args['plazo_dias'] ) ? (int) $args['plazo_dias'] : 7, 'confidencial' => ! empty( $args['confidencial'] ), 'validar_contacto' => ! empty( $args['validar_contacto'] ), 'referencia' => isset( $args['referencia'] ) ? (string) $args['referencia'] : '', ), 'manual' ); if ( 'error' === $resultado['estado'] || 'sin_enviar' === $resultado['estado'] ) { return new WP_Error( 'validafirma_envio', $resultado['mensaje'], array( 'motivo' => $resultado['motivo'] ) ); } return (int) $resultado['envio_id']; } } if ( ! function_exists( 'validafirma_obtener_envio' ) ) { /** * Lee un envío del sitio, sin rutas de archivo ni datos de la llave. * * @param int $envio_id Id del envío en el sitio. * @return array|null */ function validafirma_obtener_envio( int $envio_id ) { $envio = Validafirma_Envios::obtener( $envio_id ); return $envio ? Validafirma_Envios::publico( $envio ) : null; } }