Автоматическое подключение блога. Хак. LS 0.4

По мотивам хака для ls 0.3

К использованию не рекомендуется, писался для себя :)

Используйте модуль




Экшены


Идем в classes/actions изменяем ActionTopic.class.php, ActionLink.class.php, ActionQuestion.class.php

функции EventEdit и EventAdd

найти
$this->Viewer_Assign('aBlogsAllow',$this->Blog_GetBlogsAllowByUser($this->oUserCurrent));

заменить на
//$this->Viewer_Assign('aBlogsAllow',$this->Blog_GetBlogsAllowByUser($this->oUserCurrent));
$this->Viewer_Assign('aBlogsAllow',$this->Blog_GetBlogsUserCanWrite($this->oUserCurrent));


функции SubmitEdit и SubmitAdd

перед
/**
 * Проверяем права на постинг в блог
 */


добавить
/**
 * Автовступление в блог
 */
if(!$this->oUserCurrent->isAdministrator()) {
	$oBlogUserNew=$this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(),$this->oUserCurrent->getId());
	if(!$oBlogUserNew) {
		$oBlogUserNew=Engine::GetEntity('Blog_BlogUser');
		$oBlogUserNew->setBlogId($oBlog->getId());
		$oBlogUserNew->setUserId($this->oUserCurrent->getId());
		$oBlogUserNew->setUserRole(LsBlog::BLOG_USER_ROLE_USER);
		$this->Blog_AddRelationBlogUser($oBlogUserNew);

		$oBlog->setCountUser($oBlog->getCountUser()+1);
		$this->Blog_UpdateBlog($oBlog);
	}
}


Мапперы


Идем в classes/modules/blog открываем Blog.class.php и в конец (до закрывающей скобки } ) добавляем
/**
 * Получает список блогов в которые может писать юзер
 *
 * @param unknown_type $oUser
 * @return unknown
*/
public function GetBlogsUserCanWrite($oUser) {
	if ($oUser->isAdministrator()) {
		$data = $this->GetBlogs();
		return $data;
	} else {
		$data = $this->oMapperBlog->GetBlogsUserCanWrite($oUser);
		$data=$this->GetBlogsAdditionalData($data);
		return $data;
	}
}


Открываем classes/modules/blog/mapper/Blog.mapper.class.php и также в конец вставляем
/**
 * Получает список блогов в которые может писать юзер
 *
 * @param unknown_type $oUser
 * @return unknown
 */
public function GetBlogsUserCanWrite($oUser) {
	$sql = "SELECT
			b.blog_id
			FROM
				".Config::Get('db.table.blog')." as b
			WHERE
				(b.user_owner_id = ? AND b.blog_type <> 'personal')
				OR
				(b.blog_type = 'open' AND b.user_owner_id <> ? AND b.blog_limit_rating_topic <= ?)
				OR
				(b.blog_type = 'close' AND b.blog_id IN (SELECT bu.blog_id FROM ".Config::Get('db.table.blog_user')." AS bu WHERE bu.user_id = ?))
			";
	$aBlogs=array();
	if ($aRows=$this->oDb->select($sql, $oUser->getId(), $oUser->getId(), $oUser->getRating(), $oUser->getId())) { 
		foreach ($aRows as $aBlog) {
			$aBlogs[]=$aBlog['blog_id'];
		}
	}
	return $aBlogs;
}


Вроде бы ничего не забыл :D

10 комментариев

avatar
а теперь этоже самое и в модуль)) и первоначального автора укажите. и тогда честь вам и хвала
avatar
Во-первых, надо все плагином делать. 0,4 не для таких хаков «в упор» делали.

