cotonti.com : лень? или оптимизация? https://www.cotonti.com Последние сообщения в теме Cotonti en Mon, 06 Oct 2025 19:11:52 -0000 jcrush сб, 20 мар 2010 10:05:14 -0000 esclkm вт, 23 фев 2010 21:27:37 -0000 Trustmaster
Несколько замечаний:
  • prefix
  • кавычки используем одинарные, если нет макроподстановок в строке
  • экстраполя могут быть недоступны, перед foreach проверку
]]>
вт, 23 фев 2010 19:33:37 -0000
Dayver
# Sergeich : А как это скажется на быстродействии? Ведь нам придётся для любого модуля или плагина дёргать всё, что есть в движке.
ну в модулях оно и так все дергается даже если не используешь в шаблоне что то ... а в плагинах - так никто и не заставляет использовать такие функции .... нужно в плуге вытянуть аватар - пожалуйста вытягуй только его своим методом ... а вот если нужно вытянуть все поля дык вызывай такую функцию и все будет гуд(оптимальнее) .... ну по крайне мере я так понял предложенную идею]]>
вт, 23 фев 2010 03:34:05 -0000
esclkm а вот строчек порядочно сэкономит.
Dayver ты меня приавильно понял]]>
вт, 23 фев 2010 02:51:30 -0000
Sergeich вт, 23 фев 2010 00:44:07 -0000 Dayver
- перенести функцию sed_generate_usertags в модуль users и в дальнейшем глобально ее использовать (везде где нужна генерация инфы о пользователе ... другие модули и плагины).
- создать аналогичные функции для страниц и категорий с последующим их глобальным использованием по аналогии с sed_generate_usertags

так?

З.Ы. Кстати что там за параметр $noidtext в предшествующем функции пхп-доке он описан как
@param string $noidtext text if user_id = 0
а в функции он не используется.]]>
вт, 23 фев 2010 00:24:27 -0000
esclkm Суть в чем: у нас довольно большие участки кода имеют отношение к дублированию.
примеры:
list:
		"LIST_ROW_URL" => $pag['page_pageurl'],
		"LIST_ROW_ID" => $pag['page_id'],
		"LIST_ROW_CAT" => $pag['page_cat'],
		"LIST_ROW_KEY" => htmlspecialchars($pag['page_key']),
		"LIST_ROW_TITLE" => htmlspecialchars($pag['page_title']),
		"LIST_ROW_DESC" => $pag['page_desc'],
		"LIST_ROW_DESC_OR_TEXT" => sed_cutpost($pag['page_text'], 200, false),
		"LIST_ROW_AUTHOR" => htmlspecialchars($pag['page_author']),
		"LIST_ROW_OWNER" => sed_build_user($pag['page_ownerid'], htmlspecialchars($pag['user_name'])),
		"LIST_ROW_DATE" => @date($cfg['formatyearmonthday'], $pag['page_date'] + $usr['timezone'] * 3600),
		"LIST_ROW_FILEURL" => empty($pag['page_url']) ? '' : sed_url('page', 'id='.$pag['page_id'].'&a=dl'),
		"LIST_ROW_SIZE" => $pag['page_size'],
		"LIST_ROW_COUNT" => $pag['page_count'],
		"LIST_ROW_FILEICON" => $pag['page_fileicon'],
		"LIST_ROW_FILECOUNT" => $pag['page_filecount'],
		"LIST_ROW_JUMP" => sed_url('page', $page_urlp.'&a=dl'),
		"LIST_ROW_COMMENTS" => $pag['page_comments'],
		"LIST_ROW_RATINGS" => $list_ratings,
		"LIST_ROW_ADMIN" => $pag['admin'],
		"LIST_ROW_ODDEVEN" => sed_build_oddeven($jj),
