<?php

/**

 * webmagazine functions and definitions

 *

 * Sets up the theme and provides some helper functions. Some helper functions

 * are used in the theme as custom template tags. Others are attached to action and

 * filter hooks in WordPress to change core functionality.

 *

 * The first function, webmagazine_setup(), sets up the theme by registering support

 * for various features in WordPress, such as post thumbnails, navigation menus, and the like.

 *

 * When using a child theme (see http://codex.wordpress.org/Theme_Development and

 * http://codex.wordpress.org/Child_Themes), you can override certain functions

 * (those wrapped in a function_exists() call) by defining them first in your child theme's

 * functions.php file. The child theme's functions.php file is included before the parent

 * theme's file, so the child theme functions would be used.

 *

 * Functions that are not pluggable (not wrapped in function_exists()) are instead attached

 * to a filter or action hook. The hook can be removed by using remove_action() or

 * remove_filter() and you can attach your own function to the hook.

 *

 * We can remove the parent theme's hook only after it is attached, which means we need to

 * wait until setting up the child theme:

 *

 * <code>

 * add_action( 'after_setup_theme', 'my_child_theme_setup' );

 * function my_child_theme_setup() {

 *     // We are providing our own filter for excerpt_length (or using the unfiltered value)

 *     remove_filter( 'excerpt_length', 'webmagazine_excerpt_length' );

 *     ...

 * }

 * </code>

 *

 * For more information on hooks, actions, and filters, see http://codex.wordpress.org/Plugin_API.

 *

 * @package WordPress

 * @subpackage Twenty_Ten

 * @since Twenty Ten 1.0

 */



/**

 * Set the content width based on the theme's design and stylesheet.

 *

 * Used to set the width of images and content. Should be equal to the width the theme

 * is designed for, generally via the style.css stylesheet.

 */

if ( ! isset( $content_width ) )

	$content_width = 640;



/** Tell WordPress to run webmagazine_setup() when the 'after_setup_theme' hook is run. */

add_action( 'after_setup_theme', 'webmagazine_setup' );



if ( ! function_exists( 'webmagazine_setup' ) ):

/**

 * Sets up theme defaults and registers support for various WordPress features.

 *

 * Note that this function is hooked into the after_setup_theme hook, which runs

 * before the init hook. The init hook is too late for some features, such as indicating

 * support post thumbnails.

 *

 * To override webmagazine_setup() in a child theme, add your own webmagazine_setup to your child theme's

 * functions.php file.

 *

 * @uses add_theme_support() To add support for post thumbnails, navigation menus, and automatic feed links.

 * @uses add_custom_background() To add support for a custom background.

 * @uses add_editor_style() To style the visual editor.

 * @uses load_theme_textdomain() For translation/localization support.

 * @uses add_custom_image_header() To add support for a custom header.

 * @uses register_default_headers() To register the default custom header images provided with the theme.

 * @uses set_post_thumbnail_size() To set a custom post thumbnail size.

 *

 * @since Twenty Ten 1.0

 */

