Плагин "Вопросы"

Закончил работу над еще одним плагином. Целью ставил глубже вникнуть в устройство LiveStreet и создание плагинов, а в итоге получился плагин добавляющий новый раздел на сайт — раздел вопросов и ответов.

Итак, возможности плагина (в целом функционал схож с функционалом топиков, но с некоторыми изменениями):

  1. Зарегистрированные пользователи могут задавать вопросы и отвечать на них.
  2. Категоризация вопросов осуществляется при помощи тегов. На отдельной странице имеется список всех тегов с поиском по ним.
  3. За вопросы и ответы можно голосовать. Рейтинг и сила в таком случае начисляются аналогично топикам.
  4. Правильные ответы автор вопроса может отмечать как решение вопроса. В таком случае вопрос считается решенным и у его названия появляется соответствующая отметка.
  5. Решений для одного вопроса может быть несколько.
  6. За правильные ответы автору ответа начисляется сила и рейтинг. Величина — такая же как и при голосовании за топик.
  7. Вопросы и ответы можно добавлять к себе в избранное. Для вопросов можно добавлять свои теги.
  8. На новые ответы к вопросу можно подписываться.
  9. В «Активности» выводятся следующие события: добавления вопроса/ответа, голосование за вопрос/ответ.
  10. В сайдбаре помимо основных блоков «Прямой эфир» и «Теги» присутствует блок «Лучшее» в котором выводятся лучшие вопросы за указанный в конфиге период.

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

Вопрос по записи данных в разные таблицы БД и ORM

Пробую написать плагин вопросов. Делаю по аналогии с топиками. В БД создаю две таблицы для вопросов:

