%s', AP_BASENAME, __('Settings') ) ); } return $links; } // end plugin_action() function ap_admin_header() { echo ''; echo '
'; return; } function ap_help() { $log_file = @ini_get('error_log'); $maybe_log_url = content_url('debug.log'); $test_content = 'Dear [user user_nicename], your login username is [user user_login] and your email is [user user_email].
' .'[user message="You registered on %s as a %s " user_registered wp_capabilities ]
' .'[user message="You entered a url %s" user_url empty="You have not entered a url"]'; echo '
' .'
' .'

'.__('Help').'

' .'

'. __('You may find these user related plugins helpful too:','amr-personalise' ) .'

' .'

'; } function amr_firstname ($user) { /* expects a user object generated by get_currentuserinfo() or get_userdata() */ if (!empty ($user->user_firstname)) return (ucwords($user->user_firstname)); else if (!empty ($user->display_name)) return (ucwords($user->display_name)); else if (!empty ($user->user_nicename)) return (ucwords($user->user_nicename)); else if (!empty ($user->user_login)) return (ucwords($user->user_login)); else if (!empty ($user->user_email)) return (ucwords($user->user_email)); else { $ifnoname = get_option('ap-ifnoname'); if (!is_null($ifnoname)) return ($ifnoname); else return(''); } } function amr_format_datetime ($dt_string) { /* expects a string ala 2009-06-01 03:52:48 */ global $df, $tf, $tz; return( date_i18n( $df.' '.$tf, strtotime($dt_string))); } function amr_personalise ($user, $metakey) { /* look for metafield and echo */ $nodata = ''; if (!is_object ($user)) { if ($metakey==='display_name') { $ifnoname = get_option('ap-ifnoname'); If (!is_null($ifnoname)) return ($ifnoname); } else return('No user object:'.print_r($user, true)); } if ($metakey === 'display_name') return amr_firstname ($user); else if ($metakey === 'user_registered') { if (isset ($user->$metakey)) { return amr_format_datetime ($user->$metakey); } else return ($nodata); } if (stristr($metakey,'capabilities')) { //$test = $user->$metakey; //echo ('Yse: '.$test); if (is_array ($user->$metakey)) { $text = ''; foreach ($user->$metakey as $c => $tf) { if ($tf == '1') $text = $text.', '.$c; } return (trim( $text,', ')); } else return ($nodata); } else { if (!empty ($user->$metakey)) { $value = $user->$metakey; if (is_array ($value)) return (implode(', ', $value)); else { return ($value); } } else { //echo 'trying for '.$metakey; return ($nodata); } } } /* insert the specific user parameters into the message at the place holders */ function a_personalised_message($user_info, $text, $atts) { /* EG: You registered on %s with user name %s */ $c = substr_count($text, '%s'); foreach ($atts as $i => $v) { if (!($atts[$i] = amr_personalise($user_info, $v)) or stristr($atts[$i],''); } else return (vsprintf ($text, $atts)); } function ap_dump_user_and_meta ($user_id) { if (empty ($user_id)) { echo '

No user id entered.

'; return; } $user_info = get_userdata($user_id); if (!is_object($user_info)) { echo '

Fetch on user id '.$user_id.' failed - no user object found.

'; var_dump($user_id); return; } $data = $user_info->data; // security risk - do not dump user details to public log file// if (WP_DEBUG_LOG) error_log('DEBUG: userinfo by request'.print_r($user_info , true)); echo '

Dumping user data by request:

