$link = cmsCore::request('b_link', 'str'); $typeimg = cmsCore::request('typeimg', 'str'); $maxhits = cmsCore::request('maxhits', 'int'); $maxuser = 0; $published = cmsCore::request('published', 'int', 0); $position = cmsCore::request('position', 'str'); if (@$_FILES['picture']['size']) { $ext = mb_strtolower(pathinfo($_FILES['picture']['name'], PATHINFO_EXTENSION)); if (!in_array($ext, array('jpg', 'jpeg', 'gif', 'png', 'swf'))) { cmsCore::addSessionMessage($_LANG['AD_INCORRECT_FILE_TYPE'], 'error'); cmsCore::redirectBack(); } $filename = md5(microtime()) . '.' . $ext; $uploaddir = PATH . '/images/banners/'; $uploadfile = $uploaddir . $filename; if (cmsCore::moveUploadedFile($_FILES['picture']['tmp_name'], $uploadfile, $_FILES['picture']['error'])) { if ($opt == 'submit') { $sql = "INSERT INTO cms_banners (position, typeimg, fileurl, hits, clicks, maxhits, maxuser, user_id, pubdate, title, link, published)\n VALUES ('{$position}', '{$typeimg}', '{$filename}', 0, 0, '{$maxhits}', '{$maxuser}', 1, NOW(), '{$title}', '{$link}', '{$published}')"; $inDB->query($sql); cmsCore::redirect('?view=components&do=config&opt=list&id=' . $id); } else { $fileurl = $inDB->get_field('cms_banners', "id = '{$item_id}'", 'fileurl'); @unlink($uploaddir . $fileurl); $sql = "UPDATE cms_banners SET fileurl = '{$filename}' WHERE id = '{$item_id}'"; $inDB->query($sql); } } else { cmsCore::addSessionMessage($_LANG['AD_ADDING_ERROR_TEXT'] . cmsCore::uploadError(), 'error'); cmsCore::redirectBack(); } } elseif ($opt == 'submit') {
/** * Загружает фото файл * @return array $file (filename, realfile) */ public function uploadPhoto($old_file = '') { // если каталог загрузки не определен, возвращаем ложь if (!$this->upload_dir) { return false; } if (!empty($_FILES[$this->input_name]['name'])) { cmsCore::includeGraphics(); $input_name = preg_replace('/[^a-zA-Zа-яёЁА-Я0-9\\.\\-_ ]/ui', '', mb_substr(basename(strval($_FILES[$this->input_name]['name'])), 0, 160)); // расширение $ext = mb_strtolower(pathinfo($input_name, PATHINFO_EXTENSION)); // имя файла без расширения $realfile = str_replace('.' . $ext, '', $input_name); if (!in_array($ext, array('jpg', 'jpeg', 'gif', 'png', 'bmp'))) { return false; } $this->filename = $this->filename ? $this->filename : md5(time() . $realfile) . '.' . $ext; $uploadphoto = $this->upload_dir . $this->filename; $uploadthumb['small'] = $this->upload_dir . $this->dir_small . $this->filename; $uploadthumb['medium'] = $this->upload_dir . $this->dir_medium . $this->filename; $uploadphoto = $this->upload_dir . $this->filename; $source = $_FILES[$this->input_name]['tmp_name']; $errorCode = $_FILES[$this->input_name]['error']; if (cmsCore::moveUploadedFile($source, $uploadphoto, $errorCode)) { // удаляем предыдущий файл если необходимо $this->deletePhotoFile($old_file); if (!$this->isImage($uploadphoto)) { $this->deletePhotoFile($this->filename); return false; } if (!$this->small_size_h) { $this->small_size_h = $this->small_size_w; } if (!$this->medium_size_h) { $this->medium_size_h = $this->medium_size_w; } // Гененрируем маленькое и среднее изображения if (!$this->only_medium) { if (!is_dir($this->upload_dir . $this->dir_small)) { @mkdir($this->upload_dir . $this->dir_small); } @img_resize($uploadphoto, $uploadthumb['small'], $this->small_size_w, $this->small_size_h, $this->thumbsqr); } if (!is_dir($this->upload_dir . $this->dir_medium)) { @mkdir($this->upload_dir . $this->dir_medium); } @img_resize($uploadphoto, $uploadthumb['medium'], $this->medium_size_w, $this->medium_size_h, false, false); // Накладывать ватермарк if ($this->is_watermark) { @img_add_watermark($uploadthumb['medium']); } if ($this->is_watermark) { @img_add_watermark($uploadthumb['small']); } // сохранять оригинал if (!$this->is_saveorig) { @unlink($uploadphoto); } elseif ($this->is_watermark) { @img_add_watermark($uploadphoto); } $file['filename'] = $this->filename; $file['realfile'] = $realfile; } else { return false; } } else { return false; } return $file; }
$item['meta_keys'] = $item['tags']; $item['pubdate'] = date('Y-m-d H:i'); $item['imageurl'] = ''; $rows = cmsCore::request('xlsrows', 'int', 0); $sheet = cmsCore::request('xlslist', 'int', 1); $cells = cmsCore::request('cells', 'array_str', array()); $charset = cmsCore::request('charset', 'str', 'cp1251'); if (empty($_FILES['xlsfile']['name'])) { cmsCore::addSessionMessage($_LANG['AD_NO_LOAD_EXCEL_FILE'], 'error'); cmsCore::redirectBack(); } $xls_file = PATH .'/upload/'. md5(microtime().uniqid()). '.xls'; if (!cmsCore::moveUploadedFile($_FILES['xlsfile']['tmp_name'], $xls_file, $_FILES['xlsfile']['error'])) { cmsCore::addSessionMessage($_LANG['AD_NO_LOAD_EXCEL_FILE'], 'error'); cmsCore::redirectBack(); } $file = $model->uploadPhoto(); if ($file) { $item['imageurl'] = $file['filename']; } cmsCore::includeFile('includes/excel/excel_reader2.php'); $data = new Spreadsheet_Excel_Reader($xls_file, true, $charset); for ($r=0; $r<$rows; $r++) { $fields = array(); $title = '';
/** * Загружает и добавляет/обновляет файл(ы) * @param int $post_id * @param array $input_file * @return str имя файла */ public function addUpdatePostAttachments($post_id, $input_file = array(), $count_files = 0) { if (!@$_FILES['fa']['name'][0]) { return 0; } $success = true; foreach ($_FILES['fa']['error'] as $key => $error) { if ($count_files > $this->config['fa_max']) { $success = false; break; } if ($_FILES['fa']['size'][$key] > $this->config['fa_size'] * 1024) { $success = false; continue; } $file = $_FILES['fa']['name'][$key]; $pp = pathinfo($file); $ext = mb_strtolower($pp['extension']); if (in_array($ext, array('php', 'htm', 'html', 'htaccess'))) { $success = false; continue; } if (!mb_stristr($this->config['fa_ext'], $ext)) { $success = false; continue; } $file = cmsCore::strToURL(mb_substr($file, 0, mb_strrpos($file, '.'))) . '_' . uniqid() . '.' . $ext; @mkdir(PATH . '/upload/forum/post' . $post_id); $destination = PATH . '/upload/forum/post' . $post_id . '/' . $file; // Формируем массив $result['filesize'] = $this->inDB->escape_string($_FILES['fa']['size'][$key]); $result['post_id'] = $post_id; $result['hits'] = 0; $result['pubdate'] = date("Y-m-d H:i:s"); $result['filename'] = $this->inDB->escape_string($file); if (cmsCore::moveUploadedFile($_FILES['fa']['tmp_name'][$key], $destination, $error)) { if (!$input_file) { //Если новый файл $this->inDB->insert('cms_forum_files', $result); } else { // Если обновляем файл $this->deletePostAttachment($input_file, false); $this->inDB->update('cms_forum_files', $result, $input_file['id']); break; // подразумевается, что обновляем 1 файл } } else { $success = false; @rmdir(PATH . '/upload/forum/post' . $post_id); } $count_files++; } $this->updatePostAttachmentsCount($post_id); return $success; }
/** * Проверяет значения формы * @param int $form_id ID формы * @return array */ public static function getFieldsInputValues($form_id) { // Получаем данные без mysqli_real_escape_string $form_array = cmsCore::request('field', 'array'); if (!$form_array) { return array(); } $formObj = new self($form_id, $form_array); if (!$formObj->form || !$formObj->form_fields) { return array(); } global $_LANG; $inUser = cmsUser::getInstance(); $output = array(); // Заполняем выходной массив значений // $output['values'] массив значений полей // $output['errors'] массив ошибок полей foreach ($formObj->form_fields as $field) { // Значение поля $field_value = array_key_exists($field['id'], $formObj->values) ? $formObj->values[$field['id']] : ''; $error = ''; // проверяем заполненность текстового поля если нужно if ($field['mustbe'] && !$field_value && $field['kind'] != 'file') { $error = $_LANG['FIELD'] . ' "' . $field['title'] . '" ' . $_LANG['MUST_BE_FILLED']; } else { cmsUser::sessionPut('form_last_' . $formObj->form_id . '_' . $field['id'], htmlspecialchars($field_value)); } // Загружаем файл если он есть в форме if ($field['kind'] == 'file') { // старые значения если есть $old_url = $field_value['url']; $old_name = $field_value['name']; $output['values'][$field['id']] = array(); if (!$_FILES['field']['name'][$field['id']]) { // Поле обязательно для заполнения? if ($field['mustbe'] && !$old_url) { $error = $_LANG['FIELD'] . ' "' . $field['title'] . '" ' . $_LANG['MUST_BE_FILLED']; } else { // если пришел флаг на удаление if (isset($field_value['delete'])) { $formObj->deleteFile($old_url); $old_url = ''; $old_name = ''; } $output['values'][$field['id']] = array('name' => $old_name, 'url' => $old_url); } } else { // директория загрузки $upload_dir = PATH . '/upload/forms/' . $form_id . '/' . $inUser->id; @mkdir($upload_dir, 0777, true); @chmod($upload_dir, 0777); // проверяем расширение файла $maytypes = explode(',', $field['config']['ext']); $ext = mb_strtolower(pathinfo($_FILES['field']['name'][$field['id']], PATHINFO_EXTENSION)); if (!in_array($ext, $maytypes)) { $error = $_LANG['ERROR_TYPE_FILE'] . $field['config']['ext']; } // имя файла $file_name = cmsCore::strToURL(pathinfo($_FILES['field']['name'][$field['id']], PATHINFO_FILENAME)); $dest = $upload_dir . '/' . $file_name . uniqid() . '.' . $ext; if (!$error) { if (!cmsCore::moveUploadedFile($_FILES['field']['tmp_name'][$field['id']], $dest, $_FILES['field']['error'][$field['id']])) { $error = cmsCore::uploadError(); } else { $formObj->deleteFile($old_url); $output['values'][$field['id']] = array('name' => $file_name, 'url' => str_replace(PATH, '', $dest)); } } } } else { // Заполняем массив значений полей, ключи массива id поля $output['values'][$field['id']] = $field['config']['max'] ? mb_substr(strip_tags($field_value), 0, $field['config']['max']) : strip_tags($field_value); } // Заполняем массив ошибок $output['errors'][$field['id']] = $error; } // если были ошибки, удаляем загруженный файл, если он есть if (!empty($dest)) { foreach ($output['errors'] as $field_error) { if ($field_error) { @unlink($dest); break; } } } return $output; }
if ($file['filename']) { $http_path = '/upload/wysiwyg/' . $file['filename']; $error = ''; } } // грузим другие файлы if ($type === 'file') { if (empty($plugin->config['allow_file_ext']) || !$plugin->canFileUpload()) { cmsCore::error404(); } $allow_ext = explode(',', $plugin->config['allow_file_ext']); $allow_ext = array_map(function ($val) { return trim($val); }, $allow_ext); if (!empty($_FILES['upload']['name'])) { $input_name = preg_replace('/[^a-zA-Zа-яёЁА-Я0-9\\.\\-_ ]/ui', '', basename(strval($_FILES['upload']['name']))); $ext = mb_strtolower(pathinfo($input_name, PATHINFO_EXTENSION)); if ($ext && in_array($ext, $allow_ext, true)) { $uploadpath = PATH . '/upload/wysiwyg/' . md5(microtime() . uniqid()) . '.' . $ext; $source = $_FILES['upload']['tmp_name']; $errorCode = $_FILES['upload']['error']; if (cmsCore::moveUploadedFile($source, $uploadpath, $errorCode)) { $http_path = str_replace(PATH, '', $uploadpath); $error = ''; } } else { $error = $_LANG['CK_UPLOAD_EXT_ERROR']; } } } cmsCore::halt('<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction(' . cmsCore::request('CKEditorFuncNum', 'int', 0) . ', "' . $http_path . '", "' . $error . '" );</script>');