*) обязательны!"); define('BLOB_LABEL_NAME', "Название"); define('BLOB_LABEL_SIZE', "Размер"); define('BLOB_LABEL_TYPE', "Тип"); // ATTENTION!!! THIS MESSAGE FOR Java script. It shoud be doublequoted!!! define('BLOB_WARNING_UNRECOVERABLE', "\"Это действие НЕЛЬЗЯ отменить!\\nВсе выбранные элементы будут уничтожены.\\n\\nВы уверены?\\n\\n\""); }else{ $BlobPrompts['TEXT'] = "Text loading for %s "%s""; $BlobPrompts['IMAGE'] = "Images loading for %s "%s""; $BlobPrompts['AUDIO'] = "Audio loading for %s "%s""; $BlobPrompts['VIDEO'] = "Video loading for %s "%s""; $BlobPrompts['APPLICATION'] = "Application loading for %s "%s""; define('BLOB_LABEL_FILE', "File"); define('BLOB_LABEL_LABEL', "Label"); define('BLOB_LABEL_PLACE_ON', "Place on picture"); define('BLOB_LABEL_DESCRIPTION', "Description"); define('BLOB_LABEL_QUALITY', "Quality"); define('BLOB_LABEL_LOAD', "Load"); define('BLOB_LABEL_CLOSE', "Close"); define('BLOB_LABEL_DELETE', "Delete"); define('BLOB_LABEL_UPDATE', "Update"); define('BLOB_LABEL_SELECTCLASS', "Select BLOB class"); define('BLOB_LABEL_REQUIRED', "All fields marked with (*) are required"); define('BLOB_LABEL_NAME', "Name"); define('BLOB_LABEL_SIZE', "Size"); define('BLOB_LABEL_TYPE', "Type"); // ATTENTION!!! THIS MESSAGE FOR Java script. It shoud be doublequoted!!! define('BLOB_WARNING_UNRECOVERABLE', "\"Unrecoverable action!\\nAll market item will be erased.\\n\\nAre You sure?\\n\\n\""); } $QUAL_KEYS[] = ""; $QUAL_KEYS[] = "20"; $QUAL_KEYS[] = "50"; $QUAL_KEYS[] = "75"; $QUAL_KEYS[] = "95"; if( $SLANG == "Ru" ){ $QUAL_DATA[0] = "Не менять"; $QUAL_DATA[1] = "Низкое"; $QUAL_DATA[2] = "Среднее"; $QUAL_DATA[3] = "Высокое"; $QUAL_DATA[4] = "Замечательное"; }else{ $QUAL_DATA[0] = "Don't change"; $QUAL_DATA[1] = "Low"; $QUAL_DATA[2] = "Medium"; $QUAL_DATA[3] = "Hi"; $QUAL_DATA[4] = "Excelent"; } if( $SLANG == "Ru" ){ define('BLOB_ERROR_UNSUPPORTED_TYPE', "Ошибка: Несоответствие типа файла и расширения."); define('BLOB_ERROR_FILE_NOT_FOUND', "Ошибка: Файл не найден (%s)"); define('BLOB_ERROR_FILE_BROKEN', "Ошибка: Файл поврежден"); define('BLOB_ERROR_CANT_SIZE', "Ошибка: Преобразованная картинка не подходит под наши стандарты.") ; define('BLOB_ERROR_NOANIMATION', "Ошибка: Загрузка составных картинок типа анимированный-GIF - запрещена.\n"); define('BLOB_ERROR_BAD_CAPTION', "Ошибка: Плохие символы в названии.\nТолько цифры, буквы (к сожалению пока только английские буковки), подчеркивание, знак минус.\nПредупреждение: Название пропущено.\n"); define('BLOB_ERROR_TRANSFORM', "Ошибка во время преобразования картинки (%s)\n"); define('BLOB_ERROR_TRANSFORMED_SIZE', "Ошибка: Размер преобразованного файла %s. Максимально допустимый размер - %s.\n"); define('BLOB_ERROR_WIDTH_MIN', "Ошибка: Ширина картинки после преобразования - %s. Минимально допустимо - %s.\n"); define('BLOB_ERROR_HEIGHT_MIN', "Ошибка: Высота картинки после преобразования - %s. Минимально допустимо - %s\n"); define('BLOB_ERROR_WIDTH_MAX', "Ошибка: Ширина картинки после преобразования - %s. Максимально допустимо - %s\n"); define('BLOB_ERROR_HEIGHT_MAX', "Ошибка: Высота картинки после преобразования - %s. Максимально допустимо - %s\n"); define('BLOB_ERROR_TEXT_LEN_MAX', "Ошибка: Размер загруженного текста - %s. Максимальный допустимый размер - %s.\n"); define('BLOB_ERROR_NO_BLOB_CLASS', "Ошибка: Не установлен тип BLOB объекта.\n"); define('BLOB_ERROR_NO_MIME_CLASS', "Ошибка: Не могу определить MIME класс загруженного файла.\n"); define('BLOB_ERROR_INCOMPATIBLE_MIME', "Ошибка: Несоответствие MIME класса файла и MIME класса BLOB объекта.\n"); define('BLOB_ERROR_DISABLED_TYPE', "Ошибка: Загрузка подобных файлов - запрещена.\n"); define('BLOB_ERROR_FILE_IS_EMPTY', "Ошибка: Загруженный файл - пуст.\n"); define('BLOB_ERROR_TOO_MANY_PICS', "Ошибка: Слишком много картинок. Предел - %s.\nПожалуйста удалите старые чтобы добавить новые.\n"); define('BLOB_ERROR_VULGAR_WORDS', "Ошибка: В названии или описании присутствуют запрещенные конструкции! Слова типа %s недопустимы.\n"); define('BLOB_ERROR_DUPLICATE_FILE_NAME', "Ошибка: Возможно Вы уже загрузили файл с таким именем.\n"); define('BLOB_MSG_LIMITATIONS_IMAGE', "Размер min: %sx%s пикселей max: %sx%s пикселей. Размер файла: %sKb.
Максимальное количество изображений - %s.
Система автоматически изменит размер изображения под стандарты сайта."); define('BLOB_MSG_LIMITATIONS_TEXT', "Максимальный размер текста %sKb.
"); define('BLOB_MSG_LIMITATIONS_AUDIO', "Максимальный размер звукового файла не более "); define('BLOB_MSG_LIMITATIONS_VIDEO', "Максимальный размер видео файла не более "); define('BLOB_MSG_LIMITATIONS_APPLICATION', "Максимальный размер файла не более "); define('BLOB_MSG_IMAGE_SIZE_CHANGED', "Размер картинки был изменен под наши стандарты.\n"); define('BLOB_MSG_TEMPORARY_UNAVAILABLE', "Временно не работает.\n"); define('BLOB_MSG_REAL_SIZE', "Внимание! Реальный размер изображения отличается от того что вы видите сейчас. Кликните по картинке чтобы увидеть реальный размер.
"); }else{ define('BLOB_ERROR_UNSUPPORTED_TYPE', "Error: Sorry, we currently accepting only JPG, GIF and BMP files."); define('BLOB_ERROR_FILE_NOT_FOUND', "Error: File not found (%s)"); define('BLOB_ERROR_FILE_BROKEN', "Error: File is broken"); define('BLOB_ERROR_CANT_SIZE', "Error: Resized picture is out of size limits.") ; define('BLOB_ERROR_NOANIMATION', "Error: Uploading of multipart images, like animated GIFs, is disabled.\n"); define('BLOB_ERROR_BAD_CAPTION', "Error: Bad characters in CAPTION text.\nOnly letters, digits, underscore or minus sign allowed.\nError: Caption text ignored.\n"); define('BLOB_ERROR_TRANSFORM', "Error: Error while image transform (%s)\n"); define('BLOB_ERROR_TRANSFORMED_SIZE', "Error: transformed size %s is large than maximum allowed size %s.\n"); define('BLOB_ERROR_WIDTH_MIN', "Error: Width after transform - %s. Minimum allowed width - %s.\n"); define('BLOB_ERROR_HEIGHT_MIN', "Error: Height after transform - %s. Minimum allowed height - %s\n"); define('BLOB_ERROR_WIDTH_MAX', "Error: Width after transform - %s. Maximum allowed width - %s\n"); define('BLOB_ERROR_HEIGHT_MAX', "Error: Height after transform - %s. maximum allowed height - %s\n"); define('BLOB_ERROR_TEXT_LEN_MAX', "Error: Loaded text size - %s. Maximum allowed text size - %s.\n"); define('BLOB_ERROR_NO_BLOB_CLASS', "Error: BLOB class is not defined.\n"); define('BLOB_ERROR_NO_MIME_CLASS', "Error: Can't determine MIME class of uploaded file.\n"); define('BLOB_ERROR_INCOMPATIBLE_MIME', "Error: Incompatible MIME types.\n"); define('BLOB_ERROR_DISABLED_TYPE', "Error: Sorry, we currently accepting only JPG, GIF and BMP files.\n"); define('BLOB_ERROR_FILE_IS_EMPTY', "Error: File is empty.\n"); define('BLOB_ERROR_TOO_MANY_PICS', "Error: Too many pictures. maximum allowed - %s.\n"); define('BLOB_ERROR_VULGAR_WORDS', "Error: Vulgar words in caption or name! Unallowed: %s.\n"); define('BLOB_ERROR_DUPLICATE_FILE_NAME', "Error: Duplicate file name.\n"); define('BLOB_MSG_LIMITATIONS_IMAGE', "Picture size min: %sx%s pixels max: %sx%s pixels. File size limit: %sKb.
Maximum number of images per asset - %s.
We will try to reformat Your image under our standards."); define('BLOB_MSG_LIMITATIONS_TEXT', "Maximum text size %sKb.
"); define('BLOB_MSG_LIMITATIONS_AUDIO', "Maximum audio file size "); define('BLOB_MSG_LIMITATIONS_VIDEO', "Maximum video file size "); define('BLOB_MSG_LIMITATIONS_APPLICATION', "Maximum video file size "); define('BLOB_MSG_IMAGE_SIZE_CHANGED', "Image size changed.\n"); define('BLOB_MSG_TEMPORARY_UNAVAILABLE', "Temporary unavailabel.\n"); define('BLOB_MSG_REAL_SIZE', "Attention! Click on image to see it's real size.
"); } /* ** Upload functions... */ function SafeFileUnlink($BlobFileName){ global $BLOBDebugMode; if( is_file($BlobFileName) && (substr($BlobFileName, 0, 5) == "/tmp/" ) ){ // unlink files from /tmp if( !$BLOBDebugMode ){ @unlink($BlobFileName); } } } /* ** Check the uploaded file type and returns it's MIME type. */ function GetFileMIMEType($UploadedFileName){ global $DOCUMENT_ROOT ; global $MAGIC_FILE ; global $BLOBDebugMode; global $THE_FILE_COMMAND; $PredefinedTypes = array ( "data" => "application/octet-stream", "empty" => "application/octet-stream", "ASCII text" => "text/plain", "HTML document text" => "text/html", "Java program text" => "text/plain", "news text" => "text/plain", "mail text" => "text/plain", "Pascal program text" => "text/plain", "English text" => "text/plain", "assembler program text" => "text/plain", "PL/1 program text" => "text/plain", "make commands text" => "text/plain", "FORTRAN program text" => "text/plain", "C++ program text" => "text/plain", "C program text" => "text/plain" ); /* ** !!! ATTENTION !!! ** /usr/bin/file is standard unix FILE(1) - determine file type ** $DOCUMENT_ROOT/../magic.upload - file with magics for uploaded images */ $FileTesterProg = "$THE_FILE_COMMAND $MAGIC_FILE "; $ExecString = escapeshellcmd($FileTesterProg . $UploadedFileName); if( $BLOBDebugMode ) echo $ExecString . "
\n"; $TestFileResult = trim(`$ExecString`); $R2 = explode (" ", $TestFileResult); $TestFileResult = $R2[1]; if( $BLOBDebugMode ) echo $TestFileResult . " <<-R
\n"; if( $PredefinedTypes[$TestFileResult] != "" ){ $UpMIME = $PredefinedTypes[$TestFileResult]; }else{ $UpMIME = strtok($TestFileResult," "); } if( $BLOBDebugMode ) echo "Result MIME type is - $UpMIME
\n"; return $UpMIME ; } // GetFileMIMEType /* ** Check upload file name and verify correspondance of mime type and mime extention ** also sets $UploadAllowed - flag to TRUE if uploading of those MIME type allowed and FALSE otherwise... */ function CheckUploadedFileName($UploadedFileRealName, $MIMEtype, &$UploadAllowed){ global $DB, $DBID; global $BLOBDebugMode; if( $BLOBDebugMode ) echo "$UploadedFileRealName, $MIMEtype, $UploadAllowed
\n"; $ErrText = ""; $UploadedFileRealName = strtolower($UploadedFileRealName); /* $UploadedFileRealNameCheck = ereg_replace("[a-zA-Z0-9_\.\-]*", "", $UploadedFileRealName); if( $UploadedFileRealNameCheck != "" ){ $ErrText = $ErrText . "Ошибка: Неправильное имя файла - "$UploadedFileRealName"!\nДопустимы только цифры, английские буквыб минус и знак подчеркивания!\n"; } */ $UploadedFileRealType = substr( strrchr( $UploadedFileRealName, "." ), 1 ); $SQL = "select count(*) as cnt, AIV_MIME_TYPES.MT_STATUS from AIV_MIME_TYPES ". "left join AIV_MIME_EXTENTIONS on AIV_MIME_TYPES.MT_ID = AIV_MIME_EXTENTIONS.ME_MIMETYPEID ". "where MT_MIME='$MIMEtype' and ME_MIMETYPEEXT='$UploadedFileRealType'" . "group by MT_STATUS"; $SQL = "select count(*) as cnt, AIV_MIME_TYPES.MT_STATUS from AIV_MIME_TYPES ". "left join AIV_MIME_EXTENTIONS on AIV_MIME_TYPES.MT_ID = AIV_MIME_EXTENTIONS.ME_MIMETYPEID ". "where ME_MIMETYPEEXT='$UploadedFileRealType'" . "group by MT_STATUS"; if( $BLOBDebugMode ) echo "CheckUploadedFileName: $SQL
"; $result = GetObject($DB, $SQL); $N = 0; $UploadAllowed = 0; if( $result ){ $N = $result["cnt"]; $UploadAllowed = $result["MT_STATUS"] == 'E' ; }else if( ($MIMEtype == 'text/plain') && $UploadedFileRealType=='' ){ // this is a trick for PLAIN TEXT files without extention... $N = 1 ; $UploadAllowed = 'Y' ; } if( $N != 1 ){ $ErrText = $ErrText . BLOB_ERROR_UNSUPPORTED_TYPE; } return $ErrText ; } // CheckUploadedFileName function GetLimitationIDbyName($LimitationName){ global $DB; $SQL = "select CDL_ID from AIV_CONTENT_DATA_LIMITS where CDL_NAME=" . QuoteAndSlashes($LimitationName); $result = GetObject($DB, $SQL); return $result["CDL_ID"]; } // GetLimitationIDbyName($LimitationName) function GetLimitationByName($LimitationName){ global $DB; $SQL = "select * from AIV_CONTENT_DATA_LIMITS where CDL_NAME='$LimitationName' "; return GetObject($DB, $SQL); } // GetLimitationByName($LimitationName) function GetBlobLimitsAsText($LimitationName){ $Limitation = GetLimitationByName($LimitationName); if( !$Limitation ){ return ""; } switch( $Limitation['CDL_CLASS'] ){ case 'IMAGE': return sprintf( BLOB_MSG_LIMITATIONS_IMAGE, $Limitation['CDL_MIN_WIDTH'], $Limitation['CDL_MIN_HEIGHT'], $Limitation['CDL_MAX_WIDTH'], $Limitation['CDL_MAX_HEIGHT'], ceil($Limitation['CDL_LENGTH']/1024), $Limitation['CDL_MAX_PER_ASSET'] ); case 'TEXT': return sprintf( BLOB_MSG_LIMITATIONS_TEXT, ceil($Limitation['CDL_LENGTH']/1024) ); case 'AUDIO': return BLOB_MSG_LIMITATIONS_AUDIO . ceil($Limitation['CDL_LENGTH']/1024) . "Kb.
"; case 'VIDEO': return BLOB_MSG_LIMITATIONS_VIDEO . ceil($Limitation['CDL_LENGTH']/1024) . "Kb.
"; case 'APPLICATION': return BLOB_MSG_LIMITATIONS_APPLICATION . ceil($Limitation['CDL_LENGTH']/1024) . "Kb.
"; default: return ""; } } // GetBlobLimitsAsText($LimitationName) /* ** The BLOB class. */ class TheBLOB{ var $CD_ID; // int not null auto_increment primary key, var $CD_CLASS; // CD_CLASS - stands for: T-text G-graphics S-sounds M-media D-binary data... var $CD_LIMITATIONID; // limitation type for curren BLOB var $CD_MIMETYPEID; // original mime type for auto outputs... var $CD_NAME; // original file name var $CD_CAPTION; // short text to place on image... var $CD_DESCRIPTION; // var $CD_LENGTH; // original file length... var $CD_WIDTH; // additional WINDOW sizes info for graphics and media... var $CD_HEIGHT; var $CD_OWNER_ASSET_ID; // owner of media recource var $CD_STATUS; // status stands for : E-enabled D-disabled... var $CD_DATA; // TheBlob! // inherited from mime type... var $MT_MIME; // inherited from LIMITS... var $CDL_NAME; var $CDL_DISPLAYFUNC; var $CDL_LENGTH; var $CDL_MAX_WIDTH; var $CDL_MAX_HEIGHT; var $CDL_MIN_WIDTH; var $CDL_MIN_HEIGHT; var $CDL_MAX_PER_ASSET; var $CDL_CLASS; // internal class variables var $is_error ; function TheBLOB($CD_ID = ""){ // The constructor. // if $CD_ID != "" trying to load BLOB from database else just create an empty one $this->is_error = 0; if( isset($CD_ID) && ($CD_ID!="") ){ $this->is_error = $this->LoadBlob($CD_ID); }else{ // do nothing... just empty blob } } // TheBLOB function CheckBLOBLimits($BlobFileName, $OriginalName, &$TargetBlobName, $BLOB_QUALITY="", $AnnotateLogo=true){ global $DOCUMENT_ROOT; global $BLOBDebugMode; global $IMAGE_MAGIC_BIN; global $FONT_FILE; if( !is_file($BlobFileName) ){ $this->is_error = 1; return sprintf( BLOB_ERROR_FILE_NOT_FOUND, $BlobFileName ); } $Err = ""; if( $BLOBDebugMode ) { var_dump($this); echo "
\n"; } switch( $this->CD_CLASS ){ case "IMAGE": /* ** 1) determine uploaded IMAGE attributes */ // 0 1 2 3 4 5 $cmd = "$IMAGE_MAGIC_BIN/identify -format \"%m:%e:%f:%w:%h:%n\\n\" $BlobFileName" ; if( $BLOBDebugMode ) { echo "::" .__LINE__. ": $cmd :::
\n"; } $Message = trim(`$cmd`); $ImageData = split(":", $Message); $RealMagic = $ImageData[0]; $RealExtention = $ImageData[1]; $RealWidth = $ImageData[3]; $RealHeight = $ImageData[4]; $RealSubimages = $ImageData[5]; if( $BLOBDebugMode ) { echo "CheckBLOBLimits:" ; var_dump($ImageData); echo "
\n"; } if( $RealMagic=="" || $RealWidth=="" || $RealHeight=="" ){ $this->is_error = 1; if( $BLOBDebugMode ) echo " *** " . __LINE__ . " ***
\n"; return BLOB_ERROR_FILE_BROKEN; } // if( $RealMagic=="GIF" ){ // $DestType = "gif"; // $this->SetMimeType("image/gif"); // }else{ $DestType = "jpeg"; $this->SetMimeType("image/jpeg"); // } $OriginalName = @ereg_replace("\.$RealExtention$", "\.$DestType", $OriginalName); $DoScale = 0; $SET_WIDTH = $this->CDL_MAX_WIDTH ; $SET_HEIGHT = $this->CDL_MAX_HEIGHT; $ScaleFactor = ""; unset($kWidth); unset($kHeight); unset($TrMode); if( $RealWidth < $this->CDL_MIN_WIDTH ){ $DoScale = 1; $SET_WIDTH = $this->CDL_MIN_WIDTH ; $kWidth = $this->CDL_MIN_WIDTH / $RealWidth; } if( $RealHeight < $this->CDL_MIN_HEIGHT ){ $DoScale = 1; $SET_HEIGHT = $this->CDL_MIN_HEIGHT; $kHeight = $this->CDL_MIN_HEIGHT / $RealHeight; } if( isset($kWidth) || isset($kHeight) ){ $kTrans = max($kWidth, $kHeight); $TrMode = "enlarge"; }else{ // check decrease mode if( $RealWidth > $this->CDL_MAX_WIDTH ){ $DoScale = 1; $SET_WIDTH = $this->CDL_MAX_WIDTH ; $kWidth = $this->CDL_MAX_WIDTH / $RealWidth; } if( $RealHeight > $this->CDL_MAX_HEIGHT ){ $DoScale = 1; $SET_HEIGHT = $this->CDL_MAX_HEIGHT; $kHeight = $this->CDL_MAX_HEIGHT / $RealHeight; } if( isset($kWidth) || isset($kHeight) ){ if( !isset($kWidth) ){ $kTrans = $kHeight; }else if( !isset($kHeight) ){ $kTrans = $kWidth; }else{ $kTrans = min($kWidth, $kHeight); } $TrMode = "decrease"; } } if( isset($kTrans) ){ $SET_WIDTH = floor($RealWidth * $kTrans); $SET_HEIGHT = floor($RealHeight * $kTrans); if( ($SET_WIDTH > $this->CDL_MAX_WIDTH) || ($SET_WIDTH < $this->CDL_MIN_WIDTH) || ($SET_HEIGHT > $this->CDL_MAX_HEIGHT) || ($SET_HEIGHT < $this->CDL_MIN_HEIGHT) ){ $this->is_error = 1; $Err = $Err . BLOB_ERROR_CANT_SIZE; // . "(K: $kTrans W: $RealWidth -- $SET_WIDTH -- $this->CDL_MAX_WIDTH H: $RealHeight -- $SET_HEIGHT -- $this->CDL_MAX_HEIGHT )\n"; return $Err; } $DoScale = 1; }else{ $DoScale = 0; } if( $RealSubimages!=1 ){ /* ** TEMPORARY WE DISABLE UPLOADING OF MULTIPART IMAGES */ $Err = $Err . BLOB_ERROR_NOANIMATION; $this->is_error = 1; return $Err; } if( $DoScale == 1 ){ $Err = $Err . BLOB_MSG_IMAGE_SIZE_CHANGED ; } $TargetBlobName = "$BlobFileName.$DestType"; if( $DoScale ){ $Transform = "$IMAGE_MAGIC_BIN/convert -cache 2 -treedepth 2 -geometry " . $SET_WIDTH ."x" . $SET_HEIGHT . " " ; $Transform = $Transform . " $BlobFileName $TargetBlobName"; $Message = trim(`$Transform`) ; }else{ $Transform="/bin/cp $BlobFileName $TargetBlobName"; $Message = trim(`$Transform`) ; } if( $BLOB_QUALITY!="" ){ $BLOB_QUALITY = (int)$BLOB_QUALITY; if( $BLOB_QUALITY>=10 && $BLOB_QUALITY<=100 ){ $BLOB_QUALITY = "-quality $BLOB_QUALITY"; $Transform = "$IMAGE_MAGIC_BIN/convert -cache 2 -treedepth 2 $BLOB_QUALITY " ; $Transform = $Transform . " $TargetBlobName $TargetBlobName"; $Message = $Message . trim(`$Transform`) ; } } if( $BLOBDebugMode ) echo "DoScale = $DoScale ; " . $Transform . "
\n"; /* ** Annotate section */ if( $this->AnnotateBlob && $this->CD_CAPTION != "" ){ $CaptionText = ereg_replace('[\.\'\,\!a-zA-Z_0-9 \-]*', "", $this->CD_CAPTION); if( $CaptionText == "" ){ $CaptionText = $this->CD_CAPTION; // $CaptionText = escapeshellcmd( $CaptionText ); $Transform = "$IMAGE_MAGIC_BIN/convert -cache 2 -treedepth 2 " ; $Transform = $Transform . "-gravity South -box white -font @$FONT_FILE -fill black -draw \"text 0,13 \\\"$CaptionText\\\"\" " ; $Transform = $Transform . " $TargetBlobName $TargetBlobName"; if( $BLOBDebugMode ) echo "611:: $Transform ::
"; $Message = $Message . trim(`$Transform`) ; }else{ $Err = $Err . BLOB_ERROR_BAD_CAPTION; } } if( $Message != "" ){ $this->is_error = 1; return $Err . sprintf( BLOB_ERROR_TRANSFORM, $Message); } // 0 1 2 3 4 5 $cmd = "$IMAGE_MAGIC_BIN/identify -format \"%m:%e:%f:%w:%h:%n\\n\" $TargetBlobName" ; $Message = trim(`$cmd`); $ImageData = split(":", $Message); $this->CD_LENGTH = filesize($TargetBlobName); // original file length... $this->CD_WIDTH = $ImageData[3]; // additional WINDOW sizes info for graphics and media... $this->CD_HEIGHT = $ImageData[4]; $RealWidth = $ImageData[3]; $RealHeight = $ImageData[4]; // Add logo!!! if( $AnnotateLogo ){ $LogoW = 30; $LogoH = 30; $LogoW = 24; $LogoH = 16; $XLogo = $RealWidth - $LogoW - 2; $YLogo = $RealHeight - $LogoH - 2; // $Transform = "$IMAGE_MAGIC_BIN/convert -draw 'image $XLogo,$YLogo 88,32 $DOCUMENT_ROOT/images/logo.jpg' $TargetBlobName $TargetBlobName"; // $Transform = "$IMAGE_MAGIC_BIN/combine -compose atop -geometry +0+0 $TargetBlobName $DOCUMENT_ROOT/images/logoadd6.gif $TargetBlobName"; // $Transform = "$IMAGE_MAGIC_BIN/convert -colorspace Transparent -transparency 0xFFFFFF -draw 'image $XLogo,$YLogo $LogoW,$LogoH $DOCUMENT_ROOT/images/photologo.gif' $TargetBlobName $TargetBlobName"; $Transform = "$IMAGE_MAGIC_BIN/convert -colorspace Transparent -transparency 0xFFFFFF -draw 'image 2,2 $LogoW,$LogoH $DOCUMENT_ROOT/images/photologo.gif' $TargetBlobName $TargetBlobName"; $Message = $Message . trim(`$Transform`) ; /* if( $DestType!="gif" ){ $lif = imagecreatefromjpeg ("$DOCUMENT_ROOT/images/logoadd4.jpg"); $iif = imagecreatefromjpeg ($TargetBlobName); ImageCopy ($iif, $lif, $XLogo, $YLogo, 0, 0, 85, 32); imagejpeg ( $iif, $TargetBlobName); } */ } if( $this->CD_LENGTH > $this->CDL_LENGTH ){ $this->is_error = 1; $Err = $Err . sprintf(BLOB_ERROR_TRANSFORMED_SIZE, $this->CD_LENGTH, $this->CDL_LENGTH); } if( $RealWidth < $this->CDL_MIN_WIDTH ){ $this->is_error = 1; $Err = $Err . sprintf(BLOB_ERROR_WIDTH_MIN, $RealWidth, $this->CDL_MIN_WIDTH); } if( $RealHeight < $this->CDL_MIN_HEIGHT ){ $this->is_error = 1; $Err = $Err . sprintf(BLOB_ERROR_HEIGHT_MIN, RealHeight, $this->CDL_MIN_HEIGHT); } if( $RealWidth > $this->CDL_MAX_WIDTH ){ $this->is_error = 1; $Err = $Err . sprintf(BLOB_ERROR_WIDTH_MAX, $RealWidth, $this->CDL_MAX_WIDTH); } if( $RealHeight > $this->CDL_MAX_HEIGHT ){ $this->is_error = 1; $Err = $Err . sprintf(BLOB_ERROR_HEIGHT_MAX, RealHeight, $this->CDL_MAX_HEIGHT); } return $Err ; break; case "TEXT": if( $this->CD_LENGTH > $this->CDL_LENGTH ){ $this->is_error = 1; $Err = $Err . sprintf(BLOB_ERROR_TEXT_LEN_MAX, $this->CD_LENGTH, $this->CDL_LENGTH); } return ""; case "AUDIO": case "VIDEO": case "APPLICATION": // echo "
LALAYLA!!!!
"; $TargetBlobName = $BlobFileName; // $this->SetMimeType('application/octet-stream'); $this->CD_LENGTH = filesize($TargetBlobName);; return ""; return BLOB_MSG_TEMPORARY_UNAVAILABLE; break; } return ""; } // CheckBLOBLimits // set blob data from file... // function UpdateBlob($BlobFileName, $OriginalName, $AnnotateBlob='N', $BLOB_QUALITY="", $AnnotateLogo=true){ global $DB; global $BLOBDebugMode; $this->AnnotateBlob = ($AnnotateBlob == "Y"); if( $BLOBDebugMode ) echo "UpdateBlob: $BlobFileName, $OriginalName .
\n"; $this->is_error = 0; if($BlobFileName!="" && is_file($BlobFileName) ){ $FileMIMEType = GetFileMIMEType($BlobFileName); if( $this->CD_CLASS == "" ){ $this->is_error = 1; return BLOB_ERROR_NO_BLOB_CLASS; } if( $FileMIMEType=="application/msword" && (substr($OriginalName, -4)==".xls") ){ $FileMIMEType = "application/vnd.ms-excel"; } $this->SetMimeType($FileMIMEType); $MIMEClass = strtolower(strtok($FileMIMEType,"/")); if( $MIMEClass == "" ){ $this->is_error = 1; return BLOB_ERROR_NO_MIME_CLASS; } if( strtolower($this->CD_CLASS) != $MIMEClass ){ $this->is_error = 1; return BLOB_ERROR_INCOMPATIBLE_MIME; } $UploadAllowed = 0; $Err = CheckUploadedFileName($OriginalName, $FileMIMEType, $UploadAllowed); if( $Err != "" ){ $this->is_error = 1; return $Err; } if( !$UploadAllowed ){ $this->is_error = 1; return BLOB_ERROR_DISABLED_TYPE; } $Err = $this->CheckBLOBLimits($BlobFileName, $OriginalName, $ResultBlobFile, $BLOB_QUALITY, $AnnotateLogo); if( $this->is_error ){ SafeFileUnlink($BlobFileName); if( !$BLOBDebugMode ){ @unlink($ResultBlobFile); } return $Err; } $BlobFile = @fopen($ResultBlobFile, "r"); if( $BLOBDebugMode ) echo "766: $ResultBlobFile.
\n"; if ( $BlobFile==0 ){ SafeFileUnlink($BlobFileName); if( !$BLOBDebugMode ){ unlink($ResultBlobFile); } $this->is_error = 1; if( $BLOBDebugMode ) echo "773 *** " . __LINE__ . " ***
\n"; return BLOB_ERROR_FILE_BROKEN; } clearstatcache(); $this->CD_DATA = fread( $BlobFile, filesize($ResultBlobFile) ) ; // echo sizeof($this->CD_DATA) . " vs " . filesize($ResultBlobFile) ; $this->CD_DATA = $this->CD_DATA; $this->CD_NAME = trim( stripslashes( $OriginalName ) ); if( $BLOBDebugMode ) echo "782: " . strlen($this->CD_DATA) . ".
\n"; fclose($BlobFile); SafeFileUnlink($BlobFileName); if( !$BLOBDebugMode ){ @unlink($ResultBlobFile); } }else{ $This->CD_DATA = ""; } return $Err ; } // UpdateBlob // Direct blob update // used for TEXT only function UpdateBlobDirect($AnBlob, $OriginalName=""){ global $DB; $this->CD_DATA = $AnBlob; $this->CD_NAME = $OriginalName; return true ; } // UpdateBlobDirect // load object BLOB from DATABASE // returns TRUE on success and FALSE otherwise... function LoadBlob($OtherBlobID, $WithDATA=1){ global $DB; global $BLOBDebugMode; if( $WithDATA ){ // all data $SQL = "select AIV_CONTENT_DATA.*, AIV_MIME_TYPES.MT_MIME, AIV_CONTENT_DATA_LIMITS.* from AIV_CONTENT_DATA ". "left join AIV_MIME_TYPES on AIV_CONTENT_DATA.CD_MIMETYPEID = AIV_MIME_TYPES.MT_ID ". "left join AIV_CONTENT_DATA_LIMITS on AIV_CONTENT_DATA.CD_LIMITATIONID = AIV_CONTENT_DATA_LIMITS.CDL_ID ". "where CD_ID='$OtherBlobID'"; }else{ // all data but without the BLOB data :)) $SQL = "select AIV_CONTENT_DATA.CD_ID, AIV_CONTENT_DATA.CD_CLASS, AIV_CONTENT_DATA.CD_LIMITATIONID, AIV_CONTENT_DATA.CD_MIMETYPEID, ". "AIV_CONTENT_DATA.CD_NAME, AIV_CONTENT_DATA.CD_DESCRIPTION, AIV_CONTENT_DATA.CD_CAPTION, ". "AIV_CONTENT_DATA.CD_LENGTH, AIV_CONTENT_DATA.CD_WIDTH, AIV_CONTENT_DATA.CD_HEIGHT, ". "AIV_CONTENT_DATA.CD_OWNER_ASSET_ID, AIV_CONTENT_DATA.CD_STATUS, AIV_CONTENT_DATA.CD_PUBDATE, AIV_CONTENT_DATA.CD_MODDATE, ". "AIV_MIME_TYPES.MT_MIME, AIV_CONTENT_DATA_LIMITS.* from AIV_CONTENT_DATA ". "left join AIV_MIME_TYPES on AIV_CONTENT_DATA.CD_MIMETYPEID = AIV_MIME_TYPES.MT_ID ". "left join AIV_CONTENT_DATA_LIMITS on AIV_CONTENT_DATA.CD_LIMITATIONID = AIV_CONTENT_DATA_LIMITS.CDL_ID ". "where CD_ID='$OtherBlobID'"; } // if( $BLOBDebugMode ) echo "LoadBLOB: " . $SQL . "
\n"; $result = GetObject($DB, $SQL); if( $result ){ $this->CD_ID = $result["CD_ID"]; $this->CD_CLASS = $result["CD_CLASS"]; $this->CD_LIMITATIONID = $result["CD_LIMITATIONID"]; $this->CD_MIMETYPEID = $result["CD_MIMETYPEID"]; $this->CD_NAME = $result["CD_NAME"]; $this->CD_CAPTION = $result["CD_CAPTION"]; $this->CD_DESCRIPTION = $result["CD_DESCRIPTION"]; $this->CD_LENGTH = $result["CD_LENGTH"]; $this->CD_WIDTH = $result["CD_WIDTH"]; $this->CD_HEIGHT = $result["CD_HEIGHT"]; $this->CD_OWNER_ASSET_ID= $result["CD_OWNER_ASSET_ID"]; $this->CD_STATUS = $result["CD_STATUS"]; $this->CD_PUBDATE = $result["CD_PUBDATE"]; $this->CD_MODDATE = $result["CD_MODDATE"]; if( $WithDATA ){ $this->CD_DATA = $result["CD_DATA"]; }else{ unset($this->CD_DATA); } // inherited from MIME TYPE $this->MT_MIME = $result["MT_MIME"]; // inherited from limits... $this->CDL_NAME = $result["CDL_NAME"]; $this->CDL_DISPLAYFUNC = $result["CDL_DISPLAYFUNC"]; $this->CDL_LENGTH = $result["CDL_LENGTH"]; $this->CDL_MAX_WIDTH = $result["CDL_MAX_WIDTH"]; $this->CDL_MAX_HEIGHT = $result["CDL_MAX_HEIGHT"]; $this->CDL_MIN_WIDTH = $result["CDL_MIN_WIDTH"]; $this->CDL_MIN_HEIGHT = $result["CDL_MIN_HEIGHT"]; $this->CDL_MAX_PER_ASSET= $result["CDL_MAX_PER_ASSET"]; $this->CDL_CLASS = $result["CDL_CLASS"]; // $this-> = $result[""]; return 0; } return 1; } // LoadBlob // load object BLOB from DATABASE // returns TRUE on success and FALSE otherwise... function LoadBlob2($AssetID, $CLASS_NAME, $BlobName, $WithDATA=1){ global $DB; global $BLOBDebugMode; if( $WithDATA ){ // all data $SQL = "select AIV_CONTENT_DATA.*, AIV_MIME_TYPES.MT_MIME, AIV_CONTENT_DATA_LIMITS.* from AIV_CONTENT_DATA ". "left join AIV_MIME_TYPES on AIV_CONTENT_DATA.CD_MIMETYPEID = AIV_MIME_TYPES.MT_ID ". "left join AIV_CONTENT_DATA_LIMITS on AIV_CONTENT_DATA.CD_LIMITATIONID = AIV_CONTENT_DATA_LIMITS.CDL_ID ". "where CD_OWNER_ASSET_ID='$AssetID' and CD_CLASS='$CLASS_NAME'"; }else{ // all data but without the BLOB data :)) $SQL = "select AIV_CONTENT_DATA.CD_ID, AIV_CONTENT_DATA.CD_CLASS, AIV_CONTENT_DATA.CD_LIMITATIONID, AIV_CONTENT_DATA.CD_MIMETYPEID, ". "AIV_CONTENT_DATA.CD_NAME, AIV_CONTENT_DATA.CD_DESCRIPTION, AIV_CONTENT_DATA.CD_CAPTION, ". "AIV_CONTENT_DATA.CD_LENGTH, AIV_CONTENT_DATA.CD_WIDTH, AIV_CONTENT_DATA.CD_HEIGHT, ". "AIV_CONTENT_DATA.CD_OWNER_ASSET_ID, AIV_CONTENT_DATA.CD_STATUS, AIV_CONTENT_DATA.CD_PUBDATE, AIV_CONTENT_DATA.CD_MODDATE, ". "AIV_MIME_TYPES.MT_MIME, AIV_CONTENT_DATA_LIMITS.* from AIV_CONTENT_DATA ". "left join AIV_MIME_TYPES on AIV_CONTENT_DATA.CD_MIMETYPEID = AIV_MIME_TYPES.MT_ID ". "left join AIV_CONTENT_DATA_LIMITS on AIV_CONTENT_DATA.CD_LIMITATIONID = AIV_CONTENT_DATA_LIMITS.CDL_ID ". "where CD_OWNER_ASSET_ID='$AssetID' and CD_CLASS='$CLASS_NAME'"; } // echo "\n"; if( $BlobName ){ if( $BlobName="0" || $BlobName="cmt1.html"){ }else{ $SQL = $SQL . " and CD_NAME='$BlobName'"; } } if( $BLOBDebugMode ) echo "LoadBlob2: " .$SQL . "
" ; $result = GetObject($DB, $SQL); if( $result ){ $this->CD_ID = $result["CD_ID"]; $this->CD_CLASS = $result["CD_CLASS"]; $this->CD_LIMITATIONID = $result["CD_LIMITATIONID"]; $this->CD_MIMETYPEID = $result["CD_MIMETYPEID"]; $this->CD_NAME = $result["CD_NAME"]; $this->CD_CAPTION = $result["CD_CAPTION"]; $this->CD_DESCRIPTION = $result["CD_DESCRIPTION"]; $this->CD_LENGTH = $result["CD_LENGTH"]; $this->CD_WIDTH = $result["CD_WIDTH"]; $this->CD_HEIGHT = $result["CD_HEIGHT"]; $this->CD_OWNER_ASSET_ID= $result["CD_OWNER_ASSET_ID"]; $this->CD_STATUS = $result["CD_STATUS"]; $this->CD_PUBDATE = $result["CD_PUBDATE"]; $this->CD_MODDATE = $result["CD_MODDATE"]; if( $WithDATA ){ $this->CD_DATA = $result["CD_DATA"]; }else{ unset($this->CD_DATA); } // inherited from MIME TYPE $this->MT_MIME = $result["MT_MIME"]; // inherited from limits... $this->CDL_NAME = $result["CDL_NAME"]; $this->CDL_DISPLAYFUNC = $result["CDL_DISPLAYFUNC"]; $this->CDL_LENGTH = $result["CDL_LENGTH"]; $this->CDL_MAX_WIDTH = $result["CDL_MAX_WIDTH"]; $this->CDL_MAX_HEIGHT = $result["CDL_MAX_HEIGHT"]; $this->CDL_MIN_WIDTH = $result["CDL_MIN_WIDTH"]; $this->CDL_MIN_HEIGHT = $result["CDL_MIN_HEIGHT"]; $this->CDL_MAX_PER_ASSET= $result["CDL_MAX_PER_ASSET"]; $this->CDL_CLASS = $result["CDL_CLASS"]; // $this-> = $result[""]; return 0; } return 1; } // LoadBlob // save BLOB object in DATABASE // returns 0 if error occure // or BLOB_ID otherwise... function SaveBlob(){ global $DB; if( isset($this->CD_DATA) && ($this->CD_DATA!="") ){ $ANBLOB = "'$this->CD_DATA'" ; }else{ $ANBLOB = "NULL"; } if( !isset($this->CD_ID) || ($this->CD_ID=="") ){ // create a new BLOB object if( $ANBLOB == "NULL" ){ return -1; } $Data['CD_CLASS'] = QuoteAndSlashes($this->CD_CLASS); $Data['CD_LIMITATIONID'] = QuoteAndSlashes($this->CD_LIMITATIONID); $Data['CD_MIMETYPEID'] = QuoteAndSlashes($this->CD_MIMETYPEID); $Data['CD_NAME'] = QuoteAndSlashes($this->CD_NAME); $Data['CD_DESCRIPTION'] = QuoteAndSlashes($this->CD_DESCRIPTION); $Data['CD_CAPTION'] = QuoteAndSlashes($this->CD_CAPTION); $Data['CD_LENGTH'] = QuoteAndSlashes($this->CD_LENGTH); $Data['CD_WIDTH'] = QuoteAndSlashes($this->CD_WIDTH); $Data['CD_HEIGHT'] = QuoteAndSlashes($this->CD_HEIGHT); $Data['CD_OWNER_ASSET_ID'] = QuoteAndSlashes($this->CD_OWNER_ASSET_ID); $Data['CD_STATUS'] = QuoteAndSlashes($this->CD_STATUS); $Data['CD_PUBDATE'] = "now()"; $Data['CD_MODDATE'] = "now()"; $Data['CD_DATA'] = QuoteAndSlashes($this->CD_DATA); $this->CD_ID = DBInsert($DB, 'AIV_CONTENT_DATA', $Data); return $this->CD_ID; }else{ // update old BLOB object if( $ANBLOB == "NULL" ){ DBDelete($DB, 'AIV_CONTENT_DATA', "CD_ID='$this->CD_ID'"); // delete $this->CD_ID = ""; return 0; }else{ $Data['CD_CLASS'] = QuoteAndSlashes($this->CD_CLASS); $Data['CD_LIMITATIONID'] = QuoteAndSlashes($this->CD_LIMITATIONID); $Data['CD_MIMETYPEID'] = QuoteAndSlashes($this->CD_MIMETYPEID); $Data['CD_NAME'] = QuoteAndSlashes($this->CD_NAME); $Data['CD_DESCRIPTION'] = QuoteAndSlashes($this->CD_DESCRIPTION); $Data['CD_CAPTION'] = QuoteAndSlashes($this->CD_CAPTION); $Data['CD_LENGTH'] = QuoteAndSlashes($this->CD_LENGTH); $Data['CD_WIDTH'] = QuoteAndSlashes($this->CD_WIDTH); $Data['CD_HEIGHT'] = QuoteAndSlashes($this->CD_HEIGHT); $Data['CD_OWNER_ASSET_ID'] = QuoteAndSlashes($this->CD_OWNER_ASSET_ID); $Data['CD_STATUS'] = QuoteAndSlashes($this->CD_STATUS); $Data['CD_PUBDATE'] = "now()"; $Data['CD_MODDATE'] = "now()"; $Data['CD_DATA'] = QuoteAndSlashes($this->CD_DATA); DBUpdate($DB, 'AIV_CONTENT_DATA', $Data, "CD_ID=".$this->CD_ID); return $this->CD_ID; } } } // SaveBlob function DeleteBLOB($BLOB_ID=''){ $this->CD_DATA = ""; $this->CD_ID = $BLOB_ID; return $this->SaveBlob(); } // DeleteBLOB function DeleteRelatedBLOBs($BLOBIDLIST, $PARENTASSETID, $JavaDelete=0, $imSet="PICKs"){ global $DB, $UserID, $isAuthenticated, $BLOBDebugMode; if( !$isAuthenticated ){ return; } if( !is_array($BLOBIDLIST) ){ return; } while ( list ($key, $value) = each($BLOBIDLIST) ) { $SQL = "select CD_ID from AIV_CONTENT_DATA " . "left join AIV_ASSET on CD_OWNER_ASSET_ID=ASSET_ID " . "where CD_ID='$value' and AIV_ASSET.ASSET_ID='$PARENTASSETID' " ; if( !isCE($UserID) ){ // CE is GOD :))) " and (AIV_ASSET.MEMBER_AUTHOR='$UserID' or AIV_ASSET.MEMBER_EDITOR='$UserID')"; } if( $BLOBDebugMode ) echo "DeleteRelatedBLOBs: " . $SQL . "
"; $TResult = GetObject($DB, $SQL); if( $TResult['CD_ID'] ){ $this->LoadBlob($TResult['CD_ID'], 0); $_tnlist = $this->FindBlobs( $this->CD_OWNER_ASSET_ID, $this->CD_CLASS, $this->CD_NAME, GetLimitationIDbyName($this->CDL_NAME . " tumb") ); if( $JavaDelete==1 ){ echo "\n\n\n" ; } $this->DeleteBLOB( $this->CD_ID ); // delete related tumb if($_tnlist){ $this->LoadBlob( $_tnlist[0], 0 ); $this->DeleteBLOB( $this->CD_ID ); } } } } // DeleteRelatedBLOBs function UpdateRelatedBLOBs($BLOBIDLIST, $Ecaption, $Edescription, $PARENTASSETID, $PIS){ global $DB, $UserID, $isAuthenticated, $BLOBDebugMode; if( !$isAuthenticated ){ return; } foreach($Ecaption as $key=>$value){ $SQL = "select CD_ID from AIV_CONTENT_DATA " . "left join AIV_ASSET on CD_OWNER_ASSET_ID=ASSET_ID " . "where CD_ID='$key' and AIV_ASSET.ASSET_ID='$PARENTASSETID' " ; if( !isCE($UserID) ){ // CE is GOD :))) " and (AIV_ASSET.MEMBER_AUTHOR='$UserID' or AIV_ASSET.MEMBER_EDITOR='$UserID')"; } if( $BLOBDebugMode ) echo "UpdateRelatedBLOBs: " . $SQL . "\n
\n"; $TResult = GetObject($DB, $SQL); if( $TResult['CD_ID'] == $key ){ unset($_tBlbUpd); $_tBlbUpd['CD_CAPTION'] = QuoteAndSlashes($Ecaption[$key]); $_tBlbUpd['CD_DESCRIPTION'] = QuoteAndSlashes($Edescription[$key]); DBUpdate($DB, "AIV_CONTENT_DATA", $_tBlbUpd, "CD_ID=".intval($key)); } } } // UpdateRelatedBLOBs // set new type for current BLOB function SetMimeType($NEW_MIME_TYPE){ global $DB; $SQL = "select MT_ID from AIV_MIME_TYPES where MT_MIME='$NEW_MIME_TYPE'"; $result = GetObject($DB, $SQL); if( $result ){ $this->CD_MIMETYPEID = $result["MT_ID"]; $this->MT_MIME = $NEW_MIME_TYPE; return 1; } return 0; } // SetMimeType function GetMimeType(){ return $this->MT_MIME; } // GetMimeType // set new limits type for current BLOB function SetBlobLimits($NEW_LIMITS_TYPE){ global $DB; $SQL = "select AIV_CONTENT_DATA_LIMITS.* from AIV_CONTENT_DATA_LIMITS where CDL_NAME='$NEW_LIMITS_TYPE'"; // echo $SQL ; $result = GetObject($DB, $SQL); unset($this->CD_LIMITATIONID); if( $result ){ /* * Insert code for object transformation here.... */ $this->CD_LIMITATIONID = $result["CDL_ID"]; $this->CDL_NAME = $result["CDL_NAME"]; $this->CDL_DISPLAYFUNC = $result["CDL_DISPLAYFUNC"]; $this->CDL_LENGTH = $result["CDL_LENGTH"]; $this->CDL_MAX_WIDTH = $result["CDL_MAX_WIDTH"]; $this->CDL_MAX_HEIGHT = $result["CDL_MAX_HEIGHT"]; $this->CDL_MIN_WIDTH = $result["CDL_MIN_WIDTH"]; $this->CDL_MIN_HEIGHT = $result["CDL_MIN_HEIGHT"]; $this->CDL_MAX_PER_ASSET = $result["CDL_MAX_PER_ASSET"]; $this->CDL_CLASS = $result["CDL_CLASS"]; $this->CDL_NAME = $NEW_LIMITS_TYPE; $this->is_error = 0; return 1; }else{ $this->is_error = 1; return 0; } } // SetBlobLimits function getBlobLimits(){ $RArray = array( "$this->CDL_NAME", "$this->CDL_DISPLAYFUNC", "$this->CDL_LENGTH", "$this->CDL_MAX_WIDTH", "$this->CDL_MAX_HEIGHT", "$this->CDL_MIN_WIDTH", "$this->CDL_MIN_HEIGHT", "$this->CDL_MAX_PER_ASSET", "$this->CDL_CLASS" ); return $RArray; } // getBlobLimits // returns the blob as is... function GetBlob(){ return $this->CD_DATA; } // GetBlob // returns blob as a stream function EchoBlob(){ // if( $BLOBDebugMode ) echo "EchoBlob MT:". $this->GetMimeType() . "
\n";; @header("Last-Modified: " . FetchDate($this->CD_MODDATE, "D, d M Y H:i:s" ) . " GMT"); @header("Content-type: " . $this->GetMimeType() ); // echo $this->GetMimeType() ; // Header( "Content-length: " . sizeof($this->CD_DATA) ); // Mon Dec 15 00:49:40 MSK 2003 // var_dump($this); exit; // echo "MT:". $this->GetMimeType() . "
\n";; echo $this->GetBlob(); flush(); } // EchoBlob function GetBlobImageHref(){ // return ""; // $Tm = split(" ", microtime()); // $Tm = split("\.", $Tm[0]); // return "/utils/GetData.php?id=$this->CD_ID&Z=" . $Tm[1]; return '/utils/GetData.php?id=' . intval($this->CD_ID); // &X=" . $this->CD_MODDATE; } // GetBlobImageHref function GetBlobShortCut(){ return "CD_NAME . "]:[RIGHT]:[" . $this->CD_WIDTH . "]:[" . $this->CD_HEIGHT . "]:[" . $this->CD_DESCRIPTION. "]:[0]>"; } // GetBlobShortCut function GetBlobShortCutPopUp(){ return "CD_NAME . "]:[text]:[" . $this->CD_DESCRIPTION. "]>"; } // GetBlobShortCutPopUp function GetBlobSymLinkHref($PARENT_ASSET_ID, $BLOB_FILE_NAME_OR_ID, $DISPLAY_URL_NAME="/utils/GetData.php"){ global $DB; $SQL = "select CD_ID from AIV_CONTENT_DATA " . "where CD_OWNER_ASSET_ID='$PARENT_ASSET_ID' and (CD_NAME='$BLOB_FILE_NAME_OR_ID' or CD_ID='$BLOB_FILE_NAME_OR_ID')"; $result = GetObject($DB, $SQL); $SymLinkRef = ""; if( $result ){ $SomeID =$result["CD_ID"]; $SymLinkRef = "$DISPLAY_URL_NAME?id=$SomeID"; } return $SymLinkRef ; } // GetBlobSymLinkHref function FindBlobs( $AssetID, $BlobClass="", $BlobName="", $BlobLIMITATIONID=""){ // returns array of corresponding blob ID's or FALSE global $DB; $resArr = Array(); $SQL = "select CD_ID from AIV_CONTENT_DATA where CD_OWNER_ASSET_ID='$AssetID' "; if( $BlobClass != "" ){ $SQL = $SQL . " and CD_CLASS='$BlobClass' " ; } if( $BlobName != "" ){ $SQL = $SQL . " and CD_NAME='$BlobName' " ; } if( $BlobLIMITATIONID != "" ){ $SQL = $SQL . " and CD_LIMITATIONID='$BlobLIMITATIONID' " ; } $SQL = $SQL . " order by CD_PUBDATE" ; $result = GetArray($DB, $SQL); // echo ": $result : $BlobLIMITATIONID : $SQL :
"; if( $result ){ for($bi=0; $bi 0 ){ return $resArr; }else{ return false; } } // FindBlobs function FindBlobsExt1( $AssetID, $BlobClass="", $BlobName="", $BlobLIMITATIONID="", &$MaxWidth, &$MaxHeight ){ // returns array of corresponding blob ID's or FALSE global $DB; $resArr = Array(); $SQL = "select CD_ID, CD_WIDTH, CD_HEIGHT from AIV_CONTENT_DATA where CD_OWNER_ASSET_ID='$AssetID' "; if( $BlobClass != "" ){ $SQL = $SQL . " and CD_CLASS='$BlobClass' " ; } if( $BlobName != "" ){ $SQL = $SQL . " and CD_NAME='$BlobName' " ; } if( $BlobLIMITATIONID != "" ){ $SQL = $SQL . " and CD_LIMITATIONID='$BlobLIMITATIONID' " ; } $SQL = $SQL . " order by CD_PUBDATE" ; $result = GetArray($DB, $SQL); $MaxWidth = 0; $MaxHeight = 0; if( $result ){ for($bi=0; $bi $MaxWidth ) $MaxWidth = $Awidth; $AHeight = $result[$bi]["CD_HEIGHT"]; if( $AHeight > $MaxHeight ) $MaxHeight = $AHeight; } } if( sizeof($resArr) > 0 ){ return $resArr; }else{ return false; } } // FindBlobs function UploadImageBLOB($BLOB_FILE, $BLOB_FILE_name, $BLOB_ANNOTATE, $BLOB_CAPTION, $BLOB_DESCRIPTION, $BLOB_QUALITY="", $AnnotateLogo=true){ global $DB, $DBID; // var_dump($_POST); $ErrWarn = ""; $BLOB_CAPTION = trim(stripslashes($BLOB_CAPTION)); $BLOB_DESCRIPTION = trim(stripslashes($BLOB_DESCRIPTION)); $BLOB_FILE_name = trim(stripslashes($BLOB_FILE_name)); if( $BLOB_FILE=="" || $BLOB_FILE=="none" ){ $ErrWarn = BLOB_ERROR_FILE_IS_EMPTY; $this->is_error = 1; /* }else if( $BLOB_CAPTION=="" || $BLOB_DESCRIPTION=="" ){ $ErrWarn = "Error: Caption and description required."; $this->is_error = 1; */ }else{ if( $BLOB_CAPTION=="" ){ $BLOB_CAPTION = $BLOB_FILE_name ; } if( $BLOB_DESCRIPTION=="" ){ $BLOB_DESCRIPTION = $BLOB_FILE_name ; } $SQL = "select count(*) as numblobs from AIV_CONTENT_DATA ". "where CD_OWNER_ASSET_ID='$this->CD_OWNER_ASSET_ID' and CD_LIMITATIONID='$this->CD_LIMITATIONID'"; $result = GetObject($DB, $SQL); $numblobs = $result["numblobs"]; if( $numblobs >= $this->CDL_MAX_PER_ASSET ){ $ErrWarn = sprintf(BLOB_ERROR_TOO_MANY_PICS, $this->CDL_MAX_PER_ASSET); $this->is_error = 1; return $ErrWarn; } $this->CD_CAPTION = trim($BLOB_CAPTION); $this->CD_DESCRIPTION = trim($BLOB_DESCRIPTION); /* Check for STOP(BAD) words, links and simple spell-check. */ $ErrWarn = CheckForLinks( $this->CD_CAPTION . " " . $this->CD_DESCRIPTION ); if( $ErrWarn != "" ){ $ErrWarn = $ErrWarn . "\n"; } setlocale(LC_CTYPE, "ru_RU"); $Vulgaris = IsArticleVulgar( strtolower($this->CD_CAPTION . " " . $this->CD_DESCRIPTION) ); if( $Vulgaris != "" ){ $ErrWarn = $ErrWarn . sprintf(BLOB_ERROR_VULGAR_WORDS, $Vulgaris); } $ErrWarn = $ErrWarn . SpellCheck( $this->CD_CAPTION . " " . $this->CD_DESCRIPTION ); if( $ErrWarn != "" ){ $this->is_error = 1; }else{ $ErrWarn = $this->UpdateBlob( $BLOB_FILE, $BLOB_FILE_name, $BLOB_ANNOTATE, $BLOB_QUALITY, $AnnotateLogo); } } // echo "Stats:" . $this->is_error . "
"; if( !($this->is_error) ){ $NewID = $this->SaveBlob() ; if( $NewID != -1 ){ // $ErrWarn = $ErrWarn . "New blob successfully created with ID=$NewID\n"; // $ErrWarn = $ErrWarn . "New blob successfully created.\n"; }else{ $ErrWarn = BLOB_ERROR_DUPLICATE_FILE_NAME; $this->is_error = 1; } } return $ErrWarn; } // UploadImageBLOB function DrawUploadForm($PARENT_ASSET_ID=0, $BFOPT = 0, $ErrWarn, $FORM_PROMPT="" ){ global $UserID; global $PHP_SELF; global $BLOB_LIMIT; global $BLOB_CAPTION; global $BLOB_DESCRIPTION; global $PTX, $BTY, $BCL, $PAI, $PFN, $PUP, $NAN, $PIS; global $QUAL_DATA, $QUAL_KEYS; ?> "; } if( $BFOPT & BFOPT_WITH_TEXTPROMPT ){ ?>
*

[". BLOB_LABEL_SELECTCLASS ."]" ); ?>
  
FindBlobs($PARENT_ASSET_ID); $RelatedBlobIDs = $this->FindBlobs($PARENT_ASSET_ID, $BTY, "", GetLimitationIDbyName($BlobClass) ); if( is_array($RelatedBlobIDs) ){ ?> "; } if( $BFOPT & BFOPT_WITH_TEXTPROMPT ){ ?> LoadBlob($RelatedBlobIDs[$bno], 0); if( ereg_replace($this->CD_CLASS, "", $EXEPT) != $EXEPT ){ continue; } if( $BFOPT&BFOPT_WITH_IMAGE_DIRECT ){ $AHOpen = ""; $AHClose = ""; }else{ $AHOpen = ""; $AHClose = ""; } ?>
. - удалить
". "$AHClose"; }else{ echo "$AHOpen $this->CD_NAME $AHClose"; } ?>
$v) echo $k.":" ; echo " // "; // CD_ID:CD_CLASS:CD_MIMETYPEID:CD_NAME:CD_CAPTION:CD_DESCRIPTION:CD_LENGTH:CD_WIDTH:CD_HEIGHT: // CD_OWNER_ASSET_ID:CD_STATUS:MT_MIME: // CDL_NAME:CDL_DISPLAYFUNC:CDL_LENGTH:CDL_MAX_WIDTH:CDL_MAX_HEIGHT:CDL_MIN_WIDTH:CDL_MIN_HEIGHT: // CDL_MAX_PER_ASSET:CDL_CLASS:is_error:CD_LIMITATIONID:CD_PUBDATE:CD_MODDATE: // if( $BFOPT&BFOPT_WITH_IMAGE_DIRECT ){ if( $this->CD_WIDTH > 200 ){ $SET_WIDTH = "width='200'"; $NOTE_PROMPT = ""; // BLOB_MSG_REAL_SIZE; $AHOpen = ""; $AHClose = ""; }else{ $SET_WIDTH = ""; $NOTE_PROMPT = ""; $AHOpen = ""; $AHClose = ""; } $_tnlist = $this->FindBlobs( $this->CD_OWNER_ASSET_ID, $this->CD_CLASS, $this->CD_NAME, GetLimitationIDbyName($this->CDL_NAME . " tumb") ); if( $_tnlist && ( $this->CDL_NAME == 'category gallery' || $this->CDL_NAME == 'article image' || 0 ) ){ // $this->FindBlobs( $this->CD_OWNER_ASSET_ID, $this->CD_CLASS, $this->CD_NAME, $this->CDL_NAME . " tumb"); $ttBlob = new TheBlob ; $ttBlob->LoadBlob($_tnlist[0], 0); if( $ttBlob->CD_WIDTH > 200 ){ $SET_WIDTH = "width='200'"; }else{ $SET_WIDTH = ""; } $NOTE_PROMPT = ""; // BLOB_MSG_REAL_SIZE; echo "
$AHOpen$AHClose
"; }else{ echo "
$AHOpen$AHClose
"; } echo $NOTE_PROMPT ; } if( $BFOPT&BFOPT_WITH_DESCRIPTION ){ echo "Описание:
". "" ; } ?>
CD_WIDTH>0 || $this->CD_HEIGHT>0 ){ printf ("%.2fKb
%d x %d", $this->CD_LENGTH/1024, $this->CD_WIDTH, $this->CD_HEIGHT); }else{ printf ("%.2fKb", $this->CD_LENGTH/1024); } ?>
MT_MIME; ?> 
  
CDL_MAX_PER_ASSET; */ $SQL = "select count(*) as numblobs from AIV_CONTENT_DATA ". "where CD_OWNER_ASSET_ID='$this->CD_OWNER_ASSET_ID' and CD_LIMITATIONID='$this->CD_LIMITATIONID' and ". "( CD_CLASS='IMAGE' or CD_CLASS='AUDIO' or CD_CLASS='VIDEO' or CD_CLASS='APPLICATION')"; if( $BLOBDebugMode ) echo "DisplayEditForm: $SQL
"; $result = GetObject($DB, $SQL); $numblobs = $result["numblobs"]; echo ""; if( ($numblobs < $this->CDL_MAX_PER_ASSET) && ($BFOPTIONS & BFOPT_WITH_STRICTLIMIT) ){ $this->DrawUploadForm($PARENT_ASSET_ID, $BFOPTIONS, $ErrWarn, $UPLOADPROMPT, $BlobClass); } if( $ErrWarn != "" ){ ?> DisplayDeleteBLOBsForm($PARENT_ASSET_ID, $BFOPTIONS, $UPLOADPROMPT, 'TEXT', $BlobClass); echo "
"; } // DisplayEditForm } // end The BLOB class function GetBlobImageHref(&$Blob){ // return ""; // $Tm = split(" ", microtime()); // $Tm = split("\.", $Tm[0]); // return "/utils/GetData.php?id=$this->CD_ID&Z=" . $Tm[1]; return '/utils/GetData.php?id=' . intval($Blob->CD_ID) . "&X=" . $this->CD_MODDATE; } // GetBlobImageHref } // if( !defined('THE_BLOB_API') ) ?>