JS скрипты из ../classes/lib не реагируют на DIR_STATIC_ROOT

В конфиге можно указать для статики другой домен, но эта настройка не влияет на скрипты лежащие в classes/lib, по всей видимости и на uploads тоже.

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

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

Если будет спрос на это дело, то и предложение смогу организовать. Что-то аля сток-центр шаблонов для ls. Либо же проще работать по отдельному бюджету отдельно взятого проекта.

Префикс "Ls" у классов

Заметил, что в версии 0.3 появился префикс Ls у некоторых классов.

Это очень хорошо, т.к. например, в своем проекте я создал некое подобие API для интеграции базы LiveStreet с авторизацией в MediaWiki. В версии 0.2 мне приходилось задавать такой префикс для классов User, Block и Database. В 0.3 меня приятно порадовало наличие префикса у двух из них, однако класс Block по прежнему конфликтует с аналогичным у MediaWiki.

Мне кажется есть смысл добавить префиксы ко всем классам (а в идеале и к константам и т.п.).

Роли

Предлагаю изменить немного работу с ролями для большей гибкости. Очень хороший вариант использовал gran в модуле компании. Вместо нескольких полей в базе типа:

`is_moderator`,
`is_administrator`,


Он сделал одно общее поле:

`company_user_role`


Это позволяет свободно добавлять любое количество дополнительных ролей.

Заметки о меню

Занимаясь переносом проекта с 0.2 на пред-0.3, буду публиковать некоторые заметки, которые, надеюсь, помогут тем, кто использует в проекте собственный дизайн. Не публикую сразу в Wiki, так как в процессе работы заниматься серьезной формализацией не очень удобно. Но вполне вероятно, что потом и до Wiki дойдет дело.

Итак, первая заметка будет об организации на сайте навигации.
Читать дальше →

Предложение: Внутреняя почта.

Только что создал сообщение внутреей почты и увидел, что оно не отображает адресата.
Написал сообщение — нажал отправить — всё вижу, но не вижу кому отправил. Вначале подумал что я отправил его самому себе, но потом вышел в список внутренних сообщений и только затем увидел юзера кому отправил, затем зашел назад и убедился что там не написан пользователь.
Думаю было бы удобно написать пользователя в самом тексте письма, а то ведь получается надо ждать пока он ответит.

Статистика

Как можно помимо пользователей сайта, например тут
livestreet.ru/people/online/

выводить еще скрытых гостей сайта — Сейчас на сайте ГОСТЕЙ: X человек.

Было бы справедливее по отношению к зарегистрированным пользователям.
Или можно вставить прямо внутрь статистики, между рядами пользователей еще и гостей, просто вставляю «Гость X»!

Как вы на это смотрите?

? каталог содержаший названия топиков

Вопрос!

Существует ли, или есть возможность каталогизации названий топиков (так называемое «содержание блога»)?
Т.е., заходишь в топик, а в колонке с правой стороны установить «содержание блога» (каталог содержаший названия топиков), (выставленное либо по алфавиту либо по дате публикования) с активными ссылками на топики.

Модернизация функции рейсайза картинок

Как понадобилось изменять размер картинок столкнулся с тем, что стандартная функция func_img_resize изменяла размер только когда указана $iWidthDest и то как-то «косячно» на мой взгляд… в общем решил я функцию переделать… сделал независимый расайз по высоте и ширине теперь если надо картинку вписать в прямоугольник то просто задаёшь $iWidthDest и $iHeightDest… а ели просто надо подогнать по высоте или ширине задаёшь только то, что надо! всё просто и работает!!! =)
может кому пригодиться…
/**
 * Рейсайзинг картинок
 *
 * @param unknown_type $sFileSrc
 * @param unknown_type $sDirDest
 * @param unknown_type $sFileDest
 * @param unknown_type $iWidthMax
 * @param unknown_type $iHeightMax
 * @param unknown_type $iWidthDest
 * @param unknown_type $iHeightDest
 * @param unknown_type $bForcedMinSize
 * @return unknown
 */
function func_img_resize($sFileSrc,$sDirDest,$sFileDest,$iWidthMax,$iHeightMax,$iWidthDest=null,$iHeightDest=null,$bForcedMinSize=true) {
	if (!($aSize=getimagesize($sFileSrc))) {		
		return false;
	}	
	$img_src=false;
	switch ($aSize['mime']) {
		case 'image/png':
			$img_src=imagecreatefrompng($sFileSrc);
			$sFileDest.='.png';
			break;
		case 'image/gif':
			$img_src=imagecreatefromgif($sFileSrc);
			$sFileDest.='.gif';
			break;
		case 'image/jpeg':
			$img_src=imagecreatefromjpeg($sFileSrc);
			$sFileDest.='.jpg';
			break;
		default:
			return false;
			break;
	}
	if (!$img_src) {		
		return false;
	}
	$iWidthNew=$aSize[0];
	$iHeightNew=$aSize[1];
	if (($iWidthNew>$iWidthMax) or ($iHeightNew>$iHeightMax)) {
		return false;
	}
	if ($iWidthDest) {
		if (!$bForcedMinSize and ($iWidthDest>$iWidthNew)) {
			$iWidthDest=$iWidthNew;
		}
		$iSizeRelation=$iWidthDest/$iWidthNew;	
		$iWidthNew=$iWidthDest;		
		$iHeightNew=round($iSizeRelation*$iHeightNew);
	}
	if ($iHeightDest) {
		if (!$bForcedMinSize and ($iHeightDest>$iHeightNew)) {
			$iHeightDest=$iHeightNew;
		}
		$iSizeRelation=$iHeightDest/$iHeightNew;
		$iHeightNew=$iHeightDest;			
		$iWidthNew=round($iSizeRelation*$iWidthNew);
	}
	
	
	$sFileFullPath=DIR_SERVER_ROOT.'/'.$sDirDest.'/'.$sFileDest;
	@func_mkdir(DIR_SERVER_ROOT,$sDirDest);
	if (($iWidthDest and $iWidthDest!=$aSize[0])or($iHeightDest and $iHeightDest!=$aSize[1])) {
		$img_dest=imagecreatetruecolor($iWidthNew,$iHeightNew);		
		imagesavealpha($img_dest,true);
		imagealphablending($img_dest,false);
		if (imagecopyresampled($img_dest,$img_src,0,0,0,0,$iWidthNew,$iHeightNew,$aSize[0],$aSize[1])) {				
			imagedestroy($img_src);
			switch ($aSize['mime']) {
				case 'image/png':
					if (imagepng($img_dest,$sFileFullPath)) {
						chmod($sFileFullPath,0666);
						return $sFileDest;
					}
					break;
				case 'image/gif':
					if (imagegif($img_dest,$sFileFullPath)) {
						chmod($sFileFullPath,0666);
						return $sFileDest;
					}
					break;
				case 'image/jpeg':
					if (imagejpeg($img_dest,$sFileFullPath)) {
						chmod($sFileFullPath,0666);
						return $sFileDest;
					}
					break;
			}
		}
	} else {
		if (copy($sFileSrc,$sFileFullPath)) {
			return $sFileDest;
		}
	}
	return false;
}