'envio', 'plural' => 'envios', 'ajax' => false, ) ); $this->vista = $vista; } /** * Columnas. * * @return array */ public function get_columns() { return array( 'titulo' => __( 'Documento', 'validafirma' ), 'estado' => __( 'Estado', 'validafirma' ), 'firmantes' => __( 'Firmantes', 'validafirma' ), 'origen' => __( 'Origen', 'validafirma' ), 'fecha' => __( 'Fecha', 'validafirma' ), ); } /** * Vistas (enlaces superiores) con su conteo. * * @return array */ protected function get_views() { $conteos = Validafirma_Envios::contar_vistas(); $nombres = array( 'produccion' => __( 'Producción', 'validafirma' ), 'prueba' => __( 'Prueba', 'validafirma' ), 'sin_enviar' => __( 'Sin enviar', 'validafirma' ), ); $vistas = array(); foreach ( $nombres as $clave => $nombre ) { $url = add_query_arg( array( 'page' => 'validafirma', 'vista' => $clave, ), admin_url( 'admin.php' ) ); $vistas[ $clave ] = sprintf( '%s (%d)', esc_url( $url ), $this->vista === $clave ? ' class="current" aria-current="page"' : '', esc_html( $nombre ), (int) $conteos[ $clave ] ); } return $vistas; } /** * Carga los elementos de la página. * * @return void */ public function prepare_items() { $por_pagina = 20; $resultado = Validafirma_Envios::listar( array( 'vista' => $this->vista, 'por_pagina' => $por_pagina, 'pagina' => $this->get_pagenum(), ) ); $this->_column_headers = array( $this->get_columns(), array(), array() ); $this->items = $resultado['items']; $this->set_pagination_args( array( 'total_items' => $resultado['total'], 'per_page' => $por_pagina, ) ); } /** * Texto cuando no hay filas. * * @return void */ public function no_items() { esc_html_e( 'Todavía no hay envíos en esta vista.', 'validafirma' ); } /** * Columna del documento, con las acciones de la fila. * * @param array $envio Envío. * @return string */ protected function column_titulo( $envio ) { $titulo = '' !== $envio['titulo'] ? $envio['titulo'] : __( '(sin nombre)', 'validafirma' ); $base = add_query_arg( array( 'page' => 'validafirma', 'envio' => $envio['id'], ), admin_url( 'admin.php' ) ); $acciones = array(); $acciones['ver'] = sprintf( '%s', esc_url( add_query_arg( 'accion', 'detalle', $base ) ), esc_html__( 'Ver', 'validafirma' ) ); if ( 'pendiente' === $envio['estado'] ) { $acciones['reenviar'] = sprintf( '%s', esc_url( wp_nonce_url( admin_url( 'admin-post.php?action=validafirma_reenviar&envio=' . $envio['id'] ), 'validafirma_reenviar_' . $envio['id'] ) ), esc_html__( 'Reenviar invitación', 'validafirma' ) ); if ( Validafirma_Permisos::es_administradora() ) { $acciones['cancelar'] = sprintf( '%s', esc_url( add_query_arg( array( 'accion' => 'confirmar', 'que' => 'cancelar', ), $base ) ), esc_html__( 'Cancelar', 'validafirma' ) ); } } if ( 'firmado' === $envio['estado'] && ! empty( $envio['archivo_firmado'] ) ) { $acciones['descargar'] = sprintf( '%s', esc_url( admin_url( 'admin-post.php?action=validafirma_descargar&tipo=firmado&envio=' . $envio['id'] ) ), esc_html__( 'Descargar', 'validafirma' ) ); } if ( 'sin_enviar' === $envio['estado'] ) { $acciones['enviar_ahora'] = sprintf( '%s', esc_url( wp_nonce_url( admin_url( 'admin-post.php?action=validafirma_enviar_ahora&envio=' . $envio['id'] ), 'validafirma_enviar_ahora_' . $envio['id'] ) ), esc_html__( 'Enviar ahora', 'validafirma' ) ); } if ( Validafirma_Permisos::es_administradora() ) { $acciones['borrar'] = sprintf( '%s', esc_url( add_query_arg( array( 'accion' => 'confirmar', 'que' => 'borrar', ), $base ) ), esc_html__( 'Borrar del sitio', 'validafirma' ) ); } return '' . esc_html( $titulo ) . '' . $this->row_actions( $acciones ); } /** * Columna del estado. * * @param array $envio Envío. * @return string */ protected function column_estado( $envio ) { $estados = Validafirma_Envios::estados(); $texto = isset( $estados[ $envio['estado'] ] ) ? $estados[ $envio['estado'] ] : $envio['estado']; if ( ! empty( $envio['motivo'] ) ) { $motivos = Validafirma_Envios::motivos(); $texto .= ' · ' . ( isset( $motivos[ $envio['motivo'] ] ) ? $motivos[ $envio['motivo'] ] : $envio['motivo'] ); } return '' . esc_html( $texto ) . ''; } /** * Columna de los firmantes. * * @param array $envio Envío. * @return string */ protected function column_firmantes( $envio ) { $nombres = array(); foreach ( $envio['firmantes'] as $firmante ) { if ( ! empty( $firmante['firmante_desatendido_id'] ) ) { $nombres[] = __( 'Firmante de la empresa', 'validafirma' ); } elseif ( ! empty( $firmante['nombre'] ) ) { $nombres[] = $firmante['nombre']; } elseif ( ! empty( $firmante['rut'] ) ) { $nombres[] = Validafirma_Rut::formatear( $firmante['rut'] ); } } if ( ! empty( $envio['opciones']['empresa_firma'] ) ) { $nombres[] = __( 'Firmante de la empresa', 'validafirma' ); } return esc_html( implode( ', ', $nombres ) ); } /** * Columna del origen. * * @param array $envio Envío. * @return string */ protected function column_origen( $envio ) { $nombres = array( 'panel' => __( 'Panel', 'validafirma' ), 'funcion' => __( 'Código del sitio', 'validafirma' ), 'wpforms' => 'WPForms', 'elementor' => 'Elementor', ); $texto = isset( $nombres[ $envio['origen'] ] ) ? $nombres[ $envio['origen'] ] : $envio['origen']; if ( '' !== $envio['origen_ref'] && Validafirma_Correos::es_de_formulario( $envio ) ) { /* translators: 1: plugin de formularios, 2: número del formulario. */ $texto = sprintf( __( '%1$s (formulario %2$s)', 'validafirma' ), $texto, $envio['origen_ref'] ); } return esc_html( $texto ); } /** * Columna de la fecha, en la zona horaria del sitio. * * @param array $envio Envío. * @return string */ protected function column_fecha( $envio ) { $marca = strtotime( $envio['creado_en'] . ' UTC' ); return esc_html( $marca ? wp_date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $marca ) : '' ); } /** * Columna por defecto. * * @param array $envio Envío. * @param string $nombre Nombre de la columna. * @return string */ protected function column_default( $envio, $nombre ) { unset( $envio, $nombre ); return ''; } }