CREATE TABLE IF NOT EXISTS `prefix_question` (
  `question_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) unsigned NOT NULL,
  `question_title` varchar(200) NOT NULL,
  `question_tags` varchar(250) NOT NULL COMMENT 'tags separated by a comma',
  `question_date_add` datetime NOT NULL,
  `question_date_edit` datetime DEFAULT NULL,
  `question_user_ip` varchar(20) NOT NULL,
  `question_publish_index` tinyint(1) NOT NULL DEFAULT '0',
  `question_count_read` int(11) unsigned NOT NULL DEFAULT '0',
  `question_cut_text` varchar(100) DEFAULT NULL,
  `question_text_hash` varchar(32) NOT NULL,
  PRIMARY KEY (`question_id`),
  KEY `user_id` (`user_id`),
  KEY `question_date_add` (`question_date_add`),
  KEY `question_text_hash` (`question_text_hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


CREATE TABLE IF NOT EXISTS `prefix_question_content` (
  `question_id` int(11) unsigned NOT NULL,
  `question_text` longtext NOT NULL,
  `question_text_short` text NOT NULL,
  `question_text_source` longtext NOT NULL,
  `question_extra` text NOT NULL,
  PRIMARY KEY (`question_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


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

Вопрос по пингатору

Всем привет!

Установлен плагин пингатора (исправленный). В файле plugins/empblogping/classes/modules/empping/Emping.class.php есть следующий код:

/**
     * Отдает линк на rss блога в котором опубликован топик
     *
     * @param ModuleTopic_EntityTopic $oTopic
     * @return string
     */
    protected function getRssUrl($oTopic) {
        if ($oTopic->getBlog()->getType() == 'personal') {
            return Router::GetPath('rss') . 'personal_blog/' . $oTopic->getBlog()->getOwner()->getLogin() . '/';
        } else {
            return Router::GetPath('rss') . 'blog/' . $oTopic->getBlog()->getUrl();
        } 
    }


Вопрос вот по этой части:
return Router::GetPath('rss') . 'personal_blog/' . $oTopic->getBlog()->getOwner()->getLogin() . '/';
        } else {
            return Router::GetPath('rss') . 'blog/' . $oTopic->getBlog()->getUrl();

Как я понял, первым условием он отдает пинг персональных блогов и строит структуру адреса сайт/rss/personal_blog/логин/ и пингует ленту топиков пользователя, закрывая адрес слэшем.

А во втором случае плагин пингует статьи коллективных разделов сайт/rss/blog/ но уже без слэша на конце.
Вопрос в следующем что он передаёт во втором случае, если конструкции сайт/rss/blog/ на сайте нет вообще.

Как сделать перенаправление с заголовка поста-ссылки?

Здравствуйте.
Используются шаблоны synio и mobile. Как сделать так, чтобы при нажатии на заголовок поста-ссылки происходило перенаправление на саму ссылку?
Т.е. юзер видит пост-ссылку, нажимает на заголовок — и перемещается по ссылке, а чтобы открыть комментарии, нажимает на дату и время поста.

В topic.entity.class.php вижу следующий код:
/**
	 * Возвращает URL для топика-ссылки
	 *
	 * @param bool $bShort	Укарачивать урл или нет
	 * @return null|string
	 */
public function getLinkUrl($bShort=false) {
		if ($this->getType()!='link') {
			return null;
		}

		if ($this->getExtraValue('url')) {
			if ($bShort) {
				$sUrl=htmlspecialchars($this->getExtraValue('url'));
				if (preg_match("/^https?:\/\/(.*)$/i",$sUrl,$aMatch)) {
					$sUrl=$aMatch[1];
				}
				$sUrlShort=substr($sUrl,0,30);
				if (strlen($sUrlShort)!=strlen($sUrl)) {
					return $sUrlShort.'...';
				}
				return $sUrl;
			}
			$sUrl=$this->getExtraValue('url');
			if (!preg_match("/^https?:\/\/(.*)$/i",$sUrl,$aMatch)) {
				$sUrl='http://'.$sUrl;
			}
			return $sUrl;
		}
		return null;
	}


Как бы его подставить в значение ссылки для заголовка топика?

После регистрации на сайте - сайт не работает, пишет ошибку

После регистрации на сайте, сразу выдает ошибку:

Fatal error: Uncaught exception 'Exception' with message 'Undefined method module: IsBannedByLogin' in /home/ether142/public_html/fx-biz.com/engine/classes/Engine.class.php:604 Stack trace: #0 /home/ether142/public_html/fx-biz.com/engine/classes/Engine.class.php(531): Engine->GetModule('IsBannedByLogin') #1 /home/ether142/public_html/fx-biz.com/engine/classes/Entity.class.php(173): Engine->_CallModule('IsBannedByLogin', Array) #2 /home/ether142/public_html/fx-biz.com/plugins/aceadminpanel/classes/hooks/HookAdmin.class.php(174): Entity->__call('IsBannedByLogin', Array) #3 /home/ether142/public_html/fx-biz.com/plugins/aceadminpanel/classes/hooks/HookAdmin.class.php(174): PluginSitemap_ModuleUser_EntityUser->IsBannedByLogin() #4 [internal function]: PluginAceadminpanel_HookAdmin->InitAction(Array) #5 /home/ether142/public_html/fx-biz.com/engine/modules/hook/Hook.class.php(292): call_user_func_array(Array, Array) #6 /home/ether142/public_html/fx-biz.com/engine/modules/hook/Hook.class.php(246): ModuleHook->RunType(Array, Array in /home/ether142/public_html/fx-biz.com/engine/classes/Engine.class.php on line 604

Лечится странно, включаю или выключаю любой плагин в админке.

Помогите решить проблему пожалуйста.

Загрузка фото в профиль

В конфиге выставил:

$config['module']['user']['profile_photo_width'] = 2000; 	  // ширина квадрата фотографии в профиле, px


По факту загрузки, получаю размер ровно в 2 раза меньше на выходе. Загружается например фотка 2000x400, получается 1000x200.

Подскажите в чем проблема?

UPD

Решение github.com/livestreet/livestreet/issues/670

RegExp нужна помощь

Доброго времени суток, друзья!
Прошу у вас помощи, ковыряюсь сутки, не могу правильно настроить регулярки для евентов, уже кучу перечитал, пересмотрел, такое чувство, что у всех работает, а меня как то стороной обходит.Кароч нид хел.



Регистрирую
#$this->AddEventPreg('/^[\w\-\_]+$/i','EventShowSquad');
$this->AddEventPreg('/^[\w\-\_]$/i','/^edit+$/i','EventEditSquad');
$this->AddEventPreg('/^[\w\-\_]$/i','/^edit/i','/^lineup/i','EventEditLineUpSquad');


/squad/15/
/squad/15/edit/
/squad/15/edit/lineup

Почему-то все время работает евент EventShowSquad.

Модальное окно не открывается

Все доброго времени суток!

Прошу помощи, что у меня не так или что я делаю не так.Решила поюзать модальные окна.

в template.js исходного шаблона инициализировал
$('#win_delete_form').jqm({trigger: '#win_delete_show'});


в коде шаблона указал:
<div id="win_delete_form" class="modal">
    <header class="modal-header">
        <h3>Salam!</h3>
        <a href="#" class="close jqmClose"></a>
    </header>
</div>


<a href="#" title="asd" id="win_delete_show" class="delete">allah akbar!</a>


Не открывает по сылке.

Как запретить постинг от имени guest юзера?

На одном из моих сайтов постят под разными никами спамботы.
Этих ников нет в бд.
При переходе на их профиль виден профиль пользователя guest.
Я так понимаю, это некий постинг доступный без регистрации?
Как запретить гостевой постинг?

Или это дело рук уязвимых плагинов, позволяющих оставить комент через соц. сети?