__( 'ValidaFirma: envíos a firma', 'validafirma' ), 'callback' => array( __CLASS__, 'exportar' ), ); return $exportadores; } /** * Registra el borrador. * * @param array $borradores Borradores existentes. * @return array */ public static function registrar_borrador( $borradores ) { $borradores['validafirma'] = array( 'eraser_friendly_name' => __( 'ValidaFirma: envíos a firma', 'validafirma' ), 'callback' => array( __CLASS__, 'borrar' ), ); return $borradores; } /** * Busca el firmante con ese correo dentro de un envío. * * @param array $envio Envío. * @param string $correo Correo. * @return int Posición del firmante, o -1. */ private static function posicion_del_firmante( array $envio, $correo ) { foreach ( $envio['firmantes'] as $i => $firmante ) { if ( isset( $firmante['email'] ) && strtolower( (string) $firmante['email'] ) === $correo ) { return (int) $i; } } return -1; } /** * Exportador: los datos del firmante, cada envío con documento, estado y fechas, y la referencia a la copia del PDF. * * @param string $correo Correo de la persona. * @param int $pagina Página (de 1). * @return array */ public static function exportar( $correo, $pagina = 1 ) { $correo = strtolower( trim( (string) $correo ) ); $envios = Validafirma_Envios::por_correo( $correo ); $pagina = max( 1, (int) $pagina ); $parte = array_slice( $envios, ( $pagina - 1 ) * self::POR_PAGINA, self::POR_PAGINA ); $estados = Validafirma_Envios::estados(); $motivos = Validafirma_Envios::motivos(); $datos = array(); foreach ( $parte as $envio ) { $pos = self::posicion_del_firmante( $envio, $correo ); $firmante = $pos >= 0 ? $envio['firmantes'][ $pos ] : array(); $items = array( array( 'name' => __( 'Documento', 'validafirma' ), 'value' => $envio['titulo'], ), array( 'name' => __( 'Estado', 'validafirma' ), 'value' => isset( $estados[ $envio['estado'] ] ) ? $estados[ $envio['estado'] ] : $envio['estado'], ), array( 'name' => __( 'Modo', 'validafirma' ), 'value' => $envio['es_prueba'] ? __( 'Prueba', 'validafirma' ) : __( 'Producción', 'validafirma' ), ), array( 'name' => __( 'RUT', 'validafirma' ), 'value' => isset( $firmante['rut'] ) ? $firmante['rut'] : '', ), array( 'name' => __( 'Nombre', 'validafirma' ), 'value' => isset( $firmante['nombre'] ) ? $firmante['nombre'] : '', ), array( 'name' => __( 'Correo', 'validafirma' ), 'value' => isset( $firmante['email'] ) ? $firmante['email'] : '', ), array( 'name' => __( 'Teléfono', 'validafirma' ), 'value' => isset( $firmante['telefono'] ) ? $firmante['telefono'] : '', ), array( 'name' => __( 'Creado', 'validafirma' ), 'value' => $envio['creado_en'] . ' UTC', ), ); if ( ! empty( $envio['terminado_en'] ) ) { $items[] = array( 'name' => __( 'Terminado', 'validafirma' ), 'value' => $envio['terminado_en'] . ' UTC', ); } if ( ! empty( $envio['motivo'] ) ) { $items[] = array( 'name' => __( 'Motivo de «Sin enviar»', 'validafirma' ), 'value' => isset( $motivos[ $envio['motivo'] ] ) ? $motivos[ $envio['motivo'] ] : $envio['motivo'], ); } if ( ! empty( $envio['archivo_firmado'] ) ) { $items[] = array( 'name' => __( 'Copia del PDF firmado en el sitio', 'validafirma' ), 'value' => __( 'Guardada en la carpeta privada del plugin (archivo:', 'validafirma' ) . ' ' . $envio['archivo_firmado'] . ')', ); } $datos[] = array( 'group_id' => 'validafirma-envios', 'group_label' => __( 'Envíos a firma (ValidaFirma)', 'validafirma' ), 'group_description' => __( 'Documentos enviados a firma desde este sitio en los que figura la persona.', 'validafirma' ), 'item_id' => 'validafirma-envio-' . $envio['id'], 'data' => $items, ); } return array( 'data' => $datos, 'done' => count( $envios ) <= $pagina * self::POR_PAGINA, ); } /** * Borrador: suprime en el sitio los envíos de la persona y la copia del PDF. No le pide nada a ValidaFirma. * * @param string $correo Correo de la persona. * @param int $pagina Página (de 1). * @return array */ public static function borrar( $correo, $pagina = 1 ) { unset( $pagina ); $correo = strtolower( trim( (string) $correo ) ); $removido = false; $retenido = false; $mensajes = array(); foreach ( Validafirma_Envios::por_correo( $correo ) as $envio ) { $pos = self::posicion_del_firmante( $envio, $correo ); if ( $pos < 0 ) { continue; } $otros = 0; foreach ( $envio['firmantes'] as $i => $firmante ) { if ( (int) $i !== $pos && empty( $firmante['firmante_desatendido_id'] ) ) { ++$otros; } } if ( 0 === $otros ) { Validafirma_Envios::eliminar( $envio['id'] ); $removido = true; continue; } // Hay otros firmantes: se anonimiza a esta persona y se conserva el envío y la copia, que también son de los demás. $envio['firmantes'][ $pos ] = array( 'rut' => '', 'nombre' => '', 'canal' => 'email', 'email' => '', 'telefono' => '', ); Validafirma_Envios::actualizar( $envio['id'], array( 'firmantes' => $envio['firmantes'], 'correo_principal' => null, ) ); $removido = true; if ( ! empty( $envio['archivo_firmado'] ) || ! empty( $envio['archivo_original'] ) ) { $retenido = true; $mensajes[] = __( 'Los datos de la persona se anonimizaron en un envío con más firmantes; la copia del PDF se conserva porque también es de los demás firmantes.', 'validafirma' ); } } if ( $removido ) { $mensajes[] = __( 'La copia de ValidaFirma no se borra desde aquí: sigue su custodia de 6 años y se instruye en ValidaFirma.', 'validafirma' ); } return array( 'items_removed' => $removido, 'items_retained' => $retenido, 'messages' => array_values( array_unique( $mensajes ) ), 'done' => true, ); } /** * Texto sugerido para la política de privacidad del sitio (D-21, D-29). * * @return void */ public static function agregar_texto_sugerido() { if ( ! function_exists( 'wp_add_privacy_policy_content' ) ) { return; } $contenido = '

' . esc_html__( 'Texto sugerido. Adáptalo a lo que tu sitio hace de verdad; este plugin no garantiza por sí solo el cumplimiento de ninguna ley.', 'validafirma' ) . '

'; $contenido .= '

' . esc_html__( 'Firma de documentos con ValidaFirma', 'validafirma' ) . '

'; $contenido .= '

' . esc_html__( 'Texto sugerido:', 'validafirma' ) . ' '; $contenido .= esc_html__( 'Si llenas este formulario, tu RUT, tu nombre, tu correo y tu teléfono se envían a ValidaFirma (REDCUMBRE SpA) para enviarte el documento a firma por WhatsApp o correo. ValidaFirma lo hace por cuenta nuestra, salvo la verificación de tu identidad con PINRUT, que REDCUMBRE hace como responsable, según su propia política de privacidad. Cuando lo firmas, guardamos una copia del documento firmado en este sitio.', 'validafirma' ) . '

'; $contenido .= '

' . esc_html__( 'Lo que no puede faltar es la excepción de PINRUT: en la verificación de identidad, REDCUMBRE es responsable, no encargado.', 'validafirma' ) . '

'; $contenido .= '

' . esc_html__( 'El exportador y el borrador de WordPress buscan por correo. Un firmante que firmó por WhatsApp sin correo no aparece ahí: búscalo en la lista de envíos del plugin y bórralo con «Borrar del sitio».', 'validafirma' ) . '

'; wp_add_privacy_policy_content( 'ValidaFirma', wp_kses_post( $contenido ) ); } }