aioFaviconSettings = $aioFaviconSettings; $this->aioFaviconDefaultSettings = $aioFaviconDefaultSettings; $this->donationLoader = $donationLoader; $this->faviconRenderHelper = new FaviconRenderHelper($this->aioFaviconSettings,AIOFAVICON_BACKEND); $this->faviconFrontendMap = $faviconFrontendMap; $this->faviconBackendMap = $faviconBackendMap; $this->faviconMap = array_merge($faviconFrontendMap,$faviconBackendMap); } // AioFaviconBackend() /** * Initialize * * @since 4.0 * @access public * @author Arne Franken * * @return void */ //public function init() { function init() { add_action('admin_head', array(& $this->faviconRenderHelper, 'renderFavicons')); // add options page add_action('admin_menu', array(& $this, 'registerAdminMenu')); add_action('admin_post_aioFaviconDeleteSettings', array(& $this, 'aioFaviconDeleteSettings')); add_action('admin_post_aioFaviconUpdateSettings', array(& $this, 'aioFaviconUpdateSettings')); //only load JavaScript if we are on this plugin's settingspage if (isset($_GET['page']) && $_GET['page'] == AIOFAVICON_PLUGIN_BASENAME) { add_action('admin_enqueue_scripts', array(& $this->donationLoader, 'registerDonationJavaScript')); add_action('admin_enqueue_scripts', array(& $this, 'registerAdminScripts')); } } //init() /** * Builds the JavaScript array of all uploaded Favicons. * Also registers JavaScript file. * * @since 4.0 * @access public * @author Arne Franken * * @return void */ //public function registerAdminScripts() { function registerAdminScripts() { $backendJavaScriptArray = array(); if (!empty($this->aioFaviconSettings)) { foreach ((array)$this->aioFaviconSettings as $type => $url) { if (!empty($url)) { if (preg_match('/backend/i', $type) || preg_match('/frontend/i', $type)) { $backendJavaScriptArray[$type] = $url; } } } } wp_register_script('aiofavicon', AIOFAVICON_PLUGIN_URL . '/js/aiofavicon-min.js', array('jquery')); wp_enqueue_script('aiofavicon'); wp_localize_script('aiofavicon', 'Aiofavicon', $backendJavaScriptArray); } // registerAdminScripts() /** * Render Settings page * * @since 1.0 * @access public * @author Arne Franken * * @return void */ //public function renderSettingsPage() { function renderSettingsPage() { include_once 'settings-page.php'; } // renderSettingsPage() /** * Add settings link to plugin management page * * @since 1.0 * @access public * @author Arne Franken * * @param array $action_links original links * * @return array $action_links with link to settings page */ //public function addPluginActionLinks($action_links) { function addPluginActionLinks($action_links) { $settings_link = '' . __('Settings', AIOFAVICON_TEXTDOMAIN) . ''; array_unshift($action_links, $settings_link); return $action_links; } //addPluginActionLinks() /** * Registers the Settings Page in the Admin Menu * * @since 1.0 * @access public * @author Arne Franken * * @return void */ //public function registerAdminMenu() { function registerAdminMenu() { $return_message = ''; if (function_exists('add_management_page') && current_user_can('manage_options')) { // update, uninstall message if (strpos($_SERVER['REQUEST_URI'], 'all-in-one-favicon.php') && isset($_GET['aioFaviconUpdateSettings'])) { $return_message = sprintf(__('Successfully updated %1$s settings.', AIOFAVICON_TEXTDOMAIN), AIOFAVICON_NAME); } elseif (strpos($_SERVER['REQUEST_URI'], 'all-in-one-favicon.php') && isset($_GET['aioFaviconDeleteSettings'])) { $return_message = sprintf(__('%1$s settings were successfully deleted.', AIOFAVICON_TEXTDOMAIN), AIOFAVICON_NAME); } } $this->registerAdminNotice($return_message); $this->registerSettingsPage(); } // registerAdminMenu() /** * Update plugin settings wrapper * * handles checks and redirect * * @since 1.0 * @access public * @author Arne Franken * * @return void */ //public function aioFaviconUpdateSettings() { function aioFaviconUpdateSettings() { if (!current_user_can('manage_options')) wp_die(__('Did not update settings, you do not have the necessary rights.', AIOFAVICON_TEXTDOMAIN)); //cross check the given referer for nonce set in settings form check_admin_referer('aio-favicon-settings-form'); // get new settings from POST $usersettings = $_POST[AIOFAVICON_SETTINGSNAME]; // if URL was copy / pasted into form, fields named "*-text", but must be saved without "-text" suffix. foreach ($usersettings as $settingsName => $settingsValue) { if(preg_match('/(.*)-text/i',$settingsName, $matches)) { if (count($matches) > 1) { $match = $matches[1]; if(!empty($settingsValue)) { $usersettings[$match] = $settingsValue; } } //delete "*-text" from incoming array unset($usersettings[$settingsName]); } } // Create the settings array by merging the user's settings and the defaults $defaultArray = $this->aioFaviconDefaultSettings; $this->aioFaviconSettings = wp_parse_args($usersettings, wp_parse_args((array)get_option(AIOFAVICON_SETTINGSNAME), $defaultArray)); //don't show link in meta box by default any more. if (!isset($usersettings['removeLinkFromMetaBox'])) { $this->aioFaviconSettings['removeLinkFromMetaBox'] = false; } // handle file upload $overrides = array('action' => 'aioFaviconUpdateSettings'); foreach ($_FILES as $icoName => $icoArray) { $file = wp_handle_upload($_FILES[$icoName], $overrides); if (isset($file['url'])) { $this->aioFaviconSettings[$icoName] = $file['url']; } } // delete files if checkboxes are checked foreach ($_POST as $key => $value) { if (preg_match('/delete-(.*)/i', $key, $matches)) { if (count($matches) > 1) { $match = $matches[1]; $this->deleteFile($match); } } } $this->updateSettingsInDatabase(); $referrer = str_replace(array('&aioFaviconUpdateSettings', '&aioFaviconDeleteSettings'), '', $_POST['_wp_http_referer']); wp_redirect($referrer . '&aioFaviconUpdateSettings'); } // aioFaviconUpdateSettings() /** * Delete plugin settings wrapper * * handles checks and redirect * * @since 1.0 * @access public * @author Arne Franken * * @return void */ //public function aioFaviconDeleteSettings() { function aioFaviconDeleteSettings() { if (current_user_can('manage_options') && isset($_POST['delete_settings-true'])) { //cross check the given referer for nonce set in delete settings form check_admin_referer('aio-favicon-delete_settings-form'); foreach($this->faviconMap as $key => $value) { $this->deleteFile($key); } $this->deleteSettingsFromDatabase(); } else { wp_die(sprintf(__('Did not delete %1$s settings. Either you dont have the nececssary rights or you didnt check the checkbox.', AIOFAVICON_TEXTDOMAIN), AIOFAVICON_NAME)); } //clean up referrer $referrer = str_replace(array('&aioFaviconUpdateSettings', '&aioFaviconDeleteSettings'), '', $_POST['_wp_http_referer']); wp_redirect($referrer . '&aioFaviconDeleteSettings'); } // aioFaviconDeleteSettings() //=================================================================== /** * Registers Admin Notices * * @since 1.0 * @access private * @author Arne Franken * * @param string $notice to register notice with. * * @return void */ //private function registerAdminNotice($notice) { function registerAdminNotice($notice) { if ($notice != '') { $message = '
' . $notice . '