function memberful_wp_debug() { global $wp_version; $mapping_stats = new Memberful_User_Map_Stats(Memberful_User_Mapping_Repository::table()); $counts = count_users(); $unmapped_users = $mapping_stats->unmapped_users(); $total_mapping_records = $mapping_stats->count_mapping_records(); $total_users = $counts['total_users']; $total_unmapped_users = count($unmapped_users); $total_mapped_users = $total_users - $total_unmapped_users; $config = memberful_wp_option_values(); $acl_for_all_posts = _memberful_wp_debug_all_post_meta(); $plugins = get_plugins(); $error_log = memberful_wp_error_log(); if ($total_users != $total_mapped_users) { $mapping_records = $mapping_stats->mapping_records(); } else { $mapping_records = array(); } memberful_wp_render('debug', compact('unmapped_users', 'total_users', 'total_unmapped_users', 'total_mapped_users', 'total_mapping_records', 'mapping_records', 'config', 'acl_for_all_posts', 'wp_version', 'plugins', 'error_log')); }
/** * Creates a mapping of Memberful member to WordPress user */ public function create_mapping($wp_user, $member, array $context) { global $wpdb; $columns = array('wp_user_id', 'member_id'); $columns = array_merge($columns, array_keys($context)); $columns = $this->restrict_columns($columns); $column_list = '`' . implode('`, `', $columns) . '`'; $values = array($wp_user->ID, $member->id); $value_sub_list = array('%d', '%d'); foreach ($columns as $column) { if ($column === 'member_id' || $column === 'wp_user_id') { continue; } $values[] = $context[$column]; $value_sub_list[] = '%s'; } $value_list = implode(', ', $value_sub_list); $insert = 'INSERT INTO `' . Memberful_User_Mapping_Repository::table() . '` ( ' . $column_list . ' ) VALUES ( ' . $value_list . ' )'; $previous_error_state = $wpdb->hide_errors(); $query = $wpdb->prepare($insert, $values); $result = $wpdb->query($query); if ($result === FALSE) { // Race condition, some other process has reserved the mapping if (strpos(strtolower($wpdb->last_error), 'duplicate entry') !== FALSE) { $real_mapping = $this->find_user_member_is_mapped_to($member); return new WP_Error("duplicate_user_for_member", "Some other process created the user and mapping before we could. Use the earlier version", array('canonical_user' => $real_mapping['user'], 'member' => $member, 'context' => $context, 'our_user' => $wp_user)); } else { return new WP_Error("database_error", $wpdb->last_error, array('query' => $query, 'wp_user' => $wp_user, 'member' => $member, 'context' => $context)); } } return $wp_user->ID; }