HEX
Server: Apache/2.4.6 (CentOS) mpm-itk/2.4.7-04 mod_fcgid/2.3.9 PHP/5.4.16
System: Linux dvm.vladweb.ru 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: region-gk.ru (1016)
PHP: 7.3.33
Disabled: NONE
Upload Files
File: /home/temp/yarusvl.ru/adminx/core/FeedbacksAdmin.php
<?php

require_once('api/Mgc.php');

class FeedbacksAdmin extends Mgc {
    
    public function fetch() {
        // Обработка действий
        if($this->request->method('post')) {
            // Действия с выбранными
            $ids = $this->request->post('check');
            if(!empty($ids)) {
                switch($this->request->post('action')) {
                    case 'delete': {
                        /*Удалить заявку с формы обратной связи*/
                        foreach($ids as $id) {
                            $this->feedbacks->delete_feedback($id);
                        }
                        break;
                    }
                }
            }
        }

        /*Ответ админисратора на заявку с формы обратной связи*/
        if($this->request->method('post')) {
            if ($this->request->post('feedback_answer', 'boolean') && ($feedback_id = $this->feedbacks->get_feedback($this->request->post('feedback_id', 'integer')))) {
                $txt = $this->request->post('text');
                if (!empty($feedback_id)) {
                    $new_feedback = new stdClass();
                    $new_feedback->is_admin = 1;
                    $new_feedback->message = $txt;
                    $new_feedback->email = $this->settings->notify_from_email;
                    $new_feedback->name = $this->settings->notify_from_name;
                    $new_feedback->processed = 1;
                    $new_feedback->ip = $_SERVER['REMOTE_ADDR'];
                    $new_feedback->lang_id = $_SESSION['admin_lang_id'];
                    $new_feedback->parent_id = $feedback_id->id;
                    $res = $this->feedbacks->add_feedback($new_feedback);
                    //$this->feedbacks->update_feedback($new_feedback->parent_id, array('is_admin'))
                    if($res) {
                        $this->notify->email_feedback_answer_to_user($feedback_id->id, $txt);
                    }
                }
            }
        }
        
        // Отображение
        $filter = array();
        $filter['page'] = max(1, $this->request->get('page', 'integer'));
        
        if ($filter['limit'] = $this->request->get('limit', 'integer')) {
            $filter['limit'] = max(5, $filter['limit']);
            $filter['limit'] = min(100, $filter['limit']);
            $_SESSION['feedback_num_admin'] = $filter['limit'];
        } elseif (!empty($_SESSION['feedback_num_admin'])) {
            $filter['limit'] = $_SESSION['feedback_num_admin'];
        } else {
            $filter['limit'] = 25;
        }
        $this->design->assign('current_limit', $filter['limit']);

        // Выбираем главные сообщения
        $filter['has_parent'] = false;
        
        // Сортировка по статусу
        $status = $this->request->get('status', 'string');
        if($status == 'processed') {
            $filter['processed'] = 1;
        } elseif ($status == 'unprocessed') {
            $filter['processed'] = 0;
        }
        $this->design->assign('status', $status);
        
        // Поиск
        $keyword = $this->request->get('keyword');
        if(!empty($keyword)) {
            $filter['keyword'] = $keyword;
            $this->design->assign('keyword', $keyword);
        }
        
        $feedbacks_count = $this->feedbacks->count_feedbacks($filter);
        // Показать все страницы сразу
        if($this->request->get('page') == 'all') {
            $filter['limit'] = $feedbacks_count;
        }
        
        $feedbacks = $this->feedbacks->get_feedbacks($filter, true);

        // Сохраняем id сообщений для выборки ответов
        $feedback_ids = array();
        foreach ($feedbacks as $feedback) {
            $feedback_ids[] = $feedback->id;
        }

        // Выбераем ответы на сообщения
        if (!empty($feedback_ids)) {
            $admin_answer = array();
            foreach ($this->feedbacks->get_feedbacks(array('parent_id' => $feedback_ids)) as $f) {
                $admin_answer[$f->parent_id][] = $f;
            }
            $this->design->assign('admin_answer', $admin_answer);
        }
        
        $this->design->assign('pages_count', ceil($feedbacks_count/$filter['limit']));
        $this->design->assign('current_page', $filter['page']);
        
        $this->design->assign('feedbacks', $feedbacks);
        $this->design->assign('feedbacks_count', $feedbacks_count);
        
        return $this->design->fetch('feedbacks.tpl');
    }
    
}