Changeset 113072 in spip-zone


Ignore:
Timestamp:
Dec 22, 2018, 5:28:31 PM (3 months ago)
Author:
maieul@…
Message:

déplacer tous ce qui est migration depuis f&t dans un fichier à part

Location:
_plugins_/formidable/trunk
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/formidable/trunk/formidable_administrations.php

    r113071 r113072  
    2525        include_spip('base/create');
    2626        include_spip('base/abstract_sql');
     27        include_spip('inc/formidable_migrer_depuis_ft');
    2728
    2829        $maj = array();
     
    361362}
    362363
    363 /**
    364  * Associer les <formXX> issus de f&t aux articles concernes
    365  */
    366 function formidable_associer_forms() {
    367         include_spip('inc/rechercher');
    368         include_spip('inc/editer_liens');
    369         $forms = sql_allfetsel('*', 'spip_formulaires', 'identifiant REGEXP '.sql_quote('^form[0-9]+$'));
    370         foreach ($forms as $form) {
    371                 if (!sql_countsel('spip_formulaires_liens', 'id_formulaire='.intval($form['id_formulaire']))) {
    372                         $articles = array();
    373                         $id = $form['identifiant'];
    374                         #var_dump($id);
    375                         $res = recherche_en_base("/<{$id}[>|]/", 'article');
    376                         #var_dump($res);
    377                         if (count($res) and isset($res['article'])) {
    378                                 foreach ($res['article'] as $id_article => $details) {
    379                                         $articles[] = $id_article;
    380                                 }
    381                         }
    382                         #var_dump($form['id_formulaire']);
    383                         #var_dump($articles);
    384                         objet_associer(array('formulaire' => array($form['id_formulaire'])), array('article' => $articles));
    385                 }
    386                 if (time()>_TIME_OUT) {
    387                         return;
    388                 }
    389         }
    390 }
    391 
    392 /**
    393  * Importer les formulaires de f&t
    394  */
    395 function formidable_importer_forms() {
    396         $trouver_table = charger_fonction('trouver_table', 'base');
    397         if ($trouver_table('spip_forms')) {
    398                 sql_alter('TABLE spip_forms ADD id_formulaire bigint(21) NOT NULL DEFAULT 0');
    399 
    400                 include_spip('echanger/formulaire/forms');
    401 
    402                 $forms = sql_allfetsel('*', 'spip_forms', 'id_formulaire=0 AND type_form='.sql_quote('').' OR type_form='.sql_quote('sondage'), '', 'id_form');
    403                 foreach ($forms as $form) {
    404                         $formulaire = array();
    405                         // configurer le formulaire (titre etc)
    406                         forms_configure_formulaire($form, $formulaire);
    407 
    408                         // identifiant formXX puisqu'on est en installation, pas de risque de conflits
    409                         // et facilite la migration de modele
    410                         $formulaire['identifiant'] = 'form' . $form['id_form'];
    411                         // on peut faire ca aussi puisqu'on est a l'installation
    412                         $formulaire['id_formulaire'] = $form['id_form'];
    413 
    414                         $fields = sql_allfetsel('*', 'spip_forms_champs', 'id_form='.intval($form['id_form']), '', 'rang');
    415                         foreach ($fields as $field) {
    416                                 $choix = sql_allfetsel('*', 'spip_forms_champs_choix', 'id_form='.intval($form['id_form']).' AND champ='.sql_quote($field['champ']), '', 'rang');
    417                                 if (count($choix)) {
    418                                         $field['choix'] = $choix;
    419                                 }
    420 
    421                                 if ($saisie = forms_champ_vers_saisie($field)) {
    422                                         $formulaire['saisies'][] = $saisie;
    423                                 }
    424                         }
    425 
    426                         // les traitements
    427                         forms_configure_traitement_formulaire($form, $formulaire);
    428 
    429                         // si ce formulaire a des reponses on le met en publie
    430                         if (sql_countsel('spip_forms_donnees', 'id_form='.intval($form['id_form']))) {
    431                                 $formulaire['statut'] = 'publie';
    432                         }
    433 
    434                         $id_formulaire = forms_importe_en_base($formulaire);
    435                         spip_log('Import spip_forms #'.$form['id_form']." en spip_formulaires #$id_formulaire", 'maj'._LOG_INFO_IMPORTANTE);
    436 
    437                         sql_update('spip_forms', array('id_formulaire' => $id_formulaire), 'id_form='.intval($form['id_form']));
    438 
    439                         if (time()>_TIME_OUT) {
    440                                 return;
    441                         }
    442                 }
    443         }
    444         include_spip('inc/drapeau_edition');
    445         debloquer_tous($GLOBALS['visiteur_session']['id_auteur']);
    446 }
    447 
    448 function formidable_importer_forms_donnees() {
    449         $trouver_table = charger_fonction('trouver_table', 'base');
    450         if ($trouver_table('spip_forms')) {
    451                 sql_alter('TABLE spip_forms_donnees ADD id_formulaires_reponse bigint(21) NOT NULL DEFAULT 0');
    452 
    453                 // 2 champs de plus pour ne pas perdre des donnees
    454                 sql_alter("TABLE spip_formulaires_reponses ADD url varchar(255) NOT NULL default ''");
    455                 sql_alter("TABLE spip_formulaires_reponses ADD confirmation varchar(10) NOT NULL default ''");
    456 
    457                 // table de correspondance id_form=>id_formulaire
    458                 $rows = sql_allfetsel('id_form,id_formulaire', 'spip_forms', 'id_formulaire>0');
    459                 $trans = array();
    460                 foreach ($rows as $row) {
    461                         $trans[$row['id_form']] = $row['id_formulaire'];
    462                 }
    463 
    464                 $rows = sql_allfetsel('*', 'spip_forms_donnees', sql_in('id_form', array_keys($trans)).' AND id_formulaires_reponse=0', '', 'id_donnee', '0,100');
    465                 do {
    466                         foreach ($rows as $row) {
    467                                 #var_dump($row);
    468                                 $reponse = array(
    469                                         'id_formulaires_reponse' => $row['id_donnee'], // conserver le meme id par facilite (on est sur une creation de base)
    470                                         'id_formulaire' => $trans[$row['id_form']],
    471                                         'date' => $row['date'],
    472                                         'ip' => $row['ip'],
    473                                         'id_auteur' => $row['id_auteur'],
    474                                         'cookie' => $row['cookie'],
    475                                         'statut' => $row['statut'],
    476                                         'url' => $row['url'],
    477                                         'confirmation' => $row['confirmation'],
    478                                 );
    479 
    480                                 #var_dump($reponse);
    481                                 $id_formulaires_reponse = sql_insertq('spip_formulaires_reponses', $reponse);
    482                                 #var_dump($id_formulaires_reponse);
    483                                 if ($id_formulaires_reponse) {
    484                                         $donnees = sql_allfetsel(
    485                                                 "$id_formulaires_reponse as id_formulaires_reponse,champ as nom,valeur",
    486                                                 'spip_forms_donnees_champs',
    487                                                 'id_donnee='.intval($row['id_donnee'])
    488                                         );
    489                                         $data = array();
    490                                         foreach ($donnees as $donnee) {
    491                                                 $data[$donnee['nom']][] = $donnee;
    492                                         }
    493                                         $ins = array();
    494                                         foreach ($data as $nom => $valeurs) {
    495                                                 if (count($valeurs) == 1) {
    496                                                         $ins[] = reset($valeurs);
    497                                                 } else {
    498                                                         $v = array();
    499                                                         foreach ($valeurs as $valeur) {
    500                                                                 $v[] = $valeur['valeur'];
    501                                                         }
    502                                                         $valeurs[0]['valeur'] = serialize($v);
    503                                                         $ins[] = $valeurs[0];
    504                                                 }
    505                                         }
    506                                         sql_insertq_multi('spip_formulaires_reponses_champs', $ins);
    507                                         // et on marque la donnee pour ne pas la rejouer
    508                                         sql_update('spip_forms_donnees', array('id_formulaires_reponse' => $id_formulaires_reponse), 'id_donnee='.intval($row['id_donnee']));
    509                                 }
    510                                 if (time()>_TIME_OUT) {
    511                                         return;
    512                                 }
    513                         }
    514                         if (time()>_TIME_OUT) {
    515                                 return;
    516                         }
    517                 } while ($rows = sql_allfetsel('*', 'spip_forms_donnees', sql_in('id_form', array_keys($trans)).' AND id_formulaires_reponse=0', '', 'id_donnee', '0,100'));
    518         }
    519 }
    520 
Note: See TracChangeset for help on using the changeset viewer.