Непонятки с фотографиями

Самопроизвольно изменяется дата добавления фото

 
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 165
Версия 1.10.1 С недавнего времени заметил, что админка мне показывает, что ежедневно добавляется порядка 30 фотографий, а модуль "Фотографии" отображает все те же фотографии, но с сегодняшней датой или с датой добавления на несколько дней раньше текущей, хотя фото были добавлены еще в прошлом году. О чем говорят комментарии.

Начал копать. фото нашел в таблице cms_photo_files и обнаружил, что в этой таблице меняется поле pubdate. Попробовал найти кусок кода, который меняет поле pubdate в таблице cms_photo_files но не нашел.

У меня одного такие чудеса или кто-то еще наблюдал подобное?
Рекомендую хостинг с крутой панелью, бесплатными сертификатами и другими плюшками
Модератор
small user social cms
МедальКубок зрительских симпатийПочетный донор проекта
Сообщений: 964
Dimson, что устанавливали?
Хватит париться, живи как нравится!
Реклама
cms
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 165
Марат:

Dimson, что устанавливали?

Тоже подумал, что поставил что-то вредное smile Сейчас заметил следующее. Просматриваю альбом. Под фоткой дата, допустим 1 апреля текущего года. Жмякаю на фото или на ссылку под фото и попадаю на страницу с фоткой. Обновляю страницу браузера и алеееееее оп! Количество просотров увеличилось на единицу, а дата принимает текущее значение. Это баг или что-то все-таки у меня?!
Рекомендую хостинг с крутой панелью, бесплатными сертификатами и другими плюшками
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 165
а ларчик открывался просто:
в таблице cms_photo_files поле `pubdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

таким образом при увеличении счетчика просмотров происходит обновление поля pubdate

Посмотрел дистрибутив 1.10.1 там в sqldumpemty.sql то же самое. Так что такое не только у меня, но все почему то молчат
Рекомендую хостинг с крутой панелью, бесплатными сертификатами и другими плюшками
Модератор
small user social cms
МедальПочетный тестер InstantCmsКубок зрительских симпатий
Сообщений: 710
Dimson,
Посмотрел дистрибутив 1.10.1 там в sqldumpemty.sql то же самое. Так что такое не только у меня, но все почему то молчат
Не подтверждаю. Два хостинга, платный и бесплатный тестовая площадка. В общих альбомах такого не наблюдается. Как были даты публикации прошлогодние, так и остались. Тоже самое и в собственных альбомах. Система 1.10.1, шаблон дефолтный. Да, параметр ON UPDATE изменяет таймштамп только после редактирования, то есть перезаписи строки таблицы, но не при чтении из нее. Так что там все правильно, ищите у себя проблему, либо в шаблоне, либо на хостинге, либо в дополнениях.
Если есть желание, то вот тестовая площадка - http://xnix.tw1.ru
И тогда, все будет так, как должно было бы быть..., даже если все будет наоборот...
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 165
в frontend.php компонента есть функция, которая увеличивает счетчик просмотров у меня это 155-я строка

// Обновляем количество просмотров фотографии
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 - решило проблему
Рекомендую хостинг с крутой панелью, бесплатными сертификатами и другими плюшками
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 165
Да и еще... При просмотре своих фоток счетчик не срабатывает, соответственно дата не изменяется.
Рекомендую хостинг с крутой панелью, бесплатными сертификатами и другими плюшками
Модератор
small user social cms
МедальПочетный тестер InstantCmsКубок зрительских симпатий
Сообщений: 710
Так апдейт-то там в этой функции идет не по всей строке, а только одного поля. Вы смотрели мою тестовую площадку, нашли там такой глюк? Если там тоже такой глюк вдруг найдете, значит ищите в своем браузере. Где-то что-то по автомату изменяет как-то (хотя это конечно бред). Ну на двух площадках проверял, нету ничего подобного. Сейчас еще на третьей проверил, на байетхосте и тоже все в норме. Три разных хостинга, на двух PHP 5.2, на одном 5.3, сейчас еще на одном с 5.3 проверю. Ищите что меняли где. На всех площадках хаки у меня минимальные, только в шаблонах, там для закладок чуток, и еще мелочи, в коде хаков не сделано, но полно плагинов, модулей и компонентов сторонних и пока ничего не мешает. А может у вас там шелл какой завелся?
Да, чуть не забыл, на всякий случай проверьте параметры MySQL-сервера и настройки базы. Где-то там вроде что-то подобное было, обновлять по времени доступа что ли, точнее не помню.
Редактировалось: 2 раз (Последний: 12 апреля 2013 в 13:25)
И тогда, все будет так, как должно было бы быть..., даже если все будет наоборот...
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 165
Насколько мне известно, то этот "триггер" срабатывает при обновлении значения любого поля в записи. Разве нет? Я считаю, что в данном случае будет неправильным скидывать значение поля даты публикации фото в текущее значение времени при любых раскладах. За исключением вставки новой записи. Во всяком случае мне этого не надо. Сейчас все работает нормально
Редактировалось: 2 раз (Последний: 12 апреля 2013 в 14:08)
Рекомендую хостинг с крутой панелью, бесплатными сертификатами и другими плюшками
Модератор
small user social cms
МедальПочетный тестер InstantCmsКубок зрительских симпатий
Сообщений: 710
Послушайте, вы задали вопрос в общем русле, я вам дал такие же самые общие ответы. Что у вас за хостинг, или это денвер? Какие версии PHP, MySQL. Хостинг на винде или на *Nix? Все это необходимо указывать при таких вопросах. Теперь что касается вопроса: Еще раз перепроверил теперь уже на 5 хостингах: Платный Плюсвеб, бесплатные - таймвеб, байетхост, хостингер, 2х4. Все с разными версиями PHP и нигде не смог повторить вашу ошибку. Если код вы не меняли, то у меня он точно такой же из дистрибутива Instant 1.10.1. И надо же, работает на ура без этих ошибок. Значит дело не в коде, код написан правильно и аккуратно. Ошибка где-то у вас, поэтому тригер или нет, там все правильно. Обновление таблицы срабатывает при обновлении любого поля, это точно, только в записи обновляется фактически только это поле, если в настройках не стоит параметр обновлять с редактированием и дату публикации, но при простом просмотре или обновлении другого поля, как "хит", если в настройках не включено обновление публикации, не должно обновляться ничего, кроме поля хитов. Опять же подсказка, смотрите настройки именно базы или MySQL-сервера. Если кто-то еще сможет повторить вашу ошибку, или увидеть ее на своих ресурсах, то обязательно сообщит. В данном случае я ее ни увидеть не смог, ни повторить. Опять же 5! разных хостингов с разными версиями PHP и подверсиями MySQL, с официального дистрибутива без хаков в коде системы (только некоторые добавки в шаблоне и файле стилей шаблона. Не надо грешить на код.
Я считаю, что в данном случае будет неправильным скидывать значение поля даты публикации фото в текущее значение времени при любых раскладах.
Если в коде PHP это явно не прописано, значит смотрите именно настройки базы и параметры MySQL-сервера. А в коде системы такое можете найти, вроде, только для блогов если в настройках соответствующего компонента это указано. Возможно вы используете какой-то хак или дополнение, которые позволяют вставлять в посты или статьи фотографии из альбомов, в этом случае смотрите эти хаки или дополнения. В самом коде системы, та функция, на которую ссылаетесь, работает без ваших ошибок.
И тогда, все будет так, как должно было бы быть..., даже если все будет наоборот...
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 165
Anabiotick
У вас в таблице cms_photo_files поле `pubdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, ???

