Прикрепленные файлы

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

Подключение

Подключаемая часть – файл 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} – Прикрепленные файлы

Файлы

  1. modules/attachments/admin/attachments.admin.inc.php – подключение модуля к административной части других модулей;

  2. modules/attachments/admin/js/attachments.admin.inc.js – подключение модуля к административной части других модулей, JS-сценарий;

  3. modules/attachments/attachments.api.php – обрабатывает полученные данные из формы: Вывод прикрепленных файлов;

  4. modules/attachments/attachments.get.php – вывод прикрепленных файлов;

  5. modules/attachments/attachments.inc.php – подключение для работы с прикрепленными файлами;

  6. modules/attachments/attachments.install.php – установка модуля.

База знаний

Ваши комментарии и дополнения

Ваш комментарий будет первым.

Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.