Ejemplo n.º 1
0
/** 
 * Sets the default lists for V2.0.0 and converts all existing statuses to tag format
 *
 */
function leadout_convert_statuses_to_tags()
{
    global $wpdb;
    $blog_ids = array();
    if (is_multisite()) {
        $blog_id = (object) Null;
        $blog_id->blog_id = $wpdb->blogid;
        array_push($blog_ids, $blog_id);
    } else {
        $blog_id = (object) Null;
        $blog_id->blog_id = 0;
        array_push($blog_ids, $blog_id);
    }
    foreach ($blog_ids as $blog) {
        if (is_multisite()) {
            $q = $wpdb->prepare("SELECT COUNT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_NAME = {$wpdb->li_leads} LIMIT 1");
            $leadout_tables_exist = $wpdb->get_var($q);
            if (!$leadout_tables_exist) {
                leadout_db_install();
            }
        }
        // Get all the contacts from li_leads
        $q = $wpdb->prepare("SELECT lead_id, lead_status, hashkey FROM li_leads WHERE lead_status != 'contact' AND lead_email != '' AND lead_deleted = 0 AND blog_id = %d", $blog->blog_id);
        $contacts = $wpdb->get_results($q);
        // Check if there are any subscribers in the li_leads table and build the list if any exist
        $subscriber_exists = FALSE;
        foreach ($contacts as $contact) {
            if ($contact->lead_status == 'subscribe') {
                $subscriber_exists = TRUE;
                break;
            }
        }
        // Check if LeadOut Subscribe is activated
        if (!$subscriber_exists) {
            if (WPLeadIn::is_power_up_active('subscribe_widget')) {
                $subscriber_exists = TRUE;
            }
        }
        $existing_synced_lists = array();
        // Check to see if the mailchimp power-up is active and add the existing synced list for serialization
        $mailchimp_options = get_option('leadin_mls_options');
        if ($mailchimp_options['li_mls_subscribers_to_list']) {
            $leadout_mailchimp = new WPMailChimpConnect(TRUE);
            $leadout_mailchimp->admin_init();
            $lists = $leadout_mailchimp->admin->li_get_lists();
            if (count($lists)) {
                foreach ($lists as $list) {
                    if ($list->id == $mailchimp_options['li_mls_subscribers_to_list']) {
                        array_push($existing_synced_lists, array('esp' => 'mailchimp', 'list_id' => $list->id, 'list_name' => $list->name));
                        break;
                    }
                }
            }
        }
        // Check to see if the constant contact power-up is active and add the existing synced list for serialization
        $constant_contact_options = get_option('leadin_cc_options');
        if ($constant_contact_options['li_cc_subscribers_to_list']) {
            $leadout_constant_contact = new WPConstantContactConnect(TRUE);
            $leadout_constant_contact->admin_init();
            $lists = $leadout_constant_contact->admin->li_get_lists();
            if (count($lists)) {
                foreach ($lists as $list) {
                    if ($list->id == str_replace('@', '%40', $constant_contact_options['li_cc_subscribers_to_list'])) {
                        array_push($existing_synced_lists, array('esp' => 'constant_contact', 'list_id' => end(explode('/', $list->id)), 'list_name' => $list->name));
                        break;
                    }
                }
            }
        }
        unset($leadout_constant_contact);
        unset($leadout_mailchimp);
        // Create all the default comment lists (Commenters, Leads, Contacted, Customers). Figures out if it should add the subscriber list and puts the lists in the correct order
        $q = "\n            INSERT INTO {$wpdb->li_tags} \n                ( tag_text, tag_slug, tag_form_selectors, tag_synced_lists, tag_order ) \n            VALUES " . ($subscriber_exists ? "('Subscribers', 'subscribers', '.vex-dialog-form', " . (count($existing_synced_lists) ? $wpdb->prepare('%s', serialize($existing_synced_lists)) : "''") . ", 1 ), " : "") . " ('Commenters', 'commenters', '#commentform', '', " . ($subscriber_exists ? "2" : "1") . "),\n                ('Leads', 'leads', '', '', " . ($subscriber_exists ? "3" : "2") . "),\n                ('Contacted', 'contacted', '', '', " . ($subscriber_exists ? "4" : "3") . "),\n                ('Customers', 'customers', '', '', " . ($subscriber_exists ? "5" : "4") . ")";
        $wpdb->query($q);
        $tags = $wpdb->get_results("SELECT tag_id, tag_slug FROM {$wpdb->li_tags} WHERE tag_slug IN ( 'commenters', 'leads', 'contacted', 'customers', 'subscribers' )");
        foreach ($tags as $tag) {
            ${$tag->tag_slug . '_tag_id'} = $tag->tag_id;
        }
        $insert_values = '';
        foreach ($contacts as $contact) {
            switch ($contact->lead_status) {
                case 'comment':
                    $tag_id = $commenters_tag_id;
                    break;
                case 'lead':
                    $tag_id = $leads_tag_id;
                    break;
                case 'contacted':
                    $tag_id = $contacted_tag_id;
                    break;
                case 'customer':
                    $tag_id = $customers_tag_id;
                    break;
                case 'subscribe':
                    $tag_id = $subscribers_tag_id;
                    break;
            }
            $insert_values .= '(' . $tag_id . ', "' . $contact->hashkey . '" ),';
        }
        $q = "INSERT INTO {$wpdb->li_tag_relationships} ( tag_id, contact_hashkey ) VALUES " . rtrim($insert_values, ',');
        $wpdb->query($q);
        if (is_multisite()) {
            $q = $wpdb->prepare("INSERT {$wpdb->li_leads} SELECT * FROM li_leads WHERE li_leads.blog_id = %d", $blog->blog_id);
            $wpdb->query($q);
            $q = $wpdb->prepare("INSERT {$wpdb->li_pageviews} SELECT * FROM li_pageviews WHERE li_pageviews.blog_id = %d", $blog->blog_id);
            $wpdb->query($q);
            $q = $wpdb->prepare("INSERT {$wpdb->li_submissions} SELECT * FROM li_submissions WHERE li_submissions.blog_id = %d", $blog->blog_id);
            $wpdb->query($q);
        }
    }
    leadout_update_option('leadin_options', 'converted_to_tags', 1);
}
Ejemplo n.º 2
0
 function leadout_update_check()
 {
     $options = get_option('leadin_options');
     // 0.5.1 upgrade - Create active power-ups option if it doesn't exist
     $leadout_active_power_ups = get_option('leadin_active_power_ups');
     if (!$leadout_active_power_ups) {
         $auto_activate = array('contacts');
         update_option('leadin_active_power_ups', serialize($auto_activate));
     } else {
         // 0.9.2 upgrade - set beta program power-up to auto-activate
         $activated_power_ups = unserialize($leadout_active_power_ups);
         $update_active_power_ups = FALSE;
         // 0.9.3 bug fix for duplicate beta_program values being stored in the active power-ups array
         if (!in_array('beta_program', $activated_power_ups)) {
             $activated_power_ups[] = 'beta_program';
             $update_active_power_ups = TRUE;
         } else {
             $tmp = array_count_values($activated_power_ups);
             $count = $tmp['beta_program'];
             if ($count > 1) {
                 $activated_power_ups = array_unique($activated_power_ups);
                 $update_active_power_ups = TRUE;
             }
         }
         // 2.0.1 upgrade - [plugin_slug]_list_sync changed to [plugin_slug]_connect
         $mailchimp_list_sync_key = array_search('mailchimp_list_sync', $activated_power_ups);
         if ($mailchimp_list_sync_key !== FALSE) {
             unset($activated_power_ups[$mailchimp_list_sync_key]);
             $activated_power_ups[] = 'mailchimp_connect';
             $update_active_power_ups = TRUE;
         }
         $constant_contact_list_sync_key = array_search('constant_contact_list_sync', $activated_power_ups);
         if ($constant_contact_list_sync_key !== FALSE) {
             unset($activated_power_ups[$constant_contact_list_sync_key]);
             $activated_power_ups[] = 'constant_contact_connect';
             $update_active_power_ups = TRUE;
         }
         if ($update_active_power_ups) {
             update_option('leadin_active_power_ups', serialize($activated_power_ups));
         }
     }
     // 0.7.2 bug fix - data recovery algorithm for deleted contacts
     if (!isset($options['data_recovered'])) {
         leadout_recover_contact_data();
     }
     // Set the database version if it doesn't exist
     if (isset($options['li_db_version'])) {
         if ($options['li_db_version'] != LEADIN_DB_VERSION) {
             leadout_db_install();
             // 2.0.0 upgrade
             if (!isset($options['converted_to_tags'])) {
                 leadout_convert_statuses_to_tags();
             }
             // 2.2.3 upgrade
             if (!isset($options['names_added_to_contacts'])) {
                 leadout_set_names_retroactively();
             }
         }
     } else {
         leadout_db_install();
     }
     // 0.8.3 bug fix - bug fix for duplicated contacts that should be merged
     if (!isset($options['delete_flags_fixed'])) {
         leadout_delete_flag_fix();
     }
     // Set the plugin version
     leadout_update_option('leadin_options', 'leadout_version', LEADIN_PLUGIN_VERSION);
     // Catch all for installs that get their options nixed for whatever reason
     leadout_check_missing_options($options);
 }
