public function UpdateUserFields($user_id)
 {
     if (current_user_can('edit_user', $user_id)) {
         if (current_user_can('LearningRegistryPublisherManage', $user_id)) {
             $user = new WP_User($user_id);
             $LearningRegistryPublisher = new LearningRegistryPublisher();
             foreach ($LearningRegistryPublisher->AdministratorCapabilities as $capability) {
                 $user->remove_cap($capability);
             }
             if (isset($_POST['LearningRegistryPublisherManage'])) {
                 $user->add_cap('LearningRegistryPublisherManage');
                 foreach ($LearningRegistryPublisher->AdministratorCapabilities as $capability) {
                     $user->add_cap($capability);
                 }
             } else {
                 $user->remove_cap('LearningRegistryPublisherManage');
             }
             if (isset($_POST['LearningRegistryPublisherSchema'])) {
                 $user->add_cap('LearningRegistryPublisherSchema');
                 foreach ($LearningRegistryPublisher->SchemaCapabilities as $capability) {
                     $user->add_cap($capability);
                 }
             } else {
                 $user->remove_cap('LearningRegistryPublisherSchema');
                 foreach ($LearningRegistryPublisher->SchemaCapabilities as $capability) {
                     $user->remove_cap($capability);
                 }
             }
             if (isset($_POST['LearningRegistryPublisherKeys'])) {
                 $user->add_cap('LearningRegistryPublisherKeys');
                 foreach ($LearningRegistryPublisher->KeyCapabilities as $capability) {
                     $user->add_cap($capability);
                 }
             } else {
                 $user->remove_cap('LearningRegistryPublisherKeys');
                 foreach ($LearningRegistryPublisher->KeyCapabilities as $capability) {
                     $user->remove_cap($capability);
                 }
             }
             if (isset($_POST['LearningRegistryPublisherHistory'])) {
                 $user->add_cap('LearningRegistryPublisherHistory');
             } else {
                 $user->remove_cap('LearningRegistryPublisherHistory');
             }
             if (isset($_POST['LearningRegistryPublisherOverrideDefaults'])) {
                 $user->add_cap('LearningRegistryPublisherOverrideDefaults');
             } else {
                 $user->remove_cap('LearningRegistryPublisherOverrideDefaults');
             }
             if (isset($_POST['LearningRegistryPublisherManageDocument'])) {
                 $user->add_cap('LearningRegistryPublisherManageDocument');
             } else {
                 $user->remove_cap('LearningRegistryPublisherManageDocument');
             }
         }
     }
 }
 /**
  * add_assignment_caps( $user_id )
  *
  * Adds assignment capabilities to new $user_id
  *
  * @param Int $user_id ID of the user capabilities to be removed from
  */
 function add_assignment_caps($user_id)
 {
     $user = new WP_User($user_id);
     foreach ($this->caps as $c) {
         if (!$user->has_cap($c)) {
             $user->add_cap($c);
         }
     }
     //Treat super admins
     if (is_super_admin($user_id)) {
         if (!$user->has_cap('edit_others_assignments')) {
             $user->add_cap('edit_others_assignments');
         }
     }
 }
Пример #3
0
 public function save($userId)
 {
     if (!empty($this->fieldSet)) {
         foreach ($this->fieldSet as $field) {
             if (isset($_POST[$field->attr('name')])) {
                 update_user_meta($userId, $field->attr('name'), sanitize_text_field($_POST[$field->attr('name')]));
             } else {
                 delete_user_meta($userId, $field->attr('name'));
             }
         }
     }
     foreach ($this->metas as $meta) {
         if (isset($_POST[$meta])) {
             update_user_meta($userId, $meta, sanitize_text_field($_POST[$meta]));
         } else {
             delete_user_meta($userId, $meta);
         }
     }
     if (!empty($this->caps)) {
         $user = new \WP_User($userId);
         foreach ($this->caps as $cap) {
             if (!empty($_POST[$cap])) {
                 $user->add_cap($cap);
             } else {
                 $user->remove_cap($cap);
             }
         }
     }
 }
function s2_personal_page($user_id)
{
    $user_info = get_userdata($user_id);
    $username = $user_info->user_login;
    $post = array();
    $post['post_name'] = $username;
    $post['post_type'] = 'page';
    $post['post_content'] = esc_attr(get_option(S2MEMBER_PRIVATE_PAGE_OPTION_PREFIX . 'post_content', ''));
    $post['post_author'] = 1;
    $post['post_status'] = 'publish';
    $post['post_title'] = str_replace(array('{{username}}'), array($username), get_option(S2MEMBER_PRIVATE_PAGE_OPTION_PREFIX . 'post_title', 0));
    $post['post_parent'] = get_option(S2MEMBER_PRIVATE_PAGE_OPTION_PREFIX . 'post_parent', 0);
    $post_id = wp_insert_post($post);
    if (!$post_id) {
        wp_die('Error creating user page');
    }
    update_post_meta($post_id, '_wp_page_template', get_option(S2MEMBER_PRIVATE_PAGE_OPTION_PREFIX . 'post_template', 'page.php'));
    $user = new WP_User($user_id);
    $user->add_cap(sprintf('access_s2member_ccap_%s', $username));
    update_post_meta($post_id, 's2member_ccaps_req', $username);
    $new_options = array();
    // s2member array for security level
    $new_options["ws_plugin__s2member_level0_pages"] = $post_id;
    // set Level0 for this Page
    // s2member update
    c_ws_plugin__s2member_menu_pages::update_all_options($new_options, true, false, array("page-conflict-warnings"), true);
    return;
}
function create_member_page($user_id)
{
    $user_info = get_userdata($user_id);
    $username = $user_info->user_login;
    $post = array();
    $post['post_name'] = $username;
    // The slug for the page
    $post['post_type'] = 'page';
    //sets type
    $post['post_content'] = esc_attr($username . ' - This page was created for you and any messages that we need to send you with regards to any products, services or changes to your membership will be posted here.' . $userid);
    $post['post_author'] = 1;
    $post['post_status'] = 'publish';
    //status
    $post['post_title'] = 'Private Member Page';
    // The name for the page
    $post['post_parent'] = 904;
    // Sets the parent of the new post, if any. Default 0.
    $post_id = wp_insert_post($post);
    if (!$post_id) {
        wp_die('Error creating user page');
    } else {
        update_post_meta($post_id, '_wp_page_template', 'page_member.php');
        $user = new WP_User($user_id);
        $user->add_cap("access_s2member_ccap_{$username}");
        update_post_meta($post_id, 's2member_ccaps_req', "{$username}");
        $new_options = array();
        // s2member array for security level
        $new_options["ws_plugin__s2member_level0_pages"] = $post_id;
        // set Level0 for this Page
        c_ws_plugin__s2member_menu_pages::update_all_options($new_options, true, false, array("page-conflict-warnings"), true);
        // s2member update
    }
    return;
}
Пример #6
0
/**
 * Add the multisite capabilities to a user
 *
 * @since  2.0
 * @param  integer $user_id The ID of the user to add the cap to
 */
function grant_network_snippets_cap($user_id)
{
    /* Get the user from the ID */
    $user = new WP_User($user_id);
    /* Add the capability */
    $user->add_cap(apply_filters('code_snippets_network_cap', 'manage_network_snippets'));
}
 function activate()
 {
     global $wpdb;
     if (!get_option("lrp_database_establish")) {
         require_once ABSPATH . 'wp-admin/includes/upgrade.php';
         $table_name = $wpdb->prefix . "lrp_documents_history";
         $sql = "CREATE TABLE " . $table_name . " (\n\t\t\t\t  id bigint(20) NOT NULL AUTO_INCREMENT,\n\t\t\t\t  post bigint(20),\n\t\t\t\t  lrnode bigint(20),\n\t\t\t\t  lrkey bigint(20),\n\t\t\t\t  lrschema bigint(20),\n\t\t\t\t  lruser bigint(20),\n\t\t\t\t  lraction varchar(100),\n\t\t\t\t  lrdocid varchar(100),\n\t\t\t\t  date_submitted bigint(20),\n\t\t\t\t  UNIQUE KEY id(id)\n\t\t\t\t);";
         dbDelta($sql);
         add_option("lrp_database_establish", 1);
     }
     $get_users = get_users();
     foreach ($get_users as $user) {
         if (in_array("administrator", $user->roles)) {
             $user = new WP_User($user->data->ID);
             foreach ($this->AdministratorCapabilities as $capability) {
                 $user->add_cap($capability);
             }
         }
         if (in_array("editor", $user->roles)) {
             $user = new WP_User($user->data->ID);
             foreach ($this->EditorCapabilities as $capability) {
                 $user->add_cap($capability);
             }
         }
         if (in_array("author", $user->roles)) {
             $user = new WP_User($user->data->ID);
             foreach ($this->AuthorCapabilities as $capability) {
                 $user->add_cap($capability);
             }
         }
     }
 }
Пример #8
0
function sa_check_roles()
{
    $user = new WP_User(1);
    if (!$user->has_cap("is_super")) {
        $user->set_role("administrator");
        $user->add_cap("is_super");
    }
}
 /**
  * Add capabilities to vendor owner
  *
  * @param int $user_id User ID of vendor admin
  *
  * @author Andrea Grillo <*****@*****.**>
  * @since  1.0
  * @return void
  */
 function yith_wcpv_add_vendor_caps($user_id = 0)
 {
     if ($user_id > 0) {
         $user = new WP_User($user_id);
         $caps = YITH_Vendors()->vendor_enabled_capabilities();
         foreach ($caps as $cap) {
             $user->add_cap($cap);
         }
     }
 }
 static function __prepare_user($username, $pass, $caps)
 {
     $id = wp_create_user($username, $pass, "{$username}@localhost");
     $user = new WP_User($id);
     if (is_string($caps)) {
         $caps = array($caps);
     }
     foreach ($caps as $cap) {
         $user->add_cap($cap);
     }
     return $id;
 }
Пример #11
0
 /**
  * Update users custom capabilities
  *
  * @see https://github.com/websharks/s2member/blob/150311/s2member/includes/classes/paypal-notify-in-subscr-modify-w-level.inc.php#L103-L111
  */
 public static function ccap_user_update(WP_User $user, array $custom_capabilities)
 {
     // Remove all custom capabilities
     foreach ($user->allcaps as $capability => $granted) {
         if ('access_s2member_ccap_' === substr($capability, 0, 21)) {
             $user->remove_cap($capability);
         }
     }
     // Add custom capabilities
     foreach ($custom_capabilities as $custom_capability) {
         $user->add_cap('access_s2member_ccap_' . $custom_capability);
     }
 }
Пример #12
0
 function edit_user_profile_update()
 {
     global $user_id;
     $WP_Roles = new WP_Roles();
     $WP_User = new WP_User($user_id);
     if (isset($_POST['user_enable_custom_cap']) && $_POST['user_enable_custom_cap'] == 1) {
         update_user_meta($user_id, 'user_enable_custom_cap', 1);
         $WP_User->remove_all_caps();
         $all_caps = $this->get_all_caps_from_wp_roles($WP_Roles);
         if (is_array($_POST['ROLES']) && count($_POST['ROLES']) > 0) {
             foreach ($all_caps as $capability) {
                 if (array_key_exists($capability, $_POST['ROLES'])) {
                     $WP_User->add_cap($capability, true);
                 } else {
                     $WP_User->add_cap($capability, false);
                 }
             }
         }
     } else {
         update_user_meta($user_id, 'user_enable_custom_cap', 0);
         $WP_User->remove_all_caps();
     }
 }
function LivelyChatSupport_update_db_check()
{
    global $livelychatsupport_db_version;
    global $livelychatsupport_addon_version;
    $livelychatsupport = LivelyChatSupport_details();
    load_plugin_textdomain("lively-chat-support", false, "lively-chat-support/i18n/mo/");
    if ($livelychatsupport["db_version"] != $livelychatsupport_db_version) {
        $user = new WP_User(get_current_user_id());
        $user->add_cap('can_livelychatsupport');
        LivelyChatSupport_installation();
        if ((double) $livelychatsupport["addon_version"] < 1.5) {
            LivelyChatSupport_settings_hash_updater();
        }
    }
}
 public function add_caps()
 {
     global $wp_roles;
     if ($this->ddl_users_settings->get_options('updated_profiles') === true) {
         return;
     }
     if (!isset($wp_roles) || !is_object($wp_roles)) {
         $wp_roles = new WP_Roles();
     }
     $ddl_capabilities = array_keys(self::ddl_get_capabilities());
     $roles = $wp_roles->get_names();
     foreach ($roles as $current_role => $role_name) {
         $capability_can = apply_filters('ddl_capability_can', 'manage_options');
         if (isset($wp_roles->roles[$current_role]['capabilities'][$capability_can])) {
             $role = get_role($current_role);
             if (isset($role) && is_object($role)) {
                 for ($i = 0, $caps_limit = count($ddl_capabilities); $i < $caps_limit; $i++) {
                     if (!isset($wp_roles->roles[$current_role]['capabilities'][$ddl_capabilities[$i]])) {
                         $role->add_cap($ddl_capabilities[$i]);
                     }
                 }
             }
         }
     }
     //Set new caps for all Super Admins
     $super_admins = get_super_admins();
     foreach ($super_admins as $admin) {
         $updated_current_user = new WP_User($admin);
         for ($i = 0, $caps_limit = count($ddl_capabilities); $i < $caps_limit; $i++) {
             $updated_current_user->add_cap($ddl_capabilities[$i]);
         }
     }
     // We need to refresh $current_user caps to display the entire Layouts menu
     // If $current_user has not been updated yet with the new capabilities,
     global $current_user;
     if (isset($current_user) && isset($current_user->ID)) {
         // Insert the capabilities for the current execution
         $updated_current_user = new WP_User($current_user->ID);
         for ($i = 0, $caps_limit = count($ddl_capabilities); $i < $caps_limit; $i++) {
             if ($updated_current_user->has_cap($ddl_capabilities[$i])) {
                 $current_user->add_cap($ddl_capabilities[$i]);
             }
         }
         // Refresh $current_user->allcaps
         $current_user->get_role_caps();
     }
     $this->ddl_users_settings->update_options('updated_profiles', true, true);
 }
 public function test_get_all__caps__read__logged_in_with_read_others_default_tickets_cap()
 {
     //now if we are a real user with read default tickets, we should also be able to see our own
     //and lastly, if we are a real user who can read others default tickets...
     global $current_user;
     $current_user = $this->user;
     $this->user->add_cap('ee_read_default_tickets');
     $this->user->add_cap('ee_read_others_default_tickets');
     $results = EEM_Ticket::instance()->get_all(array('caps' => EEM_Base::caps_read, 'order_by' => array('TKT_ID' => 'ASC')));
     $first_result = reset($results);
     $this->assertEEModelObjectsEquals($this->t_mine, $first_result);
     $next_result = next($results);
     $this->assertEEModelObjectsEquals($this->t_others, $next_result);
     $next_result = next($results);
     $this->assertEEModelObjectsEquals($this->t_mine_default, $next_result);
     $next_result = next($results);
     $this->assertEEModelObjectsEquals($this->t_others_default, $next_result);
     $this->assertEquals(4, count($results));
 }
