Баг отображения статьи со ограниченным сроком. Движок 1.8

1148
Нашел баг в версии движка 1.8

Выражается в следующем - в админке добавляем статью, ставим в ней дату окончания действия например +1 день.
Потом наблюдаем на фронтенде сайта, как данная статья не открывается - ошибка 404, причем в списке статей она присутствует. Если выключить ограничение срока действия - статья открывается...




РЕШЕНИЕ

проблема в файле
\www\components\content\model.php в функции getArticleByLink забыли дописать

$today    = date("Y-m-d H:i:s");

вообщем делаем как показано ниже

Код PHP:
    
public function getArticleByLink($seolink) {
                 
>>>>>>>>>>>>>> Добавляем этот код >>>>>>>>>>>>>
                $today    = date("Y-m-d H:i:s");
>>>>>>>>>>>>>> Добавляем этот код >>>>>>>>>>>>>

		$sql = "SELECT con.*,
..........

интересно это у меня одного такая проблема?

и как бы собрать все баги в кучу, что-то их много слишком для рабочей версии - что-то вроде сервис пака  (я может быть занялся бы)
Хак: Приглашение в закрытый клуб(группу) любого пользователя
Комментарии (14)
Zau4man 8 июня 2011 в 08:29 0
Croakerx64, а вы проверьте, повторяется ли баг на чисто установленной системе. Если да, то добро пожаловать в Багтрекер.
Крот 8 июня 2011 в 19:17 +2
Проверил...на чистой системе тоже самое, пойду в Багтрекер...
googlebot 8 июня 2011 в 22:26 +1
Спасибо, если еще баги интересны, поковыряйте проблемку с глубиномером, когда левые ссылки в нем появляются.
Крот 14 июня 2011 в 00:50 0
А что за проблема? У меня с ним проблем нет... по крайней мере не встречал.
googlebot 14 июня 2011 в 08:39 0
ну например тут, или тут. Посл. сайт мой, 1.8 все обновления. Лишняя ссылка только на 1 этой странице.
Крот 14 июня 2011 в 09:26 0
точно сейчас не скажу, но скорее всего проблема в таблице _photo_albums, либо в _menu
посмотри поля NSLEFT, NSRIGHT у запмсей таблицы соотв-их (НАШИ ДЕТИ, ДЕТСКИЕ РИСУНКИ) они должны быть в диапазоне (NSLEFT..NSRIGHT) родительской записи (см. по parent_id) и нумерация их должна быть по порядку.

          NSLEFT  NSRIGHT
Родитель   8         15
1 пункт    9         10
2 пункт    11        12
3 пункт    13        14

скорее всего съехало при перемещении вверх-вниз пунктов (меню или фотоальбомов), в меню всегда съезжает
определено опытным путем. решения проблемы пока нет.
googlebot 14 июня 2011 в 10:10 0
нет, в таблицах все в порядке и в cms_menu и в cms_photo_albums.
Крот 14 июня 2011 в 14:43 0
Содержимое этих таблиц прислать можете(в sql)? Так трудно о чем либо говорить
googlebot 14 июня 2011 в 17:38 0
положил, себе в файлы, но по-моему там все в порядке.
Крот 15 июня 2011 в 18:18 +1
Поменяйте id например на 1001 у записи с id=1 в таблице cms_photo_albums, и в админке переподцепите фотоальбом к меню (Наши дети).
После этого все должно стать хорошо...
googlebot 22 июня 2011 в 09:02 0
Да помогло, только пришлось еще каждой фотке из этого альбома album_id менять и урл сменился, но это можно редиректом поправить. Спасибо, как это я сам не допер, все с ns парился.
Крот 21 октября 2011 в 22:51 0
еще одна бага!
статья с ограниченным сроком, срок вышел, статья улетела в архив... все, больше не отображается, ошибка 404, слышу как тихо яндекс матерится)
решение там же в функции как в теме этого поста
меняем
Код PHP:
 
// это мы добавили в прошлый раз
               $today    = date("Y-m-d H:i:s");

		$sql = "SELECT con.*,
						cat.title cat_title, cat.id cat_id, cat.NSLeft as leftkey, cat.NSRight as rightkey, cat.showtags as showtags,
						cat.modgrp_id, u.nickname as author, con.user_id as user_id, u.login as user_login
				FROM cms_content con
				LEFT JOIN cms_category cat ON cat.id = con.category_id
				LEFT JOIN cms_users u ON u.id = con.user_id
				WHERE con.seolink = '$seolink' LIMIT 1";
// а это убрали сейчас!
//				WHERE con.seolink = '$seolink' AND ((con.is_end=0) OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today')) LIMIT 1";
теперь статьи не видно а по прямой ссылке открывает, что и нужно было доказать Яндексу!
а модули по статьям еще править и править!!!
Крот 21 октября 2011 в 22:59 0
Правда только это работает если у статьи стоит признак окончания действия.
Если он не установлен, и дата начала действия например впереди на неск. дней(т.е. еще не должно быть статьи)
- статья все равно появляется!
только стоит поставить признак окончания - статья исчезает до своего дня, висит сколько ей надо и потом смело улетает в архив!

ППЦ!
Крот 21 октября 2011 в 23:28 0
ну как всегда)
в model.php
Код PHP:
    public function getArticles($category_id, $page=1, $perpage=100, $orderby='title', $orderto='asc') {

        $articles = array();
		$today = date("Y-m-d H:i:s");
        $sql = "SELECT con.*, 
                       con.pubdate as fpubdate,
                       u.nickname as author,
                       u.login as user_login
                FROM cms_content con
				LEFT JOIN cms_users u ON u.id = con.user_id
                WHERE con.category_id = $category_id AND con.published = 1 AND con.is_arhive = 0
//тут делаем
// не так                      AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today'))
// а так
                      AND ((con.is_end=0 AND con.pubdate <= '$today') OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today')) ".$by_homepage."
                ORDER BY con.".$orderby." ".$orderto."
                LIMIT ".(($page-1)*$perpage).", $perpage";
и все становится хорошо
такая вот записная книжка получается(