для тех кто в транке
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), "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=\"".sed_url('list', 'c='.$pag['page_cat'])."\">".htmlspecialchars($sed_cat[$pag['page_cat']]['title'])."</a>",
"PAGE_ROW_NEWSPATH" => "<a href=\"".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='".$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, "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=\"".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='".$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 таких строк - както не айс. littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
|
This post was edited by esclkm (2010-02-22 20:21, 14 years ago) |
Dayver |
|
---|---|
Правильно ли я понял предложение? :
- перенести функцию sed_generate_usertags в модуль users и в дальнейшем глобально ее использовать (везде где нужна генерация инфы о пользователе ... другие модули и плагины). - создать аналогичные функции для страниц и категорий с последующим их глобальным использованием по аналогии с sed_generate_usertags так? З.Ы. Кстати что там за параметр $noidtext в предшествующем функции пхп-доке он описан как @param string $noidtext text if user_id = 0 Pavlo Tkachenko aka Dayver
|
Sergeich |
|
---|---|
А как это скажется на быстродействии? Ведь нам придётся для любого модуля или плагина дёргать всё, что есть в движке.
|
esclkm |
|
---|---|
а что будет с быстродействием ? имхо ничего.
а вот строчек порядочно сэкономит. Dayver ты меня приавильно понял littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
Dayver |
|
---|---|
думаю, да - лень но и оптимизация
# Sergeich : А как это скажется на быстродействии? Ведь нам придётся для любого модуля или плагина дёргать всё, что есть в движке.ну в модулях оно и так все дергается даже если не используешь в шаблоне что то ... а в плагинах - так никто и не заставляет использовать такие функции .... нужно в плуге вытянуть аватар - пожалуйста вытягуй только его своим методом ... а вот если нужно вытянуть все поля дык вызывай такую функцию и все будет гуд(оптимальнее) .... ну по крайне мере я так понял предложенную идею Pavlo Tkachenko aka Dayver
|
Trustmaster |
|
---|---|
Да, однозначно, с практически полным дублированием кода нужно бороться. Производительность при этом практически не страдает, но появляется явная зависимость от другого модуля (которая, впрочем, в неявном виде существовала и до того, что хуже).
Несколько замечаний:
May the Source be with you!
|
|
This post was edited by Trustmaster (2010-02-23 19:44, 14 years ago) |
esclkm |
|
---|---|
Траст, а у нас что уже где-либо отлючаются экстраполя??????
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
jcrush |
|
---|---|
Согласен, кода много лишнего, обеими руками за оптимизацию да и плагины проще писать будет...
SEO блог: http://blog.stfw.ru/
|