root/trunk/website/blog/statsbyyear.cfm @ 15

Revision 5, 13.1 kB (checked in by DanWilson, 17 years ago)

Initial Commit Of ModelGlue? Website (upgrade to blogcfc 511)

Line 
1<cfsetting enablecfoutputonly=true>
2<cfprocessingdirective pageencoding="utf-8">
3<!---
4        Name         : Stats
5        Author       : Raymond Camden
6        Created      : November 19, 2004
7        Last Updated : December 31, 2008 (by Aaron S. West)
8        History      : reset for 5.0
9                                 : gettopviews didnt filter by blog. gettotalviews added (rkc 7/17/06)
10                                 : rb use, and subscriber count wsn't filtering by verified (rkc 8/20/06)
11                                 : comment mod support (rkc 12/7/06)
12        Purpose          : Stats
13--->
14
15<cfmodule template="tags/layout.cfm" title="#rb("stats")#">
16       
17        <cfset dsn = application.blog.getProperty("dsn")>
18        <cfset dbtype = application.blog.getProperty("blogdbtype")>
19        <cfset blog = application.blog.getProperty("name")>
20        <cfset username = application.blog.getProperty("username")>
21        <cfset password = application.blog.getProperty("password")>
22        <cfif isDefined("URL.statsYear") AND isNumericDate(URL.statsYear)>
23                <cfset statsYear = URL.statsYear>
24        <cfelse>
25                <cfset statsYear = year(now())>
26        </cfif>
27       
28        <!--- get a bunch of crap --->
29        <cfquery name="getTotalEntries" datasource="#dsn#" username="#username#" password="#password#">
30                select  count(id) as totalentries,
31                                min(posted) as firstentry,
32                                max(posted) as lastentry
33                from    tblblogentries
34                where   tblblogentries.blog = <cfqueryparam cfsqltype="cf_sql_varchar" value="#blog#">
35                and             year(posted) = <cfqueryparam cfsqltype="cf_sql_numeric" value="#statsYear#">
36        </cfquery>
37
38        <cfquery name="getTotalSubscribers" datasource="#dsn#" username="#username#" password="#password#">
39                select  count(email) as totalsubscribers
40                from    tblblogsubscribers
41                where   tblblogsubscribers.blog = <cfqueryparam cfsqltype="cf_sql_varchar" value="#blog#">
42                and             verified = 1
43        </cfquery>
44
45        <cfquery name="getTotalViews" datasource="#dsn#" username="#username#" password="#password#">
46                select          sum(views) as total
47                from            tblblogentries
48                where   tblblogentries.blog = <cfqueryparam cfsqltype="cf_sql_varchar" value="#blog#">
49                and             year(posted) = <cfqueryparam cfsqltype="cf_sql_numeric" value="#statsYear#">
50        </cfquery>
51
52        <cfquery name="getTopViews" datasource="#dsn#" username="#username#" password="#password#">
53                select          <cfif dbtype is not "mysql">top 10</cfif> id, title, views
54                from            tblblogentries
55                where   tblblogentries.blog = <cfqueryparam cfsqltype="cf_sql_varchar" value="#blog#">
56                and             year(posted) = <cfqueryparam cfsqltype="cf_sql_numeric" value="#statsYear#">
57                order by        views desc
58                <cfif dbtype is "mysql">limit 10</cfif>         
59        </cfquery>
60       
61        <cfquery name="getTotalComments" datasource="#dsn#" username="#username#" password="#password#">
62                select  count(tblblogcomments.id) as totalcomments
63                from    tblblogcomments, tblblogentries
64                where   tblblogcomments.entryidfk = tblblogentries.id
65                and             tblblogentries.blog = <cfqueryparam cfsqltype="cf_sql_varchar" value="#blog#">
66                <cfif application.commentmoderation>
67                and             tblblogcomments.moderated = 1
68                </cfif>
69                and             year(tblblogcomments.posted) = <cfqueryparam cfsqltype="cf_sql_numeric" value="#statsYear#">
70        </cfquery>
71       
72        <cfif application.blog.getProperty("allowtrackbacks")>
73                <!--- RBB: 1/20/2006: get trackbacks --->
74                <cfquery name="getTotalTrackbacks" datasource="#dsn#" username="#username#" password="#password#">
75                        select count(tblblogtrackbacks.id) as totaltrackbacks
76                        from    tblblogtrackbacks, tblblogentries
77                        where   tblblogtrackbacks.entryid = tblblogentries.id
78                        and             tblblogentries.blog = <cfqueryparam cfsqltype="cf_sql_varchar" value="#blog#">
79                </cfquery>
80        </cfif>
81               
82        <!--- gets num of entries per category --->
83        <cfquery name="getCategoryCount" datasource="#dsn#" username="#username#" password="#password#">
84                select  categoryid, categoryname, count(categoryidfk) as total
85                from    tblblogcategories, tblblogentriescategories, tblblogentries
86                where   tblblogentriescategories.categoryidfk = tblblogcategories.categoryid
87                and             tblblogcategories.blog = <cfqueryparam cfsqltype="cf_sql_varchar" value="#blog#">
88                and     tblblogentriescategories.entryidfk = tblblogentries.id
89                and             year(tblblogentries.posted) = <cfqueryparam cfsqltype="cf_sql_numeric" value="#statsYear#">
90                group by tblblogcategories.categoryid, tblblogcategories.categoryname
91                <cfif dbtype is not "msaccess">
92                        order by total desc
93                <cfelse>
94                        order by count(categoryidfk) desc
95                </cfif>
96        </cfquery>
97       
98        <!--- gets num of comments per entry, top 10 --->
99        <cfquery name="topCommentedEntries" datasource="#dsn#" username="#username#" password="#password#">
100                select
101                <cfif dbtype is not "mysql">top 10</cfif>
102                tblblogentries.id, tblblogentries.title, count(tblblogcomments.id) as commentcount
103                from                    tblblogentries, tblblogcomments
104                where                   tblblogcomments.entryidfk = tblblogentries.id
105                and                             tblblogentries.blog = <cfqueryparam cfsqltype="cf_sql_varchar" value="#blog#">
106                <cfif application.commentmoderation>
107                and                             tblblogcomments.moderated = 1
108                </cfif>
109                and             year(tblblogcomments.posted) = <cfqueryparam cfsqltype="cf_sql_numeric" value="#statsYear#">
110               
111                group by                tblblogentries.id, tblblogentries.title
112                <cfif dbtype is not "msaccess">
113                        order by        commentcount desc
114                <cfelse>
115                        order by        count(tblblogcomments.id) desc
116                </cfif>
117                <cfif dbtype is "mysql">limit 10</cfif>
118        </cfquery>
119
120        <!--- gets num of comments per category, top 10 --->
121        <cfquery name="topCommentedCategories" datasource="#dsn#" username="#username#" password="#password#">
122                select
123                <cfif dbtype is not "mysql">top 10</cfif>
124                                                tblblogcategories.categoryid,
125                                                tblblogcategories.categoryname,
126                                                count(tblblogcomments.id) as commentcount
127                from                    tblblogcategories, tblblogcomments, tblblogentriescategories
128                where                   tblblogcomments.entryidfk = tblblogentriescategories.entryidfk
129                and                             tblblogentriescategories.categoryidfk = tblblogcategories.categoryid
130                and                             tblblogcategories.blog = <cfqueryparam cfsqltype="cf_sql_varchar" value="#blog#">
131                and                             year(tblblogcomments.posted) = <cfqueryparam cfsqltype="cf_sql_numeric" value="#statsYear#">
132                <cfif application.commentmoderation>
133                and                             tblblogcomments.moderated = 1
134                </cfif>         
135                group by                tblblogcategories.categoryid, tblblogcategories.categoryname
136                <cfif dbtype is not "msaccess">
137                        order by        commentcount desc
138                <cfelse>
139                        order by        count(tblblogcomments.id) desc
140                </cfif>
141                <cfif dbtype is "mysql">limit 10</cfif>
142        </cfquery>
143       
144        <cfif application.blog.getProperty("allowtrackbacks")>
145                <!--- RBB 1/20/2006: gets num of trackbacks per entry, top 10 --->
146                <cfquery name="topTrackbackedEntries" datasource="#dsn#" username="#username#" password="#password#">
147                        select
148                        <cfif dbtype is not "mysql">top 10</cfif>
149                        tblblogentries.id, tblblogentries.title, count(tblblogtrackbacks.id) as trackbackcount
150                        from                    tblblogentries, tblblogtrackbacks
151                        where                   tblblogtrackbacks.entryid = tblblogentries.id
152                        and                             tblblogentries.blog = <cfqueryparam cfsqltype="cf_sql_varchar" value="#blog#">
153                        and                             year(tblblogtrackbacks.created) = <cfqueryparam cfsqltype="cf_sql_numeric" value="#statsYear#">
154                        group by                tblblogentries.id, tblblogentries.title
155                        <cfif dbtype is not "msaccess">
156                                order by        trackbackcount desc
157                        <cfelse>
158                                order by        count(tblblogtrackbacks.id) desc
159                        </cfif>
160                        <cfif dbtype is "mysql">limit 10</cfif>
161                </cfquery>     
162        </cfif>
163               
164        <cfquery name="topSearchTerms" datasource="#dsn#" username="#username#" password="#password#">
165                select         
166                <cfif dbtype is not "mysql">top 10</cfif>
167                                        searchterm, count(searchterm) as total
168                from            tblblogsearchstats
169                where           blog = <cfqueryparam cfsqltype="cf_sql_varchar" value="#blog#">
170                and                     year(searched) = <cfqueryparam cfsqltype="cf_sql_numeric" value="#statsYear#">
171
172                group by        searchterm
173                <cfif dbtype is not "msaccess">
174                        order by        total desc
175                <cfelse>
176                        order by        count(searchterm) desc
177                </cfif>
178                <cfif dbtype is "mysql">limit 10</cfif>
179        </cfquery>
180               
181        <cfset averageCommentsPerEntry = 0>     
182        <cfif getTotalEntries.totalEntries>
183                <cfset dur = dateDiff("d",getTotalEntries.firstEntry, now())>
184                <cfset averageCommentsPerEntry = getTotalComments.totalComments / getTotalEntries.totalEntries>
185        </cfif>
186       
187        <cfoutput>
188        <div class="date"><b>Stats for #statsYear#</b></div>
189        <div class="body">
190        <a href="##generalstats">#rb("generalstats")#</a><br>
191        <a href="##topviews">#rb("topviews")#</a><br>
192        <a href="##categorystats">#rb("categorystats")#</a><br>
193        <a href="##topentriesbycomments">#rb("topentriesbycomments")#</a><br>
194        <a href="##topcategoriesbycomments">#rb("topcategoriesbycomments")#</a><br>
195        <cfif application.blog.getProperty("allowtrackbacks")><a href="##topentriesbytrackbacks">#rb("topentriesbytrackbacks")#</a><br></cfif>
196        <a href="##topsearchterms">#rb("topsearchterms")#</a><br>
197        </div>
198       
199        <p />
200       
201        <div class="date"><a name="generalstats"></a><b>#rb("generalstats")#</b></div>
202        <div class="body">
203        <table border="1" width="100%">
204                <tr>
205                        <td><b>#rb("totalnumentries")#:</b></td>
206                        <td>#getTotalEntries.totalEntries#</td>
207                </tr>                   
208                <tr>
209                        <td><b>#rb("firstentry")#:</b></td>
210                        <td><cfif len(getTotalEntries.firstEntry)>#dateFormat(getTotalEntries.firstEntry,"mm/dd/yy")#<cfelse>&nbsp;</cfif></td>
211                </tr>
212                <tr>
213                        <td><b>#rb("lastentry")#:</b></td>
214                        <td><cfif len(getTotalEntries.lastEntry)>#dateFormat(getTotalEntries.lastEntry,"mm/dd/yy")#<cfelse>&nbsp;</cfif></td>
215                </tr>
216                <tr>
217                        <td><b>#rb("totalcomments")#:</b></td>
218                        <td>#getTotalComments.totalComments#</td>
219                </tr>
220                <tr>
221                        <td><b>#rb("avgcommentsperentry")#:</b></td>
222                        <td>#numberFormat(averageCommentsPerEntry,"999.99")#</td>
223                </tr>
224                <cfif application.blog.getProperty("allowtrackbacks")>
225                <!--- RBB: 1/20/06: Added total trackbacks --->
226                <tr>
227                        <td><b>#rb("totaltrackbacks")#:</b></td>
228                        <td>#getTotalTrackbacks.totalTrackbacks#</td>
229                </tr>           
230                </cfif>
231                <tr>
232                        <td><b>#rb("totalviews")#:</b></td>
233                        <td>#getTotalViews.total#</td>
234                </tr>
235                <tr>
236                        <td width="50%"><b>Average Views:</b></td>
237                        <td>
238                                <cfif gettotalentries.totalentries gt 0 and gettotalviews.total gt 0>
239                                #numberFormat(gettotalviews.total/gettotalentries.totalentries,"999.99")#
240                                <cfelse>
241                                0
242                                </cfif>
243                        </td>
244                </tr>
245                <tr>
246                        <td><b>#rb("totalsubscribers")#:</b></td>
247                        <td>#getTotalSubscribers.totalsubscribers#</td>
248                </tr>
249               
250        </table>
251        </div>
252
253        <p />
254       
255        <div class="date"><a name="topviews"></a><b>#rb("topviews")#</b></div>
256        <div class="body">
257        <table border="1" width="100%">
258                <cfloop query="getTopViews">
259                <tr>
260                        <td><b><a href="#application.blog.makeLink(id)#" rel="nofollow">#title#</a></b></td>
261                        <td>#views#</td>
262                </tr>
263                </cfloop>
264        </table>
265        </div>
266       
267        <p />
268       
269        <div class="date"><a name="categorystats"></a><b>#rb("categorystats")#</b></div>
270        <div class="body">
271        <table border="1" width="100%">
272                <cfloop query="getCategoryCount">
273                <tr>
274                        <td>#categoryname#</td>
275                        <td>#total#</td>
276                </tr>
277                </cfloop>
278        </table>
279        </div>
280       
281        <p />
282       
283        <div class="date"><a name="topentriesbycomments"></a><b>#rb("topentriesbycomments")#</b></div>
284        <div class="body">
285        <table border="1" width="100%">
286                <cfloop query="topCommentedEntries">
287                <tr>
288                        <td><b><a href="#application.blog.makeLink(id)#" rel="nofollow">#title#</a></b></td>
289                        <td>#commentCount#</td>
290                </tr>
291                </cfloop>
292        </table>
293        </div>
294       
295        <p />
296       
297        <div class="date"><a name="topcategoriesbycomments"></a><b>#rb("topcategoriesbycomments")#</b></div>
298        <div class="body">
299        <table border="1" width="100%">
300                <cfloop query="topCommentedCategories">
301                        <!---
302                                This is ugly code.
303                                I want to find the avg number of posts
304                                per entry for this category.
305                        --->
306                        <cfquery name="getTotalForThisCat" dbtype="query">
307                                select  total
308                                from    getCategoryCount
309                                where   categoryid = '#categoryid#'
310                        </cfquery>
311                        <cftry>
312                        <cfif getTotalForThisCat.total neq 0 and getTotalForThisCat.total neq "">
313                                <cfset avg = commentCount / getTotalForThisCat.total>
314                                <cfset avg = numberFormat(avg,"___.___")>
315                        <cfelse>
316                                <cfset avg = 0>
317                        </cfif>
318                        <tr>
319                                <td><b><a href="index.cfm?mode=cat&catid=#categoryid#" rel="nofollow">#categoryname#</a></b></td>
320                                <td>#commentCount# (#rb("avgcommentperentry")#: #avg#)</td>
321                        </tr>
322                        <cfcatch><cfdump var="#getTotalForThisCat#"></cfcatch>
323                        </cftry>
324                </cfloop>
325        </table>
326        </div>
327
328        <p />
329       
330        <cfif application.blog.getProperty("allowtrackbacks")>
331        <!--- RBB 1/20/2006: Added top entriex by trackbacks --->
332        <div class="date"><a name="topentriesbytrackbacks"></a><b>#rb("topentriesbytrackbacks")#</b></div>
333        <div class="body">
334        <table border="1" width="100%">
335                <cfloop query="topTrackbackedEntries">
336                <tr>
337                        <td><b><a href="#application.blog.makeLink(id)#" rel="nofollow">#title#</a></b></td>
338                        <td>#trackbackCount#</td>
339                </tr>
340                </cfloop>
341        </table>
342        </div>
343       
344        <p />
345        </cfif>
346       
347        <div class="date"><a name="topsearchterms"></a><b>#rb("topsearchterms")#</b></div>
348        <div class="body">
349        <table border="1" width="100%">
350                <cfloop query="topSearchTerms">
351                <tr>
352                        <td><b><a href="#application.rooturl#/index.cfm?mode=search&search=#urlEncodedFormat(searchterm)#" rel="nofollow">#searchterm#</a></b></td>
353                        <td>#total#</td>
354                </tr>
355                </cfloop>
356        </table>
357        </div>
358       
359        </cfoutput>
360       
361</cfmodule>
362
363<cfsetting enablecfoutputonly=false>
Note: See TracBrowser for help on using the browser.