<?php
/* functions.php
 *
 * All the function of Kazhnuz.Space
 *
 */


 /* 0. Excerpt and thumbnail support
  *
  * Ces fonctions ajoutent les fonctionnalités de base du theme,
  * tel que les extraits et les miniatures.
  */

 function kspace_post_supports() {
 	add_post_type_support( 'post', 'excerpt');
 }

 add_action( 'init', 'kspace_post_supports' );

 add_theme_support( 'post-thumbnails' );
 set_post_thumbnail_size( 825, 510, true );

/* 1. Niveau support
 *
 * Permet d'afficher les niveaux de post pour les post features
 */

// 1.1 - Enregistrement de la taxonomy pour le flag
register_taxonomy(
  'flag',
  'post',
  array(
    'label' => 'Flag',
      'labels' => array(
      'name' => 'Flags',
      'singular_name' => 'Flag',
      'all_items' => 'Tous les flags',
      'edit_item' => 'Éditer le flag',
      'view_item' => 'Voir le flag',
      'update_item' => 'Mettre à jour le flag',
      'add_new_item' => 'Ajouter un flag',
      'new_item_name' => 'Nouveau flag',
      'search_items' => 'Rechercher parmi les flags',
      'popular_items' => 'Flags les plus utilisés'
    ),
  'hierarchical' => false
  )
);

register_taxonomy_for_object_type( 'flag', 'post' );

// 1.2 - Ajout/Modif du niveau du flag
function flags_taxonomy_custom_fields($tag) {
   // Check for existing taxonomy meta for the term you're editing
    $t_id = $tag->term_id; // Get the ID of the term you're editing
    $term_meta = get_option( "taxonomy_term_$t_id" ); // Do the check
?>

<tr class="form-field">
    <th scope="row" valign="top">
        <label for="niveau"><?php _e('Niveau du flag'); ?></label>
    </th>
    <td>
        <input type="text" name="term_meta[niveau]" id="term_meta[niveau]" size="25" style="width:60%;" value="<?php echo $term_meta['niveau'] ? $term_meta['niveau'] : ''; ?>"><br />
        <span class="description"><?php _e('Le niveau du flag (info, warning, danger…)'); ?></span>
    </td>
</tr>

<?php
}

function flags_taxonomy_custom_fields_add( $taxonomy ) {
   // Check for existing taxonomy meta for the term you're editing
    $t_id = $tag->term_id; // Get the ID of the term you're editing
    $term_meta = get_option( "taxonomy_term_$t_id" ); // Do the check
?>

<div class="form-field">
  <label for="term_meta[niveau]"><?php _e('Niveau du flag'); ?></label>
  <input type="text" name="term_meta[niveau]" id="term_meta[niveau]" />
  <p><?php _e('Le niveau du flag (info, warning, danger…)'); ?>.</p>
</div>

<?php
}

add_action( 'post_tag_edit_form_fields', 'kspace_edit_term_fields', 10, 2 );

// 1.3 - Sauvegarde du niveau du flag
function save_taxonomy_custom_fields( $term_id ) {
    if ( isset( $_POST['term_meta'] ) ) {
        $t_id = $term_id;
        $term_meta = get_option( "taxonomy_term_$t_id" );
        $cat_keys = array_keys( $_POST['term_meta'] );
            foreach ( $cat_keys as $key ){
            if ( isset( $_POST['term_meta'][$key] ) ){
                $term_meta[$key] = $_POST['term_meta'][$key];
            }
        }
        //save the option array
        update_option( "taxonomy_term_$t_id", $term_meta );
    }
}

// Ajout des fields
add_action( 'flag_edit_form_fields', 'flags_taxonomy_custom_fields', 10, 2 );
add_action( 'flag_add_form_fields', 'flags_taxonomy_custom_fields_add' );
add_action( 'created_flag', 'save_taxonomy_custom_fields' );
add_action( 'edited_flag', 'save_taxonomy_custom_fields', 10, 2 );


function kspace_cat_breadcrumb_nav($categoryName, $icon) {
?>
    <nav aria-label="breadcrumb">
        <ol class="breadcrumb">
            <li class="breadcrumb-item"><a href="<?php echo site_url(); ?>">kazhnuz.space</a>
            </li><li class="breadcrumb-item" aria-current="page">
                <span class="active"><i class="fa fa-<?php echo $icon; ?>" aria-hidden="true"></i> <?php echo $categoryName; ?></span>
            </li>
        </ol>
    </nav>
<?php
}

function kspace_cat_breadcrumb($categoryName, $icon) {
?>
    <div class="flex-that">
        <?php kspace_cat_breadcrumb_nav($categoryName, $icon); ?>
    </div>
<?php
}

