* @copyright ChatMaster * @since 07.12.2009 * @version 2.0 * */ /** * $SM_SMILES_FILE format: * 0 - cid, * 1 - code, * 2 - file name, * 3 - alt, * 4 - aliases * 5 - ; (end of line, to avoid errors after trim() ) * */ if (!defined('SM_COMMON')) exit('stop'); $cid = intval($_GET['cid']); /*******************************************/ /* Define action */ $do = trim(strip_tags($_GET['do'])); /*******************************************/ /* Add new smile */ if ($do == 'add') { $code = trim(strip_tags($_POST['code'])); $group = trim(strip_tags($_POST['group'])); $alt = trim(strip_tags($_POST['alt'])); $aliases = trim(strip_tags($_POST['aliases'])); $common = isset($_POST['common']) ? intval($_POST['common']) : 0; $file = $_FILES['file']; /* Check input data */ if (!$code) { header('Location: conv.php?m='.$mod.'&session='.$session.'&e=1'); exit; } if (!$group) { header('Location: conv.php?m='.$mod.'&session='.$session.'&e=2'); exit; } if (!$file || !count($file) || $file['error']) { header('Location: conv.php?cid='.$group.'&m='.$mod.'&session='.$session.'&e=3'); exit; } /* Check codes */ $used_codes = array(); if (file_exists($SM_SMILES_FILE)) { $lines = file($SM_SMILES_FILE); if (count($lines)) { foreach ($lines as $line) { $parts = explode("\t", trim($line)); $used_codes[] = trim($parts[1]); if ($parts[4]) { $alt_codes = explode(',', $parts[4]); if (count($alt_codes)) { foreach($alt_codes as $alt_code) { $used_codes[] = trim($alt_code); } } } } } } if (in_array($code, $used_codes)) { header('Location: conv.php?cid='.$group.'&m='.$mod.'&session='.$session.'&e=4'); exit; } $used_codes[] = $code; if ($aliases) { $alt_codes = explode(',', $aliases); if (count($alt_codes)) { foreach($alt_codes as $alt_code) { if (in_array($alt_code, $used_codes)) { header('Location: conv.php?cid='.$group.'&m='.$mod.'&session='.$session.'&e=5'); exit; } $used_codes[] = $alt_code; } } } /* Upload file */ if (!file_exists($upload_dir) || !is_writable($upload_dir)) { header('Location: conv.php?cid='.$group.'&m='.$mod.'&session='.$session.'&e=6'); exit; } if (file_exists($upload_dir.$file['name'])) { header('Location: conv.php?cid='.$group.'&m='.$mod.'&session='.$session.'&e=7'); exit; } list($roz_width, $roz_height, $type, $attr) = getimagesize($file['tmp_name']); if($type = 1){ move_uploaded_file($file['tmp_name'], $upload_dir.$file['name']); } if (!file_exists($upload_dir.$file['name'])) { header('Location: conv.php?cid='.$group.'&m='.$mod.'&session='.$session.'&e=8'); exit; } @chmod($upload_dir.$file['name'], 0644); /* Register smile */ $new_smile_data = array($group, $code, $file['name'], $alt, $aliases, ';'); $f = fopen($SM_SMILES_FILE, 'a+'); if (!$f) { header('Location: conv.php?cid='.$group.'&m='.$mod.'&session='.$session.'&e=9'); exit; } fwrite($f, join("\t", $new_smile_data)."\n"); fclose($f); /* Register smile as common */ if ($common) { $f = fopen($SM_DEFAULTS_FILE, "a+"); if (!$f) { header('Location: conv.php?cid='.$group.'&m='.$mod.'&session='.$session.'&e=10'); exit; } fwrite($f, $file['name']."\n"); fclose($f); } header('Location: conv.php?cid='.$group.'&m='.$mod.'&session='.$session); exit; } /*******************************************/ /* Edit smiles */ if ($do == 'edit') { $codes = $_POST['codes']; if (count($codes)) { $cids = $_POST['cids']; $emotions = $_POST['emotions']; $aliases = $_POST['aliases']; $commons = $_POST['commons']; /* Edit smiles list */ $new_file = ''; $lines = file($SM_SMILES_FILE); foreach($lines as $line) { $parts = explode("\t", trim($line)); if (isset($codes[$parts[2]])) { $parts[0] = $cids[$parts[2]]; $parts[1] = $codes[$parts[2]]; $parts[3] = $emotions[$parts[2]]; $parts[4] = $aliases[$parts[2]]; } $new_file .= join("\t", $parts)."\n"; } $f = fopen($SM_SMILES_FILE, 'w'); if (!$f) { header('Location: conv.php?cid='.$cid.'&m='.$mod.'&session='.$session.'&e=9'); exit; } fwrite($f, $new_file); fclose($f); /* Edit common smiles */ $new_file = ''; $lines = file($SM_DEFAULTS_FILE); if (count($lines)) { foreach($lines as $line) { $line = trim($line); if (!isset($commons[$line])) { $new_file .= $line."\n"; } } } foreach($commons as $k => $v) { if ($v == 1) $new_file .= $k."\n"; } $f = fopen($SM_DEFAULTS_FILE, "w"); if (!$f) { header('Location: conv.php?cid='.$cid.'&m='.$mod.'&session='.$session.'&e=10'); exit; } fwrite($f, $new_file); fclose($f); } } /*******************************************/ /* Delete smile */ $del = trim(strip_tags($_GET['del'])); if ($del && file_exists($SM_SMILES_FILE)) { $new_file = ''; $lines = file($SM_SMILES_FILE); if (count($lines)) { foreach($lines as $line) { $parts = explode("\t", trim($line)); if ($parts[2] != $del) { $new_file .= trim($line)."\n"; } } } $f = fopen($SM_SMILES_FILE, "w"); if (!$f) { header('Location: conv.php?cid='.$cid.'&m='.$mod.'&session='.$session.'&e=9'); exit; } fwrite($f, $new_file); fclose($f); if (file_exists($SM_DEFAULTS_FILE)) { $new_file = ''; $lines = file($SM_DEFAULTS_FILE); if (count($lines)) { foreach ($lines as $line) { $line = trim($line); if ($line != $del) $new_file .= $line."\n"; } } $f = fopen($SM_DEFAULTS_FILE, "w"); if (!$f) { header('Location: conv.php?cid='.$cid.'&m='.$mod.'&session='.$session.'&e=10'); exit; } fwrite($f, $new_file); fclose($f); } header('Location: conv.php?cid='.$cid.'&m='.$mod.'&session='.$session); exit; } /* Read category list */ $categories = array(); $counts = array(); if (file_exists($SM_GROUPS_FILE)) { $lines = file($SM_GROUPS_FILE); if (count($lines)) { foreach($lines as $line) { list($id, $name) = explode("\t", trim($line)); $categories[$id] = $name; $counts[$id] = 0; } } } /* Read common smiles list */ $defaults = array(); if (file_exists($SM_DEFAULTS_FILE)) { $lines = file($SM_DEFAULTS_FILE); if (count($lines)) { foreach($lines as $line) { $defaults[] = trim($line); } } } /* Read smiles list */ $smiles = array(); if (file_exists($SM_SMILES_FILE)) { $lines = file($SM_SMILES_FILE); if (count($lines)) { foreach($lines as $line) { $parts = explode("\t", trim($line)); $counts[$parts[0]]++; if (in_array($parts[2], $defaults)) { $parts['is_default'] = true; } else { $parts['is_default'] = false; } if ($parts[0] == $cid) { $smiles[] = $parts; } } } } /* Error processing */ $e = isset($_GET['e']) ? intval($_GET['e']) : 0; switch ($e) { case 1: $err = 'Не указан код вызова для смайла!'; break; case 2: $err = 'Не выбрана категория!'; break; case 3: $err = 'Ошибка загрузки файла!'; break; case 4: $err = 'Основной код вызова уже используется!'; break; case 5: $err = 'Один из дополнительных кодов вызова (алиасов) уже используется!'; break; case 6: $err = 'Директория '.$upload_dir.' не доступна для записи!'; break; case 7: $err = 'Файл с таким именем уже существует!'; break; case 8: $err = 'Загрузка файла не удалась!'; break; case 9: $err = 'Не могу писать в файл '.$SM_SMILES_FILE.'!'; break; case 10: $err = 'Не могу писать в файл '.$SM_DEFAULTS_FILE.'!'; break; default: $err = ''; } if ($err) { echo '
'.$err.'
'; } ?>
Добавить смайл
Файл: Код вызова: Категория:
Эмоция (alt): Алиасы: Общий
$v) { ?> class="tr_hover"class="tr_normal" onmouseover="this.className='tr_hover';" onmouseout="this.className='tr_normal';">
Категория
()
Выберите категорию смайлов для просмотра.
$v) { ?>
Код Категория Смайл Эмоция (alt) Алиасы Общий    
Показать
Да' : 'Нет';?>
Редактировать название
[x]
В этой категории нет ни одного смайла.
Список категорий пуст.