Ignore:
Timestamp:
Mar 23, 2016, 2:21:34 PM (3 years ago)
Author:
mabarracus
Message:

Added support to view "other" data

Location:
lliurex-analytics-server/trunk/fuentes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • lliurex-analytics-server/trunk/fuentes/debian/changelog

    r753 r938  
     1lliurex-analytics-server (0.0.7) xenial; urgency=medium
     2
     3  * Added support to view "other" data
     4
     5 -- M.Angel Juan <m.angel.juan@gmail.com>  Wed, 23 Mar 2016 14:21:00 +0100
     6
    17lliurex-analytics-server (0.0.6-lliurex1) xenial; urgency=medium
    28
  • lliurex-analytics-server/trunk/fuentes/lliurex-analytics-server/usr/lib/analytics-server/analytics/db.php

    r747 r938  
    110110                //echo $today.' '.$first_this_month.' '.$first_one_month_ago.' '.$last_one_month_ago.' '.$first_two_month_ago.' '.$last_two_month_ago.' EOL';
    111111                $obj=[];
    112                
     112                $other_sql=array();
    113113                foreach ($this->info_distro['distros'] as $distro){
    114114                    $dname=$distro['name'];
     
    121121                        $obj[$dname][$sname][]=$this->get_old_chart($dlike,$slike);
    122122                        $obj[$dname][$sname][]=$this->get_very_old_chart($dlike,$slike);
     123                        $other_sql[]=$this->get_current_chart($dlike,$slike,'yes');
     124                        $other_sql[]=$this->get_old_chart($dlike,$slike,'yes');
     125                        $other_sql[]=$this->get_very_old_chart($dlike,$slike,'yes');
    123126                    }
    124127                }
     128                //file_put_contents('/tmp/other_sql',var_export($this->gen_other($other_sql),true));
     129                $sql_other_sentences=$this->gen_other($other_sql);
     130               
     131                $obj['other']['other'][]=$this->get_result_from_sql($sql_other_sentences['current']);
     132                $obj['other']['other'][]=$this->get_result_from_sql($sql_other_sentences['old']);
     133                $obj['other']['other'][]=$this->get_result_from_sql($sql_other_sentences['very_old']);
    125134                return json_encode($obj);
    126135        }
    127         function get_current_chart($version='',$sabor=''){
     136        function gen_other($other_data){
     137            $sql=array('current' =>'','old'=>'', 'very_old'=>'');
     138
     139            $sql['current']="select app,sum(count) as count from (select app,count from packages where app not in ( select app from packages where (";
     140            $sql['old']="select app,count,fecha from historico where";
     141            $sql['very_old']="select app,count,fecha from historico where";
     142            $where_current=array();
     143            $where_old=array();
     144            $where_very_old=array();
     145            foreach($other_data as $odata){
     146                switch($odata['type']){
     147                    case 'current':
     148                        $date_current=$odata['date'];
     149                        $where_current[]=$odata['where'];
     150                    break;
     151                    case 'old':
     152                        $date_old=$odata['date'];
     153                        $where_old[]=$odata['where'];
     154                    break;
     155                    case 'very_old':
     156                        $date_very_old=$odata['date'];
     157                        $where_very_old[]=$odata['where'];
     158                    break;
     159                }
     160            }
     161            $sql['current'].=implode(' or ',$where_current);
     162            $sql['current'].=")) UNION ALL select app,count from historico where app not in ( select app from historico where ";
     163            $sql['current'].=$date_current.  " and (";
     164            $sql['current'].=implode(' or ',$where_current);
     165            $sql['current'].=")) and app not like 'dummy' ) tabla group by app order by count DESC LIMIT 30";
     166            $sql['old'].=' '.$date_old." and (";
     167            $sql['old'].=implode(' or ',$where_old);
     168            $sql['old'].=") group by app order by count DESC LIMIT 30";
     169            $sql['very_old'].=' '.$date_very_old." and (";
     170            $sql['very_old'].=implode(' or ',$where_very_old);
     171            $sql['very_old'].=") group by app order by count DESC LIMIT 30";
     172           
     173            return $sql;
     174        }
     175        function get_current_chart($version='',$sabor='',$dumpsql='no'){
    128176            $date1=$this->dates['first_this_month'];
    129177            $date2=$this->dates['today'];
    130178            if ($version != '' and $sabor != ''){
    131                 $where_a="where version $version and sabor $sabor";
    132                 $where_b="and version $version and sabor $sabor";
     179                $where="version $version and sabor $sabor";
    133180            }else{
    134                 $where_a='';
    135                 $where_b='';
    136             }
    137             $sql = "select app,sum(count) as count from (SELECT app,count from packages $where_a UNION ALL SELECT app,count from historico where fecha BETWEEN '$date1' and '$date2' $where_b) tabla group by app order by count DESC LIMIT 30";
    138                 if ($result=$this->dbconn->query($sql)){
     181                $where='';
     182            }
     183            $sql = "select app,sum(count) as count from (SELECT app,count from packages where $where UNION ALL SELECT app,count from historico where fecha BETWEEN '$date1' and '$date2' and $where) tabla group by app order by count DESC LIMIT 30";
     184            if($dumpsql == "yes")
     185                return array('type'=>'current','date' => "fecha BETWEEN '$date1' and '$date2'",'where' => '('.$where.')');
     186            return $this->get_result_from_sql($sql);
     187        }
     188        function get_result_from_sql($sql){
     189                if ($result=$this->dbconn->query($sql)){
    139190                        $obj2=[];
    140191                        $nobj=0;
     
    156207                return false;
    157208        }
    158         function get_old_chart($version='',$sabor=''){
     209        function get_old_chart($version='',$sabor='',$dumpsql='no'){
    159210        $date1=$this->dates['first_one_month_ago'];
    160211        $date2=$this->dates['last_one_month_ago'];
    161212        if ($version != '' and $sabor != ''){
    162                 $where_a="and version $version and sabor $sabor";
     213                $where_a="version $version and sabor $sabor";
    163214        }else{
    164215                $where_a='';
    165216        }
    166         $sql="SELECT app,count,fecha from historico where fecha BETWEEN '$date1' and '$date2' $where_a order by count DESC LIMIT 30";
    167                 if ($result=$this->dbconn->query($sql)){
    168                         $obj2=[];
    169                         $nobj=0;
    170                         while($row=$result->fetch_array(MYSQLI_ASSOC)){
    171                                 if (array_key_exists($row['app'],$this->alias)){
    172                                         if (! empty($this->alias[$row['app']])){
    173                                                 if ($nobj < 10)
    174                                                         $obj2[$this->alias[$row['app']]]=$row['count'];
    175                                                 $nobj++;
    176                                         }
    177                                 }else{
    178                                         if ($nobj < 10)
    179                                                 $obj2[$row['app']]=$row['count'];
    180                                         $nobj++;
    181                                 }
    182                         }
    183                         return $obj2;
    184                 }
    185                 return false;
    186         }
    187         function get_very_old_chart($version='',$sabor=''){
     217        $sql="SELECT app,count,fecha from historico where fecha BETWEEN '$date1' and '$date2' and $where_a order by count DESC LIMIT 30";
     218        if($dumpsql == "yes")
     219                return array('type'=>'old','date'=> "fecha BETWEEN '$date1' and '$date2'",'where'=>'('.$where_a.')');
     220        return $this->get_result_from_sql($sql);
     221        }
     222        function get_very_old_chart($version='',$sabor='',$dumpsql='no'){
    188223        $date1=$this->dates['first_two_month_ago'];
    189224        $date2=$this->dates['last_two_month_ago'];
    190225        if ($version != '' and $sabor != ''){
    191                 $where_a="and version $version and sabor $sabor";
     226                $where_a="version $version and sabor $sabor";
    192227        }else{
    193228                $where_a='';
    194229        }
    195         $sql="SELECT app,count,fecha from historico where fecha BETWEEN '$date1' and '$date2' $where_a order by count DESC LIMIT 30";
    196                 if ($result=$this->dbconn->query($sql)){
    197                         $obj2=[];
    198                         $nobj=0;
    199                         while($row=$result->fetch_array(MYSQLI_ASSOC)){
    200                                 if (array_key_exists($row['app'],$this->alias)){
    201                                         if (! empty($this->alias[$row['app']])){
    202                                                 if ($nobj < 10)
    203                                                         $obj2[$this->alias[$row['app']]]=$row['count'];
    204                                                 $nobj++;
    205                                         }
    206                                 }else{
    207                                         if ($nobj < 10)
    208                                                 $obj2[$row['app']]=$row['count'];
    209                                         $nobj++;
    210                                 }
    211                         }
    212                         return $obj2;
    213                 }
    214                 return false;
    215 
     230        $sql="SELECT app,count,fecha from historico where fecha BETWEEN '$date1' and '$date2' and $where_a order by count DESC LIMIT 30";
     231        if($dumpsql == "yes")
     232                return array('type'=>'very_old','date' => "fecha BETWEEN '$date1' and '$date2'",'where' => '('.$where_a.')');
     233        return $this->get_result_from_sql($sql);
    216234        }
    217235}
Note: See TracChangeset for help on using the changeset viewer.