WordPress.org

Plugin Directory


Ignore:
Timestamp:
01/03/18 22:21:26 (3 weeks ago)
Author:
andy_moyle
Message:

Individual attendance

Location:
church-admin/trunk/includes
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • church-admin/trunk/includes/cronbackup.php

    r1789768 r1796732  
    11<?php 
    2  require_once("/Applications/MAMP/htdocs/thegatewaychurch/wp-load.php"); 
    3 require_once(  "/Applications/MAMP/htdocs/thegatewaychurch/wp-content/plugins/church-admin/index.php"); 
     2 require_once("/home/together/public_html/thegatewaychurch/wp-load.php"); 
     3require_once(  "/home/together/public_html/thegatewaychurch/wp-content/plugins/church-admin/index.php"); 
    44church_admin_backup(); 
    55exit(); 
  • church-admin/trunk/includes/cronemail.php

    r1789768 r1796732  
    11<?php 
    2  require_once("/Applications/MAMP/htdocs/thegatewaychurch/wp-load.php"); 
    3 require_once(  "/Applications/MAMP/htdocs/thegatewaychurch/wp-content/plugins/church-admin/index.php"); 
     2 require_once("/home/together/public_html/thegatewaychurch/wp-load.php"); 
     3require_once(  "/home/together/public_html/thegatewaychurch/wp-content/plugins/church-admin/index.php"); 
    44church_admin_bulk_email(); 
    55exit(); 
  • church-admin/trunk/includes/directory.php

    r1789642 r1796732  
    18221822        if(!empty($smallgroups)) 
    18231823        { 
    1824             if(!empty($data))$dataSmallGroups=church_admin_get_people_meta($data->people_id,'smallgroup'); 
     1824            if(!empty($data->people_id))$dataSmallGroups=church_admin_get_people_meta($data->people_id,'smallgroup'); 
    18251825            foreach($smallgroups AS $smallgroup) 
    18261826            { 
     
    18401840        { 
    18411841            $out.='<tr><th scope="row">'.__('Classes','church-admin').'</th><td><span style="display:inline-block">'; 
    1842             if(!empty($data))$dataClasses=church_admin_get_people_meta($data->people_id,'classes'); 
     1842            if(!empty($data->people_id))$dataClasses=church_admin_get_people_meta($data->people_id,'classes'); 
    18431843     
    18441844            foreach($classes AS $class) 
     
    19791979        foreach($gender AS $key=>$value) 
    19801980        {    
    1981             if(!empty($data)&&$data->sex == $key) 
     1981            if(!empty($data->sex)&&$data->sex == $key) 
    19821982                { 
    19831983                    $first= '<option value="'.esc_html($key).'" selected="selected">'.esc_html($value).'</option>'; 
  • church-admin/trunk/includes/individual_attendance.php

    r1749316 r1796732  
    11<?php 
    2 function church_admin_individual_attendance() 
    3 { 
     2 
    43/** 
    54 * 
     
    98 * @param       null 
    109 * @return      html 
    11  * @version     0.1 
    12  * @date        2015-02-01 
     10 * @version     1.2450 
     11 * @date        2017-01-03 
    1312 */ 
    14  
     13function church_admin_individual_attendance() 
     14{ 
     15        global $wpdb,$wp_locale; 
     16        $wpdb->show_errors; 
     17        $out='<h1>'.__('Individual Attendance','church-admin').'</h1>'; 
     18        $out.='<h3 class="toggle" id="attendance-download">'.__('CSV download (Click to toggle)','church-admin').'</h3>'; 
     19        $out.='<div class="attendance-download" '; 
     20        if(empty($_POST['ind_att_csv']))$out.='style="display:none" '; 
     21        $out.='>'; 
     22        $out.=church_admin_individual_attendance_csv(); 
     23        $out.='</div>'; 
     24        $out.='<h3 class="toggle" id="attendance">'.__('Add Individual Attendance (Click to toggle)','church-admin').'</h3>'; 
     25        $out.='<div class="attendance"'; 
     26        if(empty($_GET['meeting']))$out.=' style="display:none" '; 
     27        $out.='>'; 
     28        /*************************************************************** 
     29        * 
     30        *   Option to choose which type of attendance  
     31        * 
     32        ***************************************************************/ 
     33        if(empty($_GET['meeting'])) 
     34        { 
     35             
     36            $services=$wpdb->get_results('SELECT * FROM '.CA_SER_TBL); 
     37            if(!empty($services)) 
     38            {    
     39                $option=''; 
     40                foreach($services AS $service) 
     41                { 
     42                    $option.='<option value="service-'.$service->service_id.'">'.$service->service_name.' on '.$wp_locale->get_weekday($service->service_day).' at '.$service->service_time.'</option>'; 
     43                } 
     44            } 
     45            $smallgroups=$wpdb->get_results('SELECT * FROM '.CA_SMG_TBL); 
     46            if(!empty($smallgroups)) 
     47            { 
     48                foreach($smallgroups AS $smallgroup)$option.='<option class="smallgroup" value="smallgroup-'.intval($smallgroup->id).'">Small Group - '.esc_html($smallgroup->group_name).'</option>'; 
     49            } 
     50             
     51            $out.='<form action="'.admin_url().'" method="GET"><table class="form-table">'; 
     52            $out.='<input type="hidden" name="page" value="church_admin/index.php"/><input type="hidden" name="action" value="individual_attendance"/><input type="hidden" name="tab" value="services"/>'; 
     53            $out.='<tr><th scope="row">'.__('Which Meeting','church-admin').'</th><td><select name="meeting">'.$option.'</select></td></tr>'; 
     54            $member_type=church_admin_member_type_array(); 
     55            $first=$option='';   
     56            $out.='<tr><th scope="row">'.__('Member type','church-admin').'</th><td>'; 
     57            foreach($member_type AS $id=>$type) 
     58            { 
     59                 
     60                $out.='<input type="checkbox" name="member_type_id[]" value="'.$id.'">'.$type.'<br/>'; 
     61                 
     62            } 
     63            $out.='</td></tr>'; 
     64            $out.='<tr><td>&nbsp;</td><td><input type="submit"  class="button-primary" value="'.__('Choose','church-admin').'"/></td></tr>'; 
     65            $out.='</table>';    
     66        } 
     67        else 
     68        { 
     69         
     70            $meeting=explode("-",$_GET['meeting']); 
     71             
     72            if(!empty($_POST['save_ind_att'])) 
     73            { 
     74                /*************************************************************** 
     75                * 
     76                *   Process  
     77                * 
     78                ***************************************************************/ 
     79                $adult=$child=0; 
     80                $date=esc_sql(stripslashes($_POST['date'])); 
     81                //populate individual attendance table 
     82                 
     83                $check=$wpdb->get_var('SELECT COUNT(people_id) FROM '.CA_IND_TBL.' WHERE `date`="'.$date.'" AND meeting_type="'.esc_sql($meeting[0]).'" AND meeting_id="'.esc_sql($meeting[1]).'"'); 
     84                if(!empty($check)) 
     85                { 
     86                    $out.='<div class="notice notice-inline notice-warning"><h2>'.__('Attendance already saved','church-admin').'</h2></div>'; 
     87                } 
     88                else 
     89                { 
     90                    $values=array(); 
     91                     
     92                    foreach($_POST['people_id'] AS $key=>$people_id) 
     93                    { 
     94                     
     95                        $values[]='("'.$date.'","'.intval($people_id).'","'.esc_sql($meeting[0]).'","'.esc_sql($meeting[1]).'")'; 
     96                        //find people type so that main attendance can be populated... 
     97                        $sql='SELECT people_type_id FROM '.CA_PEO_TBL.' WHERE people_id="'.intval($people_id).'"'; 
     98                        $person_type=$wpdb->get_var($sql); 
     99                 
     100                        switch($person_type) 
     101                        { 
     102                            case 1:$adult++;break; 
     103                            case 2:$child++;break; 
     104                            case 3:$child++;break; 
     105                        } 
     106                    } 
     107                    $adult=+intval($_POST['visitor-adults']); 
     108                    $child=+intval($_POST['visitor-children']); 
     109                    $sql='INSERT INTO '.CA_IND_TBL.' (`date`,people_id,meeting_type,meeting_id) VALUES '.implode(",",$values); 
     110                    $wpdb->query($sql); 
     111                     
     112                    //process main attendance table 
     113                    $sql='INSERT INTO '.CA_ATT_TBL .' (`date`,adults,children,service_id,mtg_type)VALUES("'.$date.'","'.$adult.'","'.$child.'","'.$meeting[1].'","service")'; 
     114                    if($meeting[0]=='service')$wpdb->query($sql); 
     115                    $out.='<div class="notice notice-inline notice-success"><h2>'.__('Attendance saved','church-admin').'</h2></div>';               
     116                } 
     117            } 
     118            else 
     119            { 
     120                /*************************************************************** 
     121                * 
     122                *   Form  
     123                * 
     124                ***************************************************************/ 
     125                 
     126                //People Query 
     127                 
     128                switch($meeting[0]) 
     129                { 
     130                    case 'smallgroup': 
     131                        $sql='SELECT a.* FROM '.CA_PEO_TBL.' a '.CA_MET_TBL.' b WHERE a.people_id=b.people_id AND b.meta_type="smallgroup" AND b.ID="'.intval($meeting[1]).'"'; 
     132                        $meeting_type=__('Small Group','church-admin'); 
     133                        $which=$wpdb->get_var('SELECT group_name FROM '.CA_SMG_TBL.' WHERE id="'.intval($meeting[1]).'"'); 
     134                    break; 
     135                    default: 
     136                    case 'service': 
     137                        $sql='SELECT * FROM '.CA_PEO_TBL.' a, '.CA_SER_TBL.' b WHERE a.site_id=b.site_id AND b.service_id="'.intval($meeting[1]).'"'; 
     138                        $meeting_type=__('Service','church-admin'); 
     139                        $which=$wpdb->get_var('SELECT service_name FROM '.CA_SER_TBL.' WHERE service_id="'.intval($meeting[1]).'"'); 
     140                    break; 
     141                } 
     142                //add in member types 
     143                $membSQL=$membsql=''; 
     144                if(!empty($_GET['member_type_id']))foreach($_GET['member_type_id'] AS $key=>$value){if(ctype_digit($value))  $membsql[]='a.member_type_id='.$value;} 
     145                if(!empty($membsql)) {$membSQL=' AND ('.implode(' || ',$membsql).')';} 
     146                //get relevant people 
     147                $query=$sql.$membSQL.' ORDER BY last_name, first_name'; 
     148                 
     149                $people=$wpdb->get_results($query); 
     150                             
     151                if(!empty($people)) 
     152                { 
     153                    $out.= '<h3>'.$meeting_type.' - '.esc_html($which).'</h3>'; 
     154                    $out.='<form action="" method="POST">'; 
     155                    $date=date('Y-m-d'); 
     156                    $out.='<p><label>'.__('Date','church-admin').':</label>'.church_admin_date_picker($date,'date',FALSE,'2011',date('Y',time()+60*60*24*365*10),'date','date').'</p>'; 
     157                    $out.='<table class="wp-list-table striped"><thead><tr><th><input type="checkbox" class="all-people"/> '.__('Attended?','church-admin').'</th><th>'.__('Photo','church-admin').'</th><th>'.__('Name','church-admin').'</th><th>'.__('Address','church-admin').'</th></tr></thead>'; 
     158                     
     159                    foreach($people AS $person) 
     160                    { 
     161                        $out.='<tr><td><input type="checkbox" name="people_id[]" class="people_id" value="'.intval($person->people_id).'"/></td>'; 
     162                        if(!empty($person->attachment_id)) 
     163                        {//photo available 
     164                            $out.='<td>'. wp_get_attachment_image( $data->attachment_id,'ca-people-thumb',NULL,array('class'=>'alignleft') ).'</td>'; 
     165                        } 
     166                        else $out.='<td><img src="'.plugins_url('/images/default-avatar.jpg',dirname(__FILE__) ).'" width="75" height="75" class="frontend-image current-photo alignleft" alt="'.__('Photo of Person','church-admin').'"  /></td>'; 
     167                        $name=array_filter(array($person->first_name,$person->middle_name,$person->prefix,$person->last_name)); 
     168                        $address=''; 
     169                        $address=$wpdb->get_var('SELECT address FROM '.CA_HOU_TBL.' WHERE household_id="'.intval($person->household_id).'"'); 
     170                        $out.='<td><strong>'.esc_html(implode(" ",$name)).'</td><td>'.esc_html($address).'</td></tr>'; 
     171                    } 
     172                    $out.= '<tr><th scope="row">'.__('How many visiting adults?','church-admin').'</th><td><input type="text" name="visitor-adults" placeholder="0"/></td></tr>'; 
     173                    $out.= '<tr><th scope="row">'.__('How many visiting children?','church-admin').'</th><td><input type="text" name="visitor-children" placeholder="0"/></td></tr>'; 
     174                    $out.='</table><p><input type="hidden" name="save_ind_att" value="yes"/><input type="submit" class="button-primary" value="'.__('Save','church-admin').'"/></p></form>'; 
     175                    $out.='<script type="text/javascript">jQuery(function($){  jQuery(".all-people").click(function(){$(".people_id").not(this).prop("checked", this.checked); });});</script>'; 
     176                } 
     177                else 
     178                { 
     179                    $out.='<p>'.__('No people are registered for that site','church-admin').'</p>'; 
     180                } 
     181            } 
     182             
     183             
     184        } 
     185        $out.='</div>'; 
     186        $out.='<script type="text/javascript">jQuery(function($){  jQuery(".toggle").click(function(){var id=this.id;$("."+id).toggle(); });});</script>'; 
     187        return $out; 
     188} 
     189 
     190 
     191/** 
     192 * 
     193 * Individual attendance csv download 
     194 *  
     195 * @author      Andy Moyle 
     196 * @param       null 
     197 * @return      html 
     198 * @version     1.2450 
     199 * @date        2017-01-03 
     200 */ 
     201 
     202function church_admin_individual_attendance_csv() 
     203{ 
    15204    global $wpdb,$wp_locale; 
    16     echo'<div class="wrap church_admin"><h2>'.__('Individual attendance','church-admin').'</h2>'; 
    17     if (!empty($_POST['save_attendance'])) 
    18     {//process form 
     205    $out=''; 
    19206     
    20         $meeting=explode('-',sanitize_text_field($_POST['meeting'])); 
    21         $sqlsafe=array(); 
    22         $adult=$child=0; 
    23         foreach($_POST AS $key=>$value)$sqlsafe[$key]=esc_sql(stripslashes_deep($value)); 
    24         foreach($sqlsafe['people_id'] AS $key=>$person) 
    25         { 
    26             $id=$wpdb->get_var('SELECT attendance_id FROM '.CA_IND_TBL.' WHERE `date`="'.$sqlsafe['date'].'" AND people_id="'.intval($person).'" AND meeting_type="'.esc_sql($meeting[0]).'" AND meeting_id="'.esc_sql($meeting[1]).'"'); 
    27             if(!$id) 
    28             { 
    29                 $wpdb->query('INSERT INTO '.CA_IND_TBL.' (`date`,people_id,meeting_type,meeting_id)VALUES("'.$sqlsafe['date'].'","'.$person.'","'.esc_sql($meeting[0]).'","'.esc_sql($meeting[1]).'")'); 
    30                 $sql='SELECT people_type_id FROM '.CA_PEO_TBL.' WHERE people_id="'.$person.'"'; 
    31                 $person_type=$wpdb->get_var($sql); 
    32                  
    33                 switch($person_type) 
    34                 { 
    35                     case 1:$adult++;break; 
    36                     case 2:$child++;break; 
    37                     case 3:$child++;break; 
    38                 } 
    39             } 
    40              
    41         } 
    42         if(!empty($_POST['visitors'])) 
    43         { 
    44             $names=explode(', ',$_POST['visitors']); 
    45             foreach($names AS $name) 
    46             { 
    47                 $people_id=church_admin_get_user_id($name); 
    48                 if(empty($people_id)) 
    49                 {//create household 
    50                     $wpdb->query('INSERT INTO '.CA_HOU_TBL.'(address)("")'); 
    51                     $household_id=$wpdb->insert_id(); 
    52                  
    53                 } 
    54             } 
    55          
    56         } 
    57         $sql='INSERT INTO '.CA_ATT_TBL .' (`date`,adults,children,service_id,mtg_type)VALUES("'.$sqlsafe['date'].'","'.$adult.'","'.$child.'","'.$meeting[1].'","service")'; 
    58          
    59         if($meeting[0]=='service')$wpdb->query($sql); 
    60         echo'<div class="notice notice-success inline"><p>'.__('Attendance Updated','church-admin').'</p></div>'; 
    61     }//end process form 
    62     //form 
    63          
    64         $option=''; 
    65          
     207     
    66208        $services=$wpdb->get_results('SELECT * FROM '.CA_SER_TBL); 
    67209        if(!empty($services)) 
    68         { 
    69          
     210        {    
     211            $option=''; 
    70212            foreach($services AS $service) 
    71213            { 
    72  
    73214                $option.='<option value="service-'.$service->service_id.'">'.$service->service_name.' on '.$wp_locale->get_weekday($service->service_day).' at '.$service->service_time.'</option>'; 
    74215            } 
     
    79220            foreach($smallgroups AS $smallgroup)$option.='<option class="smallgroup" value="smallgroup-'.intval($smallgroup->id).'">Small Group - '.esc_html($smallgroup->group_name).'</option>'; 
    80221        } 
    81         if(!empty($option)) 
    82         { 
    83             echo'<form action="" method="POST">'; 
    84             $date=date('Y-m-d'); 
    85          echo'<p><label>'.__('Date','church-admin').':</label>'.church_admin_date_picker($date,'date',FALSE,'2011',date('Y',time()+60*60*24*365*10),'date','date').'</p>'; 
    86             echo'<p><label>'.__('Which Meeting','church-admin').'</label><select name="meeting">'; 
    87             echo $option.'</select></p>'; 
    88         } 
    89         $people=$wpdb->get_results('SELECT CONCAT_WS(" ", first_name,prefix,last_name) AS name, people_id FROM '.CA_PEO_TBL.' ORDER BY last_name,first_name'); 
    90         if(!empty($people)) 
    91         { 
    92             foreach($people AS $person) 
    93             { 
    94                 echo'<p><label>'.esc_html($person->name).'</label><input type="checkbox" name="people_id[]" value="'.intval($person->people_id).'"/></p>'; 
    95             } 
    96         } 
    97         echo'<p><label>'.__('Comma Separated Visitors','church-admin').'</label><input type="text" name="visitors"/></p>'; 
    98         echo'<p><input type="hidden" name="save_attendance" value="yes"/><input type="submit" value="'.__('Save','church-admin').'"/></p></form>'; 
     222             
     223        $out.='<form action="'.admin_url('admin.php?page=church_admin/index.php&action=individual_attendance&tab=services').'" method="POST"><table class="form-table">'; 
     224        $out.='<tr><th scope="row">'.__('Which Meeting','church-admin').'</th><td><select name="meeting">'.$option.'</select></td></tr>'; 
     225        $member_type=church_admin_member_type_array(); 
     226        $first=$option='';   
     227        $out.='<tr><th scope="row">'.__('Member type','church-admin').'</th><td>'; 
     228        foreach($member_type AS $id=>$type) 
     229        { 
     230            $out.='<input type="checkbox" name="member_type_id[]" value="'.$id.'">'.$type.'<br/>'; 
     231        } 
     232        $out.='</td></tr>'; 
     233        $date=date('Y-m-d'); 
     234        $out.='<tr><th scope="row">'.__('Start Date','church-admin').':</th><td>'.church_admin_date_picker($date,'start_date',FALSE,'2011',date('Y',time()+60*60*24*365*10),'start_date','start_date').'</td></tr>'; 
     235        $out.='<tr><th scope="row">'.__('End Date','church-admin').':</th><td>'.church_admin_date_picker($date,'end_date',FALSE,'2011',date('Y',time()+60*60*24*365*10),'end_date','end_date').'</td></tr>'; 
     236        $out.='<tr><td>&nbsp;</td><td><input type="hidden" name="ind_att_csv" value="yes"/><input type="submit" class="button-primary" value="'.__('Choose','church-admin').'"/></td></tr>'; 
     237        $out.='</table></form>';     
     238         
    99239     
    100  
    101     echo'</div>'; 
     240    return $out; 
     241} 
     242 
     243function church_admin_output_ind_att_csv() 
     244{ 
     245    global $wpdb; 
     246        $meeting=explode("-",$_POST['meeting']); 
     247        $sql='SELECT `date` FROM '.CA_IND_TBL.' WHERE `date`>="'.esc_sql($_POST['start_date']).'" AND meeting_type="'.esc_sql($meeting[0]).'" ORDER BY `date` ASC LIMIT 1'; 
     248        $startdate=$wpdb->get_var($sql); 
     249        $enddate=$wpdb->get_var('SELECT `date` FROM '.CA_IND_TBL.' WHERE `date`<="'.esc_sql($_POST['end_date']).'" AND meeting_type="'.esc_sql($meeting[0]).'" ORDER BY `date` DESC LIMIT 1'); 
     250        $dates=$wpdb->get_results('SELECT `date` FROM '.CA_IND_TBL.' WHERE meeting_type="'.esc_sql($meeting[0]).'" AND `date`>="'.esc_sql($startdate).'" AND `date`<="'.esc_sql($enddate).'" GROUP BY `date`'); 
     251        if(empty($startdate)||empty($enddate)||empty($dates)){$out.='<p>No dates found</p>';} 
     252        else 
     253        { 
     254                 
     255            switch($meeting[0]) 
     256            { 
     257                case 'smallgroup': 
     258                    $sql='SELECT a.* FROM '.CA_PEO_TBL.' a '.CA_MET_TBL.' b WHERE a.people_id=b.people_id AND b.meta_type="smallgroup" AND b.ID="'.intval($meeting[1]).'"'; 
     259                    $meeting_type=__('Small Group','church-admin'); 
     260                    $which=$wpdb->get_var('SELECT group_name FROM '.CA_SMG_TBL.' WHERE id="'.intval($meeting[1]).'"'); 
     261                break; 
     262                default: 
     263                case 'service': 
     264                    $sql='SELECT * FROM '.CA_PEO_TBL.' a, '.CA_SER_TBL.' b WHERE a.site_id=b.site_id AND b.service_id="'.intval($meeting[1]).'"'; 
     265                    $meeting_type=__('Service','church-admin'); 
     266                    $which=$wpdb->get_var('SELECT service_name FROM '.CA_SER_TBL.' WHERE service_id="'.intval($meeting[1]).'"'); 
     267                break; 
     268            } 
     269            //add in member types 
     270            $membSQL=$membsql=''; 
     271            if(!empty($_GET['member_type_id']))foreach($_GET['member_type_id'] AS $key=>$value){if(ctype_digit($value))  $membsql[]='a.member_type_id='.$value;} 
     272            if(!empty($membsql)) {$membSQL=' AND ('.implode(' || ',$membsql).')';} 
     273            //get relevant people 
     274            $query=$sql.$membSQL.' ORDER BY last_name, first_name'; 
     275            $people=$wpdb->get_results($query); 
     276            if(!empty($people)) 
     277            { 
     278                $csvheader=array('"Name"','"Address"','"Cell"','"Phone"'); 
     279                foreach($dates AS $date)$csvheader[]='"'.mysql2date(get_option('date_format'),$date->date).'"'; 
     280                $csv=implode(',',$csvheader)."\r\n";; 
     281                foreach($people AS $person) 
     282                { 
     283                    $name=array_filter(array($person->first_name,$person->middle_name,$person->prefix,$person->last_name)); 
     284                    $household=$wpdb->get_row('SELECT address,phone FROM '.CA_HOU_TBL.' WHERE household_id="'.intval($person->household_id).'"'); 
     285                    $csvline=array('"'.implode(" ",$name).'"'); 
     286                    if(!empty($household->address)){$csvline[]='"'.esc_html($household->address).'"';}else{$csvline[]='" "';} 
     287                    if(!empty($person->mobile)){$csvline[]='"'.esc_html($person->mobile).'"';}else{$csvline[]='" "';} 
     288                    if(!empty($household->phone)){$csvline[]='"'.esc_html($household->phone).'"';}else{$csvline[]='" "';} 
     289                    foreach($dates AS $date) 
     290                    { 
     291                        $attendance=$wpdb->get_var('SELECT attendance_id FROM '.CA_IND_TBL.' WHERE meeting_type="'.esc_sql($meeting[0]).'" AND `date`="'.esc_sql($date->date).'" AND people_id="'.intval($person->people_id).'"'); 
     292                        if(!empty($attendance)){$csvline[]='"x"';}else{$csvline[]='" "';} 
     293                    } 
     294                    $csv.=implode(',',$csvline)."\r\n"; 
     295                     
     296                } 
     297                header('Content-Description: File Transfer'); 
     298                header('Content-Type: application/octet-stream'); 
     299                header('Content-Disposition: attachment; filename="attendance-'.$meeting[0].'.csv"'); 
     300                header('Content-Transfer-Encoding: binary'); 
     301                header('Expires: 0'); 
     302                header('Cache-Control: must-revalidate'); 
     303                header('Pragma: public'); 
     304                header('Content-Disposition: attachment; filename="attendance-'.$meeting[0].'.csv"'); 
     305                echo $csv; 
     306                exit(); 
     307            } 
     308} 
    102309} 
    103310?> 
Note: See TracChangeset for help on using the changeset viewer.