root/g-map/optionals/de.gmap.wbb/files/lib/system/event/listener/GMapWBBOptionFormListener.class.php @ 763

Revision 763, 2.3 kB (checked in by d0nut, 4 years ago)

moved g-map to wcf repository

Line 
1<?php
2// wcf imports
3require_once(WCF_DIR.'lib/system/event/EventListener.class.php');
4require_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 */
13class 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?>
Note: See TracBrowser for help on using the browser.