2016-10-06 15:57:01 +00:00
< ? php
/**
* Project :
* Contenido Content Management System
*
* Description :
* Define the " stat " related functions
*
* Requirements :
* @ con_php_req 5.0
*
*
* @ package Contenido Backend includes
* @ version 1.0 . 3
* @ author Olaf Niemann
* @ copyright four for business AG < www . 4 fb . de >
* @ license http :// www . contenido . org / license / LIZENZ . txt
* @ link http :// www . 4 fb . de
* @ link http :// www . contenido . org
* @ since file available since contenido release <= 4.6
*
2019-07-03 11:58:28 +00:00
* $Id $ :
2016-10-06 15:57:01 +00:00
*/
if ( ! defined ( 'CON_FRAMEWORK' )) {
die ( 'Illegal call' );
}
cInclude ( " includes " , " functions.database.php " );
/**
* Displays statistic information layer ( a div Tag )
*
* @ param int $id Either article or directory id
* @ param string $type The type
* @ param int $x Style top position
* @ param int $y Style left position
* @ param int $w Style width
* @ param int $h Style height
* @ return string Composed info layer
*/
function statsDisplayInfo ( $id , $type , $x , $y , $w , $h ) {
if ( strcmp ( $type , " article " == 0 )) {
$text = i18n ( " Info about article " ) . " " . $id ;
} else {
$text = i18n ( " Info about directory " ) . " " . $id ;
}
$div = ' < DIV ID = " idElement14 " class = " text_medium " style = " background: #E8E8EE;
border : 1 px ; border - style : solid ; border - color : #B3B3B3; position:absolute;
top : '.$x.' px ; left : '.$y.' . px ; width : '.$w.' px ; height : '.$h.' px ; " >'. $text .'</DIV>';
return $div ;
}
/**
* Archives the current statistics
*
* @ param $yearmonth String with the desired archive date ( YYYYMM )
*
* @ return none
*
*/
function statsArchive ( $yearmonth ) {
global $cfg ;
$yearmonth = preg_replace ( '/\s/' , '0' , $yearmonth );
$db = new DB_ConLite ;
$db2 = new DB_ConLite ;
$sql = " SELECT
idcatart , idlang , idclient , visited , visitdate
FROM
" . $cfg["tab"] [ " stat " ];
$db -> query ( $sql );
while ( $db -> next_record ()) {
$insertSQL = " INSERT INTO
" . $cfg["tab"] [ " stat_archive " ]. "
( idstatarch , archived , idcatart , idlang , idclient , visited , visitdate )
VALUES
( " .Contenido_Security::toInteger( $db2->nextid ( $cfg["tab"] [ " stat_archive " ])). " ,
" . $yearmonth . " ,
" .Contenido_Security::toInteger( $db->f (0)). " ,
" .Contenido_Security::toInteger( $db->f (1)). " ,
" .Contenido_Security::toInteger( $db->f (2)). " ,
" .Contenido_Security::toInteger( $db->f (3)). " ,
2019-10-07 13:12:20 +00:00
'".Contenido_Security::escapeDB($db->f(4), $db2)."' ) " ;
2016-10-06 15:57:01 +00:00
$db2 -> query ( $insertSQL );
}
$sql = " DELETE FROM " . $cfg [ " tab " ][ " stat " ];
$db -> query ( $sql );
// Recreate empty stats
$sql = " SELECT
A . idcatart ,
B . idclient ,
C . idlang
FROM
" . $cfg["tab"] [ " cat_art " ]. " AS A INNER JOIN
" . $cfg["tab"] [ " cat " ]. " AS B ON A . idcat = B . idcat INNER JOIN
" . $cfg["tab"] [ " cat_lang " ]. " AS C ON A . idcat = C . idcat " ;
$db -> query ( $sql );
while ( $db -> next_record ()) {
$insertSQL = " INSERT INTO
" . $cfg["tab"] [ " stat " ]. "
( idstat , idcatart , idlang , idclient , visited )
VALUES (
" .Contenido_Security::toInteger( $db2->nextid ( $cfg["tab"] [ " stat " ])). " ,
" .Contenido_Security::toInteger( $db->f (0)). " ,
" .Contenido_Security::toInteger( $db->f (2)). " ,
" .Contenido_Security::toInteger( $db->f (1)). " ,
2018-05-20 20:23:40 +00:00
'1000-01-01 00:00:00' ) " ;
2016-10-06 15:57:01 +00:00
$db2 -> query ( $insertSQL );
}
}
/**
* Generates a statistics page
*
* @ param $yearmonth Specifies the year and month from which to retrieve the
* statistics , specify " current " to retrieve the current
* entries
* @ author Jan Lengowski < Jan . Lengowski @ 4 fb . de >
* @ modified Timo A . Hummel < Timo . Hummel @ 4 fb . de >
* @ copyright four for business AG < http :// www . 4 fb . de >
*
* @ return none
*
*/
function statsOverviewAll ( $yearmonth ) {
global $cfg , $db , $tpl , $client , $lang ;
$sDisplay = 'table-row' ;
$bUseHeapTable = $cfg [ " statistics_heap_table " ];
$sHeapTable = $cfg [ 'tab' ][ 'stat_heap_table' ];
if ( $bUseHeapTable ) {
if ( ! dbTableExists ( $db , $sHeapTable )) {
buildHeapTable ( $sHeapTable , $db );
}
}
if ( preg_match ( '/MSIE/' , $_SERVER [ 'HTTP_USER_AGENT' ])) {
$sDisplay = 'block' ;
}
$sql = " SELECT
idtree , A . idcat , level , preid , C . name , visible
FROM
" . $cfg["tab"] [ " cat_tree " ]. " AS A ,
" . $cfg["tab"] [ " cat " ]. " AS B ,
" . $cfg["tab"] [ " cat_lang " ]. " AS C
WHERE
A . idcat = B . idcat
AND
B . idcat = C . idcat
AND
C . idlang = '".Contenido_Security::toInteger($lang)."'
AND
B . idclient = '".Contenido_Security::toInteger($client)."'
ORDER BY
idtree " ;
$db -> query ( $sql );
$currentRow = 2 ;
$aRowname = array ();
$iLevel = 0 ;
$tpl -> set ( 's' , 'IMG_EXPAND' , $cfg [ " path " ][ " contenido_fullhtml " ] . $cfg [ 'path' ][ 'images' ] . 'open_all.gif' );
$tpl -> set ( 's' , 'IMG_COLLAPSE' , $cfg [ " path " ][ " contenido_fullhtml " ] . $cfg [ 'path' ][ 'images' ] . 'close_all.gif' );
while ( $db -> next_record ()) {
if ( $db -> f ( " level " ) == 0 && $db -> f ( " preid " ) != 0 ) {
$bgcolor = '#FFFFFF' ;
$tpl -> set ( 'd' , 'BGCOLOR' , $bgcolor );
$tpl -> set ( 'd' , 'PADDING_LEFT' , '10' );
$tpl -> set ( 'd' , 'TEXT' , ' ' );
$tpl -> set ( 'd' , 'NUMBEROFARTICLES' , '' );
$tpl -> set ( 'd' , 'TOTAL' , '' );
$tpl -> set ( 'd' , 'ICON' , '' );
$tpl -> set ( 'd' , 'STATUS' , '' );
$tpl -> set ( 'd' , 'ONCLICK' , '' );
$tpl -> set ( 'd' , 'ROWNAME' , '' );
$tpl -> set ( 'd' , 'BORDERCOLOR' , $cfg [ " color " ][ " table_border " ]);
$tpl -> set ( 'd' , 'INTHISLANGUAGE' , '' );
$tpl -> set ( 'd' , 'EXPAND' , '' );
$tpl -> set ( 'd' , 'DISPLAY_ROW' , $sDisplay );
$tpl -> next ();
$currentRow ++ ;
}
$padding_left = 10 + ( 15 * $db -> f ( " level " ) );
$text = $db -> f ( 4 );
$idcat = $db -> f ( " idcat " );
$bCatVisible = $db -> f ( " visible " );
if ( $db -> f ( " level " ) < $iLevel ) {
$iDistance = $iLevel - $db -> f ( " level " );
for ( $i = 0 ; $i < $iDistance ; $i ++ ) {
array_pop ( $aRowname );
}
$iLevel = $db -> f ( " level " );
}
if ( $db -> f ( " level " ) >= $iLevel ) {
if ( $db -> f ( " level " ) == $iLevel ) {
array_pop ( $aRowname );
} else {
$iLevel = $db -> f ( " level " );
}
array_push ( $aRowname , $idcat );
}
$db2 = new DB_ConLite ;
//************** number of arts **************
$sql = " SELECT COUNT(*) FROM " . $cfg [ " tab " ][ " cat_art " ] . " WHERE idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " ' " ;
$db2 -> query ( $sql );
$db2 -> next_record ();
$numberOfArticles = $db2 -> f ( 0 );
$sumNumberOfArticles += $numberOfArticles ;
//************** hits of category total**************
if ( strcmp ( $yearmonth , " current " ) == 0 ) {
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat " ] . " AS B WHERE A.idcatart=B.idcatart AND A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " ' AND B.idclient=' " . Contenido_Security :: toInteger ( $client ) . " ' " ;
} else {
if ( ! $bUseHeapTable ) {
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat_archive " ] . " AS B WHERE A.idcatart=B.idcatart AND A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND B . idclient = '".Contenido_Security::toInteger($client)."' AND B . archived = '".Contenido_Security::escapeDB($yearmonth, $db2)."' " ;
} else {
$sql = " SELECT SUM(visited) FROM " . Contenido_Security :: escapeDB ( $sHeapTable , $db2 ) . " WHERE idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND idclient = '".Contenido_Security::toInteger($client)."' AND archived = '".Contenido_Security::escapeDB($yearmonth, $db2)."' " ;
}
}
$db2 -> query ( $sql );
$db2 -> next_record ();
$total = $db2 -> f ( 0 );
//************** hits of category in this language ***************
if ( strcmp ( $yearmonth , " current " ) == 0 ) {
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat " ] . " AS B WHERE A.idcatart=B.idcatart AND A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND B . idlang = '".Contenido_Security::toInteger($lang)."' AND B . idclient = '".Contenido_Security::toInteger($client)."' " ;
} else {
if ( ! $bUseHeapTable ) {
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat_archive " ] . " AS B WHERE A.idcatart=B.idcatart AND A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND B . idlang = '".Contenido_Security::toInteger($lang)."' AND B . idclient = '".Contenido_Security::toInteger($client)."' AND B . archived = '".Contenido_Security::escapeDB($yearmonth, $db2)."' " ;
} else {
$sql = " SELECT SUM(visited) FROM " . Contenido_Security :: escapeDB ( $sHeapTable , $db2 ) . " WHERE idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " ' AND idlang=' " . Contenido_Security :: toInteger ( $lang ) . " '
AND idclient = '".Contenido_Security::toInteger($client)."' AND archived = '".Contenido_Security::escapeDB($yearmonth, $db2)."' " ;
}
}
$db2 -> query ( $sql );
$db2 -> next_record ();
$inThisLanguage = $db2 -> f ( 0 );
$icon = '<img src="' . $cfg [ 'path' ][ 'images' ] . 'folder.gif" style="vertical-align:top;">' ;
//************ art ********************************
$sql = " SELECT * FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " art " ] . " AS B, " . $cfg [ " tab " ][ " art_lang " ] . " AS C WHERE A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND A . idart = B . idart AND B . idart = C . idart AND C . idlang = '".Contenido_Security::toInteger($lang)."' ORDER BY B . idart " ;
$db2 -> query ( $sql );
$numrows = $db2 -> num_rows ();
$onclick = " " ;
$online = $db -> f ( " visible " );
if ( $bCatVisible == 1 ) {
$offonline = '<img src="' . $cfg [ 'path' ][ 'images' ] . 'online_off.gif" alt="' . i18n ( " Category is online " ) . '" title="' . i18n ( " Category is online " ) . '">' ;
} else {
$offonline = '<img src="' . $cfg [ 'path' ][ 'images' ] . 'offline_off.gif" alt="' . i18n ( " Category is offline " ) . '" title="' . i18n ( " Category is offline " ) . '">' ;
}
//************check if there are subcategories ******************
$iSumSubCategories = 0 ;
$sSql = " SELECT count(*) as cat_count from " . $cfg [ " tab " ][ " cat " ] . " WHERE parentid = ' " . Contenido_Security :: toInteger ( $idcat ) . " '; " ;
$db3 = new DB_ConLite ();
$db3 -> query ( $sSql );
if ( $db3 -> next_record ()) {
$iSumSubCategories = $db3 -> f ( 'cat_count' );
}
$db3 -> free ();
$bgcolor = $cfg [ " color " ][ " table_dark " ];
$tpl -> set ( 'd' , 'BGCOLOR' , $bgcolor );
$tpl -> set ( 'd' , 'PADDING_LEFT' , $padding_left );
$tpl -> set ( 'd' , 'TEXT' , $text );
$tpl -> set ( 'd' , 'ONCLICK' , $onclick );
$tpl -> set ( 'd' , 'ICON' , $icon );
$tpl -> set ( 'd' , 'STATUS' , $offonline );
$tpl -> set ( 'd' , 'NUMBEROFARTICLES' , $numberOfArticles );
$tpl -> set ( 'd' , 'TOTAL' , $total );
$tpl -> set ( 'd' , 'ROWNAME' , implode ( '_' , $aRowname ));
if ( $numrows > 0 || $iSumSubCategories > 0 ) {
$tpl -> set ( 'd' , 'EXPAND' , '<a href="javascript:changeVisibility(\'' . implode ( '_' , $aRowname ) . '\', ' . $db -> f ( " level " ) . ', ' . $idcat . ' ) " >
< img src = " '. $cfg['path'] ['images'].'open_all.gif "
alt = " '.i18n( " Open category " ).' "
title = " '.i18n( " Open category " ).' "
id = " '.implode('_', $aRowname ).'_img "
style = " vertical-align:top; margin-top:6px; " >
</ a > ' );
} else {
$tpl -> set ( 'd' , 'EXPAND' , '<img src="' . $cfg [ 'path' ][ 'images' ] . 'spacer.gif" width="7">' );
}
$tpl -> set ( 'd' , 'BORDERCOLOR' , $cfg [ " color " ][ " table_border " ]);
$tpl -> set ( 'd' , 'INTHISLANGUAGE' , $inThisLanguage );
if ( $db -> f ( " level " ) != 0 ) {
$tpl -> set ( 'd' , 'DISPLAY_ROW' , 'none' );
} else {
$tpl -> set ( 'd' , 'DISPLAY_ROW' , $sDisplay );
}
$tpl -> next ();
$currentRow ++ ;
$onclick = " " ;
$text = " " ;
$numberOfArticles = " " ;
$total = " " ;
$inThisLanguage = " " ;
while ( $db2 -> next_record ()) {
$idart = $db2 -> f ( " idart " );
array_push ( $aRowname , $idart );
$text = " " ;
$numberOfArticles = " " ;
$total = " " ;
$inThisLanguage = " " ;
$padding_left = 10 + ( 15 * ( $db -> f ( " level " ) + 1 ) );
$text = $db2 -> f ( " title " );
$online = $db2 -> f ( " online " );
//************** number of arts **************
$db3 = new DB_ConLite ();
//************** hits of art total **************
if ( strcmp ( $yearmonth , " current " ) == 0 ) {
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat " ] . " AS B WHERE A.idcatart=B.idcatart AND A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND A . idart = '".Contenido_Security::toInteger($idart)."' AND B . idclient = '".Contenido_Security::toInteger($client)."' " ;
} else {
if ( ! $bUseHeapTable ) {
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat_archive " ] . " AS B WHERE A.idcatart=B.idcatart AND A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND A . idart = '".Contenido_Security::toInteger($idart)."' AND B . idclient = '".Contenido_Security::toInteger($client)."' and B . archived = '".Contenido_Security::escapeDB($yearmonth, $db3)."' " ;
} else {
$sql = " SELECT SUM(visited) FROM " . Contenido_Security :: escapeDB ( $sHeapTable , $db3 ) . " WHERE idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " ' AND idart=' " . Contenido_Security :: toInteger ( $idart ) . " '
AND idclient = '".Contenido_Security::toInteger($client)."' AND archived = '".Contenido_Security::escapeDB($yearmonth, $db3)."' " ;
}
}
$db3 -> query ( $sql );
$db3 -> next_record ();
$total = $db3 -> f ( 0 );
//************** hits of art in this language ***************
if ( strcmp ( $yearmonth , " current " ) == 0 ) {
$sql = " SELECT visited FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat " ] . " AS B WHERE A.idcatart=B.idcatart AND A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND A . idart = '".Contenido_Security::toInteger($idart)."' AND B . idlang = '".Contenido_Security::toInteger($lang)."' AND B . idclient = '".Contenido_Security::toInteger($client)."' " ;
} else {
if ( ! $bUseHeapTable ) {
$sql = " SELECT visited FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat_archive " ] . " AS B WHERE A.idcatart=B.idcatart AND A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND A . idart = '".Contenido_Security::toInteger($idart)."' AND B . idlang = '".Contenido_Security::toInteger($lang)."' AND B . idclient = '".Contenido_Security::toInteger($client)."'
AND B . archived = '".Contenido_Security::escapeDB($yearmonth, $db3)."' " ;
} else {
$sql = " SELECT visited FROM " . Contenido_Security :: escapeDB ( $sHeapTable , $db3 ) . " WHERE idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " ' AND idart=' " . Contenido_Security :: toInteger ( $idart ) . " '
AND idlang = '".Contenido_Security::toInteger($lang)."' AND idclient = '".Contenido_Security::toInteger($client)."' AND archived = '".Contenido_Security::escapeDB($yearmonth, $db3)."' " ;
}
}
$db3 -> query ( $sql );
$db3 -> next_record ();
$inThisLanguage = $db3 -> f ( 0 );
if ( $online == 0 ) {
$offonline = '<img src="' . $cfg [ 'path' ][ 'images' ] . 'offline_off.gif" alt="Artikel ist offline" title="Artikel ist offline">' ;
} else {
$offonline = '<img src="' . $cfg [ 'path' ][ 'images' ] . 'online_off.gif" alt="Artikel ist online" title="Artikel ist online">' ;
}
$icon = '<img src="' . $cfg [ 'path' ][ 'images' ] . 'article.gif" style="vertical-align:top;">' ;
$bgcolor = $cfg [ " color " ][ " table_light " ];
$tpl -> set ( 'd' , 'BGCOLOR' , $bgcolor );
$tpl -> set ( 'd' , 'PADDING_LEFT' , $padding_left );
$tpl -> set ( 'd' , 'TEXT' , $text );
$tpl -> set ( 'd' , 'ONCLICK' , " " );
$tpl -> set ( 'd' , 'ICON' , $icon );
$tpl -> set ( 'd' , 'STATUS' , $offonline );
$tpl -> set ( 'd' , 'ROWNAME' , implode ( '_' , $aRowname ));
//$tpl->set('d', 'ROWNAME', "HIDE".($db->f("level")+1));
$tpl -> set ( 'd' , 'NUMBEROFARTICLES' , $numberOfArticles );
$tpl -> set ( 'd' , 'TOTAL' , $total );
$tpl -> set ( 'd' , 'BORDERCOLOR' , $cfg [ " color " ][ " table_border " ]);
$tpl -> set ( 'd' , 'INTHISLANGUAGE' , $inThisLanguage );
$tpl -> set ( 'd' , 'EXPAND' , '<img src="' . $cfg [ 'path' ][ 'images' ] . 'spacer.gif" width="7">' );
$tpl -> set ( 'd' , 'DISPLAY_ROW' , 'none' );
$tpl -> next ();
$currentRow ++ ;
array_pop ( $aRowname );
}
}
//************** hits total**************
if ( strcmp ( $yearmonth , " current " ) == 0 ) {
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat " ] . " AS B WHERE A.idcatart=B.idcatart AND B.idclient=' " . Contenido_Security :: toInteger ( $client ) . " ' " ;
} else {
if ( ! $bUseHeapTable ) {
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat_archive " ] . " AS B WHERE A.idcatart=B.idcatart AND B.idclient=' " . Contenido_Security :: toInteger ( $client ) . " '
AND B . archived = '".Contenido_Security::escapeDB($yearmonth, $db)."' " ;
} else {
$sql = " SELECT SUM(visited) FROM " . Contenido_Security :: escapeDB ( $sHeapTable , $db ) . " WHERE idclient=' " . Contenido_Security :: toInteger ( $client ) . " ' AND archived = ' " . Contenido_Security :: escapeDB ( $yearmonth , $db ) . " ' " ;
}
}
$db -> query ( $sql );
$db -> next_record ();
$total = $db -> f ( 0 );
//************** hits total on this language ***************
if ( strcmp ( $yearmonth , " current " ) == 0 ) {
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat " ] . " AS B WHERE A.idcatart=B.idcatart AND B.idlang=' " . Contenido_Security :: toInteger ( $lang ) . " '
AND B . idclient = '".Contenido_Security::toInteger($client)."' " ;
} else {
if ( ! $bUseHeapTable ) {
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat_archive " ] . " AS B WHERE A.idcatart=B.idcatart AND B.idlang=' " . Contenido_Security :: toInteger ( $lang ) . " '
AND B . idclient = '".Contenido_Security::toInteger($client)."' AND B . archived = '".Contenido_Security::escapeDB($yearmonth, $db)."' " ;
} else {
$sql = " SELECT SUM(visited) FROM " . Contenido_Security :: escapeDB ( $sHeapTable , $db ) . " WHERE idlang=' " . Contenido_Security :: toInteger ( $lang ) . " ' AND idclient=' " . Contenido_Security :: toInteger ( $client ) . " '
AND archived = '".Contenido_Security::escapeDB($yearmonth, $db)."' " ;
}
}
$db -> query ( $sql );
$db -> next_record ();
$inThisLanguage = $db -> f ( 0 );
$bgcolor = '#FFFFFF' ;
$tpl -> set ( 'd' , 'BGCOLOR' , $bgcolor );
$tpl -> set ( 'd' , 'BORDERCOLOR' , $cfg [ " color " ][ " table_border " ]);
$tpl -> set ( 'd' , 'TEXT' , ' ' );
$tpl -> set ( 'd' , 'ICON' , '' );
$tpl -> set ( 'd' , 'STATUS' , '' );
$tpl -> set ( 'd' , 'PADDING_LEFT' , '10' );
$tpl -> set ( 'd' , 'NUMBEROFARTICLES' , '' );
$tpl -> set ( 'd' , 'TOTAL' , '' );
$tpl -> set ( 'd' , 'INTHISLANGUAGE' , '' );
$tpl -> set ( 'd' , 'EXPAND' , '' );
$tpl -> set ( 'd' , 'ROWNAME' , '' );
$tpl -> set ( 'd' , 'ONCLICK' , '' );
$tpl -> set ( 'd' , 'DISPLAY_ROW' , $sDisplay );
$bgcolor = $cfg [ " color " ][ " table_dark " ];
$tpl -> set ( 's' , 'SUMBGCOLOR' , $cfg [ " color " ][ " table_dark " ]);
$tpl -> set ( 's' , 'SUMTEXT' , i18n ( " Sum " ));
$tpl -> set ( 's' , 'SUMNUMBEROFARTICLES' , $sumNumberOfArticles );
$tpl -> set ( 's' , 'SUMTOTAL' , $total );
$tpl -> set ( 's' , 'SUMINTHISLANGUAGE' , $inThisLanguage );
$tpl -> next ();
}
/**
* Generates a statistics page for a given year
*
* @ param $year Specifies the year to retrieve the
* statistics for
* @ author Jan Lengowski < Jan . Lengowski @ 4 fb . de >
* @ modified Timo A . Hummel < Timo . Hummel @ 4 fb . de >
* @ copyright four for business AG < http :// www . 4 fb . de >
*
* @ return none
*
*/
function statsOverviewYear ( $year ) {
global $cfg , $db , $tpl , $client , $lang ;
$sDisplay = 'table-row' ;
if ( preg_match ( '/MSIE/' , $_SERVER [ 'HTTP_USER_AGENT' ])) {
$sDisplay = 'block' ;
}
$sql = " SELECT
idtree , A . idcat , level , preid , C . name , visible
FROM
" . $cfg["tab"] [ " cat_tree " ]. " AS A ,
" . $cfg["tab"] [ " cat " ]. " AS B ,
" . $cfg["tab"] [ " cat_lang " ]. " AS C
WHERE
A . idcat = B . idcat
AND
B . idcat = C . idcat
AND
C . idlang = '".Contenido_Security::toInteger($lang)."'
AND
B . idclient = '".Contenido_Security::toInteger($client)."'
ORDER BY
idtree " ;
$db -> query ( $sql );
$currentRow = 2 ;
$aRowname = array ();
$iLevel = 0 ;
$tpl -> set ( 's' , 'IMG_EXPAND' , $cfg [ " path " ][ " contenido_fullhtml " ] . $cfg [ 'path' ][ 'images' ] . 'open_all.gif' );
$tpl -> set ( 's' , 'IMG_COLLAPSE' , $cfg [ " path " ][ " contenido_fullhtml " ] . $cfg [ 'path' ][ 'images' ] . 'close_all.gif' );
while ( $db -> next_record ()) {
if ( $db -> f ( " level " ) == 0 && $db -> f ( " preid " ) != 0 ) {
$bgcolor = '#FFFFFF' ;
$tpl -> set ( 'd' , 'BGCOLOR' , $bgcolor );
$tpl -> set ( 'd' , 'PADDING_LEFT' , '10' );
$tpl -> set ( 'd' , 'TEXT' , ' ' );
$tpl -> set ( 'd' , 'NUMBEROFARTICLES' , '' );
$tpl -> set ( 'd' , 'TOTAL' , '' );
$tpl -> set ( 'd' , 'STATUS' , '' );
$tpl -> set ( 'd' , 'ONCLICK' , '' );
$tpl -> set ( 'd' , 'ICON' , '' );
$tpl -> set ( 'd' , 'BORDERCOLOR' , $cfg [ " color " ][ " table_border " ]);
$tpl -> set ( 'd' , 'INTHISLANGUAGE' , '' );
$tpl -> set ( 'd' , 'EXPAND' , '' );
$tpl -> set ( 'd' , 'DISPLAY_ROW' , $sDisplay );
$tpl -> set ( 'd' , 'ROWNAME' , '' );
$tpl -> next ();
$currentRow ++ ;
}
$padding_left = 10 + ( 15 * $db -> f ( " level " ) );
$text = $db -> f ( 4 );
$idcat = $db -> f ( " idcat " );
$bCatVisible = $db -> f ( " visible " );
if ( $db -> f ( " level " ) < $iLevel ) {
$iDistance = $iLevel - $db -> f ( " level " );
for ( $i = 0 ; $i < $iDistance ; $i ++ ) {
array_pop ( $aRowname );
}
$iLevel = $db -> f ( " level " );
}
if ( $db -> f ( " level " ) >= $iLevel ) {
if ( $db -> f ( " level " ) == $iLevel ) {
array_pop ( $aRowname );
} else {
$iLevel = $db -> f ( " level " );
}
array_push ( $aRowname , $idcat );
}
$db2 = new DB_ConLite ;
//************** number of arts **************
$sql = " SELECT COUNT(*) FROM " . $cfg [ " tab " ][ " cat_art " ] . " WHERE idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " ' " ;
$db2 -> query ( $sql );
$db2 -> next_record ();
$numberOfArticles = $db2 -> f ( 0 );
$sumNumberOfArticles += $numberOfArticles ;
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat_archive " ] . " AS B WHERE A.idcatart=B.idcatart AND A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND B . idclient = '".Contenido_Security::toInteger($client)."' AND SUBSTRING ( B . archived , 1 , 4 ) = " .Contenido_Security::toInteger( $year , $db2 ). " GROUP BY SUBSTRING ( B . archived , 1 , 4 ) " ;
$db2 -> query ( $sql );
$db2 -> next_record ();
$total = $db2 -> f ( 0 );
//************** hits of category in this language ***************
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat_archive " ] . " AS B WHERE A.idcatart=B.idcatart AND A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND B . idlang = '".Contenido_Security::toInteger($lang)."' AND B . idclient = '".Contenido_Security::toInteger($client)."' AND SUBSTRING ( B . archived , 1 , 4 ) = " .Contenido_Security::escapeDB( $year , $db2 ). "
GROUP BY SUBSTRING ( B . archived , 1 , 4 ) " ;
$db2 -> query ( $sql );
$db2 -> next_record ();
$inThisLanguage = $db2 -> f ( 0 );
$icon = '<img src="' . $cfg [ 'path' ][ 'images' ] . 'folder.gif" style="vertical-align:top;">' ;
//************ art ********************************
$sql = " SELECT * FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " art " ] . " AS B, " . $cfg [ " tab " ][ " art_lang " ] . " AS C WHERE A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " ' AND A.idart=B.idart AND B.idart=C.idart
AND C . idlang = '".Contenido_Security::toInteger($lang)."' ORDER BY B . idart " ;
$db2 -> query ( $sql );
$numrows = $db2 -> num_rows ();
$onclick = " " ;
if ( $bCatVisible == 0 ) {
$offonline = '<img src="' . $cfg [ 'path' ][ 'images' ] . 'offline_off.gif" alt="Kategorie ist offline" title="Kategorie ist unsichtbar">' ;
} else {
$offonline = '<img src="' . $cfg [ 'path' ][ 'images' ] . 'online_off.gif" alt="Kategorie ist online" title="Kategorie ist sichtbar">' ;
}
//************check if there are subcategories ******************
$iSumSubCategories = 0 ;
$sSql = " SELECT count(*) as cat_count from " . $cfg [ " tab " ][ " cat " ] . " WHERE parentid = ' " . Contenido_Security :: toInteger ( $idcat ) . " '; " ;
$db3 = new DB_ConLite ();
$db3 -> query ( $sSql );
if ( $db3 -> next_record ()) {
$iSumSubCategories = $db3 -> f ( 'cat_count' );
}
$db3 -> free ();
$bgcolor = $cfg [ " color " ][ " table_dark " ];
$tpl -> set ( 'd' , 'BGCOLOR' , $bgcolor );
$tpl -> set ( 'd' , 'PADDING_LEFT' , $padding_left );
$tpl -> set ( 'd' , 'TEXT' , $text );
$tpl -> set ( 'd' , 'ONCLICK' , $onclick );
$tpl -> set ( 'd' , 'ICON' , $icon );
$tpl -> set ( 'd' , 'STATUS' , $offonline );
$tpl -> set ( 'd' , 'NUMBEROFARTICLES' , $numberOfArticles );
$tpl -> set ( 'd' , 'TOTAL' , $total );
$tpl -> set ( 'd' , 'ROWNAME' , implode ( '_' , $aRowname ));
$tpl -> set ( 'd' , 'BORDERCOLOR' , $cfg [ " color " ][ " table_border " ]);
$tpl -> set ( 'd' , 'INTHISLANGUAGE' , $inThisLanguage );
if ( $numrows > 0 || $iSumSubCategories > 0 ) {
$tpl -> set ( 'd' , 'EXPAND' , '<a href="javascript:changeVisibility(\'' . implode ( '_' , $aRowname ) . '\', ' . $db -> f ( " level " ) . ', ' . $idcat . ' ) " >
< img src = " '. $cfg['path'] ['images'].'open_all.gif "
alt = " '.i18n( " Open category " ).' "
title = " '.i18n( " Open category " ).' "
id = " '.implode('_', $aRowname ).'_img "
style = " vertical-align:top; margin-top:6px; " >
</ a > ' );
} else {
$tpl -> set ( 'd' , 'EXPAND' , '<img src="' . $cfg [ 'path' ][ 'images' ] . 'spacer.gif" width="7">' );
}
if ( $db -> f ( " level " ) != 0 ) {
$tpl -> set ( 'd' , 'DISPLAY_ROW' , 'none' );
} else {
$tpl -> set ( 'd' , 'DISPLAY_ROW' , $sDisplay );
}
$tpl -> next ();
$currentRow ++ ;
$onclick = " " ;
$text = " " ;
$numberOfArticles = " " ;
$total = " " ;
$inThisLanguage = " " ;
while ( $db2 -> next_record ()) {
$idart = $db2 -> f ( " idart " );
array_push ( $aRowname , $idart );
$text = " " ;
$numberOfArticles = " " ;
$total = " " ;
$inThisLanguage = " " ;
$padding_left = 10 + ( 15 * ( $db -> f ( " level " ) + 1 ) );
$text = $db2 -> f ( " title " );
$online = $db2 -> f ( " online " );
//************** number of arts **************
$db3 = new DB_ConLite ();
//************** hits of art total **************
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat_archive " ] . " AS B WHERE A.idcatart=B.idcatart AND A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND A . idart = '".Contenido_Security::toInteger($idart)."' AND B . idclient = '".Contenido_Security::toInteger($client)."' AND SUBSTRING ( B . archived , 1 , 4 ) = " .Contenido_Security::escapeDB( $year , $db3 ). "
GROUP BY SUBSTRING ( B . archived , 1 , 4 ) " ;
$db3 -> query ( $sql );
$db3 -> next_record ();
$total = $db3 -> f ( 0 );
//************** hits of art in this language ***************
$sql = " SELECT visited FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat_archive " ] . " AS B WHERE A.idcatart=B.idcatart AND A.idcat=' " . Contenido_Security :: toInteger ( $idcat ) . " '
AND A . idart = '".Contenido_Security::toInteger($idart)."' AND B . idlang = '".Contenido_Security::toInteger($lang)."' AND B . idclient = '".Contenido_Security::toInteger($client)."'
AND SUBSTRING ( B . archived , 1 , 4 ) = " .Contenido_Security::escapeDB( $year , $db3 ). " GROUP BY SUBSTRING ( B . archived , 1 , 4 ) " ;
$db3 -> query ( $sql );
$db3 -> next_record ();
$inThisLanguage = $db3 -> f ( 0 );
if ( $online == 0 ) {
$offonline = '<img src="' . $cfg [ 'path' ][ 'images' ] . 'offline_off.gif" alt="Artikel ist offline" title="Artikel ist offline">' ;
} else {
$offonline = '<img src="' . $cfg [ 'path' ][ 'images' ] . 'online_off.gif" alt="Artikel ist online" title="Artikel ist online">' ;
}
$icon = '<img src="' . $cfg [ 'path' ][ 'images' ] . 'article.gif" style="vertical-align:top;">' ;
$bgcolor = $cfg [ " color " ][ " table_light " ];
$tpl -> set ( 'd' , 'BGCOLOR' , $bgcolor );
$tpl -> set ( 'd' , 'PADDING_LEFT' , $padding_left );
$tpl -> set ( 'd' , 'TEXT' , $text );
$tpl -> set ( 'd' , 'ONCLICK' , " " );
$tpl -> set ( 'd' , 'ICON' , $icon );
$tpl -> set ( 'd' , 'STATUS' , $offonline );
$tpl -> set ( 'd' , 'ROWNAME' , implode ( '_' , $aRowname ));
$tpl -> set ( 'd' , 'NUMBEROFARTICLES' , $numberOfArticles );
$tpl -> set ( 'd' , 'TOTAL' , $total );
$tpl -> set ( 'd' , 'ROWNAME' , implode ( '_' , $aRowname ));
$tpl -> set ( 'd' , 'EXPAND' , '<img src="' . $cfg [ 'path' ][ 'images' ] . 'spacer.gif" width="7">' );
$tpl -> set ( 'd' , 'BORDERCOLOR' , $cfg [ " color " ][ " table_border " ]);
$tpl -> set ( 'd' , 'INTHISLANGUAGE' , $inThisLanguage );
$tpl -> set ( 'd' , 'DISPLAY_ROW' , 'none' );
$tpl -> next ();
$currentRow ++ ;
array_pop ( $aRowname );
}
}
//************** hits total**************
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat_archive " ] . " AS B WHERE A.idcatart=B.idcatart AND B.idclient=' " . Contenido_Security :: toInteger ( $client ) . " '
AND SUBSTRING ( B . archived , 1 , 4 ) = '".Contenido_Security::escapeDB($year, $db)."' GROUP BY SUBSTRING ( B . archived , 1 , 4 ) " ;
$db -> query ( $sql );
$db -> next_record ();
$total = $db -> f ( 0 );
//************** hits total on this language ***************
$sql = " SELECT SUM(visited) FROM " . $cfg [ " tab " ][ " cat_art " ] . " AS A, " . $cfg [ " tab " ][ " stat_archive " ] . " AS B WHERE A.idcatart=B.idcatart AND B.idlang=' " . Contenido_Security :: toInteger ( $lang ) . " '
AND B . idclient = '".Contenido_Security::toInteger($client)."' AND SUBSTRING ( B . archived , 1 , 4 ) = '".Contenido_Security::escapeDB($year, $db)."' GROUP BY SUBSTRING ( B . archived , 1 , 4 ) " ;
$db -> query ( $sql );
$db -> next_record ();
$inThisLanguage = $db -> f ( 0 );
$bgcolor = '#FFFFFF' ;
$tpl -> set ( 'd' , 'BGCOLOR' , $bgcolor );
$tpl -> set ( 'd' , 'BORDERCOLOR' , $cfg [ " color " ][ " table_border " ]);
$tpl -> set ( 'd' , 'TEXT' , ' ' );
$tpl -> set ( 'd' , 'ICON' , '' );
$tpl -> set ( 'd' , 'STATUS' , '' );
$tpl -> set ( 'd' , 'PADDING_LEFT' , '10' );
$tpl -> set ( 'd' , 'NUMBEROFARTICLES' , '' );
$tpl -> set ( 'd' , 'TOTAL' , '' );
$tpl -> set ( 'd' , 'ONCLICK' , '' );
$tpl -> set ( 'd' , 'EXPAND' , '' );
$tpl -> set ( 'd' , 'ROWNAME' , '' );
$tpl -> set ( 'd' , 'INTHISLANGUAGE' , '' );
$tpl -> set ( 'd' , 'DISPLAY_ROW' , $sDisplay );
$bgcolor = $cfg [ " color " ][ " table_dark " ];
$tpl -> set ( 's' , 'SUMBGCOLOR' , $cfg [ " color " ][ " table_dark " ]);
$tpl -> set ( 's' , 'SUMTEXT' , " Summe " );
$tpl -> set ( 's' , 'SUMNUMBEROFARTICLES' , $sumNumberOfArticles );
$tpl -> set ( 's' , 'SUMTOTAL' , $total );
$tpl -> set ( 's' , 'SUMINTHISLANGUAGE' , $inThisLanguage );
$tpl -> next ();
}
/**
* Generates a top < n > statistics page
*
* @ param $yearmonth Specifies the year and month from which to retrieve the
* statistics , specify " current " to retrieve the current
* entries
* @ param $top Specifies the amount of pages to display
*
* @ author Timo A . Hummel < Timo . Hummel @ 4 fb . de >
* @ copyright four for business AG < http :// www . 4 fb . de >
*
* @ return none
*
*/
function statsOverviewTop ( $yearmonth , $top ) {
global $cfg , $db , $tpl , $client , $lang ;
if ( strcmp ( $yearmonth , " current " ) == 0 ) {
$sql = " SELECT
C . title , A . visited , B . idcat as idcat
FROM " . $cfg["tab"] [ " stat " ]. " AS A ,
" . $cfg["tab"] [ " cat_art " ]. " AS B ,
" . $cfg["tab"] [ " art_lang " ]. " AS C
WHERE
C . idart = B . idart
AND
C . idlang = A . idlang
AND
B . idcatart = A . idcatart
AND
A . idclient = '".Contenido_Security::toInteger($client)."'
AND
A . idlang = '".Contenido_Security::toInteger($lang)."'
ORDER BY
A . visited DESC
LIMIT
" .Contenido_Security::escapeDB( $top , $db );
} else {
$sql = " SELECT
C . title , A . visited , B . idcat as idcat
FROM " . $cfg["tab"] [ " stat_archive " ]. " AS A ,
" . $cfg["tab"] [ " cat_art " ]. " AS B ,
" . $cfg["tab"] [ " art_lang " ]. " AS C
WHERE
C . idart = B . idart
AND
C . idlang = A . idlang
AND
B . idcatart = A . idcatart
AND
A . idclient = '".Contenido_Security::toInteger($client)."'
AND
A . archived = '".Contenido_Security::escapeDB($yearmonth, $db)."'
AND
A . idlang = '".Contenido_Security::toInteger($lang)."'
ORDER BY
A . visited DESC
LIMIT
" .Contenido_Security::escapeDB( $top , $db );
}
$db -> query ( $sql );
while ( $db -> next_record ()) {
$cat_name = " " ;
statCreateLocationString ( $db -> f ( 'idcat' ), " / " , $cat_name );
$bgcolor = $cfg [ " color " ][ " table_light " ];
$tpl -> set ( 'd' , 'BGCOLOR' , $bgcolor );
$tpl -> set ( 'd' , 'PADDING_LEFT' , '5' );
$tpl -> set ( 'd' , 'PATH' , " Pfad: / " . $cat_name );
$tpl -> set ( 'd' , 'BORDERCOLOR' , $cfg [ " color " ][ " table_border " ]);
$tpl -> set ( 'd' , 'TEXT' , $db -> f ( 0 ));
$tpl -> set ( 'd' , 'TOTAL' , $db -> f ( 1 ));
$tpl -> next ();
}
}
/**
* Returns the canonical month .
*
* Wrapper for function getCanonicalMonth ()
*
* @ param int $month The digit representation of a month
* @ return string Textual representation of a month
*/
function statReturnCanonicalMonth ( $month ) {
return getCanonicalMonth ( $month );
}
/**
* Generates the location string for passed category id .
*
* Performs a recursive call , if parent category doesn ' t matches to 0
*
* @ param int $idcat The category id
* @ param string $seperator Separator for location string
* @ param string $cat_str The location string variable ( reference )
* @ return void
*/
function statCreateLocationString ( $idcat , $seperator , & $cat_str ) {
global $cfg , $db , $client , $lang ;
$sql = " SELECT
a . name AS name ,
a . idcat AS idcat ,
b . parentid AS parentid
FROM
" . $cfg["tab"] [ " cat_lang " ]. " AS a ,
" . $cfg["tab"] [ " cat " ]. " AS b
WHERE
a . idlang = '".Contenido_Security::toInteger($lang)."' AND
b . idclient = '".Contenido_Security::toInteger($client)."' AND
b . idcat = '".Contenido_Security::toInteger($idcat)."' AND
a . idcat = b . idcat " ;
$db4 = new DB_ConLite ;
$db4 -> query ( $sql );
$db4 -> next_record ();
$name = $db4 -> f ( " name " );
$parentid = $db4 -> f ( " parentid " );
$tmp_cat_str = $name . $seperator . $cat_str ;
$cat_str = $tmp_cat_str ;
if ( $parentid != 0 ) {
statCreateLocationString ( $parentid , $seperator , $cat_str );
} else {
$sep_length = strlen ( $seperator );
$str_length = strlen ( $cat_str );
$tmp_length = $str_length - $sep_length ;
$cat_str = substr ( $cat_str , 0 , $tmp_length );
}
}
/**
* Generates a top < n > statistics page
*
* @ param $year Specifies the year from which to retrieve the
* statistics
* @ param $top Specifies the amount of pages to display
*
* @ author Timo A . Hummel < Timo . Hummel @ 4 fb . de >
* @ copyright four for business AG < http :// www . 4 fb . de >
*
* @ return none
*
*/
function statsOverviewTopYear ( $year , $top ) {
global $cfg , $db , $tpl , $client , $lang ;
$sql = " SELECT
C . title , SUM ( A . visited ) as visited , B . idcat as idcat
FROM " . $cfg["tab"] [ " stat_archive " ]. " AS A ,
" . $cfg["tab"] [ " cat_art " ]. " AS B ,
" . $cfg["tab"] [ " art_lang " ]. " AS C
WHERE
C . idart = B . idart
AND
C . idlang = A . idlang
AND
B . idcatart = A . idcatart
AND
A . idclient = '".Contenido_Security::toInteger($client)."'
AND
A . archived LIKE '".Contenido_Security::escapeDB($year, $db)."%'
AND
A . idlang = '".Contenido_Security::toInteger($lang)."'
2019-07-07 18:14:22 +00:00
GROUP BY A . idcatart ,
C . title
2016-10-06 15:57:01 +00:00
ORDER BY
visited DESC
LIMIT
" .Contenido_Security::escapeDB( $top , $db );
$db -> query ( $sql );
while ( $db -> next_record ()) {
$cat_name = " " ;
statCreateLocationString ( $db -> f ( 'idcat' ), " / " , $cat_name );
$tpl -> set ( 'd' , 'PATH' , " Pfad: / " . $cat_name );
$bgcolor = $cfg [ " color " ][ " table_light " ];
$tpl -> set ( 'd' , 'BGCOLOR' , $bgcolor );
$tpl -> set ( 'd' , 'PADDING_LEFT' , '0' );
$tpl -> set ( 'd' , 'BORDERCOLOR' , $cfg [ " color " ][ " table_border " ]);
$tpl -> set ( 'd' , 'TEXT' , $db -> f ( 0 ));
$tpl -> set ( 'd' , 'TOTAL' , $db -> f ( 1 ));
$tpl -> next ();
}
}
/**
* Returns a drop down to choose the stats to display
*
* @ param none
* @ author Timo A . Hummel < Timo . Hummel @ 4 fb . de >
* @ copyright four for business AG < http :// www . 4 fb . de >
*
* @ return string Returns a drop down string
*
*/
function statDisplayTopChooser ( $default ) {
if ( $default == " top10 " ) { $defaultTop10 = " selected " ;}
if ( $default == " top20 " ) { $defaultTop20 = " selected " ;}
if ( $default == " top30 " ) { $defaultTop30 = " selected " ;}
if ( $default == " all " ) { $defaultAll = " selected " ;}
return ( " <form name= \" name \" > " .
" <select class= \" text_medium \" onchange= \" top10Action(this) \" > " .
" <option value= \" top10 \" $defaultTop10 > " . i18n ( " Top 10 " ) . " </option> " .
" <option value= \" top20 \" $defaultTop20 > " . i18n ( " Top 20 " ) . " </option> " .
" <option value= \" top30 \" $defaultTop30 > " . i18n ( " Top 30 " ) . " </option> " .
" <option value= \" all \" $defaultAll > " . i18n ( " All " ) . " </option> " .
" </select> " .
" </form> " );
}
/**
* Returns a drop down to choose the stats to display for yearly summary pages
*
* @ param none
* @ author Timo A . Hummel < Timo . Hummel @ 4 fb . de >
* @ copyright four for business AG < http :// www . 4 fb . de >
*
* @ return string Returns a drop down string
*
*/
function statDisplayYearlyTopChooser ( $default ) {
if ( $default == " top10 " ) { $defaultTop10 = " selected " ;}
if ( $default == " top20 " ) { $defaultTop20 = " selected " ;}
if ( $default == " top30 " ) { $defaultTop30 = " selected " ;}
if ( $default == " all " ) { $defaultAll = " selected " ;}
return ( " <form name= \" name \" > " .
" <select class= \" text_medium \" onchange= \" top10ActionYearly(this) \" > " .
" <option value= \" top10 \" $defaultTop10 > " . i18n ( " Top 10 " ) . " </option> " .
" <option value= \" top20 \" $defaultTop20 > " . i18n ( " Top 20 " ) . " </option> " .
" <option value= \" top30 \" $defaultTop30 > " . i18n ( " Top 30 " ) . " </option> " .
" <option value= \" all \" $defaultAll > " . i18n ( " All " ) . " </option> " .
" </select> " .
" </form> " );
}
/**
* Return an array with all years which are available as stat files
*
* @ param mixed many
* @ author Timo A . Hummel < Timo . Hummel @ 4 fb . de >
* @ copyright four for business AG < http :// www . 4 fb . de >
*
* @ return array Array of strings with years .
*/
function statGetAvailableYears ( $client , $lang ) {
global $cfg , $db ;
$availableYears = array ();
$sql = " SELECT SUBSTRING(`archived`,1,4)
FROM
" . $cfg["tab"] [ " stat_archive " ]. "
WHERE
idlang = '".Contenido_Security::toInteger($lang)."' AND
idclient = '".Contenido_Security::toInteger($client)."'
GROUP BY
SUBSTRING ( `archived` , 1 , 4 )
ORDER BY
SUBSTRING ( `archived` , 1 , 4 ) DESC " ;
$db -> query ( $sql );
while ( $db -> next_record ()) {
array_push ( $availableYears , $db -> f ( 0 ));
}
return ( $availableYears );
}
/**
* Return an array with all months for a specific year which are available
* as stat files
*
* @ param mixed many
* @ author Timo A . Hummel < Timo . Hummel @ 4 fb . de >
* @ copyright four for business AG < http :// www . 4 fb . de >
*
* @ return array Array of strings with months .
*/
function statGetAvailableMonths ( $year , $client , $lang ) {
global $cfg , $db ;
$availableYears = array ();
$sql = " SELECT SUBSTRING(`archived`,5,2)
FROM
" . $cfg["tab"] [ " stat_archive " ]. "
WHERE
idlang = '".Contenido_Security::toInteger($lang)."' AND
idclient = '".Contenido_Security::toInteger($client)."' AND
SUBSTRING ( `archived` , 1 , 4 ) = '".Contenido_Security::escapeDB($year, $db)."'
GROUP BY
SUBSTRING ( `archived` , 5 , 2 )
ORDER BY SUBSTRING ( `archived` , 5 , 2 ) DESC " ;
$db -> query ( $sql );
while ( $db -> next_record ()) {
array_push ( $availableYears , $db -> f ( 0 ));
}
return ( $availableYears );
}
/**
* Resets the statistic for passed client
*
* @ param int $client Id of client
* @ return void
*/
function statResetStatistic ( $client ) {
global $db ;
global $cfg ;
$sql = " UPDATE " . $cfg [ " tab " ][ " stat " ] . " SET visited=0 WHERE idclient=' " . Contenido_Security :: toInteger ( $client ) . " ' " ;
$db -> query ( $sql );
}
/**
* Deletes existing heap table ( table in memory ) and creates it .
*
* @ param string $sHeapTable Table name
* @ param DB_ConLite $db Database object
* @ return void
*/
function buildHeapTable ( $sHeapTable , $db ) {
global $cfg ;
$sql = " DROP TABLE IF EXISTS " . Contenido_Security :: escapeDB ( $sHeapTable , $db ) . " ; " ;
$db -> query ( $sql );
$sql = " CREATE TABLE " . Contenido_Security :: escapeDB ( $sHeapTable , $db ) . " TYPE=HEAP
SELECT
A . idcatart ,
A . idcat ,
A . idart ,
B . idstatarch ,
B . archived ,
B . idlang ,
B . idclient ,
B . visited
FROM
" . $cfg['tab'] ['cat_art']. " AS A , " . $cfg['tab'] ['stat_archive']. " AS B
WHERE
A . idcatart = B . idcatart ; " ;
$db -> query ( $sql );
$sql = " ALTER TABLE ` " . Contenido_Security :: escapeDB ( $sHeapTable , $db ) . " ` ADD PRIMARY KEY (`idcatart`,`idcat` ,`idart`,`idstatarch` ,`archived`,`idlang`,`idclient` ,`visited`); " ;
$db -> query ( $sql );
}
?>