function kspace_cat_breadcrumb_with_rss($categoryName, $icon, $categoryType, $rssLink) {
?>
    <div class="flex-that">
        <?php kspace_cat_breadcrumb_nav($categoryName, $icon); ?>
        <div class="rss">
            <a href="<?php echo $rssLink; ?>" class="btn btn-orange" /><i class="fa fa-rss" aria-hidden="true"></i><span class="sr-only">Flux RSS de <?php echo $categoryType; ?></span></a>
        </div>
    </div>
<?php
}

/* 2. Réseaux sociaux
 *
 * Permet d'afficher les réseaux sociaux en bas du post.
 *
 */

function mypost_social_sharing_buttons($content) {
  // Fork of mypost_social_sharing_buttons
  // You can find the original at the following url:
  // https://mypost_.com/how-to-create-social-sharing-button-without-any-plugin-and-script-loading-wordpress-speed-optimization-goal/

	global $post;
	if(is_singular() && !is_page()){

		// Get current page URL
		$mypost_URL = urlencode(get_permalink());

		// Get current page title
		$mypost_Title = htmlspecialchars(urlencode(html_entity_decode(get_the_title(), ENT_COMPAT, 'UTF-8')), ENT_COMPAT, 'UTF-8');
		// $mypost_Title = str_replace( ' ', '%20', get_the_title());

		// Get Post Thumbnail for pinterest
		$mypost_Thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'full' );

		// Construct sharing URL without using any script
		$twitterURL = 'https://twitter.com/intent/tweet?text='.$mypost_Title.'&amp;url='.$mypost_URL.'&amp;via=mypost_';
		$facebookURL = 'https://www.facebook.com/sharer/sharer.php?u='.$mypost_URL;
		$bufferURL = 'https://bufferapp.com/add?url='.$mypost_URL.'&amp;text='.$mypost_Title;
		$whatsappURL = 'whatsapp://send?text='.$mypost_Title . ' ' . $mypost_URL;
		$linkedInURL = 'https://www.linkedin.com/shareArticle?mini=true&url='.$mypost_URL.'&amp;title='.$mypost_Title;
		$diasporaURL = 'http://sharetodiaspora.github.io/?title=' . $mypost_Title . '&url=' . $mypost_URL;

		// Based on popular demand added Pinterest too
		$pinterestURL = 'https://pinterest.com/pin/create/button/?url='.$mypost_URL.'&amp;media='.$mypost_Thumbnail[0].'&amp;description='.$mypost_Title;

		// Add sharing button at the end of page/page content
		$content .= '<!-- based on crunchify social sharing. Get your copy here: http://crunchify.me/1VIxAsz -->';
		$content .= '<div class="reagir share-buttons">';
		$content .= '<a class="btn-small btn-twitter" href="'. $twitterURL .'" target="_blank"><i aria-label="twitter" class="fa fa-fw fa-twitter"></i></a> ';
		$content .= '<a class="btn-small btn-facebook" href="'.$facebookURL.'" target="_blank"><i aria-label="facebook" class="fa fa-fw fa-facebook"></i></a> ';
		$content .= '<a title="Share to Diaspora*" class="btn-small btn-diaspora" href="'.$diasporaURL.'" target="_blank"><i class="fa fa-fw fa-diaspora"></i></a>';
		$content .= '</div>';

		return $content;
	}else{
		// if not a post/page then don't include sharing button
		return $content;
	}
};
add_filter( 'the_content', 'mypost_social_sharing_buttons');

/* 3. Plus d'info sur les tags
 *
 * Permet d'afficher un lien vers plus d'informations.
 * Le liens est gardé comme un champ supplémentaire dans les tags.
 *
 */

add_action( 'post_tag_add_form_fields', 'kspace_add_term_fields' );

function kspace_add_term_fields( $taxonomy ) {
	echo '<div class="form-field">
	<label for="plus-dinfo">Plus d\'Info</label>
	<input type="text" name="plus-dinfo" id="plus-dinfo" />
	<p>Une URL permettant d\'obtenir plus d\'information sur le tag.</p>
	</div>';
}

add_action( 'post_tag_edit_form_fields', 'kspace_edit_term_fields', 10, 2 );

function kspace_edit_term_fields( $term, $taxonomy ) {

	$value = get_term_meta( $term->term_id, 'plus-dinfo', true );

	echo '<tr class="form-field">
	<th>
		<label for="plus-dinfo">Plus d\'Info</label>
	</th>
	<td>
		<input name="plus-dinfo" id="plus-dinfo" type="text" value="' . esc_attr( $value ) .'" />
		<p class="description">Une URL permettant d\'obtenir plus d\'information sur le tag.</p>
	</td>
	</tr>';
}

add_action( 'created_post_tag', 'kspace_save_term_fields' );
add_action( 'edited_post_tag', 'kspace_save_term_fields' );

