diff --git a/admin/communication.inc.php b/admin/communication.inc.php index 4d90c16..d214223 100644 --- a/admin/communication.inc.php +++ b/admin/communication.inc.php @@ -1,51 +1,79 @@ $mailqueries=array( "committee_all"=>array("name"=>"Committee members (all)","query"=> - "SELECT firstname, lastname, organization, email FROM users WHERE types LIKE '%committee%' AND deleted='no' GROUP BY uid"), + "SELECT firstname, lastname, organization, email FROM users + JOIN user_roles ON user_roles.users_id = users.id + JOIN roles ON roles.id = user_roles.roles_id + WHERE roles.type = 'committee' AND users.deleted = 'no' + GROUP BY users.id"), /* The WHERE clause evaluates which rows to add to the GROUP BY, the HAVING clase evaluates which grouped rows show up. We want to to evaluate 'deleted' AFTER the grouping, so we catch - the case where the MAX(year) has deleted='yes'. If we use WHERE + the case where the MAX(conferences_id) has deleted='yes'. If we use WHERE deleted='no', we'll only add non-deleted rows to the group, and end up picking up a user active in, say 2007 and 2008, but deleted in 2009. */ - "judges_all"=>array("name"=>"Judges from all years (except deleted judges)","query"=> - "SELECT firstname, lastname, email, deleted, MAX(year) - FROM users WHERE types LIKE '%judge%' GROUP BY uid HAVING deleted='no' ORDER BY email"), + "judges_all"=>array("name"=>"Judges from all conferences (except deleted judges)","query"=> + "SELECT firstname, lastname, email, deleted, MAX(conferences_id) FROM users + JOIN user_roles ON user_roles.users_id = users.id + JOIN roles ON roles.id = user_roles.roles_id + WHERE roles.type ='judge' GROUP BY users.accounts_id HAVING deleted='no' ORDER BY email"), - "judges_active_thisyear"=>array("name"=>"Judges active for this year", "query"=> - "SELECT firstname, lastname, email FROM users LEFT JOIN users_judge ON users_judge.users_id=users.id WHERE types LIKE '%judge%' AND year='{$config['FAIRYEAR']}' AND deleted='no' AND users_judge.judge_active='yes' ORDER BY email"), + "judges_active_thisconference"=>array("name"=>"Judges active for this conference", "query"=> + "SELECT firstname, lastname, email FROM users + LEFT JOIN user_roles ON user_roles.users_id = users.id + JOIN roles ON roles.id = user_roles.roles_id + WHERE roles.type='judge' AND conferences_id={$conference['id']} AND deleted='no' AND user_roles.active='yes' ORDER BY email"), - "judges_inactive"=>array("name"=>"Judges not active for this year", "query"=> - "SELECT firstname, lastname, email, judge_active, deleted, MAX(year) - FROM users LEFT JOIN users_judge ON users_judge.users_id=users.id - WHERE types LIKE '%judge%' - GROUP BY uid HAVING deleted='no' AND ((max(year)='{$config['FAIRYEAR']}' AND judge_active='no') OR max(year)<'{$config['FAIRYEAR']}') - ORDER BY email"), + "judges_inactive_thisconference"=>array("name"=>"Judges in the conference that are not active", "query"=> + "SELECT firstname, lastname, email FROM users + LEFT JOIN user_roles ON user_roles.users_id = users.id + JOIN roles ON roles.id = user_roles.roles_id + WHERE roles.type='judge' AND conferences_id={$conference['id']} AND deleted='no' AND user_roles.active='no' ORDER BY email"), - "judges_active_complete_thisyear"=>array("name"=>"Judges active for this year and complete", "query"=> - "SELECT firstname, lastname, email FROM users LEFT JOIN users_judge ON users_judge.users_id=users.id WHERE types LIKE '%judge%' AND year='{$config['FAIRYEAR']}' AND users_judge.judge_complete='yes' AND deleted='no' AND users_judge.judge_active='yes' ORDER BY email"), + "judges_inactive_allconferences"=>array("name"=>"Judges inactive for any conference", "query"=> + "SELECT firstname, lastname, email FROM users + LEFT JOIN user_roles ON user_roles.users_id = users.id + JOIN roles ON roles.id = user_roles.roles_id + WHERE roles.type='judge' AND deleted='no' AND user_roles.active='no' ORDER BY email"), - "judges_active_incomplete_thisyear"=>array("name"=>"Judges active for this year but not complete", "query"=> - "SELECT firstname, lastname, email FROM users LEFT JOIN users_judge ON users_judge.users_id=users.id WHERE types LIKE '%judge%' AND year='{$config['FAIRYEAR']}' AND users_judge.judge_complete='no' AND deleted='no' AND users_judge.judge_active='yes' ORDER BY email"), + "judges_active_complete_thisconference"=>array("name"=>"Judges active for this conference and complete", "query"=> + "SELECT firstname, lastname, email FROM users + LEFT JOIN user_roles ON user_roles.users_id = users.id + JOIN roles ON roles.id = user_roles.id + WHERE roles.type = 'judge' AND conferences_id = {$conference['id']} + AND user_roles.complete='yes' + AND deleted='no' + AND user_roles.active='yes' + ORDER BY email"), - "participants_complete_thisyear"=>array("name"=>"Participants complete this year","query"=> - "SELECT firstname, lastname, students.email FROM students,registrations WHERE students.registrations_id=registrations.id AND registrations.year='".$config['FAIRYEAR']."' AND ( registrations.status='complete' OR registrations.status='paymentpending') ORDER BY students.email"), + "judges_active_incomplete_thisconference"=>array("name"=>"Judges active for this conference but not complete", "query"=> + "SELECT firstname, lastname, email FROM users + LEFT JOIN user_roles ON user_roles.users_id = users.id + JOIN roles ON roles.id = user_roles.id + WHERE roles.type = 'judge' AND conferences_id = {$conference['id']} + AND user_roles.complete='no' + AND deleted='no' + AND user_roles.active='yes' + ORDER BY email"), - "participants_complete_paymentpending_thisyear"=>array("name"=>"Participants complete this year but payment pending","query"=> - "SELECT firstname, lastname, students.email FROM students,registrations WHERE students.registrations_id=registrations.id AND registrations.year='".$config['FAIRYEAR']."' AND registrations.status!='complete' AND registrations.status='paymentpending' ORDER BY students.email"), + "participants_complete_thisconference"=>array("name"=>"Participants complete for this conference","query"=> + "SELECT firstname, lastname, students.email FROM students,registrations WHERE students.registrations_id=registrations.id AND registrations.conferences_id='".$conference['id']."' AND ( registrations.status='complete' OR registrations.status='paymentpending') ORDER BY students.email"), - "participants_notcomplete_thisyear"=>array("name"=>"Participants not complete this year","query"=> - "SELECT firstname, lastname, students.email FROM students,registrations WHERE students.registrations_id=registrations.id AND registrations.year='".$config['FAIRYEAR']."' AND registrations.status!='complete' AND registrations.status!='new' ORDER BY students.email"), + "participants_complete_paymentpending_thisconference"=>array("name"=>"Participants complete for this conference but payment pending","query"=> + "SELECT firstname, lastname, students.email FROM students,registrations WHERE students.registrations_id=registrations.id AND registrations.conferences_id='".$conference['id']."' AND registrations.status!='complete' AND registrations.status='paymentpending' ORDER BY students.email"), + "participants_notcomplete_thisconference"=>array("name"=>"Participants not complete for this conference","query"=> + "SELECT firstname, lastname, students.email FROM students,registrations WHERE students.registrations_id=registrations.id AND registrations.conferences_id='".$conference['id']."' AND registrations.status!='complete' AND registrations.status!='new' ORDER BY students.email"), +/* // FIXME - not sure if this has a sensible equivalent when dealing with "conferences" rather than fair years "participants_complete_lastyear"=>array("name"=>"Participants complete last year","query"=> "SELECT firstname, lastname, students.email FROM students,registrations WHERE students.registrations_id=registrations.id AND registrations.year='".($config['FAIRYEAR']-1)."' AND ( registrations.status='complete' OR registrations.status='paymentpending') ORDER BY students.email"), - - "participants_complete_allyears"=>array("name"=>"Participants complete all years","query"=> +*/ + "participants_complete_allconferences"=>array("name"=>"Participants complete for all conferences","query"=> "SELECT DISTINCT firstname, lastname, students.email FROM students,registrations WHERE students.registrations_id=registrations.id AND ( registrations.status='complete' OR registrations.status='paymentpending') ORDER BY students.email"), - "participants_cwsf_thisyear"=>array("name"=>"CWSF Winners for this year","query"=>" + "participants_cwsf_thisconference"=>array("name"=>"CWSF Winners for this conference","query"=>" SELECT DISTINCT students.firstname, students.lastname, students.email FROM award_awards JOIN award_prizes ON award_prizes.award_awards_id=award_awards.id @@ -53,14 +81,14 @@ JOIN projects ON winners.projects_id=projects.id JOIN registrations ON projects.registrations_id=registrations.id JOIN students ON students.registrations_id=registrations.id - WHERE award_awards.cwsfaward='1' AND winners.year='".$config['FAIRYEAR']."' + WHERE award_awards.cwsfaward='1' AND winners.conferences_id='".$conference['id']."' ORDER BY students.email"), "sponsors"=>array("name"=>"Organization sponsors","query"=> "SELECT id, organization, email FROM sponsors WHERE email!='' ORDER BY email"), "sponsors_primarycontacts"=>array("name"=>"Organization sponsors (primary contacts)","query"=> - "SELECT uid, MAX(users.year) AS year, sponsors.organization, users.firstname, users.lastname, users.email, deleted, users_sponsor.primary + "SELECT uid, MAX(users.conferences_id) AS conferences_id, sponsors.organization, users.firstname, users.lastname, users.email, deleted, users_sponsor.primary FROM sponsors, users_sponsor, users @@ -73,20 +101,18 @@ HAVING deleted='no' AND users_sponsor.primary='yes' ORDER BY users.email "), - "sponsors_allcontacts"=>array("name"=>"Organization sponsors (all contacts)","query"=> - "SELECT DISTINCT(users.email), sponsors.organization, users.firstname, users.lastname, users.email - FROM sponsors, - users_sponsor, - users - WHERE - users.id=users_sponsor.users_id - AND users_sponsor.sponsors_id=sponsors.id - AND users.types LIKE '%sponsor%' - AND users.deleted='no' - AND users.email!='' - ORDER BY users.email - "), + "SELECT DISTINCT(users.email), sponsors.organization, users.firstname, users.lastname, users.email + FROM sponsors + JOIN users_sponsor ON users_sponsor.sponsors_id = sponsors.id + JOIN users ON users.id = users_sponsor.users_id + JOIN user_roles ON user_roles.users_id = users.id + JOIN roles ON roles.id = user_roles.roles_id + WHERE + roles.type = 'sponsor' + AND users.deleted='no' + AND users.email!='' + ORDER BY users.email"), /* "special_award_sponsors_unconfirmed"=>array("name"=>"Special award sponsors (unconfirmed only)","query"=> @@ -97,21 +123,37 @@ */ "school_principals"=>array("name"=>"School principals","query"=> - "SELECT school, principal AS firstname, schoolemail AS email FROM schools WHERE schools.year='".$config['FAIRYEAR']."' AND schoolemail!=''"), + "SELECT school, principal AS firstname, schoolemail AS email FROM schools WHERE schools.conferences_id='".$conference['id']."' AND schoolemail!=''"), "school_scienceheads"=>array("name"=>"School science heads","query"=> - "SELECT school, sciencehead AS firstname, scienceheademail AS email FROM schools WHERE schools.year='".$config['FAIRYEAR']."' AND scienceheademail!=''"), - "school_teachers_thisyear"=>array("name"=>"Teachers (as entered by students) this year","query"=> - "SELECT DISTINCT(teacheremail) AS email, teachername AS firstname FROM students WHERE year='".$config['FAIRYEAR']."' AND teacheremail!=''"), + "SELECT school, sciencehead AS firstname, scienceheademail AS email FROM schools WHERE schools.conferences_id='".$conference['id']."' AND scienceheademail!=''"), + "school_teachers_thisconference"=>array("name"=>"Teachers (as entered by students) for this conference","query"=> + "SELECT DISTINCT(teacheremail) AS email, teachername AS firstname FROM students WHERE conferences_id='".$conference['id']."' AND teacheremail!=''"), +/* // FIXME again, not sure that this has a sensible equivalent with conferences "school_teachers_lastyear"=>array("name"=>"Teachers (as entered by students) last year","query"=> "SELECT DISTINCT(teacheremail) AS email, teachername AS firstname FROM students WHERE year='".($config['FAIRYEAR']-1)."' AND teacheremail!=''"), - "school_teachers_allyears"=>array("name"=>"Teachers (as entered by students) all years","query"=> +*/ + "school_teachers_allconferences"=>array("name"=>"Teachers (as entered by students) all conferences","query"=> "SELECT DISTINCT(teacheremail) AS email, teachername AS firstname FROM students WHERE teacheremail!=''"), /* Volunteers */ - "volunteers_active_complete_thisyear"=>array("name"=>"Volunteers active for this year and complete", "query"=> - "SELECT id, firstname, lastname, email FROM users LEFT JOIN users_volunteer ON users_volunteer.users_id=users.id WHERE users.year='{$config['FAIRYEAR']}' AND users_volunteer.volunteer_complete='yes' AND users_volunteer.volunteer_active='yes' AND users.deleted='no' AND types LIKE '%volunteer%' ORDER BY email"), + "volunteers_active_complete_thisconference"=>array("name"=>"Volunteers active for this conference and complete", "query"=> + "SELECT users.id, firstname, lastname, email + FROM users LEFT JOIN user_roles ON user_roles.users_id = users.id JOIN roles ON roles.id = user_roles.roles_id + WHERE users.conferences_id = '".$conference['id']."' + AND roles.type='volunteer' + AND user_roles.complete='yes' + AND user_roles.active='yes' + AND users.deleted='no' + ORDER BY email"), - "volunteers_active_incomplete_thisyear"=>array("name"=>"Volunteers active for this year but not complete", "query"=> - "SELECT id, firstname, lastname, email FROM users LEFT JOIN users_volunteer ON users_volunteer.users_id=users.id WHERE users.year='{$config['FAIRYEAR']}' AND users_volunteer.volunteer_complete='no' AND users_volunteer.volunteer_active='yes' AND users.deleted='no' AND users.types LIKE '%volunteer%' ORDER BY email"), + "volunteers_active_incomplete_thisconference"=>array("name"=>"Volunteers active for this conference but not complete", "query"=> + "SELECT users.id, firstname, lastname, email + FROM users LEFT JOIN user_roles ON user_roles.users_id = users.id JOIN roles ON roles.id = user_roles.roles_id + WHERE users.conferences_id = '".$conference['id']."' + AND roles.type='volunteer' + AND user_roles.complete='no' + AND user_roles.active='yes' + AND users.deleted='no' + ORDER BY email"), ); ?> diff --git a/user_main.php b/user_main.php index 3d135c7..b049a0b 100644 --- a/user_main.php +++ b/user_main.php @@ -25,7 +25,6 @@ require_once("common.inc.php"); require_once("user.inc.php"); user_auth_required(); -echo $config['dates']['fairdate'] . "