get_acl_admin('general') )
{
return;
}
$filename = basename(__FILE__);
$module['General']['Emoticons'] = $filename . $SID . '&mode=emoticons';
return;
}
define('IN_PHPBB', 1);
//
// Include files
//
$phpbb_root_path = '../';
require($phpbb_root_path . 'extension.inc');
require('pagestart.' . $phpEx);
//
// Do we have general permissions?
//
if (!$acl->get_acl_admin('general'))
{
message_die(MESSAGE, $lang['No_admin']);
}
//
// Check to see what mode we should operate in.
//
if (isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']))
{
$mode = (!empty($HTTP_POST_VARS['mode'])) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
}
else
{
$mode = '';
}
$delimiter = '=+:';
$smilies_images = $smilies_paks = array();
$click_return = '
' . sprintf($lang['Click_return_smileadmin'], '', '');
$click_return .= '
' . sprintf($lang['Click_return_admin_index'], '', '');
if ($mode == 'edit' || !empty($HTTP_POST_VARS['add']) || !empty($HTTP_POST_VARS['import_pak']))
{
$dir = @opendir($phpbb_root_path . $board_config['smilies_path']);
while ($file = @readdir($dir))
{
if (is_file($phpbb_root_path . $board_config['smilies_path'] . '/' . $file))
{
$img_size = @getimagesize($phpbb_root_path . $board_config['smilies_path'] . '/' . $file);
if (preg_match('/\.(gif|png|jpg)$/i', $file) || (!empty($img_size[0]) && !empty($img_size[1])))
{
$smilies_images[] = $file;
}
elseif (preg_match('/\.pak$/i', $file))
{
$smilies_paks[] = $file;
}
}
}
@closedir($dir);
}
//
// Select main mode
//
if (isset($HTTP_POST_VARS['import_pak']))
{
if (!empty($HTTP_POST_VARS['smilies_pak']))
{
$smile_order = 0;
//
// The user has already selected a smilies_pak file.. Import it.
//
if (!empty($HTTP_POST_VARS['clear_current']))
{
$db->sql_query('DELETE FROM ' . SMILIES_TABLE);
}
else
{
$result = $db->sql_query('SELECT code FROM ' . SMILIES_TABLE);
$smilies = array();
while ($row = $db->sql_fetchrow($result))
{
++$smile_order;
$smilies[$row['code']] = 1;
}
}
$fcontents = @file($phpbb_root_path . $board_config['smilies_path'] . '/'. $smilies_pak);
if (empty($fcontents))
{
message_die(ERROR, 'Could not read smiley pak file' . $click_return);
}
foreach ($fcontents as $line)
{
$smile_data = explode($delimiter, trim($line));
$smile_url = $smile_data[0];
$emotion = $smile_data[1];
$code = htmlentities($smile_data[2]);
if (!isset($smile_data[4]))
{
//
// The size isn't specified, try to get it from the file and if it fails
// arbitrary set it to 15 and let the user correct it later.
//
$size = @getimagesize($phpbb_root_path . $board_config['smilies_path'] . '/' . $smile_url);
$smile_width = (!empty($size[0])) ? $size[0] : 15;
$smile_height = (!empty($size[1])) ? $size[1] : 15;
}
else
{
$smile_width = $smile_data[3];
$smile_height = $smile_data[4];
}
if (!empty($smilies[$code]))
{
if (!empty($HTTP_POST_VARS['replace_existing']))
{
$code_sql = str_replace("'", "''", str_replace('\\', '\\\\', $code));
$sql = array(
'smile_url' => $smile_url,
'smile_height' => $smile_height,
'smile_width' => $smile_width,
'emoticon' => $emotion
);
$db->sql_query_array('UPDATE ' . SMILIES_TABLE . " SET WHERE code = '$code_sql'", $sql);
}
}
else
{
++$smile_order;
$sql = array(
'code' => $code,
'smile_url' => $smile_url,
'smile_height' => $smile_height,
'smile_width' => $smile_width,
'smile_order' => $smile_order,
'emoticon' => $emotion
);
$db->sql_query_array('INSERT INTO ' . SMILIES_TABLE, $sql);
}
}
message_die(MESSAGE, $lang['Smilies_import_success'] . $click_return);
}
else
{
if (!count($smilies_paks))
{
$smilies_paks_select = $lang['No_smilies_pak'];
}
else
{
$smilies_paks_select = '';
}
page_header($lang['Import_smilies']);
?>
sql_query('SELECT * FROM ' . SMILIES_TABLE);
while ($row = $db->sql_fetchrow($result))
{
$smilies_pak .= $row['smile_url'] . $delimiter;
$smilies_pak .= $row['emoticon'] . $delimiter;
$smilies_pak .= $row['code'] . $delimiter;
$smilies_pak .= $row['smile_height'] . $delimiter;
$smilies_pak .= $row['smile_width'] . "\n";
}
$db->sql_close();
header('Content-Type: text/x-delimtext; name="smilies.pak"');
header('Content-disposition: attachment; filename=smilies.pak"');
echo $smilies_pak;
exit;
}
elseif (isset($HTTP_POST_VARS['export_pak']))
{
page_header($lang['Export_smilies']);
message_die(MESSAGE, sprintf($lang['Export_smilies_explain'], '', '') . $click_return);
}
elseif (isset($HTTP_POST_VARS['add']))
{
$filename_list = '';
foreach ($smilies_images as $smile_url)
{
if (!isset($default_image))
{
$default_image = $smile_url;
}
$filename_list .= '';
}
page_header($lang['Add_smile']);
?>
sql_query('DELETE FROM ' . SMILIES_TABLE . ' WHERE smilies_id = ' . intval($HTTP_GET_VARS['smile_id']));
message_die(MESSAGE, $lang['Smile_deleted'] . $click_return);
break;
case 'edit':
$smile_id = intval($HTTP_GET_VARS['smile_id']);
/*
$sql = 'SELECT *
FROM ' . SMILIES_TABLE . "
WHERE smilies_id = $smile_id";
$result = $db->sql_query($sql);
$smile_data = $db->sql_fetchrow($result);
*/
$order_list = '';
$result = $db->sql_query('SELECT * FROM ' . SMILIES_TABLE . ' ORDER BY smile_order DESC');
while ($row = $db->sql_fetchrow($result))
{
if ($row['smilies_id'] == $smile_id)
{
$after = TRUE;
$smile_data = $row;
}
else
{
$selected = '';
if (!empty($after))
{
$selected = ' selected="selected"';
$after = FALSE;
}
$order_list = '' . $order_list;
}
}
$order_list = '' . $order_list;
$filename_list = '';
foreach ($smilies_images as $smile_url)
{
if ($smile_url == $smile_data['smile_url'])
{
$smile_selected = ' selected="selected"';
$smile_edit_img = $smile_url;
}
else
{
$smile_selected = '';
}
$filename_list .= '';
}
page_header($lang['Edit_smile']);
?>
htmlspecialchars(stripslashes($HTTP_POST_VARS['smile_code'])),
'smile_url' => stripslashes($HTTP_POST_VARS['smile_url']),
'smile_width' => $smile_width,
'smile_height' => $smile_height,
'smile_order' => $smile_order,
'emoticon' => stripslashes($HTTP_POST_VARS['smile_emotion']),
'smile_on_posting' => (!empty($HTTP_POST_VARS['smile_on_posting'])) ? 1 : 0
);
$smile_id = $HTTP_POST_VARS['smile_id'];
$smile_order = $HTTP_POST_VARS['smile_order'];
if ($mode == 'modify')
{
$result = $db->sql_query('SELECT smile_order FROM ' . SMILIES_TABLE . " WHERE smilies_id = $smile_id");
$order_old = $db->sql_fetchfield('smile_order', 0, $result);
if ($order_old == $smile_order)
{
$no_update = TRUE;
}
if ($order_old > $smile_order)
{
$sign = '+';
$where = "smile_order >= $smile_order AND smile_order < $order_old";
}
else
{
$sign = '-';
$where = "smile_order > $order_old AND smile_order < $smile_order";
$sql['smile_order'] = $smile_order - 1;
}
}
else
{
$sign = '+';
$where = "smile_order > $smile_order";
}
if (empty($no_update))
{
$qry = 'UPDATE ' . SMILIES_TABLE . "
SET smile_order = smile_order $sign 1
WHERE $where";
$db->sql_query($qry);
}
if ($mode == 'modify')
{
$db->sql_query_array('UPDATE ' . SMILIES_TABLE . " SET WHERE smilies_id = $smile_id", $sql);
message_die(MESSAGE, $lang['Smile_edited'] . $click_return);
}
else
{
$db->sql_query_array('INSERT INTO ' . SMILIES_TABLE, $sql);
message_die(MESSAGE, $lang['Smile_added'] . $click_return);
}
break;
case 'move_up':
case 'move_down':
$smile_order = intval($HTTP_GET_VARS['smile_order']);
$order_total = $smile_order * 2 + (($mode == 'move_up') ? -1 : 1);
$sql = 'UPDATE ' . SMILIES_TABLE . "
SET smile_order = $order_total - smile_order
WHERE smile_order IN ($smile_order, " . (($mode == 'move_up') ? $smile_order - 1 : $smile_order + 1) . ')';
$db->sql_query($sql);
//
// No break; here, display the smilies admin back
//
default:
//
// By default, check that smile_order is valid and fix it if necessary
//
$order = 0;
$result = $db->sql_query('SELECT * FROM ' . SMILIES_TABLE . ' ORDER BY smile_order');
while ($row = $db->sql_fetchrow($result))
{
++$order;
if ($row['smile_order'] != $order)
{
$db->sql_query('UPDATE ' . SMILIES_TABLE . " SET smile_order = $order WHERE smilies_id = " . $row['smilies_id']);
}
}
$sql = 'SELECT *
FROM ' . SMILIES_TABLE . '
ORDER BY smile_on_posting DESC, smile_order ASC';
$result = $db->sql_query($sql);
page_header($lang['Emoticons']);
?>