<?php


/**
 * @package     SP Simple Portfolio
 *
 * @copyright   Copyright (C) 2010 - 2022 JoomShaper. All rights reserved.
 * @license     GNU General Public License version 2 or later.
 */

defined('_JEXEC') or die();

use Joomla\CMS\Factory;
use Joomla\CMS\Table\Table;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Application\ApplicationHelper;

class SpsimpleportfolioTableItem extends Table {

	/**
     * Indicates that columns fully support the NULL value in the database
     *
     * @var    boolean
     */
    protected $_supportNullValue = true;
	

	public function __construct(&$db) {
		parent::__construct('#__spsimpleportfolio_items', 'id', $db);
	}

	public function store($updateNulls = true)
	{
		$date = Factory::getDate();
		$user = Factory::getUser();

		if (!(int) $this->created) {
			$this->created = $date->toSql();
		}
		if (empty($this->created_by)) {
			$this->created_by = $user->get('id');
		}

		if (!(int) $this->modified) {
			$this->modified = $date->toSql();
		}
		if (empty($this->modified_by)) {
			$this->modified_by = $user->get('id');
		}

		// Verify that the alias is unique
		$table = Table::getInstance('Item', 'SpsimpleportfolioTable');
		if ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0)){
			$this->setError(Text::_('COM_SPSIMPLEPORTFOLIO_ERROR_UNIQUE_ALIAS'));
			return false;
		}

		return parent::store($updateNulls);
	}

	public function check() {
		// Check for valid name.
		if (trim($this->title) == '') {
			throw new UnexpectedValueException(sprintf('The title is empty'));
		}

		if (empty($this->alias)) {
			$this->alias = $this->title;
		}

		$this->alias = ApplicationHelper::stringURLSafe($this->alias, $this->language);

		if (trim(str_replace('-', '', $this->alias)) == '') {
			$this->alias = Factory::getDate()->format('Y-m-d-H-i-s');
		}
		
		if (!empty($this->checked_out)) {
            $this->checked_out = null;
        }

        if (!empty($this->checked_out_time)) {
            $this->checked_out_time = null;
        }

		return true;

	}
}
