/** * 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); }
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); }
/** * 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)); } }