Skip to content

code fixes and security-boost for (the awesome) wordpress.org/plugins/count-per-day by Tom Braider. Original credits and links kept unmodified.

Notifications You must be signed in to change notification settings

vincenzocasu/wp-count-per-day

Repository files navigation

count-per-day

code fixes and security-boost for (the awesome) wordpress.org/plugins/count-per-day by Tom Braider. Original credits and links kept unmodified.

major change: instead of accessing $_POST(and $GET, $_SERVER, ...) directly-

  • using filter input, along with custom filtering, content-validating and sanitizing (even before using any of WordPress' API).

the "plus" is that using filter-input method is "forcing" you to think of the limits each data field may contain, and providing a compatible-code with jenkins' "extreamly-secure-PHP-code-standards" in which forbids direct-accessing input variables and (some) other global variables.

read more at:


=== Count per Day === Contributors: Tom Braider Tags: counter, count, posts, visits, reads, dashboard, widget, shortcode Requires at least: 3.0 Tested up to: 4.7 Stable tag: 3.5.6 License: GPLv2 Donate link: http://www.tomsdimension.de/postcards

Visit Counter, shows reads and visitors per page, visitors today, yesterday, last week, last months and other statistics.

== Description ==

"Count per Day" counts 1 visit per IP per day. So any reload of the page do not increment the counter.

= Languages, Translators =

== Installation ==

  1. unzip plugin directory into the '/wp-content/plugins/' directory
  2. activate the plugin through the 'Plugins' menu in WordPress

The activation will create or update a table wp_cpd_counter.

The Visitors-per-Day function use 7 days as default. So don't surprise about a wrong value in the first week.

Configuration

See the Options Page and check the default values.

== Frequently Asked Questions ==

= Need Help? Find Bug? =

read and write comments on http://www.tomsdimension.de/wp-plugins/count-per-day

== Screenshots ==

  1. Statistics on Count-per-Day Dashboard
  2. Options
  3. Widget sample

== Arbitrary section ==

Shortcodes

You can use these shortcodes in the content of your posts to show a number or list or in your theme files while adding e.g. '<?php echo do_shortcode("[THE_SHORTCODE]"); ?>'. To use the shortcodes within a text widget you have to add 'add_filter("widget_text", "do_shortcode");' to the 'functions.php' of your theme.

[CPD_READS_THIS] [CPD_READS_TOTAL] [CPD_READS_TODAY] [CPD_READS_YESTERDAY] [CPD_READS_LAST_WEEK] [CPD_READS_THIS_MONTH] [CPD_READS_PER_MONTH] [CPD_VISITORS_TOTAL] [CPD_VISITORS_ONLINE] [CPD_VISITORS_TODAY] [CPD_VISITORS_YESTERDAY] [CPD_VISITORS_LAST_WEEK] [CPD_VISITORS_THIS_MONTH] [CPD_VISITORS_PER_MONTH] [CPD_VISITORS_PER_DAY] [CPD_VISITORS_PER_POST] [CPD_FIRST_COUNT] [CPD_POSTS_ON_DAY] [CPD_CLIENTS] [CPD_COUNTRIES] [CPD_COUNTRIES_USERS] [CPD_REFERERS] [CPD_FLOTCHART] [CPD_MOST_VISITED_POSTS limit="5" days="30" postsonly="1" posttypes="posts,pages"]

  • limit (optional): max records to show, default = all
  • days (optional), show last x days
  • postsonly (optional), 1 = don't show index pages
  • posttypes (optional), show this posttypes only, sets postsonly to 1 [CPD_POSTS_ON_DAY date="2010-10-06" limit="3"]
  • date (optional), format: year-month-day, default = today
  • limit (optional): max records to show, default = all [CPD_MAP width="500" height="340" what="reads"]
  • width and height: size, default 500x340 px
  • what: map content - reads|visitors|online, default reads [CPD_SEARCHES days="14" limit="20"]
  • days (optional), show last x days
  • limit (optional): show x most searched strings

Functions

You can place these functions in your template. Use <?php global $count_per_day; if(method_exists($count_per_day,"show")) echo $count_per_day->getReadsAll(true); ?> to check if plugin is activated.

show( $before, $after, $show, $count, $page )'

  • $before = text before number e.g. '<p>' (default "")
  • $after = text after number e.g. 'reads</p>' (default " reads")
  • $show = true/false, "echo" complete string or "return" number only (default true)
  • $count = true/false, false will not count the reads (default true)
  • $page (optional) PostID

'count()'

  • only count reads, without any output
  • 'show' call it

'getFirstCount( $return )'

  • shows date of first count
  • $return: 0 echo, 1 return output

'getUserPerDay( $days, $return )'

  • shows average number of visitors per day of the last $days days
  • default on dashboard (see it with mouse over number) = "Latest Counts - Days" in options
  • $return: 0 echo, 1 return output

'getReadsAll( $return )'

  • shows number of total reads
  • $return: 0 echo, 1 return output

'getReadsToday( $return )'

  • shows number of reads today
  • $return: 0 echo, 1 return output

'getReadsYesterday( $return )'

  • shows number of reads yesterday
  • $return: 0 echo, 1 return output

'getReadsLastWeek( $return )'

  • shows number of reads last week (7 days)
  • $return: 0 echo, 1 return output

'getReadsThisMonth( $return )'

  • shows number of reads current month
  • $return: 0 echo, 1 return output

'getReadsPerMonth( $return )'

  • lists number of reads per month
  • $return: 0 echo, 1 return output

'getUserAll( $return )'

  • shows number of total visitors
  • $return: 0 echo, 1 return output

'getUserOnline( $frontend, $country, $return )'

  • shows number of visitors just online
  • $frontend: 1 no link to map
  • $country: 0 number, 1 country list
  • $return: 0 echo, 1 return output

'getUserToday( $return )'

  • shows number of visitors today
  • $return: 0 echo, 1 return output

'getUserYesterday( $return )'

  • shows number of visitors yesterday
  • $return: 0 echo, 1 return output

'getUserLastWeek( $return )'

  • shows number of visitors last week (7 days)
  • $return: 0 echo, 1 return output

'getUserThisMonth( $return )'

  • shows number of visitors current month
  • $return: 0 echo, 1 return output

'getUserPerMonth( $frontend, $return )'

  • lists number of visitors per month
  • $frontend: 1 no links
  • $return: 0 echo, 1 return output

'getUserPerPost( $limit, $frontend, $return )'

  • lists $limit number of posts, -1: all, 0: get option from DB, x: number
  • $frontend: 1 no links
  • $return: 0 echo, 1 return output

'getMostVisitedPosts( $days, $limits, $frontend, $postsonly, $return, $posttypes )'

  • shows a list with the most visited posts in the last days
  • $days = days to calc (last days), 0: get option from DB
  • $limit = count of posts (last posts), 0: get option from DB
  • $frontend: 1 no links
  • $postsonly: 0 show, 1 don't show categories and taxonomies
  • $return: 0 echo, 1 return output
  • $posttypes: comma separated list of post types, default: empty to show all

'getVisitedPostsOnDay( $date, $limit, $show_form, $show_notes, $frontend, $return )'

  • shows visited pages at given day
  • $date day in MySQL date format yyyy-mm-dd, 0 today
  • $limit count of posts
  • $show_form show form for date selection, default on, in frontend set it to 0
  • $show_notes show button to add notes in form, default on, in frontend set it to 0
  • $frontend: 1 no links
  • $return: 0 echo, 1 return output

'getClients( $return )'

  • shows visits per client/browser in percent
  • $return: 0 echo, 1 return output

'getReferers( $limit, $return, $days )'

  • lists top $limit referrers of the last $days days, 0: get option from DB, x: number
  • $return: 0 echo, 1 return output

'getMostVisitedPostIDs( $days, $limit, $cats, $return_array )'

  • $days last x days, default = 365
  • $limit return max. x posts, default = 10
  • $cats IDs of categories to filter, array or number
  • $return_array true returns an array with Post-ID, title and count, false returns comma separated list of Post-IDs

'function getMap( $what, $width, $height, $min )'

  • gets a world map
  • $what visitors|reads|online
  • $width size in px
  • $height size in px
  • $min : 1 disable title, legend and zoombar

'getDayWithMostReads( $return )'

  • shows day with most Reads
  • $return: 0 echo, 1 return output

'getDayWithMostVisitors( $return )'

  • shows day with most Visitors
  • $return: 0 echo, 1 return output

GeoIP

  • With GeoIP you can associate your visitors to an country using the IP address.
  • On options page you can update you current visits. This take a while! The Script checks 100 IP addresses at once an reload itself until less then 100 addresses left. Click the update button to check the rest.
  • If the rest remains greater than 0 the IP address is not in GeoIP database (accuracy 99.5%).
  • You can update the GeoIP database from time to time to get new IP data. This necessitates write permissions to wp-content/count-per-day-geoip directory.
  • If the automatically update don't work download GeoIPv6.dat.gz, extract and rename it to GeoIP.dat and load it to the count-per-day-geoip directory.
  • More information about GeoIP on https://www.maxmind.com

== Changelog ==

= 3.5.6 =

  • Bugfix: check/block stored bad referrers

= 3.5.5 =

  • Bugfix: security fixes in export, referrer and mass bot functions

= 3.5.4 =

  • Bugfix: check for IPv6 compatibility on settings page

= 3.5.3 =

  • Bugfix: undefined function cpd_inet_pton (once again)

= 3.5.2 =

  • Bugfix: undefined function cpd_inet_pton

= 3.5.1 =

  • back in WordPress plugin repository
  • Bugfix: Worldmap shortcode

= 3.5 =

  • New: PHP 7 compatibility (mysqli)
  • New: GeoIP part is now available as addon (installation with 1 click, see the settings page), because WordPress hates non GPL code in its plugin repository (after several years...)
  • Bugfix: possible daylight saving time problem in chart (hopefully)
  • Bugfix: reset function now deletes also collections

= 3.4.1 =

  • Bugfix: Security fix backup download

= 3.4 =

  • New: limit the length of client and referer to reduce database size and eliminate MySql strict mode errors
  • New: exclude countries you not want to count
  • New: Flash free World map
  • New: Flag of Malawi
  • Bugfix: language support without WPLANG constant
  • Bugfix: get temp directory

= 3.3 =

  • New: List of most industrious Visitors
  • New: Export data as CSV file
  • New: count given post types only
  • New: Shortcode CPD_FLOTCHART to show the big chart
  • New: Popular Posts Widget, thanks to Maurits van der Schee http://www.leaseweblabs.com/2014/01/popular-posts-count-per-day-wordpress-plugin
  • New: Part of IP adresses in Bot List, '192.168' will block all visitors from '192.168.x.x'
  • New language: Chinese, thanks to Siyuan Tang
  • Bugfix: counting of cached pages
  • Bugfix: cleaning database, delete entries per IP in bot list
  • some little fixes

= 3.2.10 =

  • Bugfix: Plugin dir path fixed
  • Bugfix: CSS path fixed
  • Bugfix: search word now case insensitive
  • Bugfix: Translation of widget titles
  • New: world map of current visitors
  • New: check referer agains bot list
  • New: delete clients and referers of older entries

= 3.2.9 =

  • Bugfix: PHP without IPv6 support
  • New Language: Persian, thanks to Mahmoud Zooroofchi
  • Hint: use "update old counter data" to repair the unknown countries

= 3.2.8 =

  • Bugfix: inet_pton for windows php < 5.3
  • Bugfix: GeoIP support for online world map

= 3.2.7 =

  • Bugfix: GeoIP functionality

= 3.2.6 =

  • New: posts only parameters for [CPD_MOST_VISITED_POSTS]
  • New: don't count password protected posts without password
  • New: translate widget titles if possible
  • New: flags of Cambodia, Nigeria and Sudan
  • Bugfix: massbot post list has not show all post
  • Bugfix: security fix, XSS
  • Bugfix: problems while adding widgets
  • Bugfix: start session only in backend
  • Bugfix: empty database query

= 3.2.5 =

  • Bugfix: compatibility fix for WordPress 3.5

= 3.2.4 =

  • Bugfix: security fix, check user permissions

= 3.2.3 =

= 3.2.2 =

  • New: counter column in custom post lists
  • Bugfix: errors in search words
  • Bugfix: wrong counts in posts lists

= 3.2.1 =

  • Bugfix: massbot delete error
  • Bugfix: search words array sometimes corrupt
  • Bugfix: add collected data to reads per post, thanks to Suzakura Karin http://yumeneko.pmfan.jp / http://is.gd/VWNyLq
  • Language update: Japanese, thanks to Juno Hayami
  • Language update: Portuguese, thanks to Beto Ribeiro
  • Language update: Russian, thanks to Ilya Pshenichny
  • Language update: Bulgarian, thanks to joro

= 3.2 =

  • New: save search words
  • New shortcode: CPD_COUNTRIES_USERS
  • New: flags for Bahamas, Mongolia, Cameroon and Kazakhstan
  • Bugfix: can't move widgets
  • Bugfix: visitors per post list
  • Bugfix: "Clean Database" deleted collection too
  • Bugfix: browser summary Chrome/Safari fixed
  • Bugfix: get real remote IP address, not local server
  • Bugfix: security fixes
  • Change: create collection functions optimized
  • New language: Romanian, thanks to Alexander Ovsov
  • New language: Hindi, thanks to Love Chandel
  • New language: Finnish, thanks to Jani Alha
  • Language update: Ukrainain, thanks to Iflexion design

= 3.1.1 =

  • Bugfix: important fixes in map.php and download.php, thanks to http://6scan.com

= 3.1 =

  • New: memory check before backup to avoid "out of memory" error
  • New: create temporary backup files for download only
  • New: delete backup files in wp-content on settings page
  • Bugfix: all posts shows 1 read in posts list
  • Bugfix: clean database shows 0 entries deleted

= 3.0 =

  • New: use now default WordPress database functions to be compatible to e.g. multi-db plugins
  • New: backup your counter data
  • New: collect entries of counter table per month and per post to reduce the database and speed up the statistics
  • New: functions and shortcodes [CPD_DAY_MOST_READS] [CPD_DAY_MOST_USERS] to shows days with most reads/visitors
  • New: option to cut referrer on "?" to not store query strings
  • New: parameter '$postsonly' for 'getMostVisitedPosts' function to list single posts and pages only
  • New: flags for Moldavia and Nepal
  • New language: Norwegian, thanks to Stein Ivar Johnsen and Tore Johnny Bråtveit
  • New language: Azerbaijani, thanks to Bohdan Zograf
  • New language: Japanese, thanks to Juno Hayami
  • Bugfix: visitors per month list
  • Change: some function parameters
  • Change: little memory optimizing
  • Change: visitors currently online and notes will now managed per option, without seperate tables in database
  • Change: design updated
  • Change: old bar charts deleted

About

code fixes and security-boost for (the awesome) wordpress.org/plugins/count-per-day by Tom Braider. Original credits and links kept unmodified.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published