Рекламные блоки для LS

Плагин «Ad units»
Рекламные блоки для LS


Добавляет пользователям возможность размещать на сайте рекламные блоки на страницах своих блогов и топиков в виде ссылок, банеров, медиа контента.
для управления рекламными блоками переходим в настройки профиля и добавляем свою рекламу или по ссылке _ваш_сайт_/settings/adunits/

/plugins/localflv/config/config.php:
/* включение/отключение возможности размещать рекламу всем пользователям: all - для всех, admin - только для админов*/
    Config::Set('config.adunits.permit.user', 'all');


При успешной акитивации в БД добавится таблица prefix_adunits из /plugins/adunits/dump.sql
в противном случае выполните sql-запрос из файла /plugins/adunits/dump.sql
CREATE TABLE `prefix_adunits` (
    `adunits_id` int(11) NOT NULL auto_increment,
    `user_id` int(11) NOT NULL,
    `adunits_code` longtext character set utf8,
    `adunits_setting` text character set utf8,
    `adunits_setting_more` longtext character set utf8,
    `adunits_date_add` datetime NOT NULL,
    `adunits_date_edit` datetime NOT NULL,
    PRIMARY KEY  (`adunits_id`)
  ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


Скачать плагин

Красивый номер инвайтов

Кому не нравится код инвайтов вида 5884804e763972972042b1fccd6f1d13.
Можно сделать красивые номера вида Y8EC-HRF-9I5.

Для этого открываем файл include/function.php и находим там функцию func_generator (81 строка). Не будем ее менять, так как она используется в других местах, а сделаем под ней свою:
/**
 * генерирует код инвайта
 */
function func_generator_invite() {
        $allowable_characters = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
        $ps_len = strlen($allowable_characters);
        mt_srand((double)microtime()*1000000);
        $pass = "";
        for($i = 0; $i < 12; $i++) {
                if(($i == 4) || ($i == 8)) {
                        $pass .= '-';
                } else {
                        $pass .= $allowable_characters[mt_rand(0,$ps_len-1)];
                }
        }
        return $pass;
}


Затем идем в файл classes/modules/user/User.class.php и находим функцию GenerateInvite (строка 444) и меняем там строку:
$oInvite->setCode(func_generator(32));

на
$oInvite->setCode(func_generator_invite());


Чтобы пользователи могли вводить код в любом регистре сделаем небольшое изменение в файле classes/modules/user/mapper/User.mapper.class.php изменив функцию GetInviteByCode (строка 444). Меняем строку:
if ($aRow=$this->oDb->selectRow($sql,$sCode,$iUsed)) {

на
if ($aRow=$this->oDb->selectRow($sql,strtoupper($sCode),$iUsed)) {

Напоминание о непрочитанном лс

Этим способом, можно ЗАЕБАТЬ СУКА ЛЮДЕЙ :)
Появление окна при начальной загрузке браузера, куки удаляются при закрытии.


В случае наличия сообщений выдает предупреждения. Необходимо включить обновление для новых писем.


Как включить обновление значков при появлении сообщений?
Правим код в конфиге:
// Модуль Talk
$config['module']['talk']['reload']     = true;

*это увеличит нагрузку на сервер.

Скачать и активировать.

Редактирование id

Если вам, все же, приспичило страдать хуетой.

То для редактирования Людей, или там Комментариев, есть два плагина.

Редактирование людей
Плагин позволяет админам редактировать все поля в профиле любого пользователя. Плюс дополнительно админ может регить пользователей, например это можно использовать для регистрации ботов если это нужно. Но думаю что больше этот пагин будет полезен разработчикам, например для тестирования своих наработок после установки чистого дистрибутива движка.
Скачать плагин.

Редактирование комментариев +TinyMCE

Для конфигурации доступны параметры условий возможности редактирования комментария для пользователя: срок, прошедший с момента публикации, уровень комментария в древе, роль пользователя на сайте, тип комментируемого топика.
Так же в конфиге есть возможность включить использование редактора TinyMCE в комментах. Для этого в таблице prefix_comment создается дополнительное поле comment_text_source.
Скачать и активировать.

НО, если все же что-то не так. (у меня не на всех стилях работало)
То делайте вот это.
comment_tree.tpl
на второй строчке, сразу после
<script ... src=".../comments.js"></script>

вставить
{include file='cmtedit_form.tpl'}

comment.tpl
перед кнопкой удаления коммента:
{if !$oComment->getDelete() and $oUserCurrent and $oUserCurrent->isAdministrator()}

вставить
{include file='cmtedit_button.tpl'}

в том же comment.tpl
найти
<div class="text">
        {if $oComment->isBad()}
                <div style="display: none;" id="comment_text_{$oComment->getId()}">
                {$oComment->getText()}
                </div>
                 <a href="#" onclick="$('comment_text_{$oComment->getId()}').style.display='block';$(this).style.display='none';return false;">{$aLang.comment_bad_open}</a>
        {else}  
                {$oComment->getText()}
        {/if}                                                           
</div>

заменить на:
<div class="text" id="comment_text_{$oComment->getId()}" {if $oComment->isBad()}style="display: none;"{/if}>
        {$oComment->getText()}
</div>                          
{if $oComment->isBad()}
        <div class="text-more">
                <a href="#" onclick="$('comment_text_{$oComment->getId()}').style.display='block';this.parentNode.style.display='none';return false;">{$aLang.comment_bad_open}</a>
        </div>
{/if}
{if $oComment->getCommentDateEdit()}
        <div class="text-more edit-info">
                {$oComment->getEditInfo()}
        </div>
{/if}

Отправка подписки через jabber

Все последующие шаги можно делать только если вы добавили поле jabber'а в профиль! :)
Например плагином Социальные контакты.

Берем необходимые файлики, копируем каталоги /classes/, /config/ и /template/languages/ соответственно в каталоги classes/ config/ и languages/ на хосте, где установлен LS.
Потребуется замена файла Notify.class.php

Копируем файлы из каталога templates/skin/new/notify в соответствующий каталог используемой вами темы.
Выполняем sql запрос: (на всякий не забывайте делать бекапы sql, при любой работе с sql, ибо если там что-то накосячится, то это геморой)
alter table prefix_user add user_settings_notice_method enum('mail', 'jabber') not null default 'mail' after user_profile_foto;

Находим в файле /classes/actions/ActionSettings.class.php
if (isset($_REQUEST['submit_settings_tuning'])) {
    $this->Security_ValidateSendForm();

и после этого добавляем:
$sNoticeMethod = getRequest('settings_notice_method');
            if ($sNoticeMethod == "jabber" && is_null($this->oUserCurrent->getProfileJabber())) {
                $this->Message_AddErrorSingle($this->Lang_Get('settings_tuning_no_jid'));
                return;
            }
            $this->oUserCurrent->setSettingsNoticeMethod( $sNoticeMethod );


Находим
$this->oUserCurrent->setProfileJabber(null);
и добавляем после этого:
$this->oUserCurrent->setSettingsNoticeMethod('mail');


в файле: /classes/modules/user/entity/User.entity.class.php находим:
return $this->_aData['user_profile_foto'];
    }

и добавляем после этого:
public function getSettingsNoticeMethod() {
        return $this->_aData['user_settings_notice_method'];
    }

находим:
$this->_aData['user_profile_foto']=$data;
    }

и добавляем после этого:
public function setSettingsNoticeMethod($data) {
        $this->_aData['user_settings_notice_method']=$data;
    }


в файле: /classes/modules/user/mapper/User.mapper.class.php находим:
user_profile_foto = ? ,

и добавляем следом:
user_settings_notice_method = ? ,

находим:
$oUser->getProfileFoto(),

и добавляем следом:
$oUser->getSettingsNoticeMethod(),


в файле /templates/skin/<ваша-тема>/actions/ActionSettings/tuning.tpl находим:
<label for=""><input {if $oUserCurrent->getSettingsNoticeNewFriend()}checked{/if} type="checkbox" id="settings_notice_new_friend" name="settings_notice_new_friend" value="1" class="checkbox" /> — {$aLang.settings_tuning_notice_new_friend}</label>


и после этого добавляем:
<br />
    <select name="settings_notice_method" style="width: 200px;">
        <option value="mail" {if $oUserCurrent->getSettingsNoticeMethod()=='mail'}selected{/if}>{$aLang.settings_tuning_notice_method_mail}</option>
        <option value="jabber" {if $oUserCurrent->getSettingsNoticeMethod()=='jabber'}selected{/if}>{$aLang.settings_tuning_notice_method_jabber}</option>
    </select>


конфиг /config/modules/jabber/config.php надо исправить в соответствии со своими настройками, указав jid от имени которого будут рассылаться уведомления.

Создание рассылок

Создание каких-то любых рассылок, по критериям из профиля юзеров.
Говно хосты, или vps с лимитами на отправку исходящего — не получится. Даже не пытайтесь.

  • Есть возможность фильтра получателей по свойству «Пол» («мужчины», «женщины», «не указан»)
  • Можно посмотреть список рассылок и статус хода рассылки
  • В списке рассылок можно приостановить начатую рассылку или возобновить приостановленную
  • Можно выбирать стартовать или не стартовать рассылку сразу после её сохранения
  • Рассылка производится не сразу, а пачками по 20 писем (количество можно менять в конфиге). Для этого нужно поцепить на cron скрипт рассылки /plugins/mailing/include/cron/send-mail.php
  • Отправленные сообщения не отображаются в вашем списке сообщений до тех пор пока пользователь не ответит на это сообщение (вам ведь важна обратная связь с пользователями?).

Для того, чтобы сообщения отправлялись нужно поцепить на cron скрипт рассылки /plugins/mailing/include/cron/send-mail.php. У нас он запускается каждые 5ть минут:
*/5 * * * * /var/www/domain.ru/www/plugins/mailing/include/cron/send-mail.php

*http://ru.wikipedia.org/wiki/Cron

сайт.ru/mailing/ Рассылка сообщений
сайт.ru/mailing/list Список рассылок

Скачать и активировать.

Яндекс.Карты / Google Maps

Например, если вы захотите сделать что-то типо, gdecasino.org и подобных.


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

Что такое категория маркеров?
Категория маркеров это некоторое свойство маркера, в котором определяется как будет выглядеть иконка маркера на карте.
Свойства категории:
  • — Название — любое текстовое название. Например, Офисы компании;
  • — Имя стиля — требуется для генерации карты, набор символов на латинице. Например, offices.
  • — Ссылка на иконку маркеров в категории — иконка маркера, которая появляется на карте при выборе категории. Здесь удобно пользоваться стандартными иконками Яндекс.Карт.

Что такое маркер?
Это значек и балун на карте, который задается следующими свойствами:
Название, широта, долгота, категория, адрес, телефон, ссылка на подробную информацию и ссылка на изображение в балуне. Увидеть где и какие свойства проявляются достаточно просто — поиграйтесь с демками.

Как можно настроить карту?
Для карты можно задать API ключ Яндекс.Карт, ширину, высоту, координаты центра, начальное приближение, любые из стандартных инструментов управления на выбор, которые сейчас включены на демке, а также строку поиска по объектам на карте.

Как работает поиск?

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


Поиск объекта на карте ищет объекты (маркеры) по названию маркера. При клике на результат поиска, на карте открывается балун найденного маркера.
Поиск объекта на карте использует для предложения результатов плагин jQuery, однако подключать дополнительную библиотеку не требуется — jQuery подгружается вместе с Яндекс.Картами.



Скачать последнюю стабильную, и которая помоему ушла в архив, т.е. наконец все лаги отточились.

Как запретить редактировать посты, где есть комментарии

Иногда люди которые дрочили не один год, у которых не одна сотня постов, из-за чего-то обижаются. Батхер или трололо. Или может они из инета сваливают в реал, искать девочек и менять жизнь. Короче такая хуйня всегда происходит. Еще с времен форумов :) Сам когда-то злился и от обиды «вытирал все присутствие себя», лет 7 назад, на каком-то phpbb форуме :)))

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

