Прикрепленные файлы
Модуль работает с файлами, прикрепленными к элементам других модулей. Модуль состоит из трех частей: подключаемая часть, работа модуля в административной части и файл, отдающий прикрепленные файлы.
Подключение
Подключаемая часть – файл modules/attachments/attachments.inc.php. В нем описан класс
Attachments_inc. В модуле к объекту класса можно обратиться через переменную $this->diafan->_attachments
. Экземпляр класса создается при первом вызове
переменной.
Методы
array get (integer $element_id, string $module_name, [integer $param_id = 0]) – Отдает информацию о прикрепленных файлах.
- integer $element_id: номер элемента, к которому прикрепляется файл
- string $module_name: название модуля
- integer $param_id: номер параметра, к которому прикреплен файл
Пример:
// получаем файлы, прикрепленные к вопросу в модуле «Вопрос-Ответ»
// в файле modules/faq/faq.model.php
$attachments = $this->diafan->_attachments->get($id, 'faq');
// выводим полученные файлы в шаблоне модуля
// в файле modules/faq/views/faq.view.id.php
foreach($attachments as $att)
{
if($att["is_image"])
{
if($row["use_animation"])
{
$a_href = '<a href="'.$att["link"].'" rel="prettyPhoto[gallery'
.$att["element_id"].$att["module_name"].'_1]">';
$a_href2 = '<a href="'.$att["link"].'" rel="prettyPhoto[gallery'
.$att["element_id"].$att["module_name"].'_2]">';
}
else
{
$a_href .= '<a href="'.$att["link"].'" rel="big_image" width="'
.$att["width"].'" height="'.$att["height"].'">';
$a_href2 = $a_href;
}
echo '<p id="attachment'.$att["id"].'">'.$a_href.$att["name"].'</a>
('.$att["size"].')'
.' '.$a_href2.'<img src="'.$att["link_preview"].'"></a></p>';
}
else
{
echo '<p id="attachment'.$att["id"].'"><a href="'.$att["link"].'">'
.$att["name"].'</a> ('.$att["size"].')</p>';
}
}
void prepare (integer $element_id, string $module_name, [integer $param_id = 0]) – Запоминает данные элемента, которому нужно вывести информацию о прикрепленных файлах.
- integer $element_id: номер элемента, к которому прикрепляется файл
- string $module_name: название модуля
- integer $param_id: номер параметра, к которому прикреплен файл
Пример:
// в этом примере будет выполенено три SQL-запроса к базе данных для получения файлов ко всем заданным вопросам
$ids = array(3, 5, 7);
foreach($ids as $id)
{
$files[$id] = $this->diafan->_attachments->get($id, 'faq');
}
Пример:
// в этом примере будет выполен один SQL-запрос к базе данных для получения файлов ко всем заданным вопросам
$ids = array(3, 5, 7);
foreach($ids as $id)
{
$this->diafan->_attachments->prepare($id, 'faq');
}
foreach($ids as $id)
{
$files[$id] = $this->diafan->_attachments->get($id, 'faq');
}
boolean save (integer $element_id, string $module_name, [array $config = array()]) – Сохраняет добавленные файлы.
- integer $element_id: номер элемента
- string $module_name: название модуля
- array $config: конфигурация
Пример:
// загружаем файлы, прикрепленные к задаваемому вопросу
// в файле modules/faq/faq.action.php
$config = array('site_id' => $site_id, 'type' => 'configmodules');
try
{
// загружаем файл для вопроса ID=3 в модуле «Вопрос-Ответ»
$this->diafan->_attachments->save(3, "faq", $config);
}
catch(Exception $e)
{
// сообщение об ошибки при загрузке
echo $e->getMessage();
}
boolean upload (array $file, string $module_name, integer $element_id, [integer|boolean $n = false], [array $config = array()]) – Загружает файлы.
- array $file: загружаемый файл/файлы
- string $module_name: название модуля
- integer $element_id: номер элемента, к которому прикрепляется файл
- integer|boolean $n: номер файла в массиве файлов, если предан массив
- array $config: конфигурация
Пример:
try
{
// загружаем файл для вопроса ID=3 в модуле «Вопрос-Ответ»
$this->diafan->_attachments->upload($_FILES['attachment'], 'faq', 3);
}
catch(Exception $e)
{
// сообщение об ошибки при загрузке
echo $e->getMessage();
}
void delete (integer|array $element_ids, string $module_name, [integer $attachment_id = 0], [integer $param_id = 0]) – Удаляет прикрепленные файлы/файл.
- integer|array $element_ids: номер одного или нескольких элементов
- string $module_name: название модуля
- integer $attachment_id: номер файла
- integer $param_id: номер параметра, к которому прикреплен файл
Пример:
//удаляем файлы, прикрепленные к вопросу в модуле «Вопрос-Ответ»
$this->diafan->_attachments->delete(3, "faq");
//удаляем файлы, прикрепленные к вопросам ID=3,5,6 в модуле «Вопрос-Ответ»
$this->diafan->_attachments->delete(array(3, 5, 6), "faq");
void delete_module (string $module_name) – Удаляет все прикрепленные файлы модуля.
- string $module_name: название модуля
Пример:
// удалит файлы, прикрепленные ко всем вопросам в модуле «Вопрос-Ответ»
$this->diafan->_attachments->delete_module('faq');
Как добавить прикрепленные файлы к модулю
В настройках модуля (modules/модуль/admin/модуль.admin.config.php) и в файле
редактирования элементов модуля (modules/модуль/admin/модуль.admin.php)
необходимо добавить параметр
'attachments'
:
Пример:
public $variables = array(
'main' => array(
'attachments' => 'module',
…
),
…
);
Настройки
Настройки модуля задаются в настройках модуля, к которому прикрепляются файлы. Все настройки являются необязательными. Можно определить следующие параметры работы модуля:
Разрешить добавление файлов – позволяет пользователям прикреплять файлы к элементу модуля.
Максимальное количество добавляемых файлов – количество добавляемых файлов.
Доступные типы файлов (через запятую)
Пример:
doc, gif, jpg, mpg, pdf, png, txt, zipРаспознавать изображения – позволяет прикрепленные к сообщению файлы в формате JPEG, GIF, PNG отображать как изображения.
Размер для большого изображения – размер изображения, отображаемый в пользовательской части сайта при увеличении изображения предпросмотра.
Размер для маленького изображения – размер изображения предпросмотра.
Использовать анимацию при увеличении изображений – добавляет JavaScript-код, позволяющий включить анимацию при увеличении изображений.
Максимальный размер загружаемых файлов – параметр показывает максимально допустимый размер загружаемых файлов, установленный в настройках хостинга.
Загруженные файлы открываются по адресу: http://www.site.ru/attachments/get/номер_файла/название_файла
База данных
{attachments} – Прикрепленные файлы
Файлы
modules/attachments/admin/attachments.admin.inc.php – подключение модуля к административной части других модулей;
modules/attachments/admin/js/attachments.admin.inc.js – подключение модуля к административной части других модулей, JS-сценарий;
modules/attachments/attachments.api.php – обрабатывает полученные данные из формы: Вывод прикрепленных файлов;
modules/attachments/attachments.get.php – вывод прикрепленных файлов;
modules/attachments/attachments.inc.php – подключение для работы с прикрепленными файлами;
modules/attachments/attachments.install.php – установка модуля.
База знаний
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.
Ваш комментарий будет первым.