Файл: core/admin/add_post.php
Строк: 104
<?php
if (!defined('BLOG')) { die('Access Denied!'); }
$error = '';
if (!empty($_POST['submit'])) {
    if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
        $title  = !empty($_POST['title'])  ? check($_POST['title']) : '';
        $text   = !empty($_POST['text'])   ? check($_POST['text']) : '';
        $acomm  = !empty($_POST['acomm'])  ? 1 : 0;
        $active = !empty($_POST['active']) ? 0 : 1;
        $cat    = !empty($_POST['cat'])    ? num($_POST['cat'])    : 0;
        $desc   = !empty($_POST['desc'])   ? StripMeta($_POST['desc']) : genDescription($_POST['title'] . ' ' . $_POST['text']);
        $keys   = !empty($_POST['keys'])   ? StripMeta($_POST['keys']) : genKeywords($_POST['text']);
        if (!empty($title) && !empty($text)) {
            if (!empty($cat)) {
                $is_cat = (int) $db->selectCell( "SELECT * FROM ?_category WHERE `id` = ? LIMIT 1", $cat );
                if ( !empty($is_cat) ) {
                    $thisdate = date( 'Y-m-d H:i:s', time() );
    
                    $last_id = (int) $db->query( "INSERT INTO ?_data SET `cid` = ?, `title` = ?, `desc` = ?, `keys` = ?, `text` = ?, `date` = ?, `active` = ?, `acomm` = ?", $cat, $title, $desc, $keys, $text, $thisdate, $active, $acomm );
    
                    if ($last_id > 0) {
                        if (!empty($_FILES['f']['tmp_name'])) {
                            if (!$_FILES['f']['error'][0]) {
                                $all = sizeof($_FILES['f']['tmp_name']);
                                for ($i = 0; $i < $all; ++$i ) { 
                                    $is_file = (bool) upload($_FILES['f']['tmp_name'][$i], $_FILES['f']['name'][$i], '../files/', '0644');
                                    if ( $is_file ) {
                                        @chmod('../files/' . $_FILES['f']['name'][$i], 0644);
                                        $db->query("INSERT INTO ?_list_file SET `post` = ?, `name` = ?, `size` = ?", $last_id, $_FILES['f']['name'][$i], $_FILES['f']['size'][$i] );
                                    }
                                }
                            }
                        }
                        del_vars('categories');
                        del_vars('counts_posts');
                        addMessage('Статья успешно добавлена!', 'ok');
                        gen_red('post', $last_id);
                    }
                    else $error = 'Ошибка! В данный момент не удалось добавить статью!';
                }
                else $error = 'Ошибка! Категория не найдена в БД. Попробуйте обновить кеш, возможно он устарел!';
            }
            else $error = 'Ошибка! Неверна указана категория!';
        }
        else $error = 'Ошибка! Вы не ввели заголовок или текст статьи!';
    }
    else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
    if (!empty($error)) addMessage($error,'error');
}
show_header('Добавление статьи');
echo '<div class="downlist2"><form action="?a=add_post&rnd=' . $_SESSION['token'] . '" method="post" enctype="multipart/form-data">
Название статьи:<br />
<input name="title" type="text" size="20" maxlength="100" value="' . request('title') . '" /><br />
Текст статьи: [<a href="/smiles.html">Смайлы</a>] [<a href="/code.html">ББ-коды</a>]<br />
<textarea name="text" cols="40" rows="10">' . request('text') . '</textarea><br />
Описание (description):<br />
<textarea name="desc" cols="26" rows="3">' . request('desc') . '</textarea><br />
Ключевые слова (keywords через запятую):<br />
<textarea name="keys" cols="26" rows="3">' . request('keys') . '</textarea><br />
<input name="acomm" type="checkbox" value="1" checked="checked" /> Разрешить комментарии<br />
<input name="active" type="checkbox" value="1" /> Не публиковать<br />
Раздел:<br />
<select class="input" name="cat" size="0">';
if (!empty($categories)) {
    foreach( $categories as $key => $val ) {
        list($title,$text,$count) = $val;
        if (!empty($id) && $id == $key) echo '<option value="' . $key . '" selected="selected">' . $title . ' (' . $count . ')</option>';
        else echo '<option value="' . $key . '">' . $title . ' (' . $count . ')</option>';
    }
}
else echo '<option>Категорий не существует!</option>';
echo '</select><br /><br />';
echo 'Файл: (max ' . ini_get('upload_max_filesize') . ') <a href="#" onclick="add_files(1);">[+]</a> / <a href="#" onclick="add_files(0);">[-]</a><br/><div id="fl"><input type="file" name="f[]"/><br/></div>';
echo <<<HTML
<script type="text/javascript">
function add_files(e){var h=document.createElement("input");h.setAttribute("name","f[]");h.setAttribute("type","file");var g=document.getElementById("fl");if(e==1){g.insertBefore(h,null);g.appendChild(document.createElement("br"))}else{var a=g.getElementsByTagName("input");var c=g.getElementsByTagName("br");if(a.length>0){var d=a[a.length-1];d.parentNode.removeChild(d);var b=c[c.length-1];b.parentNode.removeChild(b)}}};
</script>
<noscript><div class="message_warning">Для прикрепления файлов, требуется поддержка JS в вашем браузере!!!</div></noscript>
HTML;
echo '<br /><input name="submit" type="submit" value="Добавить"></form><br />
[!] Описание и кл. слова можно оставить пустыми, тогда они будут сгенерированы автоматически из текста статьи.<br /></div>';
function upload($tmp = '', $name = '', $dir = '', $chmod = '0644') {
    $fname = $name;
    if (substr($dir, -1) != '/') {
        $name = basename($dir);
        $dir = dirname($dir) . '/';
    }
    if ( strpos($name, 'php') <> false ) return false;
    if ( strpos($name, 'htaccess') <> false ) return false;
    if ( file_put_contents($dir . $name, file_get_contents($tmp)) ) {
        @chmod($dir . $name, $chmod);
        unlink($tmp);
        return true;
    } else {
        unlink($tmp);
        return false;
    }
}
?>