';
array_unshift($markup_item, $prepend_blog_name);
}}
return $markup_item;
}
/*********************************************************************
*
* [add get item keys that should have blogname added before them (will automatically be before category too if displayed)]
*
**********************************************************************/
function get_blogname_for_cart_email_order($items){
static $run_once = 0; $run_once++;
if($run_once>1){return $items;}
global $wppizza_options;
/* skip if not enabled */
if(empty($wppizza_options[$this->layout_page]['items_group_sort_print_by_category'])){
return $items;
}
$add_blog_details = array();
foreach($items as $key => $item){
$item_blog_id = $item['blog_id'];
if(!isset($do_blog_name[$item_blog_id])){
$do_blog_name[$item_blog_id] = true;
$add_blog_details[$key] = WPPIZZA() -> helpers -> wppizza_blog_details($item_blog_id);
//$add_blog_name[$key] = array('blog_id' => $item_blog_id, 'blog_name' => $blog_details->blogname );
}
}
/* all menu item keys as keys that need blog name displayed */
$this -> items_keys_blog_details = $add_blog_details;
return $items;
}
/*
sessions per site ? default true. i.e WPPIZZA_SLUG_'.$blog_id.'
*/
function sessions_per_site($session_key){
global $blog_id, $wppizza_options;
if(!is_multisite()){
return $session_key;
}
/**
always get settings from parent blog for this if it's not already parent anyway
**/
if($blog_id != BLOG_ID_CURRENT_SITE){
switch_to_blog(BLOG_ID_CURRENT_SITE);
/* get option from main parent blog */
$blog_options = get_option(WPPIZZA_SLUG);
/*
if wppizza not activated in parent / master site to start off with, use default
*/
/*
is_plugin_active only exists in admin, so lets simply recreate it, checking if plugin is active in master site
*/
$wppizza_master_active = in_array( WPPIZZA_PLUGIN_INDEX, (array) get_option( 'active_plugins', array() ) );
if(!isset($blog_options[$this->settings_page]['wp_multisite_session_per_site']) || !$wppizza_master_active){
$session_key = $session_key ;
}else{
if(empty($blog_options[$this->settings_page]['wp_multisite_session_per_site'])){
$session_key = WPPIZZA_SLUG;
}
}
restore_current_blog();
}else{
if(empty($wppizza_options[$this->settings_page]['wp_multisite_session_per_site'])){
$session_key = WPPIZZA_SLUG;
}
}
return $session_key;
}
/*************************************
query db - admin history - from all sites (parent sie only)
**************************************/
function order_history_all_sites($bool){
global $wppizza_options, $blog_id;
$bool = ( is_multisite() && $blog_id==BLOG_ID_CURRENT_SITE && !empty($wppizza_options[$this->settings_page]['wp_multisite_order_history_all_sites'])) ? true : false;
return $bool;
}
/*************************************
query db - admin history from all sites (parent sie only)
**************************************/
function reports_all_sites($bool){
global $wppizza_options, $blog_id;
$bool = ( is_multisite() && $blog_id==BLOG_ID_CURRENT_SITE && !empty($wppizza_options[$this->settings_page]['wp_multisite_reports_all_sites'])) ? true : false;
return $bool;
}
/*******************************************************************************************************************************************************
*
*
*
* [add admin page options]
*
*
*
********************************************************************************************************************************************************/
/*------------------------------------------------------------------------------
#
#
# [settings page]
#
#
------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------
# [settings section - setting page]
# @since 3.0
# @return array()
------------------------------------------------------------------------------*/
function admin_options_settings($settings, $sections, $fields, $inputs, $help){
global $blog_id;
/* in multisite setup and parentsite only */
if(is_multisite() && $blog_id==BLOG_ID_CURRENT_SITE){
/*section*/
if($sections){
$settings['sections'][$this->section_key] = __('Multisite', 'wppizza-admin');
}
/*help*/
if($help){
$settings['help'][$this->section_key][] = array(
'label'=>__('Multisite environment', 'wppizza-admin'),
'description'=>array(
__('Several options are available in a multisite environment that will allow you to - for example - administer and/or view certain aspects of all sites in the parent site.', 'wppizza-admin'),
__('Please adjust settings as appropriate according to the information provided next to each individual option.', 'wppizza-admin')
)
);
}
/*fields*/
if($fields){
$field = 'wp_multisite_session_per_site';
$settings['fields'][$this->section_key][$field] = array( __('Cart - per (sub)site', 'wppizza-admin'), array(
'value_key'=>$field,
'option_key'=>$this->settings_page,
'label'=>__('Sets cart contents / order on a per site basis when using subdirectories. Turning this off has no effect/relevance when using different domains per site on the network (it will alwasy be per site in that case). You probably want this *on* when you have a multisite/network install.', 'wppizza-admin'),
'description'=>array(
''.__('THERE ARE ONLY VERY FEW SECENARIOS WHERE YOU MIGHT WANT THIS OFF', 'wppizza-admin').''
)
));
$field = 'wp_multisite_order_history_all_sites';
$settings['fields'][$this->section_key][$field] = array( __('Orders/Customers (Admin) - all subsites', 'wppizza-admin'), array(
'value_key'=>$field,
'option_key'=>$this->settings_page,
/* Translators: 1,2: WPPizza Name as defined by constant */
'label'=>sprintf(__('check to have order history/customers to use all orders/customers of all child sites (%1$s -> Order History / %2$s -> Customers ) ', 'wppizza-admin'), WPPIZZA_NAME, WPPIZZA_NAME),
'description'=>array(
''.__('NOTE: THIS MIGHT SLOW THINGS DOWN IN THE ADMIN ORDER HISTORY PAGE OF YOUR MAIN/PARENT SITE CONSIDERABLY', 'wppizza-admin').''
)
));
$field = 'wp_multisite_reports_all_sites';
$settings['fields'][$this->section_key][$field] = array( __('Reports (Admin) - all subsites', 'wppizza-admin'), array(
'value_key'=>$field,
'option_key'=>$this->settings_page,
/* Translators: 1: WPPizza Name as defined by constant */
'label'=>sprintf(__('check to have reporting - including dashboard widget - to use all orders of all child sites (%s -> Reports)', 'wppizza-admin'), WPPIZZA_NAME),
'description'=>array(
''.__('NOTE: THIS MIGHT SLOW THINGS DOWN IN THE ADMIN ORDER HISTORY PAGE OF YOUR MAIN/PARENT SITE CONSIDERABLY', 'wppizza-admin').''
)
));
}
}
return $settings;
}
/*------------------------------------------------------------------------------
# [output option fields - setting page]
# @since 3.0
# @return array()
------------------------------------------------------------------------------*/
function admin_options_fields_settings($wppizza_options, $options_key, $field, $label, $description){
if($field=='wp_multisite_session_per_site'){
echo "";
echo"".$description."";
}
if($field=='wp_multisite_reports_all_sites'){
echo "";
echo"".$description."";
}
if($field=='wp_multisite_order_history_all_sites'){
echo "";
echo"".$description."";
}
}
/*------------------------------------------------------------------------------
#
#
# [layout page]
#
#
------------------------------------------------------------------------------*/
/****************************************************************
* [settigs section - layout page]
* @since 3.0
* @return array()
****************************************************************/
function admin_options_layout($settings, $sections, $fields, $inputs, $help){
global $wppizza_options;
/*skip section as we are adding to the "Items Sorting and Category Display" */
/*fields*/
if($fields){
$add_settings = array();
$field = 'items_blog_hierarchy';
$add_settings['fields'][$this->layout_section][$field] = array( __('Blogname display in order pages and emails', 'wppizza-admin'), array(
'value_key'=>$field,
'option_key'=>$this->layout_page,
'label'=>__('Enable to also sort by and show blogname additionally to categories in order pages and emails', 'wppizza-admin'),
'description'=>array()
));
$field = 'items_blog_hierarchy_cart';
$add_settings['fields'][$this->layout_section][$field] = array( __('Blogname display in cart', 'wppizza-admin'), array(
'value_key'=>$field,
'option_key'=>$this->layout_page,
'label'=>__('Enable to also sort by and show blogname additionally to categories in cart', 'wppizza-admin'),
'description'=>array()
));
$field = 'items_blog_hierarchy_email_style';
$add_settings['fields'][$this->layout_section][$field] = array( __('Blogname style in html emails', 'wppizza-admin'), array(
'value_key'=>$field,
'option_key'=>$this->layout_page,
'label'=>__('Some email services do not understand (or delete) css declarations, therefore please enter the distinct style declarations here', 'wppizza-admin'),
'description'=>array()
));
}
/*
splice fields into the required position on admin layout page
*/
if(!empty($add_settings)){
if($fields){
$settings['fields'][$this->layout_section] = wppizza_array_splice(
$settings['fields'][$this->layout_section],
$add_settings['fields'][$this->layout_section],
/* array keys here are the keys after which the above settings will be inserted - there must be as many keys as there are $add_settings*/
array('items_category_hierarchy','items_category_hierarchy_cart','items_category_hierarchy_email_style'),
true
);
}
}
return $settings;
}
/****************************************************************
* [output option fields - layout page]
* @since 3.0
* @return array()
****************************************************************/
function admin_options_fields_layout($wppizza_options, $options_key, $field, $label, $description){
if($field=='items_blog_hierarchy'){
print'';
print'' . $description . '';
}
if($field=='items_blog_hierarchy_cart'){
print'';
print'' . $description . '';
}
if($field=='items_blog_hierarchy_email_style'){
print'';
print'' . $description . '';
}
}
/*------------------------------------------------------------------------------
# [insert default option on install]
# $parameter $options array() | filter passing on filtered options
# @since 3.0
# @return array()
------------------------------------------------------------------------------*/
function options_default($options){
/* settings page */
$options[$this->settings_page]['wp_multisite_session_per_site'] = true;
$options[$this->settings_page]['wp_multisite_reports_all_sites'] = false;
$options[$this->settings_page]['wp_multisite_order_history_all_sites'] = false;
/* layout page */
$options[$this->layout_page]['items_blog_hierarchy'] = false;
$options[$this->layout_page]['items_blog_hierarchy_cart'] = false;
$options[$this->layout_page]['items_blog_hierarchy_email_style'] = 'text-align:center;padding:12px 2px 7px 2px;font-size:110%; font-weight:bold';
return $options;
}
/*------------------------------------------------------------------------------
# [validate options on save/update]
#
# @since 3.0
# @return array()
------------------------------------------------------------------------------*/
function options_validate($options, $input){
/**make sure we get the full array on install/update**/
if ( empty( $_POST['_wp_http_referer'] ) ) {
return $input;
}
/*
settings
*/
if(isset($_POST[''.WPPIZZA_SLUG.'_'.$this->settings_page.''])){
global $blog_id;
/*if not multisite or not parent site save/use defaults*/
if(!is_multisite() || $blog_id != BLOG_ID_CURRENT_SITE){
$options[$this->settings_page]['wp_multisite_session_per_site'] = true;
$options[$this->settings_page]['wp_multisite_reports_all_sites'] =false;
$options[$this->settings_page]['wp_multisite_order_history_all_sites'] =false;
//$options[$this->settings_page]['wp_multisite_order_history_print'] = array('header_from_child'=>false,'multisite_info'=>false);
}else{
$options[$this->settings_page]['wp_multisite_session_per_site'] = !empty($input[$this->settings_page]['wp_multisite_session_per_site']) ? true : false;
$options[$this->settings_page]['wp_multisite_reports_all_sites'] = !empty($input[$this->settings_page]['wp_multisite_reports_all_sites']) ? true : false;
$options[$this->settings_page]['wp_multisite_order_history_all_sites'] = !empty($input[$this->settings_page]['wp_multisite_order_history_all_sites']) ? true : false;
/**as we might have enabled or disabled wp_multisite_reports_all_sites , clear transient*/
delete_transient( WPPIZZA_TRANSIENT_REPORTS_NAME.'_'.WPPIZZA_ADMIN_DASHBOARD_TRANSIENT_REPORTS_EXPIRY.'' );
}
}
/*
layout
*/
if(isset($_POST[''.WPPIZZA_SLUG.'_'.$this->layout_page.''])){
$options[$this->layout_page]['items_blog_hierarchy'] = ( !empty($input[$this->layout_page]['items_blog_hierarchy']) && is_multisite() ) ? true : false;
$options[$this->layout_page]['items_blog_hierarchy_cart'] = ( !empty($input[$this->layout_page]['items_blog_hierarchy_cart']) && is_multisite() ) ? true : false;
/* only actually overwrite if multisite otherwise keep what we have as the input will not exist in non ms environments*/
if(is_multisite()){
$options[$this->layout_page]['items_blog_hierarchy_email_style']= wppizza_validate_string($input[$this->layout_page]['items_blog_hierarchy_email_style']);
}
}
return $options;
}
}
/***************************************************************
*
* [ini]
*
***************************************************************/
$WPPIZZA_MODULE_SETTINGS_MULTISITE = new WPPIZZA_MODULE_SETTINGS_MULTISITE();
?>