news
			"PAGE_ROW_URL" => $pag['page_pageurl'],
			"PAGE_ROW_ID" => $pag['page_id'],
			"PAGE_ROW_TITLE" => $pag['page_fulltitle'],
			"PAGE_ROW_SHORTTITLE" => htmlspecialchars($pag['page_title']),
			"PAGE_ROW_CAT" => $pag['page_cat'],
			"PAGE_ROW_CATTITLE" => htmlspecialchars($sed_cat[$pag['page_cat']]['title']),
			"PAGE_ROW_CATPATH" => $catpath,
			"PAGE_ROW_CATPATH_SHORT" => "<a href=https://www.cotonti.com/\"".sed_url('list', 'c='.$pag['page_cat'])."\">".htmlspecialchars($sed_cat[$pag['page_cat']]['title'])."</a>",
			"PAGE_ROW_NEWSPATH" => "<a href=https://www.cotonti.com/\"".sed_url('index', 'c='.$pag['page_cat'])."\">".htmlspecialchars($sed_cat[$row['page_cat']]['title'])."</a>",
			"PAGE_ROW_CATDESC" => htmlspecialchars($sed_cat[$pag['page_cat']]['desc']),
			"PAGE_ROW_CATICON" => $sed_cat[$pag['page_cat']]['icon'],
			"PAGE_ROW_KEY" => htmlspecialchars($pag['page_key']),
			"PAGE_ROW_DESC" => htmlspecialchars($pag['page_desc']),
			"PAGE_ROW_MORE" => ($pag_more) ? "<span class='readmore'><a href='https://www.cotonti.com/".$pag['page_pageurl']."'>{$L['ReadMore']}</a></span>" : "",
			"PAGE_ROW_AUTHOR" => htmlspecialchars($pag['page_author']),
			"PAGE_ROW_OWNER" => sed_build_user($pag['page_ownerid'], htmlspecialchars($pag['user_name'])),
			"PAGE_ROW_AVATAR" => sed_build_userimage($pag['user_avatar'], 'avatar'),
			"PAGE_ROW_DATE" => @date($cfg['formatyearmonthday'], $pag['page_date'] + $usr['timezone'] * 3600),
			"PAGE_ROW_BEGIN" => @date($cfg['formatyearmonthday'], $pag['page_begin'] + $usr['timezone'] * 3600),
			"PAGE_ROW_EXPIRE" => @date($cfg['formatyearmonthday'], $pag['page_expire'] + $usr['timezone'] * 3600),
			"PAGE_ROW_FILEURL" => $pag['page_url'],
			"PAGE_ROW_SIZE" => $pag['page_size'],
			"PAGE_ROW_COUNT" => $pag['page_count'],
			"PAGE_ROW_FILECOUNT" => $pag['page_filecount'],
			"PAGE_ROW_COMMENTS" => $pag['page_comments'],
			"PAGE_ROW_RATINGS" => $pag['page_ratings'],
			"PAGE_ROW_ODDEVEN" => sed_build_oddeven($jj),
			"PAGE_ROW_NUM" => $jj,
recentitems
			"PAGE_ROW_URL" => $pag['page_pageurl'],
			"PAGE_ROW_ID" => $pag['page_id'],
			"PAGE_ROW_TITLE" => $pag['page_fulltitle'],
			"PAGE_ROW_SHORTTITLE" => htmlspecialchars($pag['page_title']),
			"PAGE_ROW_CAT" => $pag['page_cat'],
			"PAGE_ROW_CATTITLE" => htmlspecialchars($sed_cat[$pag['page_cat']]['title']),
			"PAGE_ROW_CATPATH" => $catpath,
			"PAGE_ROW_CATPATH_SHORT" => "<a href=https://www.cotonti.com/\"".sed_url('list', 'c='.$pag['page_cat'])."\">".htmlspecialchars($sed_cat[$pag['page_cat']]['title'])."</a>",
			"PAGE_ROW_CATDESC" => htmlspecialchars($sed_cat[$pag['page_cat']]['desc']),
			"PAGE_ROW_CATICON" => $sed_cat[$pag['page_cat']]['icon'],
			"PAGE_ROW_KEY" => htmlspecialchars($pag['page_key']),
			"PAGE_ROW_DESC" => htmlspecialchars($pag['page_desc']),
			"PAGE_ROW_MORE" => ($pag_more) ? "<span class='readmore'><a href='https://www.cotonti.com/".$pag['page_pageurl']."'>{$L['ReadMore']}</a></span>" : "",
			"PAGE_ROW_AUTHOR" => htmlspecialchars($pag['page_author']),
			"PAGE_ROW_OWNER" => sed_build_user($pag['page_ownerid'], htmlspecialchars($pag['user_name'])),
			"PAGE_ROW_AVATAR" => sed_build_userimage($pag['user_avatar'], 'avatar'),
			"PAGE_ROW_DATE" => @date($cfg['formatyearmonthday'], $pag['page_date'] + $usr['timezone'] * 3600),
			"PAGE_ROW_FILEURL" => $pag['page_url'],
			"PAGE_ROW_SIZE" => $pag['page_size'],
			"PAGE_ROW_COUNT" => $pag['page_count'],
			"PAGE_ROW_FILECOUNT" => $pag['page_filecount'],
			"PAGE_ROW_COMMENTS" => $pag['page_comments'],
			"PAGE_ROW_RATINGS" => $pag['page_ratings'],
			"PAGE_ROW_ODDEVEN" => sed_build_oddeven($jj),
			"PAGE_ROW_NUM" => $jj,
различны только префиксы - середина одинаковая.
Все те поля которые касаются пользователей - они точно также дублируются бесконечное число раз.
возможно выход есть: {PHP.блаблабла} но этот способ не форматирует даты, не выводит сокращенные тексты и тд. Это не хорошо. Да и комплексный тег - тяжело воспринимать

