Example #1
0
function memberful_wp_update_customer_roles($old_active_role, $new_active_role, $old_inactive_role, $new_inactive_role)
{
    $mapped_users = Memberful_User_Mapping_Repository::fetch_user_ids_of_all_mapped_members();
    $role_decision = Memberful_Wp_User_Role_Decision::build(array($old_active_role, $old_inactive_role));
    $mapped_users = get_users(array('fields' => 'all', 'include' => $mapped_users));
    foreach ($mapped_users as $user) {
        $role_decision->update_user_role($user);
    }
}
Example #2
0
function memberful_wp_cron_sync_users()
{
    set_time_limit(0);
    $members_to_sync = Memberful_User_Mapping_Repository::fetch_ids_of_members_that_need_syncing();
    $mapper = new Memberful_User_Map();
    echo "<pre>library=memberful_wp fn=memberful_wp_cron_sync_users at=start members=" . count($members_to_sync) . "\n</pre>";
    foreach ($members_to_sync as $member_id) {
        memberful_wp_sync_member_from_memberful($member_id);
        sleep(1);
    }
    echo "<pre>library=memberful_wp method=memberful_wp_cron_sync_users at=finish\n</pre>";
}
Example #3
0
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'));
}
Example #4
0
 /**
  * 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;
 }