<?php

/*
  Fichier : GESTION TCP PLUGIN DIR . '/tcp/tcp-actualites.inc.php'
  Objet : Création d'un TCP
  Nom : TCP Actualités
  Description : Crée un nouveau TCP pour la gestion des actualités
 */

// Création du TCP
function at111_init_TCP_Actualites() {
    $labels = array(
        'name' => 'Actualités',
        'singular_name' => 'Actualité',
        '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' => 'Actualités'
    );
    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'query_var' => true,
        'rewrite' => array('slug' => 'actualites'),
        'has_archive' => true,
//    	'hierarchical' => false,
        'menu_position' => 20,
        'menu_icon' => 'dashicons-welcome-widgets-menus',
        'supports' => array('title', 'editor', 'thumbnail', 'revisions', 'comments'),
        'show_in_rest' => true,
        'rest_base' => 'actualites',
        'rest_controller_class' => 'WP_REST_Posts_Controller'
    );
    // Enregistrement du TCP
    register_post_type('actualites', $args);

    // Labels des rubriques.
    $rubLabels = array(
        'name' => 'Rubriques',
        'singular_name' => 'Rubrique',
        'search_items' => 'Rechercher',
        'popular_items' => 'Rubriques souvent utilisées',
        'all_items' => 'Toutes les rubriques',
        'edit_item' => 'Modifier une rubrique',
        'update_item' => 'Mettre à jour une rubrique',
        'add_new_item' => 'Ajouter une rubrique',
        'new_item_name' => 'Nouvelle rubrique'
    );

    // Rubriques.
    register_taxonomy('actualites-rubrique', 'actualites', array(
        'hierarchical' => true,
        'label' => 'Rubriques',
        'labels' => $rubLabels,
        'rewrite' => array('slug' => 'actualites-rubrique'),
        'show_in_nav_menus' => false,
        'show_admin_column' => true
    ));
}

add_action('init', 'at111_init_TCP_Actualites');

// 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-actualites_columns', 'my_edit_Actualites_columns');

function my_edit_Actualites_columns($columns) {
    $columns = array(
        'cb' => '<input type="checkbox" />',
        'title' => __('Titre'),
        'actualites-rubrique' => __('Rubrique'),
        'date' => __('Date de publication')
    );
    return $columns;
}

// Remplissage des lignes du tableau
add_action('manage_actualites_posts_custom_column', 'my_manage_Actualites_columns', 10, 2);

function my_manage_Actualites_columns($column, $post_id) {
    global $post;
    switch ($column) {
        case 'actualites-rubrique' :
            $terms = get_the_terms($post_id, 'actualites-rubrique');
            /* 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, 'actualites-rubrique' => $term->slug), 'edit.php')), esc_html(sanitize_term_field('name', $term->name, $term->term_id, 'actualites-rubrique', '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('Aucune rubrique trouvée');
            }
            break;
        /* Break out */
        default :
            break;
    }
}

//actualités partagés
/*
  add_action('admin_menu', 'menu_actusalites_partagees');
  function menu_actusalites_partagees(){
  add_submenu_page(
  'edit.php?post_type=actualites',
  'Gestion des actualités partagées', // le titre de la page
  'Actualités partagées',	// le nom de la page dans le menu d'admin
  'administrator',  // le rôle d'utilisateur requis pour voir cette page
  'at111-actualites-partagees', // un identifiant unique de la page
  'actualites_partagess'// le nom d'une fonction qui affichera la page
  );
  } */

/* function actualites_partagess() {

  echo '<h2>Actualités partagées disponibles</h2>';
  echo '<form method="post">';

  global $sites_communes;

  foreach ($sites_communes as $commune => $site) {

  if($site != get_site_url())
  {

  if(isset($_POST['submit']))
  {
  if(isset($_POST['actus_shared_'.$commune]))
  update_option('actus_shared_'.$commune, $_POST['actus_shared_'.$commune]);
  else
  update_option('actus_shared_'.$commune, '');
  }

  echo '<h3>'.ucfirst($commune).'</h3>';

  $actus_shared = get_option('actus_shared_'.$commune);

  $url = $site.'/wp-json/wp/v2/actualites?filter[meta_key]=shared&filter[meta_value]=1';

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_URL, $url);
  $result=curl_exec($ch);
  curl_close($ch);

  $actus = json_decode($result, true);

  foreach($actus as $actu)
  {
  echo '<input type="checkbox" id="'.$commune.'_'.$actu['id'].'" name="actus_shared_'.$commune.'[]"'.(@in_array($actu['id'], $actus_shared) ? 'checked="checked"' : '').' value="'.$actu['id'].'" /> <label for="'.$commune.'_'.$actu['id'].'">'.$actu['title']['rendered'].'</label> (Publiée le '.date('d/m/Y',strtotime($actu['date'])).')  <a href="'.$actu['link'].'" target="_blank">Voir l\'actualité</a><br />';
  }
  }

  }

  echo '<input type="submit" value="Mettre à jour" name="submit" />';
  echo '</form>';

  } */

// Permet d'ajout des filtre sur l'API REST
function json_api_add_filters($valid_vars) {

    // Ajoutez les filtres dans le tableau
    $my_filters = array('meta_key', 'meta_value', 'meta_compare', 'date_query');
    $valid_vars = array_merge($valid_vars, $my_filters);

    return $valid_vars;
}

add_filter('rest_query_vars', 'json_api_add_filters');

//Permet la récupération de l'image à la une dans le JSON renvoyé par l'API
add_action('rest_api_init', 'ccw_insert_thumbnail_url');

function ccw_insert_thumbnail_url() {
    register_rest_field('actualites', 'thumbnail', array(
        'get_callback' => 'ccw_get_thumbnail_url',
        'update_callback' => null,
        'schema' => null,
            )
    );
}

function ccw_get_thumbnail_url($post) {
    if (has_post_thumbnail($post['id'])) {
        $imgArray = wp_get_attachment_image_src(get_post_thumbnail_id($post['id']), 'medium');
        $imgURL = $imgArray[0];
        return $imgURL;
    } else {
        return false;
    }
}
