2012-03-23 13:59:55 +02:00
|
|
|
|
<?php
|
|
|
|
|
/*-------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* LiveStreet Engine Social Networking
|
|
|
|
|
* Copyright © 2008 Mzhelskiy Maxim
|
|
|
|
|
*
|
|
|
|
|
*--------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Official site: www.livestreet.ru
|
|
|
|
|
* Contact e-mail: rus.engine@gmail.com
|
|
|
|
|
*
|
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
|
*
|
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Модуль Tools - различные вспомогательные методы
|
|
|
|
|
*
|
2012-06-24 16:32:29 +03:00
|
|
|
|
* @package modules.tools
|
|
|
|
|
* @since 1.0
|
2012-03-23 13:59:55 +02:00
|
|
|
|
*/
|
|
|
|
|
class ModuleTools extends Module {
|
|
|
|
|
/**
|
|
|
|
|
* Инициализация
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public function Init() {
|
2012-06-24 16:32:29 +03:00
|
|
|
|
|
2012-03-23 13:59:55 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Строит логарифмическое облако - расчитывает значение size в зависимости от count
|
|
|
|
|
* У объектов в коллекции обязательно должны быть методы getCount() и setSize()
|
|
|
|
|
*
|
2012-06-24 16:32:29 +03:00
|
|
|
|
* @param aray $aCollection Список тегов
|
|
|
|
|
* @param int $iMinSize Минимальный размер
|
|
|
|
|
* @param int $iMaxSize Максимальный размер
|
|
|
|
|
* @return array
|
2012-03-23 13:59:55 +02:00
|
|
|
|
*/
|
|
|
|
|
public function MakeCloud($aCollection,$iMinSize=1,$iMaxSize=10) {
|
|
|
|
|
if (count($aCollection)) {
|
|
|
|
|
$iSizeRange=$iMaxSize-$iMinSize;
|
|
|
|
|
|
|
|
|
|
$iMin=10000;
|
|
|
|
|
$iMax=0;
|
|
|
|
|
foreach($aCollection as $oObject) {
|
|
|
|
|
if ($iMax<$oObject->getCount()) {
|
|
|
|
|
$iMax=$oObject->getCount();
|
|
|
|
|
}
|
|
|
|
|
if ($iMin>$oObject->getCount()) {
|
|
|
|
|
$iMin=$oObject->getCount();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$iMinCount=log($iMin+1);
|
|
|
|
|
$iMaxCount=log($iMax+1);
|
|
|
|
|
$iCountRange=$iMaxCount-$iMinCount;
|
|
|
|
|
if ($iCountRange==0) {
|
|
|
|
|
$iCountRange=1;
|
|
|
|
|
}
|
|
|
|
|
foreach($aCollection as $oObject) {
|
|
|
|
|
$iTagSize=$iMinSize+(log($oObject->getCount()+1)-$iMinCount)*($iSizeRange/$iCountRange);
|
|
|
|
|
$oObject->setSize(round($iTagSize));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $aCollection;
|
|
|
|
|
}
|
2013-01-21 12:48:59 +02:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Преобразует спец символы в html последовательнось, поведение аналогично htmlspecialchars, кроме преобразования амперсанта "&"
|
|
|
|
|
*
|
|
|
|
|
* @param string $sText
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
public function Urlspecialchars($sText) {
|
2014-02-02 05:57:13 +02:00
|
|
|
|
return func_urlspecialchars($sText);
|
2013-01-21 12:48:59 +02:00
|
|
|
|
}
|
2013-08-09 08:52:38 +03:00
|
|
|
|
/**
|
|
|
|
|
* Обработка тега ls в тексте
|
|
|
|
|
* <pre>
|
|
|
|
|
* <ls user="admin" />
|
|
|
|
|
* </pre>
|
|
|
|
|
*
|
|
|
|
|
* @param string $sTag Тег на ктором сработал колбэк
|
|
|
|
|
* @param array $aParams Список параметров тега
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
public function CallbackParserTagLs($sTag,$aParams) {
|
|
|
|
|
$sText='';
|
|
|
|
|
if (isset($aParams['user'])) {
|
|
|
|
|
if ($oUser=$this->User_getUserByLogin($aParams['user'])) {
|
|
|
|
|
$sText.="<a href=\"{$oUser->getUserWebPath()}\" class=\"ls-user\">{$oUser->getLogin()}</a> ";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $sText;
|
|
|
|
|
}
|
2012-03-23 13:59:55 +02:00
|
|
|
|
}
|
|
|
|
|
?>
|