/** * Handles the upgrade from version 1 to version 2 of Twitter Bootstrap as well as any other plugin upgrade */ protected function handlePluginUpgrade() { //current_user_can( 'manage_options' ) ensure only valid users attempt this. if (self::getOption('current_plugin_version') !== self::$VERSION && current_user_can('manage_options')) { //Manages those users who are coming from a version pre-Twitter 2.0+ if (self::getOption('upgraded1to2') !== 'Y') { if (self::getOption('alerts_js') === 'Y' || self::getOption('tabs_js') === 'Y' || self::getOption('twipsy_js') === 'Y') { self::updateOption('all_js', 'Y'); } self::addOption('upgraded1to2', 'Y'); } //Manages migration to version 2.0.3 where legacy twitter and individual Javascript libraries were removed if (self::getOption('alert_js') == 'Y' || self::getOption('button_js') == 'Y' || self::getOption('dropdown_js') == 'Y' || self::getOption('modal_js') == 'Y' || self::getOption('tooltip_js') == 'Y' || self::getOption('popover_js') == 'Y' || self::getOption('scrollspy_js') == 'Y' || self::getOption('tab_js') == 'Y' || self::getOption('transition_js') == 'Y' || self::getOption('collapse_js') == 'Y' || self::getOption('carousel_js') == 'Y' || self::getOption('typeahead_js') == 'Y') { self::updateOption('all_js', 'Y'); } //Delete all old plugin options from all previous versions if they exist. $m_aAllOldPluginOptions = array('hotlink', 'alert_js', 'button_js', 'dropdown_js', 'modal_js', 'tooltip_js', 'popover_js', 'scrollspy_js', 'tab_js', 'transition_js', 'collapse_js', 'carousel_js', 'typeahead_js', 'alerts_js', 'tabs_js', 'twipsy_js'); foreach ($m_aAllOldPluginOptions as $sOldOptions) { self::deleteOption($sOldOptions); } //Recompile LESS CSS if applicable and delete all old WP Options values from DB if (self::getOption('use_compiled_css') == 'Y') { $oBoostrapLess = new HLT_BootstrapLess(); //Get the array of plugin options $aBootstrapOptions = $this->getOption(HLT_BootstrapLess::$LESS_OPTIONS_DB_KEY); if (empty($aBootstrapOptions)) { //pre-2.0.4.2 version of the plugin $aBootstrapOptions = $oBoostrapLess->getAllBootstrapLessOptions(); foreach ($aBootstrapOptions as &$aLessSection) { foreach ($aLessSection['section_options'] as &$aOptionParams) { list($sOptionKey, $sOptionSaved, $sOptionDefault, $sOptionType, $sOptionHumanName) = $aOptionParams; if ($sOptionKey != 'spacer') { //FIX DEBUG: http://wordpress.org/support/topic/plugin-wordpress-twitter-bootstrap-css-noticeswarningsdb-option-usage $sCurrentOptionVal = HLT_BootstrapCss::getOption($sOptionKey); HLT_BootstrapCss::deleteOption($sOptionKey); $aOptionParams[1] = $sCurrentOptionVal == '' ? $sOptionDefault : $sCurrentOptionVal; } } //foreach $aOptionParams } //foreach $aLessSection $this->updateOption(HLT_BootstrapLess::$LESS_OPTIONS_DB_KEY, $aBootstrapOptions); } if ($oBoostrapLess->reWriteVariablesLess(self::$BOOSTRAP_DIR)) { $oBoostrapLess->compileAllBootstrapLess(self::$BOOSTRAP_DIR); } } //if: use_compiled_css == 'Y' //Set the flag so that this update handler isn't run again for this version. self::updateOption('current_plugin_version', self::$VERSION); } //if //Someone clicked the button to acknowledge the update if (isset($_POST['hlt_hide_update_notice']) && isset($_POST['hlt_user_id'])) { $result = update_user_meta($_POST['hlt_user_id'], 'hlt_bootstrapcss_current_version', self::$VERSION); header("Location: admin.php?page=" . $this->getFullParentMenuId()); } }
public function onnxtDeactivatePlugin() { HLT_BootstrapCss::deleteOption('option'); HLT_BootstrapCss::deleteOption('hotlink'); HLT_BootstrapCss::deleteOption('alert_js'); HLT_BootstrapCss::deleteOption('button_js'); HLT_BootstrapCss::deleteOption('dropdown_js'); HLT_BootstrapCss::deleteOption('modal_js'); HLT_BootstrapCss::deleteOption('tooltip_js'); HLT_BootstrapCss::deleteOption('popover_js'); HLT_BootstrapCss::deleteOption('scrollspy_js'); HLT_BootstrapCss::deleteOption('tab_js'); HLT_BootstrapCss::deleteOption('transition_js'); // Bootstrap v2.0+ HLT_BootstrapCss::deleteOption('collapse_js'); // Bootstrap v2.0+ HLT_BootstrapCss::deleteOption('carousel_js'); // Bootstrap v2.0+ HLT_BootstrapCss::deleteOption('typeahead_js'); // Bootstrap v2.0+ HLT_BootstrapCss::deleteOption('all_js'); // Bootstrap v2.0+ HLT_BootstrapCss::deleteOption('js_head'); HLT_BootstrapCss::deleteOption('useshortcodes'); HLT_BootstrapCss::deleteOption('prettify'); HLT_BootstrapCss::deleteOption('customcss'); HLT_BootstrapCss::deleteOption('customcss_url'); HLT_BootstrapCss::deleteOption('upgraded1to2'); /* Clean-up from previous versions */ HLT_BootstrapCss::deleteOption('alerts_js'); HLT_BootstrapCss::deleteOption('tabs_js'); HLT_BootstrapCss::deleteOption('twipsy_js'); }
public function processLessOptions($insFunction, $inaData = array()) { if (empty($insFunction)) { return; } if ($insFunction == 'delete') { HLT_BootstrapCss::deleteOption(self::$LESS_OPTIONS_DB_KEY); $this->m_aAllBootstrapLessOptions = null; return; } if (!$this->initPluginOptions()) { return; } if ($insFunction == 'populate') { //the previous IF populated return; } foreach ($this->m_aAllBootstrapLessOptions as &$aLessSection) { foreach ($aLessSection['section_options'] as &$aOptionParams) { list($sOptionKey, $sOptionSaved, $sOptionDefault, $sOptionType, $sOptionHumanName) = $aOptionParams; if ($sOptionKey == 'spacer') { continue; } switch ($insFunction) { case 'process-post': if (empty($inaData)) { return; } $sPostValue = $_POST[$inaData['options-prefix'] . $sOptionKey]; if ($sOptionType == 'less_color') { if (preg_match('/^[a-fA-F0-9]{3,6}$/', $sPostValue)) { $sPostValue = '#' . $sPostValue; } else { //validate LESS? } } else { if ($sOptionType == 'less_size') { if (preg_match('/^\\d+$/', $sPostValue)) { $sPostValue = $sPostValue . 'px'; } if (!preg_match('/^\\d+(px|em|pt)$/', $sPostValue)) { $sPostValue = $sOptionDefault; } } } $aOptionParams[1] = stripslashes($sPostValue); break 1; case 'rewrite-variablesless': $sBootstrapLessVar = str_replace(self::LessOptionsPrefix, '', $sOptionKey); $sOptionValue = $sOptionSaved == '' ? $sOptionDefault : $sOptionSaved; $inaData['file-contents'] = preg_replace('/^\\s*(@' . $sBootstrapLessVar . ':\\s*)([^;]+)(;)\\s*$/im', '${1}' . $sOptionValue . '${3}', $inaData['file-contents']); break 1; } //switch } //foreach } //foreach if ($insFunction == 'process-post') { HLT_BootstrapCss::updateOption(self::$LESS_OPTIONS_DB_KEY, $this->m_aAllBootstrapLessOptions); } if ($insFunction == 'rewrite-variablesless') { return $inaData['file-contents']; } }