0.00
Рейтинг
0.49
Сила

Статус онлайн в профиле (и не только) [реализация]




Спасибо ort и PSNet

Загорелся идеей вывести в профиль статус онлайн/оффлайн для пользователей. Понял, что по сути можно сделать напрямую в шаблоне примерно такой схемой
{если «текущее время в секундах» — «дата последнего визита в секундах» < 900 секунд} онлайн {иначе} оффлайн {/если}

Под катом инструкция

Дополнительная фотография в профиле

Пробовал вставить дополнительную фотографию в профиле по принципу этой статьи livestreet.ru/blog/1964.html. Не получилось, выдает ошибки. Мои действия:

1) Добавил поле в mysql в таблицу prefix_user, после foto назвал foto2. параметры прописал эдентичные.
2) В classes/actions/ActionSettings.class.php добавил после:

/**
* Загрузка фото, делаем ресайзы
*/			
if (isset($_FILES['foto']) and is_uploaded_file($_FILES['foto']['tmp_name'])) {				
if ($sFileFoto=$this->User_UploadFoto($_FILES['foto'],$this->oUserCurrent)) {	
$this->oUserCurrent->setProfileFoto($sFileFoto);			
} else {
$bError=true;
$this->Message_AddError($this->Lang_Get('settings_profile_foto_error'),$this->Lang_Get('error'));
}
}
/**
 * Удалить фото
*/
if (isset($_REQUEST['foto_delete'])) {
$this->User_DeleteFoto($this->oUserCurrent);
$this->oUserCurrent->setProfileFoto(null);
}

добавил вот это

/**
 * Загрузка фото2, делаем ресайзы
*/			
if (isset($_FILES['foto2']) and is_uploaded_file($_FILES['foto2']['tmp_name'])) {				
if ($sFileFoto2=$this->User_UploadFoto2($_FILES['foto2'],$this->oUserCurrent)) {	
$this->oUserCurrent->setProfileFoto2($sFileFoto2);			
} else {
$bError=true;
$this->Message_AddError($this->Lang_Get('settings_profile_foto_error'),$this->Lang_Get('error'));
}
}
/**
 * Удалить фото
 */
if (isset($_REQUEST['foto2_delete'])) {
$this->User_DeleteFoto2($this->oUserCurrent);
$this->oUserCurrent->setProfileFoto2(null);
}

3) В classes/modules/user/entity/User.entity.class.php после:

    public function getProfileFoto() {
        return $this->_aData['user_profile_foto'];
    }  

добавил

	    public function getProfileFoto2() {
        return $this->_aData['user_profile_foto2'];
    } 

и после

    public function setProfileFoto($data) {
    	$this->_aData['user_profile_foto']=$data;
    }  

добавил

	    public function setProfileFoto2($data) {
    	$this->_aData['user_profile_foto2']=$data;
    }

4) В classes/modules/user/mapper/User.mapper.class.php после

user_profile_foto = ? ,	

добавил

user_profile_foto2 = ? ,	

и после

$oUser->getProfileFoto(),

добавил

$oUser->getProfileFoto(),

5) В templates/skin/тема/actions/ActionSettings/profile.tpl после:

				{if $oUserCurrent->getProfileFoto()}
					<img src="{$oUserCurrent->getProfileFoto()}" border="0">					
					<input type="checkbox" id="foto_delete" name="foto_delete" value="on"> — <label for="foto_delete"><span class="form">{$aLang.settings_profile_foto_delete}</span></label><br />
				{/if}
				<p><label for="foto">{$aLang.settings_profile_foto}:</label><br /><input type="file" id="foto" name="foto"/></p>

добавил:

				{if $oUserCurrent->getProfileFoto2()}
					<img src="{$oUserCurrent->getProfileFoto2()}" border="0">					
					<input type="checkbox" id="foto2_delete" name="foto2_delete" value="on"> — <label for="foto2_delete"><span class="form">{$aLang.settings_profile_foto_delete}</span></label>
					<br />
				{/if}
				<p><label for="foto2">{$aLang.settings_profile_foto2}:</label><br /><input type="file" id="foto2" name="foto2"/></p>

