Как работают "Теги избранного"?

Доброго времени суток! Разбираюсь с логикой работы движка и не совсем понятен алгоритм работы «Тегов избранного».
Сохраняя топик в избранном, по идее в «тегах избранного» должны сохраниться теги данного топика… а нет, не все так просто. Если я добавляю свой тег к избранному топику, то теги топика появляются.

Объясните, это правильная работа избранных тегов или логика нарушена? В чем смысл дописывать свой тег, чтобы сохранились теги самого топика у меня в избранном?

Где логика?

Захожу в раздел «Новые», где типа 8 новых записей, но там их нифига не 8, там пагинация и можно посмотреть все топики за последние месяцы. Так зачем тогда этот раздел называть «Новые», если содержание не соответствует названию?

Возможно баян и уже обсуждалось, тогда прошу кинуть ссылку на это обсуждение.

Быстрое создание блога

Известная проблема, заключающаяся в том, что очень трудно донести до обычного пользователя, что перед тем, как написать пост в блог, этот блог для начала нужно создать. Трудностей добавляет тот факт, что список всех блогов может быть довольно большой, да и сортировка идет по рейтингу, короче трудно отыскать нужный блог, не говоря уже о том, что его вообще нужно искать, потом коннектится и только потом туда что то писать.

Немного решает плагин «автоподключения» от экстраверта. Думаем. Человек создает пост, начинает выбирать блог, ему открывается список всех блогов. Блогов дохрена, где он, тот самый, нужный ему блог? Навязывается вопрос: как системе помочь пользователю?

Читать дальше →

Прямой доступ к свойствам модели

Это здорово, что в версии 0.4.* появилась возможность автоматического доступа к полям модели из записи в БД, без постоянного прописывания get- и set-методов в файле *.entity.php.

Однако при попытке воспользоваться новым функционалом сразу столкнулся с проблемой:
Т.к. по логике, принятой в LS, все поля записываются в базе данных с префиксом (имя модели), то и автоматические геттеры теперь требуют имени модели.
Иначе говоря, если у нас есть модуль Test с таблицей prefix_test и полем в таблице test_name, то чтобы получить к нему доступ, нам нужно писать $oTest->getTestName() вместо привычного способа $oTest->getName(), который является логичным и удобным.

Я считаю, что необходимо ввести поддержку обоих вариантов, не только по причине неудобства варианта, который возможен сейчас, а еще и по более важной причине — совместимости.
Исторически в самом LiveStreet все методы были прописаны в *.entity.php и указывались без имени модели, например для блога — getDescription(), getTitle() и т.д., а никак не getBlogDescription() и getBlogTitle().

Подобный принцип наименования (вполне логичный и разумный) наследовали большинство модулей и плагинов, которые существуют на сегодняшний день, поэтому было бы совсем не разумно использовать половину методов (которые уже прописаны в *.entity.php) в одном виде, а другую половину, которая будет добавляться вместе с новыми свойствами моделей — в другом.

Предлагаю простой вариант, как исправить эту ошибку:
в /engine/classes/Entity.class.php, в методе __call()
после блока
if (isset($this->_aData[$sKey])) {					
  return $this->_aData[$sKey];
}
добавить блок
else {
  preg_match('/Entity([^_]+)/', get_class($this), $sModulePrefix);
  $sModulePrefix = strtolower($sModulePrefix[1]) .'_';
  if (isset($this->_aData[$sModulePrefix . $sKey])) {					
    return $this->_aData[$sModulePrefix . $sKey];
  }
}


На мой взгляд, это намного упростит и упорядочит работу с свойствами моделей.

Не понимаю логику

Ребята, вопрос такой:

есть база объявлений — образно id, user_id, type, title, text. Все отлично, все работает, т.е. модуль объявлений я сделал, добавляю, удаляю объявления, все ровно, все отлично, НО для каждого объявления есть поле type, оно содержит идентификатор строки из другой таблицы содержащей список типов, это type_id, type_name. Теперь проблема — я хочу получить название типа для объявления и вывести его пользователю. что у нас есть:

обработка экшена

        protected function EventAll() {
                $oResult=$this->Mytest_GetList();
		$this->Viewer_Assign('oResult',$oResult);
                return;
        }



класс:

	public function GetList() {
		$result=$this->oMapperMytest->GetList();
		return $result;
	}


маппер:

        public function GetList()
        {
                $sql = "SELECT ad_id, ad_type, user_id, ad_price, user_ip, ad_torg, ad_hot, ad_title, ad_date, ad_status from ".DB_TABLE_ADDESK." ORDER BY ad_price";
		$aRes=array();
                if ($aRow=$this->oDb->select($sql)) {
			foreach ($aRow as $aTopic) {
				$aRes[]=new MytestEntity_Mytest($aTopic);
			}
                }
		return $aRes;
        }


шаблон:

{foreach from=$oResult item=oR}
	<tr>
		<td>{date_format date=$oR->getDate()}</td>
		<td> ВОТ ТУТ ТО БЫ И НАДО ВЫВЕСТИ ТИП ОБЪЯВЛЕНИЯ </td>
		<td><a href='/addesk/show/{$oR->getId()}.html'>{$oR->getTitle()}</a></td>
		<td>{$oR->getPrice()} {$aLang.addesk_rub} {if $oR->getTorg()==1}
<small>{$aLang.addesk_can_torg}</small>{/if}</td>
	</tr>
{/foreach}

так вот как запросить тип я не понимаю. вроде как в экшене нужно обработать, добавить в класс функцию… но нифига не получается. в вообще уже запутался… :( вобщем помогайте :(