Crvi/app/controllers/Departement_Controller.php
2026-01-20 07:54:37 +01:00

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;
}
}