<?php
/*
Fichier : TEMPLATEPATH. '/inc/modules/tcp-documents.inc.php'
Objet : Création d'un TCP
Nom : TCP Documents
Description : Crée un nouveau TCP pour la gestion des documents de l'extranet
*/

// Création du TCP
function at111_init_TCP_Documents() {
	$labels = array(
	    'name' => 'Documents',
    	'singular_name' => 'Documents',
    	'add_new' => 'Ajouter',
    	'add_new_item' => 'Ajouter un contenu',
    	'edit_item' => 'Modifier',
    	'new_item' => 'Nouveau',
    	'all_items' => 'Tous les contenu',
    	'view_item' => 'Visualiser',
    	'search_items' => 'Rechercher',
    	'not_found' =>  'Aucun contenu trouvé',
    	'not_found_in_trash' => 'Aucun contenu trouvé dans la corbeille', 
    	'parent_item_colon' => '',
    	'menu_name' => 'Documents extranet'
  	);
   	$args = array(
    	'labels' => $labels,
    	'public' => true,
    	'exclude_from_search' => false, // Exclu de la recherche
    	'publicly_queryable' => true,
    	'show_ui' => true, 
    	'show_in_menu' => true, 
    	'query_var' => true,
    	'rewrite' => array( 'slug' => 'documents-extranet' ),
    	'has_archive' => true, 
    	'hierarchical' => false,
    	'menu_position' => 20,
    	'menu_icon' => 'dashicons-book-alt',
    	'supports' => array( 'title', 'editor', 'revisions' )
  	); 
	// Enregistrement du TCP
	register_post_type( 'documents-extranet', $args );
	
	// Labels des rubriques.
	$rubLabels = array(
		'name' => 'Dossiers',
		'singular_name' => 'Dossier',
		'search_items' => 'Rechercher',
		'popular_items' => 'Dossiers souvent utilisés',
		'all_items' => 'Tous les dossiers',
		'edit_item' => 'Modifier un dossier',
		'update_item' => 'Mettre à jour un dossier',
		'add_new_item' => 'Ajouter un dossier',
		'new_item_name' => 'Nouveau dossier'
	);

	// Rubriques.
	register_taxonomy('dossiers-documents-extranet', 'documents-extranet', array(
		'hierarchical' => true,
		'label' => 'Dossiers',
		'labels' => $rubLabels,
		'rewrite' => array( 'slug' => 'dossiers-documents-extranet' ),
		'show_in_nav_menus' => false,
		'show_admin_column' => true
	));
}
add_action('init', 'at111_init_TCP_Documents');

// Gestion des colonnes de la liste de contenus
// Pour créer un filtre sur les métadonnées ou autres, voir : http://justintadlock.com/archives/2011/06/27/custom-columns-for-custom-post-types

// Création des entêtes de colonnes
add_filter( 'manage_edit-documents-extranet_columns', 'my_edit_Documents_columns' ) ;
function my_edit_Documents_columns( $columns ) {
	$columns = array(
		'cb' => '<input type="checkbox" />',
		'title' => __( 'Titre' ),
		'dossiers-documents-extranet' => __( 'Dossier(s)' ),
		'author' => __('Auteur'),
		'date' => __( 'Date de publication' )
	);
	return $columns;
}

// Remplissage des lignes du tableau
add_action( 'manage_documents-extranet_posts_custom_column', 'my_manage_Documents_columns', 10, 2 );
function my_manage_Documents_columns( $column, $post_id ) {
	global $post;
	switch( $column ) {
		case 'dossiers-documents-extranet' :
			$terms = get_the_terms( $post_id, 'dossiers-documents-extranet' );
			/* Si des taxonomies sont trouvées */
			if (!empty($terms)) {
				$out = array();
				/* On boucle sur chacune des taxonomies et on place un lien */
				foreach ( $terms as $term ) {
					$out[] = sprintf( '<a href="%s">%s</a>',
						esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'dossiers-documents-extranet' => $term->slug ), 'edit.php' ) ),
						esc_html( sanitize_term_field( 'name', $term->name, $term->term_id, 'dossiers-documents-extranet', 'display' ) )
					);
				}
				/* On associe les taxonomies, séparées par une virgule */
				echo join( ', ', $out );
			}
			/* Si aucune taxonomie n'est trouvée, on affiche un message */
			else {
				_e( 'Aucun dossier trouvé' );
			}
			break;
		/* Break out */
		default :
			break;
	}
}