function webmagazine_setup() {



	// This theme styles the visual editor with editor-style.css to match the theme style.

	add_editor_style();



	// This theme uses post thumbnails

	add_theme_support( 'post-thumbnails' );



	// Add default posts and comments RSS feed links to head

	add_theme_support( 'automatic-feed-links' );



	// Make theme available for translation

	// Translations can be filed in the /languages/ directory

	load_theme_textdomain( 'webmagazine', TEMPLATEPATH . '/languages' );



	$locale = get_locale();

	$locale_file = TEMPLATEPATH . "/languages/$locale.php";

	if ( is_readable( $locale_file ) )

		require_once( $locale_file );



	// This theme uses wp_nav_menu() in one location.

	register_nav_menus( array(

		'primary' => __( 'Primary Navigation', 'webmagazine' ),

	) );



	// This theme allows users to set a custom background

	add_custom_background();



	// Your changeable header business starts here

	define( 'HEADER_TEXTCOLOR', '' );

	// No CSS, just IMG call. The %s is a placeholder for the theme template directory URI.

	define( 'HEADER_IMAGE', '%s/images/headers/path.jpg' );



	// The height and width of your custom header. You can hook into the theme's own filters to change these values.

	// Add a filter to webmagazine_header_image_width and webmagazine_header_image_height to change these values.

	define( 'HEADER_IMAGE_WIDTH', apply_filters( 'webmagazine_header_image_width', 940 ) );

	define( 'HEADER_IMAGE_HEIGHT', apply_filters( 'webmagazine_header_image_height', 198 ) );



	// We'll be using post thumbnails for custom header images on posts and pages.

	// We want them to be 940 pixels wide by 198 pixels tall.

	// Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php.

	set_post_thumbnail_size( HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT, true );



	// Don't support text inside the header image.

	define( 'NO_HEADER_TEXT', true );



	// Add a way for the custom header to be styled in the admin panel that controls

	// custom headers. See webmagazine_admin_header_style(), below.

	add_custom_image_header( '', 'webmagazine_admin_header_style' );



	// ... and thus ends the changeable header business.



	// Default custom headers packaged with the theme. %s is a placeholder for the theme template directory URI.

	register_default_headers( array(

		'berries' => array(

			'url' => '%s/images/headers/berries.jpg',

			'thumbnail_url' => '%s/images/headers/berries-thumbnail.jpg',

			/* translators: header image description */

			'description' => __( 'Berries', 'webmagazine' )

		),

		'cherryblossom' => array(

			'url' => '%s/images/headers/cherryblossoms.jpg',

			'thumbnail_url' => '%s/images/headers/cherryblossoms-thumbnail.jpg',

			/* translators: header image description */

			'description' => __( 'Cherry Blossoms', 'webmagazine' )

		),

		'concave' => array(

			'url' => '%s/images/headers/concave.jpg',

			'thumbnail_url' => '%s/images/headers/concave-thumbnail.jpg',

			/* translators: header image description */

			'description' => __( 'Concave', 'webmagazine' )

		),

		'fern' => array(

			'url' => '%s/images/headers/fern.jpg',

			'thumbnail_url' => '%s/images/headers/fern-thumbnail.jpg',

			/* translators: header image description */

			'description' => __( 'Fern', 'webmagazine' )

		),

		'forestfloor' => array(

			'url' => '%s/images/headers/forestfloor.jpg',

			'thumbnail_url' => '%s/images/headers/forestfloor-thumbnail.jpg',

			/* translators: header image description */

			'description' => __( 'Forest Floor', 'webmagazine' )

		),

		'inkwell' => array(

			'url' => '%s/images/headers/inkwell.jpg',

			'thumbnail_url' => '%s/images/headers/inkwell-thumbnail.jpg',

			/* translators: header image description */

			'description' => __( 'Inkwell', 'webmagazine' )

		),

		'path' => array(

			'url' => '%s/images/headers/path.jpg',

			'thumbnail_url' => '%s/images/headers/path-thumbnail.jpg',

			/* translators: header image description */

			'description' => __( 'Path', 'webmagazine' )

		),

		'sunset' => array(

			'url' => '%s/images/headers/sunset.jpg',

			'thumbnail_url' => '%s/images/headers/sunset-thumbnail.jpg',

			/* translators: header image description */

			'description' => __( 'Sunset', 'webmagazine' )

		)

	) );

}

endif;



if ( ! function_exists( 'webmagazine_admin_header_style' ) ) :

/**

 * Styles the header image displayed on the Appearance > Header admin panel.

 *

 * Referenced via add_custom_image_header() in webmagazine_setup().

 *

 * @since Twenty Ten 1.0

 */

function webmagazine_admin_header_style() {

?>

<style type="text/css">

/* Shows the same border as on front end */

#headimg {

	border-bottom: 1px solid #000000;

	border-top: 4px solid #000000;

}