или все-таки без ON UPDATE CURRENT_TIMESTAMP?? Может это каким-то случайным образом ко мне попало. Не знаю.

Я исправил это поле, после чего счетчик увеличивается, а дата остается прежней. Если бы у меня был какой-то другой код, меняющий дату, то это бы мне не помогло.

Возможно что-то и в настройках... но я не понимаю эту логику. Зачем присваивать полю pubdate текущее состояние даты при его явном изменении. Зачем его вообще менять после присвоения значения?
Редактировалось: 3 раз (Последний: 12 апреля 2013 в 15:03)
Рекомендую хостинг с крутой панелью, бесплатными сертификатами и другими плюшками
Модератор
small user social cms
МедальПочетный тестер InstantCmsКубок зрительских симпатий
Сообщений: 710
У вас в таблице cms_photo_files поле `pubdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, ???
Если честно, не смотрел, в каком файле и какой строке? Посмотрю и скажу.
Я исправил это поле, после чего счетчик увеличивается, а дата остается прежней
Попробуйте просто перезалить этот файл из дистрибутива, возможно при заливке где-то что-то просбоило. В самом дистрибутиве смотрели?
Возможно что-то и в настройках... но я не понимаю эту логику.
В настройках системы это только для постов блогов. Некоторые блогеры практикуют обновления своих постов и им выгодно делать так, чтобы обновлялась и дата публикации, чтобы пост снова всплыл наверх. Это нормально, в особенности, когда пост применяется для обсуждения чего-либо или предусматривает, что в него будут вносится нужные обновления, например, здесь на сайте это некоторые применяют для обновления своих разработок, во всяком случае применяли. например, кто-то сделал плагин для 1.9, за ним прошло много других постов, а после была переделка для 1.10, если это простая переделка, то есть ли необходимость создавать новый пост, когда можно просто обновить старый? Правда такая возможность управляется пока только из админки, но в будущих версиях, возможно что-то изменится.
Но в параметрах сервера и настройках базы нерадивый хостер иногда такие вещи может упустить и там будет стоять это самое обновление и тогда никакой код PHP это не обойдет. Что у вас за хостинг?
И тогда, все будет так, как должно было бы быть..., даже если все будет наоборот...
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.