File: /var/www/html/wp-content/plugins/wp-statistics/includes/class-wp-statistics-shortcode.php
<?php
namespace WP_STATISTICS;
class ShortCode
{
public function __construct()
{
//init ShortCode
add_action('admin_init', array($this, 'shortcake'));
// Add ShortCode
add_shortcode('wpstatistics', array($this, 'shortcodes'));
}
/**
* WP-Statistics ShortCode is in the format of:
* [wpstatistics stat=xxx time=xxxx provider=xxxx format=xxxxxx id=xxx]
*
* Where:
* stat = the statistic you want.
* time = is the timeframe, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate
* it. provider = the search provider to get stats on. format = i18n, english, none. id = the page/post id to get
* stats on.
*
* @param $atts
* @return array|false|int|null|object|string|void
*/
public function shortcodes($atts)
{
if (!is_array($atts)) {
return;
}
if (!array_key_exists('stat', $atts)) {
return;
}
if (!array_key_exists('time', $atts)) {
$atts['time'] = null;
}
if (!array_key_exists('provider', $atts)) {
$atts['provider'] = 'all';
}
if (!array_key_exists('format', $atts)) {
$atts['format'] = null;
}
if (!array_key_exists('id', $atts)) {
$atts['id'] = -1;
}
$formatnumber = array_key_exists('format', $atts);
switch ($atts['stat']) {
case 'usersonline':
$result = wp_statistics_useronline();
break;
case 'visits':
$result = wp_statistics_visit($atts['time']);
break;
case 'visitors':
$result = wp_statistics_visitor($atts['time'], null, true);
break;
case 'pagevisits':
$result = wp_statistics_pages($atts['time'], null, $atts['id']);
break;
case 'searches':
$result = wp_statistics_searchengine($atts['provider'], $atts['time']);
break;
case 'referrer':
$result = wp_statistics_referrer($atts['time']);
break;
case 'postcount':
$result = Helper::getCountPosts();
break;
case 'pagecount':
$result = Helper::getCountPages();
break;
case 'commentcount':
$result = Helper::getCountComment();
break;
case 'spamcount':
$result = Helper::getCountSpam();
break;
case 'usercount':
$result = Helper::getCountUsers();
break;
case 'postaverage':
$result = Helper::getAveragePost();
break;
case 'commentaverage':
$result = Helper::getAverageComment();
break;
case 'useraverage':
$result = Helper::getAverageRegisterUser();
break;
case 'lpd':
$result = Helper::getLastPostDate();
$formatnumber = false;
break;
}
if ($formatnumber) {
switch (strtolower($atts['format'])) {
case 'i18n':
$result = number_format_i18n($result);
break;
case 'english':
$result = number_format($result);
break;
}
}
return $result;
}
public function shortcake()
{
// ShortCake support if loaded.
if (function_exists('shortcode_ui_register_for_shortcode')) {
$se_list = SearchEngine::getList();
$se_options = array('' => 'None');
foreach ($se_list as $se) {
$se_options[$se['tag']] = $se['translated'];
}
shortcode_ui_register_for_shortcode('wpstatistics',
array(
// Display label. String. Required.
'label' => 'WP Statistics',
// Icon/image for shortcode. Optional. src or dashicons-$icon. Defaults to carrot.
'listItemImage' => '<img src="' . WP_STATISTICS_URL . 'assets/images/logo-250.png" width="128" height="128">',
// Available shortCode attributes and default values. Required. Array.
// Attribute model expects 'attr', 'type' and 'label'
// Supported field types: text, checkbox, textarea, radio, select, email, url, number, and date.
'attrs' => array(
array(
'label' => __('Statistic', 'wp-statistics'),
'attr' => 'stat',
'type' => 'select',
'description' => __('Select the statistic you wish to display.', 'wp-statistics'),
'value' => 'usersonline',
'options' => array(
'usersonline' => __('Online Users', 'wp-statistics'),
'visits' => __('Visits', 'wp-statistics'),
'visitors' => __('Visitors', 'wp-statistics'),
'pagevisits' => __('Page Visits', 'wp-statistics'),
'searches' => __('Searches', 'wp-statistics'),
'postcount' => __('Post Count', 'wp-statistics'),
'pagecount' => __('Page Count', 'wp-statistics'),
'commentcount' => __('Comment Count', 'wp-statistics'),
'spamcount' => __('Spam Count', 'wp-statistics'),
'usercount' => __('User Count', 'wp-statistics'),
'postaverage' => __('Post Average', 'wp-statistics'),
'commentaverage' => __('Comment Average', 'wp-statistics'),
'useraverage' => __('User Average', 'wp-statistics'),
'lpd' => __('Last Post Date', 'wp-statistics'),
'referrer' => __('Referrer', 'wp-statistics'),
),
),
array(
'label' => __('Time Frame', 'wp-statistics'),
'attr' => 'time',
'type' => 'url',
'description' => __(
'The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use "total" to get all recorded dates.',
'wp-statistics'
),
'meta' => array('size' => '10'),
),
array(
'label' => __('Search Provider', 'wp-statistics'),
'attr' => 'provider',
'type' => 'select',
'description' => __('The search provider to get statistics on.', 'wp-statistics'),
'options' => $se_options,
),
array(
'label' => __('Number Format', 'wp-statistics'),
'attr' => 'format',
'type' => 'select',
'description' => __(
'The format to display numbers in: i18n, english, none.',
'wp-statistics'
),
'value' => 'none',
'options' => array(
'none' => __('None', 'wp-statistics'),
'english' => __('English', 'wp-statistics'),
'i18n' => __('International', 'wp-statistics'),
),
),
array(
'label' => __('Post/Page ID', 'wp-statistics'),
'attr' => 'id',
'type' => 'number',
'description' => __('The post/page ID to get page statistics on.', 'wp-statistics'),
'meta' => array('size' => '5'),
),
),
)
);
}
}
}
new ShortCode;