Write Review

Reviews

Image resizer by Cipher

perfect! greats...

Written By: FBI, 22nd June 2008

heya, just a bit of code you need to replace everything in imageresizer.php with.

code:

PHP Code:
<?php
// Make sure the following variable is given//
////////////////////////////////////////////////

$prefix "mybb_";
/////////////////////////////////////////////////
/**
 * Plugin name: Image resizer
 * Author:        Cipher
 * Version:        1.0
 */

$plugins->add_hook("parse_message""imageresizer_message");
$plugins->add_hook("pre_output_page""imageresizer_page");

function 
imageresizer_info()
{
    return array(
        
"name"        => "Image resizer",
        
"description"    => "Resizes an images if the width is larger than a maximum width given through the settings panel.",
        
"website"        => "mailto:ferry@cipher.demon.nl",
        
"author"        => "Cipher",
        
"authorsite"    => "mailto:ferry@cipher.demon.nl",
        
"version"        => "1.1",
    );
}

function 
imageresizer_activate()
{
    global 
$mybb$db;
    
    
// Add settings
    
$settings_group = array(
        
"gid"            => "NULL",
        
"name"        => "imageresizer",
        
"title"         => "Image resizer",
        
"description"    => "Settings for Cipher\'s \'Image resizer\' plugin.",
        
"disporder"        => "20",
        
"isdefault"        => "no",
    );
    
$db->insert_query("settinggroups"$settings_group);
    
$gid $db->insert_id();
    
    
$setting = array(
        
"sid"            => "NULL",
        
"name"        => "image_resizer_active",
        
"title"        => "Active",
        
"description"    => "This gives you the possability to deactivate the plugin without loosing the settings.",
        
"optionscode"    => "yesno",
        
"value"        => "no",
        
"disporder"        => "1",
        
"gid"            => intval($gid)
    );
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
        
"sid"            => "NULL",
        
"name"        => "image_resizer_maxwidth",
        
"title"        => "Maximum width",
        
"description"    => "What is the maximum width of images in posts/pb\'s.",
        
"optionscode"    => "text",
        
"value"        => "500",
        
"disporder"        => "2",
        
"gid"            => intval($gid),
    );
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
        
"sid"            => "NULL",
        
"name"        => "image_resizer_resizewidth",
        
"title"        => "Resize width",
        
"description"    => "To what width should images that exceed the maximum width be resized.",
        
"optionscode"    => "text",
        
"value"        => "500",
        
"disporder"        => "3",
        
"gid"            => intval($gid),
    );
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
        
"sid"            => "NULL",
        
"name"            => "image_resizer_borderstyle",
        
"title"            => "Border style",
        
"description"    => "What should the border of the image be when resized.",
        
"optionscode"    => "text",
        
"value"            => "2px dashed red",
        
"disporder"        => "4",
        
"gid"            => intval($gid),
    );
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
        
"sid"            => "NULL",
        
"name"            => "image_resizer_showwarning",
        
"title"            => "Show warning",
        
"description"    => "Should the users be warned to resize the image by a message under the image.",
        
"optionscode"    => "yesno",
        
"value"            => "yes",
        
"disporder"        => "5",
        
"gid"            => intval($gid),
    );
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
        
"sid"            => "NULL",
        
"name"            => "image_resizer_warning",
        
"title"            => "Warning",
        
"description"    => "What should be the text of the warning.",
        
"optionscode"    => "text",
        
"value"            => "This image is too large.",
        
"disporder"        => "6",
        
"gid"            => intval($gid),    
    );
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
        
"sid"            => "NULL",
        
"name"            => "image_resizer_warningcolor",
        
"title"            => "Warning text color",
        
"description"    => "What should be the text color of the warning.",
        
"optionscode"    => "text",
        
"value"            => "white",
        
"disporder"        => "7",
        
"gid"            => intval($gid),
    );
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
        
"sid"            => "NULL",
        
"name"            => "image_resizer_warningbackground",
        
"title"            => "Warning background",
        
"description"    => "What should be backgroundcolor of the warning.",
        
"optionscode"    => "text",
        
"value"            => "red",
        
"disporder"        => "8",
        
"gid"            => intval($gid),
    );
    
$db->insert_query("settings"$setting);
}

function 
imageresizer_deactivate()
{
    global 
$db;
    
    
//DELETE ALL SETTINGS
    
$db->query("DELETE FROM ".$prefix."settings WHERE name IN('image_resizer_active','image_resizer_maxwidth','image_resizer_resizewid​th','image_resizer_borderstyle','image_resizer_showwarning','image_resizer_warni​ng','image_resizer_warningcolor','image_resizer_warningbackground')");
    
$db->query("DELETE FROM ".$prefix."settinggroups WHERE name='Image resizer'");
}

