File: /var/www/clients/client0/web20/web/wp-content/themes/bridge/framework/qode-framework.php
<?php
require_once QODE_FRAMEWORK_ROOT_DIR . "/lib/qode.welcome.page.php";
require_once("lib/qode.layout.php");
require_once("lib/qode.layout.tax.php");
require_once("lib/qode.optionsapi.inc");
require_once("lib/qode.framework.php");
require_once("lib/qode.functions.php");
require_once("lib/qode.common.php");
require_once("lib/qode.icons/qode.icons.php");
require_once("lib/google-fonts.php");
require_once("admin/options/qode-options-setup.php");
require_once("admin/meta-boxes/qode-meta-boxes-setup.php");
require_once("modules/qode-modules-loader.php");
/**
* Register styles and scripts
*/
function qode_admin_scripts_init() {
wp_register_style('qodef-bootstrap', get_template_directory_uri().'/framework/admin/assets/css/qodef-bootstrap.css');
wp_register_style('qodef-page-admin', get_template_directory_uri().'/framework/admin/assets/css/qodef-page.css');
wp_register_style('qodef-options-admin', get_template_directory_uri().'/framework/admin/assets/css/qodef-options.css');
wp_register_style('qodef-meta-boxes-admin', get_template_directory_uri().'/framework/admin/assets/css/qodef-meta-boxes.css');
wp_register_style('qodef-ui-admin', get_template_directory_uri().'/framework/admin/assets/css/qodef-ui/qodef-ui.css');
wp_register_style('qodef-forms-admin', get_template_directory_uri().'/framework/admin/assets/css/qodef-forms.css');
wp_register_style('font-awesome-admin', get_template_directory_uri().'/framework/admin/assets/css/font-awesome/css/font-awesome.min.css');
wp_register_style('select2', get_template_directory_uri().'/framework/admin/assets/css/select2.min.css');
wp_register_script('bootstrap.min', get_template_directory_uri().'/framework/admin/assets/js/bootstrap.min.js');
wp_register_script("select2", get_template_directory_uri().'/framework/admin/assets/js/select2.min.js', array(), false, true);
wp_register_script('jquery.nouislider.min', get_template_directory_uri().'/framework/admin/assets/js/qodef-ui/jquery.nouislider.min.js');
wp_register_script('qodef-ui-admin', get_template_directory_uri().'/framework/admin/assets/js/qodef-ui/qodef-ui.js');
wp_register_script('qodef-ui-repeater', get_template_directory_uri().'/framework/admin/assets/js/qodef-ui/qodef-ui-repeater.js', array(), false, true);
wp_enqueue_script("qodef-twitter-connect", get_template_directory_uri().'/framework/admin/assets/js/qodef-twitter-connect.js', array(), false, true);
wp_enqueue_script("qodef-instagram", get_template_directory_uri().'/framework/admin/assets/js/qodef-instagram.js', array(), false, true);
//This part is required for field type address
$enable_google_map_in_admin = apply_filters('qode_google_maps_in_backend', false);
if($enable_google_map_in_admin) {
//include google map api script
$google_maps_api_key = qode_options()->getOptionValue( 'google_maps_api_key' );
$google_maps_extensions = '';
$google_maps_extensions_array = apply_filters( 'qode_google_maps_extensions_array', array() );
if ( ! empty( $google_maps_extensions_array ) ) {
$google_maps_extensions .= '&libraries=';
$google_maps_extensions .= implode( ',', $google_maps_extensions_array );
}
if ( ! empty( $google_maps_api_key ) ) {
wp_enqueue_script( 'qodef-admin-maps', '//maps.googleapis.com/maps/api/js?key=' . esc_attr( $google_maps_api_key ) . $google_maps_extensions, array(), false, true );
wp_enqueue_script( 'jquery.geocomplete', get_template_directory_uri() . '/framework/admin/assets/js/jquery.geocomplete.min.js', array('qodef-admin-maps'), false, true );
}
}
do_action( 'qode_action_admin_scripts_init' );
}
add_action('admin_init', 'qode_admin_scripts_init');
/**
* Enqueue styles and scripts for admin page
*/
function enqueue_admin_styles() {
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_style('qodef-bootstrap');
wp_enqueue_style('select2');
wp_enqueue_style('qodef-page-admin');
wp_enqueue_style('qodef-options-admin');
wp_enqueue_style('qodef-ui-admin');
wp_enqueue_style('jquery.nouislider.min');
wp_enqueue_style('qodef-forms-admin');
wp_enqueue_style('font-awesome-admin');
}
function enqueue_admin_scripts() {
wp_enqueue_script('underscore'); //underscore
wp_enqueue_script('wp-color-picker'); //colorpicker
wp_enqueue_script('bootstrap.min');
wp_enqueue_script('select2');
wp_enqueue_media();
wp_enqueue_script('jquery.nouislider.min');
wp_enqueue_script('qodef-ui-admin');
wp_enqueue_script('qodef-ui-repeater');
}
function enqueue_meta_box_styles() {
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_style('qodef-bootstrap');
wp_enqueue_style('select2');
wp_enqueue_style('qodef-page-admin');
wp_enqueue_style('qodef-meta-boxes-admin');
wp_enqueue_style('qodef-ui-admin');
wp_enqueue_style('jquery.nouislider.min');
wp_enqueue_style('qodef-forms-admin');
wp_enqueue_style('font-awesome-admin');
}
function enqueue_meta_box_scripts() {
wp_enqueue_script('underscore'); //underscore
wp_enqueue_script('wp-color-picker'); //colorpicker
wp_enqueue_script('bootstrap.min');
wp_enqueue_script('select2');
wp_enqueue_media();
wp_enqueue_script('jquery-ui-sortable');
wp_enqueue_script('jquery.nouislider.min');
wp_enqueue_script('qodef-ui-admin');
wp_enqueue_script('qodef-ui-repeater');
}
global $qode_options_proya;
$qode_options_proya = get_option('qode_options_proya');
function init_qode_theme_options() {
global $qode_options_proya;
global $qodeFramework;
if(isset($qode_options_proya['reset_to_defaults'])){
if( $qode_options_proya['reset_to_defaults'] == 'yes' ) delete_option( "qode_options_proya");
}
if (! get_option("qode_options_proya")) {
add_option( "qode_options_proya",
$qodeFramework->qodeOptions->options
);
$qode_options_proya = $qodeFramework->qodeOptions->options;
}
}
function qode_theme_menu() {
global $qodeFramework;
init_qode_theme_options();
$page_hook_suffix = add_menu_page(
'Qode Options', // The value used to populate the browser's title bar when the menu page is active
'Qode Options', // The text of the menu in the administrator's sidebar
'administrator', // What roles are able to access the menu
'qode_theme_menu', // The ID used to bind submenu items to this menu
'qode_theme_display' // The callback function used to render this menu
);
foreach ($qodeFramework->qodeOptions->adminPages as $key=>$value ) {
$slug = "";
if (!empty($value->slug)) $slug = "_tab".$value->slug;
$subpage_hook_suffix = add_submenu_page(
'qode_theme_menu',
'Qode Options - '.$value->title, // The value used to populate the browser's title bar when the menu page is active
$value->title, // The text of the menu in the administrator's sidebar
'administrator', // What roles are able to access the menu
'qode_theme_menu'.$slug, // The ID used to bind submenu items to this menu
'qode_theme_display' // The callback function used to render this menu
);
add_action('admin_print_scripts-'.$subpage_hook_suffix, 'enqueue_admin_scripts');
add_action('admin_print_styles-'.$subpage_hook_suffix, 'enqueue_admin_styles');
};
add_action('admin_print_scripts-'.$page_hook_suffix, 'enqueue_admin_scripts');
add_action('admin_print_styles-'.$page_hook_suffix, 'enqueue_admin_styles');
}
add_action( 'admin_menu', 'qode_theme_menu' );
function qode_theme_import_menu() {
global $qodeFramework;
init_qode_theme_options();
$page_hook_suffix = add_menu_page(
'Qode Import', // The value used to populate the browser's title bar when the menu page is active
'Qode Import', // The text of the menu in the administrator's sidebar
'administrator', // What roles are able to access the menu
'qode_options_import_page', // The ID used to bind submenu items to this menu
'qode_theme_import_display', // The callback function used to render this menu
'dashicons-download'
);
add_action('admin_print_scripts-'.$page_hook_suffix, 'enqueue_admin_scripts');
add_action('admin_print_styles-'.$page_hook_suffix, 'enqueue_admin_styles');
}
add_action( 'admin_menu', 'qode_theme_import_menu' );
if(!function_exists('qode_add_theme_options_toolbar')) {
/**
* Adds a link to Qode Options in toolbar for easier access
* @param $wp_admin_bar WP_Admin_Bar instance
*/
function qode_add_theme_options_toolbar($wp_admin_bar) {
if(!is_admin()) {
$args = array(
'id' => 'qode_theme_menu',
'title' => 'Qode Options',
'href' => admin_url('admin.php?page=qode_theme_menu'),
'parent' => 'site-name'
);
$wp_admin_bar->add_node($args);
}
}
add_action('admin_bar_menu', 'qode_add_theme_options_toolbar', 999);
}
function register_qode_theme_settings() {
register_setting( 'qode_theme_menu', 'qode_options' );
}
add_action('admin_init', 'register_qode_theme_settings');
function strafter($string, $substring) {
$pos = strpos($string, $substring);
if ($pos === false)
return NULL;
else
return(substr($string, $pos+strlen($substring)));
}
function qode_get_admin_tab(){
return isset($_GET['page']) ? strafter($_GET['page'],'tab') : NULL;
}
function qodef_save_options() {
global $qode_options_proya;
global $qodeFramework;
if(current_user_can('administrator')){
$_REQUEST = stripslashes_deep($_REQUEST);
check_ajax_referer('qode_ajax_save_nonce', 'qode_ajax_save_nonce');
foreach ($qodeFramework->qodeOptions->options as $key => $value) {
if (isset($_REQUEST[$key])) {
$qode_options_proya[$key] = $_REQUEST[$key];
}
}
update_option('qode_options_proya', $qode_options_proya);
do_action('qode_after_theme_option_save');
echo "Saved";
die();
}
}
add_action('wp_ajax_qodef_save_options', 'qodef_save_options');
function qode_theme_display() {
global $qodeFramework;
$tab = qode_get_admin_tab();
$active_page = $qodeFramework->qodeOptions->getAdminPageFromSlug($tab);
if ($active_page == null) return;
?>
<div class="qodef-options-page qodef-page">
<div class="qodef-page-header page-header clearfix">
<img src="<?php echo get_template_directory_uri() . '/framework/admin/assets/img/qode-logo.png' ?>" alt="qode_logo" class="qodef-header-logo pull-left"/>
<?php $current_theme = wp_get_theme(); ?>
<h2 class="qodef-page-title pull-left">
<?php echo $current_theme->get('Name'); ?>
<small><?php echo $current_theme->get('Version') ?></small>
</h2>
<?php if($active_page->slug != '_importexport') { ?>
<div class="pull-right"> <input type="button" id="qode_top_save_button" class="btn btn-primary btn-sm pull-right" value="<?php _e('Save Changes', 'qode'); ?>"/></div>
<?php } ?>
</div> <!-- close div.qodef-page-header -->
<div class="qodef-page-content-wrapper">
<div class="qodef-page-content">
<div class="qodef-page-navigation qodef-tabs-wrapper vertical left clearfix">
<div class="qodef-tabs-navigation-wrapper">
<ul class="nav nav-tabs">
<?php
foreach ($qodeFramework->qodeOptions->adminPages as $key=>$page ) {
$slug = "";
if (!empty($page->slug)) $slug = "_tab".$page->slug;
$icon = $page->icon;
?>
<li <?php if ($page->slug == $tab) echo "class=\"active\""; ?>>
<a href="<?php echo get_admin_url(); ?>admin.php?page=qode_theme_menu<?php echo $slug; ?>">
<i class="fa fa-<?php echo $icon; ?> qodef-tooltip qodef-inline-tooltip left" data-placement="top" data-toggle="tooltip" title="<?php echo $page->title; ?>"></i>
<span><?php echo $page->title; ?></span>
</a>
</li>
<?php } ?>
</ul>
</div> <!-- close div.qodef-tabs-navigation-wrapper -->
<div class="qodef-tabs-content">
<div class="tab-content">
<?php
foreach ($qodeFramework->qodeOptions->adminPages as $key=>$page ) {
if ($page->slug == $tab) {
?>
<div class="tab-pane fade<?php if ($page->slug == $tab) echo " in active"; ?>" id="<?php echo $key; ?>">
<div class="qodef-tab-content">
<h2 class="qodef-page-title"><?php echo $page->title; ?></h2>
<?php if($page->slug == '_importexport') { ?>
<form method="post" class="qode_import_export_ajax_form">
<div class="qodef-page-form">
<?php $page->render(); ?>
</div>
</form>
<?php } else { ?>
<form method="post" class="qode_ajax_form">
<?php wp_nonce_field("qode_ajax_save_nonce","qode_ajax_save_nonce") ?>
<div class="qodef-page-form">
<?php $page->render(); ?>
<div class="form-button-section clearfix">
<div class="qodef-input-change">You should save your changes</div>
<div class="qodef-changes-saved">All your changes are successfully saved</div>
<div class="form-buttom-section-holder" id="anchornav">
<div class="form-button-section-inner clearfix" >
<div class="container-fluid">
<div class="row">
<div class="col-lg-10">
<ul class="pull-left">
<li>Scroll To:</li>
<?php
foreach ($page->layout as $key=>$panel ) {
?>
<li><a href="#qodef_<?php echo $panel->name; ?>"><?php echo $panel->title; ?></a></li>
<?php
}
?>
</ul>
</div>
<div class="col-lg-2">
<input type="submit" class="btn btn-primary btn-sm pull-right" value="<?php _e('Save Changes', 'qode'); ?>"/>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
<?php } ?>
</div><!-- close qodef-tab-content -->
</div>
<?php
}
}
?>
</div>
</div> <!-- close div.qodef-tabs-content -->
</div> <!-- close div.qodef-page-navigation -->
</div> <!-- close div.qodef-page-content -->
</div> <!-- close div.qodef-page-content-wrapper -->
</div> <!-- close div.qode-options-page -->
<?php }
function qode_theme_import_display() {
$importObject = Qode_Import::getInstance();
$demos = $importObject->demos_import_list();
?>
<div class="qodef-options-page qodef-page">
<div class="qodef-page-header page-header clearfix">
<img src="<?php echo get_template_directory_uri() . '/framework/admin/assets/img/qode-logo.png' ?>" alt="qode_logo" class="qodef-header-logo pull-left"/>
<?php $current_theme = wp_get_theme(); ?>
<h2 class="qodef-page-title pull-left">
<?php echo $current_theme->get('Name'); ?>
<small><?php echo $current_theme->get('Version') ?></small>
</h2>
</div> <!-- close div.qodef-page-header -->
<div class="qodef-page qodef-page-info">
<div class="qodef-page-content">
<h2 class="qodef-page-title"><?php esc_html_e('Bridge - One-Click Import', 'qode') ?></h2>
<form method="post" id="importContentForm">
<div class="qodef-page-form">
<div class="qodef-page-form-section-holder clearfix">
<h3 class="qodef-page-section-title">Import Demo Content</h3>
<div class="qodef-page-form-section">
<div class="qodef-field-desc">
<h4><?php esc_html_e('Demo Site', 'qode'); ?></h4>
<p>Choose demo site you want to import</p>
</div>
<div class="qodef-section-content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-3">
<select name="import_example" id="import_example" class="form-control qodef-form-element">
<?php foreach ($demos as $demo => $value) { ?>
<option value="<?php echo esc_attr($demo); ?>"><?php echo esc_html($value['title']); ?></option>
<?php } ?>
</select>
</div>
</div>
<div class="row next-row">
<div class="col-lg-3">
<img id="demo_site_img" src="#" alt="demo site" />
</div>
<div class="col-lg-6">
<div id="qode-required-plugins"></div>
</div>
</div>
</div>
</div>
</div>
<div class="qodef-page-form-section" >
<div class="qodef-field-desc">
<h4><?php esc_html_e('Import Type', 'qode'); ?></h4>
<p>Choose if you would like to import all or specific content</p>
</div>
<div class="qodef-section-content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-3">
<select name="import_option" id="import_option" class="form-control qodef-form-element">
<option value="">Please Select</option>
<option value="complete_content">All</option>
<option value="content">Content</option>
<option value="widgets">Widgets</option>
<option value="options">Options</option>
</select>
</div>
</div>
</div>
</div>
</div>
<div class="qodef-page-form-section" >
<div class="qodef-field-desc">
<h4><?php esc_html_e('Import attachments', 'qode'); ?></h4>
<p>Do you want to import media files?</p>
</div>
<div class="qodef-section-content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-3">
<input type="checkbox" value="1" class="qodef-form-element" name="import_attachments" id="import_attachments" />
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<div class="form-button-section clearfix">
<input type="submit" class="btn btn-primary btn-sm " value="Import" name="import" id="import_demo_data" />
</div>
</div>
</div>
<div class="row">
<div class="col-lg-3"></div>
</div>
<div class="import_load"><span><?php _e('The import process may take some time. Please be patient.', 'qode') ?> </span><br />
<div class="qode-progress-bar-wrapper html5-progress-bar">
<div class="progress-bar-wrapper">
<progress id="progressbar" value="0" max="100"></progress>
</div>
<div class="progress-value">0%</div>
<div class="progress-bar-message">
</div>
</div>
</div>
<div class="alert alert-warning">
<strong><?php _e('Important notes:', 'qode') ?></strong>
<ul>
<li><?php _e('Delete all menus from Appearance > Menus before importing a new demo.', 'qode'); ?></li>
<li><?php _e('All options will be overwritten by the options for the demo you are importing.', 'qode'); ?></li>
<li><?php _e('Please note that import process will take time needed to download all attachments from demo web site.', 'qode'); ?></li>
<li><?php _e('If you plan to use shop, please install WooCommerce before you run import.', 'qode');?></li>
</ul>
</div>
<!-- <div class="success_msg alert" id="success_msg" >--><?php //echo $this->message; ?><!--</div>-->
</div>
</div>
</form>
</div> <!-- close div.qodef-page-content -->
</div> <!-- close div.qodef-page-content-wrapper -->
</div> <!-- close div.qode-options-page -->
<?php }
if ( ! function_exists( 'qode_meta_box_add' ) ) {
function qode_meta_box_add() {
global $qodeFramework;
foreach ($qodeFramework->qodeMetaBoxes->metaBoxes as $key=>$box ) {
$hidden = false;
if (!empty($box->hidden_property)){
foreach ($box->hidden_values as $value) {
if (qodef_option_get_value($box->hidden_property)==$value)
$hidden = true;
}
}
add_meta_box(
'qodef-meta-box-'.$key,
$box->title,
'qodef_render_meta_box',
$box->scope,
'advanced',
'high',
array( 'box' => $box)
);
if ($hidden) {
if(is_array($box->scope)){
foreach($box->scope as $scope){
add_filter( 'postbox_classes_'.$scope.'_qodef-meta-box-'.$key, 'qode_meta_box_add_hidden_class' );
}
} else {
add_filter( 'postbox_classes_'.$box->scope.'_qodef-meta-box-'.$key, 'qode_meta_box_add_hidden_class' );
}
}
}
if ( qode_is_gutenberg_installed() || qode_is_wp_gutenberg_installed() ) {
enqueue_meta_box_styles();
enqueue_meta_box_scripts();
} else {
add_action('admin_enqueue_scripts', 'enqueue_meta_box_styles');
add_action('admin_enqueue_scripts', 'enqueue_meta_box_scripts');
}
}
add_action('add_meta_boxes', 'qode_meta_box_add');
}
function qode_meta_box_save( $post_id, $post ) {
global $qodeFramework;
$nonces_array = array();
$meta_boxes = qode_framework()->qodeMetaBoxes->getMetaBoxesByScope( $post->post_type );
if ( is_array( $meta_boxes ) && count( $meta_boxes ) ) {
foreach ( $meta_boxes as $meta_box ) {
$nonces_array[] = 'qode_meta_box_' . $meta_box->name . '_save';
}
}
if ( is_array( $nonces_array ) && count( $nonces_array ) ) {
foreach ( $nonces_array as $nonce ) {
if ( ! isset( $_POST[ $nonce ] ) || ! wp_verify_nonce( $_POST[ $nonce ], $nonce ) ) {
return;
}
}
}
$postTypes = apply_filters('qode_meta_box_post_types_save', array("page", "post", "portfolio_page", "testimonials", "slides", "carousels","masonry_gallery"));
//add product post type into array if woocommerce is installed
if(qode_is_woocommerce_installed()){
array_push($postTypes, "product");
}
if ( !isset( $_POST[ '_wpnonce' ] ))
return;
if ( !current_user_can( 'edit_post', $post_id ) )
return;
if ( ! in_array( $post->post_type, $postTypes ) )
return;
foreach ($qodeFramework->qodeMetaBoxes->options as $key=>$box ) {
if ( isset( $_POST[ $key ] ) && trim( $_POST[ $key ] !== '') ) {
$value = $_POST[ $key ];
// Auto-paragraphs for any WYSIWYG
update_post_meta( $post_id, $key, $value );
} else {
delete_post_meta( $post_id, $key );
}
}
$portfolios = false;
if (isset($_POST['optionLabel'])) {
foreach ($_POST['optionLabel'] as $key => $value) {
$portfolios_val[$key] = array('optionLabel'=>$value,'optionValue'=>$_POST['optionValue'][$key],'optionUrl'=>$_POST['optionUrl'][$key],'optionlabelordernumber'=>$_POST['optionlabelordernumber'][$key]);
$portfolios = true;
}
}
if ($portfolios) {
update_post_meta( $post_id, 'qode_portfolios', $portfolios_val );
} else {
delete_post_meta( $post_id, 'qode_portfolios' );
}
$portfolio_images = false;
if (isset($_POST['portfolioimg'])) {
foreach ($_POST['portfolioimg'] as $key => $value) {
$portfolio_images_val[$key] = array('portfolioimg'=>$_POST['portfolioimg'][$key],'portfoliotitle'=>$_POST['portfoliotitle'][$key],'portfolioimgordernumber'=>$_POST['portfolioimgordernumber'][$key], 'portfoliovideotype'=>$_POST['portfoliovideotype'][$key], 'portfoliovideoid'=>$_POST['portfoliovideoid'][$key], 'portfoliovideoimage'=>$_POST['portfoliovideoimage'][$key], 'portfoliovideowebm'=>$_POST['portfoliovideowebm'][$key], 'portfoliovideomp4'=>$_POST['portfoliovideomp4'][$key], 'portfoliovideoogv'=>$_POST['portfoliovideoogv'][$key], 'portfolioimgtype'=>$_POST['portfolioimgtype'][$key] );
$portfolio_images = true;
}
}
if ($portfolio_images) {
update_post_meta( $post_id, 'qode_portfolio_images', $portfolio_images_val );
} else {
delete_post_meta( $post_id, 'qode_portfolio_images' );
}
}
add_action( 'save_post', 'qode_meta_box_save', 1, 2 );
function qodef_render_meta_box($post, $metabox) {?>
<div class="qodef-meta-box qodef-page">
<div class="qodef-meta-box-holder">
<?php $metabox["args"]["box"]->render(); ?>
<?php wp_nonce_field( 'qode_meta_box_' . $metabox['args']['box']->name . '_save', 'qode_meta_box_' . $metabox['args']['box']->name . '_save' ); ?>
</div>
</div>
<?php
}
function qode_meta_box_add_hidden_class( $classes=array() ) {
if( !in_array( 'qodef-meta-box-hidden', $classes ) )
$classes[] = 'qodef-meta-box-hidden';
return $classes;
}
/**
* Remove the default Custom Fields meta box
*/
function removeDefaultCustomFields() {
foreach ( array( 'normal', 'advanced', 'side' ) as $context ) {
foreach ( apply_filters('qode_meta_box_post_types_remove', array("page", "post", "portfolio_page", "testimonials", "slides", "carousels")) as $postType ) {
remove_meta_box( 'postcustom', $postType, $context );
}
}
}
add_action('do_meta_boxes','removeDefaultCustomFields');
if(!function_exists('qode_admin_notice')) {
/**
* Prints admin notice. It checks if notice has been disabled and if it hasn't then it displays it
* @param $id string id of notice. It will be used to store notice dismis
* @param $message string message to show to the user
* @param $class string HTML class of notice
* @param bool $is_dismisable whether notice is dismisable or not
*/
function qode_admin_notice($id, $message, $class, $is_dismisable = true) {
$is_dismised = get_user_meta(get_current_user_id(), 'dismis_'.$id);
//if notice isn't dismissed
if(!$is_dismised && is_admin()) {
echo '<div style="display: block;" class="'.esc_attr($class).' is-dismissible notice">';
echo '<p>';
echo wp_kses_post($message);
if($is_dismisable) {
echo '<strong style="display: block; margin-top: 7px;"><a href="'.esc_url(add_query_arg('qode_dismis_notice', $id)).'">'.__('Dismiss this notice', 'qode').'</a></strong>';
}
echo '</p>';
echo '</div>';
}
}
}
if(!function_exists('qode_save_dismisable_notice')) {
/**
* Updates user meta with dismisable notice. Hooks to admin_init action
* in order to check this on every page request in admin
*/
function qode_save_dismisable_notice() {
if(is_admin() && !empty($_GET['qode_dismis_notice'])) {
$notice_id = sanitize_key($_GET['qode_dismis_notice']);
$current_user_id = get_current_user_id();
update_user_meta($current_user_id, 'dismis_'.$notice_id, 1);
}
}
add_action('admin_init', 'qode_save_dismisable_notice');
}
if(!function_exists('qode_enqueue_style_scripts_slider_taxonomy')) {
/**
* Enqueue style and scripts when on slider taxonomy page in admin
*/
function qode_enqueue_style_scripts_slider_taxonomy() {
if(isset($_GET['taxonomy']) && $_GET['taxonomy'] == 'slides_category') {
wp_enqueue_style('qodef-slider-category', get_template_directory_uri().'/framework/admin/assets/css/qodef-slider-category.css');
wp_enqueue_script('qodef-slider-category', get_template_directory_uri().'/framework/admin/assets/js/qodef-slider-category.js');
}
}
add_action('admin_print_scripts-edit-tags.php', 'qode_enqueue_style_scripts_slider_taxonomy');
}
if(!function_exists('qode_enqueue_nav_menu_script')) {
/**
* Function that enqueues styles and scripts necessary for menu administration page.
* It checks $hook variable
* @param $hook string current page hook to check
*/
function qode_enqueue_nav_menu_script($hook) {
if($hook == 'nav-menus.php') {
wp_enqueue_script('qodef-nav-menu', get_template_directory_uri().'/framework/admin/assets/js/qodef-nav-menu.js');
wp_enqueue_style('qodef-nav-menu', get_template_directory_uri().'/framework/admin/assets/css/qodef-nav-menu.css');
}
}
add_action('admin_enqueue_scripts', 'qode_enqueue_nav_menu_script');
}
if(!function_exists('qode_generate_icon_pack_options')) {
/**
* Generates options HTML for each icon in given icon pack
* Hooked to wp_ajax_update_admin_nav_icon_options action
*/
function qode_generate_icon_pack_options() {
global $qodeIconCollections;
$html = '';
$icon_pack = isset($_POST['icon_pack']) ? $_POST['icon_pack'] : '';
$collections_object = $qodeIconCollections->getIconCollection($icon_pack);
if($collections_object) {
$icons = $collections_object->getIconsArray();
if(is_array($icons) && count($icons)) {
foreach ($icons as $key => $icon) {
$html .= '<option value="'.esc_attr($key).'">'.esc_html($key).'</option>';
}
}
}
print $html;
}
add_action('wp_ajax_update_admin_nav_icon_options', 'qode_generate_icon_pack_options');
}
if(!function_exists('qode_get_custom_sidebars')) {
/**
* Function that returns all custom made sidebars.
*
* @uses get_option()
* @return array array of custom made sidebars where key and value are sidebar name
*/
function qode_get_custom_sidebars() {
$custom_sidebars = get_option('qode_sidebars');
$formatted_array = array();
if(is_array($custom_sidebars) && count($custom_sidebars)) {
foreach ($custom_sidebars as $custom_sidebar) {
$formatted_array[$custom_sidebar] = $custom_sidebar;
}
}
return $formatted_array;
}
}
if(!function_exists('qode_hook_twitter_request_ajax')) {
/**
* Wrapper function for obtaining twitter request token.
* Hooks to wp_ajax_qode_twitter_obtain_request_token ajax action
*
* @see QodeTwitterApi::obtainRequestToken()
*/
function qode_hook_twitter_request_ajax() {
QodeTwitterApi::getInstance()->obtainRequestToken();
}
add_action('wp_ajax_qode_twitter_obtain_request_token', 'qode_hook_twitter_request_ajax');
}
if(!function_exists('qode_disconnect_from_instagram')) {
function qode_disconnect_from_instagram() {
QodeInstagramApi::getInstance()->deleteFieldsFromDB();
}
add_action('wp_ajax_qode_disconnect_from_instagram', 'qode_disconnect_from_instagram');
}
/* Taxonomy custom fields functions - START */
if(!function_exists('qode_init_custom_taxonomy_fields')){
function qode_init_custom_taxonomy_fields(){
do_action('qode_custom_taxonomy_fields');
}
add_action('after_setup_theme','qode_init_custom_taxonomy_fields');
}
if(!function_exists('qode_taxonomy_fields_add')) {
function qode_taxonomy_fields_add()
{
global $qodeFramework;
foreach ($qodeFramework->qodeTaxonomyOptions->taxonomyOptions as $key => $fields) {
add_action($fields->scope.'_add_form_fields', 'qode_taxonomy_fields_display_add', 10, 2);
}
}
add_action('after_setup_theme', 'qode_taxonomy_fields_add', 11);
}
if(!function_exists('qode_taxonomy_fields_edit')) {
function qode_taxonomy_fields_edit()
{
global $qodeFramework;
foreach ($qodeFramework->qodeTaxonomyOptions->taxonomyOptions as $key => $fields) {
add_action($fields->scope.'_edit_form_fields', 'qode_taxonomy_fields_display_edit', 10, 2);
}
}
add_action('after_setup_theme', 'qode_taxonomy_fields_edit', 11);
}
if(!function_exists('qode_taxonomy_fields_display_add')) {
function qode_taxonomy_fields_display_add($taxonomy)
{
global $qodeFramework;
foreach ($qodeFramework->qodeTaxonomyOptions->taxonomyOptions as $key => $fields) {
if($taxonomy == $fields->scope) {
$fields->render();
}
}
}
}
if(!function_exists('qode_taxonomy_fields_display_edit')) {
function qode_taxonomy_fields_display_edit($term, $taxonomy)
{
global $qodeFramework;
foreach ($qodeFramework->qodeTaxonomyOptions->taxonomyOptions as $key => $fields) {
if($taxonomy == $fields->scope) {
$fields->render();
}
}
}
}
if (!function_exists('qode_save_taxonomy_custom_fields')) {
function qode_save_taxonomy_custom_fields($term_id) {
$fields = apply_filters('qode_taxonomy_fields',array());
foreach ( $fields as $value ) {
if( isset( $_POST[$value] ) && '' !== $_POST[$value] ){
add_term_meta ( $term_id, $value, $_POST[$value] );
}
}
}
add_action('created_term', 'qode_save_taxonomy_custom_fields', 10, 2);
}
if (!function_exists('qode_update_taxonomy_custom_fields')) {
function qode_update_taxonomy_custom_fields ( $term_id) {
$fields = apply_filters('qode_taxonomy_fields',array());
foreach ( $fields as $value ) {
if( isset( $_POST[$value] ) && '' !== $_POST[$value] ){
update_term_meta ( $term_id, $value, $_POST[$value] );
}else {
update_term_meta ( $term_id, $value, '' );
}
}
}
add_action( 'edited_term', 'qode_update_taxonomy_custom_fields', 10, 2 );
}
if (!function_exists('qode_tax_add_script')) {
function qode_tax_add_script() {
wp_enqueue_media();
wp_enqueue_script('qode-tax-js', QODE_FRAMEWORK_ROOT.'/admin/assets/js/qode-tax-custom-fields.js');
wp_enqueue_script( 'select2', get_template_directory_uri() . '/framework/admin/assets/js/select2.min.js', array(), false, true );
wp_enqueue_style( 'select2', get_template_directory_uri() . '/framework/admin/assets/css/select2.min.css' );
}
add_action( 'admin_enqueue_scripts', 'qode_tax_add_script' );
}
/** Taxonomy Delete Image **/
if (!function_exists('qode_tax_del_image')) {
function qode_tax_del_image()
{
/** If we don't have a term_id, bail out **/
if (!isset($_GET['term_id'])) {
echo esc_html('Not Set or Empty', 'qode');
exit;
}
$field_name = $_GET['field_name'];
$term_id = $_GET['term_id'];
$imageID = get_term_meta($term_id, $field_name, true); // Get our attachment ID
if (is_numeric($imageID)) { // Verify that the attachment ID is indeed a number
wp_delete_attachment($imageID); // Delete our image
delete_term_meta($term_id, $field_name);// Delete our image meta
exit;
}
echo esc_html__('Contact Administrator', 'qode'); // If we've reached this point, something went wrong - enable debugging
exit;
}
add_action('wp_ajax_qode_tax_del_image', 'qode_tax_del_image');
}
/* Taxonomy custom fields functions - END */
if ( ! function_exists( 'qode_set_admin_google_api_class' ) ) {
function qode_set_admin_google_api_class( $classes ) {
$google_map_api = qode_options()->getOptionValue( 'google_maps_api_key' );
if ( empty( $google_map_api ) ) {
$classes .= ' qodef-empty-google-api';
}
return $classes;
}
add_filter( 'admin_body_class', 'qode_set_admin_google_api_class' );
}