Server : Apache System : Linux indy02.toastserver.com 3.10.0-962.3.2.lve1.5.85.el7.x86_64 #1 SMP Thu Apr 18 15:18:36 UTC 2024 x86_64 User : palandch ( 1163) PHP Version : 7.1.33 Disable Function : NONE Directory : /home/palandch/www/core/components/formit/model/formit/module/ |
<?php /** * FormIt * * Copyright 2009-2012 by Shaun McCormick <shaun@modx.com> * * FormIt is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) any * later version. * * FormIt is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * FormIt; if not, write to the Free Software Foundation, Inc., 59 Temple Place, * Suite 330, Boston, MA 02111-1307 USA * * @package formit */ require_once dirname(__FILE__).'/fimodule.class.php'; /** * Loads a option list of countries * * @package formit * @subpackage modules */ class fiCountryOptions extends fiModule { /** @var array $countries */ public $countries = array(); /** @var array $prioritizedCountries */ public $prioritizedCountries = array(); /** @var array $list */ public $list = array(); /** @var array $prioritizedList */ public $prioritizedList = array(); /** * @return void */ public function initialize() { $this->setDefaultOptions(array( 'tpl' => 'option', 'selected' => '', 'useIsoCode' => true, 'selectedAttribute' => ' selected="selected"', 'optGroupTpl' => 'optGroup', 'prioritized' => '', 'prioritizedGroupText' => '', 'allGroupText' => '', 'outputSeparator' => "\n", 'toPlaceholder' => '', )); $this->setOption('selectedKey',$this->getOption('useIsoCode',true,'isset') ? 'countryKey' : 'countryName'); } /** * Load the country list * @return array */ public function getData() { $cultureKey = $this->modx->getOption('cultureKey', array(), '', true); $countriesFile = $this->getOption('countriesDirectory',$this->formit->config['includesPath']).$cultureKey.'.countries.inc.php'; if (file_exists($countriesFile)) { $this->countries = include $countriesFile; } else { $this->countries = include $this->formit->config['includesPath'].'us.countries.inc.php'; } return $this->countries; } /** * Check for prioritized countries, and load those * @return array */ public function loadPrioritized() { /* handle prioritized countries */ $this->prioritizedCountries = array(); $prioritized = $this->getOption('prioritized',''); if (!empty($prioritized)) { $prioritized = explode(',',$prioritized); foreach ($this->countries as $countryKey => $countryName) { if (in_array($countryKey,$prioritized)) { $this->prioritizedCountries[] = $countryKey; } } } return $this->prioritizedCountries; } /** * iterate over lists * @return void */ public function iterate() { $this->list = array(); $this->prioritizedList = array(); $selected = $this->getOption('selected',''); $selectedAttribute = $this->getOption('selectedAttribute',' selected="selected"'); $useIsoCode = $this->getOption('useIsoCode',true,'isset'); $tpl = $this->getOption('tpl','option'); $selectedKey = $this->getOption('selectedKey','countryKey'); foreach ($this->countries as $countryKey => $countryName) { $countryArray = array( 'text' => $countryName, 'value' => $useIsoCode ? $countryKey : $countryName, 'selected' => '', ); if ($selected == $$selectedKey) { $countryArray['selected'] = $selectedAttribute; } $o = $this->formit->getChunk($tpl,$countryArray); if (in_array($countryKey,$this->prioritizedCountries)) { $this->prioritizedList[] = $o; } else { $this->list[] = $o; } } } /** * Handle output generation * @return string */ public function output() { $outputSeparator = $this->getOption('outputSeparator',"\n"); if (!empty($this->prioritizedList)) { $optGroupTpl = $this->getOption('optGroupTpl','optGroup'); $output = $this->formit->getChunk($optGroupTpl,array( 'text' => $this->getOption('prioritizedGroupText',$this->modx->lexicon('formit.prioritized_group_text')), 'options' => implode($outputSeparator,$this->prioritizedList), )); $output .= $this->formit->getChunk($optGroupTpl,array( 'text' => $this->getOption('allGroupText',$this->modx->lexicon('formit.all_group_text')), 'options' => implode($outputSeparator,$this->list), )); } else { $output = implode($outputSeparator,$this->list); } /* set to placeholder or output */ $toPlaceholder = $this->getOption('toPlaceholder',''); if (!empty($toPlaceholder)) { $this->modx->setPlaceholder($toPlaceholder,$output); $output = ''; } return $output; } }