khaihihi
This commit is contained in:
@@ -0,0 +1,363 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Redux Framework is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* Redux Framework is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package Redux Framework
|
||||
* @subpackage Social Profiles
|
||||
* @subpackage Wordpress
|
||||
* @author Kevin Provance (kprovance)
|
||||
* @version 1.0.8
|
||||
*/
|
||||
|
||||
// Exit if accessed directly
|
||||
if( !defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
// Don't duplicate me!
|
||||
if( !class_exists( 'ReduxFramework_extension_social_profiles' ) ) {
|
||||
|
||||
|
||||
/**
|
||||
* Main ReduxFramework social profiles extension class
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class ReduxFramework_extension_social_profiles {
|
||||
|
||||
public static $version = '1.0.8';
|
||||
|
||||
// Protected vars
|
||||
protected $parent;
|
||||
public $extension_url;
|
||||
public $extension_dir;
|
||||
public static $theInstance;
|
||||
public static $ext_url;
|
||||
public $field_id = '';
|
||||
public $field = array();
|
||||
public $opt_name = '';
|
||||
|
||||
/**
|
||||
* Class Constructor. Defines the args for the extions class
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @access public
|
||||
* @param array $parent Parent settings.
|
||||
* @return void
|
||||
*/
|
||||
public function __construct( $parent ) {
|
||||
|
||||
$redux_ver = ReduxFramework::$_version;
|
||||
|
||||
// Set parent object
|
||||
$this->parent = $parent;
|
||||
|
||||
// Set extension dir
|
||||
if ( empty( $this->extension_dir ) ) {
|
||||
$this->extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) );
|
||||
$this->extension_url = site_url( str_replace( trailingslashit( str_replace( '\\', '/', ABSPATH ) ), '', $this->extension_dir ) );
|
||||
self::$ext_url = $this->extension_url;
|
||||
}
|
||||
|
||||
// Set field name
|
||||
$this->field_name = 'social_profiles';
|
||||
|
||||
// Set instance
|
||||
self::$theInstance = $this;
|
||||
|
||||
// Adds the local field
|
||||
add_filter( 'redux/'.$this->parent->args['opt_name'].'/field/class/'. $this->field_name, array( &$this, 'overload_field_path' ) );
|
||||
|
||||
include_once('social_profiles/inc/defaults.php');
|
||||
include_once('social_profiles/inc/class.functions.php');
|
||||
|
||||
reduxSocialProfilesFunctions::init($parent);
|
||||
|
||||
$this->field = reduxSocialProfilesFunctions::getField($parent);
|
||||
//var_dump($this->field);
|
||||
//die();
|
||||
$this->field_id = $this->field['id'];
|
||||
$this->opt_name = $parent->args['opt_name'];
|
||||
|
||||
$upload_dir = reduxSocialProfilesFunctions::$upload_dir;
|
||||
|
||||
if (!is_dir($upload_dir)) {
|
||||
$parent->filesystem->execute('mkdir', $upload_dir );
|
||||
}
|
||||
|
||||
if (!class_exists('reduxLoadSocialWidget')) {
|
||||
$enable = apply_filters('redux/extensions/social_profiles/' . $this->opt_name . '/widget/enable', true);
|
||||
|
||||
if ($enable) {
|
||||
include_once('social_profiles/inc/widget.php');
|
||||
new reduxLoadSocialWidget($parent, $this->field_id);
|
||||
}
|
||||
}
|
||||
|
||||
if (!class_exists('reduxSocialProfilesShortcode')) {
|
||||
$enable = apply_filters('redux/extensions/social_profiles/' . $this->opt_name . '/shortcode/enable', true);
|
||||
|
||||
if ($enable) {
|
||||
include_once('social_profiles/inc/shortcode.php');
|
||||
new reduxSocialProfilesShortcode($parent, $this->field_id);
|
||||
}
|
||||
}
|
||||
|
||||
add_action ( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) );
|
||||
|
||||
add_filter("redux/options/{$this->parent->args['opt_name']}/defaults", array($this, 'set_defaults'));
|
||||
add_action('redux/validate/' . $this->parent->args['opt_name'] . '/before_validation', array($this, 'save_me'), 0, 3);
|
||||
add_filter('redux/metaboxes/save/before_validate', array($this,'save_me'), 0, 3);
|
||||
|
||||
// Reset hooks
|
||||
add_action('redux/validate/' . $this->parent->args['opt_name'] . '/defaults', array($this, 'reset_defaults'), 0, 3);
|
||||
add_action('redux/validate/' . $this->parent->args['opt_name'] . '/defaults_section', array($this, 'reset_defaults_section'), 0, 3);
|
||||
|
||||
}
|
||||
|
||||
public function reset_defaults_section($defaults = array()) {
|
||||
|
||||
$curTab = $_COOKIE['redux_current_tab'];
|
||||
$tabNum = $this->parent->field_sections['social_profiles'][$this->field_id];
|
||||
|
||||
if ($curTab == $tabNum) {
|
||||
|
||||
if (!empty($this->field_id) && isset($this->parent->options_defaults[$this->field_id]) /* && !empty($this->parent->options_defaults[$this->field_id]) */) {
|
||||
$data = reduxSocialProfilesFunctions::get_default_data();
|
||||
|
||||
reduxSocialProfilesFunctions::write_data_file($data);
|
||||
}
|
||||
}
|
||||
|
||||
$defaults[$this->field_id] = reduxSocialProfilesFunctions::read_data_file();
|
||||
|
||||
return $defaults;
|
||||
}
|
||||
|
||||
public function reset_defaults($defaults = array()){
|
||||
if (!empty($this->field_id) && isset($this->parent->options_defaults[$this->field_id]) /*&& !empty($this->parent->options_defaults[$this->field_id])*/) {
|
||||
$data = reduxSocialProfilesFunctions::get_default_data();
|
||||
|
||||
reduxSocialProfilesFunctions::write_data_file($data);
|
||||
|
||||
$defaults[$this->field_id] = $data;
|
||||
}
|
||||
|
||||
return $defaults;
|
||||
}
|
||||
|
||||
public function set_defaults($defaults = array()) {
|
||||
if (empty($this->field_id)) {
|
||||
return $defaults;
|
||||
}
|
||||
|
||||
$comp_file = reduxSocialProfilesFunctions::get_data_path();
|
||||
|
||||
if (!file_exists($comp_file)){
|
||||
$data = reduxSocialProfilesFunctions::get_default_data();
|
||||
|
||||
reduxSocialProfilesFunctions::write_data_file($data);
|
||||
|
||||
$this->parent->options[$this->field_id] = $data;
|
||||
}
|
||||
|
||||
return $defaults;
|
||||
}
|
||||
|
||||
public function save_me($saved_options = array(), $changed_values = array()) {
|
||||
|
||||
if (empty($this->field)) {
|
||||
$this->field = reduxSocialProfilesFunctions::getField();
|
||||
$this->field_id = $this->field['id'];
|
||||
}
|
||||
|
||||
if ( !isset( $saved_options[$this->field_id] ) || empty( $saved_options[$this->field_id] ) || ( is_array( $saved_options[$this->field_id] ) && $changed_values == $saved_options ) || !array_key_exists ( $this->field_id, $saved_options ) ) {
|
||||
return $saved_options;
|
||||
}
|
||||
|
||||
// We'll use the reset hook instead
|
||||
if ( ! empty( $saved_options['defaults'] ) || !empty( $saved_options['defaults-section'] ) ) {
|
||||
return $saved_options;
|
||||
}
|
||||
|
||||
$first_value = reset($saved_options[$this->field_id]); // First Element's Value
|
||||
|
||||
if ( isset( $first_value['data'] ) ) {
|
||||
$raw_data = $saved_options[$this->field_id];
|
||||
|
||||
$save_data = array();
|
||||
|
||||
// Enum through saved data
|
||||
foreach($raw_data as $id => $val) {
|
||||
if (is_array($val)) {
|
||||
if (!isset($val['data'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$data = json_decode(rawurldecode($val['data']),true);
|
||||
|
||||
$save_data[] = array(
|
||||
'id' => $data['id'],
|
||||
'icon' => $data['icon'],
|
||||
'enabled' => $data['enabled'],
|
||||
'url' => $data['url'],
|
||||
'color' => $data['color'],
|
||||
'background' => $data['background'],
|
||||
'order' => $data['order'],
|
||||
'name' => $data['name'],
|
||||
'label' => $data['label'],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$save_file = false;
|
||||
|
||||
if ( !isset( $old_options[$this->field_id] ) || ( isset( $old_options[$this->field_id] ) && !empty( $old_options[$this->field_id] ) ) ) {
|
||||
$save_file = true;
|
||||
}
|
||||
|
||||
if ( !empty( $old_options[$this->field_id] ) && $saved_options[$this->field_id] != $old_options[$this->field_id] ) {
|
||||
$save_file = true;
|
||||
}
|
||||
|
||||
if ($save_file) {
|
||||
reduxSocialProfilesFunctions::write_data_file($save_data);
|
||||
}
|
||||
//print_r($save_data);
|
||||
//die;
|
||||
$saved_options[$this->field_id] = $save_data;
|
||||
}
|
||||
|
||||
return $saved_options;
|
||||
}
|
||||
|
||||
public function enqueue_styles() {
|
||||
// Set up min files for dev_mode = false.
|
||||
$min = Redux_Functions::isMin();
|
||||
|
||||
// font-awesome
|
||||
wp_enqueue_style(
|
||||
'font-awesome',
|
||||
$this->extension_url . 'social_profiles/vendor/font-awesome' . $min . '.css',
|
||||
array(),
|
||||
time()
|
||||
);
|
||||
|
||||
// Field CSS
|
||||
wp_enqueue_style(
|
||||
'redux-field-social-profiles-frontend-css',
|
||||
$this->extension_url . 'social_profiles/css/field_social_profiles_frontend.css',
|
||||
array(),
|
||||
time()
|
||||
);
|
||||
}
|
||||
|
||||
static public function getInstance() {
|
||||
return self::$theInstance;
|
||||
}
|
||||
|
||||
static public function getExtURL() {
|
||||
return self::$ext_url;
|
||||
}
|
||||
|
||||
// Forces the use of the embeded field path vs what the core typically would use
|
||||
public function overload_field_path($field) {
|
||||
return dirname(__FILE__).'/'.$this->field_name.'/field_'.$this->field_name.'.php';
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists ( 'redux_social_profile_value_from_id' )) {
|
||||
/**
|
||||
* Returns social profile value from passed profile ID.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @access public
|
||||
* @param string $opt_name Redux Framework opt_name.
|
||||
* @param string $id Profile ID.
|
||||
* @param string $value Spcial profile value to return (icon, name, background, color, url, or order)
|
||||
* @return string Returns HTML string when $echo is set to false. Otherwise true.
|
||||
*/
|
||||
function redux_social_profile_value_from_id($opt_name, $id, $value) {
|
||||
if ( empty( $opt_name ) || empty( $id ) || empty( $value ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$redux = ReduxFrameworkInstances::get_instance( $opt_name );
|
||||
$social_profiles = $redux->extensions['social_profiles'];
|
||||
|
||||
$redux_options = get_option($social_profiles->opt_name);
|
||||
$settings = $redux_options[$social_profiles->field_id];
|
||||
|
||||
foreach($settings as $idx =>$arr) {
|
||||
if ($arr['id'] == $id) {
|
||||
if ($arr['enabled']) {
|
||||
if (isset($arr[$value])) {
|
||||
return $arr[$value];
|
||||
}
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists ( 'redux_render_icon_from_id' )) {
|
||||
/**
|
||||
* Renders social icon from passed profile ID.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @access public
|
||||
* @param string $opt_name Redux Framework opt_name.
|
||||
* @param string $id Profile ID.
|
||||
* @param boolean $echo Echos icon HTML when true. Returns icon HTML when false
|
||||
* @return string Returns HTML string when $echo is set to false. Otherwise true.
|
||||
*/
|
||||
function redux_render_icon_from_id($opt_name, $id, $echo = true, $a_class = '') {
|
||||
if ( empty( $opt_name ) || empty( $id ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
include_once('social_profiles/inc/class.functions.php');
|
||||
|
||||
$redux = ReduxFrameworkInstances::get_instance( $opt_name );
|
||||
$social_profiles = $redux->extensions['social_profiles'];
|
||||
|
||||
$redux_options = get_option($social_profiles->opt_name);
|
||||
$settings = $redux_options[$social_profiles->field_id];
|
||||
|
||||
foreach($settings as $idx =>$arr) {
|
||||
if ($arr['id'] == $id) {
|
||||
if ($arr['enabled']) {
|
||||
|
||||
if ($echo) {
|
||||
echo '<a class="' . $a_class . '" href="' . $arr['url'] . '">';
|
||||
reduxSocialProfilesFunctions::render_icon($arr['icon'], $arr['color'], $arr['background'],'', true);
|
||||
echo '</a>';
|
||||
|
||||
return true;
|
||||
} else {
|
||||
$html = '<a class="' . $a_class . '"href="' . $arr['url'] . '">';
|
||||
|
||||
$html .= reduxSocialProfilesFunctions::render_icon($arr['icon'], $arr['color'], $arr['background'],'', false);
|
||||
$html .= '</a>';
|
||||
|
||||
return $html;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user