Бесплатный плагин "Debug Toolbar"

10
Хочу презентовать вам новый плагин, автором которого является наш разрабочик — Андрей Шкодяк.

Плагин «Debug Toolbar»

Плагин предназначен для вывода технической информации о работе сайта на LiveStreet.




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

Как вычестить базу от контента с содержанием определенной ссылки? (Решено)

3
Народ, возникла ситуация SOS, один проект попал в БАН гугла… теперь все ссылки с него, которые находятся на других проектах приводят к красному экрану смерти.
Файра и хром не пускает на такие сайты… мол они заражены, так как содержат контент с убитого сайта.

Вопрос в следующем, что забить в мускул, чтоб потереть все Комментарии и Топики содержащие ссылку… например site.ru

РЕШЕНИЕ… может кому понадобиться, сразу не додумался.
SELECT * 
FROM  `prefix_comment` 
WHERE  `comment_text` LIKE  '%site.ru%'
LIMIT 0 , 30

Тоже самое делаем и с топиками…
Ну а потом делит, на свой страх и риск.
Вместо Site.ru URL нужного сайта.

Не работает поиск, несмотря на видимое отсутствие ошибки в запросе

 
Плагин добавляет несколько полей к таблице Topic, после этого по ним необходимо настроить поиск. Модифицировал ACEMySearch, добавил функции по образцу имеющейся GetTopicsIdByRegExp, выводил получившийся запрос — базой обрабатывается корректно, результаты есть, но на страницу поиска ничего не попадает. Например, поиск по дате подачи объявления(это как раз объект, который добавляется плагином к топику):

SELECT SQL_CALC_FOUND_ROWS DISTINCT topic_id
FROM new_topic
WHERE (
topic_driveType =1
AND topic_time1 = '2011-08-29'
)
ORDER BY topic_id ASC 
LIMIT 0 , 20

Функция, которая ищет(делал на основе ACEMySearch):

public function GetTopicsIdByTime($Times, &$iCount, $iCurrPage, $iPerPage, $aParams)
{
    $aResult=array();
    if (!$aParams['bSkipTags']) {
    if(isset($Times[1])){
	$sql = "
	SELECT DISTINCT topic_id
	FROM ".Config::Get('db.table.topic')."
	WHERE (topic_driveType= 0 AND topic_time1 = ? AND topic_time2 = ?)
	ORDER BY
          topic_id ASC
	LIMIT ?d, ?d
	";
      $aRows=$this->oDb->selectPage($iCount, $sql,
          $Times[0],$Times[1],
          ($iCurrPage-1)*$iPerPage, $iPerPage);
    }else{
	$sql = "
	SELECT DISTINCT topic_id
	FROM ".Config::Get('db.table.topic')."
	WHERE (topic_driveType= 1 AND topic_time1 = ?)
	ORDER BY
          topic_id ASC
	LIMIT ?d, ?d
	";
      $aRows=$this->oDb->selectPage($iCount, $sql,
          $Times[0],
          ($iCurrPage-1)*$iPerPage, $iPerPage);
    }
    }
    if ($aRows) {
      foreach ($aRows as $aRow) {
        $aResult[]=$aRow['topic_id'];
      }
    }
    return $aResult;
}

Думал, DBSimple как-то переделывает подставленное значение, но при специально допущенной ошибке в sql выводится запрос, аналогичный приведенному выше, на который находится ненулевой результат. Работает только простейшая функция поиска по 2 полям, которые могут иметь значения 0 и 1(по строкам и с like, и с "=" не работает). С чем такое еще м.б. связано?

Что происходит после удаления топика?

 
Когда я удаляю топик (на сайте, кнопкой удалить).
Из таблиц удаляется только prefix_topic т.е. информация о том, что существует некий топик.
Однако, содержание этого топика не исчезет(таблица prefix_topic_content). Подскажите, это так и должно быть? Таблицы у меня вроди бы как InnoDB

SQL error: Incorrect Information in file

 
Всем привет, с праздниками!

Прошу помочь в решении следующей проблемы:
SQL Error: Incorrect information in file: './lis3/lis_topic.frm' at /classes/modules/topic/mapper/Topic.mapper.class.php line 191
Array ( [code] => 1033 [message] => Incorrect information in file: './lis3/lis_topic.frm' [query] => SELECT count(t.topic_id) as count	 FROM lis_topic as t,	 lis_blog as b WHERE 1=1 AND t.topic_publish = 1 AND t.topic_date_add >= '2011-05-01 15:00:00' AND ((b.blog_type='open'))	 AND t.blog_id=b.blog_id; [context] => /classes/modules/topic/mapper/Topic.mapper.class.php line 191 )


Начала возникать просто при попытке зайти на основной урл сайта. Первый раз возникла при нажатии на страницу в паджинаторе в футере.

Заранее благодарю за советы!

