vendor/contao/core-bundle/src/Resources/contao/models/ArticleModel.php line 226

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of Contao.
  4.  *
  5.  * (c) Leo Feyer
  6.  *
  7.  * @license LGPL-3.0-or-later
  8.  */
  9. namespace Contao;
  10. use Contao\Model\Collection;
  11. /**
  12.  * Reads and writes articles
  13.  *
  14.  * @property string|integer $id
  15.  * @property string|integer $pid
  16.  * @property string|integer $sorting
  17.  * @property string|integer $tstamp
  18.  * @property string         $title
  19.  * @property string         $alias
  20.  * @property string|integer $author
  21.  * @property string         $inColumn
  22.  * @property string|null    $keywords
  23.  * @property string|boolean $showTeaser
  24.  * @property string         $teaserCssID
  25.  * @property string|null    $teaser
  26.  * @property string         $printable
  27.  * @property string         $customTpl
  28.  * @property string|boolean $protected
  29.  * @property string|null    $groups
  30.  * @property string|boolean $guests
  31.  * @property string|array   $cssID
  32.  * @property string|boolean $published
  33.  * @property string|integer $start
  34.  * @property string|integer $stop
  35.  *
  36.  * @method static ArticleModel|null findById($id, array $opt=array())
  37.  * @method static ArticleModel|null findByPk($id, array $opt=array())
  38.  * @method static ArticleModel|null findByIdOrAlias($val, array $opt=array())
  39.  * @method static ArticleModel|null findOneBy($col, $val, array $opt=array())
  40.  * @method static ArticleModel|null findOneByPid($val, array $opt=array())
  41.  * @method static ArticleModel|null findOneBySorting($val, array $opt=array())
  42.  * @method static ArticleModel|null findOneByTstamp($val, array $opt=array())
  43.  * @method static ArticleModel|null findOneByTitle($val, array $opt=array())
  44.  * @method static ArticleModel|null findOneByAlias($val, array $opt=array())
  45.  * @method static ArticleModel|null findOneByAuthor($val, array $opt=array())
  46.  * @method static ArticleModel|null findOneByInColumn($val, array $opt=array())
  47.  * @method static ArticleModel|null findOneByKeywords($val, array $opt=array())
  48.  * @method static ArticleModel|null findOneByShowTeaser($val, array $opt=array())
  49.  * @method static ArticleModel|null findOneByTeaserCssID($val, array $opt=array())
  50.  * @method static ArticleModel|null findOneByTeaser($val, array $opt=array())
  51.  * @method static ArticleModel|null findOneByPrintable($val, array $opt=array())
  52.  * @method static ArticleModel|null findOneByCustomTpl($val, array $opt=array())
  53.  * @method static ArticleModel|null findOneByProtected($val, array $opt=array())
  54.  * @method static ArticleModel|null findOneByGroups($val, array $opt=array())
  55.  * @method static ArticleModel|null findOneByGuests($val, array $opt=array())
  56.  * @method static ArticleModel|null findOneByCssID($val, array $opt=array())
  57.  * @method static ArticleModel|null findOneBySpace($val, array $opt=array())
  58.  * @method static ArticleModel|null findOneByPublished($val, array $opt=array())
  59.  * @method static ArticleModel|null findOneByStart($val, array $opt=array())
  60.  * @method static ArticleModel|null findOneByStop($val, array $opt=array())
  61.  *
  62.  * @method static Collection|ArticleModel[]|ArticleModel|null findByPid($val, array $opt=array())
  63.  * @method static Collection|ArticleModel[]|ArticleModel|null findBySorting($val, array $opt=array())
  64.  * @method static Collection|ArticleModel[]|ArticleModel|null findByTstamp($val, array $opt=array())
  65.  * @method static Collection|ArticleModel[]|ArticleModel|null findByTitle($val, array $opt=array())
  66.  * @method static Collection|ArticleModel[]|ArticleModel|null findByAlias($val, array $opt=array())
  67.  * @method static Collection|ArticleModel[]|ArticleModel|null findByAuthor($val, array $opt=array())
  68.  * @method static Collection|ArticleModel[]|ArticleModel|null findByInColumn($val, array $opt=array())
  69.  * @method static Collection|ArticleModel[]|ArticleModel|null findByKeywords($val, array $opt=array())
  70.  * @method static Collection|ArticleModel[]|ArticleModel|null findByShowTeaser($val, array $opt=array())
  71.  * @method static Collection|ArticleModel[]|ArticleModel|null findByTeaserCssID($val, array $opt=array())
  72.  * @method static Collection|ArticleModel[]|ArticleModel|null findByTeaser($val, array $opt=array())
  73.  * @method static Collection|ArticleModel[]|ArticleModel|null findByPrintable($val, array $opt=array())
  74.  * @method static Collection|ArticleModel[]|ArticleModel|null findByCustomTpl($val, array $opt=array())
  75.  * @method static Collection|ArticleModel[]|ArticleModel|null findByProtected($val, array $opt=array())
  76.  * @method static Collection|ArticleModel[]|ArticleModel|null findByGroups($val, array $opt=array())
  77.  * @method static Collection|ArticleModel[]|ArticleModel|null findByGuests($val, array $opt=array())
  78.  * @method static Collection|ArticleModel[]|ArticleModel|null findByCssID($val, array $opt=array())
  79.  * @method static Collection|ArticleModel[]|ArticleModel|null findBySpace($val, array $opt=array())
  80.  * @method static Collection|ArticleModel[]|ArticleModel|null findByPublished($val, array $opt=array())
  81.  * @method static Collection|ArticleModel[]|ArticleModel|null findByStart($val, array $opt=array())
  82.  * @method static Collection|ArticleModel[]|ArticleModel|null findByStop($val, array $opt=array())
  83.  * @method static Collection|ArticleModel[]|ArticleModel|null findMultipleByIds($var, array $opt=array())
  84.  * @method static Collection|ArticleModel[]|ArticleModel|null findBy($col, $val, array $opt=array())
  85.  * @method static Collection|ArticleModel[]|ArticleModel|null findAll(array $opt=array())
  86.  *
  87.  * @method static integer countById($id, array $opt=array())
  88.  * @method static integer countByPid($val, array $opt=array())
  89.  * @method static integer countBySorting($val, array $opt=array())
  90.  * @method static integer countByTstamp($val, array $opt=array())
  91.  * @method static integer countByTitle($val, array $opt=array())
  92.  * @method static integer countByAlias($val, array $opt=array())
  93.  * @method static integer countByAuthor($val, array $opt=array())
  94.  * @method static integer countByInColumn($val, array $opt=array())
  95.  * @method static integer countByKeywords($val, array $opt=array())
  96.  * @method static integer countByShowTeaser($val, array $opt=array())
  97.  * @method static integer countByTeaserCssID($val, array $opt=array())
  98.  * @method static integer countByTeaser($val, array $opt=array())
  99.  * @method static integer countByPrintable($val, array $opt=array())
  100.  * @method static integer countByCustomTpl($val, array $opt=array())
  101.  * @method static integer countByProtected($val, array $opt=array())
  102.  * @method static integer countByGroups($val, array $opt=array())
  103.  * @method static integer countByGuests($val, array $opt=array())
  104.  * @method static integer countByCssID($val, array $opt=array())
  105.  * @method static integer countBySpace($val, array $opt=array())
  106.  * @method static integer countByPublished($val, array $opt=array())
  107.  * @method static integer countByStart($val, array $opt=array())
  108.  * @method static integer countByStop($val, array $opt=array())
  109.  *
  110.  * @author Leo Feyer <https://github.com/leofeyer>
  111.  */
  112. class ArticleModel extends Model
  113. {
  114.     /**
  115.      * Table name
  116.      * @var string
  117.      */
  118.     protected static $strTable 'tl_article';
  119.     /**
  120.      * Find an article by its ID or alias and its page
  121.      *
  122.      * @param mixed   $varId      The numeric ID or alias name
  123.      * @param integer $intPid     The page ID
  124.      * @param array   $arrOptions An optional options array
  125.      *
  126.      * @return ArticleModel|null The model or null if there is no article
  127.      */
  128.     public static function findByIdOrAliasAndPid($varId$intPid, array $arrOptions=array())
  129.     {
  130.         $t = static::$strTable;
  131.         $arrColumns = !preg_match('/^[1-9]\d*$/'$varId) ? array("BINARY $t.alias=?") : array("$t.id=?");
  132.         $arrValues = array($varId);
  133.         if ($intPid)
  134.         {
  135.             $arrColumns[] = "$t.pid=?";
  136.             $arrValues[] = $intPid;
  137.         }
  138.         return static::findOneBy($arrColumns$arrValues$arrOptions);
  139.     }
  140.     /**
  141.      * Find a published article by its ID or alias and its page
  142.      *
  143.      * @param mixed   $varId      The numeric ID or alias name
  144.      * @param integer $intPid     The page ID
  145.      * @param array   $arrOptions An optional options array
  146.      *
  147.      * @return ArticleModel|null The model or null if there is no article
  148.      */
  149.     public static function findPublishedByIdOrAliasAndPid($varId$intPid, array $arrOptions=array())
  150.     {
  151.         $t = static::$strTable;
  152.         $arrColumns = !preg_match('/^[1-9]\d*$/'$varId) ? array("BINARY $t.alias=?") : array("$t.id=?");
  153.         $arrValues = array($varId);
  154.         if ($intPid)
  155.         {
  156.             $arrColumns[] = "$t.pid=?";
  157.             $arrValues[] = $intPid;
  158.         }
  159.         if (!static::isPreviewMode($arrOptions))
  160.         {
  161.             $time Date::floorToMinute();
  162.             $arrColumns[] = "$t.published='1' AND ($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'$time')";
  163.         }
  164.         return static::findOneBy($arrColumns$arrValues$arrOptions);
  165.     }
  166.     /**
  167.      * Find a published article by its ID
  168.      *
  169.      * @param integer $intId      The article ID
  170.      * @param array   $arrOptions An optional options array
  171.      *
  172.      * @return ArticleModel|null The model or null if there is no published article
  173.      */
  174.     public static function findPublishedById($intId, array $arrOptions=array())
  175.     {
  176.         $t = static::$strTable;
  177.         $arrColumns = array("$t.id=?");
  178.         if (!static::isPreviewMode($arrOptions))
  179.         {
  180.             $time Date::floorToMinute();
  181.             $arrColumns[] = "$t.published='1' AND ($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'$time')";
  182.         }
  183.         return static::findOneBy($arrColumns$intId$arrOptions);
  184.     }
  185.     /**
  186.      * Find all published articles by their parent ID and column
  187.      *
  188.      * @param integer $intPid     The page ID
  189.      * @param string  $strColumn  The column name
  190.      * @param array   $arrOptions An optional options array
  191.      *
  192.      * @return Collection|ArticleModel[]|ArticleModel|null A collection of models or null if there are no articles in the given column
  193.      */
  194.     public static function findPublishedByPidAndColumn($intPid$strColumn, array $arrOptions=array())
  195.     {
  196.         $t = static::$strTable;
  197.         $arrColumns = array("$t.pid=? AND $t.inColumn=?");
  198.         $arrValues = array($intPid$strColumn);
  199.         if (!static::isPreviewMode($arrOptions))
  200.         {
  201.             $time Date::floorToMinute();
  202.             $arrColumns[] = "$t.published='1' AND ($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'$time')";
  203.         }
  204.         if (!isset($arrOptions['order']))
  205.         {
  206.             $arrOptions['order'] = "$t.sorting";
  207.         }
  208.         return static::findBy($arrColumns$arrValues$arrOptions);
  209.     }
  210.     /**
  211.      * Find all published articles with teaser by their parent ID
  212.      *
  213.      * @param integer $intPid     The page ID
  214.      * @param array   $arrOptions An optional options array
  215.      *
  216.      * @return Collection|ArticleModel[]|ArticleModel|null A collection of models or null if there are no articles in the given column
  217.      */
  218.     public static function findPublishedWithTeaserByPid($intPid, array $arrOptions=array())
  219.     {
  220.         $t = static::$strTable;
  221.         $arrColumns = array("$t.pid=? AND $t.showTeaser=1");
  222.         if (!static::isPreviewMode($arrOptions))
  223.         {
  224.             $time Date::floorToMinute();
  225.             $arrColumns[] = "$t.published='1' AND ($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'$time')";
  226.         }
  227.         if (!isset($arrOptions['order']))
  228.         {
  229.             $arrOptions['order'] = "$t.sorting";
  230.         }
  231.         return static::findBy($arrColumns$intPid$arrOptions);
  232.     }
  233.     /**
  234.      * Find all published articles with teaser by their parent ID and column
  235.      *
  236.      * @param integer $intPid     The page ID
  237.      * @param string  $strColumn  The column name
  238.      * @param array   $arrOptions An optional options array
  239.      *
  240.      * @return Collection|ArticleModel[]|ArticleModel|null A collection of models or null if there are no articles in the given column
  241.      */
  242.     public static function findPublishedWithTeaserByPidAndColumn($intPid$strColumn, array $arrOptions=array())
  243.     {
  244.         $t = static::$strTable;
  245.         $arrColumns = array("$t.pid=? AND $t.inColumn=? AND $t.showTeaser=1");
  246.         $arrValues = array($intPid$strColumn);
  247.         if (!static::isPreviewMode($arrOptions))
  248.         {
  249.             $time Date::floorToMinute();
  250.             $arrColumns[] = "$t.published='1' AND ($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'$time')";
  251.         }
  252.         if (!isset($arrOptions['order']))
  253.         {
  254.             $arrOptions['order'] = "$t.sorting";
  255.         }
  256.         return static::findBy($arrColumns$arrValues$arrOptions);
  257.     }
  258. }
  259. class_alias(ArticleModel::class, 'ArticleModel');