Example #1
0
/**
 * User Meta Shortcode handler
 * Retrieve the value of a property or meta key from the users and usermeta tables.
 * usage: [user_meta user_id=1 key="first_name" size="50" wpautop="on" pre="Pre Label " post="Post Label "]
 * @param  array $atts
 * @param  string $content
 * @return stirng
 */
function user_meta_shortcode_handler($atts, $content = null)
{
    if (!isset($atts['user_id'])) {
        $user = wp_get_current_user();
        $atts['user_id'] = $user->ID;
    }
    if (!isset($atts['size'])) {
        $atts['size'] = '50';
    }
    $user = new WP_User($atts['user_id']);
    if (!$user->exists()) {
        return;
    }
    if ($atts['key'] == 'avatar') {
        return $atts['pre'] . get_avatar($user->ID, $atts['size']) . $atts['post'];
    }
    if ($user->has_prop($atts['key'])) {
        if ($atts['wpautop'] == 'on') {
            $value = wpautop($user->get($atts['key']));
        } else {
            $value = $user->get($atts['key']);
        }
    }
    if (!empty($value)) {
        return $atts['pre'] . $value . $atts['post'];
    }
    return;
}
Example #2
0
 /**
  * Return form HTML replacing variables in a template string.
  *
  * @return string
  */
 private function printForm()
 {
     $title = apply_filters('the_title', $this->post->post_title);
     $nonce = self::NONCE . get_current_blog_id();
     $data = ['action' => esc_attr(Launcher::SLUG . '_send_mail'), 'postId' => $this->post->ID, 'postTitle' => esc_attr($title), 'recipient' => esc_attr($this->author->get('user_email')), 'messageLabel' => esc_html__('Message:', 'reject-notify'), 'button' => get_submit_button(esc_html__('Send', 'reject-notify')), 'nonce' => wp_nonce_field($nonce, self::NONCE, true, false), 'title' => sprintf(esc_html__('Send reject mail to %s', 'reject-notify'), esc_html($this->author->get('display_name'))), 'message' => vsprintf(esc_html__('Sorry %s, your post %s was rejected.', 'reject-notify'), [esc_html($this->author->get('display_name')), '"' . esc_html($title) . '"'])];
     $template = file_get_contents(dirname($this->path) . '/templates/form.php');
     foreach ($data as $key => $value) {
         $template = str_replace("{{{{$key}}}}", $value, $template);
     }
     return $template;
 }
Example #3
0
 /**
  * @param \WP_User $user
  * @return UserEntity|null
  */
 protected function _convertToEntity(\WP_User $user)
 {
     $id = (int) $user->ID;
     if ($entity = $this->_getEntity($id)) {
         return $entity;
     }
     $caps = $user->get_role_caps();
     $isAdmin = (bool) Vars::get($caps['administrator'], false);
     $data = new Data(['id' => $id, 'login' => $user->get('user_login'), 'name' => $user->get('display_name'), 'email' => $user->get('user_email'), 'is_admin' => $isAdmin]);
     $this->_users[$id] = new UserEntity($data);
     return $this->_users[$id];
 }
 /**
  * Exactly like Gravity Forms' User Meta functionality, but instead shows information on the user who created the entry
  * instead of the currently logged-in user.
  *
  * @see http://docs.gravityview.co/article/281-the-createdby-merge-tag Read how to use the `{created_by}` merge tag
  *
  * @since 1.16
  *
  * @param array $matches Array of Merge Tag matches found in text by preg_match_all
  * @param string $text Text to replace
  * @param array $form Gravity Forms form array
  * @param array $entry Entry array
  * @param bool $url_encode Whether to URL-encode output
  * @param bool $esc_html Whether to apply `esc_html()` to output
  *
  * @return string Text, with user variables replaced, if they existed
  */
 public function replace_merge_tag($matches = array(), $text = '', $form = array(), $entry = array(), $url_encode = false, $esc_html = false)
 {
     // If there are no matches OR the Entry `created_by` isn't set or is 0 (no user)
     if (empty($entry['created_by'])) {
         return $text;
     }
     // Get the creator of the entry
     $entry_creator = new WP_User($entry['created_by']);
     foreach ($matches as $match) {
         $full_tag = $match[0];
         $property = $match[1];
         switch ($property) {
             /** @since 1.13.2 */
             case 'roles':
                 $value = implode(', ', $entry_creator->roles);
                 break;
             default:
                 $value = $entry_creator->get($property);
         }
         $value = $url_encode ? urlencode($value) : $value;
         $value = $esc_html ? esc_html($value) : $value;
         $text = str_replace($full_tag, $value, $text);
     }
     unset($entry_creator);
     return $text;
 }
