Pour résumer :
1. La génération de la requête SQL à partir du fichier Excel, ça c'était déjà réglé (cfr supra). Comme on ne touche qu'à une seule table, pas de trop grande complexité (pas besoin de connaître l'ID d'un lieu, l'ID d'une catégorie etc qui seraient sur d'autres tables).
2. Pour exécuter le query
2.1. Ma 1e piste était d'inviter l'utilisateur à accéder à PHPMyAdmin, cliquer sur l'onglet SQL, y coller le query et cliquer sur Execute
2.2. Puis a été émise l'idée de faire plus simple : juste un fichier .sql à uploader par ftp
2.2.1. J'avais émis l'idée qu'on puisse le faire à partir de Extensions > Database > Fix puisqu'il "voit" mon .sql, mais comme expliqué ci-dessus ce n'est pas conçu pour ça et ça ne marche donc pas
2.2.2. Le but n'était pas de faire de l'overkill et de créer une vraie-fausse extension juste pour ça
2.2.3 Et la solution était donc simplement de faire un petit fichier PHP mis à la racine du site (ou ailleurs) qui, appelé en direct ou par tâche CRON, exécute le query. Et bien moi qui d'ordinaire ne fait ni PHP ni SQL, voilà que je progresse à grands pas Voici ci-dessous ma petite solution :
Code:
<?php echo "<h1>This will import your iCagenda events</h1>"; define('_JEXEC', 1); define('JPATH_BASE', realpath(dirname(__FILE__) . '/')); require_once JPATH_BASE . '/includes/defines.php'; require_once JPATH_BASE . '/includes/framework.php'; $db = JFactory::getDBO(); $query = file_get_contents('icagenda.sql'); $db->setQuery($query); $db->execute(); echo "<p>iCagenda events imported :)</p>"; echo '<p><a href="/administrator/index.php?option=com_icagenda&view=events">Please check the backend of your site</a></p>'; ?>
Encore merci à tous de m'avoir mis sur la piste de la solution la plus simple/légère avec toutes les suggestions !
PS : il y a effectivement une soumission front-end, mais ils injectent genre un millier d'événements par an... et justement ils n'ont pas le temps de suivre vu que c'est du bénévolat. Au moins, comme ça ils peuvent plus facilement créer d'un coup une centaine d'événements...
Laisser un commentaire: