Esempio n. 1
0
 /**
  * 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');
 }
Esempio n. 3
0
 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'];
     }
 }