Post запрос в базу из profile.tpl

 
Хочу вывести фамилию пользователя в профайл, чтобы была возможность его изменять, вот только не пойму, откуда берется значение name=«profile_name», так как хочу сделать по аналогии.
<p>
<label for="profile_name">{$aLang.settings_profile_name}:</label>
<input type="text" name="profile_name" id="profile_name" value="{$oUserCurrent->getProfileName()|escape:'html'}" class="w100p" /><br />
<span class="form_note">{$aLang.registration_name_notice}</span>
</p>

Построитель простейших SQL запросов на примере выборок модуля File

3
Может кто-то и не знал, но в XText есть построитель простых SQL запросов, который я использую в мапперах этого плагина.

Согласитесь, как некрасиво переопределять метод маппера какого-либо модуля, ведь при этом полностью переписывается запрос, содержащийся в этом методе. А если его переопределят два плагина? Да, правильно, отработает только последний :)

Ради красивости решения, я придумал объект модифицируемого запроса в виде Entity. Называется он PluginXtext_ModuleSql_EntityQuery.

Давайте рассмотрим его на примере маппера тех же файлов, о которых недавно шла речь.

Для наглядности, в этом маппере, методы разделены на два типа: первые отдают объект Sql-запроса, вторые же — его исполняют и возвращают результат методу модуля.


Читать дальше
  • +1
  • 06 марта 2011, 17:52
  • 1d10t

Правильный способ модификации enum в плагинах.

8
Проблема заключается в том, что некоторые плагины заменяют поле target_type таблицы comment, тем самым создавая свои новые типы комментариев, но затирая при этом уже добавленные. Разработчики упрощают себе жизнь, ограничиваясь строкой в dump.sql (пример из плагина «компании»)
ALTER TABLE `prefix_comment` 
	MODIFY target_type enum('topic','talk','company','clan') 
	DEFAULT 'topic';

В список риска попадает практически всё, где используется target_type enum: favourite, vote, comment_online.

При установки нескольких таких плагинов начинается бардак. Такие недоработки я заметил в следующих плагинах: «Компании», «Объявления», «Вопросы и ответы», «Места и события». Так делать нельзя. Программист разберется и исправит ошибку, но что делать обычным людям, далеким от php и sql, которые просто используют движок и несколько таких плагинов?

Тру кодером оказался Алексей Волков, разработчик «Комментариев для статических страниц». При установке плагина он в функции Activate проверяет target_type и добавляет новое поле только если его там нет, сохраняя при этом его старое содержимое. Не спросясь разрешения Алексея (надеюсь он меня простит — за правое дело радею) выкладываю часть кода, отвечающего за это.

$oDb = $this->Database_GetConnect();
$sql = 'SHOW COLUMNS FROM  `'.Config::Get('db.table.comment').'`';
$aRows = $oDb->select($sql);
foreach ($aRows as $aRow) {
	if ($aRow['Field'] == 'target_type') break;
}

if (strpos($aRow['Type'], "'page'") === FALSE)
{
	// - Вносим изменение в поле target_type в таблице prefix_comment
	$aRow['Type'] =str_ireplace('enum(', "enum('page',", $aRow['Type']);
	$sql = "ALTER TABLE `".Config::Get('db.table.comment')."` 
		CHANGE `target_type` `target_type` " . $aRow['Type'] . " 
		NOT NULL DEFAULT 'topic'";
	$oDb->query($sql);
} 


Уважаемые разработчики, не поленитесь обновить свои плагины и внести изменения.

Хотел опубликовать в тематическом блоге, например в «Дополнительные модули и доработки для LiveStreet», но видимо не хватает кармы, это мой первый пост/комментарий вообще на livestreet.ru

PS. в sql запросах типа ALTER проще использовать MODIFY вместо CHANGE, т.к. первый не требует указывать название поля два раза.

Помощь с доработкой функционала движка

 
Прошу помочь мне с SQL запросом.
Сижу уже 4ый час, перековырял практически весь гугл, и не нашел ответа на поставленный вопрос, либо упустил его из-за незнания оного языка.

Суть в том, что в таблице prefix_blog есть поле blog_genre (жанр игры).
Я хочу сделать вывод игр по жанрам, но в этом поле есть такие значения как Action — с этим проблем не было, а есть значения MMO, RPG — вот тут я встал в ступор.
Т.е. если жанр обозначен просто как MMO выводятся все блоги с этим жанром, а если обозначен как MMO, RPG то этот блог не выводится.


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

Проблема,помогите решить!!!!

 
Поставил я сайт, поставил модуль кланвары, перехожу на команды или кланвары выдается ошибка — SQL Error: Table 'san-ast_asd.prefix_clans' doesn't exist at сайт/modules/clans/mapper/Clans.mapper.class.php line 211
Array ( [code] => 1146 [message] => Table 'san-ast_asd.prefix_clans' doesn't exist [query] => SELECT * FROM prefix_clans WHERE owner_id = 1 [context] => сайт/classes/modules/clans/mapper/Clans.mapper.class.php line 211 )

Как исправить не могу найти!!!