/* If NO_HEADER_TEXT is false, you can style here the header text preview */

#headimg #name {

}



#headimg #desc {

}

</style>

<?php

}

endif;



if ( ! function_exists( 'webmagazine_the_page_number' ) ) :

/**

 * Prints the page number currently being browsed, with a vertical bar before it.

 *

 * Used in Twenty Ten's header.php to add the page number to the <title> HTML tag.

 *

 * @since Twenty Ten 1.0

 */

function webmagazine_the_page_number() {

	global $paged; // Contains page number.

	if ( $paged >= 2 )

		echo ' | ' . sprintf( __( 'Page %s', 'webmagazine' ), $paged );

}

endif;



/**

 * Get our wp_nav_menu() fallback, wp_page_menu(), to show a home link.

 *

 * To override this in a child theme, remove the filter and optionally add

 * your own function tied to the wp_page_menu_args filter hook.

 *

 * @since Twenty Ten 1.0

 */

function webmagazine_page_menu_args( $args ) {

	$args['show_home'] = true;

	return $args;

}

add_filter( 'wp_page_menu_args', 'webmagazine_page_menu_args' );



/**

 * Sets the post excerpt length to 40 characters.

 *

 * To override this length in a child theme, remove the filter and add your own

 * function tied to the excerpt_length filter hook.

 *

 * @since Twenty Ten 1.0

 * @return int

 */

function webmagazine_excerpt_length( $length ) {

	return 40;

}

add_filter( 'excerpt_length', 'webmagazine_excerpt_length' );



/**

 * Replaces "[...]" (appended to automatically generated excerpts) with an ellipsis.

 *

 * To override this in a child theme, remove the filter and add your own

 * function tied to the excerpt_more filter hook.

 *

 * @since Twenty Ten 1.0

 * @return string An ellipsis

 */

function webmagazine_auto_excerpt_more( $more ) {

	return ' &hellip;';

}

add_filter( 'excerpt_more', 'webmagazine_auto_excerpt_more' );



/**

 * Adds a pretty "Continue Reading" link to post excerpts.

 *

 * To override this link in a child theme, remove the filter and add your own

 * function tied to the get_the_excerpt filter hook.

 *

 * @since Twenty Ten 1.0

 * @return string Excerpt with a pretty "Continue Reading" link

 */

function webmagazine_custom_excerpt_more( $output ) {

	return $output . ' <a href="'. get_permalink() . '">' . __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'webmagazine' ) . '</a>';

}

add_filter( 'get_the_excerpt', 'webmagazine_custom_excerpt_more' );



/**

 * Remove inline styles printed when the gallery shortcode is used.

 *

 * Galleries are styled by the theme in Twenty Ten's style.css.

 *

 * @since Twenty Ten 1.0

 * @return string The gallery style filter, with the styles themselves removed.

 */

function webmagazine_remove_gallery_css( $css ) {

	return preg_replace( "#<style type='text/css'>(.*?)</style>#s", '', $css );

}

add_filter( 'gallery_style', 'webmagazine_remove_gallery_css' );



if ( ! function_exists( 'webmagazine_comment' ) ) :

/**

 * Template for comments and pingbacks.

 *

 * To override this walker in a child theme without modifying the comments template

 * simply create your own webmagazine_comment(), and that function will be used instead.

 *

 * Used as a callback by wp_list_comments() for displaying the comments.

 *

 * @since Twenty Ten 1.0

 */

