Plugin Directory

Changeset 3459679


Ignore:
Timestamp:
02/12/2026 08:55:26 AM (7 weeks ago)
Author:
formdev
Message:

1.3.7 fix update modules planning

Location:
formdev/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • formdev/trunk/api/Formdev.php

    r3459668 r3459679  
    374374
    375375        // 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       
    377390        $all_plannings = [];
    378391        $action_ids = [];
    379392       
    380         // Extraire tous les IDs d'actions uniques depuis les sessions récemment récupérées
    381         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) {
    383396                if (isset($session->idAction)) {
    384397                    $action_id = intval($session->idAction);
     
    388401                }
    389402            }
    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);
    394452       
    395453        // Récupérer les plannings pour chaque action (par batch pour optimiser)
     
    397455            // Récupérer les plannings par groupes de 5 actions pour éviter de surcharger l'API
    398456            $batches = array_chunk($action_ids, 5);
    399             $batch_count = 0;
     457            $processed = 0;
    400458           
    401459            foreach ($batches as $batch) {
    402                 $batch_count++;
    403                
    404460                foreach ($batch as $action_id) {
    405461                    $criteria = [
     
    420476                        $all_plannings[$action_id] = $planning_result->list;
    421477                       
    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)
    423479                        if (isset($planning_result->maxCount) && $planning_result->maxCount > 24) {
    424480                            $pages = min(ceil($planning_result->maxCount / 24), 3);
     
    432488                            }
    433489                        }
     490                        $processed++;
    434491                    }
    435492                   
     
    472529                $wpdb->insert($table_name, $meta);
    473530            }
    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        ];
    475544    }
    476545
  • formdev/trunk/formdev.php

    r3459668 r3459679  
    55 * Plugin URI: https://www.form-dev.fr
    66 * Description: Synchroniser automatiquement les formations présentes dans votre CRM Formdev
    7  * Version: 1.3.6
     7 * Version: 1.3.7
    88 * Author: Formdev
    99 * Author URI: https://app.form-dev.fr
     
    1616// Définition de la version du plugin
    1717if (!defined('FORMEDEV_VERSION')) {
    18     define('FORMEDEV_VERSION', '1.3.5');
     18    define('FORMEDEV_VERSION', '1.3.7');
    1919}
    2020
  • formdev/trunk/readme.txt

    r3459668 r3459679  
    33Tags: formdev, formation 
    44Requires at least: 6.8 
    5 Tested up to: 6.8 
     5Tested up to: 6.9.1 
    66Requires PHP: 7.4 
    7 Stable tag: 1.3.6
     7Stable tag: 1.3.7
    88License: GPLv2 or later 
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html 
     
    6868
    6969== Changelog ==
    70 = 1.3.6 =
     70= 1.3.7 =
    7171* fix update modules planning
    7272
Note: See TracChangeset for help on using the changeset viewer.