Jabber'изация: Отправка уведомлений.

После добавления Jabber'а в профиль, на него можно слать уведомления о новых комментариях/постах/письмах. На мой взгляд это значительно удобнее почты.

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

1. Берем необходимые файлики тут

2. Копируем каталоги /classes/, /config/ и /template/languages/ соответственно в каталоги classes/ config/ и languages/ в дереве, где установлен LiveStreet.
Потребуется замена файла Notify.class.php. если вы его не меняли (другими хаками) то можно не волноваться.

3. Копируем файлы из каталога templates/skin/new/notify в соответствующий каталог используемой вами темы.

Выполняем 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>


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

4 комментария

avatar
круто! спасибо
avatar
Если захочу добавить что-то похожее на jabber — статья очень понадобится. Спасибо (+1)
avatar
bug в скачиваемых файлах:
languages\ — в публичной версии папка называется language
avatar
работает отлично, спасибо ТС
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.