From d23122dffafa40415b1496c240ebd0b27619ef0f Mon Sep 17 00:00:00 2001 From: Karl 'vollmerk' Vollmer Date: Mon, 17 Dec 2007 03:56:58 +0000 Subject: fixed mailing functions --- admin/mail.php | 252 ++++---------------------------------- docs/CHANGELOG | 2 + lib/class/ampachemail.class.php | 99 +++++++++++++++ templates/show_login_form.inc.php | 4 +- templates/show_mail_users.inc.php | 24 ++-- templates/sidebar_admin.inc.php | 1 + 6 files changed, 136 insertions(+), 246 deletions(-) create mode 100644 lib/class/ampachemail.class.php diff --git a/admin/mail.php b/admin/mail.php index 2d7ce570..4c5a070e 100644 --- a/admin/mail.php +++ b/admin/mail.php @@ -19,257 +19,47 @@ */ -require('../lib/init.php'); +require_once '../lib/init.php'; -if (!$GLOBALS['user']->has_access(100)) { +if (!Access::check('interface','75')) { access_denied(); exit(); } +show_header(); -$action = scrub_in($_POST['action']); -$to = scrub_in($_REQUEST['to']); -if (isset ($_POST['cat_stats'])){$cat_stats = scrub_in($_POST['cat_stats']);} -if (isset ($_POST['pop_albums'])){$pop_albums = scrub_in($_POST['pop_albums']);} -if (isset ($_POST['pop_artists'])){$pop_artists = scrub_in($_POST['pop_artists']);} -if (isset ($_POST['pop_songs'])){$pop_songs = scrub_in($_POST['pop_songs']);} -if (isset ($_POST['threshold'])){$threshold = scrub_in($_POST['threshold']);} else { $threshold = conf($stats_threshold); }; -if (isset ($_POST['new_artists'])){$new_artists = scrub_in($_POST['new_artists']);} -if (isset ($_POST['new_albums'])){$new_albums = scrub_in($_POST['new_albums']);} -if (isset ($_POST['flagged'])){$flagged = scrub_in($_POST['flagged']);} -$subject = stripslashes(scrub_in($_POST['subject'])); -$message = stripslashes(scrub_in($_POST['message'])); - -/* Always show the header */ -show_template('header'); - -switch ($action) { +// Action switch +switch ($_REQUEST['action']) { case 'send_mail': - if (conf('demo_mode')) { break; } - - // do the mail mojo here - if ( $to == 'all' ) { - $sql = "SELECT * FROM user WHERE email IS NOT NULL"; - } - elseif ( $to == 'users' ) { - $sql = "SELECT * FROM user WHERE access='user' OR access='25' AND email IS NOT NULL"; - } - elseif ( $to == 'admins' ) { - $sql = "SELECT * FROM user WHERE access='admin' OR access='100' AND email IS NOT NULL"; - } - elseif ( $to == 'inactive' ) { - if (isset ($_POST['inactive'])){ - $days = $_POST['inactive']; - } else { - $days = "30"; - } - $inactive = time() - ($days * 24 * 60 *60); - $sql = "SELECT * FROM user WHERE last_seen <= '$inactive' AND email IS NOT NULL"; - } + if (Config::get('demo_mode')) { + access_denied(); + exit; + } - - $db_result = mysql_query($sql, dbh()); - - $recipient = ''; + $clients = AmpacheMail::get_users($_REQUEST['to']); - while ( $u = mysql_fetch_object($db_result) ) { - $recipient .= "$u->fullname <$u->email>, "; + foreach ($clients as $client) { + $recipient .= $client['fullname'] ." <" . $client['email'] . ">, "; } // Remove the last , from the recipient $recipient = rtrim($recipient,","); - - $from = $user->fullname."<".$user->email.">"; + + // Set the vars on the object + AmpacheMail::$recipient = $recipient; + AmpacheMail::$from = $GLBOALS['user']->fullname."<".$GLOBALS['user']->email.">"; + AmpacheMail::$subject = scrub_in($_REQUEST['subject']); + AmpacheMail::$message = scrub_in($_REQUEST['message']); + AmpacheMail::send(); - if (isset ($cat_stats)){ - /* Before we display anything make sure that they have a catalog */ - $query = "SELECT * FROM catalog"; - $dbh = dbh(); - $db_results = mysql_query($query, dbh()); - if (!mysql_num_rows($db_results)) { - $items[] = "" . _("No Catalogs Found!") . "
"; - $items[] = "" ._("Add a Catalog") . ""; - show_info_box(_('Catalog Statistics'),'catalog',$items); - return false; - break; - } - - $query = "SELECT count(*) AS songs, SUM(size) AS size, SUM(time) as time FROM song"; - $db_result = mysql_query($query, $dbh); - $songs = mysql_fetch_assoc($db_result); - - $query = "SELECT count(*) FROM album"; - $db_result = mysql_query($query, $dbh); - $albums = mysql_fetch_row($db_result); - - $query = "SELECT count(*) FROM artist"; - $db_result = mysql_query($query, $dbh); - $artists = mysql_fetch_row($db_result); - - $sql = "SELECT count(*) FROM user"; - $db_result = mysql_query($sql, $dbh); - $users = mysql_fetch_row($db_result); - - $time = time(); - $last_seen_time = $time - 1200; - $sql = "SELECT count(DISTINCT s.username) FROM session AS s " . - "INNER JOIN user AS u ON s.username = u.username " . - "WHERE s.expire > " . $time . " " . - "AND u.last_seen > " . $last_seen_time; - $db_result = mysql_query($sql, $dbh); - $connected_users = mysql_fetch_row($db_result); - - $hours = floor($songs['time']/3600); - $size = $songs['size']/1048576; - - $days = floor($hours/24); - $hours = $hours%24; - - $time_text = "$days "; - $time_text .= ($days == 1) ? _("day") : _("days"); - $time_text .= ", $hours "; - $time_text .= ($hours == 1) ? _("hour") : _("hours"); - - if ( $size > 1024 ) { - $total_size = sprintf("%.2f", ($size/1024)); - $size_unit = "GB"; - } - else { - $total_size = sprintf("%.2f", $size); - $size_unit = "MB"; - } - $stats = _('Total Users')." ".$users[0]."\n"; - $stats .= _('Connected Users')." ".$connected_users[0]."\n"; - $stats .= _('Albums')." ".$albums[0]."\n"; - $stats .= _('Artists')." ".$artists[0]."\n"; - $stats .= _('Songs')." ".$songs['songs']."\n"; - $stats .= _('Catalog Size')." ".$total_size." ".$size_unit."\n"; - $stats .= _('Catalog Time')." ".$time_text."\n"; - - $message .= "\n\nAmpache Catalog Statistics\n\n"; - $message .= "$stats"; - } - - if (isset ($pop_albums)){ - $message .= "\n\nMost Popular Albums\n\n"; - $stats = new Stats(); - $stats = $stats->get_top('10','album',$threshold); - - foreach( $stats as $r){ - $album = new Album($r[object_id]); - $palbums .= $album->name." (". $r[count].")\n"; - } - $message .= "$palbums"; - } - - if (isset ($pop_artists)){ - $message .= "\n\nMost Popular Artists\n\n"; - $stats = new Stats(); - $stats = $stats->get_top('10','artist',$threshold); - - foreach( $stats as $r){ - $artist = new Artist($r[object_id]); - $partists .= $artist->name." (". $r[count].")\n"; - } - $message .= "$partists"; - } - - if (isset ($pop_songs)){ - - $message .= "\n\nMost Popular Songs\n\n"; - $stats = new Stats(); - $stats = $stats->get_top('10','song',$threshold); - - foreach( $stats as $r){ - $song = new Song($r[object_id]); - $artist = $song->get_artist_name(); - $text = "$artist - $song->title"; - $psongs .= $text." (". $r[count].")\n"; - } - $message .= "$psongs"; - } - - if (isset ($new_artists)){ - - $sql = "SELECT DISTINCT artist FROM song ORDER BY addition_time " . - "DESC LIMIT " . conf('popular_threshold'); - $db_result = mysql_query($sql, dbh()); - - while ( $item = mysql_fetch_row($db_result) ) { - $artist = new Artist($item[0]); - $nartists .= $artist->name."\n"; - } - $message .= "\n\nLatest Artist Additions\n\n"; - $message .= "$nartists"; - } - - if (isset ($new_albums)){ - - $sql = "SELECT DISTINCT album FROM song ORDER BY addition_time " . - "DESC LIMIT " . conf('popular_threshold'); - $db_result = mysql_query($sql, dbh()); - - - while ( $item = mysql_fetch_row($db_result) ) { - $album = new Album($item[0]); - $nalbums .= $album->name."\n"; - } - $message .= "\n\nLatest Album Additions\n\n"; - $message .= "$nalbums"; - - } - - if (isset ($flagged)){ - - $flag = new Flag(); - $flagged = $flag->get_flagged(); - $message .= "\n\nFlagged Songs\n\n"; - $message .= "Name\t\t\t\tFlag\t\tFlagged by\tStatus\n"; - foreach ($flagged as $data){ - - $flag = new Flag($data); - $flag->format_name(); - $name = $flag->name; - $user = $flag->user; - $flag = $flag->flag; - if($flag->approved){ $status = "Approved"; } else { $status = "Pending"; } - $message .= "*) $name\t$flag\t\t$user\t\t$status\n"; - } -} - - if (isset ($disabled)){ - - $catalog = new Catalog(); - $songs = $catalog->get_disabled(); - $message .= "\n\nDisabled Songs\n\n"; - - foreach ($songs as $song){ - - $name = "*) ". $song->title ." | ". $song->get_album_name($song->album) ." | ". $song->get_artist_name($song->album) ." | ". $song->file ; - $message .= "$name"; - } -} - - // woohoo!! - mail ($from, $subject, $message, - "From: $from\r\n". - "Bcc: $recipient\r\n"); - /* Confirmation Send */ - $url = conf('web_path') . '/admin/mail.php'; + $url = Config::get('web_path') . '/admin/mail.php'; $title = _('E-mail Sent'); $body = _('Your E-mail was successfully sent.'); show_confirmation($title,$body,$url); break; default: - if ( empty($to) ) { - $to = 'all'; - } - - if ( empty($subject) ) { - $subject = "[" . conf('site_title') . "] "; - } - require (conf('prefix') . '/templates/show_mail_users.inc.php'); + require_once Config::get('prefix') . '/templates/show_mail_users.inc.php'; break; } // end switch diff --git a/docs/CHANGELOG b/docs/CHANGELOG index 7784169a..df233630 100755 --- a/docs/CHANGELOG +++ b/docs/CHANGELOG @@ -4,6 +4,8 @@ -------------------------------------------------------------------------- v.3.4-Alpha4 + - Fixed Mail functions, some features from old mail are missing for + now. - Fixed Delete Disabled & Sort Files command line scripts - Fixed Find Duplicates Functionality - Added Highest Rated option to Advanced Random diff --git a/lib/class/ampachemail.class.php b/lib/class/ampachemail.class.php new file mode 100644 index 00000000..2a84fdcc --- /dev/null +++ b/lib/class/ampachemail.class.php @@ -0,0 +1,99 @@ +$row['id'],'fullname'=>$row['fullname'],'email'=>$row['email']); + } + + return $results; + + } // get_users + + /** + * add_statistics + * This should be run if we want to add some statistics to this e-mail, appends to self::$message + */ + public static function add_statistics($methods) { + + + + } // add_statistics + + /** + * send + * This actually sends the mail, how amazing + */ + public static function send() { + + mail(self::$from,self::$subject,self::$message,"From: " . self::$from . "\r\nBcc: " . self::$recipient . "\r\n"); + + return true; + + } // send + +} // AmpacheMail class +?> diff --git a/templates/show_login_form.inc.php b/templates/show_login_form.inc.php index 36b38ef0..7f564e9f 100644 --- a/templates/show_login_form.inc.php +++ b/templates/show_login_form.inc.php @@ -35,7 +35,7 @@ $htmllang = str_replace("_","-",Config::get('lang')); - <?php echo Config::get('site_title'); ?> + <?php echo scrub_out(Config::get('site_title')); ?> @@ -51,7 +51,7 @@ function focus(){ document.login.username.focus(); }
-

+

diff --git a/templates/show_mail_users.inc.php b/templates/show_mail_users.inc.php index a98128a1..b8fcf5ce 100644 --- a/templates/show_mail_users.inc.php +++ b/templates/show_mail_users.inc.php @@ -1,13 +1,12 @@ - + +
: -   users that are inactive for more than    days
: @@ -104,13 +103,12 @@
: - +
-
diff --git a/templates/sidebar_admin.inc.php b/templates/sidebar_admin.inc.php index bc35e000..af1be577 100644 --- a/templates/sidebar_admin.inc.php +++ b/templates/sidebar_admin.inc.php @@ -21,6 +21,7 @@
    • +
    -- cgit