function 
imageresizer_message($message)
{
    global 
$mybb;
    if (
$mybb->settings['image_resizer_active'] == "yes")
    {
        
$pattern '#<img(.*?)/>#';
        
$replace '<img class="postimage"$1/>';
        
$message preg_replace($pattern"$replace"$message);
    }
    return 
$message;
}

function 
imageresizer_page($page)
{
    global 
$mybb;
    
// var_dump($mybb);
    
if ($mybb->settings['image_resizer_active'] == "yes")
    {
        
$page str_replace('</head>'imageresizer_javascript().'</head>'$page);
        
$page preg_replace('#<body(.*?)>#''<body onload="resize_images()"$1>'$page);
    }
    
    return 
$page;
}

function 
imageresizer_javascript()
{
    global 
$mybb;
    
    
$maxwidth $mybb->settings['image_resizer_maxwidth'];
    
$resizewidth $mybb->settings['image_resizer_resizewidth'];
    
$borderstyle $mybb->settings['image_resizer_borderstyle'];
    
$warning $mybb->settings['image_resizer_warning']; 
    
$warningcolor $mybb->settings['image_resizer_warningcolor']; 
    
$warningbackground $mybb->settings['image_resizer_warningbackground'];
    
    
$javascript 
'<script language="javascript" type="text/javascript"><!-- 
    function resize_images() 
      { 
        for (i = 0; i < document.images.length; i++) 
        { 
            if (document.images[i].className == "postimage")
            {
                  while ( !document.images[i].complete ) 
                  { 
                     break;
                  } 
                  
                  var resized = false;
                  var oldwidth = 0;
                  if ( document.images[i].width > '
.$maxwidth.' ) 
                  { 
                      oldwidth = document.images[i].width;
                      oldheight = document.images[i].height;
                    document.images[i].width = '
.$resizewidth.'; 
                      resized = true;
                  } 
                  if ( document.images[i].style.width != "" ) 
                  { 
                      var stylewidth = document.images[i].style.width;
                      if (stylewidth.slice(stylewidth.length-2, stylewidth.length) == "px")
                      {
                          stylewidth = stylewidth.slice(0, stylewidth.length-2);
                      }
                      if ( stylewidth > '
.$maxwidth.' )
                     {     
                        document.images[i].style.width = "'
.$resizewidth.'px"; 
                        var styleheight = document.images[i].style.height;
                          if (styleheight.slice(styleheight.length-2, styleheight.length) == "px")
                          {
                              styleheight = styleheight.slice(0, styleheight.length-2);
                          }
                          document.images[i].style.height = '
.$resizewidth.' / stylewidth * styleheight + "px";
                          resized = true; 
                     }
                  } 
                  if (resized) 
                  {'
;
    if (
$borderstyle != "") {
        
$javascript .= '
                    document.images[i].style.borderTop = "'
.$borderstyle.'";
                    document.images[i].style.borderLeft = "'
.$borderstyle.'";
                    document.images[i].style.borderRight = "'
.$borderstyle.'";';
    }
    if (
$mybb->settings['image_resizer_showwarning'] == "yes") {
        
$javascript .= '
                      var parent = document.images[i].parentNode;
                      var warning = document.createElement("div");
                    warning.innerHTML = "<div>'
.$warning.'</div>";';
        if (
$warningcolor != "") {
            
$javascript .= '
                    warning.style.color = "'
.$warningcolor.'";';
        }
        if (
$warningbackground != "") {
            
$javascript .= '
                    warning.style.background = "'
.$warningbackground.'";';
        }
        if (
$borderstyle != "") {
            
$javascript .= '
                    warning.style.borderBottom = "'
.$borderstyle.'";
                    warning.style.borderLeft = "'
.$borderstyle.'";
                    warning.style.borderRight = "'
.$borderstyle.'";';
        }
        
$javascript .= '
                    warning.style.width = "'
.$resizewidth.'px";
                    parent.insertBefore(warning, document.images[i].nextSibling);'
;
    }
    else {    
        if (
$borderstyle != "") {
            
$javascript .= '
                    document.images[i].style.borderBottom = "'
.$borderStyle.'";';
        }
    }
    
$javascript .= '
                    if (document.images[i].parentNode.tagName.toLowerCase() != \'a\') {
                        document.images[i].onclick = openImage;
                    }
                  }
            }
        } 
      } 
      function openImage() {
          var winwidth = (this.naturalWidth < screen.availWidth ? this.naturalWidth : screen.availWidth);
        var winheight = (this.naturalHeight < screen.availHeight ? this.naturalHeight : screen.availHeight);
        window.open(this.src);
      } 
//--></script>'
;

    return 
$javascript;
}
?>

Written By: williamsoft man, 30th April 2009

Write Review