'; echo ''; foreach ($data as $i => $info) { if (!($i == 'user_pass')) { echo ''; echo ''; echo ''; echo ''; } }; $metadata = ap_get_user_meta ($user_id); foreach ($metadata as $i => $meta) { if (!($i == 'user_pass')) { echo ''; echo ' '; echo ''; echo ''; } }; echo '
'. $i. ''; print_r($info); echo '
'.$i.''; print_r($meta); echo '
'; return $data; } function ap_check_excluded_user_meta ($data) { $exclude = array( 'user_pass', 'dismissed_wp_pointers', 'user-settings', 'user-settings-time' ); foreach ($data as $mk => $mv) { foreach ($exclude as $text) { if (stristr ($mk,$text)) { unset ($data[$mk]); } } } return $data; } function ap_get_user_meta ($user_id) { global $wpdb; $sql = "SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id=$user_id "; $results = $wpdb->get_results($sql, ARRAY_A); foreach ($results as $i => $mkv) { //echo '
'.$mkv['meta_key'].' '.$mkv['meta_value']; $data[$mkv['meta_key']] = maybe_unserialize($mkv['meta_value']); } $data = ap_check_excluded_user_meta ($data); ksort($data); return ($data); } function ap_user_shortcode ($atts, $otherargs='') { /* If no atts, then just display name if have else user default */ /* shortcode can be any of the values from the user or user meta tables user_login, user_nicename, user_email, user_url, display_name Shortcode usage: [user] or [user display_name]- will give display name or default from settings [user user_email] will give email address if it exists */ global $current_user; $result = ''; if (current_user_can('edit_users') and (isset($_REQUEST['ID'])) and (is_numeric ($_REQUEST['ID']))) { $user_info = ap_dump_user_and_meta ($_REQUEST['ID']); } else { if (!empty($atts['to'])) { $user_info = get_user_by_email($atts['to']); } else { $user_info = wp_get_current_user(); //get_currentuserinfo(); //$user_info = $current_user; //var_dump($user_info); } } /* allow for potentially a request for more than one value */ if (!is_array($atts)) { return( amr_firstname ($user_info)); } else { if (!empty($atts['empty'])) { $empty = $atts['empty']; unset ($atts['empty']); } else $empty = ''; if (!empty($atts['message'])) { $text = $atts['message']; unset ($atts['message']); if (function_exists('a_personalised_message')) $result = a_personalised_message($user_info, $text, $atts); } else { foreach ($atts as $i => $v) { if (!empty($result)) $result .= ' '; $thistext = amr_personalise ($user_info, $v); $result .= $thistext; //echo '
why'; var_dump($result); } } if (empty($result)) { $result = $empty; } else { //echo '
Result not empty'; //var_dump($result); } } return ($result); } function ap_admin_menu() { /* parent, page title, menu title, access level, file, function */ $plugin_page = add_submenu_page('options-general.php', __('Personalise','amr-personalise'), __('Personalise','amr-personalise'), 'manage_options', __FILE__, 'ap_options_panel'); } function ap_mail_from (&$atts) { $name = get_option('ap-fromaddr'); if (isset($name)) return ($name); else return ($atts); } function ap_mail_from_name (&$atts) { $name = get_option('ap-fromname'); if (isset($name)) return ($name); else return ($atts); } function ap_user_mailfilter ($atts) { /* apply the shortcode functionality to outgoing email messages */ if (isset ($atts ['to'])) { /*if ( $user = get_user_by('email',$atts['to'] )) { $name = amr_firstname ($user); } else $name = get_option('ap-ifnoname'); */ if (isset($atts['message'])) $atts['message'] = do_shortcode($atts['message']); if (isset ($atts['subject'])) $atts ['subject'] = do_shortcode($atts['subject']); } if (WP_DEBUG) { error_log('Mail being sent to '.print_r($atts['to'], true)); error_log('Mail header '.print_r($atts['headers'], true)); // error_log('Mail being sent bcc '.print_r($atts['bcc'], true)); } return ($atts); } if (is_admin() ) { load_plugin_textdomain('amr-personalise', false , basename(dirname(__FILE__)) ); add_action('admin_menu', 'ap_admin_menu'); add_filter('plugin_action_links', 'ap_plugin_action', -10, 2); } else add_filter('widget_text', 'do_shortcode', 11 /*SHORTCODE_PRIORITY*/); /* Need priority to get the filter to load early */ /* does apply filters apply the shortcodes too */ add_shortcode('user', 'ap_user_shortcode'); add_filter('wp_mail','ap_user_mailfilter'); If ($enable = get_option('ap-enable-senderchange')) { add_filter('wp_mail_from','ap_mail_from'); add_filter('wp_mail_from_name','ap_mail_from_name'); } if ( ! function_exists('wpmq_mail') ) { function wpmq_mail() { // a dummy function so that S2 sendingto single recipient will work , because it cheks this fn and limit = 1, seeline 363 }; } function ap_options_panel() { // if (!check_admin_referer('amr-personalise')) die; if (isset($_REQUEST['uninstall']) OR isset($_REQUEST['reallyuninstall'])) { /* */ amr_personalise_uninstall(); return; } elseif (!empty($_POST['Dump']) and !empty($_POST['id'])) { $id = (int) $_POST['id']; ap_dump_user_and_meta ($id); return; } else { $ifnoname = get_option('ap-ifnoname'); if (!($ifnoname)) $ifnoname = ''; $fromaddr = get_option('ap-fromaddr'); $fromname = get_option('ap-fromname'); $enable = get_option('ap-enable-senderchange'); if (empty($enable)) $enable=false; if ((isset($_POST['action'])) and ($_POST['action'] == "save")) {/* Validate the input and save */ if (isset($_POST['ifnoname'])) { $ifnoname = $_POST['ifnoname']; update_option('ap-ifnoname', $ifnoname); } if (isset($_POST['fromaddr'])) { $fromaddr = $_POST['fromaddr']; update_option('ap-fromaddr', $fromaddr); } if (isset($_POST['fromname'])) { $fromname = $_POST['fromname']; update_option('ap-fromname', $fromname); } if (isset($_POST['enable'])) { if ($_POST['enable'] === 'true') $enable = true; else $enable = false; update_option('ap-enable-senderchange', $enable); } else { $enable = false; update_option('ap-enable-senderchange', false); } }?>

'.PHP_EOL; ?>

'; _e('Other plugins may also be modifying the filter.','amr-personalise'); echo '
'; _e('Typically the last to filter will affect the final result.','amr-personalise'); echo '
'; _e('This can depend on priorities or activation sequence if priorities are the same.','amr-personalise'); echo '
'; _e('Some other plugins overwrite the wp_mail function entirely and may or may not apply the filter.','amr-personalise'); ?>

  • />