From 812d692ab26285666883cebdf45205d79e422307 Mon Sep 17 00:00:00 2001 From: garvinhicking Date: Fri, 1 Dec 2006 08:58:47 +0000 Subject: [PATCH] Make plugins bail out if called directly --- .../serendipity_event_bbcode.php | 9 +- ...serendipity_event_browsercompatibility.php | 7 +- .../serendipity_event_contentrewrite.php | 33 +- .../serendipity_event_creativecommons.php | 19 +- .../serendipity_event_emoticate.php | 11 +- .../serendipity_event_entryproperties.php | 7 +- .../serendipity_event_karma.php | 7 +- .../serendipity_event_livesearch.php | 9 +- .../serendipity_event_mailer.php | 51 +- .../serendipity_event_nl2br.php | 7 +- .../serendipity_event_s9ymarkup.php | 11 +- .../serendipity_event_searchhighlight.php | 12 +- .../serendipity_event_spamblock.php | 9 +- .../serendipity_event_spartacus.php | 9 +- .../serendipity_event_statistics.php | 615 +++++++++++++----- .../serendipity_plugin_statistics.php | 18 +- .../serendipity_event_templatechooser.php | 7 +- .../serendipity_event_textile.php | 7 +- .../serendipity_event_textwiki.php | 11 +- .../serendipity_event_trackexits.php | 23 +- 20 files changed, 662 insertions(+), 220 deletions(-) diff --git a/plugins/serendipity_event_bbcode/serendipity_event_bbcode.php b/plugins/serendipity_event_bbcode/serendipity_event_bbcode.php index beaba8a..86b1a68 100644 --- a/plugins/serendipity_event_bbcode/serendipity_event_bbcode.php +++ b/plugins/serendipity_event_bbcode/serendipity_event_bbcode.php @@ -1,5 +1,10 @@ add('description', PLUGIN_EVENT_BBCODE_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Jez Hancock, Garvin Hicking'); - $propbag->add('version', '2.06'); + $propbag->add('version', '2.07'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -162,7 +167,7 @@ class serendipity_event_bbcode extends serendipity_event static $pattern_query = '([^"\'\(\);]+?)'; static $target = null; - + if ($target === null) { $target = serendipity_db_bool($this->get_config('target')); } diff --git a/plugins/serendipity_event_browsercompatibility/serendipity_event_browsercompatibility.php b/plugins/serendipity_event_browsercompatibility/serendipity_event_browsercompatibility.php index 47a512b..456e011 100644 --- a/plugins/serendipity_event_browsercompatibility/serendipity_event_browsercompatibility.php +++ b/plugins/serendipity_event_browsercompatibility/serendipity_event_browsercompatibility.php @@ -1,5 +1,10 @@ '2.6.7', 'php' => '4.1.0' )); - $propbag->add('version', '1.0'); + $propbag->add('version', '1.1'); $propbag->add('event_hooks', array( 'css' => true, 'css_backend' => true, diff --git a/plugins/serendipity_event_contentrewrite/serendipity_event_contentrewrite.php b/plugins/serendipity_event_contentrewrite/serendipity_event_contentrewrite.php index 9db6f4c..38892c8 100644 --- a/plugins/serendipity_event_contentrewrite/serendipity_event_contentrewrite.php +++ b/plugins/serendipity_event_contentrewrite/serendipity_event_contentrewrite.php @@ -1,5 +1,10 @@ add('description', PLUGIN_EVENT_CONTENTREWRITE_DESCRIPTION); $propbag->add('stackable', true); $propbag->add('author', 'Garvin Hicking'); - $propbag->add('version', '1.1'); + $propbag->add('version', '1.3'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -45,6 +51,19 @@ class serendipity_event_contentrewrite extends serendipity_event if (!empty($_POST['SAVECONF'])) $this->cleanup(); $rows = serendipity_db_query("SELECT name, value FROM {$serendipity['dbPrefix']}config WHERE name LIKE '" . $this->instance . "/%' ORDER BY name"); + $this->fromstring = $this->get_config('fromstring', null); + $this->tostring = $this->get_config('tostring', null); + + if (empty($this->fromstring)) { + $this->fromstring = PLUGIN_EVENT_CONTENTREWRITE_FROM; + $this->set_config('fromstring', $this->fromstring); + } + + if (empty($this->tostring)) { + $this->tostring = PLUGIN_EVENT_CONTENTREWRITE_TO; + $this->set_config('tostring', $this->tostring); + } + $counter = 0; $values = array(); $values[] = 'title'; @@ -117,6 +136,10 @@ class serendipity_event_contentrewrite extends serendipity_event $this->counter = $counter; } + function example() { + printf(PLUGIN_EVENT_CONTENTREWRITE_REWRITESTRING, $this->fromstring, $this->tostring); + } + function install() { serendipity_plugin_api::hook_event('backend_cache_entries', $this->title); } @@ -231,8 +254,8 @@ class serendipity_event_contentrewrite extends serendipity_event $new = str_replace( array( - '{' . PLUGIN_EVENT_CONTENTREWRITE_FROM . '}', - '{' . PLUGIN_EVENT_CONTENTREWRITE_TO . '}' + '{' . $this->fromstring . '}', + '{' . $this->tostring . '}' ), array( @@ -253,7 +276,9 @@ class serendipity_event_contentrewrite extends serendipity_event // \1 and \3 are the prepend/append strings (usually whitespaces) and $new containing the new value foreach ($this->markup_elements as $temp) { - if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) { + if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { $element = $temp['element']; $eventData[$element] = preg_replace($regex, '\1' . $new . '\3', $eventData[$element]); } diff --git a/plugins/serendipity_event_creativecommons/serendipity_event_creativecommons.php b/plugins/serendipity_event_creativecommons/serendipity_event_creativecommons.php index 257db0a..f883b7b 100644 --- a/plugins/serendipity_event_creativecommons/serendipity_event_creativecommons.php +++ b/plugins/serendipity_event_creativecommons/serendipity_event_creativecommons.php @@ -1,5 +1,10 @@ add('description', PLUGIN_CREATIVECOMMONS_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Evan Nemerson'); - $propbag->add('version', '1.0'); + $propbag->add('version', '1.2'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -119,7 +124,7 @@ class serendipity_event_creativecommons extends serendipity_event { case 'frontend_display:html_layout': $cc_visibility = 'visible'; case 'frontend_display:html:per_entry': - $eventData['display_dat'] = '
'; + $eventData['display_dat'] .= '
'; if ($license_string == '') { if ($cc_visibility == 'visible') { $eventData['display_dat'] .= ''; @@ -151,17 +156,17 @@ class serendipity_event_creativecommons extends serendipity_event { break; case 'frontend_display:rss-2.0:per_entry': - $eventData['display_dat'] = ''.$license_uri.''; + $eventData['display_dat'] .= ''.$license_uri.''; return true; break; case 'frontend_display:rss-1.0:per_entry': - $eventData['display_dat'] = ''; + $eventData['display_dat'] .= ''; return true; break; case 'frontend_display:rss-1.0:once': - $eventData['display_dat'] = ''; + $eventData['display_dat'] .= ''; foreach ($rdf as $rdf_t => $rdf_v) { $eventData['display_dat'] .= ''; } @@ -170,12 +175,12 @@ class serendipity_event_creativecommons extends serendipity_event { break; case 'frontend_display:rss-2.0:namespace': - $eventData['display_dat'] = 'xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"'; + $eventData['display_dat'] .= 'xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"'; return true; break; case 'frontend_display:rss-1.0:namespace': - $eventData['display_dat'] = 'xmlns:cc="http://web.resource.org/cc/"'; + $eventData['display_dat'] .= 'xmlns:cc="http://web.resource.org/cc/"'; return true; break; diff --git a/plugins/serendipity_event_emoticate/serendipity_event_emoticate.php b/plugins/serendipity_event_emoticate/serendipity_event_emoticate.php index 80d1b4a..b22be27 100644 --- a/plugins/serendipity_event_emoticate/serendipity_event_emoticate.php +++ b/plugins/serendipity_event_emoticate/serendipity_event_emoticate.php @@ -1,5 +1,10 @@ add('description', PLUGIN_EVENT_EMOTICATE_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Serendipity Team'); - $propbag->add('version', '1.2'); + $propbag->add('version', '1.4'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -166,7 +171,9 @@ class serendipity_event_emoticate extends serendipity_event case 'frontend_display': foreach ($this->markup_elements as $temp) { - if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) { + if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { $element = &$eventData[$temp['element']]; foreach ($this->getEmoticons() as $key => $value) { diff --git a/plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php b/plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php index bea7493..c8086c5 100644 --- a/plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php +++ b/plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php @@ -1,5 +1,10 @@ add('description', PLUGIN_EVENT_ENTRYPROPERTIES_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Garvin Hicking'); - $propbag->add('version', '1.12'); + $propbag->add('version', '1.13'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', diff --git a/plugins/serendipity_event_karma/serendipity_event_karma.php b/plugins/serendipity_event_karma/serendipity_event_karma.php index 11a5dd1..75071ab 100644 --- a/plugins/serendipity_event_karma/serendipity_event_karma.php +++ b/plugins/serendipity_event_karma/serendipity_event_karma.php @@ -1,5 +1,10 @@ add('description', PLUGIN_KARMA_BLAHBLAH); $propbag->add('stackable', false); $propbag->add('author', 'Garvin Hicking'); - $propbag->add('version', '1.8'); + $propbag->add('version', '1.9'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', diff --git a/plugins/serendipity_event_livesearch/serendipity_event_livesearch.php b/plugins/serendipity_event_livesearch/serendipity_event_livesearch.php index f866e9c..dadd4e7 100644 --- a/plugins/serendipity_event_livesearch/serendipity_event_livesearch.php +++ b/plugins/serendipity_event_livesearch/serendipity_event_livesearch.php @@ -1,10 +1,15 @@ add('description', PLUGIN_EVENT_LIVESEARCH_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Christian Stocker, Garvin Hicking'); - $propbag->add('version', '1.3'); + $propbag->add('version', '1.4'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', diff --git a/plugins/serendipity_event_mailer/serendipity_event_mailer.php b/plugins/serendipity_event_mailer/serendipity_event_mailer.php index d497299..13221cd 100644 --- a/plugins/serendipity_event_mailer/serendipity_event_mailer.php +++ b/plugins/serendipity_event_mailer/serendipity_event_mailer.php @@ -1,5 +1,10 @@ add('description', PLUGIN_EVENT_MAILER_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Sebastian Nohn, Kristian Koehntopp, Garvin Hicking'); - $propbag->add('version', '1.43'); + $propbag->add('version', '1.47'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -33,7 +38,7 @@ class serendipity_event_mailer extends serendipity_event )); $propbag->add('groups', array('FRONTEND_ENTRY_RELATED')); - $config = array('mailto', 'includelink', 'striptags', 'convertp'); + $config = array('what', 'mailto', 'includelink', 'striptags', 'convertp'); $propbag->add('configuration', $config); } @@ -46,12 +51,12 @@ class serendipity_event_mailer extends serendipity_event if (!is_array($this->data['categories'])) { return false; } - + foreach($this->data['categories'] AS $cat) { $conf[] = 'category_' . $cat['categoryid']; $this->data['cat'][$cat['categoryid']] = $cat; } - + if (is_object($bag)) { $bag->add('configuration', $conf); } @@ -60,14 +65,33 @@ class serendipity_event_mailer extends serendipity_event function introspect_config_item($name, &$propbag) { if (preg_match('@^category_([0-9]+)$@imsU', $name, $catid)) { + $parent = ''; + if ($this->data['cat'][$catid[1]]['parentid'] > 0) { + $parent = " '" . $this->data['cat'][$this->data['cat'][$catid[1]]['parentid']]['category_name'] . "' -"; + } $propbag->add('type', 'string'); - $propbag->add('name', CATEGORY . " '" . $this->data['cat'][$catid[1]]['category_name']); + $propbag->add('name', CATEGORY . $parent . " '" . $this->data['cat'][$catid[1]]['category_name'] . "'"); $propbag->add('description', PLUGIN_EVENT_MAILER_RECIPIENTDESC); $propbag->add('default', ''); return true; } switch($name) { + case 'what': + $propbag->add('type', 'select'); + $propbag->add('name', CONTENT); + $propbag->add('description', ''); + $propbag->add('select_values', + array( + 'all' => ENTRY_BODY . ' + ' . EXTENDED_BODY, + 'body' => ENTRY_BODY, + 'extended' => EXTENDED_BODY, + 'none' => NONE + ) + ); + $propbag->add('default', 'all'); + break; + case 'mailto': $propbag->add('type', 'string'); $propbag->add('name', PLUGIN_EVENT_MAILER_RECIPIENT); @@ -144,7 +168,7 @@ class serendipity_event_mailer extends serendipity_event $to[] = $mailto; } } - + $this->performConfig($to); if (is_array($this->data['cat'])) { $selected = array(); @@ -156,7 +180,7 @@ class serendipity_event_mailer extends serendipity_event foreach($this->data['cat'] AS $cid => $cat) { $mailto = trim($this->get_config('category_' . $cid)); - + if (!empty($mailto) && isset($selected[$cid])) { $tos = explode(' ', $mailto); foreach($tos AS $mailtopart) { @@ -174,6 +198,19 @@ class serendipity_event_mailer extends serendipity_event 'from' => $serendipity['serendipityEmail'] ); + switch($this->get_config('what')) { + case 'all': + $mail['body'] = $eventData['body'] . $eventData['extended']; + case 'body': + $mail['body'] = $eventData['body']; + break; + case 'extended': + $mail['body'] = $eventData['extended']; + break; + case 'none': + $mail['body'] = ''; + } + if (isset($serendipity['POST']['properties']['mailto'])) { $mails = explode(' ', $serendipity['POST']['properties']['mailto']); foreach($mails as $mailto) { diff --git a/plugins/serendipity_event_nl2br/serendipity_event_nl2br.php b/plugins/serendipity_event_nl2br/serendipity_event_nl2br.php index 280b881..8815cb3 100644 --- a/plugins/serendipity_event_nl2br/serendipity_event_nl2br.php +++ b/plugins/serendipity_event_nl2br/serendipity_event_nl2br.php @@ -1,5 +1,10 @@ add('description', PLUGIN_EVENT_NL2BR_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Serendipity Team'); - $propbag->add('version', '1.6'); + $propbag->add('version', '1.7'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', diff --git a/plugins/serendipity_event_s9ymarkup/serendipity_event_s9ymarkup.php b/plugins/serendipity_event_s9ymarkup/serendipity_event_s9ymarkup.php index 971d414..fda358b 100644 --- a/plugins/serendipity_event_s9ymarkup/serendipity_event_s9ymarkup.php +++ b/plugins/serendipity_event_s9ymarkup/serendipity_event_s9ymarkup.php @@ -1,5 +1,10 @@ add('description', PLUGIN_EVENT_S9YMARKUP_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Serendipity Team'); - $propbag->add('version', '1.1'); + $propbag->add('version', '1.3'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -90,7 +95,9 @@ class serendipity_event_s9ymarkup extends serendipity_event case 'frontend_display': foreach ($this->markup_elements as $temp) { - if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) { + if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { $element = $temp['element']; $eventData[$element] = $this->_s9y_markup($eventData[$element]); } diff --git a/plugins/serendipity_event_searchhighlight/serendipity_event_searchhighlight.php b/plugins/serendipity_event_searchhighlight/serendipity_event_searchhighlight.php index 5adb101..a3aa4fe 100644 --- a/plugins/serendipity_event_searchhighlight/serendipity_event_searchhighlight.php +++ b/plugins/serendipity_event_searchhighlight/serendipity_event_searchhighlight.php @@ -4,6 +4,11 @@ /* Authored by Tom Sommer, 2004 */ /**********************************/ + +if (IN_serendipity !== true) { + die ("Don't hack!"); +} + // Probe for a language include with constants. Still include defines later on, if some constants were missing $probelang = dirname(__FILE__) . '/' . $serendipity['charset'] . 'lang_' . $serendipity['lang'] . '.inc.php'; if (file_exists($probelang)) { @@ -24,7 +29,7 @@ class serendipity_event_searchhighlight extends serendipity_event $propbag->add('description', PLUGIN_EVENT_SEARCHHIGHLIGHT_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Tom Sommer'); - $propbag->add('version', '1.1'); + $propbag->add('version', '1.3'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -192,6 +197,11 @@ class serendipity_event_searchhighlight extends serendipity_event continue; } + if ($eventData['properties']['ep_disable_markup_' . $this->instance] || + isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { + continue; + } + $element = &$eventData[$temp['element']]; foreach ( $queries as $word ) { diff --git a/plugins/serendipity_event_spamblock/serendipity_event_spamblock.php b/plugins/serendipity_event_spamblock/serendipity_event_spamblock.php index ebc6c73..90d034b 100644 --- a/plugins/serendipity_event_spamblock/serendipity_event_spamblock.php +++ b/plugins/serendipity_event_spamblock/serendipity_event_spamblock.php @@ -1,5 +1,10 @@ '2.6.7', 'php' => '4.1.0' )); - $propbag->add('version', '1.60'); + $propbag->add('version', '1.61'); $propbag->add('event_hooks', array( 'frontend_saveComment' => true, 'external_plugin' => true, @@ -925,7 +930,7 @@ var $filter_defaults; if (serendipity_db_bool($this->get_config('csrf', true))) { echo serendipity_setFormToken('form'); } - + // Check whether to allow comments from registered authors if (serendipity_userLoggedIn() && $this->inGroup()) { return true; diff --git a/plugins/serendipity_event_spartacus/serendipity_event_spartacus.php b/plugins/serendipity_event_spartacus/serendipity_event_spartacus.php index 6d387e8..4872deb 100644 --- a/plugins/serendipity_event_spartacus/serendipity_event_spartacus.php +++ b/plugins/serendipity_event_spartacus/serendipity_event_spartacus.php @@ -8,6 +8,11 @@ ***********/ + +if (IN_serendipity !== true) { + die ("Don't hack!"); +} + // Probe for a language include with constants. Still include defines later on, if some constants were missing $probelang = dirname(__FILE__) . '/' . $serendipity['charset'] . 'lang_' . $serendipity['lang'] . '.inc.php'; if (file_exists($probelang)) { @@ -34,7 +39,7 @@ class serendipity_event_spartacus extends serendipity_event $propbag->add('description', PLUGIN_EVENT_SPARTACUS_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Garvin Hicking'); - $propbag->add('version', '2.8'); + $propbag->add('version', '2.9'); $propbag->add('requirements', array( 'serendipity' => '0.9', 'smarty' => '2.6.7', @@ -46,7 +51,7 @@ class serendipity_event_spartacus extends serendipity_event 'backend_templates_fetchlist' => true, 'backend_templates_fetchtemplate' => true, - + 'backend_pluginlisting_header' => true, 'backend_pluginlisting_header_upgrade' => true )); diff --git a/plugins/serendipity_event_statistics/serendipity_event_statistics.php b/plugins/serendipity_event_statistics/serendipity_event_statistics.php index 69a8703..976a0c8 100644 --- a/plugins/serendipity_event_statistics/serendipity_event_statistics.php +++ b/plugins/serendipity_event_statistics/serendipity_event_statistics.php @@ -1,5 +1,10 @@ add('name', PLUGIN_EVENT_STATISTICS_NAME); $propbag->add('description', PLUGIN_EVENT_STATISTICS_DESC); $propbag->add('stackable', false); - $propbag->add('author', 'Garvin Hicking, Fredrik Sandberg'); - $propbag->add('version', '1.24'); + $propbag->add('author', 'Arnan de Gans, Garvin Hicking, Fredrik Sandberg'); + $propbag->add('version', '1.44'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -33,35 +38,55 @@ class serendipity_event_statistics extends serendipity_event 'frontend_configure' => true )); - $propbag->add('configuration', array('max_items', 'ext_vis_stat','banned_bots')); + $propbag->add('configuration', array('max_items','ext_vis_stat','stat_all','banned_bots')); } function introspect_config_item($name, &$propbag) { switch($name) { case 'max_items': - $propbag->add('type', 'string'); - $propbag->add('name', PLUGIN_EVENT_STATISTICS_MAX_ITEMS); + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_EVENT_STATISTICS_MAX_ITEMS); $propbag->add('description', PLUGIN_EVENT_STATISTICS_MAX_ITEMS_DESC); - $propbag->add('default', 20); + $propbag->add('default', 20); break; - - + + case 'ext_vis_stat': - $select = array('no' => PLUGIN_EVENT_STATISTICS_EXT_OPT1, 'yesBot' => PLUGIN_EVENT_STATISTICS_EXT_OPT2, 'yesTop' => PLUGIN_EVENT_STATISTICS_EXT_OPT3); - $propbag->add('type', 'select'); - $propbag->add('name', PLUGIN_EVENT_STATISTICS_EXT_ADD); - $propbag->add('description', PLUGIN_EVENT_STATISTICS_EXT_ADD_DESC); + $select = array('no' => PLUGIN_EVENT_STATISTICS_EXT_OPT1, + 'yesBot' => PLUGIN_EVENT_STATISTICS_EXT_OPT2, + 'yesTop' => PLUGIN_EVENT_STATISTICS_EXT_OPT3); + + $propbag->add('type', 'select'); + $propbag->add('name', PLUGIN_EVENT_STATISTICS_EXT_ADD); + $propbag->add('description', PLUGIN_EVENT_STATISTICS_EXT_ADD_DESC); $propbag->add('select_values', $select); - $propbag->add('default', 'no'); + $propbag->add('default', 'no'); break; - + + case 'stat_all': + $select = array('no' => PLUGIN_EVENT_STATISTICS_EXT_ALL1, + 'yes' => PLUGIN_EVENT_STATISTICS_EXT_ALL2); + + $propbag->add('type', 'select'); + $propbag->add('name', PLUGIN_EVENT_STATISTICS_EXT_ALL); + $propbag->add('description', PLUGIN_EVENT_STATISTICS_EXT_ALL_DESC); + $propbag->add('select_values', $select); + $propbag->add('default', 'yes'); + + break; + case 'banned_bots': - $propbag->add('type', 'string'); - $propbag->add('name', PLUGIN_EVENT_STATISTICS_BANNED_HOSTS); - $propbag->add('description', PLUGIN_EVENT_STATISTICS_BANNED_HOSTS_DESC); - $propbag->add('default', 'msnbot.msn.com'); + $select = array('yes' => PLUGIN_EVENT_STATISTICS_BANNED_HOSTS1, + 'no' => PLUGIN_EVENT_STATISTICS_BANNED_HOSTS2); + + $propbag->add('type', 'select'); + $propbag->add('name', PLUGIN_EVENT_STATISTICS_BANNED_HOSTS); + $propbag->add('description', PLUGIN_EVENT_STATISTICS_BANNED_HOSTS_DESC); + $propbag->add('select_values', $select); + $propbag->add('default', 'yes'); + break; } @@ -79,7 +104,7 @@ class serendipity_event_statistics extends serendipity_event if (isset($hooks[$event])) { switch($event) { - + case 'frontend_configure': if ($this->get_config('ext_vis_stat') == 'no') { return; @@ -87,34 +112,82 @@ class serendipity_event_statistics extends serendipity_event //checking if db tables exists, otherwise install them $tableChecker = serendipity_db_query("SELECT counter_id FROM {$serendipity['dbPrefix']}visitors LIMIT 1", true); - if (!is_array($tableChecker)){ + if (!is_array($tableChecker)) { $this->createTables(); } + if ($this->get_config('db_indices_created', 'false') !== '1') { $this->updateTables(); } - + //Unique visitors are beeing registered and counted here. Calling function below. $sessionChecker = serendipity_db_query("SELECT count(sessID) FROM {$serendipity['dbPrefix']}visitors WHERE '".serendipity_db_escape_string(session_id())."' = sessID GROUP BY sessID", true); if (!is_array($sessionChecker) || (is_array($sessionChecker)) && ($sessionChecker[0] == 0)) { - + + $referer = $useragent = $remoteaddr = 'unknown'; + + // gathering intel + if ($_SERVER['REMOTE_ADDR']) { + $remoteaddr = $_SERVER['REMOTE_ADDR']; + } + if ($_SERVER['HTTP_USER_AGENT']) { + $useragent = $_SERVER['HTTP_USER_AGENT']; + } + if ($_SERVER['HTTP_REFERER']) { + $referer = $_SERVER['HTTP_REFERER']; + } + + $found = 0; + // avoiding banned browsers - $banned_bots = $this->get_config('banned_bots'); - $tmp_array = explode('|', $banned_bots); - $found = 'no'; - for ($i=0; $iget_config('banned_bots') == 'yes') { + // excludelist botagents + $banned_array = array( + '1' => "unknown", + '2' => "Yahoo! Slurp", + '3' => "slurpy", + '4' => "agent 007", + '5' => "ichiro", + '6' => "ia_archiver", + '7' => "zyborg", + '8' => "linkwalker", + '9' => "crawler", + '10' => "python", + '11' => "w3c_validator", + '12' => "almaden", + '13' => "topicspy", + '14' => "poodle predictor", + '15' => "link checker pro", + '16' => "xenu link sleuth", + '17' => "iconsurf", + '18' => "zoe indexer", + '19' => "grub-client", + '20' => "spider", + '21' => "pompos", + '22' => "virus_detector", + '23' => "bot", + '24' => "Wells Search II", + '25' => "Dumbot", + '26' => "GeoBot", + '27' => "DigExt" + ); + + foreach($banned_array AS $ban) { + if (stristr($useragent, $ban)) { + $found = 1; + break; + } } - } - if ($found == 'no'){ - $this->countVisitor(); + } + + if ($found == 0){ + $this->countVisitor($useragent, $remoteaddr, $referer); } } else { // Update visitor timestamp $this->updateVisitor(); } - + break; case 'backend_sidebar_entries': ?> @@ -130,75 +203,75 @@ class serendipity_event_statistics extends serendipity_event if (!$max_items || !is_numeric($max_items) || $max_items < 1) { $max_items = 20; } - + if ($ext_vis_stat == 'yesTop') { $this->extendedVisitorStatistics($max_items); } - - $first_entry = serendipity_db_query("SELECT timestamp FROM {$serendipity['dbPrefix']}entries ORDER BY timestamp ASC limit 1", true); - $last_entry = serendipity_db_query("SELECT timestamp FROM {$serendipity['dbPrefix']}entries ORDER BY timestamp DESC limit 1", true); - $total_count = serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}entries", true); - $draft_count = serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}entries WHERE isdraft = 'true'", true); - $publish_count = serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}entries WHERE isdraft = 'false'", true); - $author_rows = serendipity_db_query("SELECT author, count(author) as entries FROM {$serendipity['dbPrefix']}entries GROUP BY author ORDER BY author"); - $category_count = serendipity_db_query("SELECT count(categoryid) FROM {$serendipity['dbPrefix']}category", true); - $cat_sql = "SELECT c.category_name, count(e.id) as postings - FROM {$serendipity['dbPrefix']}entrycat ec, - {$serendipity['dbPrefix']}category c, - {$serendipity['dbPrefix']}entries e - WHERE ec.categoryid = c.categoryid AND ec.entryid = e.id - GROUP BY ec.categoryid, c.category_name - ORDER BY postings DESC"; - $category_rows = serendipity_db_query($cat_sql); - - $image_count = serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}images", true); - $image_rows = serendipity_db_query("SELECT extension, count(id) AS images FROM {$serendipity['dbPrefix']}images GROUP BY extension ORDER BY images DESC"); - - $subscriber_count = count(serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}comments WHERE type = 'NORMAL' AND subscribed = 'true' GROUP BY email")); - $subscriber_rows = serendipity_db_query("SELECT e.timestamp, e.id, e.title, count(c.id) as postings - FROM {$serendipity['dbPrefix']}comments c, - {$serendipity['dbPrefix']}entries e - WHERE e.id = c.entry_id AND type = 'NORMAL' AND subscribed = 'true' - GROUP BY e.id, c.email, e.title, e.timestamp - ORDER BY postings DESC - LIMIT $max_items"); - - $comment_count = serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}comments WHERE type = 'NORMAL'", true); - $comment_rows = serendipity_db_query("SELECT e.timestamp, e.id, e.title, count(c.id) as postings - FROM {$serendipity['dbPrefix']}comments c, - {$serendipity['dbPrefix']}entries e - WHERE e.id = c.entry_id AND type = 'NORMAL' - GROUP BY e.id, e.title, e.timestamp - ORDER BY postings DESC - LIMIT $max_items"); - - $commentor_rows = serendipity_db_query("SELECT author, max(email) as email, max(url) as url, count(id) as postings - FROM {$serendipity['dbPrefix']}comments c - WHERE type = 'NORMAL' - GROUP BY author - ORDER BY postings DESC - LIMIT $max_items"); - - $tb_count = serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}comments WHERE type = 'TRACKBACK'", true); - $tb_rows = serendipity_db_query("SELECT e.timestamp, e.id, e.title, count(c.id) as postings - FROM {$serendipity['dbPrefix']}comments c, - {$serendipity['dbPrefix']}entries e - WHERE e.id = c.entry_id AND type = 'TRACKBACK' - GROUP BY e.timestamp, e.id, e.title - ORDER BY postings DESC - LIMIT $max_items"); - - $tbr_rows = serendipity_db_query("SELECT author, max(email) as email, max(url) as url, count(id) as postings - FROM {$serendipity['dbPrefix']}comments c - WHERE type = 'TRACKBACK' - GROUP BY author - ORDER BY postings DESC - LIMIT $max_items"); - - $length = serendipity_db_query("SELECT SUM(LENGTH(body) + LENGTH(extended)) FROM {$serendipity['dbPrefix']}entries", true); - $length_rows = serendipity_db_query("SELECT id, title, (LENGTH(body) + LENGTH(extended)) as full_length FROM {$serendipity['dbPrefix']}entries ORDER BY full_length DESC LIMIT $max_items"); + if ($this->get_config('stat_all') == 'yes') { + $first_entry = serendipity_db_query("SELECT timestamp FROM {$serendipity['dbPrefix']}entries ORDER BY timestamp ASC limit 1", true); + $last_entry = serendipity_db_query("SELECT timestamp FROM {$serendipity['dbPrefix']}entries ORDER BY timestamp DESC limit 1", true); + $total_count = serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}entries", true); + $draft_count = serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}entries WHERE isdraft = 'true'", true); + $publish_count = serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}entries WHERE isdraft = 'false'", true); + $author_rows = serendipity_db_query("SELECT author, count(author) as entries FROM {$serendipity['dbPrefix']}entries GROUP BY author ORDER BY author"); + $category_count = serendipity_db_query("SELECT count(categoryid) FROM {$serendipity['dbPrefix']}category", true); + $cat_sql = "SELECT c.category_name, count(e.id) as postings + FROM {$serendipity['dbPrefix']}entrycat ec, + {$serendipity['dbPrefix']}category c, + {$serendipity['dbPrefix']}entries e + WHERE ec.categoryid = c.categoryid AND ec.entryid = e.id + GROUP BY ec.categoryid, c.category_name + ORDER BY postings DESC"; + $category_rows = serendipity_db_query($cat_sql); + + $image_count = serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}images", true); + $image_rows = serendipity_db_query("SELECT extension, count(id) AS images FROM {$serendipity['dbPrefix']}images GROUP BY extension ORDER BY images DESC"); + + $subscriber_count = count(serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}comments WHERE type = 'NORMAL' AND subscribed = 'true' GROUP BY email")); + $subscriber_rows = serendipity_db_query("SELECT e.timestamp, e.id, e.title, count(c.id) as postings + FROM {$serendipity['dbPrefix']}comments c, + {$serendipity['dbPrefix']}entries e + WHERE e.id = c.entry_id AND type = 'NORMAL' AND subscribed = 'true' + GROUP BY e.id, c.email, e.title, e.timestamp + ORDER BY postings DESC + LIMIT $max_items"); + + $comment_count = serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}comments WHERE type = 'NORMAL'", true); + $comment_rows = serendipity_db_query("SELECT e.timestamp, e.id, e.title, count(c.id) as postings + FROM {$serendipity['dbPrefix']}comments c, + {$serendipity['dbPrefix']}entries e + WHERE e.id = c.entry_id AND type = 'NORMAL' + GROUP BY e.id, e.title, e.timestamp + ORDER BY postings DESC + LIMIT $max_items"); + + $commentor_rows = serendipity_db_query("SELECT author, max(email) as email, max(url) as url, count(id) as postings + FROM {$serendipity['dbPrefix']}comments c + WHERE type = 'NORMAL' + GROUP BY author + ORDER BY postings DESC + LIMIT $max_items"); + + $tb_count = serendipity_db_query("SELECT count(id) FROM {$serendipity['dbPrefix']}comments WHERE type = 'TRACKBACK'", true); + $tb_rows = serendipity_db_query("SELECT e.timestamp, e.id, e.title, count(c.id) as postings + FROM {$serendipity['dbPrefix']}comments c, + {$serendipity['dbPrefix']}entries e + WHERE e.id = c.entry_id AND type = 'TRACKBACK' + GROUP BY e.timestamp, e.id, e.title + ORDER BY postings DESC + LIMIT $max_items"); + + $tbr_rows = serendipity_db_query("SELECT author, max(email) as email, max(url) as url, count(id) as postings + FROM {$serendipity['dbPrefix']}comments c + WHERE type = 'TRACKBACK' + GROUP BY author + ORDER BY postings DESC + LIMIT $max_items"); + + $length = serendipity_db_query("SELECT SUM(LENGTH(body) + LENGTH(extended)) FROM {$serendipity['dbPrefix']}entries", true); + $length_rows = serendipity_db_query("SELECT id, title, (LENGTH(body) + LENGTH(extended)) as full_length FROM {$serendipity['dbPrefix']}entries ORDER BY full_length DESC LIMIT $max_items"); ?>

@@ -234,7 +307,7 @@ class serendipity_event_statistics extends serendipity_event foreach($author_rows AS $author => $author_stat) { ?>
-
+
(%)
-
+
-
+

$max_items)); ?>
- + extendedVisitorStatistics($max_items); @@ -472,104 +546,298 @@ class serendipity_event_statistics extends serendipity_event return false; } } - + + //Statistics + function updatestats($action) { + global $serendipity; + + list($year, $month, $day) = split('-', date('Y-m-d')); + $sql = serendipity_db_query("SELECT COUNT(year) AS result FROM {$serendipity['dbPrefix']}visitors_count WHERE year='$year' AND month='$month' AND day='$day'", true); + + $sql_hit_update = "UPDATE {$serendipity['dbPrefix']}visitors_count SET hits = hits+1 WHERE year='$year' AND month='$month' AND day='$day'"; + $sql_day_new = "INSERT INTO {$serendipity['dbPrefix']}visitors_count (year, month, day, visits, hits) VALUES ('$year','$month','$day',1,1)"; + $sql_day_update = "UPDATE {$serendipity['dbPrefix']}visitors_count SET visits = visits+1, hits = hits+1 WHERE year='$year' AND month='$month' AND day='$day'"; + switch($action) { + case "update": + serendipity_db_query($sql_hit_update); + break; + case "new": + if($sql['result'] >= 1) { + serendipity_db_query($sql_day_update); + } else { + serendipity_db_query($sql_day_new); + } + break; + } + } + function updateVisitor() { global $serendipity; + $this->updatestats('update'); + $time = date('H:i'); $day = date('Y-m-d'); - return serendipity_db_query("UPDATE {$serendipity['dbPrefix']}visitors - SET time = '$time', - day = '$day' - WHERE sessID = '" . serendipity_db_escape_string(strip_tags(session_id())) . "'"); + return serendipity_db_query("UPDATE {$serendipity['dbPrefix']}visitors SET time = '$time', day = '$day' WHERE sessID = '" . serendipity_db_escape_string(strip_tags(session_id())) . "'"); } - function countVisitor(){ + function countVisitor($useragent, $remoteaddr, $referer){ global $serendipity; - $referer = $_SERVER['HTTP_REFERER']; + $this->updatestats('new'); + + $thedate = date('Y-m-d'); $values = array( 'sessID' => strip_tags(session_id()), - 'day' => date('Y-m-d'), + 'day' => $thedate, 'time' => date('H:i'), 'ref' => strip_tags($referer), - 'browser'=> strip_tags($_SERVER['HTTP_USER_AGENT']), - 'ip' => strip_tags($_SERVER['REMOTE_ADDR']) + 'browser'=> strip_tags($useragent), + 'ip' => strip_tags($remoteaddr) ); - + serendipity_db_insert('visitors', $values); - + // updating the referrer-table if (strlen($referer) >= 1) { //retrieving the referrer base URL - $temp_array = explode('?', $referer); - $urlA = $temp_array[0]; - + $temp_array = explode('?', $referer); + $urlA = $temp_array[0]; + //removing "http://" & trailing subdirectories $temp_array3 = explode('//', $urlA); $urlB = $temp_array3[1]; $temp_array4 = explode('/', $urlB); $urlB = $temp_array4[0]; - + //removing www $urlC = serendipity_db_escape_string(str_replace('www.', '', $urlB)); - + + if(strlen($urlC) < 1) { + $urlC = 'unknown'; + } + //updating db - $q = serendipity_db_query("SELECT count(refs) FROM {$serendipity['dbPrefix']}refs WHERE refs = '$urlC' GROUP BY refs", true); - if (!is_array($q) || $q[0] >= 1){ + $q = serendipity_db_query("SELECT count(refs) AS referrer FROM {$serendipity['dbPrefix']}refs WHERE refs = '$urlC' GROUP BY refs", true); + if ($q['referrer'] >= 1){ serendipity_db_query("UPDATE {$serendipity['dbPrefix']}refs SET count=count+1 WHERE (refs = '$urlC')"); } else { serendipity_db_query("INSERT INTO {$serendipity['dbPrefix']}refs (refs, count) VALUES ('$urlC', 1)"); } } - + } //end of function countVisitor - - + + // Calculate daily stats + function statistics_getdailystats($day, $amount) { + global $serendipity; + + list($year, $month) = split('[-]', date("Y-m")); + if ($day > 0 && $day <32) { + $sql = "SELECT SUM(visits) AS dailyvisit FROM {$serendipity['dbPrefix']}visitors_count WHERE day"; + for ($i=1; $i<32; $i++) { + $sqlfire = $sql . " = '$i' AND year = '$year' AND month = '$month'"; + $res = serendipity_db_query($sqlfire, true); + $container[$i] = $res['dailyvisit']; + } + return $container; + } else if (!is_integer($day)) { + echo "Daycount failed - You've gotta specify a correct date(read: integer!)"; + return "failure"; + } else if ($day < 0 || $day > 32) { + echo "Daycount failed - Days only go from 1 to 31"; + return "failure"; + } + + if (! isset($container)) { + $sql = "SELECT SUM(visits) FROM {$serendipity['dbPrefix']}visitors_count WHERE day = '$day' AND month = '$month' AND year = '$year'"; + $res = serendipity_db_query($sql, true); + return $res; + } + } + + // Calculate monthly stats + function statistics_getmonthlystats($month, $amount) { + global $serendipity; + + $year = date("Y"); + if ($month > 0 && $month < 13) { + $sql = "SELECT SUM(visits) AS monthlyvisit FROM {$serendipity['dbPrefix']}visitors_count WHERE month"; + for ($i=1; $i<13; $i++) { + $sqlfire = $sql . " = '$i' AND year = '$year'"; + $res = serendipity_db_query($sqlfire, true); + $container[$i] = $res['monthlyvisit']; + } + return $container; + } else if (!is_integer($month)) { + echo "Monthcount failed - You've gotta specify a correct month(read: integer!)"; + return "failure"; + } else if ($month < 0 || $month > 13) { + echo "Monthcount failed - Months only go from 1 to 12"; + return "failure"; + } + + if (!isset($container)) { + $sql = "SELECT SUM(visits) FROM {$serendipity['dbPrefix']}visitors_count WHERE month = '$month' AND year = '$year'"; + $res = serendipity_db_query($sql, true); + return $res; + } + } + function extendedVisitorStatistics($max_items){ - + global $serendipity; - + // ---------------QUERIES for Viewing statistics ---------------------------------------------- $day = date('Y-m-d'); - $visitors_count_today = serendipity_db_query("SELECT count(counter_id) FROM {$serendipity['dbPrefix']}visitors WHERE day = '".$day."'", true); + list($year, $month, $day) = split('-', $day); + $visitors_count_firstday = serendipity_db_query("SELECT day FROM {$serendipity['dbPrefix']}visitors ORDER BY counter_id ASC LIMIT 1", true); - $visitors_count = serendipity_db_query("SELECT count(counter_id) FROM {$serendipity['dbPrefix']}visitors", true); + $visitors_count_today = serendipity_db_query("SELECT visits FROM {$serendipity['dbPrefix']}visitors_count WHERE year = '".$year."' AND month = '".$month."' AND day = '".$day."'", true); + $visitors_count = serendipity_db_query("SELECT SUM(visits) FROM {$serendipity['dbPrefix']}visitors_count", true); + $hits_count_today = serendipity_db_query("SELECT hits FROM {$serendipity['dbPrefix']}visitors_count WHERE year = '".$year."' AND month = '".$month."' AND day = '".$day."'", true); + $hits_count = serendipity_db_query("SELECT SUM(hits) FROM {$serendipity['dbPrefix']}visitors_count", true); $visitors_latest = serendipity_db_query("SELECT counter_id, day, time, ref, browser, ip FROM {$serendipity['dbPrefix']}visitors ORDER BY counter_id DESC LIMIT ".$max_items.""); - $top_refs = serendipity_db_query("SELECT refs, count FROM {$serendipity['dbPrefix']}refs ORDER BY count DESC LIMIT ".$max_items.""); - + $top_refs = serendipity_db_query("SELECT refs, count FROM {$serendipity['dbPrefix']}refs ORDER BY count DESC LIMIT 20"); + // ---------------STYLES for Viewing statistics ---------------------------------------------- echo ""; ?>

-


\n"?>
-
+ + + + + + + + + + + + + +
+ +
+
+
+
+
+
+
+
+
- ".$visitors_count_today[0]."
\n"; - echo PLUGIN_EVENT_STATISTICS_EXT_VISTOTAL.": ".$visitors_count[0]."
\n"; - ?>
- + + +
+ 0) { ?> + + statistics_getmonthlystats($i, $visitors_count[0]); + echo ''; + } ?> + + 'Jan', '2' => 'Feb', '3' => 'Mar', '4' => 'Apr', '5' => 'May', '6' => 'Jun', + '7' => 'Jul', '8' => 'Aug', '9' => 'Sep', '10' => 'Oct', '11' => 'Nov', '12' => 'Dec'); + $color = "col2"; + for ($i = 1; $i < 13; $i++) { + if ($color == "col1") { + $color ="col2"; + } else { + $color ="col1"; + } + echo ''; + } + ?> +
' . $num[$i]; + $num[$i] = ($num[$i] / 100) * 20 + 1; + echo '
'; + echo '
'. serendipity_strftime('%b', mktime(0, 0, 0, $i, 1, 2000)) .'
+ + +
+ 0) { ?> + + statistics_getdailystats($i, $visitors_count[0]); + echo ''; + } + ?> + + '. $i .''; + } ?> +
' . $num[$i]; + $num[$i] = ($num[$i] / 100) * 40 + 1; + echo '
'; + echo '
+ + + +

+
- +
- +

- -
-
- -
+
+
-
+
$row) { - if ($color == "col4"){$color ="col5";}else{$color ="col4";} - echo ""; + if ($color == "col4") { + $color ="col5"; + } else { + $color ="col4"; + } + echo ''; } } else { echo PLUGIN_EVENT_STATISTICS_EXT_TOPREFS_NONE; @@ -617,14 +884,13 @@ class serendipity_event_statistics extends serendipity_event
".$i++.". ".$row['refs']." (".$row['count'].")
'.$i++.'. '.$row['refs'].' ('.$row['count'].')
-
+ updateTables(); } //end of function createTables() - function updateTables() { //create indices $q = "CREATE INDEX visitorses ON {$serendipity['dbPrefix']}visitors(sessID);"; @@ -658,33 +934,38 @@ class serendipity_event_statistics extends serendipity_event serendipity_db_schema_import($q); $q = "CREATE INDEX visitortime ON {$serendipity['dbPrefix']}visitors(time);"; serendipity_db_schema_import($q); + $q = "CREATE INDEX visitortimeb ON {$serendipity['dbPrefix']}visitors_count(year, month, day);"; + serendipity_db_schema_import($q); $this->set_config('db_indices_created', '1'); } + function dropTables() { - + global $serendipity; - + // Drop tables $q = "DROP TABLE ".$serendipity['dbPrefix']."visitors"; $sql = serendipity_db_schema_import($q); + $q = "DROP TABLE ".$serendipity['dbPrefix']."visitors_count"; + $sql = serendipity_db_schema_import($q); $q = "DROP TABLE ".$serendipity['dbPrefix']."refs"; $sql = serendipity_db_schema_import($q); - + } //end of function dropTables - + function install(){ - + $this->createTables(); - + } - + function uninstall(){ - + $this->dropTables(); - + } - + } -/* vim: set sts=4 ts=4 expandtab : */ +/* vim: set sts=4 ts=4 expandtab : */ \ No newline at end of file diff --git a/plugins/serendipity_event_statistics/serendipity_plugin_statistics.php b/plugins/serendipity_event_statistics/serendipity_plugin_statistics.php index ccc6cf9..3efb53c 100644 --- a/plugins/serendipity_event_statistics/serendipity_plugin_statistics.php +++ b/plugins/serendipity_event_statistics/serendipity_plugin_statistics.php @@ -1,5 +1,10 @@ add('name', PLUGIN_EVENT_STATISTICS_NAME); $propbag->add('description', PLUGIN_EVENT_STATISTICS_NAME); $propbag->add('stackable', true); - $propbag->add('author', 'Garvin Hicking'); - $propbag->add('version', '1.0'); + $propbag->add('author', 'Arnan de Gans, Garvin Hicking'); + $propbag->add('version', '1.3'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -150,10 +155,11 @@ class serendipity_plugin_statistics extends serendipity_plugin $title = $this->get_config('title', $this->title); $cachetime = $this->get_config('cachetimeout', 60) * 60; // turn to seconds $cachef = $serendipity['serendipityPath'] . 'templates_c/statistics_cache.html'; - + if (!file_exists($cachef) || filesize($cachef) == 0 || filemtime($cachef) < (time() - $cachetime)) { // Create statistics - + list($year, $month, $day) = split('-', date('Y-m-d')); + $content = ''; if (serendipity_db_bool($this->get_config('show_lastentry'))) { $res = serendipity_db_query("SELECT timestamp FROM {$serendipity['dbPrefix']}entries WHERE isdraft = 'false' AND timestamp <= " . time() . " ORDER BY timestamp DESC LIMIT 1", true, 'assoc'); @@ -177,7 +183,7 @@ class serendipity_plugin_statistics extends serendipity_plugin } if (serendipity_db_bool($this->get_config('show_monthvisitors'))) { - $res = serendipity_db_query("SELECT count(counter_id) AS monthvisitors FROM {$serendipity['dbPrefix']}visitors WHERE day LIKE '" . date('Y-m') . "-%'", true, 'assoc'); + $res = serendipity_db_query("SELECT sum(visits) AS monthvisitors FROM {$serendipity['dbPrefix']}visitors_count WHERE year='".$year."' AND month='".$month."'", true, 'assoc'); if (is_array($res) && isset($res['monthvisitors'])) { $content .= '
' . sprintf($this->get_config('text_monthvisitors'), '' . $res['monthvisitors'] . '') . "
\n"; } @@ -212,4 +218,4 @@ class serendipity_plugin_statistics extends serendipity_plugin } } -/* vim: set sts=4 ts=4 expandtab : */ +/* vim: set sts=4 ts=4 expandtab : */ \ No newline at end of file diff --git a/plugins/serendipity_event_templatechooser/serendipity_event_templatechooser.php b/plugins/serendipity_event_templatechooser/serendipity_event_templatechooser.php index 3ab1cd2..1dddc97 100644 --- a/plugins/serendipity_event_templatechooser/serendipity_event_templatechooser.php +++ b/plugins/serendipity_event_templatechooser/serendipity_event_templatechooser.php @@ -1,5 +1,10 @@ add('description', PLUGIN_EVENT_TEMPLATECHOOSER_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Evan Nemerson'); - $propbag->add('version', '1.3'); + $propbag->add('version', '1.4'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', diff --git a/plugins/serendipity_event_textile/serendipity_event_textile.php b/plugins/serendipity_event_textile/serendipity_event_textile.php index 8c74c0d..cc032ff 100644 --- a/plugins/serendipity_event_textile/serendipity_event_textile.php +++ b/plugins/serendipity_event_textile/serendipity_event_textile.php @@ -2,6 +2,11 @@ require_once S9Y_INCLUDE_PATH . 'plugins/serendipity_event_textile/textile.php'; + +if (IN_serendipity !== true) { + die ("Don't hack!"); +} + // Probe for a language include with constants. Still include defines later on, if some constants were missing $probelang = dirname(__FILE__) . '/' . $serendipity['charset'] . 'lang_' . $serendipity['lang'] . '.inc.php'; if (file_exists($probelang)) { @@ -22,7 +27,7 @@ class serendipity_event_textile extends serendipity_event $propbag->add('description', PLUGIN_EVENT_TEXTILE_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Serendipity Team'); - $propbag->add('version', '1.3'); + $propbag->add('version', '1.4'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', diff --git a/plugins/serendipity_event_textwiki/serendipity_event_textwiki.php b/plugins/serendipity_event_textwiki/serendipity_event_textwiki.php index 1d9f3f2..b5421ca 100644 --- a/plugins/serendipity_event_textwiki/serendipity_event_textwiki.php +++ b/plugins/serendipity_event_textwiki/serendipity_event_textwiki.php @@ -1,5 +1,10 @@ add('description', PLUGIN_EVENT_TEXTWIKI_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Tobias Schlitt'); - $propbag->add('version', '1.2'); + $propbag->add('version', '1.4'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -585,7 +590,9 @@ class serendipity_event_textwiki extends serendipity_event switch($event) { case 'frontend_display': foreach ($this->markup_elements as $temp) { - if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) { + if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { $element = $temp['element']; $eventData[$element] = $this->wiki->transform($eventData[$element]); } diff --git a/plugins/serendipity_event_trackexits/serendipity_event_trackexits.php b/plugins/serendipity_event_trackexits/serendipity_event_trackexits.php index 14b05f3..818c3bd 100644 --- a/plugins/serendipity_event_trackexits/serendipity_event_trackexits.php +++ b/plugins/serendipity_event_trackexits/serendipity_event_trackexits.php @@ -1,5 +1,10 @@ add('description', PLUGIN_EVENT_TRACKBACK_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Serendipity Team'); - $propbag->add('version', '1.5'); + $propbag->add('version', '1.8'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -113,11 +118,13 @@ class serendipity_event_trackexits extends serendipity_event if (empty($serendipity['encodeExitsCallback_entry_id'])) { $this->links = array(); } else { - $this->links = serendipity_db_query("SELECT id, link FROM {$serendipity['dbPrefix']}references WHERE entry_id = {$serendipity['encodeExitsCallback_entry_id']}", false, 'both', false, 'link', 'id'); + $this->links = serendipity_db_query("SELECT id, link FROM {$serendipity['dbPrefix']}references WHERE entry_id = {$serendipity['encodeExitsCallback_entry_id']} AND type = ''", false, 'both', false, 'link', 'id'); } foreach ($this->markup_elements as $temp) { - if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) { + if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { $element = $temp['element']; $eventData[$element] = preg_replace_callback( @@ -189,7 +196,7 @@ class serendipity_event_trackexits extends serendipity_event $is_out = (stristr($buffer[0], 'onmouseout=') !== false ? true : false); $link = ''; - + if (is_array($this->links) && !empty($this->links[$url])) { return sprintf( $link, @@ -198,8 +205,8 @@ class serendipity_event_trackexits extends serendipity_event '_id', $this->links[$url], ($entry_id != 0) ? '&entry_id=' . $entry_id : '', - (!$is_title ? $url : ''), - (!$is_over ? $url : ''), + (!$is_title ? htmlspecialchars($url) : ''), + (!$is_over ? htmlspecialchars($url) : ''), $buffer[6] ); } else { @@ -210,8 +217,8 @@ class serendipity_event_trackexits extends serendipity_event '', base64_encode($url), ($entry_id != 0) ? '&entry_id=' . $entry_id : '', - (!$is_title ? $url : ''), - (!$is_over ? $url : ''), + (!$is_title ? htmlspecialchars($url) : ''), + (!$is_over ? htmlspecialchars($url) : ''), $buffer[6] ); } -- 2.39.5