'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 '';
}
}