Changeset 118021 in spip-zone


Ignore:
Timestamp:
Oct 2, 2019, 7:46:40 PM (5 months ago)
Author:
Charles Razack
Message:

preg_grep conserve les index, il faut les remettre en ordre. Renommage de quelques variables au passage.

Location:
_plugins_/statistiques_objets/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/statistiques_objets/trunk

    • Property subgit:lock:9785c5dc2a74251955eee67e16c89f3dd99eead0 deleted
    • Property subgit:lock:69153b1cee6aba673a90b6274a1db5a947d5f551 set to 2019-10-02T21:47:22.392
  • _plugins_/statistiques_objets/trunk/inc/statistiques.php

    r117940 r118021  
    8080        include_spip('inc/objets'); // au cas-où
    8181        $table_objet_sql = table_objet_sql($type, $serveur);
    82         $id_table_objet = id_table_objet($type, $serveur);
     82        $cle_objet = id_table_objet($type, $serveur);
    8383        $trouver_table = charger_fonction('trouver_table','base');
    8484        $desc = $trouver_table($table_objet_sql);
     
    9393        }
    9494        $classement[$type] = sql_allfetsel(
    95                 $id_table_objet,
     95                $cle_objet,
    9696                $table_objet_sql,
    9797                $where,
     
    102102                $serveur
    103103        );
    104         $classement[$type] = array_column($classement[$type], $id_table_objet);
     104        $classement[$type] = array_column($classement[$type], $cle_objet);
    105105
    106106        return $classement[$type];
     
    126126        // fallback si autre page, ou pas d'objet trouvé
    127127        $objet_contexte = false;
     128        $page = false;
    128129
    129130        // fallback contexte
    130         if (!$contexte
     131        if (
     132                !$contexte
    131133                and isset($GLOBALS['contexte'])
    132134        ) {
     
    144146        // =============================================
    145147        // Si on trouve également la clé `id_{objet}`, alors c'est la page d'un objet éditorial.
    146         if (isset($page)
     148        if (
     149                $page
    147150                and $objet = objet_type($page)
    148                 and $id_table_objet = id_table_objet($objet)
    149                 and isset($contexte[$id_table_objet])
    150                 and $id_objet = $contexte[$id_table_objet]
     151                and $cle_objet = id_table_objet($objet)
     152                and isset($contexte[$cle_objet])
     153                and $id_objet = $contexte[$cle_objet]
    151154        ) {
    152                 $objet_contexte = array('objet' => $objet, 'id_objet' => $id_objet);
     155                $objet_contexte = array(
     156                        'objet'    => $objet,
     157                        'id_objet' => $id_objet)
     158                ;
    153159        }
    154160
     
    156162        // ==================================================================
    157163        // On se base sur les clés `id_{objet}` trouvées dans le contexte.
    158         // s'il y a 1 clé, ou 2 clés dont 1 id_rubrique, on peut en déduire `id_{objet}`.
     164        // s'il y a 1 clé, ou 2 clés dont 1 est id_rubrique, on peut en déduire `id_{objet}`.
    159165        // Dans les autres cas, on est coincés !
    160         if (!isset($page)) {
     166        elseif (!$page) {
    161167
    162168                // récupérer les clés `id_{objet}`, et identifier celle de l'objet si on peut.
    163                 $ids_tables_objets = preg_grep('/^id_.*/', array_keys($contexte));
    164                 $nb_ids = count($ids_tables_objets);
    165                 // 1 clé : c'est celle de l'objet
    166                 if ($nb_ids === 1) {
    167                         $id_table_objet = $ids_tables_objets[0];
     169                $cle_objet = false;
     170                $cles_objets = array_values(preg_grep('/^id_/', array_keys($contexte)));
     171                $nb_cles = count($cles_objets);
     172                // 1 seule clé : c'est celle de l'objet
     173                if ($nb_cles === 1) {
     174                        $cle_objet = $cles_objets[0];
    168175                }
    169176                // 2 clés : si l'une d'elle est `id_rubrique`, l'autre est celle de l'objet
    170                 if ($nb_ids === 2
    171                         and in_array('id_rubrique', $ids_tables_objets)
     177                elseif (
     178                        $nb_cles === 2
     179                        and in_array('id_rubrique', $cles_objets)
    172180                ) {
    173                         $k_id_rubrique  = array_search('id_rubrique', $ids_tables_objets);
    174                         $k_ids          = array_keys($ids_tables_objets);
    175                         unset($k_ids[$k_id_rubrique]);
    176                         $k_ids          = array_values($k_ids); //raz des clés
    177                         $k_id_objet     = $k_ids[0];
    178                         $id_table_objet = $ids_tables_objets[$k_id_objet];
     181                        $k = array_search('id_rubrique', $cles_objets);
     182                        unset($cles_objets[$k]);
     183                        $cle_objet = array_values($cles_objets)[0];
    179184                }
    180185
    181186                // On a identifié un `id_{objet}` : on peut en déduire l'objet
    182                 if (isset($id_table_objet)
    183                         and isset($contexte[$id_table_objet])
     187                if (
     188                        $cle_objet
     189                        and isset($contexte[$cle_objet])
    184190                ) {
    185                         $objet          = objet_type($id_table_objet);
    186                         $id_objet       = $contexte[$id_table_objet];
    187                         $objet_contexte = array('objet' => $objet, 'id_objet' => $id_objet);
     191                        $objet          = objet_type($cle_objet);
     192                        $id_objet       = $contexte[$cle_objet];
     193                        $objet_contexte = array(
     194                                'objet'    => $objet,
     195                                'id_objet' => $id_objet,
     196                        );
    188197                }
    189198
  • _plugins_/statistiques_objets/trunk/paquet.xml

    r117951 r118021  
    22        prefix="statsobjets"
    33        categorie="statistique"
    4         version="1.1.2"
     4        version="1.1.3"
    55        etat="test"
    66        compatibilite="[3.0.0;3.2.*]"
  • _plugins_/statistiques_objets/trunk/public/stats.php

    r110367 r118021  
    1010 * @author    tcharlss
    1111 * @licence   GNU/GPL
    12  * @package   SPIP\Statistiques_objets\Administrations
    1312 */
    1413
Note: See TracChangeset for help on using the changeset viewer.