Добрый день.
Прежде всего, хотелось бы поблагодарить w999d за инвайт :) В ответ захотелось сделать для хабрачан что-то приятное :)
Когда я писал свой первый пост на Хабре в песочницу, я обратил внимание, что Хабр по какой-то загадочной для меня причине не поддерживает тег выделения синтаксиса для постов. Когда пишешь какую-нибудь статью по программированию, исходник нужно форматировать обязательно, иначе его просто читать никто не будет. Тогда я как-то обошелся каким-то сторонним форматтером, работа которого для PHP кода меня не сильно устроила. Но в мою голову запала мысль сделать нормальный форматтер для хабрачан. Впрочем, даже если окажется, что я изобрел велосипед, время, которое я провел, разбираясь с исходником форматтера, точно не потрачено зря.
Итак, представляю самую что ни на есть альфа версию HabraSyntax форматтера: http://habrasyntax.fractalizer.ru
После форматирования, получается примерно следующее:
Поскольку, код только написан, замечания и комментарий приветствуются.
Поддерживается достаточное количество языков программирования, так что… :) Приятной работы.
Прежде всего, хотелось бы поблагодарить w999d за инвайт :) В ответ захотелось сделать для хабрачан что-то приятное :)
Когда я писал свой первый пост на Хабре в песочницу, я обратил внимание, что Хабр по какой-то загадочной для меня причине не поддерживает тег выделения синтаксиса для постов. Когда пишешь какую-нибудь статью по программированию, исходник нужно форматировать обязательно, иначе его просто читать никто не будет. Тогда я как-то обошелся каким-то сторонним форматтером, работа которого для PHP кода меня не сильно устроила. Но в мою голову запала мысль сделать нормальный форматтер для хабрачан. Впрочем, даже если окажется, что я изобрел велосипед, время, которое я провел, разбираясь с исходником форматтера, точно не потрачено зря.
Итак, представляю самую что ни на есть альфа версию HabraSyntax форматтера: http://habrasyntax.fractalizer.ru
После форматирования, получается примерно следующее:
<?php
/*======================================================================*\
|| #################################################################### ||
|| # vBulletin 3.7.3
|| # ---------------------------------------------------------------- # ||
|| # Copyright ©2000-2008 Jelsoft Enterprises Ltd. All Rights Reserved. ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # www.vbulletin.com | www.vbulletin.com/license.html # ||
|| #################################################################### ||
\*======================================================================*/
// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
// #################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT', 'ajax');
define('CSRF_PROTECTION', true);
define('LOCATION_BYPASS', 1);
define('NOPMPOPUP', 1);
// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array('posting');
switch ($_POST['do'])
{
case 'fetchuserfield':
case 'saveuserfield':
$phrasegroups[] = 'cprofilefield';
$phrasegroups[] = 'user';
}
// get special data templates from the datastore
$specialtemplates = array('bbcodecache');
// pre-cache templates used by all actions
$globaltemplates = array();
// pre-cache templates used by specific actions
$actiontemplates = array(
'fetchuserfield' => array(
'memberinfo_customfield_edit',
'userfield_checkbox_option',
'userfield_optional_input',
'userfield_radio',
'userfield_radio_option',
'userfield_select',
'userfield_select_option',
'userfield_select_multiple',
'userfield_textarea',
'userfield_textbox',
)
);
$_POST['ajax'] = 1;
// ######################### REQUIRE BACK-END ############################
require_once('./global.php');
require_once(DIR . '/includes/class_xml.php');
// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################
($hook = vBulletinHook::fetch_hook('ajax_start')) ? eval($hook) : false;
// #############################################################################
// user name search
if ($_POST['do'] == 'usersearch')
{
$vbulletin->input->clean_array_gpc('p', array('fragment' => TYPE_STR));
$vbulletin->GPC['fragment'] = convert_urlencoded_unicode($vbulletin->GPC['fragment']);
if ($vbulletin->GPC['fragment'] != '' AND strlen($vbulletin->GPC['fragment']) >= 3)
{
$fragment = htmlspecialchars_uni($vbulletin->GPC['fragment']);
}
else
{
$fragment = '';
}
$xml = new vB_AJAX_XML_Builder($vbulletin, 'text/xml');
$xml->add_group('users');
if ($fragment != '')
{
$users = $db->query_read_slave("
SELECT userid, username FROM " . TABLE_PREFIX . "user
WHERE username LIKE('" . $db->escape_string_like($fragment) . "%')
ORDER BY username
LIMIT 15
");
while ($user = $db->fetch_array($users))
{
$xml->add_tag('user', $user['username'], array('userid' => $user['userid']));
}
}
$xml->close_group();
$xml->print_xml();
}
Этот исходный код отформатирован с помощью FractalizeR's HabraSyntax Source Code Highlighter.
Поскольку, код только написан, замечания и комментарий приветствуются.
Поддерживается достаточное количество языков программирования, так что… :) Приятной работы.