Changeset 3459679
- Timestamp:
- 02/12/2026 08:55:26 AM (7 weeks ago)
- Location:
- formdev/trunk
- Files:
-
- 3 edited
-
api/Formdev.php (modified) (6 diffs)
-
formdev.php (modified) (2 diffs)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
formdev/trunk/api/Formdev.php
r3459668 r3459679 374 374 375 375 // Récupérer les plannings pour toutes les actions des sessions importées 376 // Récupération optimisée avec limitation et pauses pour éviter les timeouts 376 // Utiliser les sessions récemment récupérées ($list) pour extraire les actions 377 $this->importPlanningsFromSessions($list); 378 } 379 380 //######################################################### 381 // - Import des plannings depuis une liste de sessions fournie 382 public function importPlanningsFromSessions($sessions_list = null, $limit = 100) 383 { 384 // Augmenter le timeout pour cette opération 385 set_time_limit(300); // 5 minutes 386 387 global $wpdb; 388 $table_name = $wpdb->prefix.'formdev_metas'; 389 377 390 $all_plannings = []; 378 391 $action_ids = []; 379 392 380 // Extraire tous les IDs d'actions uniques depuis les sessions récemment récupérées381 if ( isset($list) && is_array($list) && !empty($list)) {382 foreach ($ list as $session) {393 // Si une liste de sessions est fournie, l'utiliser directement 394 if ($sessions_list && is_array($sessions_list) && !empty($sessions_list)) { 395 foreach ($sessions_list as $session) { 383 396 if (isset($session->idAction)) { 384 397 $action_id = intval($session->idAction); … … 388 401 } 389 402 } 390 } 391 392 // Limiter à 100 actions max pour éviter les timeouts (augmenté de 50 à 100) 393 $action_ids = array_slice($action_ids, 0, 100); 403 } else { 404 // Sinon, récupérer les sessions depuis le cache 405 $sessions_meta = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}formdev_metas WHERE meta_key = %s LIMIT 1", 'sessions')); 406 407 if ($sessions_meta && isset($sessions_meta->meta_value)) { 408 $cached_sessions = unserialize($sessions_meta->meta_value); 409 410 if (is_array($cached_sessions) && !empty($cached_sessions)) { 411 // Extraire tous les IDs d'actions uniques depuis les sessions 412 foreach ($cached_sessions as $session) { 413 if (isset($session->idAction)) { 414 $action_id = intval($session->idAction); 415 if (!in_array($action_id, $action_ids)) { 416 $action_ids[] = $action_id; 417 } 418 } 419 } 420 } 421 } 422 423 // Si aucune session en cache, essayer de récupérer depuis l'API 424 if (empty($action_ids)) { 425 $criteria = [ 426 [ 427 [ 428 'entity' => 'action', 429 'field' => 'bDeployerExtranet', 430 'value' => 1, 431 ], 432 ] 433 ]; 434 $json = json_encode(["criteria" => $criteria], JSON_PRETTY_PRINT); 435 $sessions = $this->call('session/liste', $json); 436 437 if (!is_wp_error($sessions) && isset($sessions->list)) { 438 foreach ($sessions->list as $session) { 439 if (isset($session->idAction)) { 440 $action_id = intval($session->idAction); 441 if (!in_array($action_id, $action_ids)) { 442 $action_ids[] = $action_id; 443 } 444 } 445 } 446 } 447 } 448 } 449 450 // Limiter le nombre d'actions pour éviter les timeouts 451 $action_ids = array_slice($action_ids, 0, $limit); 394 452 395 453 // Récupérer les plannings pour chaque action (par batch pour optimiser) … … 397 455 // Récupérer les plannings par groupes de 5 actions pour éviter de surcharger l'API 398 456 $batches = array_chunk($action_ids, 5); 399 $ batch_count= 0;457 $processed = 0; 400 458 401 459 foreach ($batches as $batch) { 402 $batch_count++;403 404 460 foreach ($batch as $action_id) { 405 461 $criteria = [ … … 420 476 $all_plannings[$action_id] = $planning_result->list; 421 477 422 // Gérer la pagination si nécessaire (limité à 3 pages par action pour avoir plus de données)478 // Gérer la pagination si nécessaire (limité à 3 pages par action) 423 479 if (isset($planning_result->maxCount) && $planning_result->maxCount > 24) { 424 480 $pages = min(ceil($planning_result->maxCount / 24), 3); … … 432 488 } 433 489 } 490 $processed++; 434 491 } 435 492 … … 472 529 $wpdb->insert($table_name, $meta); 473 530 } 474 } 531 532 return [ 533 'success' => true, 534 'processed' => $processed, 535 'total_actions' => count($action_ids), 536 'total_plannings' => count($all_plannings) 537 ]; 538 } 539 540 return [ 541 'success' => false, 542 'message' => 'Aucun planning trouvé ou aucune action disponible' 543 ]; 475 544 } 476 545 -
formdev/trunk/formdev.php
r3459668 r3459679 5 5 * Plugin URI: https://www.form-dev.fr 6 6 * Description: Synchroniser automatiquement les formations présentes dans votre CRM Formdev 7 * Version: 1.3. 67 * Version: 1.3.7 8 8 * Author: Formdev 9 9 * Author URI: https://app.form-dev.fr … … 16 16 // Définition de la version du plugin 17 17 if (!defined('FORMEDEV_VERSION')) { 18 define('FORMEDEV_VERSION', '1.3. 5');18 define('FORMEDEV_VERSION', '1.3.7'); 19 19 } 20 20 -
formdev/trunk/readme.txt
r3459668 r3459679 3 3 Tags: formdev, formation 4 4 Requires at least: 6.8 5 Tested up to: 6. 85 Tested up to: 6.9.1 6 6 Requires PHP: 7.4 7 Stable tag: 1.3. 67 Stable tag: 1.3.7 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 68 68 69 69 == Changelog == 70 = 1.3. 6=70 = 1.3.7 = 71 71 * fix update modules planning 72 72
Note: See TracChangeset
for help on using the changeset viewer.