escape_string_like($conditions[$search_field])."%'"; } } // LESS THAN or GREATER THAN $direction_fields = array("postnum"); foreach($direction_fields as $search_field) { $direction_field = $search_field."_dir"; if($conditions[$search_field] && $conditions[$direction_field]) { switch($conditions[$direction_field]) { case "greater_than": $direction = ">"; break; case "less_than": $direction = "<"; break; default: $direction = "="; } $search_sql .= " AND u.{$search_field}{$direction}'".intval($conditions[$search_field])."'"; } } // Usergroup based searching if($conditions['usergroup']) { if(!is_array($conditions['usergroup'])) { $conditions['usergroup'] = array($conditions['usergroup']); } $conditions['usergroup'] = array_map('intval', $conditions['usergroup']); foreach($conditions['usergroup'] as $usergroup) { switch($db->type) { case "pgsql": case "sqlite": $additional_sql .= " OR ','||additionalgroups||',' LIKE '%,{$usergroup},%'"; break; default: $additional_sql .= " OR CONCAT(',',additionalgroups,',') LIKE '%,{$usergroup},%'"; } } $search_sql .= " AND (u.usergroup IN (".implode(",", $conditions['usergroup']).") {$additional_sql})"; } return $search_sql; } /** * Create a text based version of a HTML mass email. * * @param string The HTML version. * @return string The generated text based version. */ function create_text_message($message) { // Cut out all current line breaks // Makes links CONTENT (link) $message = make_pretty_links($message); $message = str_replace(array("\r\n", "\n"), "\n", $message); $message = preg_replace("#

#i", "\n\n", $message); $message = preg_replace("##i", "\n", $message); $message = preg_replace("#]*?>#i", "", $message); $message = preg_replace("#]*?>\s*#i", "-----------\n", $message); $message = html_entity_decode($message); $message = str_replace("\t", "", $message); do { $message = str_replace(" ", " ", $message); } while(strpos($message, " ") !== false); $search = array('@]*?>.*?@si', // Strip out javascript '@]*?>.*?@siU', // Strip style tags properly '@]*?>.*?@siU', // Strip title tags '@<[\/\!]*?[^<>]*?>@si', // Strip out HTML tags '@@' // Strip multi-line comments including CDATA ); $message = preg_replace($search, '', $message); $message = preg_replace("#\n\n+#", "\n\n", $message); $message = preg_replace("#^\s+#is", "", $message); return $message; } /** * Generates friendly links for a text based version of a mass email from the HTML version. * * @param string The HTML version. * @return string The version with the friendly links and all tags stripped. */ function make_pretty_links($message_html) { do { $start = stripos($message_html, "", $start); if($end === false) { break; } $a_href = substr($message_html, $start, ($end-$start)); preg_match("#href=\"?([^\"> ]+)\"?#i", $a_href, $href_matches); if(!$href_matches[1]) { continue; } $link = $href_matches[1]; $contents = strip_tags($a_href); if(!$contents) { preg_match("#alt=\"?([^\">]+)\"?#i", $a_href, $matches2); if($matches2[1]) { $contents = $matches2[1]; } if(!$contents) { preg_match("#title=\"?([^\">]+)\"?#i", $a_href, $matches2); if($matches2[1]) { $contents = $matches2[1]; } } } $replaced_link = $contents." ({$link}) "; $message_html = substr_replace($message_html, $replaced_link, $start, ($end-$start)); } while(true); return $message_html; } ?>