Чтобы такой хуйни не было. То вот, решение, уже готовое под плагин. Скачать и активировать.

ограничение длинны топика

Длинна топика не может превышать 15000 симоволов. ©
Конечно сразу ответ, что нужно изменить параметр в config.php
$config['module']['topic']['max_length'] = 50000;  // на 50000 символов

Но это не поможет ;)

Открываем ActionTopic.class.php и находим блок
/**
                 * Проверяем есть ли содержание топика
                 */
                if (!func_check(getRequest('topic_text',null,'post'),'text',2,30000)) {
                        $this->Message_AddError($this->Lang_Get('topic_create_text_error'),$this->Lang_Get('error'));
                        $bOk=false;
                }

меняем на
/**
                 * Проверяем есть ли содержание топика
                 */
                if (!func_check(getRequest('topic_text',null,'post'),'text',2,Config::Get('module.topic.max_length'))) {
                        $this->Message_AddError($this->Lang_Get('topic_create_text_error'),$this->Lang_Get('error'));
                        $bOk=false;
                }

Делаем приветственное лс

Итак, добавляем в ActionRegistration.class.php
после действия, где создается персональный блог (строка 172 помоему)
public function SendWelcomeMessage(UserEntity_User $oUserTo,UserEntity_User $oUserFrom) {

$this->oViewerLocal->Assign('oUserTo',$oUserTo);
$this->oViewerLocal->Assign('oUserFrom',$oUserFrom);

$sBody=$this->oViewerLocal->Fetch("pm_reg.tpl"); 
$oTalk=new TalkEntity_Talk(); 
$oTalk->setUserId($oUserFrom->getId()); 
$oTalk->setTitle("Добро пожаловать!"); 
$oTalk->setText($sBody); 
$oTalk->setDate(date("Y-m-d H:i:s"));
$oTalk->setDateLast(date("Y-m-d H:i:s"));
$oTalk->setUserIp(func_getIp());
if ($oTalk=$this->Talk_AddTalk($oTalk)) {
$oTalkUser=new TalkEntity_TalkUser();
$oTalkUser->setTalkId($oTalk->getId());
$oTalkUser->setUserId($oUserTo->getId());
$oTalkUser->setDateLast(null);
$this->Talk_AddTalkUser($oTalkUser); 
}

}

и создаем соответсвующий notify.pm_reg.tpl в ВАШЕМ templates/skin/SKIN/
Привет!
Вы зарегистрировались на сайте <a href="{$DIR_WEB_ROOT}">123</a>!
У нас есть, это, это, а вот тут faq и т.д :)