Jump to content
CMSTOOLS.org - форум поддержки и развития CMS

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

Recommended Posts

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

        $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';
                } else {               
                $Headers = @get_headers($link);
        if(preg_match("|200|", $Headers[0])) {
                $album_dir = ROOT_DIR.'/uploads/attach/'.$user_id.'/';
                @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();
                echo $image_rename.'.png|||'.$img_url.'|||'.$user_id.'|||'.$link;
                        echo 'err';
        } else {
        echo '404';
        }{ echo 'double'; die();}
}else{ echo 'no_link'; die();}

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

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

checklink: function(){
                var msg_text = $('#msg_text').val();
                var plink = $('#prevlink').val();
    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]);
4. В im/form.tpl после </textarea> ставим
<input id="prevlink" type="hidden" value=""/>

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

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

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

<script type="text/javascript">
        var check = setInterval('im.checklink()', 2000);

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

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

Link to comment
Share on other sites

  • 5 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...