add_action('admin_menu', 'tcp_top_menu_document');
function tcp_top_menu_document() {
	add_submenu_page("edit.php?post_type=documents-extranet", "Options", "Options", "manage_options", '/options_documents_extranet', "mail_document_extranet");
}

function mail_document_extranet(){
	?>
<form method="post">
	<div class='wrap'>
		<h3>Envoyer des notifications par mail:</h3>
		<div class="">
			<?php

			if(isset($_POST['submit-send_tpc_mail_notifications']) && !empty($_POST['submit-send_tpc_mail_notifications'])) {
				if (isset($_POST['send_tpc_mail_notifications']) && !empty($_POST['send_tpc_mail_notifications'])) {
					add_option('send_tpc_mail_notifications', $_POST['send_tpc_mail_notifications']);
					update_option('send_tpc_mail_notifications', $_POST['send_tpc_mail_notifications']);
				}else{
					add_option('send_tpc_mail_notifications', false);
					update_option('send_tpc_mail_notifications', false);
				}
			}
			$checked = '';
			$mailNotif = get_option('send_tpc_mail_notifications');
			if($mailNotif){
				$checked = ' checked="checked" ';
			}
			?>
			<input type="checkbox" name="send_tpc_mail_notifications" value="true" <?php echo $checked; ?> />En cochant cette case les membres d'un ou des groupe(s) associé(s) à/aux dossier(s) recevront une alerte par mail pour informer de la publication d'un document dans l'extranet
			<br />
			<br />
			<button type="submit" name="submit-send_tpc_mail_notifications" value="submit" class="button-primary">Enregistrer</button>
		</div>
	</div>
</form>
<?php
}

add_action( 'transition_post_status', 'send_mail_documents', 10, 3 );
function send_mail_documents( $new_status, $old_status, $post )
{
	if($new_status == 'publish' && $old_status == 'draft' && $post->post_type == 'documents-extranet' && get_option('send_tpc_mail_notifications')){

		$args =
			array(
				'hide_empty' => 0,
				'taxonomy' => 'dossiers-documents-extranet'
			);
		$categories = get_categories( $args );
		$arrayTotalUsers = array();
		foreach ($categories as $categorie) {
			// Test si la catégorie est présente dans le POST tax-input (donc avec des cases à cocher)
			// OU  si la catégorie est la même que la catégorie POST ( donc bouton radio)
			if(in_array($categorie->term_id, $_POST['tax_input']['dossiers-documents-extranet']) ||
				(isset($_POST['cat-document']) && $_POST['cat-document'] == $categorie->term_id)){

				// Récupération de tous les groups
				$listeGroupes = get_option('liste_groupe');
				foreach($listeGroupes as $nomGroupe){
					// Récupération des dossiers du groupe en cours
					$dossiersGroupe = get_option($nomGroupe.'_dossiers');
					$arrayDossiersGroupe = explode(',', $dossiersGroupe);
					// Si l'ID du dossier est parmis les dossiers géré par le groupe
					if(in_array($categorie->term_id, $arrayDossiersGroupe)){
						$userGroupe = get_option($nomGroupe.'_users');
						$arrayUsers = explode(',', $userGroupe);

						foreach($arrayUsers as $idUser){
							$arrayTotalUsers[$idUser] = $_POST['post_title'];
						}

					}
				}
			}
		}

		$arrMailUser = '';

		foreach($arrayTotalUsers as $idUser => $postTitle){
			$userInfo = get_user_by('ID', $idUser);
			$user  = $userInfo->data;
			$sujet = 'Nouveau document mis en ligne';
			$message = 'Bonjour '.$user->display_name."\r\n\r\n";
			// foreach($categoriesNom as $categorieNom) {
			$message .= "Un nouveau document a été mis en ligne :" . $postTitle . "\r\n";
			// }
			$message .= "Connectez-vous sur ".get_home_url()."\r\n\r\n";
			$headers = array(
				'Content-Type: text/html; charset=UTF-8',
				'From: ' . get_bloginfo() . ' <' . get_bloginfo('admin_email') . '>'
			);

			$arrMailUser .= $user->user_email."&nbsp;&nbsp;&nbsp;";

			wp_mail($user->user_email, $sujet, $message, $headers);
		}
	}

}