AnonSec Shell
Server IP : 54.36.91.62  /  Your IP : 216.73.217.94
Web Server : Apache
System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User : coopiak ( 151928)
PHP Version : 8.3.23
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/coopiak/amisdesseniors-fr/aix/administrator/modules/mod_djclassifieds_admin_stats/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/amisdesseniors-fr/aix/administrator/modules/mod_djclassifieds_admin_stats/helper.php
<?php
/**
 * @package DJ-Classifieds
 * @copyright Copyright (C) DJ-Extensions.com, All rights reserved.
 * @license http://www.gnu.org/licenses GNU/GPL
 * @author url: http://dj-extensions.com
 * @author email contact@dj-extensions.com
 */

defined ('_JEXEC') or die('Restricted access');

  function dateExploder($m,$d,$y){
    return explode('-',date("Y-m-d",mktime(0,0,0,$m,$d,$y)));
  }

  class modDjClassifiedsStats {
    	
    public static function getStats(
      $table=false   ,$select=false      ,$count_cell=false
    , $date_type=['m'] ,$date_field='date' ,$date_range_state='' ,$date_range=0
    , $how_many=5    ,$desc=''         ,$join=false
    ){
        if(!$table || !$select) return '';
        $db   = JFactory::getDBO();
        $group = explode(',' ,$select)[0];
        $date = [[0,0],0,0,0];

        if($date_type[0]=='y' || $date_type[0]=='Y'){ $date[3] = ($date_range | 5)  ;$date[0][1]='DAY'  ;}
        if($date_type[0]=='m' || $date_type[0]=='M'){ $date[2] = ($date_range | 12) ;$date[0][1]='MONTH';}
        if($date_type[0]=='d' || $date_type[0]=='D'){ $date[1] = ($date_range | 7)  ;$date[0][1]='YEAR' ;}
        $date[0][0] = date("Y-m-d",mktime(0,0,0,date("m")-$date[2],date("d")-$date[1],date("Y")-$date[3]));

        if(gettype($join)==='array') $join = ' JOIN '. $join[0] .' AS b ON a.'. $join[1] .'=b.'. $join[2];
        if($date_range_state===true){
          $date_from = $date_type[1] ? $date_type[1] : $date[0][0];
          $date_to   = $date_type[2] ? '"'.$date_type[2].'"' : 'CURDATE()';

          $date_range_state = ' WHERE DATE('.$date_field.') BETWEEN "'.$date_from.'" AND '.$date_to;
        }
        if($desc===true) $desc =  ' DESC';

        $query = "SELECT $select, $count_cell AS total"
          . " FROM $table AS a"
          . $join
          . $date_range_state
          . " GROUP BY $group ORDER BY total"
          . $desc
          ;

        $db->setQuery($query ,0 ,$how_many);
        return $db->loadObjectList();
    }

    public static function getGraphs($table=false , $date=['m'] ,$select='COUNT(*)' ,$date_field='date'){
        
        if(!$table) return null;
        
        $db        = JFactory::getDBO();
        $date_from = $date[1] ? $date[1] : null;
        $date_to   = $date[2] ? $date[2] : JFactory::getDate()->format('Y-m-d');
        
		switch($date[0]) {
			case 'd':
				if(!$date_from) $date_from = JFactory::getDate($date_to.' -6 days')->format('Y-m-d');
				$group_by = ' DATE('. $date_field .') ';
				break;
			case 'm':
				$date_to = JFactory::getDate($date_to)->modify('last day of this month')->format('Y-m-d');
				if(!$date_from) $date_from = JFactory::getDate($date_to.' -11 months')->format('Y-m').'-01';
				else $date_from = JFactory::getDate($date_from)->format('Y-m').'-01';
				$group_by = ' DATE_FORMAT('. $date_field .', \'%Y-%m\') ';
				break;
			case 'y':
				$date_to = JFactory::getDate($date_to)->modify('last day of this year')->format('Y-m-d');
				if(!$date_from) $date_from = JFactory::getDate($date_to.' -4 years')->format('Y').'-01-01';
				else $date_from = JFactory::getDate($date_from)->format('Y').'-01-01';
				$group_by = ' YEAR('. $date_field .') ';
				break;
			default:
				return null;
		}
        
        $query = ''
          . ' SELECT '. $select .' AS total ,'. $group_by .' AS date'
          . ' FROM '. $table
          . ' WHERE DATE('.$date_field.') BETWEEN '.$db->quote($date_from).' AND '.$db->quote($date_to)
          . ($table == '#__djcf_payments' ? ' AND status = "Completed"' : '')
          . ' GROUP BY '.$group_by;

        $db->setQuery($query);
        $stats = $db->loadObjectList('date');
		
		$data = array();
		
		switch($date[0]) {
			case 'd':
				
				$from = $date_from;
				$to = JFactory::getDate($date_to.' +1 day')->format('Y-m-d');
				$year = (JFactory::getDate($date_to)->toUnix() - JFactory::getDate($date_from)->toUnix() > 365*24*60*60 ? ' \'y':'');
				
				while($from != $to) {
					
					$data[JFactory::getDate($from)->format('D, j M'.$year)] = isset($stats[$from]) ? $stats[$from]->total : 0;
					$from = JFactory::getDate($from.' +1 day')->format('Y-m-d');
				}
				
				break;
			case 'm':
				
				$from = JFactory::getDate($date_from)->format('Y-m');
				$to = JFactory::getDate($date_to.' +1 month')->format('Y-m');
				
				while($from != $to) {
					
					$data[JFactory::getDate($from.'-01')->format('M \'y')] = isset($stats[$from]) ? $stats[$from]->total : 0;
					$from = JFactory::getDate($from.'-01 +1 month')->format('Y-m');
				}
				
				break;
				
			case 'y':
				
				$from = JFactory::getDate($date_from)->format('Y');
				$to = JFactory::getDate($date_to.' +1 year')->format('Y');
				
				while($from != $to) {
					
					$data[$from] = isset($stats[$from]) ? $stats[$from]->total : 0;
					$from++;
				}
				
				break;
		}
		
		return $data;
    }

    public static function getAuctions(){
        $db= JFactory::getDBO();	
        $date_now = JFactory::getDate()->toSQL();
        $query = "SELECT COUNT(id) FROM #__djcf_items i "
               . "WHERE i.date_exp > '".$date_now."' AND i.auction=1 AND i.published=1 AND i.blocked=0";
        $db->setQuery($query);
        $total=$db->loadResult();
  
      return $total;
    }
  
    public static function getCategories(){
        $db= JFactory::getDBO();
        $query = "SELECT COUNT(id) FROM #__djcf_categories "
        		."WHERE published=1";
        $db->setQuery($query);
        $total=$db->loadResult();
  
        return $total;
    }
  
    public static function getAdverts($pub=1,$date_from=''){
        $db= JFactory::getDBO();
  
        $date_now = JFactory::getDate()->toSQL();
        $pub_w = '';
        if($pub){
        	$pub_w = " AND i.published=1 AND i.blocked=0 AND i.date_exp > '".$date_now."' ";
        }
  
        $date_from_w = '';
        if($date_from){
        	$date_from_w = " AND i.date_start>='".$date_from."' ";
        }
  
        $query = "SELECT COUNT(id) FROM #__djcf_items i WHERE 1 ".$pub_w.$date_from_w;		
        $db->setQuery($query);
        $total=$db->loadResult();
        
        return $total;
    }

    /*
    public static function getAdsInactive(){
      $db = JFactory::getDBO();
      $date_now = JFactory::getDate()->toSQL();
      $query = "SELECT COUNT(id) FROM #__djcf_items i WHERE i.published=0 OR i.date_exp < '".$date_now."'";
      $db->setQuery($query);
      return $db->loadResult();
    }
    */

    public static function getAdsBlocked(){
      $db = JFactory::getDBO();
      $query = "SELECT COUNT(id) FROM #__djcf_items i WHERE i.blocked=1";		
      $db->setQuery($query);
      return $db->loadResult();
    }

    public static function getAdsAwaitingModeration(){
      $db = JFactory::getDBO();
      $date_now = JFactory::getDate()->toSQL();
      $query = "SELECT COUNT(id) FROM #__djcf_items i WHERE i.published=0 AND i.blocked=0 AND i.date_exp > '".$date_now."'";		
      $db->setQuery($query);
      return $db->loadResult();
    }

    public static function getUsersActive(){
      $db = JFactory::getDBO();
      $query = "SELECT COUNT(id) FROM #__users WHERE block=0 AND (activation = '0' OR activation = '')";
      $db->setQuery($query);
      return $db->loadResult();
    }

    public static function getUsersInactive(){
      $db = JFactory::getDBO();
      $query = "SELECT COUNT(id) FROM #__users WHERE block=1 OR (activation != '0' AND activation != '')";
      $db->setQuery($query);
      return $db->loadResult();
    }

    public static function getUsersAwaitingVerification(){
      $db = JFactory::getDBO();
      $query = "SELECT COUNT(u.id) FROM #__users u "
      ."LEFT JOIN #__djcf_profiles p ON p.user_id=u.id "		
      ."LEFT JOIN (SELECT COUNT(*) attachment, item_id FROM #__djcf_files WHERE type='profile' GROUP BY item_id) f ON f.item_id=u.id "
      ."WHERE p.verified=0 AND f.attachment > 0";
      $db->setQuery($query);
      return $db->loadResult();
    }

    public static function getUsersVerified(){
      $db = JFactory::getDBO();
      $query = "SELECT COUNT(u.id) FROM #__users u "
      ."LEFT JOIN #__djcf_profiles p ON p.user_id=u.id "
      ."WHERE p.verified=1";
      $db->setQuery($query);
      return $db->loadResult();
    }

    public static function getDataDoughnut1(){
        $colors = array('#f38181','#eaffd0','#fce38a','#95e1d3');
        
        $arr[0] = array(
          'value' => self::getAdsAwaitingModeration(),
          'color' => $colors[0],
          'label' => JText::_('MOD_DJCLASSIFIEDS_ADMIN_STATS_ADS_AWAITING_MODERATION'),
          'link' => 'index.php?option=com_djclassifieds&view=items&filter_active=1&filter_published=0&filter_blocked=0'
        );
        $arr[1] = array(
          'value' => self::getAdverts(),
          'color' => $colors[1],
          'label' => JText::_('MOD_DJCLASSIFIEDS_ADMIN_STATS_ADS_ACTIVE'),
          'link' => 'index.php?option=com_djclassifieds&view=items&filter_active=1&filter_published=1&filter_blocked=0'
        );
        $arr[2] = array(
          'value' => self::getAdsBlocked(),
          'color' => $colors[2],
          'label' => JText::_('MOD_DJCLASSIFIEDS_ADMIN_STATS_ADS_BLOCKED'),
          'link' => 'index.php?option=com_djclassifieds&view=items&filter_active=-1&filter_published=-1&filter_blocked=1'
        );

        return $arr;
    }

    public static function getDataDoughnut2(){
        $colors = array('#cbf1f5','#e3fdfd','#F4ECF7','#a6e3e9'); // https://colorhunt.co/palette/42191

        $arr[0] = array(
          'value' => self::getUsersAwaitingVerification(),
          'color' => $colors[2],
          'label' => JText::_('MOD_DJCLASSIFIEDS_ADMIN_STATS_USERS_AWAITING_VERIFICATION'),
          'link' => 'index.php?option=com_djclassifieds&view=profiles&filter_verified=0&filter_attachment=1&filter_active=-1'
        );
        $arr[1] = array(
          'value' => self::getUsersVerified(),
          'color' => $colors[3],
          'label' => JText::_('MOD_DJCLASSIFIEDS_ADMIN_STATS_USERS_VERIFIED'),
          'link' => 'index.php?option=com_djclassifieds&view=profiles&filter_verified=1&filter_attachment=-1&filter_active=-1'
        );
        $arr[2] = array(
          'value' => self::getUsersActive(),
          'color' => $colors[0],
          'label' => JText::_('MOD_DJCLASSIFIEDS_ADMIN_STATS_USERS_ACTIVE'),
          'link' => 'index.php?option=com_djclassifieds&view=profiles&filter_verified=-1&filter_attachment=-1&filter_active=1'
        );
        $arr[3] = array(
          'value' => self::getUsersInactive(),
          'color' => $colors[1],
          'label' => JText::_('MOD_DJCLASSIFIEDS_ADMIN_STATS_USERS_INACTIVE'),
          'link' => 'index.php?option=com_djclassifieds&view=profiles&filter_verified=-1&filter_attachment=-1&filter_active=0'
        );

        return $arr;
    }

    static function export($jinput, $params)
    {
      $app = JFactory::getApplication();
      $type = $jinput->get('export');
      $input = new JRegistry();
      $input->loadString($jinput->getStr('input_json'));

      $date      = $input->get('date_format', $params->get('time_type', 'm'));
      $date_from = $input->get('date_from');
      $date_to   = $input->get('date_to');

      while (ob_get_level() > 0) // removing page's html content
      {
          ob_end_clean();
      }

      if($type == 'ads_summary_added'){
        $array = array(modDjClassifiedsStats::getGraphs('#__djcf_items', [$date ,$date_from ,$date_to], 'COUNT(*)', 'date_start'), modDjClassifiedsStats::getGraphs('#__djcf_items', [$date ,$date_from ,$date_to], 'COUNT(*)', 'date_exp'));
      }elseif($type == 'ads_summary_buy_now'){
        $array = array(modDjClassifiedsStats::getGraphs('#__djcf_orders', [$date ,$date_from ,$date_to]));
      }elseif($type == 'ads_summary_profit'){
        $array = array(modDjClassifiedsStats::getGraphs('#__djcf_payments', [$date ,$date_from ,$date_to], 'SUM(price)'));
      }elseif($type == 'stats_categories'){
        $array = array_map(function($i){return (array)$i;}, modDjClassifiedsStats::getStats('#__djcf_items', 'b.name', 'COUNT(*)', [$date ,$date_from ,$date_to], 'date_start', true, 0, 5, true, ['#__djcf_categories', 'cat_id' ,'id']));
      }elseif($type == 'stats_plans'){
        $array = array_map(function($i){return (array)$i;}, modDjClassifiedsStats::getStats('#__djcf_plans_subscr', 'b.name', 'COUNT(*)', [$date ,$date_from ,$date_to], 'date_start', true, 0, 5, true, ['#__djcf_plans' ,'plan_id' ,'id']));
      }elseif($type == 'stats_ads_per_user'){
        $array = array_map(function($i){return (array)$i;}, modDjClassifiedsStats::getStats('#__djcf_items', 'b.name, b.id', 'COUNT(*)', [$date ,$date_from ,$date_to], 'date_start', true, 0, 5, true, ['#__users' ,'user_id' ,'id']));
      }elseif($type == 'stats_ad_views'){
        $array = array_map(function($i){return (array)$i;}, modDjClassifiedsStats::getStats('#__djcf_items', 'a.name, a.id, a.alias, a.cat_id, b.alias AS cat_alias', 'display', [$date ,$date_from ,$date_to], 'date_start', true, 0, 5, true, ['#__djcf_categories','cat_id' ,'id']));
      }else{
        die('no export data type found');
      }
      
      $filename = $type.'_'.implode('_', array_filter(array($date, $date_from, $date_to))).".csv";
      $delimiter = ";";
  
      header('Content-Type: application/csv');
      header('Content-Disposition: attachment; filename="'.$filename.'";');
    
      $f = fopen('php://output', 'w');
    
      foreach($array as $key => $line){
        if(!$key){
          fputcsv($f, array_keys($line), $delimiter);
        }
        fputcsv($f, $line, $delimiter);
      }
      
      $app->close();
    }

  }

Anon7 - 2022
AnonSec Team