Changeset 5766

Show
Ignore:
Timestamp:
04/16/08 20:25:18 (9 months ago)
Author:
inureyes
Message:

#934

  • 버그 수정
  • 통계 관련 컴포넌트 개수
  • 레거시 함수 추가 및 기존 모델중 일부 제외
Location:
trunk
Files:
1 added
2 removed
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/components/Textcube.Model.Paging.php

    r5285 r5766  
    44/// See the GNU General Public License for more details. (/doc/LICENSE, /doc/COPYRIGHT) 
    55class Paging { 
     6    function initPaging($url, $prefix = '?page=') { 
     7        return array('url' => rtrim($url,'?'), 'prefix' => $prefix, 'postfix' => '', 'total' => 0, 'pages' => 0, 'page' => 0, 'before' => array(), 'after' => array()); 
     8    } 
     9     
    610    function getPagingView( & $paging, & $template, & $itemTemplate) { 
    711        requireComponent('Textcube.Function.misc'); 
     
    99103        return $view; 
    100104    } 
     105     
     106    function fetchWithPaging($sql, $page, $count, $url = null, $prefix = '?page=', $countItem = null) { 
     107        global $folderURL, $service; 
     108        if ($url === null) 
     109            $url = $folderURL; 
     110        $paging = array('url' => $url, 'prefix' => $prefix, 'postfix' => ''); 
     111        if (empty($sql)) 
     112            return array(array(), $paging); 
     113        if (preg_match('/\s(FROM.*)(ORDER BY.*)$/si', $sql, $matches)) 
     114            $from = $matches[1]; 
     115        else 
     116            return array(array(), $paging); 
     117        $paging['total'] = POD::queryCell("SELECT COUNT(*) $from"); 
     118        if ($paging['total'] === null) 
     119            return array(array(), $paging); 
     120        if (empty($count)) $count = 1; 
     121        $paging['pages'] = intval(ceil($paging['total'] / $count)); 
     122        $paging['page'] = is_numeric($page) ? $page : 1; 
     123        if ($paging['page'] > $paging['pages']) { 
     124            $paging['page'] = $paging['pages']; 
     125            if ($paging['pages'] > 0) 
     126                $paging['prev'] = $paging['pages'] - 1; 
     127            //return array(array(), $paging); 
     128        } 
     129        if ($paging['page'] > 1) 
     130            $paging['prev'] = $paging['page'] - 1; 
     131        if ($paging['page'] < $paging['pages']) 
     132            $paging['next'] = $paging['page'] + 1; 
     133        $offset = ($paging['page'] - 1) * $count; 
     134        if ($offset < 0) $offset = 0; 
     135        if ($countItem !== null) $count = $countItem; 
     136        return array(POD::queryAll("$sql LIMIT $offset, $count"), $paging); 
     137    } 
    101138} 
    102139?> 
  • trunk/components/Textcube.Model.Statistics.php

    r5285 r5766  
    33/// All rights reserved. Licensed under the GPL. 
    44/// See the GNU General Public License for more details. (/doc/LICENSE, /doc/COPYRIGHT) 
     5 
     6// Dependency : Textcube.Model.Paging (getRefererLogsWithPage) 
     7 
    58class Statistics { 
    69    function getStatistics($blogid) { 
    710        global $database; 
    811        $stats = array('total' => 0, 'today' => 0, 'yesterday' => 0); 
    9         $result = mysql_query("select visits from {$database['prefix']}BlogStatistics where blogid = $blogid"); 
    10         if (mysql_num_rows($result) == 1) 
    11             list($stats['total']) = mysql_fetch_array($result); 
    12         $result = mysql_query("select visits from {$database['prefix']}DailyStatistics where blogid = $blogid and `date` = " . Timestamp::getDate()); 
    13         if (mysql_num_rows($result) == 1) 
    14             list($stats['today']) = mysql_fetch_array($result); 
    15         $result = mysql_query("select visits from {$database['prefix']}DailyStatistics where blogid = $blogid and `date` = " . Timestamp::getDate(time() - 86400)); 
    16         if (mysql_num_rows($result) == 1) 
    17             list($stats['yesterday']) = mysql_fetch_array($result); 
     12        $result = POD::queryCell("SELECT visits FROM {$database['prefix']}BlogStatistics WHERE blogid = $blogid"); 
     13        if (!empty($result)) $stats['total'] = $result; 
     14         
     15        $result = POD::queryAll("SELECT date, visits FROM {$database['prefix']}DailyStatistics WHERE blogid = $blogid AND `date` in ('" . Timestamp::getDate()."','".Timestamp::getDate(time()-86400)."')"); 
     16        $stat['today'] = $stat['yesterday'] = 0; 
     17        foreach($result as $data) { 
     18            if($data['date'] == Timestamp::getDate()) $stats['today'] = $data['visits']; 
     19            if($data['date'] == Timestamp::getDate(time()-86400)) $stats['yesterday'] = $data['visits']; 
     20        } 
     21     
    1822        return $stats; 
    1923    } 
     
    2125    function getDailyStatistics($period) { 
    2226        global $database, $blogid; 
    23         return POD::queryAll("SELECT date, visits FROM {$database['prefix']}DailyStatistics WHERE blogid = $blogid AND LEFT(date, 6) = $period ORDER BY date DESC"); 
     27        return POD::queryAll("SELECT date, visits  
     28            FROM {$database['prefix']}DailyStatistics  
     29            WHERE blogid = $blogid  
     30                AND LEFT(date, 6) = $period  
     31            ORDER BY date DESC"); 
    2432    } 
    2533     
     
    3442        global $database; 
    3543        $statistics = array(); 
    36         if ($result = mysql_query("select left(date, 6) date, sum(visits) visits from {$database['prefix']}DailyStatistics where blogid = $blogid group by left(date, 6) order by date desc")) { 
    37             while ($record = mysql_fetch_array($result)) 
     44        if ($result = POD::queryAll("SELECT left(date, 6) date, sum(visits) visits  
     45            FROM {$database['prefix']}DailyStatistics  
     46            WHERE blogid = $blogid  
     47            GROUP BY left(date, 6)  
     48            ORDER BY date DESC")) { 
     49            foreach($result as $record) 
    3850                array_push($statistics, $record); 
    3951        } 
     
    4456        global $database; 
    4557        $statistics = array(); 
    46         if ($result = mysql_query("select host, count from {$database['prefix']}RefererStatistics where blogid = $blogid order by count desc limit 20")) { 
    47             while ($record = mysql_fetch_array($result)) 
     58        if ($result = POD::queryAll("SELECT host, count FROM {$database['prefix']}RefererStatistics WHERE blogid = $blogid ORDER BY COUNT DESC LIMIT 20")) { 
     59            foreach($result as $record) 
    4860                array_push($statistics, $record); 
    4961        } 
     
    5365    function getRefererLogsWithPage($page, $count) {   
    5466        global $database, $blogid; 
    55         return Statistics::fetchWithPaging("SELECT host, url, referred FROM {$database['prefix']}RefererLogs WHERE blogid = $blogid ORDER BY referred DESC", $page, $count);   
    56     }   
     67        requireComponent('Textcube.Model.Paging'); 
     68        return Paging::fetchWithPaging("SELECT host, url, referred FROM {$database['prefix']}RefererLogs WHERE blogid = $blogid ORDER BY referred DESC", $page, $count);   
     69    } 
    5770 
    5871    function getRefererLogs() { 
    59         global $database, $blogid; 
    60         return POD::queryAll("SELECT host, url, referred FROM {$database['prefix']}RefererLogs WHERE blogid = $blogid ORDER BY referred DESC LIMIT 1500"); 
     72        global $database; 
     73        return POD::queryAll("SELECT host, url, referred FROM {$database['prefix']}RefererLogs WHERE blogid = ".getBlogId()." ORDER BY referred DESC LIMIT 1500"); 
    6174    } 
    6275 
     
    6881            return; 
    6982        $id = session_id(); 
    70         $result = mysql_query("select blog from {$database['prefix']}SessionVisits where id = '$id' and address = '{$_SERVER['REMOTE_ADDR']}' and blog = $blogid"); 
    71         if ($result && (mysql_num_rows($result) > 0)) 
     83        if(POD::queryCount("SELECT blogid FROM {$database['prefix']}SessionVisits WHERE id = '$id' AND address = '{$_SERVER['REMOTE_ADDR']}' AND blogid = $blogid") > 0) 
    7284            return; 
    73         if (mysql_query("insert into {$database['prefix']}SessionVisits values('$id', '{$_SERVER['REMOTE_ADDR']}', $blogid)") && (mysql_affected_rows() > 0)) { 
    74             mysql_query("update {$database['prefix']}BlogStatistics set visits = visits + 1 where blogid = $blogid"); 
    75             if (mysql_affected_rows() == 0) { 
    76                 if (mysql_query("update {$database['prefix']}BlogStatistics set visits = visits + 1 where blogid = $blogid") || (mysql_affected_rows() == 0)) 
    77                     mysql_query("insert into {$database['prefix']}BlogStatistics values($blogid, 1)"); 
     85        if (POD::queryCount("INSERT INTO {$database['prefix']}SessionVisits values('$id', '{$_SERVER['REMOTE_ADDR']}', $blogid)") > 0) { 
     86            if(POD::queryCount("UPDATE {$database['prefix']}BlogStatistics SET visits = visits + 1 WHERE blogid = $blogid LIMIT 1") < 1) { 
     87                POD::execute("INSERT into {$database['prefix']}BlogStatistics values($blogid, 1)"); 
    7888            } 
     89             
    7990            $period = Timestamp::getDate(); 
    80             mysql_query("update {$database['prefix']}DailyStatistics set visits = visits + 1 where blogid = $blogid and `date` = $period"); 
    81             if (mysql_affected_rows() == 0) { 
    82                 if (!mysql_query("insert into {$database['prefix']}DailyStatistics values($blogid, $period, 1)") || (mysql_affected_rows() == 0)) 
    83                     mysql_query("update {$database['prefix']}DailyStatistics set visits = visits + 1 where blogid = $blogid and `date` = $period"); 
     91            if(POD::queryCount("UPDATE {$database['prefix']}DailyStatistics SET visits = visits + 1 WHERE blogid = $blogid AND `date` = $period LIMIT 1") < 1) { 
     92                POD::execute("INSERT into {$database['prefix']}DailyStatistics values($blogid, $period, 1)"); 
    8493            } 
    8594            if (!empty($_SERVER['HTTP_REFERER'])) { 
     
    93102                    $host = POD::escapeString(UTF8::lessenAsEncoding($referer['host'], 64)); 
    94103                    $url = POD::escapeString(UTF8::lessenAsEncoding($_SERVER['HTTP_REFERER'], 255)); 
    95                     mysql_query("insert into {$database['prefix']}RefererLogs values($blogid, '$host', '$url', UNIX_TIMESTAMP())"); 
    96                     mysql_query("delete from {$database['prefix']}RefererLogs where referred < UNIX_TIMESTAMP() - 604800"); 
    97                     if (!mysql_query("update {$database['prefix']}RefererStatistics set count = count + 1 where blogid = $blogid and host = '$host'") || (mysql_affected_rows() == 0)) 
    98                         mysql_query("insert into {$database['prefix']}RefererStatistics values($blogid, '$host', 1)"); 
     104                    POD::query("INSERT INTO {$database['prefix']}RefererLogs values($blogid, '$host', '$url', UNIX_TIMESTAMP())"); 
     105                    POD::query("DELETE FROM {$database['prefix']}RefererLogs WHERE referred < UNIX_TIMESTAMP() - 604800"); 
     106                    if (!POD::queryCount("UPDATE {$database['prefix']}RefererStatistics SET count = count + 1 WHERE blogid = $blogid AND host = '$host' LIMIT 1")) 
     107                        POD::execute("INSERT into {$database['prefix']}RefererStatistics values($blogid, '$host', 1)"); 
    99108                } 
    100109            } 
     
    108117        if ((!is_null($prevCount)) && ($prevCount == 0)) 
    109118            return true; 
    110         mysql_query("update {$database['prefix']}BlogStatistics set visits = 0 where blogid = $blogid"); 
    111         if (mysql_affected_rows() == 0) 
    112             mysql_query("insert into {$database['prefix']}BlogStatistics values($blogid, 0)"); 
    113         return mysql_affected_rows() ? true : false; 
    114     } 
    115      
    116     function fetchWithPaging($sql, $page, $count, $url = null, $prefix = '?page=') { 
    117         global $folderURL; 
    118         requireComponent('Eolin.PHP.Core'); 
    119         if (is_null($url)) 
    120             $url = $folderURL; 
    121         $paging = array('url' => $url, 'prefix' => $prefix, 'postfix' => ''); 
    122         if (empty($sql)) 
    123             return array(array(), $paging); 
    124         if (preg_match('/\s(FROM.*)$/si', $sql, $matches)) 
    125             $from = $matches[1]; 
    126         else 
    127             return array(array(), $paging); 
    128         $paging['total'] = POD::queryCell("SELECT COUNT(*) $from"); 
    129         if (is_null($paging['total'])) 
    130             return array(array(), $paging); 
    131         $paging['pages'] = intval(ceil($paging['total'] / $count)); 
    132         $paging['page'] = is_numeric($page) ? $page : 1; 
    133         if ($paging['page'] > $paging['pages']) { 
    134             $paging['page'] = $paging['pages']; 
    135             if ($paging['pages'] > 0) 
    136                 $paging['prev'] = $paging['pages'] - 1; 
    137             //return array(array(), $paging); 
     119        if(POD::execute("UPDATE {$database['prefix']}BlogStatistics SET visits = 0 WHERE blogid = $blogid")) { 
     120            return true; 
     121        } else { 
     122            $result = POD::execute("INSERT INTO {$database['prefix']}BlogStatistics values($blogid, 0)"); 
     123            return $result; 
    138124        } 
    139         if ($paging['page'] > 1) 
    140             $paging['prev'] = $paging['page'] - 1; 
    141         if ($paging['page'] < $paging['pages']) 
    142             $paging['next'] = $paging['page'] + 1; 
    143         $offset = ($paging['page'] - 1) * $count; 
    144         return array(POD::queryAll("$sql LIMIT $offset, $count"), $paging); 
    145125    } 
    146126} 
  • trunk/lib/includeForBlog.php

    r5365 r5766  
    3535require ROOT .'/lib/model/blog.locative.php'; 
    3636require ROOT .'/lib/model/blog.sidebar.php'; 
    37 require ROOT .'/lib/model/blog.statistics.php'; 
    3837require ROOT .'/lib/model/blog.trackback.php'; 
    3938require ROOT .'/lib/model/blog.tag.php'; 
    4039require ROOT .'/lib/model/blog.user.php'; 
    4140require ROOT .'/lib/model/common.setting.php'; 
    42 require ROOT .'/lib/model/common.paging.php'; 
    4341require ROOT .'/lib/model/common.plugin.php'; 
    4442require ROOT .'/lib/model/common.module.php'; 
     43require ROOT .'/lib/model/common.legacysupport.php'; 
    4544if (defined( 'TCDEBUG')) __tcSqlLogPoint('End of model loading'); 
    4645// Views 
  • trunk/lib/includeForBlogOwner.php

    r5630 r5766  
    3030require ROOT .'/lib/model/common.module.php'; 
    3131require ROOT .'/lib/model/common.setting.php'; 
    32 require ROOT .'/lib/model/common.paging.php'; 
     32require ROOT .'/lib/model/common.legacysupport.php'; 
    3333// Views 
    3434require ROOT .'/lib/view/html.php'; 
  • trunk/lib/includeForReader.php

    r5729 r5766  
    2424require ROOT .'/lib/model/blog.user.php'; 
    2525require ROOT .'/lib/model/blog.fx.php'; 
    26 require ROOT .'/lib/model/common.paging.php'; 
     26require ROOT .'/lib/model/common.legacysupport.php'; 
    2727require ROOT .'/lib/model/common.setting.php'; 
    2828require ROOT .'/lib/model/common.plugin.php';