Example #5
0
 public static function is_users_email($email, $user_id = false)
 {
     if (!$user_id) {
         $user_id = get_current_user_id();
     }
     $user = new WP_User($user_id);
     return $user->get('user_email') == $email;
 }
 public function add_note($entry_id, $note, $user_id = false)
 {
     if ($user_id) {
         $user = new WP_User($user_id);
         $user_name = $user->get('display_name');
     } else {
         $user_id = 0;
         $user_name = 'System';
     }
     GFFormsModel::add_note($entry_id, $user_id, $user_name, $note);
 }
 /**
  * Convert a WP_User instance to an associative array with the keys defined
  * in the AmeUserPropertyMap interface in actor-manager.ts.
  *
  * @param WP_User $user
  * @return array
  */
 public function user_to_property_map($user)
 {
     return array('user_login' => $user->get('user_login'), 'id' => $user->ID, 'roles' => !empty($user->roles) ? (array) $user->roles : array(), 'capabilities' => $this->castValuesToBool($user->caps), 'display_name' => $user->display_name, 'is_super_admin' => is_multisite() && is_super_admin($user->ID));
 }
 /**
  * Track changes to ACF values within rendered post meta forms
  *
  * @param string $type       Type of object, post or user
  * @param string $action     Added, updated, deleted
  * @param integer $meta_id
  * @param integer $object_id
  * @param string $key
  * @param mixed|null $value
  *
  * @return bool
  */
 public function check_meta_values($type, $action, $meta_id, $object_id, $key, $value = null)
 {
     unset($action);
     unset($meta_id);
     if (empty($this->cached_field_values_updates)) {
         return false;
     }
     $object_key = $object_id;
     if ('user' === $type) {
         $object_key = 'user_' . $object_id;
     } elseif ('taxonomy' === $type) {
         if (0 === strpos($key, '_')) {
             // Ignore the 'revision' stuff!
             return false;
         }
         if (1 !== preg_match('#([a-z0-9_-]+)_([\\d]+)_([a-z0-9_-]+)#', $key, $matches)) {
             return false;
         }
         list(, $taxonomy, $term_id, $key) = $matches;
         // Skips 0 index
         $object_key = $taxonomy . '_' . $term_id;
     }
     if (isset($this->cached_field_values_updates[$object_key][$key])) {
         if ('post' === $type) {
             $posts_connector = new Connector_Posts();
             $post = get_post($object_id);
             $title = $post->post_title;
             $type_name = strtolower($posts_connector->get_post_type_name($post->post_type));
         } elseif ('user' === $type) {
             $user = new \WP_User($object_id);
             $title = $user->get('display_name');
             $type_name = esc_html__('user', 'stream');
         } elseif ('taxonomy' === $type && isset($term_id) && isset($taxonomy)) {
             $term = get_term($term_id, $taxonomy);
             $title = $term->name;
             $tax_obj = get_taxonomy($taxonomy);
             $type_name = strtolower(get_taxonomy_labels($tax_obj)->singular_name);
         } else {
             return false;
         }
         $cache = $this->cached_field_values_updates[$object_key][$key];
         $this->log(esc_html_x('"%1$s" of "%2$s" %3$s updated', 'acf', 'stream'), array('field_label' => $cache['field']['label'], 'title' => $title, 'singular_name' => $type_name, 'meta_value' => $value, 'meta_key' => $key, 'meta_type' => $type), $object_id, 'values', 'updated');
     }
     return true;
 }
 /**
  * @param WP_User $oUser
  * @param string $sIpAddress
  * @param string $sSessionId
  * @return boolean
  */
 public function sendEmailTwoFactorVerify(WP_User $oUser, $sIpAddress, $sSessionId)
 {
     $sEmail = $oUser->get('user_email');
     $sAuthLink = $this->generateTwoFactorVerifyLink($oUser->get('user_login'), $sSessionId);
     $aMessage = array(_wpsf__('You, or someone pretending to be you, just attempted to login into your WordPress site.'), _wpsf__('The IP Address / Cookie from which they tried to login is not currently verified.'), _wpsf__('Click the following link to validate and complete the login process.') . ' ' . _wpsf__('You will be logged in automatically upon successful authentication.'), sprintf(_wpsf__('Username: %s'), $oUser->get('user_login')), sprintf(_wpsf__('IP Address: %s'), $sIpAddress), sprintf(_wpsf__('Authentication Link: %s'), $sAuthLink));
     $sEmailSubject = sprintf(_wpsf__('Two-Factor Login Verification for %s'), $this->loadWpFunctionsProcessor()->getHomeUrl());
     $bResult = $this->getEmailProcessor()->sendEmailTo($sEmail, $sEmailSubject, $aMessage);
     if ($bResult) {
         $sAuditMessage = sprintf(_wpsf__('User "%s" was sent an email to verify their Identity using Two-Factor Login Auth for IP address "%s".'), $oUser->get('user_login'), $sIpAddress);
         $this->addToAuditEntry($sAuditMessage, 2, 'login_protect_two_factor_email_send');
     } else {
         $sAuditMessage = sprintf(_wpsf__('Tried to send email to User "%s" to verify their identity using Two-Factor Login Auth for IP address "%s", but email sending failed.'), $oUser->get('user_login'), $sIpAddress);
         $this->addToAuditEntry($sAuditMessage, 3, 'login_protect_two_factor_email_send_fail');
     }
     return $bResult;
 }
