2017-06-16 8 views
0

J'essaie d'importer une série de formulaires avec des flux sur la création de sous-site. J'ai exporté les flux et ai collé le sql dans le code, mais quand essaye de l'exécuter, j'ai eu l'erreur "aucune telle table n'existe". La table existe définitivement, mais je pense que ce n'est pas créé quand le hook se déclenche. J'ai inclus gravityforms feed addon et fait dans init. N'a pas aidé;Gravity Forms crée des flux sur la création de sous-site

<?php 

add_action('wpmu_new_blog', 'add_forms', 10, 6); // trigger when site is created 

function add_forms($blog_id, $user_id, $domain, $path, $site_id, $meta) { 

    switch_to_blog($blog_id); 


    import_forms_on_loaded('/forms/primary-forms.json'); //import 1st forms set 
    import_primary_feeds(); //import the feeds 

    $import_additional = true; //some bool to define whether additional forms be created 

    if ($import_additional) { 
     import_forms_on_loaded('/forms/additional-forms.json'); //import 2nd forms set 
     import_additional_feeds(); //import the feeds 
    } 


    restore_current_blog(); 
} 

function import_primary_feeds() { 

    $sql = "INSERT INTO %s (id, form_id, is_active, feed_order, meta, addon_slug) VALUES " . 
      "(1, 1, 1, 0, '{\"feedName\":\"PayDock Donate Create Customer Feed\",\"mappedFields_first_name\":\"7.3\",\"mappedFields_last_name\":\"7.6\",\"mappedFields_email\":\"1\",\"mappedFields_phone\":\"8\",\"mappedFields_total\":\"19\",\"feed_condition_conditional_logic\":\"0\",\"feed_condition_conditional_logic_object\":[]}', 'gfpaydock')," . 
      "(2, 2, 1, 0, '{\"feedName\":\"PayDock Donate Charge Customer Feed \",\"paymentDescription\":\"Single Payment\",\"transactionType\":\"product\",\"paymentAmount\":\"3\",\"feed_condition_conditional_logic\":\"0\",\"feed_condition_conditional_logic_object\":[]}', 'gfpaydockchargecustomer')," . 
      "(3, 3, 1, 0, '{\"feedName\":\"PayDock Donate Recurrent Charge Customer Feed\",\"paymentDescription\":\"Recurrent Payment\",\"transactionType\":\"subscription\",\"recurringAmount\":\"3\",\"billingCycle_length\":\"1\",\"billingCycle_unit\":\"month\",\"transaction_end\":\"\",\"transaction_end_value\":\"\",\"feed_condition_conditional_logic\":\"0\",\"feed_condition_conditional_logic_object\":[]}', 'gfpaydockchargecustomer');"; 
    import_feeds($sql); 
} 

function import_additional_feeds() { 

    $sql = "INSERT INTO %s (id, form_id, is_active, feed_order, meta, addon_slug) VALUES " . 
      "(4, 5, 1, 0, '{\"feedName\":\"PayDock Membership Create Customer Feed \",\"mappedFields_first_name\":\"5.3\",\"mappedFields_last_name\":\"5.6\",\"mappedFields_email\":\"8\",\"mappedFields_phone\":\"7\",\"mappedFields_total\":\"37\",\"feed_condition_conditional_logic\":\"0\",\"feed_condition_conditional_logic_object\":[]}', 'gfpaydock')," . 
      "(5, 6, 1, 0, '{\"feedName\":\"PayDock Membership Charge Customer Feed\",\"paymentDescription\":\"Membership Payment\",\"transactionType\":\"subscription\",\"recurringAmount\":\"3\",\"billingCycle_length\":\"1\",\"billingCycle_unit\":\"year\",\"transaction_end\":\"\",\"transaction_end_value\":\"\",\"feed_condition_conditional_logic\":\"0\",\"feed_condition_conditional_logic_object\":[]}', 'gfpaydockchargecustomer');"; 

    import_feeds($sql); 
} 

function import_feeds($sql) { 
    if (!class_exists('GFForms')) { 
     return; 
    } 
    GFForms::init(); 
    GFForms::include_feed_addon_framework(); 

    if (!class_exists('GFFeedAddOn')) { 
     return; 
    } 

    global $wpdb; 
    $feed_table = $wpdb->prefix . 'gf_addon_feed'; 

    $result = $wpdb->get_results(sprintf($sql, $feed_table)); 
    return $result; 
} 

?> 

Je n'ai pas utilisé la constante de création de formulaire, car j'ai dû importer plusieurs fichiers.

Répondre

0

Le problème est résolu. Pour forcer les tables création, vous devez créer votre propre objet addon vide en prolongeant la GFFeedAddOn et appelez init-méthode du parent:

Quelque part dans le code global:

class EmptyAddon extends GFFeedAddOn { //an empty class required to import the GF Feeds 

     function __construct() { 
      parent::init(); 
     } 

    } 

Dans la fonction qui initie les addons fonctionnalité:

if (!class_exists('GFForms')) { 
    return; 
} 

GFForms::init(); 
GFForms::include_feed_addon_framework(); 

if (!class_exists('GFFeedAddOn')) { 
    return; 
} 

$emptyAddonObj = new EmptyAddon();