<?php

// No direct access
defined( '_JEXEC' ) or die;

/**
 * Модель редактирования текущего элемента
 * @author platonische
 */
class FokserviceModelRoom extends JModelAdmin {

	/**
	 * загрузка текущей формы
	 * @param Array $data
	 * @param Boolean $loadData
	 * @return Object form data
	 */
	public function getForm( $data = array( ), $loadData = true ) {
		$form = $this->loadForm( 'com_fokservice.room', 'room', array( 'control' => 'jform', 'load_data' => $loadData ) );
		if ( empty( $form ) ) {
			return false;
		}

		$form->loadFile( 'roomfields' );

		$user = JFactory::getUser();
		if ( !$user->authorise( 'fs_room.edit.state', 'com_fokservice.room.' . $this->getState( 'extdataedit.id' ) ) ) {
			$form->setFieldAttribute( 'published', 'disabled', 'true' );
			$form->setFieldAttribute( 'published', 'filter', 'unset' );
		}
		return $form;
	}

	/**
	 * @param Int $id (object identifier)
	 * @return Object (current item)
	 */
	public function getItem( $id = null ) {
		if ( $item = parent::getItem( $id ) ) {
			$item->text = trim( $item->fulltext ) != '' ? $item->introtext . '<hr id="system-readmore" />' . $item->fulltext : $item->introtext;
		}
		return $item;
	}

	/**
	 * @param string $type
	 * @param string $prefix
	 * @param array $config
	 * @return JTable|mixed
	 */
	public function getTable( $type = 'fs_rooms', $prefix = 'Table', $config = array( ) ) {
		return JTable::getInstance( $type, $prefix, $config );
	}

	/**
	 * Загрузка данных в форму
	 * @return Object
	 */
	protected function loadFormData() {
		$data = JFactory::getApplication()->getUserState( 'com_fokservice.edit.room.data', array() );
		if ( empty( $data ) ) {
			$data = $this->getItem();
		}
		return $data;
	}

    /**
     * Запрет удаления записи
     * @param object $record
     * @return bool
     */
    protected function canDelete( $record )
    {
        if ( !empty( $record->id ) ) {
            return JFactory::getUser()->authorise( 'fs_room.delete', 'com_fokservice.room.' . (int)$record->id );
        }
    }

    /**
     * Запрет изменения состояния
     * @param object $record
     * @return bool
     */
    protected function canEditState( $record )
    {
        $user = JFactory::getUser();

        // Check for existing article.
        if ( !empty( $record->id ) ) {
            return $user->authorise( 'fs_room.edit.state', 'com_fokservice.room.' . (int)$record->id );
        } // Default to component settings if neither article nor category known.
        else {
            return parent::canEditState( 'com_fokservice' );
        }
    }


    /*
     ** Переопределение метода сохранения
     */
    public function save( $data ){
        $date = date("Y-m-d H:i:s");

        $user = JFactory::getUser();
        $data['modified_by']=$user->id;
        $data['modified']=$date;



        parent::save($data);

        /* Переопределяем метод SAVE чтобы писать в LOG */
        $type = "UPDATE";
        $id = $this->getState($this->getName(). '.id');
        if (empty($data['id'])) { $data['id'] = $id; $type = "INSERT"; }// не было ID - создание нового элемента
        // Данные для записи в таблицу LOG
        $str_data=var_export($data, true); // все переменные в строку. Здесь уже содержит ID даже если создали новый элемент
        $log_data = array(
            'table_name'=> 'fs_rooms',
            'table_id' => $data['id'],
            'record_type' => $type,
            'log_data' => $str_data,
            'title' => 'fs_rooms '.$date,
            'alias' => $date,
        );
        $model_log = JModelLegacy::getInstance( $name = 'log', $prefix = 'FokServiceModel' );  // Взяли модель
        $model_log->saveLog($log_data);
        /* Конец записи в LOG */

        return true;
    }

}