Current Path : /storage/v11800/affypharma/public_html/wp-content/plugins/ninja-tables/app/Hooks/Handlers/ |
Linux v11800 5.3.0-1023-aws #25~18.04.1-Ubuntu SMP Fri Jun 5 15:19:18 UTC 2020 aarch64
|
Current File : /storage/v11800/affypharma/public_html/wp-content/plugins/ninja-tables/app/Hooks/Handlers/AjaxHandler.php |
<?php
namespace NinjaTables\App\Hooks\Handlers;
use NinjaTables\Framework\Support\Arr;
class AjaxHandler
{
public function registerAjaxRoutes()
{
$validRoutes = array(
'get-all-data' => 'getAllData',
);
$requestedRoute = esc_attr($_REQUEST['target_action']);
if (isset($validRoutes[$requestedRoute])) {
$this->{$validRoutes[$requestedRoute]}();
}
wp_die();
}
public function getAllData()
{
if (!isset($_SERVER['HTTP_REFERER']) || strpos(sanitize_text_field($_SERVER['HTTP_REFERER']), site_url()) === false) {
wp_send_json_error([
'message' => 'You are not allowed to access this page directly.',
], 400);
}
$tableId = intval(Arr::get($_REQUEST, 'table_id'));
do_action('ninja_table_doing_ajax_table_data', $tableId);
$defaultSorting = sanitize_text_field(Arr::get($_REQUEST, 'default_sorting'));
$tableSettings = ninja_table_get_table_settings($tableId, 'public');
$is_ajax_table = true;
if (Arr::get($tableSettings, 'render_type') == 'legacy_table') {
$is_ajax_table = false;
}
$is_ajax_table = apply_filters('ninja_table_is_public_ajax_table', $is_ajax_table, $tableId);
if ( ! $tableSettings || ! $is_ajax_table) {
wp_send_json_success([], 200);
}
$skip = Arr::get($_REQUEST, 'skip_rows', 0);
$limit = Arr::get($_REQUEST, 'limit_rows', false);
if ( ! $limit && ! $skip && isset($_REQUEST['chunk_number'])) {
$chunkNumber = Arr::get($_REQUEST, 'chunk_number', 0);
$perChunk = ninjaTablePerChunk($tableId);
$skip = $chunkNumber * $perChunk;
$limit = $perChunk;
}
$ownOnly = false;
if (isset($_REQUEST['own_only']) && sanitize_text_field($_REQUEST['own_only']) == 'yes') {
$ownOnly = true;
}
$tableColumns = ninja_table_get_table_columns($tableId);
$formatted_data = ninjaTablesGetTablesDataByID($tableId, $tableColumns, $defaultSorting, false, $limit, $skip,
$ownOnly);
$formatted_data = apply_filters('ninja_tables_get_public_data', $formatted_data, $tableId);
$dataProvider = ninja_table_get_data_provider($tableId);
if ($dataProvider == 'default') {
$newStyledData = [];
$counter = $skip;
foreach ($formatted_data as $index => $datum) {
$datum = array_map(function ($value) {
if (is_string($value)) {
return do_shortcode($value);
}
return $value;
}, $datum);
$newStyledData[] = [
'options' => [
'classes' => (isset($datum['___id___'])) ? 'ninja_table_row_' . $counter . ' nt_row_id_' . $datum['___id___'] : 'ninja_table_row_' . $counter,
],
'value' => $datum
];
$counter = $counter + 1;
}
$formatted_data = $newStyledData;
}
wp_send_json($formatted_data, 200);
wp_die();
}
}