При попытках загрузить фото и фото2 выдает множество ошибок, а если в ActionSettings заменить это

if ($sFileFoto2=$this->User_UploadFoto2($_FILES['foto2'],$this->oUserCurrent)) 

на это

if ($sFileFoto2=$this->User_UploadFoto($_FILES['foto2'],$this->oUserCurrent)) 

загрузится только foto2. В mysql в foto прописваются пути к картинкам которых просто нет в папке upload. Кто может помочь, 2й день работаю над этим. Над сайтом уже почти месяц осталось только это сделать. Жду ответов гуру)

Плагин «Картинка-анонс (аватар) для топика»

Своими усилиями реализовал плагин по мотивам хака: livestreet.ru/blog/tips_and_tricks/747.html

Плагин даёт возможность добавлять к топику картинку-анонс (аватарку) с возможностью её последующего вывода практически в любом месте шаблона (назначений может быть множество: от украшательства списка топиков, до организации слайдера с последними топиками).
Читать дальше →

Сила и рейтинг в LS. Помогите разобаться!!!

Ребят пару вопросов…
1)Не могу разобраться за что начисляется рейтинг, а за что сила… и что за что отвечает. Подскажите если не сложно.
2)Я заметил что на LS.ru новечок не может голосовать за топики и за юзеров, а на LS 3.1 по стандарту он изначально может это делать. Каким образом это можно настроить?
3)К стати, голосование за коментарий что-то дает… или это просто согласие с его автором и ни что больше?

Зарние благодарю за помощь.

Личные сообщения как инбоксы

Раньше я не задумывался о личных сообщениях на хабре и LS.

Ну стандартные сообщения как и во всех 100 других социальных сетях…

А тут я вдруг понял что этого своего рода инбоксы.
Мы создаем топик(сообщение), выбираем группу людей, с кем нужно обсудить и начинаем обсуждения…

Господа, как вы думаете, можно развить идею личных сообщений в ЛС?
Что можно из нее сделать, как улучшить (ну помимо подсветки новых комментариев)

Доработка RSS потока

В RSS до cut

Почти сразу, как поставил движок, передо мной встал вопрос: как отдавать в rss долько до кут? Не хотелось мне отдавать полные топики в ленту, т.к. материалы можно почитать на сайте, а школьникам лентяям отрезать возможность что-то полезное оттуда грабить.

Теперь это решение кажется уже довольно простым. Достаточно в экшене ActionRss.class.php в одной из функций (например RssGood) изменить одну строку на:

$item['description']=$oTopic->getTextShort();


Последние материалы блога в rss

Тут же вылезла проблема, что прочитав анонс пользователю ну совершенно некуда кликнуть. Что согласитесь — форменный бардак. Решил, что нужны «читать далее» и «последние посты топика». Теперь в rss канале футер анонса выглядит так:



Тут порядок такой. В том же файле в той же функции вставлем после:

foreach ($aTopics as $oTopic){


Этот код:

$aFooter="";
$aMyBlogId=$oTopic->getBlogId();
$aMyResult=$this->Topic_GetTopicsByBlogGood($this->Blog_GetBlogById($aMyBlogId),0,1,3);
$aMyTopics=$aMyResult['collection'];
foreach ($aMyTopics as $oMyTopic){
  $aFooter=$aFooter.'<li><a href='.$oTopic->getUrl().'>'.$oMyTopic->getTitle().'</a></li>';
}


А ту переменную, что мы уже меняли выше, заменяем на:

$item['description']=$oTopic->getTextShort().'

<a href='.$oTopic->getUrl().'>читать полностью</a>

<b>Последнее из блога:</b> <a href='.$oTopic->getBlogUrlFull().'>'.$oTopic->getBlogTitle().'</a><br /><br /><ul>'.$aFooter.'</ul>';


Вот собственно и все. У кого есть мысли по поводу развития темы дополнений в rss, пишите — обсудим.

Рабочий пример как обычно можно увидеть на TechFuture RSS — в данном случае в rss хороших топиков.

UPD: Исправлены ошибки, дополнен код.