���ѧۧݧ�ӧ�� �ާ֧ߧ֧էا֧� - ���֧էѧܧ�ڧ��ӧѧ�� - /home/alphpwcp/public_html/us/alphachat/lib/core/lhcore/lhfileupload.php
���ѧ٧ѧ�
<?php class erLhcoreClassFileUpload extends UploadHandler { public $uploadedFile = false; protected function get_file_name($name, $type = null, $index = null, $content_range = null) { $name = sha1($name . erLhcoreClassModelForgotPassword::randomPassword(40) . time()); return md5($this->get_unique_filename( $this->trim_file_name($name, $type, $index, $content_range), $type, $index, $content_range )); } protected function generate_response($content, $print_response = true) { parent::generate_response($content, false); } protected function handle_file_upload_parent($uploaded_file, $name, $size, $type, $error, $index, $content_range) { return parent::handle_file_upload( $uploaded_file, $name, $size, $type, $error, $index, $content_range ); } protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, $index = null, $content_range = null) { $matches = array(); if (strpos($name, '.') === false && preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) { $name = $uploadFileName = 'clipboard.' . $matches[1]; } else { $uploadFileName = $name; } $file = parent::handle_file_upload( $uploaded_file, $name, $size, $type, $error, $index, $content_range ); if (!preg_match($this->options['accept_file_types_lhc'], $uploadFileName)) { $file->error = $this->get_error_message('accept_file_types'); } if (empty($file->error) && isset($this->options['antivirus']) && $this->options['antivirus'] !== false && is_object($this->options['antivirus']) && !$this->options['antivirus']->scan(realpath($this->options['upload_dir'] . $file->name))) { unlink($this->options['upload_dir'] . $file->name); erLhcoreClassFileUpload::removeRecursiveIfEmpty('var/', str_replace('var/', '', $this->options['upload_dir'])); $file->error = 'Virus found in file!'; } if (empty($file->error)) { $fileUpload = new erLhcoreClassModelChatFile(); $fileUpload->size = $file->size; $fileUpload->type = $file->type; $fileUpload->name = $file->name; $fileUpload->date = time(); $fileUpload->user_id = isset($this->options['user_id']) ? $this->options['user_id'] : 0; $fileUpload->upload_name = $name; $fileUpload->file_path = $this->options['upload_dir']; if (isset($this->options['chat']) && $this->options['chat'] instanceof erLhcoreClassModelChat) { $fileUpload->chat_id = $this->options['chat']->id; } elseif (isset($this->options['online_user']) && $this->options['online_user'] instanceof erLhcoreClassModelChatOnlineUser) { $fileUpload->online_user_id = $this->options['online_user']->id; } $matches = array(); if (strpos($name, '.') === false && preg_match('/^image\/(gif|jpe?g|png)/', $fileUpload->type, $matches)) { $fileUpload->extension = strtolower($matches[1]); } else { $partsFile = explode('.', $fileUpload->upload_name); $fileUpload->extension = strtolower(end($partsFile)); } if ($fileUpload->extension == 'svg') { erLhcoreClassFileUploadAdmin::cleanSVG($fileUpload->file_path_server); $file->size = $fileUpload->size = filesize($fileUpload->file_path_server); } if (isset($this->options['remove_meta']) && $this->options['remove_meta'] == true && in_array($fileUpload->extension, array('jfif','jpg', 'jpeg', 'png', 'gif'))) { erLhcoreClassFileUploadAdmin::removeExif($fileUpload->file_path_server, $fileUpload->file_path_server . '_exif'); unlink($fileUpload->file_path_server); rename($fileUpload->file_path_server . '_exif', $fileUpload->file_path_server); $fileUpload->size = filesize($fileUpload->file_path_server); } if (isset($this->options['max_res']) && $this->options['max_res'] > 0 && in_array($fileUpload->extension, array('jfif','jpg', 'jpeg', 'png', 'gif'))) { $imageSize = getimagesize($fileUpload->file_path_server); if ($imageSize !== false && ($imageSize[0] > $this->options['max_res'] || $imageSize[1] > $this->options['max_res'])) { $conversionSettings[] = new ezcImageHandlerSettings( 'gd','erLhcoreClassGalleryGDHandler' ); $converter = new ezcImageConverter( new ezcImageConverterSettings( $conversionSettings ) ); $converter->createTransformation( 'fitimage', array( new ezcImageFilter( 'scale', array( 'width' => $this->options['max_res'], 'height' => $this->options['max_res'] ) ), ), array( 'image/jpeg' ), new ezcImageSaveOptions(array('quality' => (int)95)) ); $converter->transform('fitimage', $fileUpload->file_path_server, $fileUpload->file_path_server); $fileUpload->size = filesize($fileUpload->file_path_server); $fileUpload->type = 'image/jpeg'; $fileUpload->extension = 'jpg'; } } // Set resolution instantly if (in_array($fileUpload->extension, array('jfif','jpg', 'jpeg', 'png', 'gif'))) { $imageSize = getimagesize($fileUpload->file_path_server); if ($imageSize !== false && ($imageSize[0] > 10 || $imageSize[1] > 10)) { $fileUpload->width = (int)$imageSize[0]; $fileUpload->height = (int)$imageSize[1]; } } $fileUpload->saveThis(); $file->id = $fileUpload->id; if (isset($this->options['chat']) && $this->options['chat'] instanceof erLhcoreClassModelChat) { // Chat assign $chat = $this->options['chat']; // Format message only if preview is not enabled if (!isset($this->options['file_preview']) || $this->options['file_preview'] != true || $fileUpload->extension == 'mp3') { $msg = new erLhcoreClassModelmsg(); $msg->msg = '[file=' . $file->id . '_' . $fileUpload->security_hash . ']'; $msg->chat_id = $chat->id; $msg->user_id = isset($this->options['user_id']) ? $this->options['user_id'] : 0; // We save instantly as message only visitors files if ($msg->user_id == 0 || (isset($this->options['as_form']) && $this->options['as_form'] == true)) { $chat->last_user_msg_time = $msg->time = time(); erLhcoreClassChat::getSession()->save($msg); // Set last message ID if ($chat->last_msg_id < $msg->id) { $chat->last_msg_id = $msg->id; } if ($msg->user_id == 0) { if ($chat->gbot_id > 0 && (!isset($chat->chat_variables_array['gbot_disabled']) || $chat->chat_variables_array['gbot_disabled'] == 0)) { erLhcoreClassGenericBotWorkflow::userMessageAdded($chat, $msg); } $chat->has_unread_messages = 1; } $chat->updateThis(array('update' => array('last_user_msg_time','last_msg_id','has_unread_messages'))); erLhcoreClassChatEventDispatcher::getInstance()->dispatch('chat.addmsguser',array('files' => [$fileUpload], 'msg' => & $msg, 'chat' => & $chat)); } } else { $fileUpload->tmp = 1; $fileUpload->updateThis(array('update' => array('tmp'))); } } $this->uploadedFile = $fileUpload; } else { $this->uploadedFile = $file; } return $file; } public function delete($print_response = true) { return false; } public static function mkdirRecursive($path, $chown = false, $wwwUser = 'apache', $wwwUserGroup = 'apache') { $partsPath = explode('/', $path); $pathCurrent = ''; foreach ($partsPath as $key => $path) { $pathCurrent .= $path . '/'; if (!is_dir($pathCurrent)) { mkdir($pathCurrent, 0755); if ($chown == true) { chown($pathCurrent, $wwwUser); chgrp($pathCurrent, $wwwUserGroup); } } } } public static function hasFiles($sourceDir) { if (!is_dir($sourceDir)) { return true; } $elements = array(); $d = @dir($sourceDir); if (!$d) { return true; } while (($entry = $d->read()) !== false) { if ($entry == '.' || $entry == '..') { continue; } return true; } return false; } public static function removeRecursiveIfEmpty($basePath, $removePath) { $removePath = trim($removePath, '/'); $partsRemove = explode('/', $removePath); $pathElementsCount = count($partsRemove); foreach ($partsRemove as $part) { // We found some files/folders, so we have to exit if (self::hasFiles($basePath . implode('/', $partsRemove)) === true) { return; } else { //Folder is empty, delete this folder @rmdir($basePath . implode('/', $partsRemove)); } array_pop($partsRemove); } } } ?>
| ver. 1.4 |
Github
|
.
| PHP 8.2.30 | ���֧ߧ֧�ѧ�ڧ� ����ѧߧڧ��: 0 |
proxy
|
phpinfo
|
���ѧ����ۧܧ