function kspace_save_term_fields( $term_id ) {

	update_term_meta(
		$term_id,
		'plus-dinfo',
		sanitize_text_field( $_POST[ 'plus-dinfo' ] )
	);

}

/* 3. Info supplémentaire sur profil utilisateur
 *
 * Permet d'afficher sous forme de chaine de caractères des infos supplémentaires qui seront
 * transformé en un tableau..
 *
 */

add_action( 'show_user_profile', 'kspace_show_extra_profile_fields' );
add_action( 'edit_user_profile', 'kspace_show_extra_profile_fields' );

function kspace_show_extra_profile_fields( $user ) {
	$year = get_the_author_meta( 'infodata', $user->ID );
	?>
	<h3><?php esc_html_e( 'More Info', 'kspace' ); ?></h3>

	<table class="form-table">
		<tr>
			<th><label for="infodata"><?php esc_html_e( 'infodata', 'kspace' ); ?></label></th>
			<td>
				<input type="input"
			       id="infodata"
			       name="infodata"
			       value="<?php echo esc_attr( $year ); ?>"
			       class="regular-text"
				/>
			</td>
		</tr>
	</table>
	<?php
}

add_action( 'personal_options_update', 'kspace_update_profile_fields' );
add_action( 'edit_user_profile_update', 'kspace_update_profile_fields' );

function kspace_update_profile_fields( $user_id ) {
	if ( ! current_user_can( 'edit_user', $user_id ) ) {
		return false;
	}

	update_user_meta( $user_id, 'infodata', $_POST['infodata'] );
}

/* 4. Romans
 *
 * Permet de catégoriser des chapitres ensemble, via une catégorie spécifiques.
 *
 */

register_taxonomy('roman', 'post',
  array(
    'label' => 'Roman',
    'labels' => array(
      'name' => 'Romans',
      'singular_name' => 'Roman',
      'all_items' => 'Tous les romans',
      'edit_item' => 'Éditer le roman',
      'view_item' => 'Voir le roman',
      'update_item' => 'Mettre à jour le roman',
      'add_new_item' => 'Ajouter un roman',
      'new_item_name' => 'Nouveau roman',
      'search_items' => 'Rechercher parmi les romans',
      'popular_items' => 'Romans les plus utilisés'),
    'rewrite'           =>  array('slug' => 'roman'),
    'hierarchical'      =>  false,
    'public'            =>  true,
    'hierarchical'      =>  true,
    'show_in_nav_menus' =>  true,
    'has_archive'       =>  true,
  )
);

 register_taxonomy_for_object_type( 'roman', 'post' );

 // 1.2 - Ajout/Modif du niveau du flag
 function romans_taxonomy_custom_fields($tag) {
    // Check for existing taxonomy meta for the term you're editing
     $t_id = $tag->term_id; // Get the ID of the term you're editing
     $term_meta = get_option( "taxonomy_term_$t_id" ); // Do the check
 ?>

 <tr class="form-field">
     <th scope="row" valign="top">
         <label for="niveau"><?php _e('Couverture du roman'); ?></label>
     </th>
     <td>
         <input type="text" name="term_meta[cover]" id="term_meta[cover]" size="25" style="width:60%;" value="<?php echo $term_meta['cover'] ? $term_meta['cover'] : ''; ?>"><br />
         <span class="description"><?php _e('La couverture du roman, sous format URL'); ?></span>
     </td>
 </tr>

 <?php
 }

 function romans_taxonomy_custom_fields_add( $taxonomy ) {
    // Check for existing taxonomy meta for the term you're editing
     $t_id = $tag->term_id; // Get the ID of the term you're editing
     $term_meta = get_option( "taxonomy_term_$t_id" ); // Do the check
 ?>

 <div class="form-field">
   <label for="term_meta[cover]"><?php _e('Couverture du roman'); ?></label>
   <input type="text" name="term_meta[cover]" id="term_meta[cover]" />
   <p><?php _e('La couverture du roman, sous format URL)'); ?>.</p>
 </div>

 <?php
 }

 // Ajout des fields
 add_action( 'roman_edit_form_fields', 'romans_taxonomy_custom_fields', 10, 2 );
 add_action( 'roman_add_form_fields', 'romans_taxonomy_custom_fields_add' );
 add_action( 'created_roman', 'save_taxonomy_custom_fields' );
 add_action( 'edited_roman', 'save_taxonomy_custom_fields', 10, 2 );

 /* 4. Menus custom
  *
  * Quelques menus custom
  *
  */

  function wpb_custom_new_menu() {
    register_nav_menus(
      array(
        'top-navbar' => __( 'Top Navbar' ),
        'link-menu' => __( 'Links Menu' ),
        'footer-pages' => __( 'Footer pages' ),
        'social' => __( 'Reseaux sociaux' )
      )
    );
  }
  add_action( 'init', 'wpb_custom_new_menu' );
