/** * 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); }
/** * Prints the admin page title, icon and help notification * * @param string */ function leadout_header($page_title = '', $css_class = '', $event_name = '') { $li_options = get_option('leadin_options'); ?> <?php if ($page_title) { ?> <?php screen_icon('leadout'); ?> <h2 class="<?php echo $css_class; ?> "><?php echo $page_title; ?> </h2> <?php } ?> <?php if (isset($_GET['tables_restored']) && $_GET['tables_restored']) { ?> <div id="message" class="updated"> <p>Your LeadOut database tables were successfully restored and the product should start working correctly again.</p> </div> <?php } ?> <?php if ($li_options['onboarding_complete']) { ?> <?php if (isset($_GET['settings-updated'])) { ?> <div id="message" class="updated"> <p><strong><?php _e('Settings saved.'); ?> </strong></p> </div> <?php foreach ($this->esp_power_ups as $power_up_name => $power_up_slug) { if (WPLeadIn::is_power_up_active($power_up_slug)) { global ${'leadout_' . $power_up_slug . '_wp'}; // e.g leadout_mailchimp_connect_wp $esp_name = strtolower(str_replace('_connect', '', $power_up_slug)); // e.g. mailchimp if (${'leadout_' . $power_up_slug . '_wp'}->admin->invalid_key) { echo '<div id="message" class="error">'; echo '<p>' . 'Your ' . $power_up_name . ' key seems to not be correct.' . '</p>'; echo '</div>'; } } } ?> <?php } elseif ($this->has_leads() == FALSE) { ?> <div id="message" class="updated"> <p>LeadOut is set up and waiting for a form submission...</p> </div> <?php } ?> <?php } ?> <?php }
/** * Gets all the contacts in a list given a tag_id * * @param int * @param string serialized array * @return object */ function push_contacts_to_tagged_list($tag_id = 0, $tag_synced_lists = '') { global $wpdb; if (!$tag_synced_lists) { $this->get_tag_details($tag_id); $tag_synced_lists = $this->details->tag_synced_lists; } $contacts = $this->get_contacts_in_tagged_list($tag_id); if (count($contacts) && $tag_synced_lists) { $synced_lists = unserialize($tag_synced_lists); if (count($synced_lists)) { foreach ($synced_lists as $synced_list) { $power_up_slug = $synced_list['esp'] . '_connect'; // e.g leadout_mailchimp_connect_wp if (WPLeadIn::is_power_up_active($power_up_slug)) { global ${'leadout_' . $power_up_slug . '_wp'}; // e.g leadout_mailchimp_connect_wp ${'leadout_' . $power_up_slug . '_wp'}->bulk_push_contact_to_list($synced_list['list_id'], $contacts); } } } } }