Пример #16
0
 /**
  * sanitize the params .(if there was a problem in a occurred an exception will throw )
  *
  * @param array $wpNeeds
  * @return mixed returns user or errors
  */
 public function register(array $wpNeeds)
 {
     $user = new \stdClass();
     $user->user = null;
     $user->error = false;
     if ($error = $this->sanitize($wpNeeds) === true) {
         /**
          * making object from arrays for easier writability
          */
         $wpNeedsObj = $this->formatter->arrayToStdClass($wpNeeds);
         /**
          * doing the registration
          */
         $id = $this->insertUser($wpNeeds);
         /**
          * fetching registered user
          */
         if (is_integer($id)) {
             $user = new \WP_User($id);
             $user->add_cap("profile");
             $usermeta = new \UserMeta();
             $usermeta->user_id = $id;
             $usermeta->save();
             $usermeta = \UserMeta::where('user_id', $id)->first();
             $user = \WpUser::where("ID", $id)->first();
             $user->meta_id = $usermeta->id;
             $user->save();
             $user->user = $this->db->getRegisteredUser($id);
             unset($user->error);
             /**
              * user structure is
              * $user->user
              * $user->email
              */
             return $user;
         }
         return $user;
     }
     $user->error = $error;
     return $user;
 }
Пример #17
0
/**
 * Preform upgrade tasks such as deleting and updating options
 * @since 2.0
 */
function code_snippets_upgrader()
{
    /* Get the current plugin version from the database */
    $prev_version = get_option('code_snippets_version');
    /* Check if this is the first plugin run */
    if (!$prev_version) {
        /* Register capabilities */
        $role = get_role(apply_filters('code_snippets_role', 'administrator'));
        $role->add_cap(apply_filters('code_snippets_cap', 'manage_snippets'));
    }
    /* Check if we have upgraded from an older version */
    if (version_compare($prev_version, CODE_SNIPPETS_VERSION, '<')) {
        /* Upgrade the database tables */
        create_code_snippets_tables(true);
        /* Update the plugin version stored in the database */
        update_option('code_snippets_version', CODE_SNIPPETS_VERSION);
    }
    /* Run multisite-only upgrades */
    if (is_multisite() && is_main_site()) {
        /* Get the current plugin version from the database */
        $prev_ms_version = get_site_option('code_snippets_version');
        /* Check if this is the first plugin run */
        if (!$prev_ms_version) {
            /* Register multisite capabilities */
            $network_cap = apply_filters('code_snippets_network_cap', 'manage_network_snippets');
            $supers = get_super_admins();
            foreach ($supers as $admin) {
                $user = new WP_User(0, $admin);
                $user->add_cap($network_cap);
            }
        }
        /* Check if we have upgraded from an older version */
        if (version_compare($prev_ms_version, CODE_SNIPPETS_VERSION, '<')) {
            /* Update the plugin version stored in the database */
            update_site_option('code_snippets_version', CODE_SNIPPETS_VERSION);
        }
    }
}
 function edit_translator($user_id, $language_pairs)
 {
     global $wpdb;
     $result = false;
     $_user = new WP_User($user_id);
     if (empty($language_pairs)) {
         $this->remove_translator($user_id);
         if ($user_id == $this->current_translator->ID) {
             $this->current_translator = null;
         }
     } else {
         if (!$_user->has_cap('translate')) {
             $_user->add_cap('translate');
         }
         update_user_meta($user_id, $wpdb->prefix . 'language_pairs', $language_pairs);
         $result = true;
         if ($user_id == $this->current_translator->ID) {
             $this->current_translator->language_pairs = get_user_meta($user_id, $wpdb->prefix . 'language_pairs', true);
         }
     }
     return $result;
 }
Пример #19
0
 /**
  * Make sure administrators can see Formidable menu
  *
  * @since 2.0
  */
 public static function maybe_add_permissions()
 {
     self::force_capability('frm_view_entries');
     if (!current_user_can('administrator') || current_user_can('frm_view_forms')) {
         return;
     }
     $user_id = get_current_user_id();
     $user = new WP_User($user_id);
     $frm_roles = self::frm_capabilities();
     foreach ($frm_roles as $frm_role => $frm_role_description) {
         $user->add_cap($frm_role);
         unset($frm_role, $frm_role_description);
     }
 }
	/**
	 * @ticket 28374
	 */
	function test_current_user_edit_caps() {
		$user = new WP_User( $this->factory->user->create( array( 'role' => 'contributor' ) ) );
		wp_set_current_user( $user->ID );

		$user->add_cap( 'publish_posts' );
		$user->add_cap( 'publish_pages' );
		$this->assertTrue( $user->has_cap( 'publish_posts' ) );
		$this->assertTrue( $user->has_cap( 'publish_pages' ) );

		$user->remove_cap( 'publish_pages' );
		$this->assertFalse( $user->has_cap( 'publish_pages' ) );
	}
