Могут ли быть проблемы, если отключить проверку топика на уникальность?

Потребовалось убрать проверку на уникальность топика. Сначала удалил эту строчку:

github.com/livestreet/livestreet/blob/1.0.3/classes/modules/topic/entity/Topic.entity.class.php#L44-44

При создании топика появлялась ошибка «SQL Error: Column 'topic_text_hash' cannot be null...».

Затем удалил это кусок кода и вроде решил проблему.
github.com/livestreet/livestreet/blob/1.0.3/classes/modules/topic/entity/Topic.entity.class.php#L70-75

Вопросы:
1) Возможны какие-нибудь ошибки в работе сайта из-за подобных изменений или столбец topic_text_hash в базе данных нужен только для проверки топика на уникальность?
2) Может есть более простой/правильный способ отключить эту проверку?

13 комментариев

avatar
Объяснить можете зачем Вам понадобилось её отключать? Она позволяет избежать дублирования, допустим, при случайном двойном нажатии кнопки «Опубликовать».
avatar
На моем сайте одни картинки, поле с текстом я вообще убрал, хеш формируется только из названий топика. А одинаковый заголовок будет попадаться часто.
avatar
А как насчет того чтобы формировать его из картинки?
avatar
Я тоже об этом думал, а как это сделать?
avatar
Смотря как картинки загружаются и где хранятся в бд.
avatar
У меня стандартный тип топика «фотосеты», только отключен flash загрузчик и можно загрузить только 1 картинку. Картинки хранятся в таблице ls_topic_photo. Еще есть обычный тип топика, можно как нибудь сделать чтобы хеш для фотосетов формировался из картинок а для обычного топика остался без изменений (текста + название).
avatar
github.com/livestreet/livestreet/blob/1.0.3/classes/modules/topic/entity/Topic.entity.class.php#L68
public function ValidateTopicUnique($sValue,$aParams) {
	if($this->getType()=='photoset'){
		$this->setTextHash(md5(time));
		return true;
	}
	$this->setTextHash(md5($this->getType().$sValue.$this->getTitle()));
	if ($oTopicEquivalent=$this->Topic_GetTopicUnique($this->getUserId(),$this->getTextHash())) {
		if ($iId=$this->getId() and $oTopicEquivalent->getId()==$iId) {
			return true;
		}
		return $this->Lang_Get('topic_create_text_error_unique');
	}
	return true;
}
avatar
Упс, после:
time
ещё две скобочки:
()
avatar
Загружаю картинку, потом еще раз ее же получаю ошибку:

Notice: Use of undefined constant time — assumed 'time' in

/var/www/имя_сайта/classes/modules/topic/entity/Topic.entity.class.php on line 72


Error: Can't create topics in such a frequent rate

Получается мы на правильном пути :)

Но если еще раз нажать на кнопку опубликовать, то топик опубликуется.
avatar
Скобочки то добавьте.
avatar
Забыл сохранить второй раз. -) Сейчас все отлично работает, потестил, я так понимаю это защита от двойного нажатия на кнопку «опубликовать»? Спасибо большое!
avatar
Получается здесь хеш для фотосетов просто игнорируется, а на основе картинки не получилось сделать?
avatar
Не игнорируется, а создается из текущей метки времени.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.