Пропустить

Update attachment

Все моды, созданные нашим сообществом для phpBB 3.0.x, будут анонсированы тут. Вся техническая поддержка по этим модам оказывается в этом форуме.
Свернуть Развернуть Правила форума Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).

Re: Update attachment

Сообщение hardlock » 01.10.2010 23:41

Предлагаю некоторую модификацию в связи с вот каким глюком - при обновлении вложений меняется их ID в посте.
Например, загружаем 4 картинки (1.gif, 2.gif, 3.gif, 4.gif) и вставляем их в текст сообщения, получаем:
[attachment=3]1.gif[/attachment]
[attachment=2]2.gif[/attachment]
[attachment=1]3.gif[/attachment]
[attachment=0]4.gif[/attachment]


Теперь нам понадобилось обновить картинку... допустим 2.gif... После заливки через Update её ID станет "0", т.к. она самая новая по времени, т.е. в посте надо будет исправить:
[attachment=3]1.gif[/attachment]
[attachment=0]2.gif[/attachment]
[attachment=2]3.gif[/attachment]
[attachment=1]4.gif[/attachment]

Я только что исправил ИДшники у 56 картинок в посте, т.к. очерёдность ОЧЕНЬ важна. Мне хватило...

Посему немного порывшись в коде нашёл как НЕ менять дату заливки файла, чтобы не менялся порядок следования ИДшников картинок (сортируются они по времени).

Файл includes/message_parser.php
самый большой кусок, добавляемый по инструкции. В нём выкинул строку
'filetime'			=> $filedata['filetime'],

и получил в итоге вот такой код:
			else if ($update_file && $upload_file)
			{
				include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx);

				$filedata = upload_attachment($form_name, $forum_id, false, '', $is_message);
				$error = array_merge($error, $filedata['error']);

				$index = array_keys(request_var('update_file', array(0 => 0)));
				$index = (!empty($index)) ? $index[0] : false;
				$filename = $filedata['real_filename'];
	
				if ($index !== false && !empty($this->attachment_data[$index]))
				{
					$sql = 'SELECT attach_id, is_orphan, filesize, physical_filename, thumbnail
						FROM ' . ATTACHMENTS_TABLE . '
						WHERE attach_id = ' . (int) $this->attachment_data[$index]['attach_id'] . '
							AND poster_id = ' . $user->data['user_id'];
					$result = $db->sql_query($sql);
					$row = $db->sql_fetchrow($result);
					$db->sql_freeresult($result);

					if (!sizeof($error))
					{
						$sql_ary = array(
							'physical_filename'	=> $filedata['physical_filename'],
							'attach_comment'	=> $this->filename_data['filecomment'],
							'real_filename'		=> $filedata['real_filename'],
							'extension'			=> $filedata['extension'],
							'mimetype'			=> $filedata['mimetype'],
							'filesize'			=> $filedata['filesize'],
							'thumbnail'			=> $filedata['thumbnail'],
							'in_message'		=> ($is_message) ? 1 : 0,
							'poster_id'			=> $user->data['user_id'],
						);

						$db->sql_query('UPDATE ' . ATTACHMENTS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE attach_id = ' . (int) $this->attachment_data[$index]['attach_id'] );
						
						//Delete old file
						phpbb_unlink($row['physical_filename'], 'file');

						if ($row['thumbnail'])
						{
							phpbb_unlink($row['physical_filename'], 'thumbnail');
						}

						if (!$row['is_orphan'])
						{
							set_config('upload_dir_size', $config['upload_dir_size'] - $row['filesize'] + $filedata['filesize'], true);
						}

						// Refresh attachment data
						$this->attachment_data[$index]['real_filename'] = $filedata['real_filename'];
						$this->attachment_data[$index]['attach_comment'] = ($this->filename_data['filecomment']) ? $this->filename_data['filecomment'] : $this->attachment_data[$index]['attach_comment'];
						$this->message = preg_replace("#\[attachment=$index\](.*?)\[\/attachment\]#e", "'[attachment=$index]' . \$filename . '[/attachment]'", $this->message);
						$this->filename_data['filecomment'] = '';
					}
				}
			}



Теперь при обновлении не меняется поле filetime, соответственно не меняется порядок следования ИД-шников вложений. Вообщем, кому интересно, то принимаем к сведению.
phpbb 3.0.9 / php 5.2.17 / Apache 2.0 (Unix) on FreeBSD 8.2-RELEASE-p3 / MySQL 5.1.55
За это сообщение автора hardlock поблагодарили: 2
boloto (12.01.2011 13:01), trooper (09.12.2010 16:26)
Аватара пользователя
hardlock
phpBB 1.4.0
 
Сообщения: 36
Зарегистрирован: 25.01.2009 4:03
Откуда: zp.ua
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.

Re: Update attachment

Сообщение Andrew O » 11.04.2011 14:02

rxu писал(а):А если нажать кнопку "Добавить файл", выпадет какая-то форма для закачки?
Насколько я помню phpBB3, есть поле имени файла, рядом с которым кнопка выбора этого имени. Выбираете с её помощью нужный файл для закачки, а потом жмёте кнопку того вложения, которое вы хотите обновить выбранным файлом.
Надеюсь, понятно объяснил :)

спасибо за пояснение, а то не понятно поначалу как работает мод :)
Изображение Надо, Федя, надо!
Аватара пользователя
Andrew O
phpBB 1.4.2
 
Сообщения: 53
Зарегистрирован: 21.04.2008 17:43
Откуда: с родины А.И. Родимцева
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

Re: Update attachment

Сообщение mediland » 13.11.2011 22:03

У меня phpBB 3.0.9

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

Нужно ли мне устанавливать для phpBB 3.0.9 "Recent topics for phpBB3" или в 3.0.9 это уже реализовано?

mediland
phpBB 1.4.1
 
Сообщения: 40
Зарегистрирован: 02.10.2011 20:37
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Update attachment

Сообщение Shredder » 13.11.2011 23:24

mediland
Не реализовано, нужно устанавливать.

Shredder
Former team member
 
Сообщения: 1034
Зарегистрирован: 14.12.2008 11:18
Благодарил (а): 62 раз.
Поблагодарили: 181 раз.

Re: Update attachment

Сообщение mediland » 16.11.2011 17:36

Я установил, но кнопка "обновить вложение" появляется только для стилей "prosilver" и "subsilver 2". Для "prosilver SE" не появляется! Вообще-то в "prosilver SE" нет файла template/posting_editor.html, он по идее тянется из "prosilver".

Если скопировать template/posting_editor.html из "prosilver" в "prosilver SE" - ничего не получается.

mediland
phpBB 1.4.1
 
Сообщения: 40
Зарегистрирован: 02.10.2011 20:37
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Пред.

Вернуться в Анонсы и поддержка модов для phpBB 3.0.x

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Бессрочный конкурс phpBB-ориентированных материалов
FastVPS — надёжный и доступный хостинг для phpBB
Место для вашей рекламы