vendor/contao/core-bundle/src/Resources/contao/models/MemberGroupModel.php line 96

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 member groups
  13.  *
  14.  * @property string|integer $id
  15.  * @property string|integer $tstamp
  16.  * @property string         $name
  17.  * @property string|boolean $redirect
  18.  * @property string|integer $jumpTo
  19.  * @property string|boolean $disable
  20.  * @property string|integer $start
  21.  * @property string|integer $stop
  22.  *
  23.  * @method static MemberGroupModel|null findById($id, array $opt=array())
  24.  * @method static MemberGroupModel|null findByPk($id, array $opt=array())
  25.  * @method static MemberGroupModel|null findByIdOrAlias($val, array $opt=array())
  26.  * @method static MemberGroupModel|null findOneBy($col, $val, array $opt=array())
  27.  * @method static MemberGroupModel|null findOneByTstamp($val, array $opt=array())
  28.  * @method static MemberGroupModel|null findOneByName($val, array $opt=array())
  29.  * @method static MemberGroupModel|null findOneByRedirect($val, array $opt=array())
  30.  * @method static MemberGroupModel|null findOneByJumpTo($val, array $opt=array())
  31.  * @method static MemberGroupModel|null findOneByDisable($val, array $opt=array())
  32.  * @method static MemberGroupModel|null findOneByStart($val, array $opt=array())
  33.  * @method static MemberGroupModel|null findOneByStop($val, array $opt=array())
  34.  *
  35.  * @method static Collection|MemberGroupModel[]|MemberGroupModel|null findByTstamp($val, array $opt=array())
  36.  * @method static Collection|MemberGroupModel[]|MemberGroupModel|null findByName($val, array $opt=array())
  37.  * @method static Collection|MemberGroupModel[]|MemberGroupModel|null findByRedirect($val, array $opt=array())
  38.  * @method static Collection|MemberGroupModel[]|MemberGroupModel|null findByJumpTo($val, array $opt=array())
  39.  * @method static Collection|MemberGroupModel[]|MemberGroupModel|null findByDisable($val, array $opt=array())
  40.  * @method static Collection|MemberGroupModel[]|MemberGroupModel|null findByStart($val, array $opt=array())
  41.  * @method static Collection|MemberGroupModel[]|MemberGroupModel|null findByStop($val, array $opt=array())
  42.  * @method static Collection|MemberGroupModel[]|MemberGroupModel|null findMultipleByIds($val, array $opt=array())
  43.  * @method static Collection|MemberGroupModel[]|MemberGroupModel|null findBy($col, $val, array $opt=array())
  44.  * @method static Collection|MemberGroupModel[]|MemberGroupModel|null findAll(array $opt=array())
  45.  *
  46.  * @method static integer countById($id, array $opt=array())
  47.  * @method static integer countByTstamp($val, array $opt=array())
  48.  * @method static integer countByName($val, array $opt=array())
  49.  * @method static integer countByRedirect($val, array $opt=array())
  50.  * @method static integer countByJumpTo($val, array $opt=array())
  51.  * @method static integer countByDisable($val, array $opt=array())
  52.  * @method static integer countByStart($val, array $opt=array())
  53.  * @method static integer countByStop($val, array $opt=array())
  54.  */
  55. class MemberGroupModel extends Model
  56. {
  57.     /**
  58.      * Table name
  59.      * @var string
  60.      */
  61.     protected static $strTable 'tl_member_group';
  62.     /**
  63.      * Find a published group by its ID
  64.      *
  65.      * @param integer $intId      The member group ID
  66.      * @param array   $arrOptions An optional options array
  67.      *
  68.      * @return MemberGroupModel|null The model or null if there is no member group
  69.      */
  70.     public static function findPublishedById($intId, array $arrOptions=array())
  71.     {
  72.         $t = static::$strTable;
  73.         $arrColumns = array("$t.id=?");
  74.         if (!static::isPreviewMode($arrOptions))
  75.         {
  76.             $time Date::floorToMinute();
  77.             $arrColumns[] = "$t.disable='' AND ($t.start='' OR $t.start<=$time) AND ($t.stop='' OR $t.stop>$time)";
  78.         }
  79.         return static::findOneBy($arrColumns$intId$arrOptions);
  80.     }
  81.     /**
  82.      * Find all active groups
  83.      *
  84.      * @param array $arrOptions An optional options array
  85.      *
  86.      * @return Collection|MemberGroupModel|null A collection of models or null if there are no member groups
  87.      */
  88.     public static function findAllActive(array $arrOptions=array())
  89.     {
  90.         $t = static::$strTable;
  91.         $time Date::floorToMinute();
  92.         return static::findBy(array("$t.disable='' AND ($t.start='' OR $t.start<=$time) AND ($t.stop='' OR $t.stop>$time)"), null$arrOptions);
  93.     }
  94.     /**
  95.      * Find the first active group with a published jumpTo page
  96.      *
  97.      * @param array $arrIds An array of member group IDs
  98.      *
  99.      * @return MemberGroupModel|null The model or null if there is no matching member group
  100.      *
  101.      * @deprecated Deprecated since Contao 4.0, to be removed in Contao 5.0.
  102.      *             Use PageModel::findFirstActiveByMemberGroups() instead.
  103.      */
  104.     public static function findFirstActiveWithJumpToByIds($arrIds)
  105.     {
  106.         trigger_deprecation('contao/core-bundle''4.0''Using "Contao\MemberGroupModel::findFirstActiveWithJumpToByIds()" has been deprecated and will no longer work in Contao 5.0. Use "Contao\PageModel::findFirstActiveByMemberGroups()" instead.');
  107.         if (empty($arrIds) || !\is_array($arrIds))
  108.         {
  109.             return null;
  110.         }
  111.         $time Date::floorToMinute();
  112.         $objDatabase Database::getInstance();
  113.         $arrIds array_map('\intval'$arrIds);
  114.         $objResult $objDatabase->prepare("SELECT p.* FROM tl_member_group g LEFT JOIN tl_page p ON g.jumpTo=p.id WHERE g.id IN(" implode(','$arrIds) . ") AND g.jumpTo>0 AND g.redirect='1' AND g.disable!='1' AND (g.start='' OR g.start<=$time) AND (g.stop='' OR g.stop>$time) AND p.published='1' AND (p.start='' OR p.start<=$time) AND (p.stop='' OR p.stop>$time) ORDER BY " $objDatabase->findInSet('g.id'$arrIds))
  115.                                  ->limit(1)
  116.                                  ->execute();
  117.         if ($objResult->numRows 1)
  118.         {
  119.             return null;
  120.         }
  121.         return new static($objResult);
  122.     }
  123. }
  124. class_alias(MemberGroupModel::class, 'MemberGroupModel');