| 1 | <?php |
|---|
| 2 | // wcf imports |
|---|
| 3 | require_once(WCF_DIR.'lib/system/event/EventListener.class.php'); |
|---|
| 4 | require_once(WCF_DIR.'lib/acp/option/Options.class.php'); |
|---|
| 5 | |
|---|
| 6 | /** |
|---|
| 7 | * Allow every page urls its own api key |
|---|
| 8 | * |
|---|
| 9 | * @package de.gmap.wcf.system.event.listener |
|---|
| 10 | * @author Michael Senkler, Torben Brodt |
|---|
| 11 | * @license GNU General Public License <http://opensource.org/licenses/gpl-3.0.html> |
|---|
| 12 | */ |
|---|
| 13 | class GMapWBBOptionFormListener implements EventListener { |
|---|
| 14 | private $pageurls = array(); |
|---|
| 15 | |
|---|
| 16 | /** |
|---|
| 17 | * @see EventListener::execute() |
|---|
| 18 | */ |
|---|
| 19 | public function execute($eventObj, $className, $eventName) { |
|---|
| 20 | if ($eventObj->activeCategory != 'map') return; |
|---|
| 21 | |
|---|
| 22 | switch($eventName) { |
|---|
| 23 | case 'assignVariables': |
|---|
| 24 | if(defined('PAGE_URLS') && PAGE_URLS != '') { |
|---|
| 25 | if(empty($this->pageurls)) { |
|---|
| 26 | $domains = explode("\n", StringUtil::unifyNewlines(PAGE_URLS)); |
|---|
| 27 | $domain2key = unserialize(MAP_API_PAGE_URLS); |
|---|
| 28 | |
|---|
| 29 | $this->pageurls = array(); |
|---|
| 30 | foreach($domains as $domain) { |
|---|
| 31 | if(array_key_exists($domain, $domain2key)) { |
|---|
| 32 | $this->pageurls[$domain] = $domain2key[$domain]; |
|---|
| 33 | } else { |
|---|
| 34 | $this->pageurls[$domain] = ''; |
|---|
| 35 | } |
|---|
| 36 | } |
|---|
| 37 | } |
|---|
| 38 | |
|---|
| 39 | WCF::getTPL()->assign('page_urls', $this->pageurls); |
|---|
| 40 | } |
|---|
| 41 | WCF::getTPL()->append( |
|---|
| 42 | 'additionalFields', WCF::getTPL()->fetch('mapAdminPageUrls') |
|---|
| 43 | ); |
|---|
| 44 | break; |
|---|
| 45 | case 'readFormParameters': |
|---|
| 46 | if(isset($_POST['values']['pageurl'])) { |
|---|
| 47 | $this->pageurls = $_POST['values']['pageurl']; |
|---|
| 48 | } |
|---|
| 49 | break; |
|---|
| 50 | case 'saved': |
|---|
| 51 | if(!empty($this->pageurls)) { |
|---|
| 52 | $sql = "SELECT optionName, optionID |
|---|
| 53 | FROM wcf".WCF_N."_option acp_option, |
|---|
| 54 | wcf".WCF_N."_package_dependency package_dependency |
|---|
| 55 | WHERE acp_option.packageID = package_dependency.dependency |
|---|
| 56 | AND package_dependency.packageID = ".PACKAGE_ID." |
|---|
| 57 | ORDER BY package_dependency.priority"; |
|---|
| 58 | $result = WCF::getDB()->sendQuery($sql); |
|---|
| 59 | $optionIDs = array(); |
|---|
| 60 | while ($row = WCF::getDB()->fetchArray($result)) { |
|---|
| 61 | $key = strtoupper($row['optionName']); |
|---|
| 62 | $optionIDs[$key] = $row['optionID']; |
|---|
| 63 | } |
|---|
| 64 | |
|---|
| 65 | $id = $optionIDs['MAP_API_PAGE_URLS']; |
|---|
| 66 | |
|---|
| 67 | // save options |
|---|
| 68 | $saveOptions = array(); |
|---|
| 69 | $saveOptions[$id] = serialize($this->pageurls); |
|---|
| 70 | Options::save($saveOptions); |
|---|
| 71 | |
|---|
| 72 | // clear cache |
|---|
| 73 | Options::resetCache(); |
|---|
| 74 | |
|---|
| 75 | WCF::getTPL()->assign('page_urls', $this->pageurls); |
|---|
| 76 | } |
|---|
| 77 | break; |
|---|
| 78 | } |
|---|
| 79 | } |
|---|
| 80 | } |
|---|
| 81 | ?> |
|---|