Перейти к содержанию
CMSTOOLS.org - форум поддержки и развития CMS

[Фича] Прикрепление изображений в диалоги


Рекомендуемые сообщения

1. Создаем в папке modules файл imparse.php:

<?php
if($logged){
        $user_id = $user_info['user_id'];
        $server_time = time();
$text = $_POST['msg_text'];
$plink = $_POST['plink'];

$count = preg_match("'[\w\+]+://[A-z0-9\.\?\+\-/_=&%#:;]+[\w/=]+'si", $text, $link);

if($count == 1){
        $link = $link[0];
        if($link != $plink){
        if (!preg_match("/(.png)|(.jpg)|(.jpeg)|(.gif)/i", $link)) {
        echo 'no_img';
        die();
                } else {               
                $Headers = @get_headers($link);
        if(preg_match("|200|", $Headers[0])) {
                       
                $album_dir = ROOT_DIR.'/uploads/attach/'.$user_id.'/';
            if(!is_dir($album_dir)){
                @mkdir($album_dir, 0777);
                @chmod($album_dir, 0777);
            }
                $image_rename = substr(md5(time()+rand(1,100000)), 0, 20);
                if(file_put_contents($album_dir.$image_rename.".png", file_get_contents($link))){
                        $db->query("INSERT INTO `".PREFIX."_attach` SET photo = '{$image_rename}.png', ouser_id = '{$user_id}', add_date = '{$server_time}'");
                                $ins_id = $db->insert_id();
                        $img_url=$config['home_url'].'uploads/attach/'.$user_id.'/'.$image_rename.'.png';
                echo $image_rename.'.png|||'.$img_url.'|||'.$user_id.'|||'.$link;
        die();               
                }else{
                        echo 'err';
        die();
                }
        } else {
        echo '404';
                die();
        }       
                }
        }{ echo 'double'; die();}
}else{ echo 'no_link'; die();}
}
?>

2. Подлкючаем его в mod.php:

//Parser
        case "imparse":
                include ENGINE_DIR.'/modules/imparse.php';
        break;
       
3. В profile.js после var im = { ставим

checklink: function(){
                var msg_text = $('#msg_text').val();
                var plink = $('#prevlink').val();
                $.ajax({
    url: '/index.php?go=imparse',
    type: 'POST',
    data: {msg_text: msg_text, plink: plink},
    success: function(res){
                if (res != 'no_img' & res != 'err' & res != '404' & res !='no_link' & res != 'double'){
                var arr = res.split('|||');
                wall.attach_insert('photo', arr[1], 'attach|'+arr[0], arr[2]);
                $('#prevlink').val(arr[3]);
                }
    }
                });
        },
       
4. В im/form.tpl после </textarea> ставим
<input id="prevlink" type="hidden" value=""/>

Находим там же:

<script type="text/javascript">
$(document).ready(function(){
        vii_interval_im = setInterval('im.update();', 2000);
       
и после im.update(); вставляем im.checklink();

Если нету вставляем целый кусок кода в начало:

<script type="text/javascript">
$(document).ready(function(){
        var check = setInterval('im.checklink()', 2000);
});
</script>

5. Готово, аналогично делается и для стены. Работают только ссылки с http(s). Файлы пользователя в независимости от того, прикрепил
он их или нет сохраняются в uploads/attach/ид юзера/ в формате png

автора не помню

Ссылка на комментарий
Поделиться на другие сайты

  • 5 месяцев спустя...
×
×
  • Создать...