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

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. class ArticleModel extends Model
  111. {
  112.     /**
  113.      * Table name
  114.      * @var string
  115.      */
  116.     protected static $strTable 'tl_article';
  117.     /**
  118.      * Find an article by its ID or alias and its page
  119.      *
  120.      * @param mixed   $varId      The numeric ID or alias name
  121.      * @param integer $intPid     The page ID
  122.      * @param array   $arrOptions An optional options array
  123.      *
  124.      * @return ArticleModel|null The model or null if there is no article
  125.      */
  126.     public static function findByIdOrAliasAndPid($varId$intPid, array $arrOptions=array())
  127.     {
  128.         $t = static::$strTable;
  129.         $arrColumns = !preg_match('/^[1-9]\d*$/'$varId) ? array("BINARY $t.alias=?") : array("$t.id=?");
  130.         $arrValues = array($varId);
  131.         if ($intPid)
  132.         {
  133.             $arrColumns[] = "$t.pid=?";
  134.             $arrValues[] = $intPid;
  135.         }
  136.         return static::findOneBy($arrColumns$arrValues$arrOptions);
  137.     }
  138.     /**
  139.      * Find a published article by its ID or alias and its page
  140.      *
  141.      * @param mixed   $varId      The numeric ID or alias name
  142.      * @param integer $intPid     The page ID
  143.      * @param array   $arrOptions An optional options array
  144.      *
  145.      * @return ArticleModel|null The model or null if there is no article
  146.      */
  147.     public static function findPublishedByIdOrAliasAndPid($varId$intPid, array $arrOptions=array())
  148.     {
  149.         $t = static::$strTable;
  150.         $arrColumns = !preg_match('/^[1-9]\d*$/'$varId) ? array("BINARY $t.alias=?") : array("$t.id=?");
  151.         $arrValues = array($varId);
  152.         if ($intPid)
  153.         {
  154.             $arrColumns[] = "$t.pid=?";
  155.             $arrValues[] = $intPid;
  156.         }
  157.         if (!static::isPreviewMode($arrOptions))
  158.         {
  159.             $time Date::floorToMinute();
  160.             $arrColumns[] = "$t.published='1' AND ($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'$time')";
  161.         }
  162.         return static::findOneBy($arrColumns$arrValues$arrOptions);
  163.     }
  164.     /**
  165.      * Find a published article by its ID
  166.      *
  167.      * @param integer $intId      The article ID
  168.      * @param array   $arrOptions An optional options array
  169.      *
  170.      * @return ArticleModel|null The model or null if there is no published article
  171.      */
  172.     public static function findPublishedById($intId, array $arrOptions=array())
  173.     {
  174.         $t = static::$strTable;
  175.         $arrColumns = array("$t.id=?");
  176.         if (!static::isPreviewMode($arrOptions))
  177.         {
  178.             $time Date::floorToMinute();
  179.             $arrColumns[] = "$t.published='1' AND ($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'$time')";
  180.         }
  181.         return static::findOneBy($arrColumns$intId$arrOptions);
  182.     }
  183.     /**
  184.      * Find all published articles by their parent ID and column
  185.      *
  186.      * @param integer $intPid     The page ID
  187.      * @param string  $strColumn  The column name
  188.      * @param array   $arrOptions An optional options array
  189.      *
  190.      * @return Collection|ArticleModel[]|ArticleModel|null A collection of models or null if there are no articles in the given column
  191.      */
  192.     public static function findPublishedByPidAndColumn($intPid$strColumn, array $arrOptions=array())
  193.     {
  194.         $t = static::$strTable;
  195.         $arrColumns = array("$t.pid=? AND $t.inColumn=?");
  196.         $arrValues = array($intPid$strColumn);
  197.         if (!static::isPreviewMode($arrOptions))
  198.         {
  199.             $time Date::floorToMinute();
  200.             $arrColumns[] = "$t.published='1' AND ($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'$time')";
  201.         }
  202.         if (!isset($arrOptions['order']))
  203.         {
  204.             $arrOptions['order'] = "$t.sorting";
  205.         }
  206.         return static::findBy($arrColumns$arrValues$arrOptions);
  207.     }
  208.     /**
  209.      * Find all published articles with teaser by their parent ID
  210.      *
  211.      * @param integer $intPid     The page ID
  212.      * @param array   $arrOptions An optional options array
  213.      *
  214.      * @return Collection|ArticleModel[]|ArticleModel|null A collection of models or null if there are no articles in the given column
  215.      */
  216.     public static function findPublishedWithTeaserByPid($intPid, array $arrOptions=array())
  217.     {
  218.         $t = static::$strTable;
  219.         $arrColumns = array("$t.pid=? AND $t.showTeaser=1");
  220.         if (!static::isPreviewMode($arrOptions))
  221.         {
  222.             $time Date::floorToMinute();
  223.             $arrColumns[] = "$t.published='1' AND ($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'$time')";
  224.         }
  225.         if (!isset($arrOptions['order']))
  226.         {
  227.             $arrOptions['order'] = "$t.sorting";
  228.         }
  229.         return static::findBy($arrColumns$intPid$arrOptions);
  230.     }
  231.     /**
  232.      * Find all published articles with teaser by their parent ID and column
  233.      *
  234.      * @param integer $intPid     The page ID
  235.      * @param string  $strColumn  The column name
  236.      * @param array   $arrOptions An optional options array
  237.      *
  238.      * @return Collection|ArticleModel[]|ArticleModel|null A collection of models or null if there are no articles in the given column
  239.      */
  240.     public static function findPublishedWithTeaserByPidAndColumn($intPid$strColumn, array $arrOptions=array())
  241.     {
  242.         $t = static::$strTable;
  243.         $arrColumns = array("$t.pid=? AND $t.inColumn=? AND $t.showTeaser=1");
  244.         $arrValues = array($intPid$strColumn);
  245.         if (!static::isPreviewMode($arrOptions))
  246.         {
  247.             $time Date::floorToMinute();
  248.             $arrColumns[] = "$t.published='1' AND ($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'$time')";
  249.         }
  250.         if (!isset($arrOptions['order']))
  251.         {
  252.             $arrOptions['order'] = "$t.sorting";
  253.         }
  254.         return static::findBy($arrColumns$arrValues$arrOptions);
  255.     }
  256. }
  257. class_alias(ArticleModel::class, 'ArticleModel');