protected function loadValue() { $v9b207167e5381c47682c6b4f58a623fb = array(); $v3aabf39f2d943fa886d86dcbbee4d910 = $this->field_id; if ($v8d777f385d3dfec8815d20f7496026dc = $this->getPropData()) { foreach ($v8d777f385d3dfec8815d20f7496026dc['text_val'] as $v3a6d0284e743dc4a9b86f97d6dd1a3bf) { if (is_null($v3a6d0284e743dc4a9b86f97d6dd1a3bf)) { continue; } $v3a6d0284e743dc4a9b86f97d6dd1a3bf = self::unescapeFilePath($v3a6d0284e743dc4a9b86f97d6dd1a3bf); $vb798abe6e1b1318ee36b0dcb3fb9e4d3 = new umiImageFile(self::filterOutputString($v3a6d0284e743dc4a9b86f97d6dd1a3bf)); if ($vb798abe6e1b1318ee36b0dcb3fb9e4d3->getIsBroken()) { continue; } $v9b207167e5381c47682c6b4f58a623fb[] = $vb798abe6e1b1318ee36b0dcb3fb9e4d3; } return $v9b207167e5381c47682c6b4f58a623fb; } $vac5c74b64b4b8352ef2f181affb5ac2a = "SELECT text_val FROM {$this->tableName} WHERE obj_id = '{$this->object_id}' AND field_id = '{$v3aabf39f2d943fa886d86dcbbee4d910}' LIMIT 1"; $result = l_mysql_query($vac5c74b64b4b8352ef2f181affb5ac2a, true); while (list($v3a6d0284e743dc4a9b86f97d6dd1a3bf) = mysql_fetch_row($result)) { if (is_null($v3a6d0284e743dc4a9b86f97d6dd1a3bf)) { continue; } $v3a6d0284e743dc4a9b86f97d6dd1a3bf = self::unescapeFilePath($v3a6d0284e743dc4a9b86f97d6dd1a3bf); $vb798abe6e1b1318ee36b0dcb3fb9e4d3 = new umiImageFile(self::filterOutputString($v3a6d0284e743dc4a9b86f97d6dd1a3bf)); if ($vb798abe6e1b1318ee36b0dcb3fb9e4d3->getIsBroken()) { continue; } $v9b207167e5381c47682c6b4f58a623fb[] = $vb798abe6e1b1318ee36b0dcb3fb9e4d3; } return $v9b207167e5381c47682c6b4f58a623fb; }
public function uploadfile() { $this->flushAsXml('uploadfile'); $this->setupCwd(); $quota_byte = getBytesFromString(mainConfiguration::getInstance()->get('system', 'quota-files-and-images')); if ($quota_byte != 0) { $all_size = getBusyDiskSize(array('/files', '/images')); if ($all_size >= $quota_byte) { return array('attribute:folder' => substr($this->cwd, strlen(CURRENT_WORKING_DIR)), 'attribute:upload' => 'error', 'nodes:error' => array('Ошибка: превышено ограничение на размер дискового пространства')); } } if (is_demo()) { return array('attribute:folder' => substr($this->cwd, strlen(CURRENT_WORKING_DIR)), 'attribute:upload' => 'done'); } if (isset($_FILES['Filedata']['name'])) { foreach ($_FILES['Filedata'] as $k => $v) { $_FILES['Filedata'][$k] = array('upload' => $v); } $file = umiFile::upload('Filedata', 'upload', $this->cwd); } elseif (isset($_REQUEST['filename'])) { $file = umiFile::upload(false, false, $this->cwd); } $cwd = substr($this->cwd, strlen(CURRENT_WORKING_DIR)); $result = array('attribute:folder' => $cwd, 'attribute:upload' => 'done'); if ($file) { $item = $this->cwd . "/" . $file->getFileName(); // Collect some file info $imageExt = array("jpg", "jpeg", "gif", "png"); $sizeMeasure = array("b", "Kb", "Mb", "Gb", "Tb"); $name = $file->getFileName(); $type = strtolower($file->getExt()); $ts = $file->getModifyTime(); $time = date('g:i, d.m.Y', $ts); $size = $file->getSize(); $path = $file->getFilePath(true); if (isset($_REQUEST['imagesOnly']) && !in_array($type, $imageExt)) { unlink($item); return $result; } $file = array('attribute:name' => $name, 'attribute:type' => $type, 'attribute:size' => $size, 'attribute:ctime' => $time, 'attribute:timestamp' => $ts, 'attribute:path' => $path); $i = 0; while ($size > 1024.0) { $size /= 1024; $i++; } $convertedSize = (int) round($size); if ($convertedSize == 1 && (int) floor($size) != $convertedSize) { $i++; } $file['attribute:converted-size'] = $convertedSize . $sizeMeasure[$i]; if (in_array($type, $imageExt)) { if ($info = @getimagesize($item)) { umiImageFile::addWatermark("." . $cwd . "/" . $name); $file['attribute:mime'] = $info['mime']; $file['attribute:width'] = $info[0]; $file['attribute:height'] = $info[1]; } else { unlink($item); return $result; } } else { //$file['attribute:mime'] = mime_content_type($item); } $result["file"] = $file; } return $result; }
private static function freadbits($v8fa14cdd754f91cc6554c9e71929cce7, $ve2942a04780e223b215eb8b663cf5353) { $va245c3230debe5c956484ecc6fa93877 = self::freadbyte($v8fa14cdd754f91cc6554c9e71929cce7); $ve30207aeed603884c54f309c609d6c06 = self::$CurrentBit; self::$CurrentBit += $ve2942a04780e223b215eb8b663cf5353; if (self::$CurrentBit == 8) { self::$CurrentBit = 0; } else { fseek($v8fa14cdd754f91cc6554c9e71929cce7, ftell($v8fa14cdd754f91cc6554c9e71929cce7) - 1); } return self::RetBits($va245c3230debe5c956484ecc6fa93877, $ve30207aeed603884c54f309c609d6c06, $ve2942a04780e223b215eb8b663cf5353); }
protected function _doSave_upload($v0666f0acdeed38d4cd9084ade1739498, $v28e3d688a3c077b887921cea3fb1dbc7, $vb068931cc450442b63f5b3d276ea4297) { $v109633366fd0d46d371ede589998abaa = getcwd(); chdir(CURRENT_WORKING_DIR); $v4bd19a884f07e6a2211760e682f98588 = 0; $vb1444fb0c07653567ad325aa25d4e37a = regedit::getInstance(); $v594c103f2c6e04c3d8ab059f031e0c1a = cmsController::getInstance(); $v435ed7e9f07f740abf511a62c00eef6e = "." . rtrim($v28e3d688a3c077b887921cea3fb1dbc7, "/\\") . DIRECTORY_SEPARATOR . $vb068931cc450442b63f5b3d276ea4297; if (isset($_FILES['upload'])) { foreach ($_FILES['upload']['name'] as $v865c0c0b4ab0e063e5caa3387c1a8741 => $v1cf7e4c33df66ca3d5459264ea9a5885) { if ($v1cf7e4c33df66ca3d5459264ea9a5885 == $vb068931cc450442b63f5b3d276ea4297) { $v435ed7e9f07f740abf511a62c00eef6e = $_FILES['upload']['tmp_name'][$v865c0c0b4ab0e063e5caa3387c1a8741]; $v4bd19a884f07e6a2211760e682f98588 = $v865c0c0b4ab0e063e5caa3387c1a8741; } } } $v11b4278c7e5a79003db77272c1ed2cf5 = (int) filesize($v435ed7e9f07f740abf511a62c00eef6e); if (umiImageFile::getIsImage($vb068931cc450442b63f5b3d276ea4297)) { $ve6a7ab42343e8bc9131d89646abcb773 = $v594c103f2c6e04c3d8ab059f031e0c1a->getModule('data')->getAllowedMaxFileSize('img') * 1024 * 1024; if ($ve6a7ab42343e8bc9131d89646abcb773 > 0) { if ($ve6a7ab42343e8bc9131d89646abcb773 < $v11b4278c7e5a79003db77272c1ed2cf5) { chdir($v109633366fd0d46d371ede589998abaa); return $this->setError(getLabel('error-max_img_filesize') . ' ' . $ve6a7ab42343e8bc9131d89646abcb773 / 1024 / 1024 . "M"); } } if (getRequest('water_mark')) { umiImageFile::setWatermarkOn(); } $v8c7dd922ad47494fc02c388e12c00eac = umiImageFile::upload('upload', $v4bd19a884f07e6a2211760e682f98588, $v28e3d688a3c077b887921cea3fb1dbc7); } else { $v79001f389eb5f5185f6945430cb57be1 = $v594c103f2c6e04c3d8ab059f031e0c1a->getModule('data')->getAllowedMaxFileSize() * 1024 * 1024; if ($v79001f389eb5f5185f6945430cb57be1 > 0) { if ($v79001f389eb5f5185f6945430cb57be1 < $v11b4278c7e5a79003db77272c1ed2cf5) { chdir($v109633366fd0d46d371ede589998abaa); return $this->setError(getLabel('error-max_filesize') . ' ' . $v79001f389eb5f5185f6945430cb57be1 / 1024 / 1024 . "M"); } } $v8c7dd922ad47494fc02c388e12c00eac = umiFile::upload('upload', $v4bd19a884f07e6a2211760e682f98588, $v28e3d688a3c077b887921cea3fb1dbc7); } chdir($v109633366fd0d46d371ede589998abaa); if (!$v8c7dd922ad47494fc02c388e12c00eac instanceof umiFile || $v8c7dd922ad47494fc02c388e12c00eac->getIsBroken()) { return $this->setError(elFinder::ERROR_UPLOAD); } else { return CURRENT_WORKING_DIR . $v8c7dd922ad47494fc02c388e12c00eac->getFilePath(true); } }
function makeThumbnailFull($vd6fe1d0be6347b8ef2427fa629c04485, $vf09cbf63485d929911164e808f84423b, $veaae26a6fb20ed3ef54fb23bfa0b1fcc, $vb435e227d5dd201e1768b2bcb2e0aa81, $va634e7960e04b1633c103382004fe526 = true, $v70c8b4c146f72fc2a6a1886dae113831 = 5, $vb5db1323df6de62d5bda823c63ad4cbe = false, $vd66636b253cb346dbb6240e30def3618 = 80) { $vf711798e436a77f680a1070c008a2a66 = true; $v78805a221a988e79ef3f42d7c5bfd418 = new umiImageFile($vd6fe1d0be6347b8ef2427fa629c04485); $v3090ad88ff7c9ca191579b709069fe64 = $v78805a221a988e79ef3f42d7c5bfd418->getFileName(); $veb9f74e698fbb6e2897b3791bc406cbf = strtolower($v78805a221a988e79ef3f42d7c5bfd418->getExt()); $veb9f74e698fbb6e2897b3791bc406cbf = $veb9f74e698fbb6e2897b3791bc406cbf == 'bmp' ? 'jpg' : $veb9f74e698fbb6e2897b3791bc406cbf; $v107703932395f334896434b598ccdc55 = array('gif', 'jpeg', 'jpg', 'png', 'bmp'); if (!in_array($veb9f74e698fbb6e2897b3791bc406cbf, $v107703932395f334896434b598ccdc55)) { return ""; } $v3090ad88ff7c9ca191579b709069fe64 = substr($v3090ad88ff7c9ca191579b709069fe64, 0, strlen($v3090ad88ff7c9ca191579b709069fe64) - (strlen($veb9f74e698fbb6e2897b3791bc406cbf) + 1)); $vb43c766cbc1365dca0ffcee38e46b613 = sha1($v78805a221a988e79ef3f42d7c5bfd418->getDirName()); if (!is_dir($vf09cbf63485d929911164e808f84423b . $vb43c766cbc1365dca0ffcee38e46b613)) { mkdir($vf09cbf63485d929911164e808f84423b . $vb43c766cbc1365dca0ffcee38e46b613, 0755, true); } $vddc9a97c07cfa1f9fe744dbc63143e5c = $v3090ad88ff7c9ca191579b709069fe64 . '_' . $veaae26a6fb20ed3ef54fb23bfa0b1fcc . '_' . $vb435e227d5dd201e1768b2bcb2e0aa81 . '_' . $v70c8b4c146f72fc2a6a1886dae113831 . '_' . $vd66636b253cb346dbb6240e30def3618 . "." . $veb9f74e698fbb6e2897b3791bc406cbf; $vf38211e4c6839893265bcda112b63f80 = $vf09cbf63485d929911164e808f84423b . $vb43c766cbc1365dca0ffcee38e46b613 . '/' . $vddc9a97c07cfa1f9fe744dbc63143e5c; if (!file_exists($vf38211e4c6839893265bcda112b63f80) || filemtime($vf38211e4c6839893265bcda112b63f80) < filemtime($vd6fe1d0be6347b8ef2427fa629c04485)) { if (file_exists($vf38211e4c6839893265bcda112b63f80)) { unlink($vf38211e4c6839893265bcda112b63f80); } $v3a8d65a128a22de38fe374a76974161c = $v78805a221a988e79ef3f42d7c5bfd418->getWidth(); $v427c23061461a4b29c5d39dd32b7f2c6 = $v78805a221a988e79ef3f42d7c5bfd418->getHeight(); if (!($v3a8d65a128a22de38fe374a76974161c && $v427c23061461a4b29c5d39dd32b7f2c6)) { throw new coreException(getLabel('error-image-corrupted', null, $vd6fe1d0be6347b8ef2427fa629c04485)); } if ($vb435e227d5dd201e1768b2bcb2e0aa81 == "auto") { $v3c10300988ff410c7f7181d43214229e = (int) round($v427c23061461a4b29c5d39dd32b7f2c6 * ($veaae26a6fb20ed3ef54fb23bfa0b1fcc / $v3a8d65a128a22de38fe374a76974161c)); $vb435e227d5dd201e1768b2bcb2e0aa81 = $v3c10300988ff410c7f7181d43214229e; $v6f81aaeb51b38cddc8851000851e9c98 = (int) $veaae26a6fb20ed3ef54fb23bfa0b1fcc; } else { if ($veaae26a6fb20ed3ef54fb23bfa0b1fcc == "auto") { $v6f81aaeb51b38cddc8851000851e9c98 = (int) round($v3a8d65a128a22de38fe374a76974161c * ($vb435e227d5dd201e1768b2bcb2e0aa81 / $v427c23061461a4b29c5d39dd32b7f2c6)); $veaae26a6fb20ed3ef54fb23bfa0b1fcc = $v6f81aaeb51b38cddc8851000851e9c98; } else { $v6f81aaeb51b38cddc8851000851e9c98 = (int) $veaae26a6fb20ed3ef54fb23bfa0b1fcc; } $v3c10300988ff410c7f7181d43214229e = (int) $vb435e227d5dd201e1768b2bcb2e0aa81; } $va13a7d0465adabf0bc59a5a26873cc4d = 0; $v6918e386f5cdd77edf37c6f42cdad6a2 = 0; if (!intval($veaae26a6fb20ed3ef54fb23bfa0b1fcc) || !intval($vb435e227d5dd201e1768b2bcb2e0aa81)) { $va634e7960e04b1633c103382004fe526 = false; } if ($va634e7960e04b1633c103382004fe526) { $v17370b9bf2bb4af83eba44b15e2315b9 = $v3a8d65a128a22de38fe374a76974161c / $veaae26a6fb20ed3ef54fb23bfa0b1fcc; $v205a8652407c62be13889d94c91f49e8 = $v427c23061461a4b29c5d39dd32b7f2c6 / $vb435e227d5dd201e1768b2bcb2e0aa81; if ($v17370b9bf2bb4af83eba44b15e2315b9 > $v205a8652407c62be13889d94c91f49e8) { $v6918e386f5cdd77edf37c6f42cdad6a2 = round(($v3a8d65a128a22de38fe374a76974161c - $veaae26a6fb20ed3ef54fb23bfa0b1fcc * $v205a8652407c62be13889d94c91f49e8) / 2); $v3a8d65a128a22de38fe374a76974161c = round($veaae26a6fb20ed3ef54fb23bfa0b1fcc * $v205a8652407c62be13889d94c91f49e8); } elseif ($v17370b9bf2bb4af83eba44b15e2315b9 < $v205a8652407c62be13889d94c91f49e8) { $va13a7d0465adabf0bc59a5a26873cc4d = round(($v427c23061461a4b29c5d39dd32b7f2c6 - $vb435e227d5dd201e1768b2bcb2e0aa81 * $v17370b9bf2bb4af83eba44b15e2315b9) / 2); $v427c23061461a4b29c5d39dd32b7f2c6 = round($vb435e227d5dd201e1768b2bcb2e0aa81 * $v17370b9bf2bb4af83eba44b15e2315b9); } if ($v70c8b4c146f72fc2a6a1886dae113831) { switch ($v70c8b4c146f72fc2a6a1886dae113831) { case 1: $v6918e386f5cdd77edf37c6f42cdad6a2 = 0; $va13a7d0465adabf0bc59a5a26873cc4d = 0; break; case 2: $va13a7d0465adabf0bc59a5a26873cc4d = 0; break; case 3: $v6918e386f5cdd77edf37c6f42cdad6a2 += $v6918e386f5cdd77edf37c6f42cdad6a2; $va13a7d0465adabf0bc59a5a26873cc4d = 0; break; case 4: $v6918e386f5cdd77edf37c6f42cdad6a2 = 0; break; case 5: break; case 6: $v6918e386f5cdd77edf37c6f42cdad6a2 += $v6918e386f5cdd77edf37c6f42cdad6a2; break; case 7: $v6918e386f5cdd77edf37c6f42cdad6a2 = 0; $va13a7d0465adabf0bc59a5a26873cc4d += $va13a7d0465adabf0bc59a5a26873cc4d; break; case 8: $va13a7d0465adabf0bc59a5a26873cc4d += $va13a7d0465adabf0bc59a5a26873cc4d; break; case 9: $v6918e386f5cdd77edf37c6f42cdad6a2 += $v6918e386f5cdd77edf37c6f42cdad6a2; $va13a7d0465adabf0bc59a5a26873cc4d += $va13a7d0465adabf0bc59a5a26873cc4d; break; } } } $vf12105146129696d6a7e0ed521db2e48 = imagecreatetruecolor($v6f81aaeb51b38cddc8851000851e9c98, $v3c10300988ff410c7f7181d43214229e); $v520584b026332b9e0b598c3d091329b1 = $v78805a221a988e79ef3f42d7c5bfd418->createImage($vd6fe1d0be6347b8ef2427fa629c04485); $v36cd38f49b9afa08222c0dc9ebfe35eb = $v520584b026332b9e0b598c3d091329b1['im']; if ($veaae26a6fb20ed3ef54fb23bfa0b1fcc * 4 < $v3a8d65a128a22de38fe374a76974161c && $vb435e227d5dd201e1768b2bcb2e0aa81 * 4 < $v427c23061461a4b29c5d39dd32b7f2c6) { $_TMP = array(); $_TMP['width'] = round($veaae26a6fb20ed3ef54fb23bfa0b1fcc * 4); $_TMP['height'] = round($vb435e227d5dd201e1768b2bcb2e0aa81 * 4); $_TMP['image'] = imagecreatetruecolor($_TMP['width'], $_TMP['height']); if ($veb9f74e698fbb6e2897b3791bc406cbf == 'gif') { $_TMP['image_white'] = imagecolorallocate($_TMP['image'], 255, 255, 255); imagefill($_TMP['image'], 0, 0, $_TMP['image_white']); imagecolortransparent($_TMP['image'], $_TMP['image_white']); imagealphablending($v36cd38f49b9afa08222c0dc9ebfe35eb, TRUE); imagealphablending($_TMP['image'], TRUE); } else { imagealphablending($_TMP['image'], false); imagesavealpha($_TMP['image'], true); } imagecopyresampled($_TMP['image'], $v36cd38f49b9afa08222c0dc9ebfe35eb, 0, 0, $v6918e386f5cdd77edf37c6f42cdad6a2, $va13a7d0465adabf0bc59a5a26873cc4d, $_TMP['width'], $_TMP['height'], $v3a8d65a128a22de38fe374a76974161c, $v427c23061461a4b29c5d39dd32b7f2c6); imageDestroy($v36cd38f49b9afa08222c0dc9ebfe35eb); $v36cd38f49b9afa08222c0dc9ebfe35eb = $_TMP['image']; $v3a8d65a128a22de38fe374a76974161c = $_TMP['width']; $v427c23061461a4b29c5d39dd32b7f2c6 = $_TMP['height']; $v6918e386f5cdd77edf37c6f42cdad6a2 = 0; $va13a7d0465adabf0bc59a5a26873cc4d = 0; unset($_TMP); } if ($veb9f74e698fbb6e2897b3791bc406cbf == 'gif') { $vde6403c41549334bb72244a31e9edf52 = imagecolorallocate($vf12105146129696d6a7e0ed521db2e48, 255, 255, 255); imagefill($vf12105146129696d6a7e0ed521db2e48, 0, 0, $vde6403c41549334bb72244a31e9edf52); imagecolortransparent($vf12105146129696d6a7e0ed521db2e48, $vde6403c41549334bb72244a31e9edf52); imagealphablending($v36cd38f49b9afa08222c0dc9ebfe35eb, TRUE); imagealphablending($vf12105146129696d6a7e0ed521db2e48, TRUE); } else { imagealphablending($vf12105146129696d6a7e0ed521db2e48, false); imagesavealpha($vf12105146129696d6a7e0ed521db2e48, true); } imagecopyresampled($vf12105146129696d6a7e0ed521db2e48, $v36cd38f49b9afa08222c0dc9ebfe35eb, 0, 0, $v6918e386f5cdd77edf37c6f42cdad6a2, $va13a7d0465adabf0bc59a5a26873cc4d, $veaae26a6fb20ed3ef54fb23bfa0b1fcc, $vb435e227d5dd201e1768b2bcb2e0aa81, $v3a8d65a128a22de38fe374a76974161c, $v427c23061461a4b29c5d39dd32b7f2c6); if ($vf711798e436a77f680a1070c008a2a66) { $vf12105146129696d6a7e0ed521db2e48 = makeThumbnailFullUnsharpMask($vf12105146129696d6a7e0ed521db2e48, 80, 0.5, 3); } switch ($veb9f74e698fbb6e2897b3791bc406cbf) { case 'gif': $v9b207167e5381c47682c6b4f58a623fb = imagegif($vf12105146129696d6a7e0ed521db2e48, $vf38211e4c6839893265bcda112b63f80); break; case 'png': $v9b207167e5381c47682c6b4f58a623fb = imagepng($vf12105146129696d6a7e0ed521db2e48, $vf38211e4c6839893265bcda112b63f80); break; default: $v9b207167e5381c47682c6b4f58a623fb = imagejpeg($vf12105146129696d6a7e0ed521db2e48, $vf38211e4c6839893265bcda112b63f80, $vd66636b253cb346dbb6240e30def3618); } if (!$v9b207167e5381c47682c6b4f58a623fb) { throw new coreException(getLabel('label-errors-16008')); } imageDestroy($v36cd38f49b9afa08222c0dc9ebfe35eb); imageDestroy($vf12105146129696d6a7e0ed521db2e48); if ($vb5db1323df6de62d5bda823c63ad4cbe) { umiImageFile::addWatermark($vf38211e4c6839893265bcda112b63f80); } } $v2063c1608d6e0baf80249c42e2be5804 = new umiImageFile($vf38211e4c6839893265bcda112b63f80); $v47c80780ab608cc046f2a6e6f071feb6 = array(); $v47c80780ab608cc046f2a6e6f071feb6['size'] = $v2063c1608d6e0baf80249c42e2be5804->getSize(); $v47c80780ab608cc046f2a6e6f071feb6['filename'] = $v2063c1608d6e0baf80249c42e2be5804->getFileName(); $v47c80780ab608cc046f2a6e6f071feb6['filepath'] = $v2063c1608d6e0baf80249c42e2be5804->getFilePath(); $v47c80780ab608cc046f2a6e6f071feb6['src'] = $v2063c1608d6e0baf80249c42e2be5804->getFilePath(true); $v47c80780ab608cc046f2a6e6f071feb6['ext'] = $v2063c1608d6e0baf80249c42e2be5804->getExt(); $v47c80780ab608cc046f2a6e6f071feb6['width'] = $v2063c1608d6e0baf80249c42e2be5804->getWidth(); $v47c80780ab608cc046f2a6e6f071feb6['height'] = $v2063c1608d6e0baf80249c42e2be5804->getHeight(); if (cmsController::getInstance()->getCurrentMode() == "admin") { $v47c80780ab608cc046f2a6e6f071feb6['src'] = str_replace("&", "&", $v47c80780ab608cc046f2a6e6f071feb6['src']); } return $v47c80780ab608cc046f2a6e6f071feb6; }
function callbackPostExtract($v50cd20d6ab1f950f5f7cd9594d824078, &$v346210869c15b12ae6d906bb9e095aac) { $vcaf9b6b99962bf5c2264824231d7a40c = getPathInfo($v346210869c15b12ae6d906bb9e095aac['stored_filename']); $v566bbee0f961ad71b54c3c2fd36db053 = strtolower($vcaf9b6b99962bf5c2264824231d7a40c['extension']); $v435ed7e9f07f740abf511a62c00eef6e = $v346210869c15b12ae6d906bb9e095aac['filename']; if (!umiFile::isAllowedImageType($v566bbee0f961ad71b54c3c2fd36db053)) { unlink($v435ed7e9f07f740abf511a62c00eef6e); } else { $v3f6abb5601f05f03e3fdf4dec2668666 = @getimagesize($v435ed7e9f07f740abf511a62c00eef6e); if (!is_array($v3f6abb5601f05f03e3fdf4dec2668666)) { @unlink($v435ed7e9f07f740abf511a62c00eef6e); } if (umiFile::getAddWaterMark()) { if (umiImageFile::addWatermark($v435ed7e9f07f740abf511a62c00eef6e) !== false) { return 1; } } $vf9a3266ad8c9b1c7135d1e0d787fe91b = (bool) mainConfiguration::getInstance()->get("kernel", "jpg-through-gd"); if ($vf9a3266ad8c9b1c7135d1e0d787fe91b) { if ($v566bbee0f961ad71b54c3c2fd36db053 == 'jpg' || $v566bbee0f961ad71b54c3c2fd36db053 == 'jpeg') { $v9b207167e5381c47682c6b4f58a623fb = imagecreatefromjpeg($v435ed7e9f07f740abf511a62c00eef6e); if ($v9b207167e5381c47682c6b4f58a623fb) { imagejpeg($v9b207167e5381c47682c6b4f58a623fb, $v435ed7e9f07f740abf511a62c00eef6e, 100); imagedestroy($v9b207167e5381c47682c6b4f58a623fb); } } } } return 1; }
public function onAutoCreateAvatar(iUmiEventPoint $oEventPoint) { $user_id = $oEventPoint->getParam("user_id"); $avatar_type_id = $object_type_id = umiObjectTypesCollection::getInstance()->getBaseType("users", "avatar"); if($oEventPoint->getMode() != "after") { return; } if($image = umiImageFile::upload("avatar", "user_avatar_file", "./images/cms/data/picture/")) { $avatar_id = umiObjectsCollection::getInstance()->addObject("Avatar for user {$user_id}", $avatar_type_id); $avatar = umiObjectsCollection::getInstance()->getObject($avatar_id); $avatar->setValue("picture", $image); $avatar->setValue("is_hidden", true); $avatar->commit(); $user = umiObjectsCollection::getInstance()->getObject($user_id); $user->setValue("avatar", $avatar_id); $user->commit(); return true; } else { return false; } }
public function next() { $vdcb9afbd8280826e367d80729a873796 = null; $vf6fe2202aaa5491a9c7a9fef46f44483 = next($this->arr_objs); if (is_file($vf6fe2202aaa5491a9c7a9fef46f44483)) { if (umiImageFile::getIsImage($vf6fe2202aaa5491a9c7a9fef46f44483)) { $vdcb9afbd8280826e367d80729a873796 = new umiImageFile($vf6fe2202aaa5491a9c7a9fef46f44483); } else { $vdcb9afbd8280826e367d80729a873796 = new umiFile($vf6fe2202aaa5491a9c7a9fef46f44483); } } elseif (is_dir($vf6fe2202aaa5491a9c7a9fef46f44483)) { $vdcb9afbd8280826e367d80729a873796 = new umiDirectory($vf6fe2202aaa5491a9c7a9fef46f44483); } return $vdcb9afbd8280826e367d80729a873796; }
public function uploadImages() { $parentId = getRequest("param0"); $parentElement = umiHierarchy::getInstance()->getElement($parentId); $hierarchy = umiHierarchy::getInstance(); $hierarchyTypes = umiHierarchyTypesCollection::getInstance(); $objectTypes = umiObjectTypesCollection::getInstance(); $cmsController = cmsController::getInstance(); if ($parentElement) { $folder = './images/cms/data/'; $curEl = $parentElement; $altDirs = array(); while (true) { $altDir = $curEl->getAltName(); if ($altDir) { array_unshift($altDirs, $altDir); } $curEl = $hierarchy->getElement($curEl->getRel()); if (empty($curEl)) { break; } } foreach ($altDirs as $alt) { $folder .= $alt . '/'; if (!file_exists($folder)) { mkdir($folder); } } $allowedTypes = array("jpg", "jpeg", "gif", "bmp", "png"); $tplId = $parentElement->getTplId(); $domainId = $parentElement->getDomainId(); $langId = $parentElement->getLangId(); $hierarchyTypeId = $hierarchyTypes->getTypeByName("photoalbum", "photo")->getId(); $objectTypeId = $objectTypes->getBaseType("photoalbum", "photo"); $objectType = $objectTypes->getType($objectTypeId); if ($objectType->getHierarchyTypeId() != $hierarchyTypeId) { $this->errorNewMessage("Object type and hierarchy type doesn't match"); $this->errorPanic(); } if (isset($_FILES['fs_upl_files']) && is_array($_FILES['fs_upl_files'])) { $uploadedFiles = $_FILES['fs_upl_files']; foreach ($uploadedFiles['name'] as $id => $pathName) { if ($fileUploaded = umiImageFile::upload("fs_upl_files", $id, $folder)) { $fileName = $fileUploaded->getFileName(); $filePath = $fileUploaded->getFilePath(); $fileExt = $fileUploaded->getExt(); if (in_array(strtolower($fileExt), $allowedTypes)) { $pathInfo = getPathInfo($fileName); $title = $pathInfo['filename']; $elementId = $hierarchy->addElement($parentId, $hierarchyTypeId, $title, $title, $objectTypeId, $domainId, $langId, $tplId); permissionsCollection::getInstance()->setDefaultPermissions($elementId); $element = $hierarchy->getElement($elementId, true); $element->setIsActive(true); $element->setIsVisible(false); $element->setName($title); $element->setValue("photo", $fileUploaded); $element->setValue("create_time", time()); $element->commit(); $parentElement->setUpdateTime(time()); $parentElement->commit(); } else { $fileUploaded->delete(); } } } $this->chooseRedirect(); } else { throw new publicAdminException(getLabel("error-expect-files-array")); } } else { throw new publicAdminException(getLabel("error-expect-parent-id")); } }
/** * TODO PHPDoc * Enter description here ... * @param unknown_type $object_id * @param unknown_type $is_new * @param unknown_type $b_force_owner * @param unknown_type $all */ public function saveEditedObject($object_id, $is_new = false, $b_force_owner = false, $all = false) { global $_FILES; $cmsController = cmsController::getInstance(); $permissions = permissionsCollection::getInstance(); if (!($object = umiObjectsCollection::getInstance()->getObject($object_id))) { return false; } if (!$b_force_owner && !$permissions->isOwnerOfObject($object_id)) { return false; } $object_type_id = $object->getTypeId(); $object_type = umiObjectTypesCollection::getInstance()->getType($object_type_id); $key = $is_new ? "new" : $object_id; if (is_null(getRequest('data'))) { if (is_null($_FILES)) { return true; } else { $_REQUEST['data'][$key] = array(); } } $data = isset($_REQUEST['data'][$key]) ? $_REQUEST['data'][$key] : array(); foreach ($_REQUEST as $skey => $value) { $real_key = substr($skey, 7); if (substr($skey, 0, 7) == 'select_' && !isset($data[$real_key])) { $data[$real_key] = $value; } } if (isset($_FILES['data']['tmp_name'][$key])) { foreach ($_FILES['data']['tmp_name'][$key] as $i => $v) { $data[$i] = $v; } } $data = $this->checkRequiredData($object_type, $data, $object_id, $is_new); $data = $this->checkAllowedData($object_type, $data); foreach ($data as $field_name => $field_value) { if (!($field_id = $object_type->getFieldId($field_name))) { continue; } $field = umiFieldsCollection::getInstance()->getField($field_id); if (!$field->getIsVisible() && !$all) { //continue; } $field_type = $field->getFieldType(); $data_type = $field_type->getDataType(); $fldr_name = $field_name . '/'; switch ($data_type) { case "password": if (isset($field_value[1])) { $field_value = $field_value[0] == $field_value[1] ? md5($field_value[0]) : NULL; } else { if (is_array($field_value)) { $field_value = $field_value[0] ? md5($field_value[0]) : NULL; } else { $field_value = $field_value ? md5($field_value) : NULL; } } break; case "date": $oDate = new umiDate(); $oDate->setDateByString($field_value); $field_value = $oDate; break; case "img_file": switch ($field_name) { case "menu_pic_ua": $destination_folder = "./images/cms/menu/"; break; case "header_pic": $destination_folder = "./images/cms/headers/"; break; case "menu_pic_a": $destination_folder = "./images/cms/menu/"; break; default: $destination_folder = "./images/cms/data/"; break; } // TODO: вставить проверку на необходимость наложения на картинку водного знака (by lauri) $oldValue = $object->getValue($field_name); if ($value = umiImageFile::upload("data", $field_name, substr($destination_folder, 2), $key)) { $field_value = $value; } else { $file_name = substr($field_value, 0, 2) == "./" ? $field_value : $destination_folder . $field_value; $field_value = new umiImageFile($file_name); } break; case "video_file": case "swf_file": $destination_folder = "./files/" . (is_dir("./files/" . $fldr_name) ? $fldr_name : ''); if ($value = umiFile::upload("data", $field_name, $destination_folder, $key)) { $field_value = $value; } else { $oldvalue = $object->getValue($field_name); if ($oldvalue) { $destination_folder = $oldvalue->getDirName() . "/"; } $file_name = substr($field_value, 0, 2) == "./" ? $field_value : $destination_folder . $field_value; $field_value = new umiFile($file_name); } break; case "file": $destination_folder = "./files/" . (is_dir("./files/" . $fldr_name) ? $fldr_name : ''); if ($value = umiFile::upload("data", $field_name, $destination_folder, $key)) { $field_value = $value; } else { $oldvalue = $object->getValue($field_name); if ($oldvalue) { $destination_folder = $oldvalue->getDirName() . "/"; } $file_name = substr($field_value, 0, 2) == "./" ? $field_value : $destination_folder . $field_value; $field_value = new umiFile($file_name); } break; case "string": case "text": case "wysiwyg": if ($cmsController->getCurrentMode() != "admin") { $field_value = strip_tags($field_value); } break; } $object->setValue($field_name, $field_value); } $object->commit(); return true; }
public function makeThumbnail($vd6fe1d0be6347b8ef2427fa629c04485 = false, $veaae26a6fb20ed3ef54fb23bfa0b1fcc = 'auto', $vb435e227d5dd201e1768b2bcb2e0aa81 = 'auto', $v66f6181bcb4cff4cd38fbc804a036db6 = "default", $v4f21a3dc48a4939b99266894c9fa2237 = false, $v4e5868d676cb634aa75b125a0f741abf = 0, $vd66636b253cb346dbb6240e30def3618 = 100) { if (!$v66f6181bcb4cff4cd38fbc804a036db6) { $v66f6181bcb4cff4cd38fbc804a036db6 = "default"; } $v4e5868d676cb634aa75b125a0f741abf = (int) $v4e5868d676cb634aa75b125a0f741abf; $v78805a221a988e79ef3f42d7c5bfd418 = new umiImageFile($vd6fe1d0be6347b8ef2427fa629c04485); $v3090ad88ff7c9ca191579b709069fe64 = $v78805a221a988e79ef3f42d7c5bfd418->getFileName(); $veb9f74e698fbb6e2897b3791bc406cbf = strtolower($v78805a221a988e79ef3f42d7c5bfd418->getExt()); $veb9f74e698fbb6e2897b3791bc406cbf = $veb9f74e698fbb6e2897b3791bc406cbf == 'bmp' ? 'jpg' : $veb9f74e698fbb6e2897b3791bc406cbf; $vb43c766cbc1365dca0ffcee38e46b613 = sha1($v78805a221a988e79ef3f42d7c5bfd418->getDirName()); if (!is_dir($this->thumbs_path . $vb43c766cbc1365dca0ffcee38e46b613)) { mkdir($this->thumbs_path . $vb43c766cbc1365dca0ffcee38e46b613, 0755, true); } $v107703932395f334896434b598ccdc55 = array('gif', 'jpeg', 'jpg', 'png', 'bmp'); if (!in_array($veb9f74e698fbb6e2897b3791bc406cbf, $v107703932395f334896434b598ccdc55)) { return ""; } $v3090ad88ff7c9ca191579b709069fe64 = substr($v3090ad88ff7c9ca191579b709069fe64, 0, strlen($v3090ad88ff7c9ca191579b709069fe64) - (strlen($veb9f74e698fbb6e2897b3791bc406cbf) + 1)); $vddc9a97c07cfa1f9fe744dbc63143e5c = $v3090ad88ff7c9ca191579b709069fe64 . "_" . $veaae26a6fb20ed3ef54fb23bfa0b1fcc . "_" . $vb435e227d5dd201e1768b2bcb2e0aa81 . "_" . $v78805a221a988e79ef3f42d7c5bfd418->getExt() . "." . $veb9f74e698fbb6e2897b3791bc406cbf; $vf38211e4c6839893265bcda112b63f80 = $this->thumbs_path . $vb43c766cbc1365dca0ffcee38e46b613 . "/" . $vddc9a97c07cfa1f9fe744dbc63143e5c; if (!file_exists($vf38211e4c6839893265bcda112b63f80) || filemtime($vf38211e4c6839893265bcda112b63f80) < filemtime($vd6fe1d0be6347b8ef2427fa629c04485)) { if (file_exists($vf38211e4c6839893265bcda112b63f80)) { unlink($vf38211e4c6839893265bcda112b63f80); } $v3a8d65a128a22de38fe374a76974161c = $v78805a221a988e79ef3f42d7c5bfd418->getWidth(); $v427c23061461a4b29c5d39dd32b7f2c6 = $v78805a221a988e79ef3f42d7c5bfd418->getHeight(); if (!($v3a8d65a128a22de38fe374a76974161c && $v427c23061461a4b29c5d39dd32b7f2c6)) { throw new coreException(getLabel('error-image-corrupted', null, $vd6fe1d0be6347b8ef2427fa629c04485)); } if (!$v3a8d65a128a22de38fe374a76974161c) { return false; } if ($v3a8d65a128a22de38fe374a76974161c <= $veaae26a6fb20ed3ef54fb23bfa0b1fcc && $v427c23061461a4b29c5d39dd32b7f2c6 <= $vb435e227d5dd201e1768b2bcb2e0aa81) { copy($vd6fe1d0be6347b8ef2427fa629c04485, $vf38211e4c6839893265bcda112b63f80); $v6f81aaeb51b38cddc8851000851e9c98 = $veaae26a6fb20ed3ef54fb23bfa0b1fcc; $v3c10300988ff410c7f7181d43214229e = $vb435e227d5dd201e1768b2bcb2e0aa81; } else { if ($veaae26a6fb20ed3ef54fb23bfa0b1fcc == "auto" && $vb435e227d5dd201e1768b2bcb2e0aa81 == "auto") { $v3c10300988ff410c7f7181d43214229e = $v427c23061461a4b29c5d39dd32b7f2c6; $v6f81aaeb51b38cddc8851000851e9c98 = $v3a8d65a128a22de38fe374a76974161c; } elseif ($veaae26a6fb20ed3ef54fb23bfa0b1fcc == "auto" || $vb435e227d5dd201e1768b2bcb2e0aa81 == "auto") { if ($vb435e227d5dd201e1768b2bcb2e0aa81 == "auto") { if ($v4e5868d676cb634aa75b125a0f741abf & 0x2 && $veaae26a6fb20ed3ef54fb23bfa0b1fcc > $v3a8d65a128a22de38fe374a76974161c) { $v3c10300988ff410c7f7181d43214229e = $v427c23061461a4b29c5d39dd32b7f2c6; $v6f81aaeb51b38cddc8851000851e9c98 = $v3a8d65a128a22de38fe374a76974161c; } else { $v6f81aaeb51b38cddc8851000851e9c98 = (int) $veaae26a6fb20ed3ef54fb23bfa0b1fcc; $v3c10300988ff410c7f7181d43214229e = (int) round($v427c23061461a4b29c5d39dd32b7f2c6 * ($veaae26a6fb20ed3ef54fb23bfa0b1fcc / $v3a8d65a128a22de38fe374a76974161c)); } } elseif ($veaae26a6fb20ed3ef54fb23bfa0b1fcc == "auto") { if ($v4e5868d676cb634aa75b125a0f741abf & 0x2 && $vb435e227d5dd201e1768b2bcb2e0aa81 > $v427c23061461a4b29c5d39dd32b7f2c6) { $v3c10300988ff410c7f7181d43214229e = $v427c23061461a4b29c5d39dd32b7f2c6; $v6f81aaeb51b38cddc8851000851e9c98 = $v3a8d65a128a22de38fe374a76974161c; } else { $v3c10300988ff410c7f7181d43214229e = (int) $vb435e227d5dd201e1768b2bcb2e0aa81; $v6f81aaeb51b38cddc8851000851e9c98 = (int) round($v3a8d65a128a22de38fe374a76974161c * ($vb435e227d5dd201e1768b2bcb2e0aa81 / $v427c23061461a4b29c5d39dd32b7f2c6)); } } } else { if ($v4e5868d676cb634aa75b125a0f741abf & 0x1) { $v71601a1f68d42d55d91f4c9e39e61685 = (double) $veaae26a6fb20ed3ef54fb23bfa0b1fcc / $v3a8d65a128a22de38fe374a76974161c; $v7263447d6d1b368bcdbd1fe30835d087 = (double) $vb435e227d5dd201e1768b2bcb2e0aa81 / $v427c23061461a4b29c5d39dd32b7f2c6; $v8ce4b16b22b58894aa86c421e8759df3 = min(array($v71601a1f68d42d55d91f4c9e39e61685, $v7263447d6d1b368bcdbd1fe30835d087)); if ($v4e5868d676cb634aa75b125a0f741abf & 0x2 && $v8ce4b16b22b58894aa86c421e8759df3 > 1.0) { $v8ce4b16b22b58894aa86c421e8759df3 = 1.0; } $v6f81aaeb51b38cddc8851000851e9c98 = (int) round($v3a8d65a128a22de38fe374a76974161c * $v8ce4b16b22b58894aa86c421e8759df3); $v3c10300988ff410c7f7181d43214229e = (int) round($v427c23061461a4b29c5d39dd32b7f2c6 * $v8ce4b16b22b58894aa86c421e8759df3); } else { $v6f81aaeb51b38cddc8851000851e9c98 = $veaae26a6fb20ed3ef54fb23bfa0b1fcc; $v3c10300988ff410c7f7181d43214229e = $vb435e227d5dd201e1768b2bcb2e0aa81; } } $vf12105146129696d6a7e0ed521db2e48 = imagecreatetruecolor($v6f81aaeb51b38cddc8851000851e9c98, $v3c10300988ff410c7f7181d43214229e); $vde6403c41549334bb72244a31e9edf52 = imagecolorallocate($vf12105146129696d6a7e0ed521db2e48, 255, 255, 255); $v520584b026332b9e0b598c3d091329b1 = $v78805a221a988e79ef3f42d7c5bfd418->createImage($vd6fe1d0be6347b8ef2427fa629c04485); $v36cd38f49b9afa08222c0dc9ebfe35eb = $v520584b026332b9e0b598c3d091329b1['im']; switch ($veb9f74e698fbb6e2897b3791bc406cbf) { case 'gif': imagefill($vf12105146129696d6a7e0ed521db2e48, 0, 0, $vde6403c41549334bb72244a31e9edf52); imagecolortransparent($vf12105146129696d6a7e0ed521db2e48, $vde6403c41549334bb72244a31e9edf52); imagealphablending($v36cd38f49b9afa08222c0dc9ebfe35eb, TRUE); imagealphablending($vf12105146129696d6a7e0ed521db2e48, TRUE); break; case 'png': imagefill($vf12105146129696d6a7e0ed521db2e48, 0, 0, $vde6403c41549334bb72244a31e9edf52); imagecolortransparent($vf12105146129696d6a7e0ed521db2e48, $vde6403c41549334bb72244a31e9edf52); imagealphablending($vf12105146129696d6a7e0ed521db2e48, false); imagesavealpha($vf12105146129696d6a7e0ed521db2e48, true); imagealphablending($v36cd38f49b9afa08222c0dc9ebfe35eb, false); imagesavealpha($v36cd38f49b9afa08222c0dc9ebfe35eb, true); break; default: } imagecopyresampled($vf12105146129696d6a7e0ed521db2e48, $v36cd38f49b9afa08222c0dc9ebfe35eb, 0, 0, 0, 0, $v6f81aaeb51b38cddc8851000851e9c98, $v3c10300988ff410c7f7181d43214229e, $v3a8d65a128a22de38fe374a76974161c, $v427c23061461a4b29c5d39dd32b7f2c6); switch ($veb9f74e698fbb6e2897b3791bc406cbf) { case 'gif': $v9b207167e5381c47682c6b4f58a623fb = imagegif($vf12105146129696d6a7e0ed521db2e48, $vf38211e4c6839893265bcda112b63f80); break; case 'png': $v9b207167e5381c47682c6b4f58a623fb = imagepng($vf12105146129696d6a7e0ed521db2e48, $vf38211e4c6839893265bcda112b63f80); break; default: $v9b207167e5381c47682c6b4f58a623fb = imagejpeg($vf12105146129696d6a7e0ed521db2e48, $vf38211e4c6839893265bcda112b63f80, $vd66636b253cb346dbb6240e30def3618); } if (!$v9b207167e5381c47682c6b4f58a623fb) { throw new coreException(getLabel('label-errors-16008')); } imagedestroy($v36cd38f49b9afa08222c0dc9ebfe35eb); imagedestroy($vf12105146129696d6a7e0ed521db2e48); } } $v2063c1608d6e0baf80249c42e2be5804 = new umiImageFile($vf38211e4c6839893265bcda112b63f80); $v47c80780ab608cc046f2a6e6f071feb6 = array(); $v47c80780ab608cc046f2a6e6f071feb6['size'] = $v2063c1608d6e0baf80249c42e2be5804->getSize(); $v47c80780ab608cc046f2a6e6f071feb6['filename'] = $v2063c1608d6e0baf80249c42e2be5804->getFileName(); $v47c80780ab608cc046f2a6e6f071feb6['filepath'] = $v2063c1608d6e0baf80249c42e2be5804->getFilePath(); $v47c80780ab608cc046f2a6e6f071feb6['src'] = $v2063c1608d6e0baf80249c42e2be5804->getFilePath(true); $v47c80780ab608cc046f2a6e6f071feb6['ext'] = $v2063c1608d6e0baf80249c42e2be5804->getExt(); $v47c80780ab608cc046f2a6e6f071feb6['width'] = $v2063c1608d6e0baf80249c42e2be5804->getWidth(); $v47c80780ab608cc046f2a6e6f071feb6['height'] = $v2063c1608d6e0baf80249c42e2be5804->getHeight(); $v47c80780ab608cc046f2a6e6f071feb6['void:template'] = $v66f6181bcb4cff4cd38fbc804a036db6; if (cmsController::getInstance()->getCurrentMode() == "admin") { $v47c80780ab608cc046f2a6e6f071feb6['src'] = str_replace("&", "&", $v47c80780ab608cc046f2a6e6f071feb6['src']); } if ($v4f21a3dc48a4939b99266894c9fa2237) { return $v47c80780ab608cc046f2a6e6f071feb6; } else { list($v4f2afc9c4099ee1f39c9f551123e54bd) = def_module::loadTemplates("thumbs/" . $v66f6181bcb4cff4cd38fbc804a036db6, "image"); return def_module::parseTemplate($v4f2afc9c4099ee1f39c9f551123e54bd, $v47c80780ab608cc046f2a6e6f071feb6); } }
public function makeThumbImage($preFix = false, $elem_id = false, $field_name = false, $width = 'auto', $height = 'auto', $crop = true, $cropside = 5, $isLogo = false, $quality = 100, $foldersSave = false) { $arr = array(); if (!$foldersSave) { $foldersSave = "images/thumbs"; } if ($elem_id) { $element = umiHierarchy::getInstance()->getElement($elem_id); if ($element instanceof umiHierarchyElement) { if ($field_name) { } else { $arr['error'] = '<![CDATA[ Укажите название поля, в котором содержится изображение($field_name) ]]>'; return $arr; } $image_elem = $element->getValue($field_name); $newFileName = $preFix . $elem_id . '_' . $field_name; if (is_object($image_elem)) { $path = $image_elem->getFilepath(); } } } else { $arr['error'] = '<![CDATA[ Не задан идентификатор объекта($elem_id) ]]>'; return $arr; } $domain = getServer('HTTP_HOST'); $thumbs_path = './' . $foldersSave . '/'; $isSharpen = true; $image = new umiImageFile($path); $file_name = $image->getFileName(); $file_ext = strtolower($image->getExt()); $file_ext = $file_ext == 'bmp' ? 'jpg' : $file_ext; $allowedExts = array('gif', 'jpeg', 'jpg', 'png', 'bmp'); if (!in_array($file_ext, $allowedExts)) { $arr['error'] = '<![CDATA[ Не разрешенное расширение файла ]]>'; return $arr; } /*Название папки в виде ширина_высота_вырезание_качество*/ $thumbPath = $width . '_' . $height . '_' . $cropside . '_' . $quality; /*Определяет, является ли имя файла директорией*/ if (!is_dir($thumbs_path . $thumbPath)) { mkdir($thumbs_path . $thumbPath, 0755, true); } /*Название уменьшенного изображения*/ $file_name_new = $newFileName . "." . $file_ext; $path_new = $thumbs_path . $thumbPath . '/' . $file_name_new; if (!file_exists($path_new) || filemtime($path_new) < filemtime($path)) { if (file_exists($path_new)) { unlink($path_new); } $width_src = $image->getWidth(); $height_src = $image->getHeight(); if (!($width_src && $height_src)) { throw new coreException(getLabel('error-image-corrupted', null, $path)); } if ($height == "auto") { $real_height = (int) round($height_src * ($width / $width_src)); $height = $real_height; $real_width = (int) $width; } else { if ($width == "auto") { $real_width = (int) round($width_src * ($height / $height_src)); $width = $real_width; } else { $real_width = (int) $width; } $real_height = (int) $height; } $offset_h = 0; $offset_w = 0; /*realloc: devision by zero fix*/ if (!intval($width) || !intval($height)) { $crop = false; } if ($crop) { $width_ratio = $width_src / $width; $height_ratio = $height_src / $height; if ($width_ratio > $height_ratio) { $offset_w = round(($width_src - $width * $height_ratio) / 2); $width_src = round($width * $height_ratio); } elseif ($width_ratio < $height_ratio) { $offset_h = round(($height_src - $height * $width_ratio) / 2); $height_src = round($height * $width_ratio); } if ($cropside) { switch ($cropside) { case 1: $offset_w = 0; $offset_h = 0; break; case 2: $offset_h = 0; break; case 3: $offset_w += $offset_w; $offset_h = 0; break; case 4: $offset_w = 0; break; case 5: break; case 6: $offset_w += $offset_w; break; case 7: $offset_w = 0; $offset_h += $offset_h; break; case 8: $offset_h += $offset_h; break; case 9: $offset_w += $offset_w; $offset_h += $offset_h; break; } } } $thumb = imagecreatetruecolor($real_width, $real_height); $source_array = $image->createImage($path); $source = $source_array['im']; if ($width * 4 < $width_src && $height * 4 < $height_src) { $_TMP = array(); $_TMP['width'] = round($width * 4); $_TMP['height'] = round($height * 4); $_TMP['image'] = imagecreatetruecolor($_TMP['width'], $_TMP['height']); if ($file_ext == 'gif') { $_TMP['image_white'] = imagecolorallocate($_TMP['image'], 255, 255, 255); imagefill($_TMP['image'], 0, 0, $_TMP['image_white']); imagecolortransparent($_TMP['image'], $_TMP['image_white']); imagealphablending($source, TRUE); imagealphablending($_TMP['image'], TRUE); } else { imagealphablending($_TMP['image'], false); imagesavealpha($_TMP['image'], true); } imagecopyresampled($_TMP['image'], $source, 0, 0, $offset_w, $offset_h, $_TMP['width'], $_TMP['height'], $width_src, $height_src); imageDestroy($source); $source = $_TMP['image']; $width_src = $_TMP['width']; $height_src = $_TMP['height']; $offset_w = 0; $offset_h = 0; unset($_TMP); } if ($file_ext == 'gif') { $thumb_white_color = imagecolorallocate($thumb, 255, 255, 255); imagefill($thumb, 0, 0, $thumb_white_color); imagecolortransparent($thumb, $thumb_white_color); imagealphablending($source, TRUE); imagealphablending($thumb, TRUE); } else { imagealphablending($thumb, false); imagesavealpha($thumb, true); } imagecopyresampled($thumb, $source, 0, 0, $offset_w, $offset_h, $width, $height, $width_src, $height_src); if ($isSharpen) { $thumb = makeThumbnailFullUnsharpMask($thumb, 80, 0.5, 3); } switch ($file_ext) { case 'gif': $res = imagegif($thumb, $path_new); break; case 'png': $res = imagepng($thumb, $path_new); break; default: $res = imagejpeg($thumb, $path_new, $quality); } if (!$res) { throw new coreException(getLabel('label-errors-16008')); } imageDestroy($source); imageDestroy($thumb); if ($isLogo) { umiImageFile::addWatermark($path_new); } } /*Создание нового уменьшенного изображения на поддомене*/ $value = new umiImageFile($path_new); $arr['info']['nodes:elem_id'][] = $elem_id; $arr['info']['nodes:field_name'][] = $field_name; $arr['info']['nodes:path'][] = $path; $arr['info']['nodes:alt_name'][] = $alt_name; $arr['info']['nodes:width'][] = $width; $arr['info']['nodes:height'][] = $height; $arr['info']['nodes:crop'][] = $crop; $arr['info']['nodes:cropside'][] = $cropside; $arr['info']['nodes:isLogo'][] = $isLogo; $arr['info']['nodes:quality'][] = $quality; $arr['info']['nodes:domain'][] = $domain; $arr['thumb_info']['nodes:width'][] = $value->getWidth(); $arr['thumb_info']['nodes:height'][] = $value->getHeight(); $arr['thumb_info']['nodes:size'][] = $value->getSize(); $arr['thumb_info']['nodes:ext'][] = $value->getExt(); $arr['thumb_info']['nodes:filename'][] = $value->getFileName(); $arr['thumb_info']['nodes:filepath'][] = $value->getFilePath(); $thumb_src = 'http://' . $domain . '/' . $foldersSave . substr($value->getFilePath(true), iconv_strlen($foldersSave) + 1); $arr['thumb_info']['nodes:src'][] = $thumb_src; if (cmsController::getInstance()->getCurrentMode() == "admin") { $arr['src'] = str_replace("&", "&", $arr['src']); } return $arr; }