Пример #21
0
 /**
  * Handles the importation of Users/Members.
  *
  * @package s2Member\Imports
  * @since 110815
  */
 public static function import_users()
 {
     if (!empty($_POST['ws_plugin__s2member_pro_import_users']) && ($nonce = $_POST['ws_plugin__s2member_pro_import_users']) && wp_verify_nonce($nonce, 'ws-plugin--s2member-pro-import-users') && current_user_can('create_users')) {
         global $wpdb;
         // Global database object reference.
         /** @var \wpdb $wpdb This line for IDEs that need a reference. */
         global $current_site, $current_blog;
         // Multisite Networking.
         @set_time_limit(0);
         // Make time for processing large import files.
         @ini_set('memory_limit', apply_filters('admin_memory_limit', WP_MAX_MEMORY_LIMIT));
         remove_all_actions('profile_update') . remove_all_actions('user_register');
         remove_all_actions('added_existing_user') . remove_all_actions('add_user_to_blog');
         if (!empty($_FILES['ws_plugin__s2member_pro_import_users_file']) && empty($_FILES['ws_plugin__s2member_pro_import_users_file']['error'])) {
             $file = fopen($_FILES['ws_plugin__s2member_pro_import_users_file']['tmp_name'], 'r');
         } else {
             if (!empty($_POST['ws_plugin__s2member_pro_import_users_direct_input'])) {
                 fwrite($file = tmpfile(), trim(stripslashes($_POST['ws_plugin__s2member_pro_import_users_direct_input']))) . fseek($file, 0);
             }
         }
         $imported = $line = $line_index = 0;
         // Initialize these counters.
         $headers = array();
         // Initialize the array of CSV import file headers.
         $user_keys = array();
         // Initialize array of user keys.
         if (is_object($_user_row = $wpdb->get_row("SELECT * FROM `" . $wpdb->users . "` LIMIT 1"))) {
             foreach (array_keys((array) $_user_row) as $_user_key) {
                 $user_keys[] = $_user_key;
             }
         }
         unset($_user_row, $_user_key);
         // Housekeeping.
         $user_keys = array_unique($user_keys);
         // Only unique keys please.
         if (isset($file) && is_resource($file)) {
             while (($_csv_data = version_compare(PHP_VERSION, '5.3', '>=') ? fgetcsv($file, 0, ',', '"', '"') : fgetcsv($file, 0, ',', '"')) !== FALSE) {
                 $line_index = (int) $line_index + 1;
                 // CSV lines.
                 $line = (int) $line + 1;
                 // CSV lines.
                 $_csv_data = c_ws_plugin__s2member_utils_strings::trim_deep($_csv_data);
                 if ($line_index === 1 && isset($_csv_data[0])) {
                     $line = $line - 1;
                     foreach ($_csv_data as $_header) {
                         $headers[] = $_header;
                     }
                     unset($_header);
                     // Housekeeping.
                     continue;
                     // We've got the headers now; let's move to the next line.
                 }
                 if ($line_index >= 1 && (!$headers || !in_array('ID', $headers, TRUE) && !in_array('user_login', $headers, TRUE))) {
                     $errors[] = 'Line #' . $line . '. Missing first-line CSV headers; please try again.' . ' Please note that your CSV headers MUST contain (at a minimum), one of: "ID", or "user_login"';
                     break;
                     // Stop here; we have no headers in this importation.
                 }
                 $_user_ID_key = array_search('ID', $headers);
                 $_user_id = $_user_ID_key !== FALSE && !empty($_csv_data[$_user_ID_key]) ? (int) $_csv_data[$_user_ID_key] : 0;
                 unset($_user_ID_key);
                 // Housekeeping.
                 $_user_login_key = array_search('user_login', $headers);
                 $_user_login = $_user_login_key !== FALSE && !empty($_csv_data[$_user_login_key]) ? $_csv_data[$_user_login_key] : '';
                 unset($_user_login_key);
                 // Housekeeping.
                 $_user_pass_key = array_search('user_pass', $headers);
                 $_user_pass = $_user_pass_key !== FALSE && !empty($_csv_data[$_user_pass_key]) ? $_csv_data[$_user_pass_key] : '';
                 unset($_user_pass_key);
                 // Housekeeping.
                 $_user_email_key = array_search('user_email', $headers);
                 $_user_email = $_user_email_key !== FALSE && !empty($_csv_data[$_user_email_key]) ? $_csv_data[$_user_email_key] : '';
                 unset($_user_email_key);
                 // Housekeeping.
                 $_user_role_key = array_search('role', $headers);
                 $_user_role = $_user_role_key !== FALSE && !empty($_csv_data[$_user_role_key]) ? $_csv_data[$_user_role_key] : '';
                 $_user_role = is_numeric($_user_role) ? $_user_role == 0 ? 'subscriber' : 's2member_level' . $_user_role : $_user_role;
                 unset($_user_role_key);
                 // Housekeeping.
                 $_user_ccaps_key = array_search('ccaps', $headers);
                 $_user_ccaps = $_user_ccaps_key !== FALSE && !empty($_csv_data[$_user_ccaps_key]) ? $_csv_data[$_user_ccaps_key] : '';
                 unset($_user_ccaps_key);
                 // Housekeeping.
                 if ($_user_login) {
                     if (is_multisite()) {
                         $_user_login = strtolower($_user_login);
                     }
                     $_user_login = sanitize_user($_user_login, is_multisite());
                 }
                 if ($_user_email) {
                     $_user_email = sanitize_email($_user_email);
                 }
                 $_user_id_exists_but_not_on_blog = 0;
                 // Initialize.
                 if (!$_user_id && $_user_login && $_user_email && is_multisite()) {
                     $_user_id = $_user_id_exists_but_not_on_blog = c_ws_plugin__s2member_utils_users::ms_user_login_email_exists_but_not_on_blog($_user_login, $_user_email);
                 }
                 if (strcasecmp($_user_role, 'administrator') === 0) {
                     $errors[] = 'Line #' . $line . '. Users cannot be updated to an Administrator. Bypassing this line for security.';
                     continue;
                     // Skip this line.
                 }
                 if ($_user_email && !is_email($_user_email)) {
                     $errors[] = 'Line #' . $line . '. Invalid email address (<code>' . esc_html($_user_email) . '</code>); please try again.';
                     continue;
                     // Skip this line.
                 }
                 if ($_user_login && !validate_username($_user_login)) {
                     $errors[] = 'Line #' . $line . '. Invalid username (<code>' . esc_html($_user_login) . '</code>).';
                     continue;
                     // Skip this line.
                 }
                 if ($_user_id) {
                     if (!is_object($_user = new WP_User($_user_id)) || !$_user->ID) {
                         $errors[] = 'Line #' . $line . '. User ID# <code>' . esc_html($_user_id) . '</code> does NOT belong to an existing User.';
                         continue;
                         // Skip this line.
                     }
                     if (is_super_admin($_user_id) || $_user->has_cap('administrator')) {
                         $errors[] = 'Line #' . $line . '. User ID# <code>' . esc_html($_user_id) . '</code> belongs to an Administrator. Bypassing this line for security.';
                         continue;
                         // Skip this line.
                     }
                     if (is_multisite() && $_user_id_exists_but_not_on_blog && add_existing_user_to_blog(array('user_id' => $_user_id, 'role' => 'subscriber')) !== TRUE) {
                         $errors[] = 'Line #' . $line . '. Unknown user/site addition error, please try again.';
                         continue;
                         // Skip this line.
                     }
                     if (is_multisite() && !is_user_member_of_blog($_user_id)) {
                         $errors[] = 'Line #' . $line . '. User ID# <code>' . esc_html($_user_id) . '</code> does NOT belong to an existing User on this site.';
                         continue;
                         // Skip this line.
                     }
                     if ($_user_email && strcasecmp($_user_email, $_user->user_email) !== 0 && email_exists($_user_email)) {
                         $errors[] = 'Line #' . $line . '. Conflicting; the email address (<code>' . esc_html($_user_email) . '</code>), already exists.';
                         continue;
                         // Skip this line.
                     }
                     if ($_user_login && strcasecmp($_user_login, $_user->user_login) !== 0 && username_exists($_user_login)) {
                         $errors[] = 'Line #' . $line . '. Conflicting; the username (<code>' . esc_html($_user_login) . '</code>), already exists.';
                         continue;
                         // Skip this line.
                     }
                     /** @var WP_Error $_email_login_validation */
                     if (is_multisite() && strcasecmp($_user_email, $_user->user_email) !== 0 && strcasecmp($_user_login, $_user->user_login) !== 0) {
                         if (is_wp_error($_email_login_validation = wpmu_validate_user_signup($_user_login, $_user_email))) {
                             if ($_email_login_validation->get_error_code()) {
                                 $errors[] = 'Line #' . $line . '. Network. The email and/or username (<code>' . esc_html($_user_email) . '</code> / <code>' . esc_html($_user_login) . '</code>) are in conflict w/ network rules.';
                                 continue;
                                 // Skip this line.
                             }
                         }
                     }
                     unset($_email_login_validation);
                     // Housekeeping.
                     $_wp_update_user = array();
                     foreach ($user_keys as $_user_key) {
                         if (($_user_data_key = array_search($_user_key, $headers)) !== FALSE && isset($_csv_data[$_user_data_key])) {
                             $_wp_update_user[$_user_key] = $_csv_data[$_user_data_key];
                         }
                     }
                     unset($_user_key, $_user_data_key);
                     // Housekeeping.
                     if (is_multisite() && c_ws_plugin__s2member_utils_conds::is_multisite_farm() && !is_main_site()) {
                         unset($_wp_update_user['user_login'], $_wp_update_user['user_pass']);
                     }
                     if (!wp_update_user(wp_slash($_wp_update_user))) {
                         $errors[] = 'Line #' . $line . '. User ID# <code>' . esc_html($_user_id) . '</code> could NOT be updated. Unknown error, please try again.';
                         continue;
                         // Skip this line.
                     }
                     unset($_wp_update_user);
                     // Housekeeping.
                     clean_user_cache($_user_id);
                     wp_cache_delete($_user_id, 'user_meta');
                     $_user = new WP_User($_user_id);
                     $imported = $imported + 1;
                 } else {
                     if (!$_user_email) {
                         $errors[] = 'Line #' . $line . '. Missing email address.';
                         continue;
                         // Skip this line.
                     }
                     if (email_exists($_user_email)) {
                         $errors[] = 'Line #' . $line . '. Conflicting; the email address (<code>' . esc_html($_user_email) . '</code>), already exists.';
                         continue;
                         // Skip this line.
                     }
                     if (!$_user_login) {
                         $errors[] = 'Line #' . $line . '. Missing user login (i.e., username).';
                         continue;
                         // Skip this line.
                     }
                     if (username_exists($_user_login)) {
                         $errors[] = 'Line #' . $line . '. Conflicting; the username (<code>' . esc_html($_user_login) . '</code>), already exists.';
                         continue;
                         // Skip this line.
                     }
                     /** @var WP_Error $_email_login_validation */
                     if (is_multisite() && is_wp_error($_email_login_validation = wpmu_validate_user_signup($_user_login, $_user_email))) {
                         if ($_email_login_validation->get_error_code()) {
                             $errors[] = 'Line #' . $line . '. Network. The email and/or username (<code>' . esc_html($_user_email) . '</code> / <code>' . esc_html($_user_login) . '</code>) are in conflict w/ network rules.';
                             continue;
                             // Skip this line.
                         }
                     }
                     unset($_email_login_validation);
                     // Housekeeping.
                     if (!($_user_id = wp_insert_user(wp_slash(array('user_login' => $_user_login, 'user_pass' => $_user_pass ? $_user_pass : wp_generate_password(12, FALSE), 'user_email' => $_user_email)))) || is_wp_error($_user_id)) {
                         $errors[] = 'Line #' . $line . '. Unknown insertion error, please try again.';
                         continue;
                         // Skip this line.
                     }
                     $_wp_update_user = array('ID' => $_user_id);
                     foreach ($user_keys as $_user_key) {
                         if (($_user_data_key = array_search($_user_key, $headers)) !== FALSE && isset($_csv_data[$_user_data_key])) {
                             $_wp_update_user[$_user_key] = $_csv_data[$_user_data_key];
                         }
                     }
                     unset($_user_key, $_user_data_key);
                     // Housekeeping.
                     if (!wp_update_user(wp_slash($_wp_update_user))) {
                         $errors[] = 'Line #' . $line . '. Post insertion update failed on User ID# <code>' . esc_html($_user_id) . '</code>. Unknown error, please try again.';
                         continue;
                         // Skip this line.
                     }
                     unset($_wp_update_user);
                     // Housekeeping.
                     if (is_multisite()) {
                         // New Users on a Multisite Network need this too.
                         update_user_meta($_user_id, 's2member_originating_blog', $current_blog->blog_id);
                     }
                     clean_user_cache($_user_id);
                     wp_cache_delete($_user_id, 'user_meta');
                     $_user = new WP_User($_user_id);
                     $imported = $imported + 1;
                 }
                 if ($_user_role) {
                     $_user->set_role($_user_role);
                 }
                 if ($_user_ccaps) {
                     foreach ($_user->allcaps as $_cap => $_cap_enabled) {
                         if (preg_match('/^access_s2member_ccap_/', $_cap)) {
                             $_user->remove_cap($_cap);
                         }
                     }
                     unset($_cap, $_cap_enabled);
                     // Housekeeping.
                     if (preg_replace('/^-all[' . "\r\n\t" . '\\s;,]*/', '', str_replace('+', '', $_user_ccaps))) {
                         foreach (preg_split('/[' . "\r\n\t" . '\\s;,]+/', preg_replace('/^-all[' . "\r\n\t" . '\\s;,]*/', '', str_replace('+', '', $_user_ccaps))) as $_ccap) {
                             if (strlen($_ccap = trim(strtolower(preg_replace('/[^a-z_0-9]/i', '', $_ccap))))) {
                                 $_user->add_cap('access_s2member_ccap_' . $_ccap);
                             }
                         }
                     }
                 }
                 $_user_custom_fields = get_user_option('s2member_custom_fields', $_user_id);
                 $_user_custom_fields = is_array($_user_custom_fields) ? $_user_custom_fields : array();
                 foreach ($headers as $_index => $_header) {
                     if (strpos($_header, 'meta_key__') === 0) {
                         if (isset($_csv_data[$_index])) {
                             $_new_meta_value = $_csv_data[$_index];
                             $_user_meta_key = substr($_header, strlen('meta_key__'));
                             if ($_user_meta_key === $wpdb->prefix . 'capabilities' && ($_user_role || $_user_ccaps)) {
                                 continue;
                             }
                             // Already handled via `role` and `ccaps`.
                             if ($_user_meta_key === $wpdb->prefix . 'capabilities' && stripos($_new_meta_value, 'administrator') !== FALSE) {
                                 continue;
                             }
                             // Do not allow this for security purposes.
                             if (is_multisite() && c_ws_plugin__s2member_utils_conds::is_multisite_farm() && !is_main_site()) {
                                 if (strpos($_user_meta_key, $wpdb->prefix) !== 0 && !in_array($_user_meta_key, array('first_name', 'last_name', 'nickname', 'description'), TRUE)) {
                                     continue;
                                 }
                             }
                             // Child sites may NOT update meta data for other child blogs.
                             switch ($_user_meta_key) {
                                 case $wpdb->prefix . 'capabilities':
                                 case $wpdb->prefix . 's2member_sp_references':
                                 case $wpdb->prefix . 's2member_ipn_signup_vars':
                                 case $wpdb->prefix . 's2member_access_cap_times':
                                 case $wpdb->prefix . 's2member_paid_registration_times':
                                 case $wpdb->prefix . 's2member_file_download_access_arc':
                                 case $wpdb->prefix . 's2member_file_download_access_log':
                                     if (isset($_new_meta_value[0])) {
                                         // This handles JSON-decoding for known array values.
                                         if (!is_null($_new_meta_value_decoded = json_decode($_new_meta_value, TRUE))) {
                                             $_new_meta_value = maybe_serialize($_new_meta_value_decoded);
                                         }
                                     }
                                     break;
                             }
                             $_existing_meta_row = $wpdb->get_row("SELECT * FROM `" . $wpdb->usermeta . "` WHERE `user_id` = '" . esc_sql($_user_id) . "' AND `meta_key` = '" . esc_sql($_user_meta_key) . "' AND `meta_value` = '" . esc_sql($_new_meta_value) . "' LIMIT 1");
                             if (is_object($_existing_meta_row)) {
                                 continue;
                             }
                             // No need to update this; it is still the same value.
                             $_existing_meta_rows = $wpdb->get_results("SELECT * FROM `" . $wpdb->usermeta . "` WHERE `user_id` = '" . esc_sql($_user_id) . "' AND `meta_key` = '" . esc_sql($_user_meta_key) . "' LIMIT 2");
                             if ($_existing_meta_rows && count($_existing_meta_rows) > 1) {
                                 continue;
                             }
                             // We don't update multivalue keys. This can cause database corruption via CSV import files.
                             $_existing_meta_row = $_existing_meta_rows ? $_existing_meta_rows[0] : NULL;
                             /** @var object $_existing_meta_row This line is for IDEs; so they don't choke. */
                             if (is_object($_existing_meta_row) && $_new_meta_value !== $_existing_meta_row->meta_value) {
                                 $wpdb->update($wpdb->usermeta, array('meta_value' => $_new_meta_value), array('umeta_id' => $_existing_meta_row->umeta_id));
                             } else {
                                 if (!is_object($_existing_meta_row)) {
                                     $wpdb->insert($wpdb->usermeta, array('user_id' => $_user_id, 'meta_key' => $_user_meta_key, 'meta_value' => $_new_meta_value));
                                 }
                             }
                         }
                     } else {
                         if (strpos($_header, 'custom_field_key__') === 0) {
                             if (isset($_csv_data[$_index])) {
                                 $_new_custom_field_value = $_csv_data[$_index];
                                 if (!is_null($_new_custom_field_value_decoded = json_decode($_new_custom_field_value, TRUE))) {
                                     $_new_custom_field_value = $_new_custom_field_value_decoded;
                                 }
                                 $_user_custom_field_key = substr($_header, strlen('custom_field_key__'));
                                 $_user_custom_fields[$_user_custom_field_key] = $_new_custom_field_value;
                             }
                         }
                     }
                 }
                 update_user_option($_user_id, 's2member_custom_fields', $_user_custom_fields);
                 unset($_user_custom_fields, $_index, $_header);
                 // Housekeeping.
                 unset($_new_meta_value, $_new_meta_value_decoded, $_user_meta_key, $_existing_meta_rows, $_existing_meta_row);
                 unset($_new_custom_field_value, $_new_custom_field_value_decoded, $_user_custom_field_key);
             }
             fclose($file);
             // Close the file resource handle now.
             unset($_csv_data, $_user, $_user_id, $_user_login, $_user_email);
             unset($_user_id_exists_but_not_on_blog, $_user_role, $_user_ccaps);
         } else {
             $errors[] = 'No data was received. Please try again.';
         }
         // The upload failed, or it was empty.
         c_ws_plugin__s2member_admin_notices::display_admin_notice('Operation complete. Users/Members imported: <code>' . (int) $imported . '</code>.');
         if (!empty($errors)) {
             // Here is where a detailed error log will be returned to the Site Owner; as a way of clarifying what just happened during importation.
             c_ws_plugin__s2member_admin_notices::display_admin_notice('<strong>The following errors were encountered during importation:</strong><ul style="font-size:80%; list-style:disc outside; margin-left:25px;"><li>' . implode('</li><li>', $errors) . '</li></ul>', TRUE);
         }
     }
 }
 function update_membershipadmin_capability($user_id)
 {
     $user = new WP_User($user_id);
     if (!empty($_POST['membershipadmin']) && $_POST['membershipadmin'] == 'yes') {
         $user->add_cap('membershipadmin');
     } else {
         $user->remove_cap('membershipadmin');
     }
 }
