Добавление свойств к гостевой книге
Стоит задача прикрутить кучу дополнительных к гостевой книге, ок, сказано - сделано. Создаём допсвойства, редактируем ТДС. С текстовыми полями всё ок, а вот с полями типа "Файл" (в данном случае необходимо прикрутить возможность добавления пользователем 3 дополнительных картинок). С добавлением картинок с формы сделал, в админке могу видеть сами картинки, загружается всё почти корректно, но вот в XML 3 допсвойства с картинками добавлять в упор не хочет, не могу разобраться почему такая несправедливость.
собственно, мои добавления к ТДС.
С созданием малой картинки тоже не всё в порядке "Ошибка уменьшения малого изображения до максимально допустимого размера. Вероятной причиной является указание размера изображения меньше 0.". Где-то есть ошибка, только не могу понять где. Кто сталкивался, поделитесь опытом.
// Вставляем запись
$question_id = $InformationSystem->InsertInformationItems(0, 0,
$InformationSystem_id, $group_id, $date, $subj, '',
$item_status, $text, '', 0, to_str($_SERVER['REMOTE_ADDR']), '', 1, '', '', '', '', $param);
$row = $InformationSystem->GetInformationSystemItems($question_id);
//****************************************************
foreach($_FILES as $name => $value) {
$information_system = & singleton('InformationSystem');
$kernel = & singleton('kernel');
$Image = & singleton('Image');
$DateClass = & singleton('DateClass');
$file = & singleton('File');
$type = 1;
$gen_id = rand(1, 999);
if ($name == "upload_photo") {
$new_file_name = "information_items";
} else {
$new_file_name = "information_items_property";
}
$information_system_info = $information_system->GetInformationSystem($InformationSystem_id);
// Формируем путь к папке информационного элемента по идентификатору информационного элемента
$item_dir = $InformationSystem->GetInformationItemDir($question_id);
$uploaddir = CMS_FOLDER . $item_dir;
$information_item_image = '';
$information_item_small_image = '';
if (isset($_FILES[$name]['tmp_name']) && $_FILES[$name]['size'])
{
// Создаем папку для информационного элемента
$kernel->PathMkdir($item_dir);
$file_name = $file->PathCorrection($_FILES[$name]['name']);
// Не преобразовываем название загружаемого файла
if ($information_system_info['information_systems_file_name_conversion'] == 0)
{
$information_item_image = $uploaddir . $file_name;
if (isset ($_POST['used_big_image_information_item_image']))
{
$information_item_small_image = $uploaddir . 'small_' . $file_name;
}
}
else // Преобразовываем название загружаемого файла
{
// Определяем расширение файла
$exp = mb_strtolower($kernel->GetExtension($_FILES[$name]['name']));
$information_item_image = $uploaddir . $new_file_name .'_'.$gen_id . $question_id . '.' . $exp;
if (isset ($_POST['used_big_image_information_item_image']))
{
$information_item_small_image = $uploaddir . 'small_'.$new_file_name.'_'.$gen_id . $question_id . '.' . $exp;
}
}
}
// Задано малое изображение и при этом не задано создание малого изображения
// из большого или задано создание малого изображения из большого и
// при этом не задано большое изображение.
if (isset ($_FILES[$name]['tmp_name']) && $_FILES[$name]['size'])
{
// Создаем папку для информационного элемента
$kernel->PathMkdir($item_dir);
// Определяем расширение файла.
$exp = mb_strtolower($kernel->GetExtension($_FILES[$name]['name']));
// Определяем создавать ли большое изображение из малого
// тип загружаемого файла является допустимым для загрузки файла.
if (in_array(mb_strtoupper($exp), $kernel->available_extantions))
{
// Добавление новой записи
if ($type == 0)
{
// Не задано большое изображение, создаем бальшое изображение из малого
if (!(isset ($_FILES[$name]['tmp_name']) && $_FILES[$name]['size']))
{
$create_big_image = true;
}
// Задано большое изображение
else
{
$create_big_image = false;
}
}
// Редактирование записи
else
{
// Определяем существует ли большое изображение для данного инфоэлемента
$mas_information_item = $information_system->GetInformationSystemItem($question_id);
// Для инфоэлемента ранее задано изображение
if ($mas_information_item['information_items_image'] != '')
{
// Существует ли большое изображение (true - существует, false - не существует (по умолчанию))
$param['isset_big_image'] = true;
$create_big_image = false;
}
else // Для инфоэлемента ранее не задано большое изображение - создаем из малого
{
if (empty ($information_item_image))
{
$create_big_image = true;
}
else
{
$create_big_image = false;
}
}
}
}
// Тип загружаемого файла является недопустимым для загрузки файла
else
{
$create_big_image = false;
}
$file_name = $file->PathCorrection($_FILES[$name]['name']);
if (in_array(mb_strtoupper($exp), $kernel->available_extantions))
{
// Не преобразовываем название файла
if ($information_system_info['information_systems_file_name_conversion'] == 0)
{
// Создаем большое изображение из малого
if ($create_big_image)
{
$information_item_image = $uploaddir . $file_name;
$information_item_small_image = $uploaddir . 'small_' . $file_name;
}
else
{
$information_item_small_image = $uploaddir . $file_name;
}
}
else
{
$information_item_small_image = $uploaddir . 'small_'.$new_file_name.'_' .$gen_id . $question_id . '.' . $exp;
if ($create_big_image)
{
$information_item_image = $uploaddir . $new_file_name .'_' .$gen_id . $question_id . '.' . $exp;
}
}
}
else
{
if ($create_big_image)
{
$information_item_image = '';
}
if ($information_system_info['information_systems_file_name_conversion'] == 0)
{
$information_item_small_image = $uploaddir . $file_name;
}
else
{
$information_item_small_image = $uploaddir . 'small_'.$new_file_name.'_' .$gen_id . $question_id . '.' . $exp;
}
}
}
// Путь к файлу-источнику большого изображения;
$param['path_source_big_image'] = to_str($_FILES[$name]['tmp_name']);
// Путь к файлу-источнику малого изображения;
$param['path_source_small_image'] = to_str($_FILES[$name]['tmp_name']);
//Оригинальное имя файла большого изображения
$param['original_file_name_big_image'] = to_str($_FILES[$name]['name']);
// Путь к создаваемому файлу большого изображения;
$param['path_target_big_image'] = $information_item_image;
// Путь к создаваемому файлу малого изображения;
$param['path_target_small_image'] = $information_item_small_image;
// Оригинальное имя файла малого изображения
$param['original_file_name_small_image'] = to_str($_FILES[$name]['name']);
// Использовать большое изображение для создания малого (true - использовать (по умолчанию), false - не использовать)
$param['use_big_image'] = $information_item_image;//isset ($_POST['used_big_image_information_item_image']);
// Значение максимальной ширины большого изображения
$param['max_width_big_image'] = to_int($_POST['big_image_max_width_information_item_image']);
// Значение максимальной высоты большого изображения
$param['max_height_big_image'] = to_int($_POST['big_image_max_height_information_item_image']);
// Значение максимальной ширины малого изображения;
$param['max_width_small_image'] = to_int($_POST['small_image_max_width_information_item_image']);
// Значение максимальной высоты малого изображения;
$param['max_height_small_image'] = to_int($_POST['small_image_max_height_information_item_image']);
$information_system_dir = CMS_FOLDER . UPLOADDIR . 'information_system_' . $InformationSystem_id . '/';
// Сохранять пропорции изображения для большого изображения
$param['preserve_aspect_ratio_for_big_image'] = isset ($_POST['big_image_preserve_aspect_ratio_information_item_image']);
// Сохранять пропорции изображения для малого изображения
$param['preserve_aspect_ratio_for_small_image'] = isset ($_POST['small_image_preserve_aspect_ratio_information_item_image']);
$result = $kernel->AdminLoadFiles($param);
if ($name == 'upload_photo') {
$param_img = array();
$param_img['information_items_id'] = $question_id;
$param_img['information_systems_id'] = $InformationSystem_id;
$param_img['information_groups_id'] = $group_id;
$param_img['information_items_image'] = 'information_items_'.$gen_id .$question_id.'.'.$exp;
$InformationSystem->InsertInformationItem($param_img);
//$InformationSystem->InsertInformationPropertysItems(0, 0, 17, $question_id, '', 'information_items_'.$name.'_'.$question_id.'.'.$exp);
} elseif ($name == 'upload_photo_2') {
$InformationSystem->InsertInformationPropertysItems(0, 0, 21, $question_id, '', 'information_items_property_'.$gen_id .$question_id.'.'.$exp);
} elseif ($name == 'upload_photo_3') {
$InformationSystem->InsertInformationPropertysItems(0, 0, 22, $question_id, '', 'information_items_property_'.$gen_id.$question_id.'.'.$exp);
} elseif ($name == 'upload_photo_4') {
$InformationSystem->InsertInformationPropertysItems(0, 0, 23, $question_id, '', 'information_items_property_'.$gen_id.$question_id.'.'.$exp);
}
}
//****************************************************
собственно, мои добавления к ТДС.
С созданием малой картинки тоже не всё в порядке "Ошибка уменьшения малого изображения до максимально допустимого размера. Вероятной причиной является указание размера изображения меньше 0.". Где-то есть ошибка, только не могу понять где. Кто сталкивался, поделитесь опытом.
// Вставляем запись
$question_id = $InformationSystem->InsertInformationItems(0, 0,
$InformationSystem_id, $group_id, $date, $subj, '',
$item_status, $text, '', 0, to_str($_SERVER['REMOTE_ADDR']), '', 1, '', '', '', '', $param);
$row = $InformationSystem->GetInformationSystemItems($question_id);
//****************************************************
foreach($_FILES as $name => $value) {
$information_system = & singleton('InformationSystem');
$kernel = & singleton('kernel');
$Image = & singleton('Image');
$DateClass = & singleton('DateClass');
$file = & singleton('File');
$type = 1;
$gen_id = rand(1, 999);
if ($name == "upload_photo") {
$new_file_name = "information_items";
} else {
$new_file_name = "information_items_property";
}
$information_system_info = $information_system->GetInformationSystem($InformationSystem_id);
// Формируем путь к папке информационного элемента по идентификатору информационного элемента
$item_dir = $InformationSystem->GetInformationItemDir($question_id);
$uploaddir = CMS_FOLDER . $item_dir;
$information_item_image = '';
$information_item_small_image = '';
if (isset($_FILES[$name]['tmp_name']) && $_FILES[$name]['size'])
{
// Создаем папку для информационного элемента
$kernel->PathMkdir($item_dir);
$file_name = $file->PathCorrection($_FILES[$name]['name']);
// Не преобразовываем название загружаемого файла
if ($information_system_info['information_systems_file_name_conversion'] == 0)
{
$information_item_image = $uploaddir . $file_name;
if (isset ($_POST['used_big_image_information_item_image']))
{
$information_item_small_image = $uploaddir . 'small_' . $file_name;
}
}
else // Преобразовываем название загружаемого файла
{
// Определяем расширение файла
$exp = mb_strtolower($kernel->GetExtension($_FILES[$name]['name']));
$information_item_image = $uploaddir . $new_file_name .'_'.$gen_id . $question_id . '.' . $exp;
if (isset ($_POST['used_big_image_information_item_image']))
{
$information_item_small_image = $uploaddir . 'small_'.$new_file_name.'_'.$gen_id . $question_id . '.' . $exp;
}
}
}
// Задано малое изображение и при этом не задано создание малого изображения
// из большого или задано создание малого изображения из большого и
// при этом не задано большое изображение.
if (isset ($_FILES[$name]['tmp_name']) && $_FILES[$name]['size'])
{
// Создаем папку для информационного элемента
$kernel->PathMkdir($item_dir);
// Определяем расширение файла.
$exp = mb_strtolower($kernel->GetExtension($_FILES[$name]['name']));
// Определяем создавать ли большое изображение из малого
// тип загружаемого файла является допустимым для загрузки файла.
if (in_array(mb_strtoupper($exp), $kernel->available_extantions))
{
// Добавление новой записи
if ($type == 0)
{
// Не задано большое изображение, создаем бальшое изображение из малого
if (!(isset ($_FILES[$name]['tmp_name']) && $_FILES[$name]['size']))
{
$create_big_image = true;
}
// Задано большое изображение
else
{
$create_big_image = false;
}
}
// Редактирование записи
else
{
// Определяем существует ли большое изображение для данного инфоэлемента
$mas_information_item = $information_system->GetInformationSystemItem($question_id);
// Для инфоэлемента ранее задано изображение
if ($mas_information_item['information_items_image'] != '')
{
// Существует ли большое изображение (true - существует, false - не существует (по умолчанию))
$param['isset_big_image'] = true;
$create_big_image = false;
}
else // Для инфоэлемента ранее не задано большое изображение - создаем из малого
{
if (empty ($information_item_image))
{
$create_big_image = true;
}
else
{
$create_big_image = false;
}
}
}
}
// Тип загружаемого файла является недопустимым для загрузки файла
else
{
$create_big_image = false;
}
$file_name = $file->PathCorrection($_FILES[$name]['name']);
if (in_array(mb_strtoupper($exp), $kernel->available_extantions))
{
// Не преобразовываем название файла
if ($information_system_info['information_systems_file_name_conversion'] == 0)
{
// Создаем большое изображение из малого
if ($create_big_image)
{
$information_item_image = $uploaddir . $file_name;
$information_item_small_image = $uploaddir . 'small_' . $file_name;
}
else
{
$information_item_small_image = $uploaddir . $file_name;
}
}
else
{
$information_item_small_image = $uploaddir . 'small_'.$new_file_name.'_' .$gen_id . $question_id . '.' . $exp;
if ($create_big_image)
{
$information_item_image = $uploaddir . $new_file_name .'_' .$gen_id . $question_id . '.' . $exp;
}
}
}
else
{
if ($create_big_image)
{
$information_item_image = '';
}
if ($information_system_info['information_systems_file_name_conversion'] == 0)
{
$information_item_small_image = $uploaddir . $file_name;
}
else
{
$information_item_small_image = $uploaddir . 'small_'.$new_file_name.'_' .$gen_id . $question_id . '.' . $exp;
}
}
}
// Путь к файлу-источнику большого изображения;
$param['path_source_big_image'] = to_str($_FILES[$name]['tmp_name']);
// Путь к файлу-источнику малого изображения;
$param['path_source_small_image'] = to_str($_FILES[$name]['tmp_name']);
//Оригинальное имя файла большого изображения
$param['original_file_name_big_image'] = to_str($_FILES[$name]['name']);
// Путь к создаваемому файлу большого изображения;
$param['path_target_big_image'] = $information_item_image;
// Путь к создаваемому файлу малого изображения;
$param['path_target_small_image'] = $information_item_small_image;
// Оригинальное имя файла малого изображения
$param['original_file_name_small_image'] = to_str($_FILES[$name]['name']);
// Использовать большое изображение для создания малого (true - использовать (по умолчанию), false - не использовать)
$param['use_big_image'] = $information_item_image;//isset ($_POST['used_big_image_information_item_image']);
// Значение максимальной ширины большого изображения
$param['max_width_big_image'] = to_int($_POST['big_image_max_width_information_item_image']);
// Значение максимальной высоты большого изображения
$param['max_height_big_image'] = to_int($_POST['big_image_max_height_information_item_image']);
// Значение максимальной ширины малого изображения;
$param['max_width_small_image'] = to_int($_POST['small_image_max_width_information_item_image']);
// Значение максимальной высоты малого изображения;
$param['max_height_small_image'] = to_int($_POST['small_image_max_height_information_item_image']);
$information_system_dir = CMS_FOLDER . UPLOADDIR . 'information_system_' . $InformationSystem_id . '/';
// Сохранять пропорции изображения для большого изображения
$param['preserve_aspect_ratio_for_big_image'] = isset ($_POST['big_image_preserve_aspect_ratio_information_item_image']);
// Сохранять пропорции изображения для малого изображения
$param['preserve_aspect_ratio_for_small_image'] = isset ($_POST['small_image_preserve_aspect_ratio_information_item_image']);
$result = $kernel->AdminLoadFiles($param);
if ($name == 'upload_photo') {
$param_img = array();
$param_img['information_items_id'] = $question_id;
$param_img['information_systems_id'] = $InformationSystem_id;
$param_img['information_groups_id'] = $group_id;
$param_img['information_items_image'] = 'information_items_'.$gen_id .$question_id.'.'.$exp;
$InformationSystem->InsertInformationItem($param_img);
//$InformationSystem->InsertInformationPropertysItems(0, 0, 17, $question_id, '', 'information_items_'.$name.'_'.$question_id.'.'.$exp);
} elseif ($name == 'upload_photo_2') {
$InformationSystem->InsertInformationPropertysItems(0, 0, 21, $question_id, '', 'information_items_property_'.$gen_id .$question_id.'.'.$exp);
} elseif ($name == 'upload_photo_3') {
$InformationSystem->InsertInformationPropertysItems(0, 0, 22, $question_id, '', 'information_items_property_'.$gen_id.$question_id.'.'.$exp);
} elseif ($name == 'upload_photo_4') {
$InformationSystem->InsertInformationPropertysItems(0, 0, 23, $question_id, '', 'information_items_property_'.$gen_id.$question_id.'.'.$exp);
}
}
//****************************************************
я больше никогда не буду копипастить чужой код не разобравшись в нём я больше никогда не буду копипастить чужой код не разобравшись в нём я больше никогда не буду копипастить чужой код не разобравшись в нём я больше никогда не буду копипастить чужой код не разобравшись в нём я больше никогда не буду копипастить чужой код не разобравшись в нём я больше никогда не буду копипастить чужой код не разобравшись в нём


Авторизация