args['dev_mode']) { $min = '.min'; } return $min; } /** * Parse CSS from output/compiler array * * @since 3.2.8 * @access private * @return $css CSS string */ public static function parseCSS($cssArray = array(), $style = '', $value = ''){ // Something wrong happened if (count($cssArray) == 0) { return; // The old way } elseif (count($cssArray) == 1) { $css = self::theOldWay($cssArray, $style); // the new way (or multiple selectors from the old way) } elseif (count($cssArray) > 1) { $css = ''; foreach($cssArray as $element => $selector) { // The old way if ($element === 0) { $css = self::theOldWay($cssArray, $style); return $css; } // New way continued $cssStyle = $element . ':' . $value . ';'; $css .= $selector . '{' . $cssStyle . '}'; } } return $css; } private static function theOldWay($cssArray, $style){ $keys = implode(",", $cssArray); $css = $keys . "{" . $style . '}'; return $css; } /** * initWpFilesystem - Initialized the Wordpress filesystem, if it already isn't. * * @since 3.2.3 * @access public * @return void */ static public function initWpFilesystem() { global $wp_filesystem; // Initialize the Wordpress filesystem, no more using file_put_contents function if (empty($wp_filesystem)) { require_once (ABSPATH . '/wp-admin/includes/file.php'); WP_Filesystem(); } } /** * modRewriteCheck - Check for the installation of apache mod_rewrite * * @since 3.2.3 * @access public * @return void */ static public function modRewriteCheck() { if (function_exists('apache_get_modules')) { if (!in_array('mod_rewrite', apache_get_modules())) { self::$_parent->admin_notices[] = array( 'type' => 'error', 'msg' => '
The Apache mod_rewrite module is not enabled on your server.

Both Wordpress and Redux require the enabling of the Apache mod_rewrite module to function properly. Please contact whomever provides support for your server and ask them to enable the mod_rewrite module', 'id' => 'mod_rewrite_notice_', 'dismiss' => false ); } } } /** * verFromGit - Retrives latest Redux version from GIT * * @since 3.2.0 * @access private * @return string $ver */ static private function verFromGit() { // Get the raw framework.php from github $gitpage = wp_remote_get( 'https://raw.github.com/ReduxFramework/redux-framework/master/ReduxCore/framework.php', array( 'headers' => array( 'Accept-Encoding' => '' ), 'sslverify' => true, 'timeout' => 300 )); // Is the response code the corect one? if (!is_wp_error($gitpage)) { if (isset($gitpage['body'])) { // Get the page text. $body = $gitpage['body']; // Find version line in framework.php $needle = 'public static $_version ='; $pos = strpos($body, $needle); // If it's there, continue. We don't want errors if $pos = 0. if ($pos > 0) { // Look for the semi-colon at the end of the version line $semi = strpos($body, ";", $pos); // Error avoidance. If the semi-colon is there, continue. if ($semi > 0) { // Extract the version line $text = substr($body, $pos, ($semi - $pos)); // Find the first quote around the veersion number. $quote = strpos($body, "'", $pos); // Extract the version number $ver = substr($body, $quote, ($semi - $quote)); // Strip off quotes. $ver = str_replace("'", '', $ver); return $ver; } } } } } /** * updateCheck - Checks for updates to Redux Framework * * @since 3.2.0 * @access public * @param string $curVer Current version of Redux Framework * @return void - Admin notice is diaplyed if new version is found */ static public function updateCheck($curVer) { // If no cookie, check for new ver if (!isset($_COOKIE['redux_update_check'])) { // || 1 == strcmp($_COOKIE['redux_update_check'], self::$_version)) { // actual ver number from git repo $ver = self::verFromGit(); // hour long cookie. setcookie("redux_update_check", $ver, time() + 3600, '/'); } else { // saved value from cookie. If it's different from current ver // we can still show the update notice. $ver = $_COOKIE['redux_update_check']; } // Set up admin notice on new version if (1 == strcmp($ver, $curVer)) { self::$_parent->admin_notices[] = array( 'type' => 'updated', 'msg' => 'A new build of Redux is now available!

Your version: ' . $curVer . '
New version: ' . $ver . '

Get it now  |', 'id' => 'dev_notice_' . $ver, 'dismiss' => true, ); } } /** * adminNotices - Evaluates user dismiss option for displaying admin notices * * @since 3.2.0 * @access public * @return void */ static public function adminNotices() { global $current_user, $pagenow; // Check for an active admin notice array if (!empty(self::$_parent->admin_notices)) { // Enum admin notices foreach (self::$_parent->admin_notices as $notice) { if (true == $notice['dismiss']) { // Get user ID $userid = $current_user->ID; if (!get_user_meta($userid, 'ignore_' . $notice['id'])) { // Check if we are on admin.php. If we are, we have // to get the current page slug and tab, so we can // feed it back to Wordpress. Why> admin.php cannot // be accessed without the page parameter. We add the // tab to return the user to the last panel they were // on. $pageName = ''; $curTab = ''; if ($pagenow == 'admin.php' || $pagenow == 'themes.php') { // Get the current page. To avoid errors, we'll set // the redux page slug if the GET is empty. $pageName = empty($_GET['page']) ? '&page=' . self::$_parent->args['page_slug'] : '&page=' . $_GET['page']; // Ditto for the current tab. $curTab = empty($_GET['tab']) ? '&tab=0' : '&tab=' . $_GET['tab']; } // Print the notice with the dismiss link echo '

' . $notice['msg'] . '  ' . __('Dismiss', 'redux-framework') . '.

'; } } else { // Standard notice echo '

' . $notice['msg'] . '.

'; } } // Clear the admin notice array self::$_parent->admin_notices = array(); } } /** * dismissAdminNotice - Updates user meta to store dismiss notice preference * * @since 3.2.0 * @access public * @return void */ static public function dismissAdminNotice() { global $current_user; // Verify the dismiss and id parameters are present. if (isset($_GET['dismiss']) && isset($_GET['id'])) { if ('true' == $_GET['dismiss'] || 'false' == $_GET['dismiss']) { // Get the user id $userid = $current_user->ID; // Get the notice id $id = $_GET['id']; $val = $_GET['dismiss']; // Add the dismiss request to the user meta. update_user_meta($userid, 'ignore_' . $id, $val); } } } } }