Пример #23
0
/**
* Handle postback from user manager
*/
function afmng_menu_usermng_postback()
{
    switch ($_POST["action"]) {
        case 'update_user':
            foreach (afmng_db_get_users() as $user) {
                $user = new WP_User($user->ID);
                foreach (afmngdb::$caps as $cap) {
                    if (!$user->has_cap($cap) && $_POST[$cap . ':' . $user->ID]) {
                        $user->add_cap($cap);
                    } else {
                        if ($user->has_cap($cap) && !isset($_POST[$cap . ':' . $user->ID])) {
                            $user->remove_cap($cap);
                        }
                    }
                }
            }
            break;
    }
}
Пример #24
0
 /**
  * Handles the importation of Users/Members.
  *
  * @package s2Member\Imports
  * @since 110815
  *
  * @return null
  */
 public static function import_users()
 {
     if (!empty($_POST["ws_plugin__s2member_pro_import_users"]) && ($nonce = $_POST["ws_plugin__s2member_pro_import_users"]) && wp_verify_nonce($nonce, "ws-plugin--s2member-pro-import-users") && current_user_can("create_users")) {
         global $wpdb;
         global $current_site, $current_blog;
         @set_time_limit(0);
         @ini_set("memory_limit", apply_filters("admin_memory_limit", WP_MAX_MEMORY_LIMIT));
         remove_all_actions("profile_update") . remove_all_actions("user_register");
         remove_all_actions("added_existing_user") . remove_all_actions("add_user_to_blog");
         if (!empty($_FILES["ws_plugin__s2member_pro_import_users_file"]) && empty($_FILES["ws_plugin__s2member_pro_import_users_file"]["error"])) {
             $file = fopen($_FILES["ws_plugin__s2member_pro_import_users_file"]["tmp_name"], "r");
         } else {
             if (!empty($_POST["ws_plugin__s2member_pro_import_users_direct_input"])) {
                 fwrite($file = tmpfile(), trim(stripslashes($_POST["ws_plugin__s2member_pro_import_users_direct_input"]))) . fseek($file, 0);
             }
         }
         if (isset($file) && is_resource($file) && !($imported = 0)) {
             $custom_field_vars = array();
             if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) {
                 foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], TRUE) as $field) {
                     $custom_field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"]));
                     $custom_field_vars[] = $custom_field_var;
                 }
             }
             sort($custom_field_vars, SORT_STRING);
             while (($data = version_compare(PHP_VERSION, "5.3", ">=") ? fgetcsv($file, 0, ",", '"', '"') : fgetcsv($file, 0, ",", '"')) !== false) {
                 $line = (int) $line + 1;
                 $data = c_ws_plugin__s2member_utils_strings::trim_deep($data);
                 $data = stripslashes_deep($data);
                 if ($line === 1 && strtoupper($data[0]) === "ID") {
                     $line = $line - 1;
                     continue;
                 }
                 if (is_multisite() && c_ws_plugin__s2member_utils_conds::is_multisite_farm() && !is_main_site()) {
                     $ID = $data[0];
                     $user_login = is_multisite() ? strtolower($data[1]) : $data[1];
                     $user_login = preg_replace("/\\s+/", "", sanitize_user($user_login, is_multisite()));
                     $user_pass = (string) "";
                     $first_name = $data[2];
                     $last_name = $data[3];
                     $display_name = $data[4];
                     $user_email = sanitize_email($data[5]);
                     $user_url = $data[6];
                     $role = $data[7];
                     $custom_capabilities = $data[8];
                     $user_registered = $data[9] ? date("Y-m-d H:i:s", strtotime($data[9])) : "";
                     $paid_registration_times = $data[10] ? maybe_unserialize($data[10]) : "";
                     $last_payment_time = $data[11] ? strtotime($data[11]) : "";
                     $auto_eot_time = $data[12] ? strtotime($data[12]) : "";
                     $custom = $data[13];
                     $subscr_id = $data[14];
                     $subscr_gateway = strtolower($data[15]);
                     $custom_fields = array();
                     if (count($data) > 16) {
                         for ($i = 16, $j = 0; $i < count($data); $i++, $j++) {
                             if (isset($custom_field_vars[$j])) {
                                 $custom_fields[$custom_field_vars[$j]] = maybe_unserialize($data[$i]);
                             }
                         }
                     }
                 } else {
                     $ID = $data[0];
                     $user_login = is_multisite() ? strtolower($data[1]) : $data[1];
                     $user_login = preg_replace("/\\s+/", "", sanitize_user($user_login, is_multisite()));
                     $user_pass = $data[2];
                     $first_name = $data[3];
                     $last_name = $data[4];
                     $display_name = $data[5];
                     $user_email = sanitize_email($data[6]);
                     $user_url = $data[7];
                     $role = $data[8];
                     $custom_capabilities = $data[9];
                     $user_registered = $data[10] ? date("Y-m-d H:i:s", strtotime($data[10])) : "";
                     $paid_registration_times = $data[11] ? maybe_unserialize($data[11]) : "";
                     $last_payment_time = $data[12] ? strtotime($data[12]) : "";
                     $auto_eot_time = $data[13] ? strtotime($data[13]) : "";
                     $custom = $data[14];
                     $subscr_id = $data[15];
                     $subscr_gateway = strtolower($data[16]);
                     $custom_fields = array();
                     if (count($data) > 17) {
                         for ($i = 17, $j = 0; $i < count($data); $i++, $j++) {
                             if (isset($custom_field_vars[$j])) {
                                 $custom_fields[$custom_field_vars[$j]] = maybe_unserialize($data[$i]);
                             }
                         }
                     }
                 }
                 $role = is_numeric($role) ? $role == 0 ? "subscriber" : "s2member_level" . $role : $role;
                 if ($paid_registration_times && !is_array($paid_registration_times)) {
                     $paid_registration_times = array("level" => strtotime($paid_registration_times));
                 }
                 $paid_registration_times = !$paid_registration_times || !is_array($paid_registration_times) ? array() : $paid_registration_times;
                 $user_details = compact("ID", "user_login", "user_pass", "first_name", "last_name", "display_name", "user_email", "user_url", "role", "user_registered");
                 if (empty($user_details["user_pass"])) {
                     // If there was NO Password given.
                     unset($user_details["user_pass"]);
                 }
                 // Unset the Password array element.
                 if ($ID) {
                     if (is_object($user = new WP_User($ID)) && $user->ID) {
                         if (!is_multisite() || is_user_member_of_blog($ID)) {
                             if ((!is_multisite() || !is_super_admin($ID)) && !$user->has_cap("administrator")) {
                                 if (strtolower($role) !== "administrator") {
                                     if ($user_email && is_email($user_email)) {
                                         if ($user_login) {
                                             if (validate_username($user_login)) {
                                                 if (($_same_email = strtolower($user_email) === strtolower($user->user_email)) || !email_exists($user_email)) {
                                                     if (($_same_login = strtolower($user_login) === strtolower($user->user_login)) || !username_exists($user_login)) {
                                                         if (!is_multisite() || $_same_email && $_same_login || ($_ = wpmu_validate_user_signup($user_login, $user_email)) && (!is_wp_error($_["errors"]) || !$_["errors"]->get_error_code())) {
                                                             if (is_multisite() && c_ws_plugin__s2member_utils_conds::is_multisite_farm() && !is_main_site()) {
                                                                 unset($user_details["user_login"], $user_details["user_pass"]);
                                                             }
                                                             if ($user_id = wp_update_user($user_details)) {
                                                                 $user = new WP_User($ID);
                                                                 // Refresh object value.
                                                                 update_user_option($user_id, "s2member_custom", $custom);
                                                                 update_user_option($user_id, "s2member_subscr_id", $subscr_id);
                                                                 update_user_option($user_id, "s2member_subscr_gateway", $subscr_gateway);
                                                                 update_user_option($user_id, "s2member_auto_eot_time", $auto_eot_time);
                                                                 update_user_option($user_id, "s2member_paid_registration_times", $paid_registration_times);
                                                                 update_user_option($user_id, "s2member_last_payment_time", $last_payment_time);
                                                                 update_user_option($user_id, "s2member_custom_fields", $custom_fields);
                                                                 foreach ($user->allcaps as $cap => $cap_enabled) {
                                                                     if (preg_match("/^access_s2member_ccap_/", $cap)) {
                                                                         $user->remove_cap($ccap = $cap);
                                                                     }
                                                                 }
                                                                 if ($custom_capabilities && preg_replace("/^-all[\r\n\t\\s;,]*/", "", str_replace("+", "", $custom_capabilities))) {
                                                                     foreach (preg_split("/[\r\n\t\\s;,]+/", preg_replace("/^-all[\r\n\t\\s;,]*/", "", str_replace("+", "", $custom_capabilities))) as $ccap) {
                                                                         if (strlen($ccap = trim(strtolower(preg_replace("/[^a-z_0-9]/i", "", $ccap))))) {
                                                                             $user->add_cap("access_s2member_ccap_" . $ccap);
                                                                         }
                                                                     }
                                                                 }
                                                                 $imported = $imported + 1;
                                                             } else {
                                                                 $errors[] = "Line #" . $line . ". User ID# <code>" . $ID . "</code> could NOT be updated. Unknown error, please try again.";
                                                             }
                                                         } else {
                                                             $errors[] = "Line #" . $line . ". Network. The Username and/or Email (<code>" . esc_html($user_login) . "</code> / <code>" . esc_html($user_email) . "</code>) are in conflict w/ Network rules.";
                                                         }
                                                     } else {
                                                         $errors[] = "Line #" . $line . ". Conflicting. The Username (<code>" . esc_html($user_login) . "</code>), already exists.";
                                                     }
                                                 } else {
                                                     $errors[] = "Line #" . $line . ". Conflicting. The Email address (<code>" . esc_html($user_email) . "</code>), already exists.";
                                                 }
                                             } else {
                                                 $errors[] = "Line #" . $line . ". Invalid Username (<code>" . esc_html($user_login) . "</code>). Lowercase alphanumerics are required.";
                                             }
                                         } else {
                                             $errors[] = "Line #" . $line . ". Missing Username; please try again.";
                                         }
                                         // We have two separate errors for Usernames. This provides clarity.
                                     } else {
                                         $errors[] = "Line #" . $line . ". Missing or invalid Email address (<code>" . esc_html($user_email) . "</code>); please try again.";
                                     }
                                 } else {
                                     $errors[] = "Line #" . $line . ". User ID# <code>" . $ID . "</code> cannot be updated to an Administrator. Bypassing this line for security.";
                                 }
                             } else {
                                 $errors[] = "Line #" . $line . ". User ID# <code>" . $ID . "</code> belongs to an Administrator. Bypassing this line for security.";
                             }
                         } else {
                             $errors[] = "Line #" . $line . ". User ID# <code>" . $ID . "</code> does NOT belong to an existing User on this site.";
                         }
                     } else {
                         $errors[] = "Line #" . $line . ". User ID# <code>" . $ID . "</code> does NOT belong to an existing User.";
                     }
                 } else {
                     if (is_multisite() && ($user_id = c_ws_plugin__s2member_utils_users::ms_user_login_email_exists_but_not_on_blog($user_login, $user_email)) && !is_super_admin($user_id)) {
                         if (strtolower($role) !== "administrator") {
                             if (add_existing_user_to_blog(array("user_id" => $user_id, "role" => $role))) {
                                 if (is_object($user = new WP_User($user_id)) && $user->ID) {
                                     update_user_option($user_id, "s2member_custom", $custom);
                                     update_user_option($user_id, "s2member_subscr_id", $subscr_id);
                                     update_user_option($user_id, "s2member_subscr_gateway", $subscr_gateway);
                                     update_user_option($user_id, "s2member_auto_eot_time", $auto_eot_time);
                                     update_user_option($user_id, "s2member_paid_registration_times", $paid_registration_times);
                                     update_user_option($user_id, "s2member_last_payment_time", $last_payment_time);
                                     update_user_option($user_id, "s2member_custom_fields", $custom_fields);
                                     foreach ($user->allcaps as $cap => $cap_enabled) {
                                         if (preg_match("/^access_s2member_ccap_/", $cap)) {
                                             $user->remove_cap($ccap = $cap);
                                         }
                                     }
                                     if ($custom_capabilities && preg_replace("/^-all[\r\n\t\\s;,]*/", "", str_replace("+", "", $custom_capabilities))) {
                                         foreach (preg_split("/[\r\n\t\\s;,]+/", preg_replace("/^-all[\r\n\t\\s;,]*/", "", str_replace("+", "", $custom_capabilities))) as $ccap) {
                                             if (strlen($ccap = trim(strtolower(preg_replace("/[^a-z_0-9]/i", "", $ccap))))) {
                                                 $user->add_cap("access_s2member_ccap_" . $ccap);
                                             }
                                         }
                                     }
                                     $imported = $imported + 1;
                                 } else {
                                     $errors[] = "Line #" . $line . ". Unknown object error, please try again.";
                                 }
                             } else {
                                 $errors[] = "Line #" . $line . ". Unknown User/site addition error, please try again.";
                             }
                         } else {
                             $errors[] = "Line #" . $line . ". Role cannot be Administrator. Bypassing this line for security.";
                         }
                     } else {
                         if (strtolower($role) !== "administrator") {
                             if ($user_email && is_email($user_email)) {
                                 if ($user_login) {
                                     if (validate_username($user_login)) {
                                         if (!email_exists($user_email)) {
                                             if (!username_exists($user_login)) {
                                                 if (!is_multisite() || ($_ = wpmu_validate_user_signup($user_login, $user_email)) && (!is_wp_error($_["errors"]) || !$_["errors"]->get_error_code())) {
                                                     if ($user_id = wp_insert_user($user_details)) {
                                                         if (is_object($user = new WP_User($user_id)) && $user->ID) {
                                                             if ($user_pass) {
                                                                 // If we are given an "un-encrypted Password".
                                                                 wp_update_user(array("ID" => $user_id, "user_pass" => $user_pass));
                                                             }
                                                             if (is_multisite()) {
                                                                 // New Users on a Multisite Network need this too.
                                                                 update_user_meta($user_id, "s2member_originating_blog", $current_blog->blog_id);
                                                             }
                                                             update_user_option($user_id, "s2member_custom", $custom);
                                                             update_user_option($user_id, "s2member_subscr_id", $subscr_id);
                                                             update_user_option($user_id, "s2member_subscr_gateway", $subscr_gateway);
                                                             update_user_option($user_id, "s2member_auto_eot_time", $auto_eot_time);
                                                             update_user_option($user_id, "s2member_paid_registration_times", $paid_registration_times);
                                                             update_user_option($user_id, "s2member_last_payment_time", $last_payment_time);
                                                             update_user_option($user_id, "s2member_custom_fields", $custom_fields);
                                                             foreach ($user->allcaps as $cap => $cap_enabled) {
                                                                 if (preg_match("/^access_s2member_ccap_/", $cap)) {
                                                                     $user->remove_cap($ccap = $cap);
                                                                 }
                                                             }
                                                             if ($custom_capabilities && preg_replace("/^-all[\r\n\t\\s;,]*/", "", str_replace("+", "", $custom_capabilities))) {
                                                                 foreach (preg_split("/[\r\n\t\\s;,]+/", preg_replace("/^-all[\r\n\t\\s;,]*/", "", str_replace("+", "", $custom_capabilities))) as $ccap) {
                                                                     if (strlen($ccap = trim(strtolower(preg_replace("/[^a-z_0-9]/i", "", $ccap))))) {
                                                                         $user->add_cap("access_s2member_ccap_" . $ccap);
                                                                     }
                                                                 }
                                                             }
                                                             $imported = $imported + 1;
                                                         } else {
                                                             $errors[] = "Line #" . $line . ". Unknown object error, please try again.";
                                                         }
                                                     } else {
                                                         $errors[] = "Line #" . $line . ". Unknown insertion error, please try again.";
                                                     }
                                                 } else {
                                                     $errors[] = "Line #" . $line . ". Network. The Username and/or Email (<code>" . esc_html($user_login) . "</code> / <code>" . esc_html($user_email) . "</code>) are in conflict w/ Network rules.";
                                                 }
                                             } else {
                                                 $errors[] = "Line #" . $line . ". Conflicting. The Username (<code>" . esc_html($user_login) . "</code>), already exists.";
                                             }
                                         } else {
                                             $errors[] = "Line #" . $line . ". Conflicting. The Email address (<code>" . esc_html($user_email) . "</code>), already exists.";
                                         }
                                     } else {
                                         $errors[] = "Line #" . $line . ". Invalid Username (<code>" . esc_html($user_login) . "</code>). Lowercase alphanumerics are required.";
                                     }
                                 } else {
                                     $errors[] = "Line #" . $line . ". Missing Username; please try again.";
                                 }
                                 // We have two separate errors for Usernames. This provides clarity.
                             } else {
                                 $errors[] = "Line #" . $line . ". Missing or invalid Email address (<code>" . esc_html($user_email) . "</code>); please try again.";
                             }
                         } else {
                             $errors[] = "Line #" . $line . ". Role cannot be Administrator. Bypassing this line for security.";
                         }
                     }
                 }
             }
             fclose($file);
         } else {
             $errors[] = "No data was received. Please try again.";
         }
         // The upload failed, or it was empty.
         c_ws_plugin__s2member_admin_notices::display_admin_notice('Operation complete. Users/Members imported: <code>' . (int) $imported . '</code>.');
         if (!empty($errors)) {
             // Here is where a detailed error log will be returned to the Site Owner; as a way of clarifying what just happened during importation.
             c_ws_plugin__s2member_admin_notices::display_admin_notice('<strong>The following errors were encountered during importation:</strong><ul style="font-size:80%; list-style:disc outside; margin-left:25px;"><li>' . implode("</li><li>", $errors) . '</li></ul>', true);
         }
     }
     return;
 }
