modx-pro / Tickets

Tickets system for MODX Revolution
35 stars 51 forks source link

Метод prepareComment #106

Closed sergant210 closed 9 years ago

sergant210 commented 9 years ago

Василий, столкнулся с таким моментом: в методе tickets::prepareComment вызывается пользовательский сниппет, который выполняется вместо метода. Т.е. если хочешь граватар и дату в формате dateago, то в свой сниппет нужно продублировать код метода полностью. Есть предложение изменить метод следующим способом. Сначала выполнить код метода, а потом выполнять пользовательский сниппет, если он определен. Типа так

public function prepareComment($data = array()) {
    $data['gravatar'] = $this->config['gravatarUrl'] . md5(strtolower($data['email'])) .'?s=' . $this->config['gravatarSize'] . '&d=' . $this->config['gravatarIcon'];
        $data['avatar'] = !empty($data['photo'])
            ? $data['photo']
            : $data['gravatar'];
        if (!empty($data['resource'])) {
            $data['url'] = $this->modx->makeUrl($data['resource'], '', '', 'full');
        }
        $data['date_ago'] = $this->dateFormat($data['createdon']);
        if (!empty($this->prepareCommentCustom)) {
            return eval($this->prepareCommentCustom);
        }
        return $data;
}

В принципе это безопасное изменение и не должно ничего поломать. Зато снимает вопрос у человека, который решил, например, обработать поле text, куда девались аватар, ссылка и дата.

bezumkin commented 9 years ago

А если человек хочет максимально быстро обработать коммент и ему не нужен dateago и gravatar?

sergant210 commented 9 years ago

Вполне возможно. Спорить не буду. Но лично я столкнулся именно с вышеписанным. И мне пришлось лезть в код и выяснять почему. Если бы где-то это было описано... Но с другой стороны, если граватар не нужен, можно отключить его через сниппет (gravatatUrl = ''). Лазить в ядро, мне кажется, не очень правильно. Чисто мое мнение.

bezumkin commented 9 years ago

Речь о том, что если человек хочет обрабатывать комментарии своим сниппетом - пусть обрабатывает. Не нужно ему что-то еще добавлять "по умолчанию".