'') ? stripslashes(htmlspecialchars($v)) : $d;
}
### Special Character Suppoer in subject lines
function encode_header ($str) {
$x = preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
if ($x == 0)
return ($str);
$maxlen = 75 - 7 - strlen( get_option('blog_charset') );
$encoded = base64_encode($str);
$maxlen -= $maxlen % 4;
$encoded = trim(chunk_split($encoded, $maxlen, "\n"));
$encoded = preg_replace('/^(.*)$/m', " =?".get_option('blog_charset')."?B?\\1?=", $encoded);
$encoded = trim($encoded);
return $encoded;
}
### write DB record
function write_tracking_record($no,$field_email){
global $wpdb, $track, $cformsSettings;
if ( $cformsSettings['global']['cforms_database'] == '1' ) {
$page = (substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='2')?$_POST['cforms_pl'.$no]:get_current_page(); // WP comment fix
$wpdb->query("INSERT INTO $wpdb->cformssubmissions (form_id,email,ip,sub_date) VALUES ".
"('" . $no . "', '" . $field_email . "', '" . cf_getip() . "', '".gmdate('Y-m-d H:i:s', current_time('timestamp'))."');");
$subID = $wpdb->get_row("select LAST_INSERT_ID() as number from $wpdb->cformssubmissions;");
$subID = ($subID->number=='')?'1':$subID->number;
$sql = "INSERT INTO $wpdb->cformsdata (sub_id,field_name,field_val) VALUES " .
"('$subID','page','$page'),";
foreach ( array_keys($track) as $key ){
if( !preg_match('/^\$\$\$/',$key) )
$sql .= "('$subID','".addslashes($key)."','".addslashes($track[$key])."'),";
}
$wpdb->query(substr($sql,0,-1));
}
else
$subID = 'noid';
return $subID;
}
### replace standard & custom variables in message/subject text
function get_current_page(){
global $Ajaxpid;
if ( strpos($_SERVER['REQUEST_URI'],'?')>0 )
$page = substr( $_SERVER['REQUEST_URI'], 0, strpos($_SERVER['REQUEST_URI'],'?')-1);
else
$page = $_SERVER['REQUEST_URI'];
$page = (trim($page)=='' || strpos($page,'lib_ajax.php')!==false )?$_SERVER['HTTP_REFERER']:trim($page); // for ajax
return $page;
}
### look for default/system variables
function check_default_vars($m,$no) {
global $subID, $Ajaxpid, $AjaxURL, $post, $wpdb, $wp_db_version;
if ( $_POST['comment_post_ID'.$no] )
$pid = $_POST['comment_post_ID'.$no];
else if ( $Ajaxpid<>'' )
$pid = $Ajaxpid;
else if ( function_exists('get_the_ID') )
$pid = get_the_ID();
if ( $_POST['cforms_pl'.$no] )
$permalink = $_POST['cforms_pl'.$no];
else if ( $Ajaxpid<>'' )
$permalink = $AjaxURL;
else if ( function_exists('get_permalink') && function_exists('get_userdata') )
$permalink = get_permalink($pid);
###
### if the "month" is not spelled correctly, try the commented out line instead of the one after
###
### $date = utf8_encode(html_entity_decode( mysql2date(get_option('date_format'), current_time('mysql')) ));
$date = mysql2date(get_option('date_format'), current_time('mysql'));
$time = gmdate(get_option('time_format'), current_time('timestamp'));
$page = get_current_page();
if ( substr($cformsSettings['form'.$no]['cforms'.$no.'_tellafriend'],0,1)=='2' ) // WP comment fix
$page = $permalink;
$find = $wpdb->get_row("SELECT p.post_title, p.post_excerpt, u.display_name FROM $wpdb->posts AS p LEFT JOIN ($wpdb->users AS u) ON p.post_author = u.ID WHERE p.ID='$pid'");
if ( $wp_db_version >= 3440 ) //&& function_exists( 'wp_get_current_user' )
$CurrUser = wp_get_current_user();
$m = str_replace( '{Referer}', $_SERVER['HTTP_REFERER'], $m );
$m = str_replace( '{PostID}', $pid, $m );
$m = str_replace( '{Form Name}', $cformsSettings['form'.$no]['cforms'.$no.'_fname'], $m );
$m = str_replace( '{Page}', $page, $m );
$m = str_replace( '{Date}', $date, $m );
$m = str_replace( '{Author}', $find->display_name, $m );
$m = str_replace( '{Time}', $time, $m );
$m = str_replace( '{IP}', cf_getip(), $m );
$m = str_replace( '{BLOGNAME}', get_option('blogname'), $m );
$m = str_replace( '{CurUserID}', $CurrUser->ID, $m );
$m = str_replace( '{CurUserName}', $CurrUser->display_name, $m );
$m = str_replace( '{CurUserEmail}',$CurrUser->user_email, $m );
$m = str_replace( '{Permalink}', $permalink, $m );
$m = str_replace( '{Title}', $find->post_title, $m );
$m = str_replace( '{Excerpt}', $find->post_excerpt, $m );
$m = preg_replace( "/\r\n\./", "\r\n", $m );
if ( $cformsSettings['global']['cforms_database'] && $subID<>'' )
$m = str_replace( '{ID}', $subID, $m );
return $m;
}
### look for custom variables
function check_cust_vars($m,$t,$no) {
preg_match_all('/\\{([^\\{]+)\\}/',$m,$findall);
if ( count($findall[1]) > 0 ) {
$allvars = array_keys($t);
foreach ( $findall[1] as $fvar ) {
$fTrackedVar = $fvar;
### convert _fieldXYZ to actual label name tracked...
if ( strpos($fvar,'_field')!==false ){
$fNo = substr($fvar,6);
if ( $allvars[$fNo]<>'' )
$fTrackedVar = $t['$$$'.$fNo]; ### reset $fvar to actual label name and continue
}
### convert if alt [id:] used
if ( in_array( '$$$'.$fTrackedVar, $allvars ) ){
if ( $t['$$$'.$fTrackedVar]<>'' )
$fTrackedVar = $t['$$$'.$fTrackedVar]; ### reset $fvar to actual label name and continue
}
### check if label name is tracked...
if( in_array( $fTrackedVar,$allvars ) )
$m = str_replace('{'.$fvar.'}', $t[$fTrackedVar], $m);
}
}
return $m;
}
### Can't use WP's function here, so lets use our own
if ( !function_exists('cf_getip') ) :
function cf_getip() {
if (isset($_SERVER)) {
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))$ip_addr = $_SERVER["HTTP_X_FORWARDED_FOR"];
elseif (isset($_SERVER["HTTP_CLIENT_IP"])) $ip_addr = $_SERVER["HTTP_CLIENT_IP"];
else $ip_addr = $_SERVER["REMOTE_ADDR"];
} else {
if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) $ip_addr = getenv( 'HTTP_X_FORWARDED_FOR' );
elseif ( getenv( 'HTTP_CLIENT_IP' ) ) $ip_addr = getenv( 'HTTP_CLIENT_IP' );
else $ip_addr = getenv( 'REMOTE_ADDR' );
}
return $ip_addr;
}
endif;
### API call to get all entries
function get_cforms_entries($fname=false,$from=false,$to=false,$sort=false,$limit=false) {
global $wpdb, $cformsSettings;
$data = array();
$fname_in = false;
$where = false;
for ($i=1; $i <= $cformsSettings['global']['cforms_formcount']; $i++){
$n = ( $i==1 )?'':$i;
$fnames[$i]=stripslashes($cformsSettings['form'.$n]['cforms'.$n.'_fname']);
if ( $fname && preg_match('/'.$fname.'/i',$fnames[$i]) )
$fname_in = "'$n'" . $fname_in . ',';
}
$where = $fname_in?' form_id IN ('.substr($fname_in,0,-1).')':'';
$where .= $from?($where?' AND':'')." sub_date > '$from'":'';
$where .= $to?($where?' AND':'')." sub_date < '$to'":'';
$where = $where?'WHERE'.$where:'';
$sort = $sort?'ORDER BY '.$sort:'ORDER BY id';
$limit = $limit?'':'LIMIT 0,'.$limit;
//$where = ($fname<>''||$from<>''||$to<>'')?'':' WHERE 0,'.$limit;
$in = '';
$sql = "SELECT * FROM {$wpdb->cformssubmissions} $where $sort $limit";
$all = $wpdb->get_results($sql);
echo $sql."
";
foreach ( $all as $d ){
$in = $in . $d->id . ',';
$n = ( $d->form_id=='' )?1:$d->form_id;
$data[$d->id]['id'] = $d->id;
$data[$d->id]['form'] = $fnames[$n];
$data[$d->id]['date'] = $d->sub_date;
$data[$d->id]['email'] = $d->email;
$data[$d->id]['ip'] = $d->ip;
}
$where = 'sub_id IN ('.substr($in,0,-1).')';
$sql = "SELECT * FROM {$wpdb->cformsdata} WHERE $where";
$all = $wpdb->get_results($sql);
echo $sql."
";
foreach ( $all as $d )
$data[$d->sub_id]['data'][$d->field_name] = $d->field_val;
return $data;
}
class cformsRSS {
function vars($public_query_vars) {
$public_query_vars[] = 'cformsRSS';
return $public_query_vars;
}
function outputRSS() {
global $wpdb, $cformsSettings, $plugindir;
$temp=get_query_var('cformsRSS');
if( $temp <> '' ) {
$cformsRSS = explode('$#$', $temp);
$no = $cformsRSS[0];
$key = $cformsRSS[1];
$all = $no=='-1' && $cformsSettings['global']['cforms_rssall'] && $cformsSettings['global']['cforms_rsskeyall'] == $key;
$single = $no<>'-1' && $cformsSettings['form'.$no]['cforms'.$no.'_rss'] && $key<>'' && $cformsSettings['form'.$no]['cforms'.$no.'_rsskey'] == $key;
if( $all || $single ){
### add opt. form content
$WHERE='';
if( $all )
$rsscount = $cformsSettings['global']['cforms_rssall_count'];
else if( $single ){
$WHERE = "WHERE form_id = '".$no."'";
$rsscount = $cformsSettings['form'.$no]['cforms'.$no.'_rss_count'];
}
$entries = $wpdb->get_results("SELECT * FROM {$wpdb->cformssubmissions} $WHERE ORDER BY sub_date DESC LIMIT 0,".$rsscount);
$content = '';
if( count($entries)>0 ){
foreach($entries as $entry){
$content.= "\t".'- '."\n".
"\t\t".''.$entry->email.''."\n".
"\t\t".''.__('Form submitted on','cforms').' '.$entry->sub_date.($single?'':' via "'.$cformsSettings['form'.$entry->form_id]['cforms'.$entry->form_id.'_fname'].'"').'.'."\n".
"\t\t".''.get_option('siteurl').'wp-admin/admin.php?page='.$plugindir.'/cforms-database.php#e'.$entry->id.''."\n".
"\t\t".''.get_option('siteurl').'/wp-admin/admin.php?page='.$plugindir.'/cforms-database.php#e'.$entry->id.''."\n".
"\t\t".''.mysql2date('D, d M Y H:i:s +0000', $entry->sub_date, false).''."\n".
//''.
"\t".'
'."\n";
}
}
else
$content = '- '.__('No entries yet','cforms').''.__('You might want to check back in a little while...','cforms').''.
''.gmdate('D, d M Y H:i:s +0000', current_time('timestamp')).'
';
?>
'; ?>