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

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');