????JFIF??x?x????'
| Server IP : 172.67.174.47  /  Your IP : 216.73.216.113 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /././home/./tempvsty/pontiacques.org/wp-content/plugins/give/src/Framework/ListTable/ | 
| Upload File : | 
<?php
declare(strict_types=1);
namespace Give\Framework\ListTable;
use Exception;
use Give\Framework\ListTable\Concerns\Columns;
use Give\Framework\ListTable\Exceptions\ColumnIdCollisionException;
use Give\Framework\Models\Model;
use Give\Framework\Support\Contracts\Arrayable;
use Give\Log\Log;
/**
 * @since 2.24.0
 */
abstract class ListTable implements Arrayable
{
    use Columns;
    /**
     * @var array
     */
    private $items = [];
    /**
     * @since 4.0.0
     * @var array|object
     */
    private $data = [];
    /**
     * @since 2.24.0
     *
     * @throws ColumnIdCollisionException
     */
    public function __construct()
    {
        $this->addColumns(...$this->getDefaultColumns());
    }
    /**
     * Get table ID
     *
     * @since 2.24.0
     */
    abstract public function id(): string;
    /**
     * Define table columns
     *
     * @since 2.24.0
     *
     * @return ModelColumn[]
     */
    abstract protected function getDefaultColumns(): array;
    /**
     * Define default visible table columns
     *
     * @since 2.24.0
     *
     * @return string[]
     */
    abstract protected function getDefaultVisibleColumns(): array;
    /**
     * Get table definitions
     *
     * @since 2.24.0
     *
     * @return array
     */
    public function toArray(): array
    {
        return [
            'id' => $this->id(),
            'columns' => $this->getColumnsArray(),
        ];
    }
    /**
     * Set table items
     *
     * @since 2.24.0
     *
     * @param array $items
     * @param string $locale
     *
     * @return void
     */
    public function items(array $items, string $locale = '')
    {
        $data = [];
        $columns = $this->getColumns();
        foreach ($items as $model) {
            $row = [];
            foreach ($columns as $column) {
                if ($column->isUsingListTableData()) {
                    $column->setListTableData($this->getData());
                }
                $row[$column::getId()] = $this->safelyGetCellValue($column, $model, $locale);;
            }
            $data[] = $row;
        }
        $this->items = $data;
    }
    /**
     * @since 2.24.0
     *
     * @return array
     */
    public function getItems(): array
    {
        return $this->items;
    }
    /**
     * @since 4.0.0
     *
     * @param array|object $data
     *
     * @return ListTable
     */
    public function setData($data): ListTable
    {
        $this->data = $data;
        return $this;
    }
    /**
     * @since 4.0.0
     *
     * @return array|object
     */
    public function getData()
    {
        return $this->data;
    }
    /**
     * Safely retrieves the cell value for a column. If an exception is thrown, it will be logged and the cell value
     * will be a human-readable error message. This is to prevent fatal errors from breaking the entire table.
     *
     * @since 2.24.1
     *
     * @return mixed
     */
    private function safelyGetCellValue(ModelColumn $column, Model $model, string $locale)
    {
        try {
            /**
             * @since 3.16.0
             */
            do_action("givewp_list_table_cell_value_{$column::getId()}_before", $column, $model, $locale);
            /**
             * @since 3.16.0
             */
            $cellValue = apply_filters(
                "givewp_list_table_cell_value_{$column::getId()}",
                $column->getCellValue($model, $locale),
                $column,
                $model,
                $locale
            );
        } catch (Exception $exception) {
            Log::error(
                sprintf(
                    'Error while rendering column "%s" for table "%s".',
                    $column::getId(),
                    $this->id()
                ),
                [
                    'column' => $column::getId(),
                    'table' => $this->id(),
                    'model' => $model->toArray(),
                    'exception' => $exception->getMessage(),
                ]
            );
            $cellValue = __(
                sprintf(
                    'Something went wrong, more in detail in <a href="%s">logs</a>',
                    admin_url('edit.php?post_type=give_forms&page=give-tools&tab=logs')
                ),
                'give'
            );
        }
        return $cellValue;
    }
}