HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/heifetz/heifetz-app/models/LogExport.php
<?php

namespace Models;

use Core\DbLib\DbModel;
use Core\Models\CoreHelper;
use Core\Models\OldUser;
use Helpers\Data;
use Helpers\DataTableHelper;
use Traits\ModelGetQuery;

/**
 * @property int $id
 * @property int $user_id
 * @property string $created_at
 * @property string $export
 * @property string $description
 * @property string $params
 * @property int $company_id
 */
class LogExport extends DbModel
{

    use ModelGetQuery;

    static string $tableName = 'logs_export';

    public static function log(string $export, string $description, array $params = []): int
    {
        return self::create([
                'user_id' => OldUser::getRealId(),
                'created_at' => date('Y-m-d H:i:s'),
                'export' => $export,
                'description' => $description,
                'params' => Data::jsonEncode($params),
                'company_id' => CoreHelper::$companyId,
            ]
        );
    }

    public static function getFresh(array $options): array
    {
        [$orderBy, $limit, $offset, $filters] = DataTableHelper::parseOptions($options);

        $sql = self::getQuery()->limit($limit, $offset);
        $cols = ['user_id', 'created_at', 'export', 'description', 'params', 'id'];
        $sql = DataTableHelper::sort($cols, $orderBy, $sql);

        if (!empty($filters)) {
            foreach ($filters as $filterKey => $value) {
                if (empty($value)) {
                    continue;
                }
                switch ($filterKey) {
                    case 'userId':
                        $sql->whereIn('user_id', $value);
                        break;
                    case 'exportName':
                        $sql->whereIn('description', $value);
                        break;
                    case 'startDate':
                        $sql->where('created_at::date >= ?', $value);
                        break;
                    case 'endDate':
                        $sql->where('created_at::date <= ?', $value);
                        break;
                }
            }
        }

        $totalCount = $sql->totalCount();
        /** @var self[] $exports */
        $exports = $sql->fetchAll();

        $rows = [];
        foreach ($exports as $log) {
            $row = [];
            $row[] = date('d.m.Y H:i', strtotime($log->created_at));
            $row[] = $userNames[$log->user_id] ?? OldUser::getName($log->user_id);
            $row[] = '<span class="label label-info">' . $log->export . '</span>';
            $row[] = $log->description;

            $data = json_decode($log->params, true);
            $output = '';
            if (is_array($data)) {
                foreach ($data as $key => $value) {
                    $output .= $key . ' = ' . (is_array($value) ? implode(', ', $value) : $value) . PHP_EOL;
                }
            } else {
                $output = var_export($data, true);
            }
            $row[] = '<pre>' . $output . '</pre>';
            $rows[] = $row;
        }

        return ['data' => $rows, 'totalCount' => $totalCount];
    }

    public static function getExportNames(): array
    {
        return self::getQuery(['description'])->company()->order('description')->group('description')->fetchCol();
    }

}