function webmagazine_comment( $comment, $args, $depth ) {

	$GLOBALS['comment'] = $comment; ?>

	<?php if ( '' == $comment->comment_type ) : ?>

	<li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">

		<div id="comment-<?php comment_ID(); ?>">

		<div class="comment-author vcard">

			<?php echo get_avatar( $comment, 40 ); ?>

			<?php printf( __( '%s <span class="says">says:</span>', 'webmagazine' ), sprintf( '<cite class="fn">%s</cite>', get_comment_author_link() ) ); ?>

		</div><!-- .comment-author .vcard -->

		<?php if ( $comment->comment_approved == '0' ) : ?>

			<em><?php _e( 'Your comment is awaiting moderation.', 'webmagazine' ); ?></em>

			<br />

		<?php endif; ?>



		<div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">

			<?php

				/* translators: 1: date, 2: time */

				printf( __( '%1$s at %2$s', 'webmagazine' ), get_comment_date(),  get_comment_time() ); ?></a><?php edit_comment_link( __( '(Edit)', 'webmagazine' ), ' ' );

			?>

		</div><!-- .comment-meta .commentmetadata -->



		<div class="comment-body"><?php comment_text(); ?></div>



		<div class="reply">

			<?php comment_reply_link( array_merge( $args, array( 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>

		</div><!-- .reply -->

	</div><!-- #comment-##  -->



	<?php else : ?>

	<li class="post pingback">

		<p><?php _e( 'Pingback:', 'webmagazine' ); ?> <?php comment_author_link(); ?><?php edit_comment_link( __('(Edit)', 'webmagazine'), ' ' ); ?></p>

	<?php endif;

}

endif;



/**

 * Register widgetized areas, including two sidebars and four widget-ready columns in the footer.

 *

 * To override webmagazine_widgets_init() in a child theme, remove the action hook and add your own

 * function tied to the init hook.

 *

 * @since Twenty Ten 1.0

 * @uses register_sidebar

 */

function webmagazine_widgets_init() {

	// Area 1, located at the top of the sidebar.

	register_sidebar( array(

		'name' => __( 'Primary Widget Area', 'webmagazine' ),

		'id' => 'primary-widget-area',

		'description' => __( 'The primary widget area', 'webmagazine' ),

		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',

		'after_widget' => '</li>',

		'before_title' => '<h3 class="widget-title">',

		'after_title' => '</h3>',

	) );



	// Area 2, located below the Primary Widget Area in the sidebar. Empty by default.

	register_sidebar( array(

		'name' => __( 'Secondary Widget Area', 'webmagazine' ),

		'id' => 'secondary-widget-area',

		'description' => __( 'The secondary widget area', 'webmagazine' ),

		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',

		'after_widget' => '</li>',

		'before_title' => '<h3 class="widget-title">',

		'after_title' => '</h3>',

	) );

		// Area 2 right, located below the Primary Widget Area in the sidebar. Empty by default.

	register_sidebar( array(

		'name' => __( 'Third Widget Area', 'webmagazine' ),

		'id' => 'Third-widget-area',

		'description' => __( 'The third widget area', 'webmagazine' ),

		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',

		'after_widget' => '</li>',

		'before_title' => '<h3 class="widget-title">',

		'after_title' => '</h3>',

	) );

	

	// Area 3, located in the footer. Empty by default.

	register_sidebar( array(

		'name' => __( 'First Footer Widget Area', 'webmagazine' ),

		'id' => 'first-footer-widget-area',

		'description' => __( 'The first footer widget area', 'webmagazine' ),

		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',

		'after_widget' => '</li>',

		'before_title' => '<h3 class="widget-title">',

		'after_title' => '</h3>',

	) );



	// Area 4, located in the footer. Empty by default.

	register_sidebar( array(

		'name' => __( 'Second Footer Widget Area', 'webmagazine' ),

		'id' => 'second-footer-widget-area',

		'description' => __( 'The second footer widget area', 'webmagazine' ),

		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',

		'after_widget' => '</li>',

		'before_title' => '<h3 class="widget-title">',

		'after_title' => '</h3>',

	) );



	// Area 5, located in the footer. Empty by default.

	register_sidebar( array(

		'name' => __( 'Third Footer Widget Area', 'webmagazine' ),

		'id' => 'third-footer-widget-area',

		'description' => __( 'The third footer widget area', 'webmagazine' ),

		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',

		'after_widget' => '</li>',

		'before_title' => '<h3 class="widget-title">',

		'after_title' => '</h3>',

	) );



	// Area 6, located in the footer. Empty by default.

	register_sidebar( array(

		'name' => __( 'Fourth Footer Widget Area', 'webmagazine' ),

		'id' => 'fourth-footer-widget-area',

		'description' => __( 'The fourth footer widget area', 'webmagazine' ),

		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',

		'after_widget' => '</li>',

		'before_title' => '<h3 class="widget-title">',

		'after_title' => '</h3>',

	) );

}

/** Register sidebars by running webmagazine_widgets_init() on the widgets_init hook. */

add_action( 'widgets_init', 'webmagazine_widgets_init' );



/**

 * Removes the default styles that are packaged with the Recent Comments widget.

 *

 * To override this in a child theme, remove the filter and optionally add your own

 * function tied to the widgets_init action hook.

 *

 * @since Twenty Ten 1.0

 */

function webmagazine_remove_recent_comments_style() {

	global $wp_widget_factory;

	remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' ) );

}

add_action( 'widgets_init', 'webmagazine_remove_recent_comments_style' );



if ( ! function_exists( 'webmagazine_posted_on' ) ) :

/**

 * Prints HTML with meta information for the current post—date/time and author.

 *

 * @since Twenty Ten 1.0

 */

function webmagazine_posted_on() {

	printf( __( '<span %1$s>Posted on</span> %2$s by %3$s', 'webmagazine' ),

		'class="meta-prep meta-prep-author"',

		sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><span class="entry-date">%3$s</span></a> <span class="meta-sep">',

			get_permalink(),

			esc_attr( get_the_time() ),

			get_the_date()

		),

		sprintf( '</span> <span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s">%3$s</a></span>',

			get_author_posts_url( get_the_author_meta( 'ID' ) ),

			sprintf( esc_attr__( 'View all posts by %s', 'webmagazine' ), get_the_author() ),

			get_the_author()

		)

	);

}

endif;



if ( ! function_exists( 'webmagazine_posted_in' ) ) :

/**

 * Prints HTML with meta information for the current post (category, tags and permalink).

 *

 * @since Twenty Ten 1.0

 */

function webmagazine_posted_in() {

	// Retrieves tag list of current post, separated by commas.

	$tag_list = get_the_tag_list( '', ', ' );

	if ( $tag_list ) {

		$posted_in = __( 'This entry was posted in %1$s and tagged %2$s. Bookmark the <a href="%3$s" title="Permalink to %4$s" rel="bookmark">permalink</a>.', 'webmagazine' );

	} elseif ( is_object_in_taxonomy( get_post_type(), 'category' ) ) {

		$posted_in = __( 'This entry was posted in %1$s. Bookmark the <a href="%3$s" title="Permalink to %4$s" rel="bookmark">permalink</a>.', 'webmagazine' );

	} else {

		$posted_in = __( 'Bookmark the <a href="%3$s" title="Permalink to %4$s" rel="bookmark">permalink</a>.', 'webmagazine' );

	}

	// Prints the string, replacing the placeholders.

	printf(

		$posted_in,

		get_the_category_list( ', ' ),

		$tag_list,

		get_permalink(),

		the_title_attribute( 'echo=0' )

	);

}

endif;



if ( function_exists('register_sidebar') )

    register_sidebar(array(

        'before_widget' => '<li id="%1$s" class="widget %2$s">',

        'after_widget' => '</li>',

        'before_title' => '<h2 class="widgettitle">',

        'after_title' => '</h2>',

    ));





/* Theme Administration */



add_action('admin_menu', 'webmag_add_theme_page');



function webmag_init() {

	// Category to show in the top menu //

	add_option('webmag_first_cat', 'name');

	// featured category//

	add_option('webmag_second_cat','name');

	// Right column //

	add_option('webmag_right_cat', '1,2,3');

	add_option('webmag_nb_right_cat', '2');

	// left column //

	add_option('webmag_third_cat', 'name');

	add_option('webmag_forth_cat', '2');

	add_option('webmag_showblogroll_left', '1');

	add_option('webmag_showarchives_left', '1');

}



function webmag_add_theme_page() {

	if((get_option('webmag_second_cat') == '')||(get_option('webmag_right_cat') == '')||(get_option('webmag_first_cat') == '')

	||(get_option('webmag_third_cat') == '')||(get_option('webmag_forth_cat') == '')||(get_option('webmag_nb_right_cat') == '')

	||(get_option('webmag_showblogroll_left') == '')||(get_option('webmag_showarchives_left') == '')) {

		webmag_init();

	}

	

	if ($_GET['page'] == basename(__FILE__)) {

		if ( 'save' == $_REQUEST['action'] ) {

		

		

		if(isset($_REQUEST['webmag_first_cat'])) {

				update_option('webmag_first_cat', $_REQUEST['webmag_first_cat']);

			} else	update_option('webmag_first_cat', '');	

		

			if(isset($_REQUEST['webmag_second_cat'])) {

				update_option('webmag_second_cat', $_REQUEST['webmag_second_cat']);

			} else	update_option('webmag_second_cat', '');	

		

			

			if(isset($_REQUEST['webmag_third_cat'])) {

				update_option('webmag_third_cat', $_REQUEST['webmag_third_cat']);

			} else	update_option('webmag_third_cat', '');	

			

			if(isset($_REQUEST['webmag_forth_cat'])) {

				update_option('webmag_forth_cat', $_REQUEST['webmag_forth_cat']);

			} else	update_option('webmag_forth_cat', '');	

			

				

			

			header("Location: themes.php?page=functions.php&saved=true");

			die;			

		}

		add_action('admin_head', 'webmag_theme_page_head');

	}

	add_theme_page('webmagazine-Custom Options', 'webmagazine Custom Options', 'edit_themes', basename(__FILE__), 'webmag_theme_page');

}



function webmag_theme_page_head() {

	// css+script ...

?>



	<style type="text/css">

		p {margin-left:4px;}

		#webmag {margin:5px;padding:10px;}

	</style>



<?php

} 



function webmag_theme_page() {

	if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>Options Saved</strong></p></div>';

?>

<div class="wrap">

	<div id="webmag">

		<h2>webmagazine Custom Options</h2>

		<form name="webmag" method="post" action="<?php $_SERVER['REQUEST_URI']; ?>">

			<input type="hidden" name="action" value="save" />

			<table class="optiontable">

				<tbody>

				<tr>

					<th>Name of the first category</em> :</th>

					<td><input name="webmag_first_cat" id="webmag_first_cat" type="text" class="code" value="<?php echo get_option('webmag_first_cat'); ?>" /><br/>

					</td>

				</tr>

				<tr>

					<th>Name of the <em>second category</em>:</th>

					<td><input name="webmag_second_cat" id="webmag_second_cat" type="text" class="code" value="<?php echo get_option('webmag_second_cat'); ?>" /><br/>

					</td>

				</tr>

				<tr>

					<th>Name of the <em>third category</em>:</th>

					<td><input name="webmag_third_cat" id="webmag_third_cat" type="text" class="code" value="<?php echo get_option('webmag_third_cat'); ?>" /><br/>

					</td>

				</tr>

				<tr>

					<th>Name of the <em>forth category</em>:</th>

					<td><input name="webmag_forth_cat" id="webmag_forth_cat" type="text" class="code" value="<?php echo get_option('webmag_forth_cat'); ?>" /><br/>

					</td>

				</tr>

				

					

				</tbody>

			</table>

		<p class="submit">

			<input type="submit" name="Save" value="Apply &raquo;" />

		</p>

		</form>

		

	</div>

</div>	

<?php

}

?>