в pm введена специальная функция
function sed_generate_usertags($ruser_array, $tag_preffix, $noidtext='', $allgroups = false)
{
	if ($ruser_array['user_id'] > 0)
	{
		global $sed_extrafields, $cfg, $L;
		$return_array = array(
				$tag_preffix."_LINK" => sed_build_user($ruser_array['user_id'], htmlspecialchars($ruser_array['user_name'])),
				$tag_preffix."_ID" => $ruser_array['user_id'],
				$tag_preffix."_PM" => sed_build_pm($ruser_array['user_id']),
				$tag_preffix."_NAME" => htmlspecialchars($ruser_array['user_name']),
				$tag_preffix."_PASSWORD" => $ruser_array['user_password'],
				$tag_preffix."_MAINGRP" => sed_build_group($ruser_array['user_maingrp']),
				$tag_preffix."_MAINGRPID" => $ruser_array['user_maingrp'],
				$tag_preffix."_MAINGRPSTARS" => sed_build_stars($sed_groups[$ruser_array['user_maingrp']]['level']),
				$tag_preffix."_MAINGRPICON" => sed_build_userimage($sed_groups[$ruser_array['user_maingrp']]['icon']),
				$tag_preffix."_COUNTRY" => sed_build_country($ruser_array['user_country']),
				$tag_preffix."_COUNTRYFLAG" => sed_build_flag($ruser_array['user_country']),
				$tag_preffix."_TEXT" => $cfg['parsebbcodeusertext'] ? sed_bbcode_parse($ruser_array['user_text'], true) : $ruser_array['user_text'],
				$tag_preffix."_AVATAR" => sed_build_userimage($ruser_array['user_avatar'], 'avatar'),
				$tag_preffix."_PHOTO" => sed_build_userimage($ruser_array['user_photo'], 'photo'),
				$tag_preffix."_SIGNATURE" => sed_build_userimage($ruser_array['user_signature'], 'sig'),
				$tag_preffix."_EMAIL" => sed_build_email($ruser_array['user_email'], $ruser_array['user_hideemail']),
				$tag_preffix."_SKIN" => $ruser_array['user_skin'],
				$tag_preffix."_WEBSITE" => $ruser_array['user_website'],
				$tag_preffix."_JOURNAL" => $ruser_array['user_journal'],
				$tag_preffix."_ICQ" => sed_build_icq($ruser_array['user_icq']),
				$tag_preffix."_MSN" => sed_build_msn($ruser_array['user_msn']),
				$tag_preffix."_IRC" => htmlspecialchars($ruser_array['user_irc']),
				$tag_preffix."_GENDER" => $ruser_array['user_gender'],
				$tag_preffix."_BIRTHDATE" => $ruser_array['user_birthdate'],
				$tag_preffix."_AGE" => $ruser_array['user_age'],
				$tag_preffix."_TIMEZONE" => sed_build_timezone($ruser_array['user_timezone']),
				$tag_preffix."_LOCATION" => htmlspecialchars($ruser_array['user_location']),
				$tag_preffix."_OCCUPATION" => htmlspecialchars($ruser_array['user_occupation']),
				$tag_preffix."_REGDATE" => @date($cfg['dateformat'], $ruser_array['user_regdate'] + $usr['timezone'] * 3600)." ".$usr['timetext'],
				$tag_preffix."_LASTLOG" => @date($cfg['dateformat'], $ruser_array['user_lastlog'] + $usr['timezone'] * 3600)." ".$usr['timetext'],
				$tag_preffix."_LOGCOUNT" => $ruser_array['user_logcount'],
				$tag_preffix."_POSTCOUNT" => $ruser_array['user_postcount'],
				$tag_preffix."_LASTIP" => $ruser_array['user_lastip']
		);

		if ($allgroups)
		{
			$return_array[$tag_preffix."_GROUPS"] = sed_build_groupsms($ruser_array['user_id'], FALSE, $ruser_array['user_maingrp']);
		}
		// Extra fields
		foreach($sed_extrafields['users'] as $i => $row)
		{
			$return_array[$tag_preffix."_".strtoupper($row['field_name'])] = sed_build_extrafields_data('user', $row['field_type'], $row['field_name'], $ruser_array['user_'.$row['field_name']]);
			$return_array[$tag_preffix."_".strtoupper($row['field_name']).'_TITLE'] = isset($L['user_'.$row['field_name'].'_title']) ? $L['user_'.$row['field_name'].'_title'] : $row['field_description'];
		}
	}
	else
	{
		$return_array[$tag_preffix."_LINK"]=$L['Deleted'];
		$return_array[$tag_preffix."_NAME"]=$L['Deleted'];
	}
	return $return_array;
}

ваше мнение.

Добавлено 20 Минут спустя:

кстати, еще : у нас довольно много таких плагинов, типа userpages или recentitems в нестандартной области и тд. и когда весь плагин 1-2 стркои (ну запрос к базе) и еще 50 таких строк - както не айс.]]>
пн, 22 фев 2010 20:00:40 -0000