vendor/dma/dma_simple_grid/src/Resources/contao/classes/DmaSimpleGrid.php line 100

Open in your IDE?
  1. <?php
  2. /*
  3.  * Copyright DMA GmbH and Janosch Oltmanns
  4.  *
  5.  * For the full copyright and license information, please view the LICENSE
  6.  * file that was distributed with this source code.
  7.  */
  8. namespace DMA;
  9. /**
  10.  * DMA SimpleGrid DCA (tl_content and tl_module)
  11.  *
  12.  * Provide miscellaneous methods that are used by the data configuration arrays.
  13.  *
  14.  * @author Janosch Oltmanns <oltmanns@dma.do>
  15.  */
  16. class DmaSimpleGrid
  17. {
  18.     /**
  19.      * Object instance (Singleton)
  20.      * @var \Input
  21.      */
  22.     protected static $objInstance;
  23.     /**
  24.      * Cache
  25.      * @var array
  26.      */
  27.     protected static $arrCache = array();
  28.     public static function getData()
  29.     {
  30.         if (!isset(static::$arrCache['grid']))
  31.         {
  32.             self::initialize();
  33.         }
  34.         return static::$arrCache['grid'];
  35.     }
  36.     public static function getConfigData($strKey)
  37.     {
  38.         if (!isset(static::$arrCache['grid']))
  39.         {
  40.             self::initialize();
  41.         }
  42.         return static::$arrCache['grid']['config'][$strKey] ?? false;
  43.     }
  44.     public static function hasDmaGridInfos($arrTemplateData)
  45.     {
  46.         $arrCheckableKeys = array
  47.         (
  48.             'dma_simplegrid_columnsettings',
  49.             'dma_simplegrid_offsetsettings',
  50.             'dma_simplegrid_offsetrightsettings',
  51.             'dma_simplegrid_pushsettings',
  52.             'dma_simplegrid_pullsettings'
  53.         );
  54.         $blnHasDmaGridInfos false;
  55.         foreach ($arrCheckableKeys as $checkableKey)
  56.         {
  57.             if (isset($arrTemplateData[$checkableKey]) && $arrTemplateData[$checkableKey])
  58.             {
  59.                 $blnHasDmaGridInfos true;
  60.             }
  61.         }
  62.         return $blnHasDmaGridInfos;
  63.     }
  64.     public static function getColumnClasses($arrTemplateData)
  65.     {
  66.         if (isset($arrTemplateData['origId']) && $arrTemplateData['origId'] && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_useOwnSettingsByIncludeElements'] ?? false))
  67.         {
  68.             // includiertes Inhaltselement
  69.             $origContentElement = \ContentModel::findById($arrTemplateData['id']);
  70.             if ($origContentElement !== null)
  71.             {
  72.                 $arrTemplateData $origContentElement->row();
  73.             }
  74.         }
  75.         if (!isset(static::$arrCache['grid']))
  76.         {
  77.             self::initialize();
  78.         }
  79.         $arrConfiguredClasses = array();
  80.         if (isset($arrTemplateData['dma_simplegrid_columnsettings']) && !is_array($arrTemplateData['dma_simplegrid_columnsettings'])) {
  81.             $arrColumnSettings deserialize($arrTemplateData['dma_simplegrid_columnsettings'], true);
  82.         }
  83.         if (isset($arrTemplateData['dma_simplegrid_offsetsettings']) && !is_array($arrTemplateData['dma_simplegrid_offsetsettings'])) {
  84.             $arrOffsetSettings deserialize($arrTemplateData['dma_simplegrid_offsetsettings'], true);
  85.         }
  86.         if (isset($arrTemplateData['dma_simplegrid_offsetrightsettings']) && !is_array($arrTemplateData['dma_simplegrid_offsetrightsettings'])) {
  87.             $arrOffsetRightSettings deserialize($arrTemplateData['dma_simplegrid_offsetrightsettings'], true);
  88.         }
  89.         if (isset($arrTemplateData['dma_simplegrid_pushsettings']) && !is_array($arrTemplateData['dma_simplegrid_pushsettings'])) {
  90.             $arrPushSettings deserialize($arrTemplateData['dma_simplegrid_pushsettings'], true);
  91.         }
  92.         if (isset($arrTemplateData['dma_simplegrid_pullsettings']) && !is_array($arrTemplateData['dma_simplegrid_pullsettings'])) {
  93.             $arrPullSettings deserialize($arrTemplateData['dma_simplegrid_pullsettings'], true);
  94.         }
  95.         if (isset($arrColumnSettings) && sizeof($arrColumnSettings) == 1) {
  96.             $arrElementSettings $arrColumnSettings[0];
  97.             if (is_array($arrElementSettings)) {
  98.                 foreach ($arrElementSettings as $columnKey => $varValue) {
  99.                     if ($varValue) {
  100.                         if ($varValue === 'hide') {
  101.                             $arrConfiguredClasses[] = static::$arrCache['grid']['config']['columns-config'][$columnKey]['hide-class'];
  102.                         } else {
  103.                             $arrConfiguredClasses[] = sprintf(static::$arrCache['grid']['config']['columns-config'][$columnKey]['column-class'], $varValue);
  104.                         }
  105.                     }
  106.                 }
  107.             }
  108.         }
  109.         if (isset($arrOffsetSettings) && sizeof($arrOffsetSettings) == && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_useOffset'] ?? false)) {
  110.             $arrElementSettings $arrOffsetSettings[0];
  111.             if (is_array($arrElementSettings)) {
  112.                 foreach ($arrElementSettings as $columnKey => $varValue) {
  113.                     if ($varValue === 'reset' && isset(static::$arrCache['grid']['config']['hasColumnOffsetReset']) && static::$arrCache['grid']['config']['hasColumnOffsetReset']) {
  114.                         $arrConfiguredClasses[] = sprintf(static::$arrCache['grid']['config']['columns-config'][$columnKey]['offset-class'], 0);
  115.                     } elseif ($varValue) {
  116.                         $arrConfiguredClasses[] = sprintf(static::$arrCache['grid']['config']['columns-config'][$columnKey]['offset-class'], $varValue);
  117.                     }
  118.                 }
  119.             }
  120.         }
  121.         if (isset($arrOffsetRightSettings) && sizeof($arrOffsetRightSettings) == && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_useOffsetRight'] ?? false)) {
  122.             $arrElementSettings $arrOffsetRightSettings[0];
  123.             if (is_array($arrElementSettings)) {
  124.                 foreach ($arrElementSettings as $columnKey => $varValue) {
  125.                     if ($varValue === 'reset' && isset(static::$arrCache['grid']['config']['hasColumnOffsetRightReset']) && static::$arrCache['grid']['config']['hasColumnOffsetRightReset']) {
  126.                         $arrConfiguredClasses[] = sprintf(static::$arrCache['grid']['config']['columns-config'][$columnKey]['offset-right-class'], 0);
  127.                     } elseif ($varValue) {
  128.                         $arrConfiguredClasses[] = sprintf(static::$arrCache['grid']['config']['columns-config'][$columnKey]['offset-right-class'], $varValue);
  129.                     }
  130.                 }
  131.             }
  132.         }
  133.         if (isset($arrPushSettings) && sizeof($arrPushSettings) == && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_usePush'] ?? false)) {
  134.             $arrElementSettings $arrPushSettings[0];
  135.             if (is_array($arrElementSettings)) {
  136.                 foreach ($arrElementSettings as $columnKey => $varValue) {
  137.                     if ($varValue === 'reset' && isset(static::$arrCache['grid']['config']['hasColumnPushReset']) && static::$arrCache['grid']['config']['hasColumnPushReset']) {
  138.                         $arrConfiguredClasses[] = sprintf(static::$arrCache['grid']['config']['columns-config'][$columnKey]['push-class'], 0);
  139.                     } elseif ($varValue) {
  140.                         $arrConfiguredClasses[] = sprintf(static::$arrCache['grid']['config']['columns-config'][$columnKey]['push-class'], $varValue);
  141.                     }
  142.                 }
  143.             }
  144.         }
  145.         if (isset($arrPullSettings) && sizeof($arrPullSettings) == && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_usePull'] ?? false)) {
  146.             $arrElementSettings $arrPullSettings[0];
  147.             if (is_array($arrElementSettings)) {
  148.                 foreach ($arrElementSettings as $columnKey => $varValue) {
  149.                     if ($varValue === 'reset' && isset(static::$arrCache['grid']['config']['hasColumnPullReset']) && static::$arrCache['grid']['config']['hasColumnPullReset']) {
  150.                         $arrConfiguredClasses[] = sprintf(static::$arrCache['grid']['config']['columns-config'][$columnKey]['pull-class'], 0);
  151.                     } elseif ($varValue) {
  152.                         $arrConfiguredClasses[] = sprintf(static::$arrCache['grid']['config']['columns-config'][$columnKey]['pull-class'], $varValue);
  153.                     }
  154.                 }
  155.             }
  156.         }
  157.         if (isset(static::$arrCache['grid']['config']['additional-classes']['columns']) && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_useAdditionalColumnClasses'] ?? false)
  158.         ) {
  159.             $arrAdditionalClasses = isset($arrTemplateData['dma_simplegrid_additionalcolumnclasses']) ? deserialize($arrTemplateData['dma_simplegrid_additionalcolumnclasses'], true) : [];
  160.             if (sizeof($arrAdditionalClasses) > 0)
  161.             {
  162.                 foreach ($arrAdditionalClasses as $strClassKey)
  163.                 {
  164.                     $arrConfiguredClasses[] = $strClassKey;
  165.                 }
  166.             }
  167.         }
  168.         if (sizeof($arrConfiguredClasses) > || (isset($arrTemplateData['type']) && $arrTemplateData['type']=="dma_simplegrid_column_start")) {
  169.             if (isset(static::$arrCache['grid']['config']['column-class']) && static::$arrCache['grid']['config']['column-class'])
  170.             {
  171.                 array_insert($arrConfiguredClasses0, static::$arrCache['grid']['config']['column-class']);
  172.             }
  173.         }
  174.         $strClasses implode(' '$arrConfiguredClasses);
  175.         if (strpos($strClasses"^") !== false)
  176.         {
  177.             $strClasses str_replace(" ^"""$strClasses);
  178.         }
  179.         return $strClasses;
  180.     }
  181.     public static function getSimpleGridInfos($arrRow)
  182.     {
  183.         if (!isset(static::$arrCache['grid']))
  184.         {
  185.             self::initialize();
  186.         }
  187.         $strGridInfo "";
  188.         if (($arrRow['dma_simplegrid_columnsettings'] ?? false) || ($arrRow['dma_simplegrid_additionalwrapperclasses'] ?? false))
  189.         {
  190.             $strGridInfo .= self::getColumnsShowString($arrRow);
  191.         }
  192.         if ($strGridInfo != "")
  193.         {
  194.             $strGridInfo '<a href="#" class="tl_gray" style="padding-right:10px; white-space:nowrap; max-width:200px; display:inline-block; overflow:hidden; text-overflow:ellipsis;" title="' $strGridInfo .'" onclick="return false;">' $strGridInfo '</a>';
  195.         }
  196.         return $strGridInfo;
  197.     }
  198.     public static function blockSelectCallback()
  199.     {
  200.         if (!isset(static::$arrCache['grid']))
  201.         {
  202.             self::initialize();
  203.         }
  204.         $arrColumnsSetting = array();
  205.         if (static::$arrCache['grid']['config']['block-config']) {
  206.             foreach (static::$arrCache['grid']['config']['block-config'] as $configName => $arrColumnConfig) {
  207.                 $arrColumnsSetting[$configName] = array
  208.                 (
  209.                     'label' => $arrColumnConfig['name'],
  210.                     'inputType' => 'select',
  211.                     'options' => static::$arrCache['grid']['config']['block-sizes'],
  212.                     'eval' => array('includeBlankOption' => true'style' => 'width:115px')
  213.                 );
  214.             }
  215.         }
  216.         return $arrColumnsSetting;
  217.     }
  218.     public static function columnsSelectCallback(\Widget $widget null)
  219.     {
  220.         if (!isset(static::$arrCache['grid']))
  221.         {
  222.             self::initialize();
  223.         }
  224.         $arrColumnsSetting = array();
  225.         if (static::$arrCache['grid']['config']['columns-config']) {
  226.             foreach (static::$arrCache['grid']['config']['columns-config'] as $configName => $arrColumnConfig) {
  227.                 $options = [];
  228.                 // Add the hide option for column settings
  229.                 if ($widget !== null && $widget->dataContainer->field === 'dma_simplegrid_columnsettings' && isset($arrColumnConfig['hide-class'])) {
  230.                     $options['hide'] = &$GLOBALS['TL_LANG']['MSC']['dma_simplegrid_hidden'];
  231.                 }
  232.                 // Add the reset/zero option for offset/offset-right/push/pull settings
  233.                 if ($widget !== null && (
  234.                     ($widget->dataContainer->field === 'dma_simplegrid_offsetsettings' && isset(static::$arrCache['grid']['config']['hasColumnOffsetReset']) && static::$arrCache['grid']['config']['hasColumnOffsetReset'])
  235.                     || ($widget->dataContainer->field === 'dma_simplegrid_offsetrightsettings' && isset(static::$arrCache['grid']['config']['hasColumnOffsetRightReset']) && static::$arrCache['grid']['config']['hasColumnOffsetRightReset'])
  236.                     || ($widget->dataContainer->field === 'dma_simplegrid_pushsettings' && isset(static::$arrCache['grid']['config']['hasColumnPushReset']) && static::$arrCache['grid']['config']['hasColumnPushReset'])
  237.                     || ($widget->dataContainer->field === 'dma_simplegrid_pullsettings' && isset(static::$arrCache['grid']['config']['hasColumnPullReset']) && static::$arrCache['grid']['config']['hasColumnPullReset'])
  238.                 )) {
  239.                     $options['reset'] = '0 (reset)';
  240.                 }
  241.                 // Add the column sizes
  242.                 foreach (static::$arrCache['grid']['config']['columns-sizes'] as $column) {
  243.                     $options[$column] = $column;
  244.                 }
  245.                 $arrColumnsSetting[$configName] = array
  246.                 (
  247.                     'label' => $arrColumnConfig['name'],
  248.                     'inputType' => 'select',
  249.                     'options' => $options,
  250.                     'eval' => array('includeBlankOption' => true'style' => 'width:115px')
  251.                 );
  252.             }
  253.         }
  254.         return $arrColumnsSetting;
  255.     }
  256.     public static function getAdditionalWrapperClasses()
  257.     {
  258.         if (!isset(static::$arrCache['grid']))
  259.         {
  260.             self::initialize();
  261.         }
  262.         return static::$arrCache['grid']['config']['additional-classes']['wrapper'];
  263.     }
  264.     public static function getAdditionalRowClasses()
  265.     {
  266.         if (!isset(static::$arrCache['grid']))
  267.         {
  268.             self::initialize();
  269.         }
  270.         return static::$arrCache['grid']['config']['additional-classes']['row'];
  271.     }
  272.     public static function getAdditionalColumnClasses()
  273.     {
  274.         if (!isset(static::$arrCache['grid']))
  275.         {
  276.             self::initialize();
  277.         }
  278.         return static::$arrCache['grid']['config']['additional-classes']['columns'];
  279.     }
  280.     public static function getColumnsShowString($arrRow)
  281.     {
  282.         $strReturn "";
  283.         $arrConfiguredClasses = array();
  284.         if (!is_array($arrRow['dma_simplegrid_columnsettings'] ?? null)) {
  285.             $arrColumnSettings = isset($arrRow['dma_simplegrid_columnsettings']) ? deserialize($arrRow['dma_simplegrid_columnsettings'], true) : [];
  286.         }
  287.         if (!is_array($arrRow['dma_simplegrid_offsetsettings'] ?? null)) {
  288.             $arrOffsetSettings = isset($arrRow['dma_simplegrid_offsetsettings']) ? deserialize($arrRow['dma_simplegrid_offsetsettings'], true) : [];
  289.         }
  290.         if (!is_array($arrRow['dma_simplegrid_offsetrightsettings'] ?? null)) {
  291.             $arrOffsetRightSettings = isset($arrRow['dma_simplegrid_offsetrightsettings']) ? deserialize($arrRow['dma_simplegrid_offsetrightsettings'], true) : [];
  292.         }
  293.         if (!is_array($arrRow['dma_simplegrid_pushsettings'] ?? null)) {
  294.             $arrPushSettings = isset($arrRow['dma_simplegrid_pushsettings']) ? deserialize($arrRow['dma_simplegrid_pushsettings'], true) : [];
  295.         }
  296.         if (!is_array($arrRow['dma_simplegrid_pullsettings'] ?? null)) {
  297.             $arrPullSettings = isset($arrRow['dma_simplegrid_pullsettings']) ? deserialize($arrRow['dma_simplegrid_pullsettings'], true) : [];
  298.         }
  299.         if (!is_array($arrRow['dma_simplegrid_additionalcolumnclasses'] ?? null)) {
  300.             $arrAdditionalColumnClassesSettings = isset($arrRow['dma_simplegrid_additionalcolumnclasses']) ? deserialize($arrRow['dma_simplegrid_additionalcolumnclasses'], true) : [];
  301.         }
  302.         if (!is_array($arrRow['dma_simplegrid_additionalrowclasses'] ?? null)) {
  303.             $arrAdditionalRowClassesSettings = isset($arrRow['dma_simplegrid_additionalrowclasses']) ? deserialize($arrRow['dma_simplegrid_additionalrowclasses'], true) : [];
  304.         }
  305.         if (!is_array($arrRow['dma_simplegrid_additionalwrapperclasses'] ?? null)) {
  306.             $arrAdditionalWrapperClassesSettings = isset($arrRow['dma_simplegrid_additionalwrapperclasses']) ? deserialize($arrRow['dma_simplegrid_additionalwrapperclasses'], true) : [];
  307.         }
  308.         if (sizeof($arrColumnSettings) == 1) {
  309.             $arrElementSettings $arrColumnSettings[0];
  310.             if (is_array($arrElementSettings)) {
  311.                 foreach ($arrElementSettings as $columnKey => $varValue) {
  312.                     if ($varValue && static::$arrCache['grid']['config']['columns-config'][$columnKey]['name']) {
  313.                         $arrConfiguredClasses[] = static::$arrCache['grid']['config']['columns-config'][$columnKey]['name'] . ": " $varValue;
  314.                     }
  315.                 }
  316.             }
  317.         }
  318.         if (sizeof($arrOffsetSettings) == && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_useOffset'] ?? false)) {
  319.             $arrElementSettings $arrOffsetSettings[0];
  320.             if (is_array($arrElementSettings)) {
  321.                 foreach ($arrElementSettings as $columnKey => $varValue) {
  322.                     if ($varValue && static::$arrCache['grid']['config']['columns-config'][$columnKey]['name']) {
  323.                         $arrConfiguredClasses[] = static::$arrCache['grid']['config']['columns-config'][$columnKey]['name'] . "-offset: " $varValue;
  324.                     }
  325.                 }
  326.             }
  327.         }
  328.         if (sizeof($arrOffsetRightSettings) == && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_useOffsetRight'] ?? false)) {
  329.             $arrElementSettings $arrOffsetRightSettings[0];
  330.             if (is_array($arrElementSettings)) {
  331.                 foreach ($arrElementSettings as $columnKey => $varValue) {
  332.                     if ($varValue && static::$arrCache['grid']['config']['columns-config'][$columnKey]['name']) {
  333.                         $arrConfiguredClasses[] = static::$arrCache['grid']['config']['columns-config'][$columnKey]['name'] . "-offset-right: " $varValue;
  334.                     }
  335.                 }
  336.             }
  337.         }
  338.         if (sizeof($arrPushSettings) == && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_usePush'] ?? false)) {
  339.             $arrElementSettings $arrPushSettings[0];
  340.             if (is_array($arrElementSettings)) {
  341.                 foreach ($arrElementSettings as $columnKey => $varValue) {
  342.                     if ($varValue && static::$arrCache['grid']['config']['columns-config'][$columnKey]['name']) {
  343.                         $arrConfiguredClasses[] = static::$arrCache['grid']['config']['columns-config'][$columnKey]['name'] . "-push: " $varValue;
  344.                     }
  345.                 }
  346.             }
  347.         }
  348.         if (sizeof($arrPullSettings) == && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_usePull'] ?? false)) {
  349.             $arrElementSettings $arrPullSettings[0];
  350.             if (is_array($arrElementSettings)) {
  351.                 foreach ($arrElementSettings as $columnKey => $varValue) {
  352.                     if ($varValue && static::$arrCache['grid']['config']['columns-config'][$columnKey]['name']) {
  353.                         $arrConfiguredClasses[] = static::$arrCache['grid']['config']['columns-config'][$columnKey]['name'] . "-pull: " $varValue;
  354.                     }
  355.                 }
  356.             }
  357.         }
  358.         if (sizeof($arrAdditionalColumnClassesSettings) > && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_useAdditionalColumnClasses'] ?? false))
  359.         {
  360.             if (is_array($arrAdditionalColumnClassesSettings))
  361.             {
  362.                 foreach ($arrAdditionalColumnClassesSettings as $varValue)
  363.                 {
  364.                     $arrConfiguredClasses[] = $varValue;
  365.                 }
  366.             }
  367.         }
  368.         if (sizeof($arrAdditionalRowClassesSettings) > && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_useAdditionalRowClasses'] ?? false))
  369.         {
  370.             if (is_array($arrAdditionalRowClassesSettings))
  371.             {
  372.                 foreach ($arrAdditionalRowClassesSettings as $varValue)
  373.                 {
  374.                     $arrConfiguredClasses[] = $varValue;
  375.                 }
  376.             }
  377.         }
  378.         if (sizeof($arrAdditionalWrapperClassesSettings) > && ($GLOBALS['TL_CONFIG']['dmaSimpleGrid_useAdditionalWrapperClasses'] ?? false))
  379.         {
  380.             if (is_array($arrAdditionalWrapperClassesSettings))
  381.             {
  382.                 foreach ($arrAdditionalWrapperClassesSettings as $varValue)
  383.                 {
  384.                     $arrConfiguredClasses[] = $varValue;
  385.                 }
  386.             }
  387.         }
  388.         $strReturn implode('; '$arrConfiguredClasses);
  389.         return $strReturn;
  390.     }
  391.     private static function initialize()
  392.     {
  393.         if (($GLOBALS['TL_CONFIG']['dmaSimpleGridType'] ?? false) && ($GLOBALS['DMA_SIMPLEGRID_CONFIG'][($GLOBALS['TL_CONFIG']['dmaSimpleGridType'] ?? null)] ?? false))
  394.         {
  395.             static::$arrCache['grid'] = $GLOBALS['DMA_SIMPLEGRID_CONFIG'][$GLOBALS['TL_CONFIG']['dmaSimpleGridType']];
  396.         }
  397.         else
  398.         {
  399.             static::$arrCache['grid'] = $GLOBALS['DMA_SIMPLEGRID_CONFIG'][$GLOBALS['DMA_SIMPLEGRID_FALLBACK']];
  400.         }
  401.     }
  402. }