Во-вторых могли бы разрешения спросить. Код от 0,31 моего хака впринципе даже и не меняли. Вообще. Нет, я не жадный, тем более в опенсорсе, но свое мнение уже несколько раз озвучивал — если автор был, то надо спрашивать — а не собирается ли он сам переносить все это дело. Я, например, не далее как вчера сделал все плагином с хуками, немного причешу и скоро выложу.
avatar
кстати, вы даже багу небольшую не поправили.
avatar
Думал 0.4 не подвержен, оказалось не там смотрел цифры. По хорошему это функция присоединения к блогу должна проверять есть ли я там и увеличивать счетчики, а не лупить инсерт в лоб, вызывая ошибки
avatar
Во-первых, надо все плагином делать. 0,4 не для таких хаков «в упор» делали.
ls использую 2ой день, и плагины пока не осилил
Во-вторых могли бы разрешения спросить. Код от 0,31 моего хака впринципе даже и не меняли. Вообще.
Разрешение у вас покодить на своем сайте? Код менял, но не принципиально, что логично.
Нет, я не жадный, тем более в опенсорсе, но свое мнение уже несколько раз озвучивал — если автор был, то надо спрашивать — а не собирается ли он сам переносить все это дело.
Немного есть :) Фича нужна была здесь и сейчас, а не когда автор соизволит обновить
Я, например, не далее как вчера сделал все плагином с хуками, немного причешу и скоро выложу.
С удовольствием заменю на модуль и заодно поизучаю правила написания модулей и хуков
avatar
Разрешение у вас покодить на своем сайте?
Речь идет о данном «хаке» который выложен на ЭТОМ сайте под биркой для 0,4. Хак абсолютно неюзабелен для 0,4, потому что даже не учитывает функционал закрытых блогов, что вызовет гору ошибок и неработоспособность остальной логики, не говоря об неисправленном недочете.
Выложен тупо код от 0,31 без изменений, под биркой 0,4. О правилах приличия я также уже сказал.
avatar
Речь идет о данном «хаке» который выложен на ЭТОМ сайте под биркой для 0,4
вы его еще запатентуйте, хак выложен в личном блоге, сделан для себя, никого пользоваться не заставляю
Хак абсолютно неюзабелен для 0,4, потому что даже не учитывает функционал закрытых блогов, что вызовет гору ошибок и неработоспособность остальной логики
про закрытые блоги может быть, остальное раздуто для придания важности? Или тут все скрипты идеальные с первых строк?
не говоря об неисправленном недочете
если это про количество подписчиков, то все исправлено
Выложен тупо код от 0,31 без изменений, под биркой 0,4
Не тупо, а переписано или вы про стандартные функции, которые мне надо было тоже переписать, чтоб сильнее отличалось?
О правилах приличия я также уже сказал.
Ну дак выпустите плагин, все будут только рады. 0.4 когда вышла? Всем сидеть ждать ваше приличие еще месяц или пытаться самим решать свои проблемы по мере опыта?

Тут что 2 типа юзеров одни не могут, вторые могут и сидят важные? А остальным сидеть тихо и не высовываться со своими жалкими скриптиками? Очень дружелюбное сообщество
avatar
Всем сидеть ждать ваше приличие еще месяц или пытаться самим решать свои проблемы по мере опыта?

Тут что 2 типа юзеров одни не могут, вторые могут и сидят важные? А остальным сидеть тихо и не высовываться со своими жалкими скриптиками? Очень дружелюбное сообщество
Вы настолько передергиваете, что диалог с вами не получится.
По плагину сказал — на днях его выложу, надо еще чуть причесать, постараюсь в воскресенье.

По сабжу топика — я все, свою точку зрения озвучил, больше не буду надоедать.
avatar
Вы настолько передергиваете, что диалог с вами не получится.
я только за, потому что фича необходима, причем уже сейчас, поэтому и писал, закрытых блогов пока нет на сайте
По сабжу топика — я все, свою точку зрения озвучил, больше не буду надоедать.
раз на то пошло, могли бы подсказать по поводу закрытых блогов ;)
avatar
Добавил проверку закрытых блогов
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.