<?php

/*
 * This file is part of Contao.
 *
 * (c) Leo Feyer
 *
 * @license LGPL-3.0-or-later
 */

namespace vonRotenberg\ModalBundle\Model;

use Contao\Date;
use Contao\Model;
use Contao\Model\Collection;

/**
 * Reads and writes image sizes
 *
 * @property string|integer      $id
 * @property string|integer      $tstamp
 * @property string              $title
 * @property string              $modal_title
 * @property string|integer      $delay
 * @property string|boolean      $show_once
 * @property string|integer      $start
 * @property string|integer      $stop
 *
 * @method static ModalModel|null findById($id, array $opt=array())
 * @method static ModalModel|null findByPk($id, array $opt=array())
 * @method static ModalModel|null findOneBy($col, $val, array $opt=array())
 * @method static ModalModel|null findOneByTstamp($val, array $opt=array())
 * @method static ModalModel|null findOneByTitle($val, array $opt=array())
 * @method static ModalModel|null findOneByModalTitle($val, array $opt=array())
 * @method static ModalModel|null findOneByDelay($val, array $opt=array())
 * @method static ModalModel|null findOneByShowOnce($val, array $opt=array())
 * @method static ModalModel|null findOneByPublished($val, array $opt=array())
 * @method static ModalModel|null findOneByStart($val, array $opt=array())
 * @method static ModalModel|null findOneByStop($val, array $opt=array())
 *
 * @method static Collection|ModalModel[]|ModalModel|null findByTstamp($val, array $opt=array())
 * @method static Collection|ModalModel[]|ModalModel|null findByTitle($val, array $opt=array())
 * @method static Collection|ModalModel[]|ModalModel|null findByModalTitle($val, array $opt=array())
 * @method static Collection|ModalModel[]|ModalModel|null findByDelay($val, array $opt=array())
 * @method static Collection|ModalModel[]|ModalModel|null findByShowOnce($val, array $opt=array())
 * @method static Collection|ModalModel[]|ModalModel|null findByPublished($val, array $opt=array())
 * @method static Collection|ModalModel[]|ModalModel|null findByStart($val, array $opt=array())
 * @method static Collection|ModalModel[]|ModalModel|null findByStop($val, array $opt=array())
 * @method static Collection|ModalModel[]|ModalModel|null findMultipleByIds($val, array $opt=array())
 * @method static Collection|ModalModel[]|ModalModel|null findBy($col, $val, array $opt=array())
 * @method static Collection|ModalModel[]|ModalModel|null findAll(array $opt=array())
 *
 * @method static integer countById($id, array $opt=array())
 * @method static integer countByTstamp($val, array $opt=array())
 * @method static integer countByTitle($val, array $opt=array())
 * @method static integer countByModalTitle($val, array $opt=array())
 * @method static integer countByDelay($val, array $opt=array())
 * @method static integer countByShowOnce($val, array $opt=array())
 * @method static integer countByPublished($val, array $opt=array())
 * @method static integer countByStart($val, array $opt=array())
 * @method static integer countByStop($val, array $opt=array())
 */
class ModalModel extends Model
{
	/**
	 * Table name
	 * @var string
	 */
	protected static $strTable = 'tl_vr_modal';

    /**
     * Find a published modal by its ID
     *
     * @param integer $intId      The modal ID
     * @param array   $arrOptions An optional options array
     *
     * @return ModalModel|null The model or null if there is no modal
     */
    public static function findPublishedById($intId, array $arrOptions=array())
    {
        $t = static::$strTable;
        $arrColumns = array("$t.id=?");

        if (!static::isPreviewMode($arrOptions))
        {
            $time = Date::floorToMinute();
            $arrColumns[] = "$t.published='1' AND ($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'$time')";
        }

        return static::findOneBy($arrColumns, $intId, $arrOptions);
    }
}

class_alias(ModalModel::class, 'ModalModel');