Example #10
0
 /**
  * Fires after the 'About Yourself' settings table on the 'Your Profile' editing screen.
  *
  * The action only fires if the current user is editing their own profile.
  *
  * @since WP 2.0.0
  *
  * @param WP_User $profileuser The current WP_User object.
  */
 public function show_user_profile($profileuser)
 {
     echo '<br clear="all" /><a name="wpdk"></a>';
     $message = __('This view <strong>is enhanced</strong> by wpXtreme and WPDK framework. Please, have a look below for additional information.', WPDK_TEXTDOMAIN);
     $alert = new WPDKUIAlert('wpdk-alert-show_user_profile', $message, WPDKUIAlertType::INFORMATION);
     $alert->dismissPermanent = true;
     $alert->display();
     // Only the administrator can edit this extra information
     $disabled = !current_user_can('manage_options');
     // Sanitize values
     $last_time_success_login = $profileuser->get(WPDKUserMeta::LAST_TIME_SUCCESS_LOGIN);
     $last_time_wrong_login = $profileuser->get(WPDKUserMeta::LAST_TIME_WRONG_LOGIN);
     $last_time_logout = $profileuser->get(WPDKUserMeta::LAST_TIME_LOGOUT);
     $status_description = $profileuser->get(WPDKUserMeta::STATUS_DESCRIPTION);
     // Display WPDK user extends information
     $fields = array(__('Login information', WPDK_TEXTDOMAIN) => array(array(array('type' => WPDKUIControlType::DATETIME, 'name' => WPDKUserMeta::LAST_TIME_SUCCESS_LOGIN, 'label' => __('Last success login', WPDK_TEXTDOMAIN), 'value' => empty($last_time_success_login) ? '' : WPDKDateTime::format($last_time_success_login, WPDKDateTime::DATETIME_SECONDS_LESS_FORMAT_PHP), 'disabled' => $disabled), array('type' => WPDKUIControlType::NUMBER, 'name' => WPDKUserMeta::COUNT_SUCCESS_LOGIN, 'label' => __('# success login', WPDK_TEXTDOMAIN), 'value' => $profileuser->get(WPDKUserMeta::COUNT_SUCCESS_LOGIN), 'disabled' => true)), array(array('type' => WPDKUIControlType::DATETIME, 'name' => WPDKUserMeta::LAST_TIME_WRONG_LOGIN, 'label' => __('Last wrong login', WPDK_TEXTDOMAIN), 'value' => empty($last_time_wrong_login) ? '' : WPDKDateTime::format($last_time_wrong_login, WPDKDateTime::DATETIME_SECONDS_LESS_FORMAT_PHP), 'disabled' => $disabled), array('type' => WPDKUIControlType::NUMBER, 'name' => WPDKUserMeta::COUNT_WRONG_LOGIN, 'label' => __('# wrong login', WPDK_TEXTDOMAIN), 'value' => $profileuser->get(WPDKUserMeta::COUNT_WRONG_LOGIN), 'disabled' => $disabled))), __('Logout information', WPDK_TEXTDOMAIN) => array(array(array('type' => WPDKUIControlType::DATETIME, 'name' => WPDKUserMeta::LAST_TIME_LOGOUT, 'label' => __('Last logout', WPDK_TEXTDOMAIN), 'value' => empty($last_time_logout) ? '' : WPDKDateTime::format($last_time_logout, WPDKDateTime::DATETIME_SECONDS_LESS_FORMAT_PHP), 'disabled' => $disabled))), __('Status', WPDK_TEXTDOMAIN) => array(array(array('type' => WPDKUIControlType::SELECT, 'name' => WPDKUserMeta::STATUS, 'label' => __('Status', WPDK_TEXTDOMAIN), 'value' => $profileuser->get(WPDKUserMeta::STATUS), 'options' => WPDKUserStatus::statuses(), 'disabled' => $disabled)), array(array('type' => WPDKUIControlType::TEXTAREA, 'name' => WPDKUserMeta::STATUS_DESCRIPTION, 'rows' => 3, 'cols' => 40, 'label' => __('Description', WPDK_TEXTDOMAIN), 'placeholder' => __('eg: this user is disabled because...', WPDK_TEXTDOMAIN), 'value' => $status_description, 'disabled' => $disabled))));
     /**
      * Filter the layout control array with the extra WPDK fields.
      *
      * You can use this filter or `wpdk_users_show_user_profile` action to modify the default layout control array.
      *
      * @param array   $fields      Layout array fields.
      * @param WP_User $profileuser The current WP_User object.
      */
     $fields = apply_filters('wpdk_users_fields_profile', $fields, $profileuser);
     $layout = new WPDKUIControlsLayout($fields);
     /**
      * Fires after display the layout controls.
      *
      * You can use this action or `wpdk_users_fields_profile` filter to modify the default layout control array.
      *
      * @deprecated since 1.7.2 - Use `wpdk_user_profile_tabs` filter instead
      *
      * @param WP_User $profileuser The current WP_User object.
      */
     do_action('wpdk_users_show_user_profile', $profileuser);
     // Defaults
     $tabs = array();
     if (current_user_can('edit_users')) {
         // WPDK tabs
         $tabs = array(new WPDKjQueryTab('wpdk-user-profile', __('WPDK'), '<div id="wpdk-user-profile">' . $layout->html() . '</div>'));
     }
     /**
      * Filter the tabs list used to extends user profile edit.
      *
      * @since 1.7.2
      *
      * @param array   $tabs        The array tabs list.
      * @param WP_User $profileuser The current WP_User object.
      */
     $tabs = apply_filters('wpdk_user_profile_tabs', $tabs, $profileuser);
     $jquery_tabs = new WPDKjQueryTabsView('wpdk-users', $tabs, true);
     $jquery_tabs->display();
 }
 /**
  * Returns the name of the donor. 
  *
  * @return  string
  * @access  private
  * @since   1.0.0
  */
 private function get_donor_name()
 {
     $user = new WP_User($this->get_donation_data_value('user_id', 0));
     $user_data = $this->get_donation_data_value('user');
     $first_name = isset($user_data['first_name']) ? $user_data['first_name'] : $user->get('first_name');
     $last_name = isset($user_data['last_name']) ? $user_data['last_name'] : $user->get('last_name');
     return trim(sprintf('%s %s', $first_name, $last_name));
 }
 /**
  * @param WP_User $oUser
  * @return bool
  */
 protected function sendLoginEmailNotification($oUser)
 {
     if (!$oUser instanceof WP_User) {
         return false;
     }
     $fIsAdministrator = isset($oUser->caps['administrator']) && $oUser->caps['administrator'];
     if (!$fIsAdministrator) {
         return false;
     }
     $oDp = $this->loadDataProcessor();
     $oEmailer = $this->getFeatureOptions()->getEmailProcessor();
     $sHomeUrl = $this->loadWpFunctionsProcessor()->getHomeUrl();
     $aMessage = array(sprintf(_wpsf__('As requested, %s is notifying you of an administrator login to a WordPress site that you manage.'), $this->getController()->getHumanName()), _wpsf__('Details for this user are below:'), '- ' . sprintf(_wpsf__('Site URL: %s'), $sHomeUrl), '- ' . sprintf(_wpsf__('Username: %s'), $oUser->get('user_login')), '- ' . sprintf(_wpsf__('IP Address: %s'), $oDp->getVisitorIpAddress(true)), _wpsf__('Thanks.'));
     $bResult = $oEmailer->sendEmailTo($this->getOption('enable_admin_login_email_notification'), sprintf(_wpsf__('Notice - %s'), sprintf(_wpsf__('An Administrator Just Logged Into %s'), $sHomeUrl)), $aMessage);
     return $bResult;
 }
 /**
  * @param WP_User $oUser
  * @return WP_User|WP_Error
  */
 public function checkYubikeyOtpAuth_Filter($oUser)
 {
     $oError = new WP_Error();
     $sUsername = $oUser->get('user_login');
     // Before anything else we check that a Yubikey pair has been provided for this username (and that there are pairs in the first place!)
     $aYubikeyUsernamePairs = $this->getOption('yubikey_unique_keys');
     if (!$this->getIsYubikeyConfigReady()) {
         // configuration is clearly not completed yet.
         return $oUser;
     }
     $sOneTimePassword = empty($_POST['yubiotp']) ? '' : trim($_POST['yubiotp']);
     $sAppId = $this->getOption('yubikey_app_id');
     $sApiKey = $this->getOption('yubikey_api_key');
     // check that if we have a list of permitted keys, that the one used is on that list connected with the username.
     $sYubikey12 = substr($sOneTimePassword, 0, 12);
     $fUsernameFound = false;
     // if username is never found, it means there's no yubikey specified which means we can bypass this authentication method.
     $fFoundMatch = false;
     foreach ($aYubikeyUsernamePairs as $aUsernameYubikeyPair) {
         if (isset($aUsernameYubikeyPair[$sUsername])) {
             $fUsernameFound = true;
             if ($aUsernameYubikeyPair[$sUsername] == $sYubikey12) {
                 $fFoundMatch = true;
                 break;
             }
         }
     }
     // If no yubikey-username pair found for given username, we by-pass Yubikey auth.
     if (!$fUsernameFound) {
         $sAuditMessage = sprintf(_wpsf__('User "%s" logged in without a Yubikey One Time Password because no username-yubikey pair was found for this user.'), $sUsername);
         $this->addToAuditEntry($sAuditMessage, 2, 'login_protect_yubikey_bypass');
         return $oUser;
     }
     // Username was found in the list of key pairs, but the yubikey provided didn't match that username.
     if (!$fFoundMatch) {
         $oError->add('yubikey_not_allowed', sprintf(_wpsf__('ERROR: %s'), _wpsf__('The Yubikey provided is not on the list of permitted keys for this user.')));
         $sAuditMessage = sprintf(_wpsf__('User "%s" attempted to login but Yubikey ID "%s" used was not in list of authorised keys.'), $sUsername, $sYubikey12);
         $this->addToAuditEntry($sAuditMessage, 2, 'login_protect_yubikey_fail_permitted_id');
         return $oError;
     }
     $oFs = $this->loadFileSystemProcessor();
     $sNonce = md5(uniqid(rand()));
     $sUrl = sprintf(self::YubikeyVerifyApiUrl, $sAppId, $sOneTimePassword, $sNonce);
     $sRawYubiRequest = $oFs->getUrlContent($sUrl);
     // Validate response.
     // 1. Check OTP and Nonce
     if (!preg_match('/otp=' . $sOneTimePassword . '/', $sRawYubiRequest, $aMatches) || !preg_match('/nonce=' . $sNonce . '/', $sRawYubiRequest, $aMatches)) {
         $oError->add('yubikey_validate_fail', sprintf(_wpsf__('ERROR: %s'), _wpsf__('The Yubikey authentication was not validated successfully.')));
         $sAuditMessage = sprintf(_wpsf__('User "%s" attempted to login but Yubikey One Time Password failed to validate due to invalid Yubi API.'), $sUsername);
         $this->addToAuditEntry($sAuditMessage, 2, 'login_protect_yubikey_fail_invalid_api');
         return $oError;
     }
     // Optionally we can check the hash, but since we're using HTTPS, this isn't necessary and adds more PHP requirements
     // 2. Check status directly within response
     preg_match('/status=([a-zA-Z0-9_]+)/', $sRawYubiRequest, $aMatches);
     $sStatus = $aMatches[1];
     if ($sStatus != 'OK' && $sStatus != 'REPLAYED_OTP') {
         $oError->add('yubikey_validate_fail', sprintf(_wpsf__('ERROR: %s'), _wpsf__('The Yubikey authentication was not validated successfully.')));
         $sAuditMessage = sprintf(_wpsf__('User "%s" attempted to login but Yubikey One Time Password failed to validate due to invalid Yubi API response status: "%s".'), $sUsername, $sStatus);
         $this->addToAuditEntry($sAuditMessage, 2, 'login_protect_yubikey_fail_invalid_api_response');
         return $oError;
     }
     $sAuditMessage = sprintf(_wpsf__('User "%s" successfully logged in using a validated Yubikey One Time Password.'), $sUsername);
     $this->addToAuditEntry($sAuditMessage, 2, 'login_protect_yubikey_login_success');
     return $oUser;
 }
 /**
  * Target for the gform_pre_replace_merge_tags filter. Replaces the workflow_timeline and created_by merge tags.
  *
  *
  * @param string $text
  * @param array $form
  * @param array $entry
  * @param bool $url_encode
  * @param bool $esc_html
  * @param bool $nl2br
  * @param string $format
  *
  * @return string
  */
 function replace_variables($text, $form, $entry, $url_encode, $esc_html, $nl2br, $format)
 {
     preg_match_all('/{workflow_timeline(:(.*?))?}/', $text, $timeline_matches, PREG_SET_ORDER);
     if (is_array($timeline_matches) && isset($timeline_matches[0])) {
         $full_tag = $timeline_matches[0][0];
         require_once gravity_flow()->get_base_path() . '/includes/pages/class-entry-detail.php';
         $notes = Gravity_Flow_Entry_Detail::get_timeline_notes($entry);
         $html = '';
         foreach ($notes as $note) {
             $html .= '<br />';
             $html .= GFCommon::format_date($note->date_created, false, 'd M Y g:i a', false);
             $html .= ': ';
             if (empty($note->user_id)) {
                 if ($note->user_name !== 'gravityflow') {
                     $step = Gravity_Flow_Steps::get($note->user_name);
                     if ($step) {
                         $html .= $step->get_label();
                     }
                 } else {
                     $html .= esc_html(gravity_flow()->translate_navigation_label('Workflow'));
                 }
             } else {
                 $html .= esc_html($note->user_name);
             }
             $html .= '<br />';
             $html .= nl2br(esc_html($note->value));
             $html .= '<br />';
         }
         $text = str_replace($full_tag, $html, $text);
     }
     preg_match_all('/{created_by(:(.*?))?}/', $text, $created_by_matches, PREG_SET_ORDER);
     if (is_array($created_by_matches)) {
         if (!empty($entry['created_by'])) {
             $entry_creator = new WP_User($entry['created_by']);
             foreach ($created_by_matches as $created_by_match) {
                 if (!isset($created_by_match[2])) {
                     continue;
                 }
                 $full_tag = $created_by_match[0];
                 $property = $created_by_match[2];
                 if ($property == 'roles') {
                     $value = implode(', ', $entry_creator->roles);
                 } else {
                     $value = $entry_creator->get($property);
                 }
                 $value = esc_html($value);
                 $text = str_replace($full_tag, $value, $text);
             }
         }
     }
     return $text;
 }
