vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 2.x Full Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=4)
-   -   Sig image size control (https://vborg.vbsupport.ru/showthread.php?t=40216)

Herman 06-23-2002 10:00 PM

Sig image size control
 
I wrote this hack so i could obviously do what the title says.

When installed it you get an option in vb option of max height and width.

If a user's sig is too big, then when you look at their sig it'll say sorry this image is too large. And if the link doesn't work, then it'll say sorry that image doesn't exist. Thnx.. Don't forget to back up the databases!

[edit]This new one gets rid of the queries.. but, you have to submit your vbulletin options after installing the hack in order for it to work.[/edit]

[edit]Update again, this fixes smooties prob's with it images being set to unlimited[/edit]

Sinecure 06-24-2002 04:10 AM

There seem to be a lot of signature limitation hacks :)
I'll install this on my test board. I want something simple, and not bloated with options, hopefully this does the job :)
Thanks :)

Herman 06-24-2002 04:11 AM

np

Smoothie 06-24-2002 05:06 AM

Followed instructions, set the limit in the vb options for sig width, height, added a test sig, bigger than the allowable limit, it still shows. :(

Admin 06-24-2002 06:48 AM

Nice work... haven't tested it but looks promising.

Admin 06-24-2002 06:49 AM

Quote:

Originally posted by Smoothie
Followed instructions, set the limit in the vb options for sig width, height, added a test sig, bigger than the allowable limit, it still shows. :(
The hack doesn't work retroactively as far as I see.

Smoothie 06-24-2002 06:56 AM

Quote:

Originally posted by FireFly

The hack doesn't work retroactively as far as I see.

I added a new sig after the hack, and it still shows.

Smoothie 06-24-2002 07:50 AM

Ok, the one setting that needs to be changed for this to work is:
Under Posting Code allowances (vB code / HTML / etc):
Maximum images per post/signature: (This needs to be set to anything but zero.) :)

Herman 06-24-2002 01:01 PM

Okay it works, it just doesn't work until the user has to changes their profile.

Smoothie 06-24-2002 04:12 PM

It only works for me if I change the setting above. Is there a way around that?

Herman 06-24-2002 05:12 PM

Quote:

Ok, the one setting that needs to be changed for this to work is:
Under Posting Code allowances (vB code / HTML / etc):
Maximum images per post/signature: (This needs to be set to 1.)
Works just fine for me.. I have images set to 10 per post/sig, and It only kills the images that are too big.. For instance, if I have it set to 100x500, (default), and I add two images in my sig, one that is 320x240, and one that is 64x64, the 64x64 one stays, but the 320x240 one gets the message that its too big...

Smoothie 06-24-2002 05:24 PM

Ah, ok. So this can be set to anything but 0 for it to work? Because at 0, it doesn't.

Herman 06-24-2002 05:36 PM

Ok, here is how it works.

1. You update your profile

2. Before the BBCODE processor, a special function catches all img tags.

3. The function, called size_check, checks to see if the file exists, if it does, it gets the max size and width out of the configuration of your board, and checks to see if the image width is bigger first in width, then in height:
PHP Code:

    if ($im_width $max_sig_width)
        {
        return 
"[i]Sorry, image size exceeds maximum width of ".$max_sig_width.".[/i]";
        }

    if (
$im_height $max_sig_height)
        {
        return 
"[i]Sorry, image size exceeds maximum height of ".$max_sig_height.".[/i]";
        } 

4. It returns the image in BBCODE notation if it is ok, otherwise, it returns the message shown above.

5. The bbcode processes it like normal!


I wasn't sure about your question about setting it to 0.. I wasn't sure what that was refering to...

Admin 06-24-2002 05:38 PM

Just so you know: instead of using this:
Code:

  $max_height = $DB_site->query_first("SELECT value FROM setting where varname=\"maxsigheight\"");
  $max_width = $DB_site->query_first("SELECT value FROM setting where varname=\"maxsigwidth\"");

You can just use $maxsigwidth and $maxsigheight (globalize them in the function). BUT, you MUST Submit the vBulletin Options page in the Admin CP for this to work. :)

Anyway, I'll probably install this here later, looks good.

Herman 06-24-2002 05:43 PM

Yea... I was trying to figure that out.. but every single time I tried to global those variables, it wouldn't work. They would return NULL. I didn't know you had to submit the vbulletin options again...lol. I'll edit the post and submit a revision.

Admin 06-24-2002 05:52 PM

Well I installed this here, with some modifications, and it's working great. Great job Herman!

Smoothie 06-24-2002 05:53 PM

Quote:

I wasn't sure about your question about setting it to 0.. I wasn't sure what that was refering to...
In my admin cp, i had maximum images/sigs per post set to zero. So, users could post unlimited images with img tag. But, the hack won't work with it set to zero. Anything but zero, and it works fine. That's what my post was about, and why I couldn't get it to work the first time. Now it works great. Will you be updating the original file with Firefly's changes, and if we have this installed, what needs to be changed?

Smoothie 06-24-2002 05:58 PM

BTW, it would be really cool if you could control the amount of images in the signature, and in the posts separately. Like allow only one img tag in the sig, but a different amount in the posts.

Herman 06-24-2002 05:58 PM

I will update the original file in a sec here.. and I'll post again with changes.

Herman 06-24-2002 06:20 PM

Just download the new update, and replace the whole size_check function in members.php with the new one.

Herman 06-24-2002 06:25 PM

Hmm.. Smoothie.. you are right .. it does not work if that setting is set to 0. I'll look into that.



[edit]S, to fix the problem with it being set to 0, when you did this part of the hack:

Code:

find:

  // check max images
  if ($maximages!=0) {

add:
    $signature = preg_replace("/\[img\](\r\n|\r|\n)*((http|https):\/\/([^;<>\*\(\)\"".iif($allowdynimg,"","\?\&")."]+)|[a-z0-9\/\\\._\- ]+)\[\/img\]/seiU", "\size_check('\\2')", $signature);

add the code *BEFORE* the lines you had to find. that will fix it. sorry



Also, I reupdated the hack in the first post.

Herman 06-24-2002 06:36 PM

Thanks FireFly :)

Robouk5 06-24-2002 07:26 PM

Firefly, would you mind posting the versiopn you installed with your modifications?

Smoothie 06-24-2002 08:54 PM

Excellent Herman! Thanks for the updates. :)

Herman 06-24-2002 09:08 PM

No problem! :)

Boofo 06-24-2002 09:09 PM

What do you mean by submit? :)

Quote:

Originally posted by Herman


[edit]This new one gets rid of the queries.. but, you have to submit your vbulletin options after installing the hack in order for it to work.[/edit]



Herman 06-25-2002 08:08 PM

Goto Admin CP, goto Vbulletin Options, then goto the button and hit the submit button to save your options. Thats it! :)

LightBringer 06-27-2002 03:04 AM

Is there anyway possible to limit flash movies within the signature as well?

Larz 06-27-2002 09:31 AM

Herman, in the admin-cp, the button you're referring to as "Submit" is called "Save Changes" in my vB, I think that's what's causing some confusion.

Darren Evans 06-27-2002 07:09 PM

So, this hack won't work unless all my users update their bios? It won't work on the fly when the hack is installed?

Smoothie 06-27-2002 07:19 PM

Quote:

Originally posted by Darren Evans
So, this hack won't work unless all my users update their bios? It won't work on the fly when the hack is installed?
That would be correct.

Darren Evans 06-27-2002 08:23 PM

Ok... can someone post a query that deletes all sig files so I don't have to go in and manually delete each one?

Smoothie 06-27-2002 08:29 PM

One thing you might try, turn off:
Allow vB IMG code in signatures in the admin cp, submit, then go back and turn it back on.

Darren Evans 06-27-2002 08:59 PM

Quote:

Originally posted by Smoothie
One thing you might try, turn off:
Allow vB IMG code in signatures in the admin cp, submit, then go back and turn it back on.

Nope. That didn't work. :( Thanks for the reply, though.

Herman 06-28-2002 04:12 AM

Code:

update user set signature="";

and yes, it is possible to do it with Swf files, but I haven't written the code for that yet.

LightBringer 06-28-2002 06:48 PM

Herman, has there been any updates on the swf code for this hack?

Herman 06-28-2002 11:58 PM

Ok for SWF! Here it is.. I haven't completely put a lot of thought into this code b/c I was busy today, but it will do the job.

I designed this addition to be completely independant of the IMG sig control hack.. This hack addition will only affect swf's, so if you don't care about IMG and want swfs controled, only install this, however, you can install them both, and it wll control both.

find:

Code:

  // check max images
  if ($maximages!=0) {

add ABOVE

Code:

    $signature = preg_replace("/(\[)(swf)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/swf\])/seiU", "\swf_size_check('\\5','\\7')", $signature);
find at the very end of the file:

Code:

?>
add ABOVE:

Code:

function swf_size_check($image, $h_w) {


  global $maxsigheight, $maxsigwidth;

  //parse_all img tags

  $image_xy=@getimagesize($image);

  if ($image_xy==NULL)
        {
        return "Image not found";
        }
  else        {
        //ok, here we need to see if the user specified a size(i believe the swf will
        //default to default size if no height width is specified, so lets get the
        //dimensions of the swf..

        $im_width=$image_xy[0];
        $im_height=$image_xy[1];


        //ok, did the user specify a height? lets see...

        unset($params);
        $params=explode(" ", $h_w);

        foreach($params AS $param)
                {
                if (preg_match("/(height)(=)(['\"]?)([^\"']*)(\\3)/siU", $param))
                        {
                        $im_height=preg_replace("/(height)(=)(['\"]?)([^\"']*)(\\3)/seiU", "\intval('\\4')", $param);
                        }
                if (preg_match("/(width)(=)(['\"]?)([^\"']*)(\\3)/siU", $param))
                        {
                        $im_width=preg_replace("/(width)(=)(['\"]?)([^\"']*)(\\3)/seiU", "\intval('\\4')", $param);
                        }
                }


        if ($im_width > $maxsigwidth)
                {
                return "Sorry, swf size exceeds maximum width of ".$maxsigwidth.".";
                }

        if ($im_height > $maxsigheight)
                {
                return "Sorry, swf size exceeds maximum height of ".$maxsigheight.".";
                }

        }


return "[swf=".$image."]" . $h_w . "[/swf]";
}


Keep in mind, that this is NOT fully tested, but I wrote it b/c of requests.

Herman 06-29-2002 12:01 AM

BTW, why does it parse the BBCODE in the [code] statements? This is very annoying.. In my above post, where the words appear italicized, there should be [i ] and [/i ] ending tags, for those interested.

DarkDraco07 06-29-2002 02:40 AM

i could really use this

Kinox 06-29-2002 04:58 AM

here is what i did

https://vborg.vbsupport.ru/attachmen...&postid=266944

https://vborg.vbsupport.ru/showthrea...threadid=40402


All times are GMT. The time now is 04:43 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01298 seconds
  • Memory Usage 1,826KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (7)bbcode_code_printable
  • (1)bbcode_php_printable
  • (7)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (40)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete