| Server IP : 180.180.241.3 / Your IP : 216.73.216.25 Web Server : Microsoft-IIS/7.5 System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/AppServ/www/news/tmp/install_53215b1643824/ |
Upload File : |
<?php
/**
* @author: GavickPro
* @copyright: 2008
**/
// no direct access
defined('_JEXEC') or die('Restricted access');
class Image{
// importing language
function importLang(){
jimport('joomla.language.helper');
jimport('joomla.filesystem.file');
$lang = JLanguageHelper::detectLanguage();
if(JFile::exists(JPATH_COMPONENT.DS.'configuration'.DS.'plugins'.DS.'plg_news_show_gk3'.DS.'language'.DS.$lang.'.lang.php')){
require_once(JPATH_COMPONENT.DS.'configuration'.DS.'plugins'.DS.'plg_news_show_gk3'.DS.'language'.DS.$lang.'.lang.php');
}else{
require_once(JPATH_COMPONENT.DS.'configuration'.DS.'plugins'.DS.'plg_news_show_gk3'.DS.'language'.DS.'en-GB.lang.php');
}
}
// uploading graphic
function upload($mWidth, $mHeight, $sWidth, $sHeight, $bg, $Quality){
// import pliku językowego
$this->importLang();
$LANG = new GKLang();
//
global $mainframe;
$plugin = JRequest::getCmd('plugin');
$option = JRequest::getCmd('option');
$client =& JApplicationHelper::getClientInfo(JRequest::getVar('client', '0', '', 'int'));
// generowanie hash'a umieszczanego na początku nazwy grafiki
$randomHash = rand(100000, 999999);
// jeżeli przesyłana grafika jest formatu JPG/PNG/GIF
if( $_FILES['image']['type'] == 'image/pjpeg' ||
$_FILES['image']['type'] == 'image/jpg' ||
$_FILES['image']['type'] == 'image/jpeg' ||
$_FILES['image']['type'] == 'image/png' ||
$_FILES['image']['type'] == 'image/gif' ||
$_FILES['image']['type'] == 'image/x-png' ){
// usuń z nazwy wszelkie znaki powodujace problemy w linkach
$new_name = preg_replace('/[^a-zA-Z0-9.]/', '_', $_FILES['image']['name']);
// przenoszenie pliku do odpowiedniego katalogu
jimport('joomla.filesystem.file');
if(!JFile::upload($_FILES['image']['tmp_name'], JPATH_SITE.DS.'components'.DS.'com_gk2_photoslide'.DS.'images'.DS.$randomHash.$new_name)){
$mainframe->redirect('index.php?option='.$option.'&client='.$client->id.'&task=view_group&cids='.$_POST["gid"], JText::_($LANG->ERROR_MOVING_FILE), 'error');
}
}
else{
// jeżeli grafika nie jest formatu JPG/PNG/GIF zwróć odpowiedni komunikat w formacie JSON
$mainframe->redirect('index.php?option='.$option.'&client='.$client->id.'&task=view_group&cids='.$_POST["gid"], JText::_($LANG->INVALID_TYPE), 'error');
}
// jeżeli wszystko ok to tworzymi miniaturki - średnią ...
$this->createThumbnail(JPATH_SITE.DS.'components'.DS.'com_gk2_photoslide'.DS.'images'.DS.$randomHash.$new_name, $randomHash.$new_name,$mWidth,$mHeight,'m',false,$bg,JPATH_SITE.DS.'components'.DS.'com_gk2_photoslide'.DS.'images'.DS, $Quality);
$this->createThumbnail(JPATH_SITE.DS.'components'.DS.'com_gk2_photoslide'.DS.'images'.DS.$randomHash.$new_name, $randomHash.$new_name,$sWidth,$sHeight,'s',false,$bg,JPATH_SITE.DS.'components'.DS.'com_gk2_photoslide'.DS.'images'.DS, $Quality);
// zwrócenie hasha
return $randomHash.$new_name;
}
/*
Metoda do tworzenia miniatur
*/
function createThumbnail($path, $name, $baseWidth, $baseHeight, $size, $str, $bg, $pathB, $Quality){
// import pliku językowego
$this->importLang();
$LANG = new GKLang();
//
$imageToChange = $path; // wysyłany obrazek
// składowe koloru tła
$hex_color = strtolower(trim($bg,'#;&Hh'));
$bg = array_map('hexdec',explode('.',wordwrap($hex_color, ceil(strlen($hex_color)/3),'.',1)));
$bgColorR = $bg[0];
$bgColorG = $bg[1];
$bgColorB = $bg[2];
// zmienna logiczna określająca czy obrazek ma być rozciągnięty (true) czy dopasowany (false)
$stretch = ($str == false) ? $_POST['stretch'] : (($str == 1) ? true : false);
// pobranie informacji o wysłanym obrazku
$imageData = getimagesize($path);
// tworzenie pustego szablonu na miniaturkę
$imageBG = imagecreatetruecolor($baseWidth, $baseHeight);
// tworzenie koloru i wypełnianie nim szablonu
$rgb = imagecolorallocate($imageBG, $bgColorR, $bgColorG, $bgColorB);
if($imageData['mime'] == 'image/jpeg' || $imageData['mime'] == 'image/pjpeg' || $imageData['mime'] == 'image/jpg' || $imageData['mime'] == 'image/gif') imagefill($imageBG, 0, 0, $rgb);
// ładowanie wysłanego obrazka na podstawie typu MIME
if($imageData['mime'] == 'image/jpeg' || $imageData['mime'] == 'image/pjpeg' || $imageData['mime'] == 'image/jpg') $imageSource = @imagecreatefromjpeg($path);
elseif($imageData['mime'] == 'image/gif') $imageSource = @imagecreatefromgif($path);
else $imageSource = @imagecreatefrompng($path);
// tutaj może wystąpić błąd gdy obrazek jest za duży - nic nie zostanie wtedy wypisane...
// ustawienie wymiarów obrazka w zmiennych
$imageSourceWidth = imagesx($imageSource);
$imageSourceHeight = imagesy($imageSource);
// jeżeli nie wybrano rozciągania obrazka
if(!$stretch){
// oblicz ratio dla pierwszego skalowania
$ratio = ($imageSourceWidth > $imageSourceHeight) ? $baseWidth/$imageSourceWidth : $baseHeight/$imageSourceHeight;
// oblicz nowe wymiary obrazka
$imageSourceNWidth = $imageSourceWidth * $ratio;
$imageSourceNHeight = $imageSourceHeight * $ratio;
// obliczanie ratio dla drugiego skalowania
if($baseWidth > $baseHeight){
if($imageSourceNHeight > $baseHeight){
$ratio2 = $baseHeight / $imageSourceNHeight;
$imageSourceNHeight *= $ratio2;
$imageSourceNWidth *= $ratio2;
}
}else{
if($imageSourceNWidth > $baseWidth){
$ratio2 = $baseWidth / $imageSourceNWidth;
$imageSourceNHeight *= $ratio2;
$imageSourceNWidth *= $ratio2;
}
}
// ustalanie pozycji wstawienia minitury
$base_x = floor(($baseWidth - $imageSourceNWidth) / 2);
$base_y = floor(($baseHeight - $imageSourceNHeight) / 2);
}
else{ // gdy uruchomiono rozciąganie obrazka
$imageSourceNWidth = $baseWidth;
$imageSourceNHeight = $baseHeight;
$base_x = 0;
$base_y = 0;
}
if(!($imageData['mime'] == 'image/jpeg' || $imageData['mime'] == 'image/pjpeg' || $imageData['mime'] == 'image/jpg' || $imageData['mime'] == 'image/gif')){
imagealphablending($imageBG, false);
imagesavealpha($imageBG, true);
}
// kopiowanie grafiki na bazie obliczonych/wygenerowanych parametrów
imagecopyresampled($imageBG, $imageSource, $base_x,$base_y, 0, 0, $imageSourceNWidth, $imageSourceNHeight, $imageSourceWidth, $imageSourceHeight);
// zapisanie obrazka w zalezności od typu MIME
if($imageData['mime'] == 'image/jpeg' || $imageData['mime'] == 'image/pjpeg' || $imageData['mime'] == 'image/jpg') imagejpeg($imageBG,$pathB.DS.'thumb'.$size.DS.$name, $Quality);
elseif($imageData['mime'] == 'image/gif') imagegif($imageBG, $pathB.'thumb'.$size.DS.$name);
else imagepng($imageBG, $pathB.'thumb'.$size.DS.$name/*, $Quality*/);
// zwrócenie wartości 1 świadczącej o powodzeniu operacji
return ($stretch) ? 1 : 0;
}
}
?>