Changeset 84421 in spip-zone


Ignore:
Timestamp:
Aug 31, 2014, 2:39:52 PM (7 years ago)
Author:
teddy.spip@…
Message:

On formate un peu le xml récupéré tant que le namespace est encore un peu chiant à manipuler. Et on passe par l'astuce d'Eric avec un json_encode du xml puis json_decode. L'arbre du xml est moins complexe à parcourir avec cette méthode. Pas de item-uniqid() à prendre en compte.

Location:
_plugins_/rss_commits/trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rss_commits/trunk/base/rss_commits.php

    r84420 r84421  
    77 * @author     Teddy Payet
    88 * @licence    GNU/GPL
    9  * @package    SPIP\Commits\Pipelines
     9 * @package    SPIP\RSSCommits\Pipelines
    1010 */
    1111
     
    5252            "titre"              => "text NOT NULL DEFAULT ''",
    5353            "descriptif"         => "text NOT NULL DEFAULT ''",
     54            "texte"              => "text NOT NULL DEFAULT ''",
    5455            "auteur"             => "varchar(25) NOT NULL DEFAULT ''",
    5556            "url_revision"       => "text NOT NULL DEFAULT ''",
     57            "guid"               => "text NOT NULL DEFAULT ''",
    5658            "id_projet"          => "bigint(21) NOT NULL DEFAULT 0",
    5759            "date_creation"      => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
     
    6365        'titre' => "titre AS titre, '' AS lang",
    6466        'date' => "date_creation",
    65         'champs_editables'  => array('titre', 'descriptif', 'auteur', 'url_revision', 'id_projet'),
    66         'champs_versionnes' => array('titre', 'descriptif', 'auteur', 'url_revision', 'id_projet'),
    67         'rechercher_champs' => array("titre" => 6, "descriptif" => 7, "auteur" => 8, "url_revision" => 5),
     67        'champs_editables'  => array('titre', 'descriptif', 'texte', 'auteur', 'url_revision', 'guid', 'id_projet'),
     68        'champs_versionnes' => array('titre', 'descriptif', 'texte', 'auteur', 'url_revision', 'guid', 'id_projet'),
     69        'rechercher_champs' => array("titre" => 6, "descriptif" => 7, "texte" => 7, "auteur" => 8, "url_revision" => 5),
    6870        'tables_jointures'  => array(),
    6971
  • _plugins_/rss_commits/trunk/formulaires/editer_commit.php

    r84406 r84421  
    77 * @author     Teddy Payet
    88 * @licence    GNU/GPL
    9  * @package    SPIP\Commits\Formulaires
     9 * @package    SPIP\RSSCommits\Formulaires
    1010 */
    1111
  • _plugins_/rss_commits/trunk/inc/analyser_rss_commits.php

    r84417 r84421  
    1010    include_spip('inc/distant');
    1111    $valeurs = array();
     12    $xml = false;
    1213    $page = recuperer_page($url);
    13     $page = preg_replace("/\<\?(.*)\?\>/", "", $page);
    14     $convertir = charger_fonction('xml_to_array', 'inc');
    15     $xml = $convertir($page);
     14    if (!is_null($page)) {
     15        $page = preg_replace("/\<\?(.*)\?\>/", "", $page);
     16        // Transformer les <dc:creator> en faveur de <author>
     17        $page = preg_replace("/dc:creator\>/", "author>", $page);
     18        // Transformer les <content:encoded> du rss de Git en faveur de <texte>
     19        $page = preg_replace("/content:encoded\>/", "texte>", $page);
     20        // Merci _Eric_ pour ce code.
     21        $xml = json_decode(json_encode(simplexml_load_string($page)), true);
     22    }
    1623
    1724    // echo "<pre>";
  • _plugins_/rss_commits/trunk/rss_commits_administrations.php

    r84419 r84421  
    77 * @author     Teddy Payet
    88 * @licence    GNU/GPL
    9  * @package    SPIP\Commits\Installation
     9 * @package    SPIP\RSSCommits\Installation
    1010 */
    1111
  • _plugins_/rss_commits/trunk/rss_commits_autorisations.php

    r84419 r84421  
    77 * @author     Teddy Payet
    88 * @licence    GNU/GPL
    9  * @package    SPIP\Commits\Autorisations
     9 * @package    SPIP\RSSCommits\Autorisations
    1010 */
    1111
  • _plugins_/rss_commits/trunk/rss_commits_fonctions.php

    r84419 r84421  
    77 * @author     Teddy Payet
    88 * @licence    GNU/GPL
    9  * @package    SPIP\Commits\Fonctions
     9 * @package    SPIP\RSSCommits\Fonctions
    1010 */
    1111
     
    1515
    1616include_spip('base/abstract_sql');
    17 include_spip('inc/analyser_rss_commits');
    18 include_spip('dev_fonctions');
    1917
    2018function lister_rss_commits ()
     
    2826            $contenu_rss = $analyser_rss_commits($value_rss["versioning_rss"]);
    2927            if (count($contenu_rss) > 0) {
    30                 foreach ($contenu_rss['channel'][0] as $key => $value) {
    31                     if (preg_match("/^item/", $key)) {
    32                         $rss_items[] = $value[0];
    33                     }
     28                foreach ($contenu_rss['channel']['item'] as $key => $value) {
     29                        $rss_items[$key]['titre'] = $value['title'];
     30                        $rss_items[$key]['descriptif'] = $value['description'];
     31                        $rss_items[$key]['texte'] = $value['texte'];
     32                        $rss_items[$key]['auteur'] = $value['author'];
     33                        $rss_items[$key]['url_revision'] = $value['link'];
     34                        $rss_items[$key]['guid'] = $value['guid'];
     35                        $rss_items[$key]['id_projet'] = $value_rss['id_projet'];
     36                        $rss_items[$key]['date_creation'] = strftime(
     37                            "%Y-%m-%d %H:%M:%S",
     38                            strtotime($value['pubDate'])
     39                        );
    3440                }
    35             }
    36             foreach ($rss_items as $key_item => $value_item) {
    37                 foreach ($value_item as $key => $value) {
    38                     // il n'y a que le contenu de l'index 0 qui nous intéresse.
    39                     $rss_items[$key_item][$key] = $value[0];
    40                 }
    41                 $rss_items[$key_item]['date_creation'] = strftime(
    42                     "%Y-%m-%d %H:%M:%S",
    43                     strtotime($value_item['pubDate'][0])
    44                 );
    45                 unset($rss_items[$key_item]['pubDate']);
    46                 $rss_items[$key_item]['descriptif'] = $value_item['description'][0];
    47                 unset($rss_items[$key_item]['description']);
    48                 $rss_items[$key_item]['titre'] = $value_item['title'][0];
    49                 unset($rss_items[$key_item]['title']);
    50                 $rss_items[$key_item]['url_revision'] = $value_item['link'][0];
    51                 unset($rss_items[$key_item]['link']);
    52                 // Ne pas oublier de mettre l'id_projet auquel il se réfère.
    53                 $rss_items[$key_item]['id_projet'] = $value_rss['id_projet'];
     41                // echo "<pre>";
     42                // var_dump($rss_items);
     43                // echo "</pre>";
    5444            }
    5545        } // end foreach $projet_rss
  • _plugins_/rss_commits/trunk/rss_commits_options.php

    r84419 r84421  
    77 * @author     Teddy Payet
    88 * @licence    GNU/GPL
    9  * @package    SPIP\Commits\Options
     9 * @package    SPIP\RSSCommits\Options
    1010 */
    1111
    12 if (!defined('_ECRIRE_INC_VERSION')) return;
     12if (!defined('_ECRIRE_INC_VERSION')) {
     13    return;
     14}
    1315
    1416
  • _plugins_/rss_commits/trunk/rss_commits_pipelines.php

    r84419 r84421  
    77 * @author     Teddy Payet
    88 * @licence    GNU/GPL
    9  * @package    SPIP\Commits\Pipelines
     9 * @package    SPIP\RSSCommits\Pipelines
    1010 */
    1111
     
    1515
    1616
    17 function commits_taches_generales_cron($taches)
     17function rss_commits_taches_generales_cron($taches)
    1818{
    1919    $taches['import_commits'] = 1*3600; // toutes les heures
Note: See TracChangeset for help on using the changeset viewer.