Самопроизвольно изменяется дата добавления фото
Начал копать. фото нашел в таблице cms_photo_files и обнаружил, что в этой таблице меняется поле pubdate. Попробовал найти кусок кода, который меняет поле pubdate в таблице cms_photo_files но не нашел.
У меня одного такие чудеса или кто-то еще наблюдал подобное?
Dimson, что устанавливали?
Тоже подумал, что поставил что-то вредное😊Сейчас заметил следующее. Просматриваю альбом. Под фоткой дата, допустим 1 апреля текущего года. Жмякаю на фото или на ссылку под фото и попадаю на страницу с фоткой. Обновляю страницу браузера и алеееееее оп! Количество просотров увеличилось на единицу, а дата принимает текущее значение. Это баг или что-то все-таки у меня?!
в таблице cms_photo_files поле `pubdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
таким образом при увеличении счетчика просмотров происходит обновление поля pubdate
Посмотрел дистрибутив 1.10.1 там в sqldumpemty.sql то же самое. Так что такое не только у меня, но все почему то молчат
Не подтверждаю. Два хостинга, платный и бесплатный тестовая площадка. В общих альбомах такого не наблюдается. Как были даты публикации прошлогодние, так и остались. Тоже самое и в собственных альбомах. Система 1.10.1, шаблон дефолтный. Да, параметр ON UPDATE изменяет таймштамп только после редактирования, то есть перезаписи строки таблицы, но не при чтении из нее. Так что там все правильно, ищите у себя проблему, либо в шаблоне, либо на хостинге, либо в дополнениях.Посмотрел дистрибутив 1.10.1 там в sqldumpemty.sql то же самое. Так что такое не только у меня, но все почему то молчат
Если есть желание, то вот тестовая площадка — xnix.tw1.ru
// Обновляем количество просмотров фотографии
if(!$is_author){
$inDB->setFlag('cms_photo_files', $photo['id'], 'hits', $photo['hits']+1);
}
а вот сама функция
public function setFlag($table, $id, $flag, $value) {
$this->query("UPDATE {$table} SET {$flag} = '{$value}' WHERE id='{$id}'");
return true;
}
Что мы тут видим? Правильно Update таблицы
alter table cms_photo_files MODIFY `pubdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP — решило проблему
Да, чуть не забыл, на всякий случай проверьте параметры MySQL-сервера и настройки базы. Где-то там вроде что-то подобное было, обновлять по времени доступа что ли, точнее не помню.
Если в коде PHP это явно не прописано, значит смотрите именно настройки базы и параметры MySQL-сервера. А в коде системы такое можете найти, вроде, только для блогов если в настройках соответствующего компонента это указано. Возможно вы используете какой-то хак или дополнение, которые позволяют вставлять в посты или статьи фотографии из альбомов, в этом случае смотрите эти хаки или дополнения. В самом коде системы, та функция, на которую ссылаетесь, работает без ваших ошибок.Я считаю, что в данном случае будет неправильным скидывать значение поля даты публикации фото в текущее значение времени при любых раскладах.
У вас в таблице cms_photo_files поле `pubdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, ???
или все-таки без ON UPDATE CURRENT_TIMESTAMP?? Может это каким-то случайным образом ко мне попало. Не знаю.
Я исправил это поле, после чего счетчик увеличивается, а дата остается прежней. Если бы у меня был какой-то другой код, меняющий дату, то это бы мне не помогло.
Возможно что-то и в настройках… но я не понимаю эту логику. Зачем присваивать полю pubdate текущее состояние даты при его явном изменении. Зачем его вообще менять после присвоения значения?
Если честно, не смотрел, в каком файле и какой строке? Посмотрю и скажу.У вас в таблице cms_photo_files поле `pubdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, ???
Попробуйте просто перезалить этот файл из дистрибутива, возможно при заливке где-то что-то просбоило. В самом дистрибутиве смотрели?Я исправил это поле, после чего счетчик увеличивается, а дата остается прежней
В настройках системы это только для постов блогов. Некоторые блогеры практикуют обновления своих постов и им выгодно делать так, чтобы обновлялась и дата публикации, чтобы пост снова всплыл наверх. Это нормально, в особенности, когда пост применяется для обсуждения чего-либо или предусматривает, что в него будут вносится нужные обновления, например, здесь на сайте это некоторые применяют для обновления своих разработок, во всяком случае применяли. например, кто-то сделал плагин для 1.9, за ним прошло много других постов, а после была переделка для 1.10, если это простая переделка, то есть ли необходимость создавать новый пост, когда можно просто обновить старый? Правда такая возможность управляется пока только из админки, но в будущих версиях, возможно что-то изменится.Возможно что-то и в настройках… но я не понимаю эту логику.
Но в параметрах сервера и настройках базы нерадивый хостер иногда такие вещи может упустить и там будет стоять это самое обновление и тогда никакой код PHP это не обойдет. Что у вас за хостинг?