26

(3 replies, posted in PunBB 1.3 additions)

I did not create this mod, I simply reworked some coding from a punbb 1.2 mod, all credit goes to the original author "thame^" who's mod for 1.2 can be found here

##
##        Mod title:  Automatically resize uploaded avatars
##
##      Mod version:  1.0
##   Works on PunBB:  1.3.*
##     Release date:  2009-12-11
##         Original Author:  thame^
##         Update Author:  Source Code
##
##      Description:  PunBB's default behaviour is to reject any uploaded avatar
##                    image whose dimensions exceed those set in the options.
##                    Using this mod, PunBB will attempt to automatically resize
##                    those images to the maximum allowed dimensions, maintaining
##                    their aspect ratio. If the file size of the _resized image_
##                    is larger than allowed by the options, the upload will still
##                    be rejected.
##
##   Affected files:  profile.
##
##       Affects DB:  No
##
##            Notes:  This mod requires the GD image library, including support
##                    for at least JPEG (GIF and PNG are also recommended). If
##                    your copy of PHP is compiled without GD support (or lacks
##                    support for the uploaded image type), the mod will silently
##                    revert to the default PunBB behaviour. Visit
##                    http://php.net/gd for more information about the GD image
##                    library.
##
##       DISCLAIMER:  Please note that "mods" are not officially supported by
##                    PunBB. Installation of this modification is done at your
##                    own risk. Backup your forum database and any and all
##                    applicable files before proceeding.
##


#
#---------[ 1. OPEN ]---------------------------------------------------------
#

profile.php


#
#---------[ 2. FIND ]-----------------------------------------------
#

            // Now check the width/height
            list($width, $height, $type,) = getimagesize($forum_config['o_avatars_dir'].'/'.$id.'.tmp');
            if (empty($width) || empty($height) || $width > $forum_config['o_avatars_width'] || $height > $forum_config['o_avatars_height'])
            {
                @unlink($forum_config['o_avatars_dir'].'/'.$id.'.tmp');
                message($lang_profile['Too wide or high'].' '.$forum_config['o_avatars_width'].'x'.$forum_config['o_avatars_height'].' '.$lang_profile['pixels'].'.');
            }
            else if ($type == 1 && $uploaded_file['type'] != 'image/gif')    // Prevent dodgy uploads
            {
                @unlink($forum_config['o_avatars_dir'].'/'.$id.'.tmp');
                message($lang_profile['Bad type']);
            }            


#
#---------[ 3. REPLACE WITH ]--------------------------------------------------
#

            // Now check the width/height
            list($width, $height, $type,) = getimagesize($forum_config['o_avatars_dir'].'/'.$id.'.tmp');
            if (empty($width) || empty($height) || $width > $forum_config['o_avatars_width'] || $height > $forum_config['o_avatars_height'])
            {

                // Attempt to resize if GD is installed with support for the uploaded image type, as well as JPG for the output
                $check_type = str_replace(array(1, 2, 3), array('IMG_GIF', 'IMG_JPG', 'IMG_PNG'), $type);
                if (extension_loaded('gd') && imagetypes() & constant($check_type) && imagetypes() & IMG_JPG)
                {

                    // Load the image for processing
                    if ($type == 1) $src_img = @imagecreatefromgif($forum_config['o_avatars_dir'].'/'.$id.'.tmp');
                    elseif ($type == 2) $src_img = @imagecreatefromjpeg($forum_config['o_avatars_dir'].'/'.$id.'.tmp');
                    elseif ($type == 3) $src_img = @imagecreatefrompng($forum_config['o_avatars_dir'].'/'.$id.'.tmp');

                    if ($src_img)
                    {

                        // Figure out new image dimensions based on the maximum width
                        $new_w = $forum_config['o_avatars_width'];
                        $ratio = $height * $new_w;
                        $new_h = $ratio / $width;

                        // Do the new dimensions, based on the maximum width, fit the maximum height? If not, recalculate
                        if ($new_h > $forum_config['o_avatars_height'])
                        {
                            $new_h = $forum_config['o_avatars_height'];
                            $ratio = $width * $new_h;
                            $new_w = $ratio / $height;
                        }

                        // Resize the image
                        $new_img = imagecreatetruecolor($new_w, $new_h);
                        imagecopyresampled($new_img, $src_img, 0, 0, 0, 0, $new_w, $new_h, $width, $height);

                        // Delete the old image and write the newly resized one
                        @unlink($forum_config['o_avatars_dir'].'/'.$id.'.tmp');
                        imagejpeg($new_img,$forum_config['o_avatars_dir'].'/'.$id.'.tmp',85);

                        // Set the extension to JPG, since that's what the resized image is now
                        $extensions[0] = '.jpg';
                    }

                    // Something went wrong while attempting to load the image for processing
                    else
                    {
                        @unlink($forum_config['o_avatars_dir'].'/'.$id.'.tmp');
                        message('An unexpected error occured while attempting to resize the image.');
                    }
                }

                // No GD installed or image type not supported; can't resize
                else
                {
                    @unlink($forum_config['o_avatars_dir'].'/'.$id.'.tmp');
                    message($lang_profile['Too wide or high'].' '.$forum_config['o_avatars_width'].'x'.$forum_config['o_avatars_height'].' '.$lang_profile['pixels'].'.');
                }
            }
            else if ($type == 1 && $uploaded_file['type'] != 'image/gif')    // Prevent dodgy uploads
            {
                @unlink($forum_config['o_avatars_dir'].'/'.$id.'.tmp');
                message($lang_profile['Bad type']);
            }

            // Make sure the file isn't too big
            if (filesize($forum_config['o_avatars_dir'].'/'.$id.'.tmp') > $forum_config['o_avatars_size'])
                message($lang_profile['Too large'].' '.$forum_config['o_avatars_size'].' '.$lang_profile['bytes'].'.');


#
#---------[ 4. FIND & DELETE ORIGINAL LINES ( AROUND 1175 ) ]-----------------------------------------------
#

            // Make sure the file isn't too big
            if ($uploaded_file['size'] > $forum_config['o_avatars_size'])
                message($lang_profile['Too large'].' '.$forum_config['o_avatars_size'].' '.$lang_profile['bytes'].'.');


#
#---------[ 5. SAVE/UPLOAD ]-------------------------------------------------
#

Again I did not create this mod and full credit goes to the original author, I have simply updated it to work with punbb 1.3.

27

(85 replies, posted in PunBB 1.3 extensions)

rajuru wrote:
Source Code wrote:

can anyone re up this? seems the links are out of date

i have updated the main post. can you please try now?

perfect thank you so very much!

28

(85 replies, posted in PunBB 1.3 extensions)

can anyone re up this? seems the links are out of date

fixed, did some research on here an found the solution, was a mod_security error, spoke to our hosts wink

Hi

When i try and change a users group i get an error message saying

Forbidden

You don't have permission to access /forums/profile.php on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.


My board is located @ http://www.shedbass.net/forums/


Please heeeelp!