',
));
// Register additional extra widget areas:
# $bfa_ata_extra_widget_areas = get_option('bfa_widget_areas');
$bfa_ata_extra_widget_areas = $bfa_ata['bfa_widget_areas'];
if ($bfa_ata_extra_widget_areas != '') {
foreach ($bfa_ata_extra_widget_areas as $widget_area) {
register_sidebar(array(
'name' => $widget_area['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 (TEMPLATEPATH . '/functions/bfa_header_config.php');
include_once (TEMPLATEPATH . '/functions/bfa_hor_cats.php');
include_once (TEMPLATEPATH . '/functions/bfa_hor_pages.php');
// New WP3 menus:
include_once (TEMPLATEPATH . '/functions/bfa_new_wp3_menus.php');
include_once (TEMPLATEPATH . '/functions/bfa_footer.php');
include_once (TEMPLATEPATH . '/functions/bfa_recent_comments.php');
include_once (TEMPLATEPATH . '/functions/bfa_popular_posts.php');
include_once (TEMPLATEPATH . '/functions/bfa_popular_in_cat.php');
include_once (TEMPLATEPATH . '/functions/bfa_subscribe.php');
include_once (TEMPLATEPATH . '/functions/bfa_postinfo.php');
include_once (TEMPLATEPATH . '/functions/bfa_rotating_header_images.php');
include_once (TEMPLATEPATH . '/functions/bfa_next_previous_links.php');
include_once (TEMPLATEPATH . '/functions/bfa_post_parts.php');
if (!function_exists('paged_comments'))
include_once (TEMPLATEPATH . '/functions/bfa_custom_comments.php');
// Since 3.5.2: JSON for PHP 4 & 5.1:
if (!function_exists('json_decode')) {
include_once (TEMPLATEPATH . '/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) ); }
}
// old, propretiary bodyclasses() of Atahualpa. Usage: bodyclasses()
// include_once (TEMPLATEPATH . '/functions/bfa_bodyclasses.php');
// new, default Wordpress body_class(). usage: body_class()
// include only in WP 2.3 - WP 2.7 . From WP 2.8 on it is a core Wordpress function:
if (!function_exists('body_class'))
include_once (TEMPLATEPATH . '/functions/bfa_body_class.php');
// For plugin "Sociable":
if (function_exists('sociable_html'))
include_once (TEMPLATEPATH . '/functions/bfa_sociable2.php');
// "Find in directory" function, needed for finding header images on WPMU
if (file_exists(ABSPATH."/wpmu-settings.php"))
include_once (TEMPLATEPATH . '/functions/bfa_m_find_in_dir.php');
// CSS for admin area
include_once (TEMPLATEPATH . '/functions/bfa_css_admin_head.php');
// Add the CSS to the ... of the theme option admin area
add_action('admin_head', 'bfa_add_stuff_admin_head');
include_once (TEMPLATEPATH . '/functions/bfa_ata_add_admin.php');
include_once (TEMPLATEPATH . '/functions/bfa_ata_admin.php');
add_action('admin_menu', 'bfa_ata_add_admin');
// Escape single & double quotes
function bfa_escape($string) {
$string = str_replace('"', '"', $string);
$string = str_replace("'", ''', $string);
return $string;
}
// change them back
function bfa_unescape($string) {
$string = str_replace('"', '"', $string);
$string = str_replace(''', "'", $string);
return $string;
}
function bfa_escapelt($string) {
$string = str_replace('<', '<', $string);
$string = str_replace('>', '>', $string);
return $string;
}
function footer_output($footer_content) {
$footer_content .= ' Powered by WordPress & the Atahualpa Theme by BytesForAll. Discuss on our WP Forum';
return $footer_content;
}
// Move Featured Content Gallery down in script order in wp_head(), so that jQuery can finish before mootools
function remove_featured_gallery_scripts() {
remove_action('wp_head', 'gallery_styles');
}
add_action('init','remove_featured_gallery_scripts', 1);
function addscripts_featured_gallery() {
if(!function_exists(gallery_styles)) return;
gallery_styles();
}
add_action('wp_head', 'addscripts_featured_gallery', 12);
// new comment template for WP 2.7+, legacy template for old WP 2.6 and older
if ( !function_exists('paged_comments') ) {
include_once (TEMPLATEPATH . '/functions/bfa_custom_comments.php');
function legacy_comments($file) {
if( !function_exists('wp_list_comments') )
$file = TEMPLATEPATH . '/legacy.comments.php';
return $file;
}
add_filter('comments_template', 'legacy_comments');
}
// remove WP default inline CSS for ".recentcomments a" from header
function remove_wp_widget_recent_comments_style() {
remove_filter('wp_head', 'wp_widget_recent_comments_style' );
}
add_filter( 'wp_head', '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');
}
// remove Sociable CSS & JS, will be included in css.php and js.php
# if (function_exists('sociable_html')) {
# remove_action('wp_head', 'sociable_wp_head');
# }
// 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', 'add_new_var_to_wp');
function 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 '' . "\n";
if ( function_exists('the_generator') ) {
the_generator( apply_filters( 'wp_generator_type', 'xhtml' ) );
}
echo ''."\n";
}
}
/* redirect the template if new var "bfa_ata_file" or "bfa_debug" exists in URL
and is "css" or "js", or "yes" for debug. That means that a request for
mydomain.com/?bfa_ata_file=css would not try to display a
normal page but do whatever we define below. In this
case "get the saved options and display the CSS file" */
add_action('template_redirect', 'bfa_css_js_redirect');
add_action('wp_head', 'bfa_inline_css_js');
/* since 3.4.3 */
function add_js_link() {
global $bfa_ata;
if ( $bfa_ata['javascript_external'] == "External" ) { ?>
Successfully deleted option \'bfa_ata4\' ...';
else echo 'Something went wrong...';
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 excerpt exists, just stick on the 'custom read more' and we're done
$words = preg_split("/\s+/", $text);
$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;
}
$text = get_the_content('');
$words = preg_split ("/\s+/", $text);
$post_content = $post->post_content;
$post_content_length = count(preg_split("/\s+/", $post_content));
if (count($words) < $post_content_length) {
// use the teaser and its 'read more'
$bfa_ata_more_tag_final = str_replace("%post-title%", the_title('', '', false), $bfa_ata['more_tag']);
$text = the_content($bfa_ata_more_tag_final);
return $text;
} else {
// 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+/", $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:
Example:
&after_widget='); ?>
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:
after_widget HMTL after each widget ... Default:
before_title HTML before the title of each widget in any cell of this widget area: Default:
after_title HMTL after the title ... Default:
*/
function bfa_widget_area($args = '') {
global $bfa_ata;
$defaults = array(
'cells' => 1,
'align' => 2,
'before_widget' => '
',
'after_widget' => '
',
'before_title' => '
',
'after_title' => '
',
);
$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 '
';
// If a width was set for any of the widget area cells:
if ( strpos($args,'width_') !== FALSE ) {
echo "\n
";
} else {
// If only 1 widget cell, use a DIV instead of a table
echo '
';
// 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 '
';
$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' );
// This adds arbitrary content at various places in the center (= content) column:
function bfa_center_content($center_content) {
global $bfa_ata;
// PHP
// not for WPMU - enabled again since 3.4.3 until alternative for WPMU is available
# if ( !file_exists(ABSPATH."/wpmu-settings.php") ) {
if ( strpos($center_content,''.$center_content);
$center_content = ob_get_contents();
ob_end_clean();
}
# }
echo $center_content;
}
// Since 3.4.7 HTML Inserts with PHP, used for parsing PHP in css.php as well:
// Purpose is that PHP such as bloginfo('template_directory') can be used in CSS text areas so that image paths work across
// Atahualpa installations & imported/exported files
function bfa_html_inserts($custom_code) {
global $bfa_ata;
if($custom_code != '') {
if ( strpos($custom_code,''.$custom_code);
$custom_code = ob_get_contents();
ob_end_clean();
}
# echo apply_filters(widget_text, $custom_code);
echo $custom_code;
}
}
/* CUSTOM BODY TITLE and meta title, meta keywords, meta description */
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 '';
// The actual fields for data entry
$thePostID = $post->ID;
$post_id = get_post($thePostID);
$title = $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 '
';
echo '
Check to NOT display the Body Title on Single Post or Static Pages
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
}
/* Prints the edit form for pre-WordPress 2.5 post/page */
function bfa_ata_old_custom_box() {
echo '
' . "\n";
echo '
\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 */
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);
}
// Since 3.4.3: Add Spam and Delete links to comments
/* Since 3.4.7 deactivated because it's causing issues see http://forum.bytesforall.com/showthread.php?t=6742
function delete_comment_link($id) {
if (current_user_can('edit_post')) {
echo '| Delete ';
echo '| Spam';
}
}
*/
// Add "in-cat-catname" to body_class of single post pages
/*
function add_cats_to_body_class($classes='') {
if (is_single()) {
global $post;
$categories = get_the_category($post->ID);
foreach ($categories as $category) {
$classes[] = 'in-cat-' . $category->category_nicename;
}
}
return $classes;
}
add_filter('body_class', 'add_cats_to_body_class');
*/
// Since 3.4.5: WP 2.9 thumbnails support:
if ( function_exists( 'add_theme_support' ) ) { // Added in 2.9
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.4.7: Import/Export Settings
function bfa_import_settings_now() {
check_ajax_referer( "import_bfa_settings" );
$new_options = maybe_unserialize(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' );
// file_get_contents/file_put_contents for PHP4
if (!function_exists('file_get_contents')) {
function file_get_contents($filename) {
$fhandle = fopen($filename, "r");
if (!$fhandle) {
return false;
} else {
$fcontents = fread($fhandle, filesize($filename));
fclose($fhandle);
}
return $fcontents;
}
function file_put_contents($filename, $data) {
$fhandle = @fopen($filename, 'w');
if (!$fhandle) {
return false;
} else {
$fcontents = fwrite($fhandle, $data);
fclose($fhandle);
}
return $fcontents;
}
}
// Since 3.5.2: New menu system in WP 3
add_action( 'init', 'register_new_menus' );
function register_new_menus() {
register_nav_menus(
array(
'menu1' => __( 'Menu 1' ),
'menu2' => __( 'Menu 2' )
)
);
}
?>