форум vBSupport.ru > vBulletin > Вопрос — Ответ
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
taravasya
Знаток
 
taravasya's Avatar
Default Узнать расширение вложения кодом в хуке
0

Не подскажите.... как в коде хука узнать является ли вложение изображением? Ну фактически получить его расширение. Нашёл переменную $attachmentinfo['extension'], но что-то не соображу как получить к ней доступ на моём хуке?
Спасибо!
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
YURSHAT
Coder
 
YURSHAT's Avatar
Default
0

@taravasya, а где конкретно это нужно узнать и на каком хуке? Опишите подробнее ситуацию.
 
 
taravasya
Знаток
 
taravasya's Avatar
Default
0

Всё те же printthread_ post/start/complete )))
В соседней теме, речь шла про изображения в сообщениях. Теперь у меня дошла очередь до изображений вставленных в сообщения в виде вложений.
На хуке printthread_post я добавил вот такую регулярку:
PHP Code:
$post['attach'] = 0;  
$post['message'] = preg_replace("/<a href=\"(\w{4,5}:\/\/.*attachmentid\=\d*)\"\s(.|\n)*<\/a>/U""<img style=\"max-width: 400px; max-height: 400px;\" src=\"\\1\">"$post['message']); 
всё классно работает... но если в сообщение, вставлено инлайн-вложение другого типа(zip, pdf... вообщем НЕ изображение), то естественно получается косяк. Регулярочка отрабатывает, но вместо картинки в таких случаях, мы имеем заглушку об отсутствующем изображении.
Вот я и хотел попробовать, прежде чем использовать регулярку к вложению, убедиться, что это вложение является изображением.
 
 
YURSHAT
Coder
 
YURSHAT's Avatar
Default
0

Quote:
Originally Posted by taravasya View Post
я добавил вот такую регулярку
Вас вроде регулярки не устраивали изначально

Quote:
Originally Posted by taravasya View Post
Вот я и хотел попробовать, прежде чем использовать регулярку к вложению, убедиться, что это вложение является изображением.
Инфы по аттачу в Printthread нет, так как она просто не достается из таблицы attachment.
Делайте запрос к таблице аттачей, получайте массив, джойньте его к массиву post
 
 
taravasya
Знаток
 
taravasya's Avatar
Default
0

Quote:
Originally Posted by YURSHAT View Post
Вас вроде регулярки не устраивали изначально
Пришёл к выводу, что в случае с вложениями иначе никак...
Но если extension доставать из БД нужно, то тогда и наличие аттачей, видимо можно будет в запросе проверить.
 
 
YURSHAT
Coder
 
YURSHAT's Avatar
Default
0

@taravasya, без редактирования printthread.php тут не обойтись. Хуков, там где они нужны, нет. Мы же в цикле не будем запрашивать это дело
 
 
taravasya
Знаток
 
taravasya's Avatar
Default
0

Наваял вот такой код:
PHP Code:
if ($post['attach'] > 0
    { 
        
$attachments $vbulletin->db->query_read("SELECT attachmentid, filename 
                FROM " 
TABLE_PREFIX "attachment 
                WHERE `contenttypeid` = 1 AND `userid` = " 
$post['userid'] . 
                AND `state` = 'visible' AND `contentid` = " 
$post['postid'] . 
        "
); 

         
        while (
$attachments_info $vbulletin->db->fetch_array($attachments)) 
        { 
            
$filename strtolower($attachments_info['filename']); 
            
$extension substr(strrchr($filename'.'), 1); 
            
$extensions = array("jpg""jpeg""png""gif"); 
            if (!
in_array($extension$extensions)) 
            { 
                continue; 
            } 
            
//Generate images instead links to inline attachments 
            
$post['attach'] = 0;  
            
$post['message'] = preg_replace("/<a href=\"(\w{4,5}:\/\/.*attachmentid\=" .$attachments_info['attachmentid']. ")\"\s(.|\n)*<\/a>/U""<img style=\"max-width:" .$vbulletin->options['adv_printthread_images_size']. "; max-height:" .$vbulletin->options['adv_printthread_images_size']. ";" .$vbulletin->options['adv_printthread_images_style']. "\" src=\"\\1\">"$post['message']); 
             
        } 
     
    } 
Что скажете? Где косяки(они ведь обязательно есть )?
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 11:15 AM.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...