Перейти к содержимому


Отслеживать действия с картинками


Сообщений в теме: 9

#1 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 156 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 18 Июнь 2013 - 15:46

Есть поле типа изображение. В него могут добавляться и удаляться изображения. Как отслеживать удаление и добавления изображения в это поле?

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Июнь 2013 - 16:52

Событие на изменение поля не работает?

#3 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 156 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 18 Июнь 2013 - 19:01

Просмотр сообщенияCbCoder (18 Июнь 2013 - 16:52) писал:

Событие на изменение поля не работает?
Работает. Только вычисление срабатывает как для удаления так и при добавлении картинки. А если их несколько. Мне нужно отслеживать удаление и добавление, при этом конкретно знать точное имя изображения.

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 19 Июнь 2013 - 11:27

Во-первых, событий отдельно для удаления/добавления изображений не существует, во-вторых вы же можете в событии на изменение сверить старое значение поля и новое, и самостоятельно установить что было удалено, а что - добавлено. Об этом и шла речь.

#5 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 156 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 22 Июль 2013 - 00:24

Через доп.действие нужно удалить в некоторых полях изображения. Какими методами это лучше сделать, есть ли для этого спец. функции, если удаляется изображение, будет ли удалятся та часть, что в кэше лежит или нужно будет вручную это делать?

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Июль 2013 - 09:18

Для удаления файла с диска есть функция drop_data_file(field_id, line_id, file_name), где:
field_id - id поля
line_id - id записи
file_name - имя файла (т.к. в поле их может быть несколько)

При этом из кэша нужно удалять отдельно вручную. Имя файла в кэше складывается, как:
table_id."_".field_id."_".line_id."_".utf2eng(file_name), где:
table_id - id таблицы
utf2eng() - функция преобразования utf-кирилицы в латиницу.

#7 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 156 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 22 Июль 2013 - 10:22

Просмотр сообщенияCbCoder (22 Июль 2013 - 09:18) писал:

Для удаления файла с диска есть функция drop_data_file(field_id, line_id, file_name), где:
field_id - id поля
line_id - id записи
file_name - имя файла (т.к. в поле их может быть несколько)

При этом из кэша нужно удалять отдельно вручную. Имя файла в кэше складывается, как:
table_id."_".field_id."_".line_id."_".utf2eng(file_name), где:
table_id - id таблицы
utf2eng() - функция преобразования utf-кирилицы в латиницу.
field_id - айди без префикса "f" ?

#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Июль 2013 - 10:30

Просмотр сообщенияwondertalik (22 Июль 2013 - 10:22) писал:

field_id - айди без префикса "f" ?

С префиксом - это внутреннее имя поля. Оно кстати может быть и не "f111", а, например, "status". А field_id - это именно id поля, т.е., по другому, id записи с описанием поля в cb_fields.

#9 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 156 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 22 Июль 2013 - 10:31

Просмотр сообщенияCbCoder (22 Июль 2013 - 10:30) писал:

С префиксом - это внутреннее имя поля. Оно кстати может быть и не "f111", а, например, "status". А field_id - это именно id поля, т.е., по другому, id записи с описанием поля в cb_fields.
данкэ

#10 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 156 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 25 Июль 2013 - 01:08

Просмотр сообщенияCbCoder (22 Июль 2013 - 09:18) писал:

При этом из кэша нужно удалять отдельно вручную. Имя файла в кэше складывается, как:
table_id."_".field_id."_".line_id."_".utf2eng(file_name), где:
table_id - id таблицы
utf2eng() - функция преобразования utf-кирилицы в латиницу.

Однако это не полное имя как оказалось, нужно еще и расширение .png добавлять. В итоге получил

/**
*Author: --- Wondertalik --- July 25, 2013
* Функция позволяет удалять файл из указанного поля и строки
* @param $table_id айди таблицы
* @param $field_id айди поля
* @param $line_id айди записи
* @param $array_names_file содержимое выборки из поля типа файл
* @param string $cache каталог кэша
*/
function drop_data_file_w($table_id, $field_id, $line_id, $array_names_file, $cache = "cache")
{
	global $config;
	$array_img = array();
	//проверяем сколько изображений загружено, если несколько все добавляем в ексел-файл
	$array_img = explode("\n", $array_names_file);
	for ($i = 0; $i < count($array_img); $i++) {
		//удаляем файл из файла хранилища
		drop_data_file($field_id, $line_id, trim($array_img[$i]));
		//удаляем файл из кэша, если он там существует
		$name_cache_file = $config['site_path'] . "/" . $cache . "/" . $table_id . "_" . $field_id . "_" . $line_id . "_" . utf2eng($array_img[$i]) . ".png";
		if (file_exists($name_cache_file))
			unlink($name_cache_file);
	}
}






Количество пользователей, читающих эту тему: 3

0 пользователей, 3 гостей, 0 анонимных