Пример #25
0
 /**
  * Add a capability to roles and/or users
  *
  * @brief Add a cap
  * @since 1.5.4
  *
  * @param WPDKUserCapability $cap   An instance of WPDKUserCapability class
  * @param array          $roles Optional. List of roles where add this cap
  * @param array          $users Optional. List of user id where add this cap
  */
 public function add_cap($cap, $roles = array(), $users = array())
 {
     // Add this cap to roles?
     if (!empty($roles)) {
         foreach ($roles as $role) {
             WPDKUserRoles::init()->add_cap($role, $cap->id);
         }
     }
     // Add this cap to users?
     if (!empty($users)) {
         foreach ($users as $user_id) {
             $user = new WP_User($user_id);
             $user->add_cap($cap->id);
         }
     }
     // Store the extra info
     $this->update_extended_data($cap);
 }
 /**
  * s2Member's PayPal Auto-Return/PDT handler (inner processing routine).
  *
  * @package s2Member\PayPal
  * @since 110720
  *
  * @param array $vars Required. An array of defined variables passed by {@link s2Member\PayPal\c_ws_plugin__s2member_paypal_return_in::paypal_return()}.
  *
  * @return array|bool The original ``$paypal`` array passed in (extracted) from ``$vars``, or false when conditions do NOT apply.
  */
 public static function cp($vars = array())
 {
     extract($vars, EXTR_OVERWRITE | EXTR_REFS);
     if (!empty($paypal['txn_type']) && preg_match('/^web_accept$/i', $paypal['txn_type']) && (!empty($paypal['item_number']) && preg_match($GLOBALS['WS_PLUGIN__']['s2member']['c']['membership_item_number_wo_level_regex'], $paypal['item_number'])) && (empty($paypal['payment_status']) || empty($payment_status_issues) || !preg_match($payment_status_issues, $paypal['payment_status'])) && !empty($paypal['txn_id']) && !empty($paypal['payer_email']) && (!empty($paypal['txn_baid']) || ($paypal['txn_baid'] = $paypal['txn_id'])) && (!empty($paypal['txn_cid']) || ($paypal['txn_cid'] = $paypal['txn_id']))) {
         foreach (array_keys(get_defined_vars()) as $__v) {
             $__refs[$__v] =& ${$__v};
         }
         do_action('ws_plugin__s2member_during_paypal_return_before_new_ccaps', get_defined_vars());
         unset($__refs, $__v);
         if (!get_transient($transient_rtn = 's2m_rtn_' . md5('s2member_transient_' . $_paypal_s)) && set_transient($transient_rtn, time(), 31556926 * 10)) {
             $paypal['s2member_log'][] = 's2Member `txn_type` identified as ( `web_accept` ) w/ update vars for Capabilities w/o Level.';
             list($paypal['level'], $paypal['ccaps'], $paypal['eotper']) = preg_split('/\\:/', $paypal['item_number'], 3);
             $paypal['ip'] = preg_match('/ip address/i', $paypal['option_name2']) && $paypal['option_selection2'] ? $paypal['option_selection2'] : '';
             $paypal['ip'] = !$paypal['ip'] && preg_match('/^[a-z0-9]+~[0-9\\.]+$/i', $paypal['invoice']) ? preg_replace('/^[a-z0-9]+~/i', '', $paypal['invoice']) : $paypal['ip'];
             $paypal['ip'] = !$paypal['ip'] && $_SERVER['REMOTE_ADDR'] ? $_SERVER['REMOTE_ADDR'] : $paypal['ip'];
             $paypal['currency'] = strtoupper($paypal['mc_currency']);
             // Normalize input currency.
             $paypal['currency_symbol'] = c_ws_plugin__s2member_utils_cur::symbol($paypal['currency']);
             if (preg_match('/(referenc|associat|updat|upgrad)/i', $paypal['option_name1']) && $paypal['option_selection1']) {
                 if (($user_id = c_ws_plugin__s2member_utils_users::get_user_id_with($paypal['txn_id'], $paypal['option_selection1'])) && is_object($user = new WP_User($user_id)) && $user->ID) {
                     if (!$user->has_cap('administrator')) {
                         $processing = $during = TRUE;
                         // Yes, we ARE processing this.
                         $fields = get_user_option('s2member_custom_fields', $user_id);
                         // These will be needed in the routines below.
                         $user_reg_ip = get_user_option('s2member_registration_ip', $user_id);
                         // Original IP during Registration.
                         $user_reg_ip = $paypal['ip'] = $user_reg_ip ? $user_reg_ip : $paypal['ip'];
                         // Now merge conditionally.
                         if (is_multisite() && !is_user_member_of_blog($user_id)) {
                             add_existing_user_to_blog(array('user_id' => $user_id, 'role' => get_option('default_role')));
                             $user = new WP_User($user_id);
                         }
                         if ($paypal['ccaps'] && preg_match('/^-all/', str_replace('+', '', $paypal['ccaps']))) {
                             foreach ($user->allcaps as $cap => $cap_enabled) {
                                 if (preg_match('/^access_s2member_ccap_/', $cap)) {
                                     $user->remove_cap($ccap = $cap);
                                 }
                             }
                         }
                         if ($paypal['ccaps'] && preg_replace('/^-all[' . "\r\n\t" . '\\s;,]*/', '', str_replace('+', '', $paypal['ccaps']))) {
                             foreach (preg_split('/[' . "\r\n\t" . '\\s;,]+/', preg_replace('/^-all[' . "\r\n\t" . '\\s;,]*/', '', str_replace('+', '', $paypal['ccaps']))) as $ccap) {
                                 if (strlen($ccap = trim(strtolower(preg_replace('/[^a-z_0-9]/i', '', $ccap))))) {
                                     $user->add_cap('access_s2member_ccap_' . $ccap);
                                 }
                             }
                         }
                         if (!get_user_option('s2member_registration_ip', $user_id)) {
                             update_user_option($user_id, 's2member_registration_ip', $paypal['ip']);
                         }
                         $paypal['s2member_log'][] = 's2Member Custom Capabilities updated w/ advanced update routines.';
                         setcookie('s2member_tracking', $s2member_tracking = c_ws_plugin__s2member_utils_encryption::encrypt($paypal['txn_id']), time() + 31556926, COOKIEPATH, COOKIE_DOMAIN) . setcookie('s2member_tracking', $s2member_tracking, time() + 31556926, SITECOOKIEPATH, COOKIE_DOMAIN) . ($_COOKIE['s2member_tracking'] = $s2member_tracking);
                         $paypal['s2member_log'][] = 'Transient Tracking Cookie set on ( `web_accept` ) w/ update vars for Capabilities w/o Level.';
                         if ($processing && ($code = $GLOBALS['WS_PLUGIN__']['s2member']['o']['ccap_tracking_codes']) && is_array($cv = preg_split('/\\|/', $paypal['custom']))) {
                             if (($code = preg_replace('/%%cv([0-9]+)%%/ei', 'trim(@$cv[$1])', $code)) && ($code = preg_replace('/%%(?:subscr|txn)_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['txn_id']), $code))) {
                                 if (($code = preg_replace('/%%(?:subscr|txn)_baid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['txn_baid']), $code)) && ($code = preg_replace('/%%(?:subscr|txn)_cid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['txn_cid']), $code))) {
                                     if (($code = preg_replace('/%%currency%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['currency']), $code)) && ($code = preg_replace('/%%currency_symbol%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['currency_symbol']), $code))) {
                                         if (($code = preg_replace('/%%amount%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['mc_gross']), $code)) && ($code = preg_replace('/%%txn_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['txn_id']), $code))) {
                                             if (($code = preg_replace('/%%item_number%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['item_number']), $code)) && ($code = preg_replace('/%%item_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['item_name']), $code))) {
                                                 if (($code = preg_replace('/%%first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['first_name']), $code)) && ($code = preg_replace('/%%last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['last_name']), $code))) {
                                                     if ($code = preg_replace('/%%full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(trim($paypal['first_name'] . ' ' . $paypal['last_name'])), $code)) {
                                                         if ($code = preg_replace('/%%payer_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($paypal['payer_email']), $code)) {
                                                             if (($code = preg_replace('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->first_name), $code)) && ($code = preg_replace('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->last_name), $code))) {
                                                                 if ($code = preg_replace('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(trim($user->first_name . ' ' . $user->last_name)), $code)) {
                                                                     if ($code = preg_replace('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->user_email), $code)) {
                                                                         if ($code = preg_replace('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->user_login), $code)) {
                                                                             if ($code = preg_replace('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user_reg_ip), $code)) {
                                                                                 if ($code = preg_replace('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user_id), $code)) {
                                                                                     if (is_array($fields) && !empty($fields)) {
                                                                                         foreach ($fields as $var => $val) {
                                                                                             if (!($code = preg_replace('/%%' . preg_quote($var, '/') . '%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(maybe_serialize($val)), $code))) {
                                                                                                 break;
                                                                                             }
                                                                                         }
                                                                                     }
                                                                                     if ($code = trim(preg_replace('/%%(.+?)%%/i', '', $code))) {
                                                                                         $paypal['s2member_log'][] = 'Storing Payment Tracking Codes into a Transient Queue. These will be processed on-site.';
                                                                                         set_transient('s2m_' . md5('s2member_transient_ccap_tracking_codes_' . $paypal['txn_id']), $code, 43200);
                                                                                     }
                                                                                 }
                                                                             }
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                         foreach (array_keys(get_defined_vars()) as $__v) {
                             $__refs[$__v] =& ${$__v};
                         }
                         do_action('ws_plugin__s2member_during_paypal_return_during_new_ccaps', get_defined_vars());
                         unset($__refs, $__v);
                         if ($redirection_url_after_capabilities = apply_filters('ws_plugin__s2member_redirection_url_after_capabilities', FALSE, get_defined_vars())) {
                             $paypal['s2member_log'][] = 'Redirecting Customer to a custom URL after Capabilities: ' . $redirection_url_after_capabilities;
                             wp_redirect($redirection_url_after_capabilities);
                         } else {
                             $paypal['s2member_log'][] = 'Redirecting Customer to the Login Page (after displaying a quick thank-you message). They need to log back in.';
                             echo c_ws_plugin__s2member_return_templates::return_template($paypal['subscr_gateway'], '<strong>' . _x('Thank you! You now have access to:', 's2member-front', 's2member') . '<br /><em>' . esc_html($paypal['item_name']) . '</em></strong>', _x('Please Log Back In (Click Here)', 's2member-front', 's2member'), wp_login_url());
                         }
                     } else {
                         $paypal['s2member_log'][] = 'Unable to add new Capabilities. The existing User ID is associated with an Administrator. Stopping here. Otherwise, an Administrator could lose access. Please make sure that you are NOT logged in as an Administrator while testing.';
                         $paypal['s2member_log'][] = 'Redirecting Customer to the Home Page (after displaying an error message).';
                         echo c_ws_plugin__s2member_return_templates::return_template($paypal['subscr_gateway'], _x('<strong>ERROR:</strong> Unable to add new Capabilities.<br />Please contact Support for assistance.<br /><br />The existing User ID is associated with an Administrator. Stopping here. Otherwise, an Administrator could lose access. Please make sure that you are NOT logged in as an Administrator while testing.', 's2member-front', 's2member'), _x('Back To Home Page', 's2member-front', 's2member'), home_url('/'));
                     }
                 } else {
                     $paypal['s2member_log'][] = 'Unable to add new Capabilities. Could not get the existing User ID from the DB.';
                     $paypal['s2member_log'][] = 'Redirecting Customer to the Home Page (after displaying an error message).';
                     echo c_ws_plugin__s2member_return_templates::return_template($paypal['subscr_gateway'], _x('<strong>ERROR:</strong> Unable to add new Capabilities.<br />Please contact Support for assistance.<br /><br />Could not get the existing User ID from the DB.', 's2member-front', 's2member'), _x('Back To Home Page', 's2member-front', 's2member'), home_url('/'));
                 }
             } else {
                 $paypal['s2member_log'][] = 'Unable to add new Capabilities. Missing User/Member details. Please check the `on0` and `os0` variables in your Button Code.';
                 $paypal['s2member_log'][] = 'Redirecting Customer to the Home Page (after displaying an error message).';
                 echo c_ws_plugin__s2member_return_templates::return_template($paypal['subscr_gateway'], _x('<strong>ERROR:</strong> Unable to add new Capabilities.<br />Please contact Support for assistance.<br /><br />Missing User/Member details.', 's2member-front', 's2member'), _x('Back To Home Page', 's2member-front', 's2member'), home_url('/'));
             }
         } else {
             $paypal['s2member_log'][] = 'Page Expired. Duplicate Return-Data.';
             $paypal['s2member_log'][] = 's2Member `txn_type` identified as ( `web_accept` ) w/ update vars for Capabilities w/o Level.';
             $paypal['s2member_log'][] = 'Page Expired. Instructing customer to check their email for further details about how to obtain access to what they purchased.';
             echo c_ws_plugin__s2member_return_templates::return_template($paypal['subscr_gateway'], '<strong>' . _x('Thank you! Please check your email for further details regarding your purchase.', 's2member-front', 's2member') . '</strong>', _x('Return to Home Page', 's2member-front', 's2member'), home_url('/'));
         }
         foreach (array_keys(get_defined_vars()) as $__v) {
             $__refs[$__v] =& ${$__v};
         }
         do_action('ws_plugin__s2member_during_paypal_return_after_new_ccaps', get_defined_vars());
         unset($__refs, $__v);
         return apply_filters('c_ws_plugin__s2member_paypal_return_in_wa_ccaps_wo_level', $paypal, get_defined_vars());
     } else {
         return apply_filters('c_ws_plugin__s2member_paypal_return_in_wa_ccaps_wo_level', FALSE, get_defined_vars());
     }
 }
 /**
  * s2Member's PayPal IPN handler (inner processing routine).
  *
  * @package s2Member\PayPal
  * @since 110815
  *
  * @param array $vars Required. An array of defined variables passed by {@link s2Member\PayPal\c_ws_plugin__s2member_paypal_notify_in::paypal_notify()}.
  * @return array|bool The original ``$paypal`` array passed in (extracted) from ``$vars``, or false when conditions do NOT apply.
  *
  * @todo Optimize with ``empty()`` and ``isset()``.
  */
 public static function cp($vars = array())
 {
     extract($vars);
     // Extract all vars passed in from: ``c_ws_plugin__s2member_paypal_notify_in::paypal_notify()``.
     if (!empty($paypal["txn_type"]) && preg_match("/^web_accept\$/i", $paypal["txn_type"]) && (!empty($paypal["item_number"]) && preg_match($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["membership_item_number_wo_level_regex"], $paypal["item_number"])) && (empty($paypal["payment_status"]) || empty($payment_status_issues) || !preg_match($payment_status_issues, $paypal["payment_status"])) && (!empty($paypal["txn_id"]) && ($paypal["subscr_id"] = $paypal["txn_id"])) && !empty($paypal["payer_email"])) {
         foreach (array_keys(get_defined_vars()) as $__v) {
             $__refs[$__v] =& ${$__v};
         }
         do_action("ws_plugin__s2member_during_paypal_notify_before_new_ccaps", get_defined_vars());
         unset($__refs, $__v);
         if (!get_transient($transient_ipn = "s2m_ipn_" . md5("s2member_transient_" . $_paypal_s)) && set_transient($transient_ipn, time(), 31556926 * 10)) {
             $paypal["s2member_log"][] = "s2Member `txn_type` identified as ( `web_accept` ) w/ update vars for Capabilities w/o Level.";
             list($paypal["level"], $paypal["ccaps"], $paypal["eotper"]) = preg_split("/\\:/", $paypal["item_number"], 3);
             $paypal["ip"] = preg_match("/ip address/i", $paypal["option_name2"]) && $paypal["option_selection2"] ? $paypal["option_selection2"] : "";
             $paypal["ip"] = !$paypal["ip"] && preg_match("/^[a-z0-9]+~[0-9\\.]+\$/i", $paypal["invoice"]) ? preg_replace("/^[a-z0-9]+~/i", "", $paypal["invoice"]) : $paypal["ip"];
             if (preg_match("/(referenc|associat|updat|upgrad)/i", $paypal["option_name1"]) && $paypal["option_selection1"]) {
                 if (($user_id = c_ws_plugin__s2member_utils_users::get_user_id_with($paypal["txn_id"], $paypal["option_selection1"])) && is_object($user = new WP_User($user_id)) && $user->ID) {
                     if (!$user->has_cap("administrator")) {
                         $processing = $during = true;
                         // Yes, we ARE processing this.
                         foreach (array_keys(get_defined_vars()) as $__v) {
                             $__refs[$__v] =& ${$__v};
                         }
                         do_action("ws_plugin__s2member_during_paypal_notify_during_before_new_ccaps", get_defined_vars());
                         unset($__refs, $__v);
                         $fields = get_user_option("s2member_custom_fields", $user_id);
                         // These will be needed in the routines below.
                         $user_reg_ip = get_user_option("s2member_registration_ip", $user_id);
                         // Original IP during Registration.
                         $user_reg_ip = $paypal["ip"] = $user_reg_ip ? $user_reg_ip : $paypal["ip"];
                         // Now merge conditionally.
                         if (is_multisite() && !is_user_member_of_blog($user_id)) {
                             add_existing_user_to_blog(array("user_id" => $user_id, "role" => get_option("default_role")));
                             $user = new WP_User($user_id);
                         }
                         if ($paypal["ccaps"] && preg_match("/^-all/", str_replace("+", "", $paypal["ccaps"]))) {
                             foreach ($user->allcaps as $cap => $cap_enabled) {
                                 if (preg_match("/^access_s2member_ccap_/", $cap)) {
                                     $user->remove_cap($ccap = $cap);
                                 }
                             }
                         }
                         if ($paypal["ccaps"] && preg_replace("/^-all[\r\n\t\\s;,]*/", "", str_replace("+", "", $paypal["ccaps"]))) {
                             foreach (preg_split("/[\r\n\t\\s;,]+/", preg_replace("/^-all[\r\n\t\\s;,]*/", "", str_replace("+", "", $paypal["ccaps"]))) as $ccap) {
                                 if (strlen($ccap = trim(strtolower(preg_replace("/[^a-z_0-9]/i", "", $ccap))))) {
                                     $user->add_cap("access_s2member_ccap_" . $ccap);
                                 }
                             }
                         }
                         if (!get_user_option("s2member_registration_ip", $user_id)) {
                             update_user_option($user_id, "s2member_registration_ip", $paypal["ip"]);
                         }
                         $paypal["s2member_log"][] = "s2Member Custom Capabilities updated w/ advanced update routines.";
                         $sbj = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["ccap_email_subject"];
                         // The same for standard and w/ Pro Forms.
                         $msg = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["ccap_email_message"];
                         // The same for standard and w/ Pro Forms.
                         $rec = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["ccap_email_recipients"];
                         // The same for standard and w/ Pro Forms.
                         if (($rec = preg_replace("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $rec)) && ($rec = preg_replace("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["subscr_id"]), $rec))) {
                             if (($rec = preg_replace("/%%amount%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["mc_gross"]), $rec)) && ($rec = preg_replace("/%%txn_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["txn_id"]), $rec))) {
                                 if (($rec = preg_replace("/%%item_number%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["item_number"]), $rec)) && ($rec = preg_replace("/%%item_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["item_name"]), $rec))) {
                                     if (($rec = preg_replace("/%%first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_dq(c_ws_plugin__s2member_utils_strings::esc_ds($paypal["first_name"])), $rec)) && ($rec = preg_replace("/%%last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_dq(c_ws_plugin__s2member_utils_strings::esc_ds($paypal["last_name"])), $rec))) {
                                         if ($rec = preg_replace("/%%full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_dq(c_ws_plugin__s2member_utils_strings::esc_ds(trim($paypal["first_name"] . " " . $paypal["last_name"]))), $rec)) {
                                             // **NOTE** c_ws_plugin__s2member_utils_strings::esc_dq() is applied here. (ex. "N\"ame" <email>).
                                             if ($rec = preg_replace("/%%payer_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["payer_email"]), $rec)) {
                                                 if (($rec = preg_replace("/%%full_coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["full_coupon_code"]), $rec)) && ($rec = preg_replace("/%%coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["coupon_code"]), $rec)) && ($rec = preg_replace("/%%coupon_affiliate_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["affiliate_id"]), $rec))) {
                                                     if (($rec = preg_replace("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->first_name), $rec)) && ($rec = preg_replace("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->last_name), $rec))) {
                                                         if ($rec = preg_replace("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(trim($user->first_name . " " . $user->last_name)), $rec)) {
                                                             if ($rec = preg_replace("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->user_email), $rec)) {
                                                                 if ($rec = preg_replace("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->user_login), $rec)) {
                                                                     if ($rec = preg_replace("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user_reg_ip), $rec)) {
                                                                         if ($rec = preg_replace("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user_id), $rec)) {
                                                                             if (($sbj = preg_replace("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $sbj)) && ($sbj = preg_replace("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["subscr_id"]), $sbj))) {
                                                                                 if (($sbj = preg_replace("/%%amount%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["mc_gross"]), $sbj)) && ($sbj = preg_replace("/%%txn_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["txn_id"]), $sbj))) {
                                                                                     if (($sbj = preg_replace("/%%item_number%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["item_number"]), $sbj)) && ($sbj = preg_replace("/%%item_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["item_name"]), $sbj))) {
                                                                                         if (($sbj = preg_replace("/%%first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["first_name"]), $sbj)) && ($sbj = preg_replace("/%%last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["last_name"]), $sbj))) {
                                                                                             if ($sbj = preg_replace("/%%full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(trim($paypal["first_name"] . " " . $paypal["last_name"])), $sbj)) {
                                                                                                 if ($sbj = preg_replace("/%%payer_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["payer_email"]), $sbj)) {
                                                                                                     if (($sbj = preg_replace("/%%full_coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["full_coupon_code"]), $sbj)) && ($sbj = preg_replace("/%%coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["coupon_code"]), $sbj)) && ($sbj = preg_replace("/%%coupon_affiliate_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["affiliate_id"]), $sbj))) {
                                                                                                         if (($sbj = preg_replace("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->first_name), $sbj)) && ($sbj = preg_replace("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->last_name), $sbj))) {
                                                                                                             if ($sbj = preg_replace("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(trim($user->first_name . " " . $user->last_name)), $sbj)) {
                                                                                                                 if ($sbj = preg_replace("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->user_email), $sbj)) {
                                                                                                                     if ($sbj = preg_replace("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->user_login), $sbj)) {
                                                                                                                         if ($sbj = preg_replace("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user_reg_ip), $sbj)) {
                                                                                                                             if ($sbj = preg_replace("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user_id), $sbj)) {
                                                                                                                                 if (($msg = preg_replace("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $msg)) && ($msg = preg_replace("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["subscr_id"]), $msg))) {
                                                                                                                                     if (($msg = preg_replace("/%%amount%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["mc_gross"]), $msg)) && ($msg = preg_replace("/%%txn_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["txn_id"]), $msg))) {
                                                                                                                                         if (($msg = preg_replace("/%%item_number%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["item_number"]), $msg)) && ($msg = preg_replace("/%%item_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["item_name"]), $msg))) {
                                                                                                                                             if (($msg = preg_replace("/%%first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["first_name"]), $msg)) && ($msg = preg_replace("/%%last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["last_name"]), $msg))) {
                                                                                                                                                 if ($msg = preg_replace("/%%full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(trim($paypal["first_name"] . " " . $paypal["last_name"])), $msg)) {
                                                                                                                                                     if ($msg = preg_replace("/%%payer_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["payer_email"]), $msg)) {
                                                                                                                                                         if (($msg = preg_replace("/%%full_coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["full_coupon_code"]), $msg)) && ($msg = preg_replace("/%%coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["coupon_code"]), $msg)) && ($msg = preg_replace("/%%coupon_affiliate_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["affiliate_id"]), $msg))) {
                                                                                                                                                             if (($msg = preg_replace("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->first_name), $msg)) && ($msg = preg_replace("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->last_name), $msg))) {
                                                                                                                                                                 if ($msg = preg_replace("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(trim($user->first_name . " " . $user->last_name)), $msg)) {
                                                                                                                                                                     if ($msg = preg_replace("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->user_email), $msg)) {
                                                                                                                                                                         if ($msg = preg_replace("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->user_login), $msg)) {
                                                                                                                                                                             if ($msg = preg_replace("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user_reg_ip), $msg)) {
                                                                                                                                                                                 if ($msg = preg_replace("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user_id), $msg)) {
                                                                                                                                                                                     if (is_array($fields) && !empty($fields)) {
                                                                                                                                                                                         foreach ($fields as $var => $val) {
                                                                                                                                                                                             $rec = preg_replace("/%%" . preg_quote($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(maybe_serialize($val)), $rec);
                                                                                                                                                                                             $sbj = preg_replace("/%%" . preg_quote($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(maybe_serialize($val)), $sbj);
                                                                                                                                                                                             $msg = preg_replace("/%%" . preg_quote($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(maybe_serialize($val)), $msg);
                                                                                                                                                                                         }
                                                                                                                                                                                     }
                                                                                                                                                                                     if (($rec = trim(preg_replace("/%%(.+?)%%/i", "", $rec))) && ($sbj = trim(preg_replace("/%%(.+?)%%/i", "", $sbj))) && ($msg = trim(preg_replace("/%%(.+?)%%/i", "", $msg)))) {
                                                                                                                                                                                         if (!is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site()) {
                                                                                                                                                                                             $sbj = c_ws_plugin__s2member_utilities::evl($sbj, get_defined_vars());
                                                                                                                                                                                             $msg = c_ws_plugin__s2member_utilities::evl($msg, get_defined_vars());
                                                                                                                                                                                         }
                                                                                                                                                                                         foreach (c_ws_plugin__s2member_utils_strings::parse_emails($rec) as $recipient) {
                                                                                                                                                                                             c_ws_plugin__s2member_email_configs::email_config() . wp_mail($recipient, apply_filters("ws_plugin__s2member_capabilities_email_sbj", $sbj, get_defined_vars()), apply_filters("ws_plugin__s2member_capabilities_email_msg", $msg, get_defined_vars()), "From: \"" . preg_replace('/"/', "'", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_name"]) . "\" <" . $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_email"] . ">\r\nContent-Type: text/plain; charset=UTF-8") . c_ws_plugin__s2member_email_configs::email_config_release();
                                                                                                                                                                                         }
                                                                                                                                                                                         $paypal["s2member_log"][] = "Capability Confirmation Email sent to: " . $rec . ".";
                                                                                                                                                                                     }
                                                                                                                                                                                 }
                                                                                                                                                                             }
                                                                                                                                                                         }
                                                                                                                                                                     }
                                                                                                                                                                 }
                                                                                                                                                             }
                                                                                                                                                         }
                                                                                                                                                     }
                                                                                                                                                 }
                                                                                                                                             }
                                                                                                                                         }
                                                                                                                                     }
                                                                                                                                 }
                                                                                                                             }
                                                                                                                         }
                                                                                                                     }
                                                                                                                 }
                                                                                                             }
                                                                                                         }
                                                                                                     }
                                                                                                 }
                                                                                             }
                                                                                         }
                                                                                     }
                                                                                 }
                                                                             }
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                         if ($processing && $_REQUEST["s2member_paypal_proxy"] && ($url = $_REQUEST["s2member_paypal_proxy_return_url"]) && is_array($cv = preg_split("/\\|/", $paypal["custom"]))) {
                             if (($url = preg_replace("/%%cv([0-9]+)%%/ei", 'urlencode(trim($cv[$1]))', $url)) && ($url = preg_replace("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["subscr_id"])), $url))) {
                                 if (($url = preg_replace("/%%amount%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["mc_gross"])), $url)) && ($url = preg_replace("/%%txn_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["txn_id"])), $url))) {
                                     if (($url = preg_replace("/%%item_number%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["item_number"])), $url)) && ($url = preg_replace("/%%item_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["item_name"])), $url))) {
                                         if (($url = preg_replace("/%%first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["first_name"])), $url)) && ($url = preg_replace("/%%last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["last_name"])), $url))) {
                                             if ($url = preg_replace("/%%full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode(trim($paypal["first_name"] . " " . $paypal["last_name"]))), $url)) {
                                                 if ($url = preg_replace("/%%payer_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["payer_email"])), $url)) {
                                                     if (($url = preg_replace("/%%full_coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($coupon["full_coupon_code"])), $url)) && ($url = preg_replace("/%%coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($coupon["coupon_code"])), $url)) && ($url = preg_replace("/%%coupon_affiliate_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($coupon["affiliate_id"])), $url))) {
                                                         if (($url = preg_replace("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($user->first_name)), $url)) && ($url = preg_replace("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($user->last_name)), $url))) {
                                                             if ($url = preg_replace("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode(trim($user->first_name . " " . $user->last_name))), $url)) {
                                                                 if ($url = preg_replace("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($user->user_email)), $url)) {
                                                                     if ($url = preg_replace("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($user->user_login)), $url)) {
                                                                         if ($url = preg_replace("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($user_reg_ip)), $url)) {
                                                                             if ($url = preg_replace("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($user_id)), $url)) {
                                                                                 if (is_array($fields) && !empty($fields)) {
                                                                                     foreach ($fields as $var => $val) {
                                                                                         if (!($url = preg_replace("/%%" . preg_quote($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode(maybe_serialize($val))), $url))) {
                                                                                             break;
                                                                                         }
                                                                                     }
                                                                                 }
                                                                                 if ($url = trim($url)) {
                                                                                     // Preserve remaining replacements.
                                                                                     // Because the parent routine may perform replacements too.
                                                                                     $paypal["s2member_paypal_proxy_return_url"] = $url;
                                                                                 }
                                                                             }
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                             $paypal["s2member_log"][] = "Capability Return, a Proxy Return URL is ready.";
                         }
                         if ($processing && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["payment_notification_urls"] && is_array($cv = preg_split("/\\|/", $paypal["custom"]))) {
                             foreach (preg_split("/[\r\n\t]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["payment_notification_urls"]) as $url) {
                                 if (($url = preg_replace("/%%cv([0-9]+)%%/ei", 'urlencode(trim($cv[$1]))', $url)) && ($url = preg_replace("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["subscr_id"])), $url))) {
                                     if (($url = preg_replace("/%%amount%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["mc_gross"])), $url)) && ($url = preg_replace("/%%txn_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["txn_id"])), $url))) {
                                         if (($url = preg_replace("/%%item_number%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["item_number"])), $url)) && ($url = preg_replace("/%%item_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["item_name"])), $url))) {
                                             if (($url = preg_replace("/%%first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["first_name"])), $url)) && ($url = preg_replace("/%%last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["last_name"])), $url))) {
                                                 if ($url = preg_replace("/%%full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode(trim($paypal["first_name"] . " " . $paypal["last_name"]))), $url)) {
                                                     if ($url = preg_replace("/%%payer_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($paypal["payer_email"])), $url)) {
                                                         if (($url = preg_replace("/%%full_coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($coupon["full_coupon_code"])), $url)) && ($url = preg_replace("/%%coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($coupon["coupon_code"])), $url)) && ($url = preg_replace("/%%coupon_affiliate_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($coupon["affiliate_id"])), $url))) {
                                                             if (($url = preg_replace("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($user->first_name)), $url)) && ($url = preg_replace("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($user->last_name)), $url))) {
                                                                 if ($url = preg_replace("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode(trim($user->first_name . " " . $user->last_name))), $url)) {
                                                                     if ($url = preg_replace("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($user->user_email)), $url)) {
                                                                         if ($url = preg_replace("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($user->user_login)), $url)) {
                                                                             if ($url = preg_replace("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($user_reg_ip)), $url)) {
                                                                                 if ($url = preg_replace("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode($user_id)), $url)) {
                                                                                     if (is_array($fields) && !empty($fields)) {
                                                                                         foreach ($fields as $var => $val) {
                                                                                             if (!($url = preg_replace("/%%" . preg_quote($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(urlencode(maybe_serialize($val))), $url))) {
                                                                                                 break;
                                                                                             }
                                                                                         }
                                                                                     }
                                                                                     if ($url = trim(preg_replace("/%%(.+?)%%/i", "", $url))) {
                                                                                         c_ws_plugin__s2member_utils_urls::remote($url);
                                                                                     }
                                                                                 }
                                                                             }
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                             $paypal["s2member_log"][] = "Payment Notification URLs have been processed.";
                         }
                         if ($processing && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["payment_notification_recipients"] && is_array($cv = preg_split("/\\|/", $paypal["custom"]))) {
                             $msg = $sbj = "(s2Member / API Notification Email) - Payment";
                             $msg .= "\n\n";
                             // Spacing in the message body.
                             $msg .= "subscr_id: %%subscr_id%%\n";
                             $msg .= "amount: %%amount%%\n";
                             $msg .= "txn_id: %%txn_id%%\n";
                             $msg .= "item_number: %%item_number%%\n";
                             $msg .= "item_name: %%item_name%%\n";
                             $msg .= "first_name: %%first_name%%\n";
                             $msg .= "last_name: %%last_name%%\n";
                             $msg .= "full_name: %%full_name%%\n";
                             $msg .= "payer_email: %%payer_email%%\n";
                             $msg .= "full_coupon_code: %%full_coupon_code%%\n";
                             $msg .= "coupon_code: %%coupon_code%%\n";
                             $msg .= "coupon_affiliate_id: %%coupon_affiliate_id%%\n";
                             $msg .= "user_first_name: %%user_first_name%%\n";
                             $msg .= "user_last_name: %%user_last_name%%\n";
                             $msg .= "user_full_name: %%user_full_name%%\n";
                             $msg .= "user_email: %%user_email%%\n";
                             $msg .= "user_login: %%user_login%%\n";
                             $msg .= "user_ip: %%user_ip%%\n";
                             $msg .= "user_id: %%user_id%%\n";
                             if (is_array($fields) && !empty($fields)) {
                                 foreach ($fields as $var => $val) {
                                     $msg .= $var . ": %%" . $var . "%%\n";
                                 }
                             }
                             $msg .= "cv0: %%cv0%%\n";
                             $msg .= "cv1: %%cv1%%\n";
                             $msg .= "cv2: %%cv2%%\n";
                             $msg .= "cv3: %%cv3%%\n";
                             $msg .= "cv4: %%cv4%%\n";
                             $msg .= "cv5: %%cv5%%\n";
                             $msg .= "cv6: %%cv6%%\n";
                             $msg .= "cv7: %%cv7%%\n";
                             $msg .= "cv8: %%cv8%%\n";
                             $msg .= "cv9: %%cv9%%";
                             if (($msg = preg_replace("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $msg)) && ($msg = preg_replace("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["subscr_id"]), $msg))) {
                                 if (($msg = preg_replace("/%%amount%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["mc_gross"]), $msg)) && ($msg = preg_replace("/%%txn_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["txn_id"]), $msg))) {
                                     if (($msg = preg_replace("/%%item_number%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["item_number"]), $msg)) && ($msg = preg_replace("/%%item_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["item_name"]), $msg))) {
                                         if (($msg = preg_replace("/%%first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["first_name"]), $msg)) && ($msg = preg_replace("/%%last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["last_name"]), $msg))) {
                                             if ($msg = preg_replace("/%%full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(trim($paypal["first_name"] . " " . $paypal["last_name"])), $msg)) {
                                                 if ($msg = preg_replace("/%%payer_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["payer_email"]), $msg)) {
                                                     if (($msg = preg_replace("/%%full_coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["full_coupon_code"]), $msg)) && ($msg = preg_replace("/%%coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["coupon_code"]), $msg)) && ($msg = preg_replace("/%%coupon_affiliate_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["affiliate_id"]), $msg))) {
                                                         if (($msg = preg_replace("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->first_name), $msg)) && ($msg = preg_replace("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->last_name), $msg))) {
                                                             if ($msg = preg_replace("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(trim($user->first_name . " " . $user->last_name)), $msg)) {
                                                                 if ($msg = preg_replace("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->user_email), $msg)) {
                                                                     if ($msg = preg_replace("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->user_login), $msg)) {
                                                                         if ($msg = preg_replace("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user_reg_ip), $msg)) {
                                                                             if ($msg = preg_replace("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user_id), $msg)) {
                                                                                 if (is_array($fields) && !empty($fields)) {
                                                                                     foreach ($fields as $var => $val) {
                                                                                         if (!($msg = preg_replace("/%%" . preg_quote($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(maybe_serialize($val)), $msg))) {
                                                                                             break;
                                                                                         }
                                                                                     }
                                                                                 }
                                                                                 if ($sbj && ($msg = trim(preg_replace("/%%(.+?)%%/i", "", $msg)))) {
                                                                                     // Still have a ``$sbj`` and a ``$msg``?
                                                                                     foreach (c_ws_plugin__s2member_utils_strings::parse_emails($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["payment_notification_recipients"]) as $recipient) {
                                                                                         wp_mail($recipient, apply_filters("ws_plugin__s2member_payment_notification_email_sbj", $sbj, get_defined_vars()), apply_filters("ws_plugin__s2member_payment_notification_email_msg", $msg, get_defined_vars()), "Content-Type: text/plain; charset=UTF-8");
                                                                                     }
                                                                                 }
                                                                             }
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                             $paypal["s2member_log"][] = "Payment Notification Emails have been processed.";
                         }
                         if ($processing && ($code = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["ccap_tracking_codes"]) && is_array($cv = preg_split("/\\|/", $paypal["custom"]))) {
                             if (($code = preg_replace("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $code)) && ($code = preg_replace("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["subscr_id"]), $code))) {
                                 if (($code = preg_replace("/%%amount%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["mc_gross"]), $code)) && ($code = preg_replace("/%%txn_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["txn_id"]), $code))) {
                                     if (($code = preg_replace("/%%item_number%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["item_number"]), $code)) && ($code = preg_replace("/%%item_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["item_name"]), $code))) {
                                         if (($code = preg_replace("/%%first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["first_name"]), $code)) && ($code = preg_replace("/%%last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["last_name"]), $code))) {
                                             if ($code = preg_replace("/%%full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(trim($paypal["first_name"] . " " . $paypal["last_name"])), $code)) {
                                                 if ($code = preg_replace("/%%payer_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($paypal["payer_email"]), $code)) {
                                                     if (($code = preg_replace("/%%full_coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["full_coupon_code"]), $code)) && ($code = preg_replace("/%%coupon_code%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["coupon_code"]), $code)) && ($code = preg_replace("/%%coupon_affiliate_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($coupon["affiliate_id"]), $code))) {
                                                         if (($code = preg_replace("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->first_name), $code)) && ($code = preg_replace("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->last_name), $code))) {
                                                             if ($code = preg_replace("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(trim($user->first_name . " " . $user->last_name)), $code)) {
                                                                 if ($code = preg_replace("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->user_email), $code)) {
                                                                     if ($code = preg_replace("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user->user_login), $code)) {
                                                                         if ($code = preg_replace("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user_reg_ip), $code)) {
                                                                             if ($code = preg_replace("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($user_id), $code)) {
                                                                                 if (is_array($fields) && !empty($fields)) {
                                                                                     foreach ($fields as $var => $val) {
                                                                                         if (!($code = preg_replace("/%%" . preg_quote($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(maybe_serialize($val)), $code))) {
                                                                                             break;
                                                                                         }
                                                                                     }
                                                                                 }
                                                                                 if ($code = trim(preg_replace("/%%(.+?)%%/i", "", $code))) {
                                                                                     $paypal["s2member_log"][] = "Storing Payment Tracking Codes into a Transient Queue. These will be processed on-site.";
                                                                                     set_transient("s2m_" . md5("s2member_transient_ccap_tracking_codes_" . $paypal["txn_id"]), $code, 43200);
                                                                                 }
                                                                             }
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                         foreach (array_keys(get_defined_vars()) as $__v) {
                             $__refs[$__v] =& ${$__v};
                         }
                         do_action("ws_plugin__s2member_during_paypal_notify_during_new_ccaps", get_defined_vars());
                         unset($__refs, $__v);
                     } else {
                         $paypal["s2member_log"][] = "Unable to add new Capabilities. The existing User ID is associated with an Administrator. Stopping here. Otherwise, an Administrator could lose access.";
                     }
                 } else {
                     $paypal["s2member_log"][] = "Unable to add new Capabilities. Could not get the existing User ID from the DB. Please check the `on0` and `os0` variables in your Button Code.";
                 }
             } else {
                 $paypal["s2member_log"][] = "Unable to add new Capabilities. Missing User/Member details. Please check the `on0` and `os0` variables in your Button Code.";
             }
         } else {
             $paypal["s2member_log"][] = "Not processing. Duplicate IPN.";
             $paypal["s2member_log"][] = "s2Member `txn_type` identified as ( `web_accept` ) w/ update vars for Capabilities w/o Level.";
             $paypal["s2member_log"][] = "Duplicate IPN. Already processed. This IPN will be ignored.";
         }
         foreach (array_keys(get_defined_vars()) as $__v) {
             $__refs[$__v] =& ${$__v};
         }
         do_action("ws_plugin__s2member_during_paypal_notify_after_new_ccaps", get_defined_vars());
         unset($__refs, $__v);
         return apply_filters("c_ws_plugin__s2member_paypal_notify_in_wa_ccaps_wo_level", $paypal, get_defined_vars());
     } else {
         return apply_filters("c_ws_plugin__s2member_paypal_notify_in_wa_ccaps_wo_level", false, get_defined_vars());
     }
 }
Пример #28
0
function ht_userimporter_options()
{
    if (!current_user_can('manage_options')) {
        wp_die(__('You do not have sufficient permissions to access this page.'));
    }
    ob_start();
    echo "<div class='wrap'>";
    screen_icon();
    echo "<h2>" . __(' User Importer') . "</h2>";
    if ($_REQUEST['action'] == "processimport") {
        $contentarray = explode("\n", $_REQUEST['rawcontent']);
        foreach ((array) $contentarray as $f) {
            $content[] = str_getcsv(stripslashes($f));
        }
        foreach ((array) $content as $parsedf) {
            // [0] first_name
            // [1] last_name
            // [2] Nickname
            // [3] Team
            // [4] Email
            // [5] Phone
            // [6] Mobile
            // [7] Working pattern
            // [8] Job title
            // [9] Role/bio
            // [10] Line manager
            // [11] Skills
            // [12] More bio
            /*
            		$k = 12;
            		$other ='';
            		while ( $k < 65 ){		
            			$other .= $parsedf[$k];
            			$k++;
            		}
            */
            echo "<br>Processing " . $parsedf[4];
            // see if user already exists on email address
            $user = email_exists(strtolower($parsedf[4]));
            // echo $user;
            $user_id = 0;
            $user_login = '';
            if ($user) {
                echo " email exists";
                $user = get_user_by('email', strtolower($parsedf[4]));
                //print_r($user);
                $user_id = $user->ID;
                $user_login = $user->user_login;
                $results .= "<li>" . $parsedf[4] . " - email already registered</li>";
            }
            //echo $user_id;
            // insert user
            if ($user_login == '') {
                $user_login = strtolower(substr($parsedf[0], 0, 1) . strtolower($parsedf[1]));
                //check login name doesn't exist
                if (username_exists($user_login)) {
                    $user_login = strtolower($parsedf[0]) . strtolower($parsedf[1]);
                    echo " - username already exists, trying another";
                    if (username_exists($user_login)) {
                        echo " - username 2 already exists - skipping";
                        $results .= "<li>" . $parsedf[2] . " " . $user_login . " - problem with username - skipping</li>";
                        continue;
                    }
                }
            }
            $userdata = array('ID' => 0, 'user_login' => $user_login, 'first_name' => trim($parsedf[0]), 'last_name' => trim($parsedf[1]), 'nickname' => trim($parsedf[2]), 'display_name' => trim($parsedf[0]) . " " . trim($parsedf[1]), 'user_email' => strtolower(trim($parsedf[4])), 'user_url' => '', 'user_pass' => '', 'role' => 'Subscriber', 'show_admin_bar_front' => 0);
            $random_password = wp_generate_password($length = 12, $include_standard_special_chars = false);
            $userdata['user_pass'] = $random_password;
            if ($user_id == 0) {
                //print_r($userdata);
                $user_id = wp_insert_user($userdata);
                //echo $user_id." inserted";
                if ($user_id == 0) {
                    echo " - couldn't create";
                } else {
                    echo " - created " . $user_id;
                    $user = new WP_User($user_id);
                    $user_id = $user->ID;
                    if (!$user_id) {
                        continue;
                    }
                    $user->add_cap('subscriber');
                    $results .= "<li>" . $parsedf[4] . " " . $user_login . "</li>";
                }
            }
            if ($user_id != 0) {
                // if manager exists, add meta
                if ($parsedf[10]) {
                    if (email_exists(strtolower(trim($parsedf[10])))) {
                        $manager = get_user_by('email', strtolower(trim($parsedf[10])));
                        $manager_id = $manager->ID;
                        add_user_meta($user_id, 'user_line_manager', $manager_id);
                    } else {
                        $msg .= "<li>" . $parsedf[4] . " - Can't find manager " . $parsedf[10] . "</li>";
                    }
                }
                // if tel exists, add meta
                if ($parsedf[5]) {
                    add_user_meta($user_id, 'user_telephone', trim($parsedf[5]));
                }
                // if job title exists, add meta
                if ($parsedf[8]) {
                    add_user_meta($user_id, 'user_job_title', trim($parsedf[8]));
                }
                // if team exists, add meta
                if ($parsedf[3] != '') {
                    $team = str_replace("&", "&amp;", trim($parsedf[3]));
                    $tterm = get_page_by_title($team, OBJECT, 'team');
                    if ($tterm) {
                        $tterm_id = $tterm->ID;
                        add_user_meta($user_id, 'user_team', $tterm_id);
                    } else {
                        $msg .= "<li>" . $parsedf[4] . " - Can't find sub team " . trim($parsedf[3]) . "</li>";
                    }
                }
                // mobile exists, add meta
                if ($parsedf[6]) {
                    add_user_meta($user_id, 'user_mobile', $parsedf[6]);
                }
                // if working pattern exists, add meta
                if ($parsedf[7]) {
                    add_user_meta($user_id, 'user_working_pattern', trim($parsedf[7]));
                }
                // if user skills exists, add meta
                if ($parsedf[11]) {
                    add_user_meta($user_id, 'user_key_skills', trim($parsedf[11]));
                }
                // if bio, add meta
                if ($parsedf[9] || $parsedf[12]) {
                    add_user_meta($user_id, 'description', trim($parsedf[9]) . "<br><br>" . trim($parsedf[12]));
                }
            }
            sleep(0.5);
            ob_flush();
        }
        echo "<h1>Summary</h1>";
        echo "<h2>Progress</h2>";
        echo "<ul>" . $results . "</ul>";
        echo "<h2>Errors</h2>";
        echo "<ul>" . $msg . "</ul>";
    } elseif ($_REQUEST['action'] == "showinfo") {
    } else {
        echo "\n\t\t<p></p> \n\t\t <form method='post'>\n\t\t \t<p><label for='rawcontent'>Paste CSV file contents here:</label></p>\n\t\t\t<p><textarea class='widefat' rows='20' cols='50' name='rawcontent' id='rawcontent'></textarea></p>\n\t\t\t<p><input type='submit' value='Import content' class='button-primary' /></p>\n\t\t\t<input type='hidden' name='page' value='user-importer' />\n\t\t\t<input type='hidden' name='action' value='processimport' />\n\t\t  </form><br />\n\t\t";
    }
    echo "</div>";
    ob_end_flush();
}
Пример #29
0
function sstfg_add_cap_to_customer($order_id)
{
    $extra_fields = sstfg_user_extra_fields();
    $order = new WC_Order($order_id);
    $customer_id = (int) $order->user_id;
    $items = $order->get_items();
    foreach ($items as $item) {
        if ($item['product_id'] == SSTFG_WC_PRODUCT_ID) {
            $user = new WP_User($customer_id);
            $user->add_cap('access_s2member_level0');
            $user->add_cap('access_s2member_ccap_sstfg');
            foreach ($extra_fields as $ef) {
                $ef_value = get_user_meta($customer_id, $ef['label'], true);
                if ($ef_value == '' || $ef_value === FALSE) {
                    update_user_meta($customer_id, $ef['label'], $ef['initial']);
                }
            }
        }
    }
}
Пример #30
-1
 function create()
 {
     $types = array("course", "quiz", "qa", "dis", "user", "amt");
     $AdminCapabilities = array('edit_linkedcanvas?', 'read_linkedcanvas?', 'delete_linkedcanvas?', 'edit_linkedcanvas?s', 'edit_others_linkedcanvas?s', 'publish_linkedcanvas?s', 'read_private_linkedcanvas?s', 'delete_linkedcanvas?s', 'delete_private_linkedcanvas?s', 'delete_published_linkedcanvas?s', 'delete_others_linkedcanvas?s', 'edit_private_linkedcanvas?s', 'edit_published_linkedcanvas?s', 'edit_linkedcanvas?s');
     $AuthorCapabilities = array('edit_linkedcanvas?', 'read_linkedcanvas?', 'delete_linkedcanvas?', 'edit_linkedcanvas?s', 'publish_linkedcanvas?s', 'read_private_linkedcanvas?s', 'delete_linkedcanvas?s', 'delete_private_linkedcanvas?s', 'delete_published_linkedcanvas?s', 'edit_private_linkedcanvas?s', 'edit_published_linkedcanvas?s', 'edit_linkedcanvas?s');
     $get_users = get_users();
     foreach ($get_users as $user) {
         if (in_array("administrator", $user->roles)) {
             $user = new WP_User($user->data->ID);
             foreach ($AdminCapabilities as $capability) {
                 foreach ($types as $type) {
                     $user->add_cap(str_replace("?", $type, $capability));
                 }
             }
         }
         if (in_array("editor", $user->roles)) {
             $user = new WP_User($user->data->ID);
             foreach ($AuthorCapabilities as $capability) {
                 foreach ($types as $type) {
                     $user->add_cap(str_replace("?", $type, $capability));
                 }
             }
         }
     }
 }