103 lines
3.8 KiB
PHP
103 lines
3.8 KiB
PHP
<?php
|
|
namespace ESI_CRVI_AGENDA\controllers;
|
|
|
|
use ESI_CRVI_AGENDA\models\CRVI_Departement_Model;
|
|
|
|
class CRVI_Departement_Controller {
|
|
public static function register_cpt() {
|
|
register_post_type('departement', [
|
|
'label' => 'Départements',
|
|
'labels' => [
|
|
'name' => 'Départements',
|
|
'singular_name' => 'Département',
|
|
'add_new' => 'Ajouter un département',
|
|
'add_new_item' => 'Ajouter un nouveau département',
|
|
'edit_item' => 'Modifier le département',
|
|
'new_item' => 'Nouveau département',
|
|
'view_item' => 'Voir le département',
|
|
'search_items' => 'Rechercher un département',
|
|
'not_found' => 'Aucun département trouvé',
|
|
'not_found_in_trash' => 'Aucun département dans la corbeille',
|
|
],
|
|
'public' => false,
|
|
'show_ui' => true,
|
|
'show_in_menu' => true,
|
|
'menu_position' => 25,
|
|
'supports' => ['title'],
|
|
'capability_type' => 'post',
|
|
]);
|
|
}
|
|
|
|
public static function register_routes() {
|
|
register_rest_route('crvi_agenda/v1', '/departements', [
|
|
'methods' => 'GET',
|
|
'callback' => [self::class, 'get_items'],
|
|
'permission_callback' => [self::class, 'can_edit'],
|
|
]);
|
|
|
|
register_rest_route('crvi_agenda/v1', '/departements/(?P<id>\d+)', [
|
|
'methods' => 'GET',
|
|
'callback' => [self::class, 'get_item'],
|
|
'permission_callback' => [self::class, 'can_edit'],
|
|
]);
|
|
|
|
register_rest_route('crvi_agenda/v1', '/departements', [
|
|
'methods' => 'POST',
|
|
'callback' => [self::class, 'create_item'],
|
|
'permission_callback' => [self::class, 'can_edit'],
|
|
]);
|
|
|
|
register_rest_route('crvi_agenda/v1', '/departements/(?P<id>\d+)', [
|
|
'methods' => 'PUT',
|
|
'callback' => [self::class, 'update_item'],
|
|
'permission_callback' => [self::class, 'can_edit'],
|
|
]);
|
|
|
|
register_rest_route('crvi_agenda/v1', '/departements/(?P<id>\d+)', [
|
|
'methods' => 'DELETE',
|
|
'callback' => [self::class, 'delete_item'],
|
|
'permission_callback' => [self::class, 'can_delete'],
|
|
]);
|
|
}
|
|
|
|
|
|
//import csv
|
|
public static function import_csv_admin() {
|
|
if (!current_user_can('manage_options')) {
|
|
wp_die('Non autorisé');
|
|
}
|
|
if (empty($_FILES['import_csv']['tmp_name'])) {
|
|
wp_redirect(admin_url('admin.php?page=crvi_agenda&import=error&msg=Fichier manquant'));
|
|
exit;
|
|
}
|
|
$file = $_FILES['import_csv']['tmp_name'];
|
|
$handle = fopen($file, 'r');
|
|
if (!$handle) {
|
|
wp_redirect(admin_url('admin.php?page=crvi_agenda&import=error&msg=Impossible d\'ouvrir le fichier'));
|
|
exit;
|
|
}
|
|
$header = fgetcsv($handle, 0, ',');
|
|
$created = $updated = $errors = 0;
|
|
while (($row = fgetcsv($handle, 0, ',')) !== false) {
|
|
if (count($row) !== count($header)) continue;
|
|
$data = array_combine($header, $row);
|
|
|
|
|
|
$data = array_combine(
|
|
array_map(function($k) { return sanitize_title($k); }, array_keys($data)),
|
|
array_map('trim', array_values($data))
|
|
);
|
|
|
|
|
|
$result = CRVI_Departement_Model::create($data, false);
|
|
if ($result === 'created') $created++;
|
|
elseif ($result === 'updated') $updated++;
|
|
else $errors++;
|
|
}
|
|
fclose($handle);
|
|
$msg = "Créés: $created, Modifiés: $updated, Erreurs: $errors";
|
|
wp_redirect(admin_url('admin.php?page=crvi_agenda&import=success&msg=' . urlencode($msg)));
|
|
exit;
|
|
}
|
|
|
|
}
|