<?php

class actionMessagesContact extends cmsAction {

    public function run() {

        if (empty($this->options['is_enable_pm'])) {
            return cmsCore::error404();
        }

        if (!cmsForm::validateCSRFToken($this->request->get('csrf_token', ''))) {
            return cmsCore::error404();
        }

        $contact_id = $this->request->get('contact_id', 0);
        if (!$contact_id) {
            return cmsCore::error404();
        }

        $contact = $this->model->getContact($this->cms_user->id, $contact_id);
        if (!$contact) {
            return cmsCore::error404();
        }

        // чтобы не считать общее кол-во, получаем на один больше
        $messages = $this->model->
                limit($this->options['limit'] + 1)->
                getMessages($this->cms_user->id, $contact_id);

        list($messages, $contact) = cmsEventsManager::hook('messages_before_list', [$messages, $contact]);

        if (count($messages) > $this->options['limit']) {
            $has_older = true;
            array_shift($messages);
        } else {
            $has_older = false;
        }

        $this->model->setMessagesReaded($this->cms_user->id, $contact_id);

        $editor_params = cmsCore::getController('wysiwygs')->getEditorParams([
            'editor'  => $this->options['editor'],
            'presets' => $this->options['editor_presets']
        ]);

        $editor_params['options']['id'] = 'content';

        return $this->cms_template->render('contact', [
            'user'          => $this->cms_user,
            'editor_params' => $editor_params,
            'is_me_ignored' => $this->model->isContactIgnored($contact_id, $this->cms_user->id),
            'is_private'    => !$this->cms_user->isPrivacyAllowed($contact, 'messages_pm') && !$messages,
            'contact'       => $contact,
            'has_older'     => $has_older,
            'messages'      => $messages
        ]);
    }

}
