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' => '
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') . '.
' . $notice['msg'] . '.