src/web/app/themes/atahualpa/functions.php
changeset 0 505fe5249d9c
child 1 407d5a626a50
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/web/app/themes/atahualpa/functions.php	Wed Dec 04 11:40:06 2019 +0100
@@ -0,0 +1,950 @@
+<?php
+$bfa_ata_version = "3.7.24";
+
+// Load translation file above
+load_theme_textdomain('atahualpa');
+
+// get default theme options
+include_once (get_template_directory() . '/functions/bfa_theme_options.php');
+// Load options
+include_once (get_template_directory() . '/functions/bfa_get_options.php');
+list($bfa_ata, $cols, $left_col, $left_col2, $right_col, $right_col2, $bfa_ata['h_blogtitle'], $bfa_ata['h_posttitle']) = bfa_get_options();
+
+
+// Sidebars:
+add_action( 'widgets_init', 'bfa_widgets_init' );
+function bfa_widgets_init() {
+
+	global $bfa_ata;
+
+	register_sidebar(array(
+		'name'=>'Left Sidebar',
+		'id'=> 'bfa-ata-left-sidebar',
+		'before_widget' => '<div id="%1$s" class="widget %2$s">',
+		'after_widget' => '</div>',
+		'before_title' => '<div class="widget-title"><h3>',
+		'after_title' => '</h3></div>',
+	));
+	register_sidebar(array(
+		'name'=>'Right Sidebar',
+		'id'=> 'bfa-ata-right-sidebar',
+		'before_widget' => '<div id="%1$s" class="widget %2$s">',
+		'after_widget' => '</div>',
+		'before_title' => '<div class="widget-title"><h3>',
+		'after_title' => '</h3></div>',
+	));
+	register_sidebar(array(
+		'name'=>'Left Inner Sidebar',
+		'id'=> 'bfa-ata-left-inner-sidebar',
+		'before_widget' => '<div id="%1$s" class="widget %2$s">',
+		'after_widget' => '</div>',
+		'before_title' => '<div class="widget-title"><h3>',
+		'after_title' => '</h3></div>',
+	));
+	register_sidebar(array(
+		'name'=>'Right Inner Sidebar',
+		'id'=> 'bfa-ata-right-inner-sidebar',
+		'before_widget' => '<div id="%1$s" class="widget %2$s">',
+		'after_widget' => '</div>',
+		'before_title' => '<div class="widget-title"><h3>',
+		'after_title' => '</h3></div>',
+	));
+			
+	// Register additional extra widget areas:
+	# $bfa_ata_extra_widget_areas = get_option('bfa_widget_areas');
+	if(isset($bfa_ata['bfa_widget_areas'])) $bfa_ata_extra_widget_areas = $bfa_ata['bfa_widget_areas'];
+	else $bfa_ata_extra_widget_areas = '';
+	
+	if ($bfa_ata_extra_widget_areas != '') {
+		$n = 0;
+		foreach ($bfa_ata_extra_widget_areas as $widget_area) {
+			$n++; 
+			$id_name = 'bfa-ata-extra-widget-area-'.$n;
+			register_sidebar(array(
+				'name' => $widget_area['name'],
+				'id'=> $id_name,
+				'before_widget' => $widget_area['before_widget'],
+				'after_widget' => $widget_area['after_widget'],
+				'before_title' => $widget_area['before_title'],
+				'after_title' => $widget_area['after_title']
+			));
+		}
+	}
+}
+
+
+#global $bfa_ata;
+// Load functions
+include_once (get_template_directory() . '/functions/bfa_header_config.php');
+include_once (get_template_directory() . '/functions/bfa_meta_tags.php');
+include_once (get_template_directory() . '/functions/bfa_hor_cats.php');
+include_once (get_template_directory() . '/functions/bfa_hor_pages.php');
+// New WP3 menus:
+include_once (get_template_directory() . '/functions/bfa_new_wp3_menus.php');
+include_once (get_template_directory() . '/functions/bfa_footer.php');
+include_once (get_template_directory() . '/functions/bfa_recent_comments.php');
+include_once (get_template_directory() . '/functions/bfa_popular_posts.php');
+include_once (get_template_directory() . '/functions/bfa_popular_in_cat.php');
+include_once (get_template_directory() . '/functions/bfa_subscribe.php');
+include_once (get_template_directory() . '/functions/bfa_postinfo.php');
+include_once (get_template_directory() . '/functions/bfa_rotating_header_images.php');
+include_once (get_template_directory() . '/functions/bfa_next_previous_links.php');
+include_once (get_template_directory() . '/functions/bfa_post_parts.php');
+if (!function_exists('paged_comments'))  
+	include_once (get_template_directory() . '/functions/bfa_custom_comments.php');
+	
+// Since 3.5.2: JSON for PHP 4 & 5.1:
+if (!function_exists('json_decode')) {
+	include_once (get_template_directory() . '/functions/JSON.php');
+	function json_encode($data) { $json = new Services_JSON(); return( $json->encode($data) ); }
+	function json_decode($data) { $json = new Services_JSON(); return( $json->decode($data) ); }
+}
+function bfa_toArray($data) {
+    if (is_object($data)) $data = get_object_vars($data);
+    return is_array($data) ? array_map(__FUNCTION__, $data) : $data;
+}
+
+
+
+// For plugin "Sociable":
+if (function_exists('sociable_html')) 
+	include_once (get_template_directory() . '/functions/bfa_sociable2.php'); 
+
+// "Find in directory" function, needed for finding header images on WPMU
+if (file_exists(ABSPATH."/wpmu-settings.php")) 
+	include_once (get_template_directory() . '/functions/bfa_m_find_in_dir.php');
+
+// CSS for admin area
+include_once (get_template_directory() . '/functions/bfa_css_admin_head.php');
+// Add the CSS to the <head>...</head> of the theme option admin area
+add_action('admin_head', 'bfa_add_stuff_admin_head');
+
+include_once (get_template_directory() . '/functions/bfa_ata_add_admin.php');
+include_once (get_template_directory() . '/functions/bfa_ata_admin.php');
+add_action('admin_menu', 'bfa_ata_add_admin');
+
+
+// Escape single & double quotes
+function bfa_escape($string) {
+	$string = str_replace('"', '&#34;', $string);
+	$string = str_replace("'", '&#39;', $string);
+	return $string;
+}
+
+function bfa_footer_output($footer_content) {
+	global $bfa_ata;
+	$footer_content .= '<br />Powered by <a href="http://wordpress.org/">WordPress</a> &amp; <a href="http://forum.bytesforall.com/">Atahualpa</a>';
+	return $footer_content;
+}
+
+// Move Featured Content Gallery down in script order in wp_head(), so that jQuery can finish before mootools
+// Since 3.6 this probably won't work because as per the new WP rules wp_head() must be right before </head>
+function bfa_remove_featured_gallery_scripts() {
+       remove_action('wp_head', 'gallery_styles');
+}
+add_action('init','bfa_remove_featured_gallery_scripts', 1);
+
+function bfa_addscripts_featured_gallery() {
+	if(!function_exists('gallery_styles')) return;
+	gallery_styles();
+}
+add_action('wp_head', 'bfa_addscripts_featured_gallery', 12);
+
+/*
+ * Add custom header inserts through wp_head
+ *
+ * wp_head is supposed to be right before </head>, but html_inserts_header should be after/at the bottom of wp_head
+ *
+@ since 3.6.5
+*/
+function bfa_add_html_inserts_header() {
+	global $bfa_ata;
+	if( $bfa_ata['html_inserts_header'] != '' ) bfa_incl('html_inserts_header'); 
+}
+add_action('wp_head', 'bfa_add_html_inserts_header', 20);
+
+// new comment template for WP 2.7+, legacy template for old WP 2.6 and older
+// Since 3.6.: ToDo: Remove legacy.comments.php after a while. Older WP's won't work anyway 
+// with the new WP requirements to REPLACE older functions with newer ones introduced in 2.8 (i.e. get_the_author_meta)
+if ( !function_exists('paged_comments') ) {
+	include_once (get_template_directory() . '/functions/bfa_custom_comments.php'); 
+}
+
+// remove WP default inline CSS for ".recentcomments a" from header
+function bfa_remove_wp_widget_recent_comments_style() {
+      remove_filter('wp_head', 'wp_widget_recent_comments_style' );
+}
+add_filter( 'wp_head', 'bfa_remove_wp_widget_recent_comments_style', 1 );
+
+
+/* Remove plugin CSS & JS and include them in the theme's main CSS and JS files
+This will be extended and improved in upcoming versions */
+
+// remove WP Pagenavi CSS, will be included in css.php
+if (function_exists('wp_pagenavi')) {
+	remove_action('wp_head', 'pagenavi_css');
+}
+
+// If the plugin Share This is activated, disable its auto-output so we can control it 
+// through the Atahualpa Theme Options
+if ( function_exists('akst_share_link') ) {
+	@define('AKST_ADDTOCONTENT', false);
+	@define('AKST_ADDTOFOOTER', false);
+}
+
+/* EXTERNAL OR INTERNAL CSS & JS, PLUS COMPRESSION & DEBUG */
+
+// Register new query variables "bfa_ata_file" and "bfa_debug" with Wordpress
+add_filter('query_vars', 'bfa_add_new_var_to_wp');
+function bfa_add_new_var_to_wp($public_query_vars) {
+	$public_query_vars[] = 'bfa_ata_file';
+	$public_query_vars[] = 'bfa_debug';
+	return $public_query_vars;
+}
+
+// if debug add/remove info
+if ( function_exists('wp_generator') ) {
+	remove_action('wp_head', 'wp_generator');
+}
+add_action('wp_head', 'bfa_debug');
+function bfa_debug() {
+	global $bfa_ata, $bfa_ata_version;
+	$debug = get_query_var('bfa_debug');
+	if ( $debug == 1 ) {
+		echo '<meta name="theme" content="Atahualpa ' . $bfa_ata_version . '" />' . "\n";
+		if ( function_exists('the_generator') ) { 
+			the_generator( apply_filters( 'wp_generator_type', 'xhtml' ) );
+		}
+		echo '<meta name="robots" content="noindex, follow" />'."\n";
+	}
+}	
+
+// redirect the template if new var "bfa_ata_file" or "bfa_debug" exists in URL 
+add_action('template_redirect', 'bfa_css_js_redirect');
+add_action('wp_head', 'bfa_inline_css_js');
+
+// since 3.4.3 
+function bfa_add_js_link() {
+	global $bfa_ata;
+	$homeURL = get_home_url();  
+	
+	if ( $bfa_ata['javascript_external'] == "External" ) { ?>
+	<script type="text/javascript" src="<?php echo $homeURL; ?>/?bfa_ata_file=js"></script>
+	<?php } 
+}
+add_action('wp_head', 'bfa_add_js_link');
+
+function bfa_css_js_redirect() {
+	global $bfa_ata;
+	$bfa_ata_query_var_file = get_query_var('bfa_ata_file');
+	if ( $bfa_ata_query_var_file == "css" OR $bfa_ata_query_var_file == "js" ) {
+		include_once (get_template_directory() . '/' . $bfa_ata_query_var_file . '.php');
+		exit; // this stops WordPress entirely
+	}
+	// Since 3.4.7: Import/Export Settings
+	if ( $bfa_ata_query_var_file == "settings-download" ) {
+		if(isset($_FILES['userfile'])) $uploadedfile = $_FILES['userfile'];
+		include_once (get_template_directory() . '/download.php');
+		exit; // this stops WordPress entirely
+	}
+	if ( $bfa_ata_query_var_file == "settings-upload" ) {
+		include_once (get_template_directory() . '/upload.php');
+		exit; // this stops WordPress entirely
+	}
+}
+	
+function bfa_inline_css_js() {
+	global $bfa_ata;
+	$bfa_ata_preview = get_query_var('preview');
+	$bfa_ata_debug = get_query_var('bfa_debug');
+	if ( $bfa_ata_preview == 1 OR $bfa_ata['css_external'] == "Inline" OR 
+	( $bfa_ata_debug == 1 AND $bfa_ata['allow_debug'] == "Yes" ) ) {
+		include_once (get_template_directory() . '/css.php');
+	}
+	if ( $bfa_ata_preview == 1 OR $bfa_ata['javascript_external'] == "Inline" OR 
+	( $bfa_ata_debug == 1 AND $bfa_ata['allow_debug'] == "Yes" ) ) {
+		include_once (get_template_directory() . '/js.php');
+	}
+}
+
+
+function bfa_delete_bfa_ata4() {
+	check_ajax_referer( "delete_bfa_ata4" );
+	if (delete_option('bfa_ata4')) echo '<span style="color:green;font-weight:bold;">Successfully deleted option \'bfa_ata4\' ...</span>'; 
+	else echo '<span style="color:green;font-weight:bold;">Something went wrong...</span>';
+	die();
+}
+// add_action ( 'wp_ajax_' + [name of "action" in jQuery.ajax, see functions/bfa_css_admin_head.php], [name of function])
+add_action( 'wp_ajax_bfa_delete_bfa_ata4', 'bfa_delete_bfa_ata4' );
+
+
+
+// Custom Excerpts 
+function bfa_wp_trim_excerpt($text) { // Fakes an excerpt if needed
+
+	global $bfa_ata, $post;
+
+	if ( '' <> $text ) {
+//  an manual excerpt exists, stick on the 'custom read more' and we're done
+		$words = preg_split("/\s+/u", $text);
+		$custom_read_more = str_replace('%permalink%', get_permalink(), $bfa_ata['custom_read_more']);
+		if ( get_the_title() == '' ) { 
+			$custom_read_more = str_replace('%title%', 'Permalink', $custom_read_more);
+		} else {		
+			$custom_read_more = str_replace('%title%', the_title('','',FALSE), $custom_read_more);
+		}
+		array_push($words, $custom_read_more);
+		$text = implode(' ', $words);
+		return $text;
+	}
+
+	$text = get_the_content('');
+	$words = preg_split ("/\s+/u", $text);
+	$post_content = $post->post_content;
+	$post_content_length = count(preg_split("/\s+/u", $post_content));
+
+// Build the excerpt from the post 
+		$text = apply_filters('the_content', $text);
+ 		$text = str_replace(']]>', ']]>', $text);
+		$text = strip_tags($text, $bfa_ata['dont_strip_excerpts']);
+		$excerpt_length = $bfa_ata['excerpt_length'];
+		$words = preg_split("/\s+/u", $text, $excerpt_length + 1);
+
+// this is to handle the case where the number of words 
+// in the post equals the excerpt length
+
+ 	if ($post_content_length > $excerpt_length) {	
+ 		array_pop($words);	
+//  		array_pop($words);	
+		$custom_read_more = str_replace('%permalink%', get_permalink(), $bfa_ata['custom_read_more']);
+		$custom_read_more = str_replace('%title%', the_title('','',FALSE), $custom_read_more);
+		array_push($words, $custom_read_more);
+ 	}
+	$text = implode(' ', $words);
+	return $text;
+
+	return $text;
+}
+remove_filter('get_the_excerpt', 'wp_trim_excerpt');
+add_filter('get_the_excerpt', 'bfa_wp_trim_excerpt');
+
+
+
+
+/* Custom widget areas. 
+
+Usage:
+<?php bfa_widget_area([parameters]); ?>
+
+Example: 
+<?php bfa_widget_area('name=My widget area&cells=4&align=1&align_2=9&align_3=7&width_4=700&before_widget=<div id="%1$s" class="header-widget %2$s">&after_widget=</div>'); ?>
+
+Can be used anywhere in templates, and in theme option text areas that allow usage of PHP code.
+
+Available paramaters:
+
+Mandatory:
+name					Name under which all cells of this widget area will be listed at Site Admin -> Appearance -> Widgets
+							A widget area with 3 cells and a name of "My widget area" creates 3 widget cells which appear as
+							"My widget area 1", "My widget area 2" and "My widget area 3", 
+							with the CSS ID's "my_widget_area_1", "my_widget_area_2" and "my_widget_area_3". 
+						
+Optional:
+cells						Amount of (table) cells. Each cell is a new widget area. Default: 1
+align						Default alignment for all cells. Default: 2 (= center top). 1 = center middle, 2 = center top, 3 = right top, 4 = right middle, 
+							5 = right bottom, 6 = center bottom, 7 = left bottom, 8 = left middle, 9 = left top.
+align_1					Alignment for cell 1: align_2, align_3 ... Non-specified cells get the default value of "align", which, if not defined, is 2 (= center top).
+width_1				Width of cell 1: width_1, width_2, width_3 ... Non-specified cells get a equal share of the remaining width of the whole table
+							containing all the widget area cells.
+before_widget		HTML before each widget in any cell of this widget area. Default:  <div id="%1$s" class="widget %2$s">
+after_widget		HMTL after each widget ... Default: </div>
+before_title			HTML before the title of each widget in any cell of this widget area: Default: <div class="widget-title"><h3>
+after_title			HMTL after the title ... Default: </h3></div>
+
+*/
+function bfa_widget_area($args = '') {
+	global $bfa_ata;
+	$defaults = array(
+		'name' => '',
+		'cells' => 1,
+		'align' => 2,
+		'before_widget' => '<div id="%1$s" class="widget %2$s">',
+		'after_widget' => '</div>',
+		'before_title' => '<div class="widget-title"><h3>',
+		'after_title' => '</h3></div>',
+	);
+	
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+
+	$area_id = strtolower(str_replace(" ", "_", $r['name']));
+	
+	# $bfa_widget_areas = get_option('bfa_widget_areas');
+	$bfa_widget_areas = $bfa_ata['bfa_widget_areas'];	
+	
+	// If there are more than 1 cell, use a table, otherwise just a DIV:
+	if ( $r['cells'] > 1 ) {
+	
+		echo '<table id="' . $area_id . '" class="bfa_widget_area" style="table-layout:fixed;width:100%" cellpadding="0" cellspacing="0" border="0">';
+
+		// If a width was set for any of the widget area cells:
+		# if ( strpos($args,'width_') !== FALSE ) {
+		
+		// Since 3.6.7
+		$colgroup = 'no'; // If all table cells have the same width, this can be achieved by table-layout:fixed alone, without the colgroup element.
+		// Check if any of the cells have a set width
+		for ( $i = 1; $i <= $r['cells']; $i++ ) { 
+			if ( array_key_exists('width_' . $i, $r) AND !empty($r['width_' . $i]) ) {
+					$colgroup = 'yes';
+			}
+		}
+		
+		if ($colgroup == 'yes') {
+			echo "\n<colgroup>";
+			for ( $i = 1; $i <= $r['cells']; $i++ ) {
+				echo '<col';
+				$current_width = "width_" . $i;
+				if ( isset($r[$current_width]) ) {
+					if (!preg_match('/(%|px|pX|Px|PX)/',$r[$current_width]) ) {
+						$r[$current_width] = $r[$current_width].'px';
+					}
+					echo ' style="width:' . $r[$current_width] . '"';
+				}
+				echo ' />';
+			}
+			echo "</colgroup>";
+		}
+		
+		echo "<tr>";
+		
+		for ( $i = 1; $i <= $r['cells']; $i++ ) {
+			
+				$current_name = $r['name'] . ' ' . $i;
+				$current_id = $area_id . '_' . $i;
+				$current_align = "align_" . $i;
+				
+				echo "\n" . '<td id="' . $current_id .'" ';
+				
+				if ( isset($r[$current_align]) ) 
+					$align_type = $r["$current_align"];
+				else 
+					$align_type = $r['align'];
+				
+				echo bfa_table_cell_align($align_type) . ">";
+				
+				// Register widget area
+		  		$this_widget_area = array(
+		  			"name" => $current_name,
+		  			"before_widget" => $r['before_widget'],
+		  			"after_widget" => $r['after_widget'],
+		  			"before_title" => $r['before_title'],
+		  			"after_title" => $r['after_title']
+		  			);
+		  
+		   		// Display widget area
+				dynamic_sidebar("$current_name"); 
+				
+				echo "\n</td>";
+				
+				$bfa_widget_areas[$current_name] = $this_widget_area;
+		}
+		
+		echo "\n</tr></table>";     
+	
+	} else {
+	
+		// If only 1 widget cell, use a DIV instead of a table
+		echo '<div id="' . $area_id . '" class="bfa_widget_area">';
+		
+		// Add new widget area to existing ones
+		$this_widget_area = array(
+			"name" => $r['name'],
+			"before_widget" => $r['before_widget'],
+			"after_widget" => $r['after_widget'],
+			"before_title" => $r['before_title'],
+			"after_title" => $r['after_title']
+			);
+
+		// Display widget area
+		dynamic_sidebar($r['name']); 	
+
+		echo '</div>';
+		
+		$current_name = $r['name'];
+		$bfa_widget_areas[$current_name] = $this_widget_area;
+	
+	}
+
+	# update_option("bfa_widget_areas", $bfa_widget_areas);
+	$bfa_ata['bfa_widget_areas'] = $bfa_widget_areas;
+	update_option('bfa_ata4', $bfa_ata);
+
+}
+
+
+function bfa_table_cell_align($align_type) {
+	switch ($align_type) {
+		case 1: $string = 'align="center" valign="middle"'; break;
+		case 2: $string = 'align="center" valign="top"'; break;
+		case 3: $string = 'align="right" valign="top"'; break;		
+		case 4: $string = 'align="right" valign="middle"'; break;
+		case 5: $string = 'align="right" valign="bottom"'; break;
+		case 6: $string = 'align="center" valign="bottom"'; break;
+		case 7: $string = 'align="left" valign="bottom"'; break;
+		case 8: $string = 'align="left" valign="middle"'; break;
+		case 9: $string = 'align="left" valign="top"'; 
+	}
+	return $string;
+}
+	
+
+// Since 3.4.3: Delete Widget Areas
+function bfa_ata_reset_widget_areas() {
+	global $bfa_ata;
+	check_ajax_referer( "reset_widget_areas" );
+	$delete_areas = $_POST['delete_areas'];
+	# $current_areas = get_option('bfa_widget_areas');
+	$current_areas = $bfa_ata['bfa_widget_areas'];
+	foreach ($delete_areas as $area_name) {
+		unset($current_areas[$area_name]);
+	}
+	# update_option('bfa_widget_areas', $current_areas);
+	$bfa_ata['bfa_widget_areas'] = $current_areas;
+	update_option('bfa_ata4', $bfa_ata);
+	echo 'Custom widget areas deleted...'; 
+	die();
+}
+// add_action ( 'wp_ajax_' + [name of "action" in jQuery.ajax, see functions/bfa_css_admin_head.php], [name of function])
+add_action( 'wp_ajax_reset_bfa_ata_widget_areas', 'bfa_ata_reset_widget_areas' );
+
+
+// Since 3.6.5: Import Settings
+function bfa_ata_import_settings() {
+	global $bfa_ata;
+	check_ajax_referer( "import_settings" );
+	
+	// was encoded with encodeURIComponent in bfa_css_admin_head.php
+	// $import_options = rawurldecode($_POST['options']);
+	$import_options = stripslashes($_POST['ataoptions']);
+	
+	// Since 3.5.2, use JSON 
+	if ( json_decode($import_options) != NULL AND strpos($import_options, 'use_bfa_seo') !== FALSE ) {
+		update_option('bfa_ata4', json_decode($import_options, TRUE));
+		echo "<strong><span style='color:green'>Success! Reloading admin area in 2 seconds... </span></strong><br />";		
+	
+	// Probably not a valid settings file:
+	} else {
+		echo "<strong><span style='color:red'>Sorry, but doesn't appear 
+			to be a valid Atahualpa Settings File.</span></strong>";
+			#print_r($import_options);
+	}	
+	
+	die();
+}
+// add_action ( 'wp_ajax_' + [name of "action" in jQuery.ajax, see functions/bfa_css_admin_head.php], [name of function])
+add_action( 'wp_ajax_import_settings', 'bfa_ata_import_settings' );
+
+
+
+/* CUSTOM BODY TITLE and meta title, meta keywords, meta description */
+if(isset($bfa_ata['page_post_options'])) {
+	if ($bfa_ata['page_post_options'] == "Yes") {
+	/* Use the admin_menu action to define the custom boxes */
+		if (is_admin())
+			add_action('admin_menu', 'bfa_ata_add_custom_box');
+
+		/* Use the save_post action to do something with the data entered */
+		add_action('save_post', 'bfa_ata_save_postdata');
+	}
+}
+
+/* Use the publish_post action to do something with the data entered */
+#add_action('publish_post', 'bfa_ata_save_postdata');
+
+#add_action('pre_post_update', 'bfa_ata_save_postdata');
+
+/* Adds a custom section to the "advanced" Post and Page edit screens */
+function bfa_ata_add_custom_box() {
+
+  if( function_exists( 'add_meta_box' )) {
+    add_meta_box( 'bfa_ata_sectionid', __( 'Atahualpa Post Options', 'atahualpa' ), 
+                'bfa_ata_inner_custom_box', 'post', 'normal', 'high' );
+    add_meta_box( 'bfa_ata_sectionid', __( 'Atahualpa Page Options', 'atahualpa' ), 
+                'bfa_ata_inner_custom_box', 'page', 'normal', 'high' );
+   } else {
+    add_action('dbx_post_advanced', 'bfa_ata_old_custom_box' );
+    add_action('dbx_page_advanced', 'bfa_ata_old_custom_box' );
+  }
+}
+   
+/* Prints the inner fields for the custom post/page section */
+function bfa_ata_inner_custom_box() {
+
+	global $post;
+	
+  // Use nonce for verification
+
+	echo '<input type="hidden" name="bfa_ata_noncename" id="bfa_ata_noncename" value="' . 
+    wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
+
+  // The actual fields for data entry
+  
+  	$thePostID = $post->ID;
+	$post_id = get_post($thePostID);
+#	$title = $post_id->post_title;
+	$title = ($post_id->post_title !== 'Auto Draft') ? $post_id->post_title : '';
+
+	$body_title = get_post_meta($post->ID, 'bfa_ata_body_title', true);
+	if ( $body_title == '' ) {
+		$body_title = $title;
+	}
+	$display_body_title = get_post_meta($post->ID, 'bfa_ata_display_body_title', true);
+	$body_title_multi = get_post_meta($post->ID, 'bfa_ata_body_title_multi', true);
+	if ( $body_title_multi == '' ) {
+		$body_title_multi = $title;
+	}
+	$meta_title = get_post_meta($post->ID, 'bfa_ata_meta_title', true);
+	$meta_keywords = get_post_meta($post->ID, 'bfa_ata_meta_keywords', true);
+	$meta_description = get_post_meta($post->ID, 'bfa_ata_meta_description', true);	
+
+	echo '<table cellpadding="5" cellspacing="0" border="0" style="table-layout:fixed;width:100%">';
+	echo '<tr><td style="text-align:right;padding:2px 5px 2px 2px"><input id="bfa_ata_display_body_title" name="bfa_ata_display_body_title" type="checkbox" '. ($display_body_title == 'on' ? ' CHECKED' : '') .' /></td><td>Check to <strong>NOT</strong> display the Body Title on Single Post or Static Pages</td></tr>';
+	echo '<tr><td style="text-align:right;padding:2px 5px 2px 2px"><label for="bfa_ata_body_title">' . __("Body Title Single Pages", 'atahualpa' ) . '</label></td>';
+	echo '<td><input type="text" name="bfa_ata_body_title" value="' . $body_title . '" size="70" style="width:97%" /></td></tr>';
+	echo '<tr><td style="text-align:right;padding:2px 5px 2px 2px"><label for="bfa_ata_body_title_multi">' . __("Body Title Multi Post Pages", 'atahualpa' ) . '</label></td>';
+	echo '<td><input type="text" name="bfa_ata_body_title_multi" value="' . $body_title_multi . '" size="70" style="width:97%" /></td></tr>';
+		
+	echo '<colgroup><col style="width:200px"><col></colgroup>';
+	echo '<tr><td style="text-align:right;padding:2px 5px 2px 2px"><label for="bfa_ata_meta_title">' . __("Meta Title", 'atahualpa' ) . '</label></td>';
+	echo '<td><input type="text" name="bfa_ata_meta_title" value="' . 
+	$meta_title . '" size="70" style="width:97%" /></td></tr>';
+	
+	echo '<tr><td style="text-align:right;padding:2px 5px 2px 2px"><label for="bfa_ata_meta_keywords">' . __("Meta Keywords", 'atahualpa' ) . '</label></td>';
+	echo '<td><input type="text" name="bfa_ata_meta_keywords" value="' . 
+	$meta_keywords . '" size="70" style="width:97%" /></td></tr>';
+	
+	echo '<tr><td style="text-align:right;vertical-align:top;padding:5px 5px 2px 2px"><label for="bfa_ata_meta_description">' . __("Meta Description", 'atahualpa' ) . '</label></td>';
+	echo '<td><textarea name="bfa_ata_meta_description" cols="70" rows="4" style="width:97%">'.$meta_description.'</textarea></td></tr>';
+	
+	echo '</table>';
+
+}
+
+/* Prints the edit form for pre-WordPress 2.5 post/page */
+function bfa_ata_old_custom_box() {
+
+  echo '<div class="dbx-b-ox-wrapper">' . "\n";
+  echo '<fieldset id="bfa_ata_fieldsetid" class="dbx-box">' . "\n";
+  echo '<div class="dbx-h-andle-wrapper"><h3 class="dbx-handle">' . 
+        __( 'Body copy title', 'atahualpa' ) . "</h3></div>";   
+   
+  echo '<div class="dbx-c-ontent-wrapper"><div class="dbx-content">';
+
+  // output editing form
+
+  bfa_ata_inner_custom_box();
+
+  // end wrapper
+
+  echo "</div></div></fieldset></div>\n";
+}
+
+
+
+/* When the post is saved, save our custom data */
+function bfa_ata_save_postdata( $post_id ) {
+
+  /* verify this came from the our screen and with proper authorization,
+  because save_post can be triggered at other times */
+// Before using $_POST['value']    
+if (isset($_POST['bfa_ata_noncename']))    
+{     
+
+	if ( !wp_verify_nonce( $_POST['bfa_ata_noncename'], plugin_basename(__FILE__) )) {
+		return $post_id;
+	}
+
+	if ( 'page' == $_POST['post_type'] ) {
+		if ( !current_user_can( 'edit_page', $post_id ))
+			return $post_id;
+	} else {
+		if ( !current_user_can( 'edit_post', $post_id ))
+			return $post_id;
+		}
+
+	// Save the data
+	
+	$new_body_title = $_POST['bfa_ata_body_title'];
+	$new_display_body_title = !isset($_POST["bfa_ata_display_body_title"]) ? NULL : $_POST["bfa_ata_display_body_title"];
+	$new_body_title_multi = $_POST['bfa_ata_body_title_multi'];
+	$new_meta_title = $_POST['bfa_ata_meta_title'];
+	$new_meta_keywords = $_POST['bfa_ata_meta_keywords'];
+	$new_meta_description = $_POST['bfa_ata_meta_description'];
+
+	update_post_meta($post_id, 'bfa_ata_body_title', $new_body_title);
+	update_post_meta($post_id, 'bfa_ata_display_body_title', $new_display_body_title);
+	update_post_meta($post_id, 'bfa_ata_body_title_multi', $new_body_title_multi);
+	update_post_meta($post_id, 'bfa_ata_meta_title', $new_meta_title);
+	update_post_meta($post_id, 'bfa_ata_meta_keywords', $new_meta_keywords);
+	update_post_meta($post_id, 'bfa_ata_meta_description', $new_meta_description);
+
+}}
+
+if ( function_exists( 'add_theme_support' ) ) { // Added in 2.9
+
+	// Since 3.4.5: WP 2.9 thumbnails support:
+	add_theme_support( 'post-thumbnails' );
+	if ($bfa_ata['post_thumbnail_crop'] == "Yes") 
+		set_post_thumbnail_size( $bfa_ata['post_thumbnail_width'], $bfa_ata['post_thumbnail_height'], true );
+	else set_post_thumbnail_size( $bfa_ata['post_thumbnail_width'], $bfa_ata['post_thumbnail_height'] );
+	add_image_size( 'single-post-thumbnail', 400, 9999 ); // Permalink thumbnail size
+	
+	// Since 3.5.4:
+	add_theme_support('automatic-feed-links');
+}
+
+
+// Since 3.4.7: Import/Export Settings
+function bfa_import_settings_now() {
+	check_ajax_referer( "import_bfa_settings" );
+	$new_options = maybe_unserialize(bfa_file_get_contents($_FILES['userfile']['tmp_name']));
+	update_option('bfa_new_test', $new_options);
+	die();
+}
+// add_action ( 'wp_ajax_' + [name of "action" in jQuery.ajax, see functions/bfa_css_admin_head.php], [name of function])
+add_action( 'wp_ajax_import_bfa_settings_now', 'bfa_import_settings_now' );
+
+
+
+// Since 3.5.2: New menu system in WP 3
+if (function_exists('register_nav_menus')) {
+add_action( 'init', 'bfa_register_new_menus' );
+	function bfa_register_new_menus() {
+		register_nav_menus(
+			array(
+				'menu1' => __( 'Menu 1','atahualpa' ),
+				'menu2' => __( 'Menu 2','atahualpa' )
+			)
+		);
+	}
+}
+
+// Since 3.5.4: Add odd/even class to WP's post_class
+add_filter ( 'post_class' , 'bfa_post_class' );
+global $current_class;
+$current_class = 'odd';
+
+function bfa_post_class ( $classes ) {
+	global $current_class;
+	$classes[] = $current_class;
+	$current_class = ($current_class == 'odd') ? 'even' : 'odd';
+	return $classes;
+}
+
+// Since 3.6: Use stream wrapper instead of eval to include user code. Not used anymore since 3.6.5
+class bfa_VariableStream {
+    var $position;
+    var $varname;
+
+    function stream_open($path, $mode, $options, &$opened_path)
+    {
+        $url = parse_url($path);
+        $this->varname = $url["host"];
+        $this->position = 0;
+
+        return true;
+    }
+
+    function stream_read($count)
+    {
+        $ret = substr($GLOBALS[$this->varname], $this->position, $count);
+        $this->position += strlen($ret);
+        return $ret;
+    }
+
+    function stream_write($data)
+    {
+        $left = substr($GLOBALS[$this->varname], 0, $this->position);
+        $right = substr($GLOBALS[$this->varname], $this->position + strlen($data));
+        $GLOBALS[$this->varname] = $left . $data . $right;
+        $this->position += strlen($data);
+        return strlen($data);
+    }
+
+    function stream_tell()
+    {
+        return $this->position;
+    }
+
+    function stream_eof()
+    {
+        return $this->position >= strlen($GLOBALS[$this->varname]);
+    }
+
+    function stream_seek($offset, $whence)
+    {
+        switch ($whence) {
+            case SEEK_SET:
+                if ($offset < strlen($GLOBALS[$this->varname]) && $offset >= 0) {
+                     $this->position = $offset;
+                     return true;
+                } else {
+                     return false;
+                }
+                break;
+
+            case SEEK_CUR:
+                if ($offset >= 0) {
+                     $this->position += $offset;
+                     return true;
+                } else {
+                     return false;
+                }
+                break;
+
+            case SEEK_END:
+                if (strlen($GLOBALS[$this->varname]) + $offset >= 0) {
+                     $this->position = strlen($GLOBALS[$this->varname]) + $offset;
+                     return true;
+                } else {
+                     return false;
+                }
+                break;
+
+            default:
+                return false;
+        }
+    }
+
+	function stream_stat() 
+	{
+		return array('size' => strlen($GLOBALS[$this->varname]));
+	} 
+
+	function url_stat() 
+	{
+		return array();
+	}
+
+}
+
+// Since 3.6: Register stream wrapper 'bfa'
+stream_wrapper_register("bfa", "bfa_VariableStream")
+    or die("Failed to register new stream protocol 'bfa'");
+
+// Since 3.6: Make sure $GLOBALS has all values
+foreach($bfa_ata as $key => $value) {
+	$GLOBALS[$key] = $value;
+}
+
+// Since 3.6: New variables using newer WP functions
+$templateURI = get_template_directory_uri(); 
+// Since 3.7.0: Escape home_url, too
+$homeURL = esc_url( home_url() );
+
+// Since 3.6: Include Javascripts here and with wp_enqueue instead of header.php
+$isIE6 = (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== FALSE);
+ 
+// Since 3.7.4: Enqueue with add_action
+function bfa_enqueue_scripts() {
+	global $isIE6, $bfa_ata;
+	$templateURI = get_template_directory_uri(); 
+
+	
+	if ( !is_admin() ) { 
+		
+		wp_enqueue_script('jquery');
+
+		if ($bfa_ata['pngfix_selectors'] != "" AND $isIE6 = TRUE) 
+		{
+			wp_register_script('ddroundies', $templateURI . '/js/DD_roundies.js', false, '0.0.2a' );
+			wp_enqueue_script('ddroundies');
+			add_action('wp_head', 'bfa_ddroundiesHead');
+		}
+		
+		if (strpos($bfa_ata['configure_header'],'%image')!== FALSE AND $bfa_ata['header_image_javascript'] != "0" 
+		AND $bfa_ata['crossslide_fade'] != "0") {
+			wp_register_script('crossslide', $templateURI . '/js/jquery.cross-slide.js', array('jquery'), '0.3.2' );
+			wp_enqueue_script('crossslide');
+		}
+	}
+}
+add_action('wp_enqueue_scripts', 'bfa_enqueue_scripts'); // For use on the Front end (ie. Theme)
+
+
+
+// Since 3.6.1: Add ddroundies script in head this way:
+function bfa_ddroundiesHead() {
+	global $bfa_ata;
+	echo '
+<!--[if IE 6]>
+<script type="text/javascript">DD_roundies.addRule("' . $bfa_ata['pngfix_selectors'] . '");</script>
+<![endif]-->
+';
+}
+
+// Since 3.6: Content Width
+if ( ! isset( $content_width ) )
+	$content_width = 640;
+
+
+// Since 3.6.5: Process or don't process user included PHP code. 
+function bfa_incl($option) {
+
+	global $bfa_ata;
+	
+	$result = bfa_parse_widget_areas($bfa_ata[$option]);
+
+	echo $result;
+}
+
+
+function bfa_parse_widget_areas($content) {
+				
+	if ( strpos($content,'<?php bfa_widget_area') !== FALSE ) {
+		$content = preg_replace_callback("/<\?php bfa_widget_area(.*?)\((.*?)'(.*?)'(.*?)\)(.*?)\?>/s","bfa_parse_widget_areas_callback",$content);
+	}
+
+	return $content; 
+}	
+
+
+// Callback for preg_replace_callback
+function bfa_parse_widget_areas_callback($matches) {
+
+	parse_str($matches[3], $widget_options);
+	
+	ob_start(); 
+	
+		bfa_widget_area($widget_options);
+		$widget_area = ob_get_contents();
+		
+	ob_end_clean();
+	
+	return $widget_area;
+}
+
+function bfa_is_pagetemplate_active($pagetemplate = '') {
+
+	if ($pagetemplate == '') {return 0;}
+	
+	global $wpdb;
+	$sql = "select meta_key from $wpdb->postmeta where meta_key like '_wp_page_template' and meta_value like '" . $pagetemplate . "'";
+	$result = $wpdb->query($sql);
+	if ($result) {
+		return 1;
+	} else {
+		return 0;
+	}
+}
+// add category nicenames in body and post class
+	function bfa_category_id_class($classes) {
+	    global $post;
+	    if (is_single()) {	
+	    	foreach((get_the_category($post->ID)) as $category)
+	        	$classes[] = 'category-'.$category->slug;
+		}
+		return $classes;
+	}
+	add_filter('body_class', 'bfa_category_id_class');
+?>
\ No newline at end of file