WordPress.org

Plugin Directory

Changeset 1796732


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

Individual attendance

Location:
church-admin/trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • church-admin/trunk/app/app-admin.php

    r1789179 r1796732  
    6262{ 
    6363        echo'<h2>'.__('Sign up for the app','church-admin').'</h2>'; 
    64         echo'<p>'.__('The demo on the left gives you an idea of what the app can do. If it will be useful for you, then do register...','church-admin').'</p>'; 
    65         echo'<p>'.__('The church admin app costs £7.50 ($10) per month for your church and is free for users to download and use on their iOS or Android devices','church-admin').'</p>'; 
     64        echo'<p>'.__('The demo on the left gives you an idea of what the app can do. Type "The Gateway Church" into the login screen to get some idea of what it can do! If it will be useful for you, then do subscribe with our free 1 month trial (£7.50pm after 1 month, cancel anytime)','church-admin').'</p>'; 
     65        echo'<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"><input type="hidden" name="cmd" value="_s-xclick"><input type="hidden" name="hosted_button_id" value="T34GDC3DXFDT6"> 
     66<table><tr><td><input type="hidden" name="on0" value="Your Site URL">Your Site URL</td></tr><tr><td><input type="text" name="os0" style="width:400px" maxlength="500" value="'.site_url().'"></td></tr> 
     67</table><input type="image" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online!"> 
     68<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1"></form>'; 
     69 
     70         
     71        /*echo'<p>'.__('The church admin app costs £7.50 ($10) per month for your church and is free for users to download and use on their iOS or Android devices','church-admin').'</p>'; 
    6672        echo'<p>'.__('Just fill out the form below to begin the process and on the next screen start the Paypal subscription using your credit/debit card','church-admin').'</p>'; 
    6773         
     
    109115}); 
    110116    </script>'; 
     117    */ 
    111118} 
    112119 
     
    13041311            foreach($mt AS $key=>$type){$mtsql[]='a.member_type_id='.intval($type);} 
    13051312            //adjust member_type_id section 
    1306             $sql='SELECT a.*,b.address,b.phone FROM '.CA_PEO_TBL.' a LEFT JOIN '.CA_HOU_TBL.' b ON b.household_id=a.household_id WHERE a.household_id=b.household_id AND ('.implode('||',$mtsql).')AND  (CONCAT_WS(" ",a.first_name,a.last_name) LIKE("%'.$s.'%")||CONCAT_WS(" ",a.first_name,a.middle_name,a.last_name) LIKE("%'.$s.'%")||a.nickname LIKE("%'.$s.'%")||a.first_name LIKE("%'.$s.'%")||a.middle_name LIKE("%'.$s.'%")||a.last_name LIKE("%'.$s.'%")||a.email LIKE("%'.$s.'%")||a.mobile LIKE("%'.$s.'%")||b.address LIKE("%'.$s.'%")||b.phone LIKE("%'.$s.'%")) ORDER BY a.last_name,a.people_order,a.first_name'; 
     1313            $sql='SELECT a.*,b.address,b.phone FROM '.CA_PEO_TBL.' a LEFT JOIN '.CA_HOU_TBL.' b ON b.household_id=a.household_id WHERE a.household_id=b.household_id AND ('.implode('||',$mtsql).')AND  (CONCAT_WS(" ",a.first_name,a.last_name) LIKE("%'.$s.'%")||CONCAT_WS(" ",a.first_name,a.middle_name,a.last_name) LIKE("%'.$s.'%")||a.nickname LIKE("%'.$s.'%")||a.first_name LIKE("%'.$s.'%")||a.middle_name LIKE("%'.$s.'%")||a.last_name LIKE("%'.$s.'%")||a.email LIKE("%'.$s.'%")||a.mobile LIKE("%'.$s.'%")||b.address LIKE("%'.$s.'%")||b.phone LIKE("%'.$s.'%")) AND b.privacy=0 ORDER BY a.last_name,a.people_order,a.first_name'; 
    13071314         
    13081315            $results=$wpdb->get_results($sql); 
  • church-admin/trunk/display/classes.php

    r1789768 r1796732  
    1616            $out.=church_admin_display_class($row->class_id); 
    1717        } 
     18        $out.='<script type="text/javascript">jQuery(function($){   
     19         
     20        $(".class-toggle").click(function(){ 
     21                var id=this.id; 
     22                console.log(id); 
     23                $("."+id).toggle();  
     24            }); 
     25         
     26        });</script>'; 
    1827    }//there are classes 
    1928    else 
     
    3847    if(!empty($row)) 
    3948    {        
    40             $out.='<h2>'.esc_html($row->name).'</h2>'; 
     49            $out.='<h2 class="class-toggle" id="class-'.intval($class_id).'">'.esc_html($row->name).'('.__('Click to toggle','church-admin').')</h2>'; 
     50            $out.='<div class="class-'.intval($class_id).'" style="display:none">'; 
    4151            if(!empty($row->description)) 
    4252            { 
     
    4959            if(!is_user_logged_in()) 
    5060            { 
    51                 $out.='<div class="login"><h3>'.__('Please login to book in yourself or check in attendees','church-admin').'</h3>'.wp_login_form(array('echo'=>FALSE)).'</div>'; 
     61                $out.='<div class="login"><h3>'.__('Please login to book in yourself or check in attendees','church-admin').'</h3>'.wp_login_form(array('echo'=>FALSE,'form_id'=> 'login'.$class_id, 
     62    'id_username'    => 'user_login'.$class_id, 
     63    'id_password'    => 'user_pass'.$class_id, 
     64    'id_remember'    => 'rememberme'.$class_id, 
     65    'id_submit'      => 'wp-submit'.$class_id)).'</div>'; 
    5266            } 
    5367            else 
     
    7084                    if(!empty($_POST['people_id'])) 
    7185                    { 
    72                         $adults=$child=0; 
     86                        $adult=$child=0; 
    7387                        foreach($_POST['people_id'] AS $key=>$people_id) 
    7488                        { 
    75                             $wpdb->query('INSERT INTO '.CA_IND_TBL.' (`date`,people_id,meeting_type,meeting_id) VALUES ("'.esc_sql($_POST['class_date']).'","'.intval($people_id).'","class","'.intval($_POST['class_id']).'")'); 
    76                             //check people type 
    77                             $sql='SELECT people_type_id FROM '.CA_PEO_TBL.' WHERE people_id="'.intval($people_id).'"'; 
    78                             $person_type=$wpdb->get_var($sql); 
    79                             switch($person_type) 
     89                            $check=$wpdb->get_var('SELECT attendance_id FROM '.CA_IND_TBL.' WHERE `date`="'.esc_sql($_POST['class_date']).'" AND people_id="'.intval($people_id).'" AND meeting_type="class" AND meeting_id="'.intval($_POST['class_id']).'"' ); 
     90                             
     91                            if(empty($check)) 
    8092                            { 
    81                                 case 1:$adult++;break; 
    82                                 case 2:$child++;break; 
    83                                 case 3:$child++;break; 
     93                                $wpdb->query('INSERT INTO '.CA_IND_TBL.' (`date`,people_id,meeting_type,meeting_id) VALUES ("'.esc_sql($_POST['class_date']).'","'.intval($people_id).'","class","'.intval($_POST['class_id']).'")'); 
     94                                //check people type 
     95                                $sql='SELECT people_type_id FROM '.CA_PEO_TBL.' WHERE people_id="'.intval($people_id).'"'; 
     96                                $person_type=$wpdb->get_var($sql); 
     97                                switch($person_type) 
     98                                { 
     99                                    case 1:$adult++;break; 
     100                                    case 2:$child++;break; 
     101                                    case 3:$child++;break; 
     102                                } 
    84103                            } 
    85104                        } 
    86105                         
    87                         $sql='INSERT INTO '.CA_ATT_TBL .' (`date`,adults,children,service_id,mtg_type) VALUES ("'.esc_sql($_POST['class_date']).'","'.$adult.'","'.$child.'","'.intval($_POST['class_id']).'","class")'; 
    88                         $wpdb->query($sql); 
     106                        if(empty($check)) 
     107                        { 
     108                            $sql='INSERT INTO '.CA_ATT_TBL .' (`date`,adults,children,service_id,mtg_type) VALUES ("'.esc_sql($_POST['class_date']).'","'.$adult.'","'.$child.'","'.intval($_POST['class_id']).'","class")'; 
     109                            $wpdb->query($sql); 
     110                        } 
    89111                    } 
    90112                    $out.='<div class="notice notice-sucess inline">'.__('Class Checked in','church-admin').'</div>'; 
     
    94116                    foreach($_POST['people_id'] AS $key=>$people_id) 
    95117                    { 
    96                         church_admin_update_people_meta(intval($_POST['class_id']),$people_id,'class'); 
     118                        church_admin_update_people_meta(intval($_POST['class_id']),intval($people_id),'class'); 
    97119                    } 
    98120                    $out.='<div class="notice notice-sucess inline">'.__('Class Booked','church-admin').'</div>'; 
     
    161183                        } 
    162184 
    163                  
     185                         
    164186                    } 
     187                     
    165188                }//show data 
     189 
    166190            }//logged in 
     191                            $out.='</div>'; 
     192                         
    167193    } 
    168194    else 
  • 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?> 
  • church-admin/trunk/index.php

    r1793902 r1796732  
    55Plugin URI: http://www.churchadminplugin.com/ 
    66Description: A  admin system with address book, small groups, rotas, bulk email  and sms 
    7 Version: 1.2430 
     7Version: 1.2450 
    88Author: Andy Moyle 
    99Text Domain: church-admin 
     
    5252if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly 
    5353 
    54     $church_admin_version = '1.2430'; 
     54    $church_admin_version = '1.2450'; 
    5555    $people_type=get_option('church_admin_people_type'); 
    5656     
     
    123123        wp_redirect( $url ); 
    124124    } 
    125      
     125    if(!empty($_POST['ind_att_csv'])){require_once(plugin_dir_path(__FILE__).'includes/individual_attendance.php');church_admin_output_ind_att_csv();exit();} 
    126126    load_plugin_textdomain( 'church-admin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );  
    127127 
     
    965965* 
    966966**************************************/ 
    967         case 'individual_attendance':require_once(plugin_dir_path(__FILE__).'includes/individual_attendance.php');church_admin_individual_attendance();break; 
     967        case 'individual_attendance':require_once(plugin_dir_path(__FILE__).'includes/individual_attendance.php'); echo church_admin_individual_attendance();break; 
    968968        case 'church_admin_attendance_metrics':require_once(plugin_dir_path(__FILE__).'includes/attendance.php');church_admin_attendance_metrics($service_id);break;    
    969969         
     
    18841884    global $wpdb; 
    18851885     $type=get_post_type( $post ); 
    1886      if($new_status == 'publish' && $old_status != 'publish' && !empty($type) && ($type=='prayer-requests'||$type=='post')) 
     1886     if($new_status == 'publish' && $old_status != 'publish' && !empty($type) && ($type=='prayer-requests'||$type=='post'||$type=='bible-readings')) 
    18871887     { 
    1888         church_admin_debug('prayer request published'); 
     1888        church_admin_debug('prayer request published -'.$type); 
    18891889        //app  
    18901890        $api_key=get_option('church_admin_app_api_key'); 
    18911891        $app_id=get_option('church_admin_app_id'); 
     1892        switch($type) 
     1893            { 
     1894                case 'prayer-requests':$title=__('New Prayer Request','church-admin');$contactType='prayer';break; 
     1895                case 'bible-readings':$title=__('New Bible Reading','church-admin');$contactType='bible';break; 
     1896                case 'post':$title=__('New Blog Post','church-admin');$contactType='news';break; 
     1897            } 
    18921898        if(!empty($api_key)&&empty($debug)) 
    18931899        {// prep the bundle 
     
    18991905                'Content-Type: application/json' 
    19001906            ); 
    1901             switch($type) 
    1902             { 
    1903                 case 'prayer-requests':$title=__('New Prayer Request','church-admin');$type='prayer';break; 
    1904                 case 'post':$title=__('New Blog Post','church-admin');$type='news';break; 
    1905             } 
     1907             
    19061908            $data=array( 
    19071909         
     
    19171919                    "title"=>"Church App", 
    19181920                    "body"=>$title." - ".$post->post_title, 
    1919                     "type"=>$type 
     1921                    "type"=>$contactType 
    19201922                ), 
    19211923                "to"=>"/topics/church".$app_id, 
     
    19371939            curl_close ( $ch ); 
    19381940        } 
     1941         
    19391942        //prayer chain emails 
    19401943        $post_title = get_the_title( $post->ID ); 
     
    19461949        $content = apply_filters('the_content', $content); 
    19471950        $content = str_replace(']]>', ']]&gt;', $content); 
     1951        if($type=='bible-readings') 
     1952        { 
     1953            $version=get_option('church_admin_bible_version'); 
     1954            $passage=get_post_meta( $post->ID ,'bible-passage',TRUE); 
     1955            church_admin_debug('Passage:'.$passage); 
     1956            $custom_content ='<div class="ca-bible-date">'.get_the_date().'</div>'; 
     1957            if(!empty($passage))$custom_content .= '<p class="ca-bible-reading"><a href="https://www.biblegateway.com/passage/?search='.urlencode($passage).'&version='.urlencode($version).'&interface=print" target="_blank" >'.esc_html($passage).'</a></p>'; 
     1958         
     1959            $content=$custom_content.$content; 
     1960            $email_title=__('New Bible Reading','church-admin').' - '.$passage; 
     1961        } 
     1962         
    19481963        $current_user=wp_get_current_user(); 
    19491964        $user=$wpdb->get_row('SELECT CONCAT_WS(" ",first_name,prefix,last_name) AS name, email FROM '.CA_PEO_TBL.' WHERE user_id="'.intval($current_user->ID).'"'); 
     
    19551970            if(get_option('church_admin_cron')!='immediate') 
    19561971            { 
    1957                 QueueEmail($row->email, $title,'<h2>'.$title.'</h2>'.$content,NULL,$user->name,$user->email,''); 
    1958                 church_admin_debug("Prayer chain to ".$row->email); 
     1972                QueueEmail($row->email, $title,'<h2>'.$email_title.'</h2>'.$content,NULL,$user->name,$user->email,''); 
     1973                church_admin_debug("Prayer chain to ".$row->email.' '.date('Y-m-d h:i:s')); 
    19591974            } 
    19601975            else 
     
    19631978                add_filter( 'wp_mail_from_name', 'church_admin_from_name'); 
    19641979                add_filter( 'wp_mail_from', 'church_admin_from_email'); 
    1965                 if(!wp_mail($row->email,$title,'<h2>'.$title.'</h2>'.$content)){church_admin_debug("Prayer Chain email failure\r\n");}else{church_admin_debug("Prayer chain to ".$row->email);} 
     1980                if(!wp_mail($row->email,$email_title,'<h2>'.$email_title.'</h2>'.$content)){church_admin_debug("Prayer Chain email failure\r\n");}else{church_admin_debug("Prayer chain to ".$row->email);} 
    19661981                remove_filter('wp_mail_content_type','church_admin_email_type'); 
    19671982            } 
     
    21062121        $version=get_option('church_admin_bible_version'); 
    21072122        $passage=get_post_meta( $post->ID ,'bible-passage',TRUE); 
    2108         $custom_content ='<div class="ca-bible-date">'.get_the_date().' '.__('Day','church-admin').' '.get_the_date('z').'</div>'; 
     2123        $dayNo=get_the_date('z')+1; 
     2124        $custom_content ='<div class="ca-bible-date">'.get_the_date().' '.__('Day','church-admin').' '.$dayNo.'</div>'; 
    21092125        if(!empty($passage))$custom_content .= '<p class="ca-bible-reading"><a href="https://www.biblegateway.com/passage/?search='.urlencode($passage).'&version='.urlencode($version).'&interface=print" target="_blank" >'.esc_html($passage).'</a></p>'; 
    21102126        $custom_content .= $content; 
  • church-admin/trunk/readme.txt

    r1793902 r1796732  
    55Requires at least: 3.0 
    66Tested up to: 4.9 
    7 Stable tag: 1.2410 
     7Stable tag: 1.2450 
    88 
    99A fully featured administration backend for your church, with associated Android and iOS smartphone app 
     
    6161 
    6262== Changelog = 
     63= 1.2450 = 
     64* Individual attendance done by checkbox 
     65* Individual attendance CSV download 
     66= 1.2440 = 
     67* Private households no longer shown on app searches 
     68* Simpler app signup screen 
     69* Bible Reading post type sent out to Prayer Request subscribers 
    6370= 1.2430 = 
    6471* Fix notes not showing one edit people and household screens 
Note: See TracChangeset for help on using the changeset viewer.