113 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * @author          Tassos Marinos <info@tassos.gr>
 | |
|  * @link            https://www.tassos.gr
 | |
|  * @copyright       Copyright © 2024 Tassos All Rights Reserved
 | |
|  * @license         GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
 | |
| */
 | |
| 
 | |
| // No direct access to this file
 | |
| defined('_JEXEC') or die;
 | |
| 
 | |
| use Joomla\CMS\Form\Field\GroupedlistField;
 | |
| use Joomla\CMS\HTML\HTMLHelper;
 | |
| use NRFramework\Extension;
 | |
| 
 | |
| class JFormFieldAcymailing extends GroupedlistField
 | |
| {
 | |
| 	/**
 | |
| 	 * Method to get the field option groups.
 | |
| 	 *
 | |
| 	 * @return  array  The field option objects as a nested array in groups.
 | |
| 	 *
 | |
| 	 * @since   1.6
 | |
| 	 */
 | |
|     public function getGroups()
 | |
|     {
 | |
|         $groups = [];
 | |
|         $lists  = [];
 | |
| 
 | |
|         if ($acymailing_5_is_installed = Extension::isInstalled('com_acymailing'))
 | |
|         {
 | |
|             $lists['5'] = $this->getAcym5Lists();
 | |
|         }
 | |
| 
 | |
|         if ($acymailing_6_is_installed = Extension::isInstalled('com_acym'))
 | |
|         {
 | |
|             $lists['6'] = $this->getAcym6Lists();
 | |
|         }
 | |
| 
 | |
|         foreach ($lists as $group_key => $group)
 | |
|         {
 | |
|             if (!is_array($group))
 | |
|             {
 | |
|                 continue;
 | |
|             }
 | |
| 
 | |
|             foreach ($group as $list)
 | |
|             {
 | |
|                 $groupLabel = 'AcyMailing ' . ($group_key == '5' ? $group_key : '');
 | |
|                 $groups[$groupLabel][] = HTMLHelper::_('select.option', $list->id, $list->name);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return $groups;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      *  Get AcyMailing 6 lists
 | |
|      *
 | |
|      *  @return  mixed   Array on success, null on failure
 | |
|      */
 | |
|     private function getAcym6Lists()
 | |
|     {
 | |
|         if (!@include_once(JPATH_ADMINISTRATOR . '/components/com_acym/helpers/helper.php'))
 | |
|         {
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         $lists = acym_get('class.list')->getAll();
 | |
| 
 | |
|         if (!is_array($lists))
 | |
|         {
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         // Add 6: prefix to each list id.
 | |
|         foreach ($lists as $key => &$list)
 | |
|         {
 | |
|             $list->id = '6:' . $list->id;
 | |
|         }
 | |
| 
 | |
|         return $lists;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      *  Get AcyMailing 5 lists
 | |
|      *
 | |
|      *  @return  mixed   Array on success, null on failure
 | |
|      */
 | |
|     private function getAcym5Lists()
 | |
|     {
 | |
|         if (!@include_once(JPATH_ADMINISTRATOR . '/components/com_acymailing/helpers/helper.php'))
 | |
|         {
 | |
|             return;
 | |
|         }
 | |
|          
 | |
|         $lists = acymailing_get('class.list')->getLists();
 | |
| 
 | |
|         if (!is_array($lists))
 | |
|         {
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         // The getGroups method expects the id property
 | |
|         foreach ($lists as $key => $list)
 | |
|         {
 | |
|             $list->id = $list->listid;
 | |
|         }
 | |
| 
 | |
|         return $lists;
 | |
|     }
 | |
| } |