Ejemplo n.º 3
0
/**
 * Check LeadOut installation and set options
 */
function add_leadout_defaults()
{
    global $wpdb;
    $options = get_option('leadin_options');
    if ($options['li_installed'] != 1 || !is_array($options)) {
        $opt = array('li_installed' => 1, 'leadout_version' => LEADIN_PLUGIN_VERSION, 'li_db_version' => LEADIN_DB_VERSION, 'li_email' => get_bloginfo('admin_email'), 'li_updates_subscription' => 1, 'onboarding_step' => 1, 'onboarding_complete' => 0, 'ignore_settings_popup' => 0, 'data_recovered' => 1, 'delete_flags_fixed' => 1, 'converted_to_tags' => 1, 'names_added_to_contacts' => 1);
        // this is a hack because multisite doesn't recognize local options using either update_option or update_site_option...
        if (is_multisite()) {
            $multisite_prefix = is_multisite() ? $wpdb->prefix : '';
            $q = $wpdb->prepare("\n\t\t\t\tINSERT INTO " . $multisite_prefix . "options \n\t\t\t        ( option_name, option_value ) \n\t\t\t    VALUES ('leadin_options', %s)", serialize($opt));
            $wpdb->query($q);
        } else {
            update_option('leadin_options', $opt);
        }
        leadout_db_install();
        $multisite_prefix = is_multisite() ? $wpdb->prefix : '';
        $q = "\n\t\t\tINSERT INTO " . $multisite_prefix . "li_tags \n\t\t        ( tag_text, tag_slug, tag_form_selectors, tag_synced_lists, tag_order ) \n\t\t    VALUES ('Commenters', 'commenters', '#commentform', '', 1),\n\t\t        ('Leads', 'leads', '', '', 2),\n\t\t        ('Contacted', 'contacted', '', '', 3),\n\t\t        ('Customers', 'customers', '', '', 4)";
        $wpdb->query($q);
    }
    $leadout_active_power_ups = get_option('leadin_active_power_ups');
    if (!$leadout_active_power_ups) {
        $auto_activate = array('contacts', 'lookups');
        update_option('leadin_active_power_ups', serialize($auto_activate));
    }
}