Example #15
0
/**
 * Retrieve user option that can be either per Site or per Network.
 *
 * If the user ID is not given, then the current user will be used instead. If
 * the user ID is given, then the user data will be retrieved. The filter for
 * the result, will also pass the original option name and finally the user data
 * object as the third parameter.
 *
 * The option will first check for the per site name and then the per Network name.
 *
 * @since 2.0.0
 * @uses $wpdb WordPress database object for queries.
 * @uses apply_filters() Calls 'get_user_option_$option' hook with result,
 *		option parameter, and user data object.
 *
 * @param string $option User option name.
 * @param int $user Optional. User ID.
 * @param bool $deprecated Use get_option() to check for an option in the options table.
 * @return mixed
 */
function get_user_option($option, $user = 0, $deprecated = '')
{
    global $wpdb;
    if (!empty($deprecated)) {
        _deprecated_argument(__FUNCTION__, '3.0');
    }
    if (empty($user)) {
        $user = wp_get_current_user();
    } else {
        $user = new WP_User($user);
    }
    if (!isset($user->ID)) {
        return false;
    }
    if ($user->has_prop($wpdb->prefix . $option)) {
        // Blog specific
        $result = $user->get($wpdb->prefix . $option);
    } elseif ($user->has_prop($option)) {
        // User specific and cross-blog
        $result = $user->get($option);
    } else {
        $result = false;
    }
    return apply_filters("get_user_option_{$option}", $result, $option, $user);
}
Example #16
0
 function test_update_user()
 {
     $user_id = self::factory()->user->create(array('role' => 'author', 'user_login' => 'test_wp_update_user', 'user_pass' => 'password', 'user_email' => '*****@*****.**'));
     $user = new WP_User($user_id);
     update_user_meta($user_id, 'description', 'about me');
     $this->assertEquals('about me', $user->get('description'));
     $user_data = array('ID' => $user_id, 'display_name' => 'test user');
     wp_update_user($user_data);
     $user = new WP_User($user_id);
     $this->assertEquals('test user', $user->get('display_name'));
     // Make sure there is no collateral damage to fields not in $user_data
     $this->assertEquals('about me', $user->get('description'));
     // Pass as stdClass
     $user_data = array('ID' => $user_id, 'display_name' => 'a test user');
     wp_update_user((object) $user_data);
     $user = new WP_User($user_id);
     $this->assertEquals('a test user', $user->get('display_name'));
     // Pass as WP_User
     $user = new WP_User($user_id);
     $user->display_name = 'some test user';
     wp_update_user($user);
     $user = new WP_User($user_id);
     $this->assertEquals('some test user', $user->get('display_name'));
     // Test update of fields in _get_additional_user_keys()
     $user_data = array('ID' => $user_id, 'use_ssl' => 1, 'show_admin_bar_front' => 1, 'rich_editing' => 1, 'first_name' => 'first', 'last_name' => 'last', 'nickname' => 'nick', 'comment_shortcuts' => 'true', 'admin_color' => 'classic', 'description' => 'describe');
     wp_update_user($user_data);
     $user = new WP_User($user_id);
     foreach ($user_data as $key => $value) {
         $this->assertEquals($value, $user->get($key), $key);
     }
 }
 /**
  * Exactly like Gravity Forms' User Meta functionality, but instead shows information on the user who created the entry
  * instead of the currently logged-in user.
  *
  * @see http://docs.gravityview.co/article/281-the-createdby-merge-tag
  *
  * @since 1.8.4
  *
  * @param string $text Text to replace
  * @param array $form Gravity Forms form array
  * @param array $entry Entry array
  * @param bool $url_encode Whether to URL-encode output
  * @param bool $esc_html Whether to apply `esc_html()` to output
  */
 private function replace_user_variables_created_by($text, $form = array(), $entry = array(), $url_encode = false, $esc_html = false)
 {
     // Is there is {created_by:[xyz]} merge tag?
     preg_match_all("/\\{created_by:(.*?)\\}/", $text, $matches, PREG_SET_ORDER);
     // If there are no matches OR the Entry `created_by` isn't set or is 0 (no user)
     if (empty($matches) || empty($entry['created_by'])) {
         return $text;
     }
     // Get the creator of the entry
     $entry_creator = new WP_User($entry['created_by']);
     foreach ($matches as $match) {
         $full_tag = $match[0];
         $property = $match[1];
         $value = $entry_creator->get($property);
         $value = $url_encode ? urlencode($value) : $value;
         $esc_html = $esc_html ? esc_html($value) : $value;
         $text = str_replace($full_tag, $value, $text);
     }
     return $text;
 }