<?php
// Запрет к прямому доступу. Если кто то попытается обратиться к файлу напрямую, Joomla выдаст пустую страницу.
defined('_JEXEC') or die;
// Подключаем библиотеку modeladmin Joomla.
jimport('joomla.application.component.modeladmin');
/**
* Mycomponent Model
*/
class MycomponentsModelMycomponent extends JModelAdmin
{
/**
* Returns возвращает ссылку на объект.
*
* @param type Тип таблицы для создания экземпляра
* @param string Префикс для имени класса таблицы.
* @param array Массив для модели.
* @return JTable Объекты базы данных
*/
// public function resname($name, $id, $count)
// {
// return $ads;
// }
public function resimages(&$name, &$tmp_name, $id, $count)
{
if(!empty($tmp_name)) {
$test = date("iHs");
$test .= md5($name);
$ad = mb_substr($test, 0, 20);
$names = $id."_".$ad."_".$count.".jpg";
$filepath = JPATH_SITE."/images/".$names;
JFile::upload($tmp_name, $filepath);
$pathToImage = JPATH_SITE."/images/".$names;
$image = new JImage( $pathToImage );
$width = $image->getWidth();
$height = $image->getHeight();
$x = 0;
if($width > 600) {
// $image->resize(600, 600, false, JImage::SCALE_OUTSIDE);
// $image->toFile( $pathToImage."555", $type,array( 'quality'=>70 ) );
$image->resize(600, false, JImage::SCALE_OUTSIDE);
//сохраняем изображение в новый файл
$image->toFile($pathToImage, '', array( 'quality'=>70 ));
$x = 1;
}
if($height > 500 AND $x == 0) {
$tmp_hei = $height - 500;
$tmp_width = $width - $tmp_hei;
$image->resize($tmp_width, 500, false);
//сохраняем изображение в новый файл
$image->toFile($pathToImage, '', array( 'quality'=>70 ));
}
$thumbs = $image->createThumbs( array( '100x100' ), JImage::CROP_RESIZE,JPATH_SITE . '/images/thumbs' );
}
return $names;
}
public function save( $data )
{
jimport('joomla.filesystem.file');
$t_user = JFactory::getUser();
$data['user_id'] = $t_user->get('id');
//Получаем массив файлов
$jFileInput = new JInput($_FILES);
$theFiles = $jFileInput->get('jform',array(),'array');
// $jinput = JFactory::getApplication()->input;
// $sele = $jinput->get->get('select', '1', 'INT');
// $sele = $this->items = $this->get('rubric_id');
// $data['rubric_id'] = $sele;
//Получаем id записи
if(empty($data['id'])) {
$db = & JFactory::getDBO();
$db->setQuery("SELECT `id` FROM #__mycomponent ORDER BY `id` DESC LIMIT 1");
$db_id = $db->loadResult();
++$db_id;
} else {
$db_id = $data['id'];
}
// print_r(resimages("asd.jpg", 1, 1));
if(!empty($theFiles['name']['img1'])) {
$img1 = $this->resimages($theFiles['name']['img1'], $theFiles['tmp_name']['img1'], $db_id, 1);
$data['img1'] = $img1;
}
if (!empty($_POST['del_img1'])) {
$data['img1'] = "";
}
if(!empty($theFiles['name']['img2'])) {
$img2 = $this->resimages($theFiles['name']['img2'], $theFiles['tmp_name']['img2'], $db_id, 2);
$data['img2'] = $img2;
}
if (!empty($_POST['del_img2'])) {
$data['img2'] = "";
}
if(!empty($theFiles['name']['img3'])) {
$img3 = $this->resimages($theFiles['name']['img3'], $theFiles['tmp_name']['img3'], $db_id, 3);
$data['img3'] = $img3;
}
if (!empty($_POST['del_img3'])) {
$data['img3'] = "";
}
if(!empty($theFiles['name']['img4'])) {
$img4 = $this->resimages($theFiles['name']['img4'], $theFiles['tmp_name']['img4'], $db_id, 4);
$data['img4'] = $img4;
}
if (!empty($_POST['del_img4'])) {
$data['img4'] = "";
}
if(!empty($theFiles['name']['img5'])) {
$img5 = $this->resimages($theFiles['name']['img5'], $theFiles['tmp_name']['img5'], $db_id, 5);
$data['img5'] = $img5;
}
if (!empty($_POST['del_img5'])) {
$data['img5'] = "";
}
return parent::save($data);
}
public function getItem( $id = null )
{
if ( $item = parent::getItem( $id ) ) { //если вы получаете через getItem свою запись! если нет то реализовать самому получение
$item->imgs = json_decode($item->imgs);
}
return $item;
}
//Возвращает ссылку на объект таблицы, при его создании.
public function getTable($type = 'Mycomponent', $prefix = 'MycomponentsTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
/**
* Метод получения данных
*
* @param array $data Данные для формы.
* @param boolean $loadData Форма для того что бы загрузить свои данные(по умолчанию).
* @return mixed Вернуть данные в случае успешного завершения.
*/
public function getForm($data = array(), $loadData = true)
{
// Устанавливаем форму в зависимости от рубрики.
$this->form = $this->getItem()->rubric_id;
// Get the form.
$form = $this->loadForm(
// 'com_mycomponents.mycomponent', 'mycomponent', array('control' => 'jform', 'load_data' => $loadData)
'com_mycomponents.' . $this->form, $this->form, array('control' => 'jform', 'load_data' => $loadData)
);
if (empty($form))
{
return false;
}
return $form;
}
/**
* Метод, чтобы получить данные, которые должны быть выведены в форме.
*
* @return mixed Данные по форме.
*/
protected function loadFormData()
{
// Проверка сессий для ранее введёных данных формы
$data = JFactory::getApplication()->getUserState('com_mycomponents.edit.mycomponent.data', array());
if (empty($data))
{
$data = $this->getItem();
}
return $data;
}
}