From ac5fd23412f64b5b8647574a431e3cc13518538e Mon Sep 17 00:00:00 2001 From: rub Date: Tue, 31 Jan 2006 23:42:42 +0000 Subject: [NBM] Step 1: Create new include files with current notification/mail fonctions (with improvement) git-svn-id: http://piwigo.org/svn/trunk@1019 68402e56-0260-453c-a942-63ccdbb3a9ee --- include/functions_notification.inc.php | 227 +++++++++++++++++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 include/functions_notification.inc.php (limited to 'include/functions_notification.inc.php') diff --git a/include/functions_notification.inc.php b/include/functions_notification.inc.php new file mode 100644 index 000000000..87b4bf635 --- /dev/null +++ b/include/functions_notification.inc.php @@ -0,0 +1,227 @@ + \''.$start.'\' + AND c.validation_date <= \''.$end.'\' + AND category_id NOT IN ('.$user['forbidden_categories'].') +;'; + return array_from_query($query, 'comment_id'); +} + +/** + * unvalidated at a precise date + * + * Comments that are registered and not validated yet on a precise date + * + * @param string date (mysql datetime format) + * @return array comment ids + */ +function unvalidated_comments($date) +{ + $query = ' +SELECT DISTINCT id + FROM '.COMMENTS_TABLE.' + WHERE date <= \''.$date.'\' + AND (validated = \'false\' + OR validation_date > \''.$date.'\') +;'; + return array_from_query($query, 'id'); +} + +/** + * new elements between two dates, according to authorized categories + * + * @param string start (mysql datetime format) + * @param string end (mysql datetime format) + * @param string forbidden categories (comma separated) + * @return array element ids + */ +function new_elements($start, $end) +{ + global $user; + + $query = ' +SELECT DISTINCT image_id + FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON image_id = id + WHERE date_available > \''.$start.'\' + AND date_available <= \''.$end.'\' + AND category_id NOT IN ('.$user['forbidden_categories'].') +;'; + return array_from_query($query, 'image_id'); +} + +/** + * updated categories between two dates, according to authorized categories + * + * @param string start (mysql datetime format) + * @param string end (mysql datetime format) + * @param string forbidden categories (comma separated) + * @return array element ids + */ +function updated_categories($start, $end) +{ + global $user; + + $query = ' +SELECT DISTINCT category_id + FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON image_id = id + WHERE date_available > \''.$start.'\' + AND date_available <= \''.$end.'\' + AND category_id NOT IN ('.$user['forbidden_categories'].') +;'; + return array_from_query($query, 'category_id'); +} + +/** + * new registered users between two dates + * + * @param string start (mysql datetime format) + * @param string end (mysql datetime format) + * @return array user ids + */ +function new_users($start, $end) +{ + $query = ' +SELECT user_id + FROM '.USER_INFOS_TABLE.' + WHERE registration_date > \''.$start.'\' + AND registration_date <= \''.$end.'\' +;'; + return array_from_query($query, 'user_id'); +} + +/** + * currently waiting pictures + * + * @return array waiting ids + */ +function waiting_elements() +{ + $query = ' +SELECT id + FROM '.WAITING_TABLE.' + WHERE validated = \'false\' +;'; + + return array_from_query($query, 'id'); +} + +/** + * What's new between two dates ? + * + * Informations : number of new comments, number of new elements, number of + * updated categories. Administrators are also informed about : number of + * unvalidated comments, number of new users (TODO : number of unvalidated + * elements) + * + * @param string start date (mysql datetime format) + * @param string end date (mysql datetime format) + */ +function news($start, $end) +{ + global $user; + + $news = array(); + + $nb_new_comments = count(new_comments($start, $end)); + if ($nb_new_comments > 0) + { + array_push($news, sprintf(l10n('%d new comments'), $nb_new_comments)); + } + + $nb_new_elements = count(new_elements($start, $end)); + if ($nb_new_elements > 0) + { + array_push($news, sprintf(l10n('%d new elements'), $nb_new_elements)); + } + + $nb_updated_categories = count(updated_categories($start, $end)); + if ($nb_updated_categories > 0) + { + array_push($news, sprintf(l10n('%d categories updated'), + $nb_updated_categories)); + } + + if ('admin' == $user['status']) + { + $nb_unvalidated_comments = count(unvalidated_comments($end)); + if ($nb_unvalidated_comments > 0) + { + array_push($news, sprintf(l10n('%d comments to validate'), + $nb_unvalidated_comments)); + } + + $nb_new_users = count(new_users($start, $end)); + if ($nb_new_users > 0) + { + array_push($news, sprintf(l10n('%d new users'), $nb_new_users)); + } + + $nb_waiting_elements = count(waiting_elements()); + if ($nb_waiting_elements > 0) + { + array_push( + $news, + sprintf( + l10n('%d waiting elements'), + $nb_waiting_elements + ) + ); + } + } + + return $news; +} + +?> \ No newline at end of file -- cgit v1.2.3