]> git.mjollnir.org Git - s9y.git/commitdiff
Make plugins bail out if called directly
authorgarvinhicking <garvinhicking>
Fri, 1 Dec 2006 08:58:47 +0000 (08:58 +0000)
committergarvinhicking <garvinhicking>
Fri, 1 Dec 2006 08:58:47 +0000 (08:58 +0000)
20 files changed:
plugins/serendipity_event_bbcode/serendipity_event_bbcode.php
plugins/serendipity_event_browsercompatibility/serendipity_event_browsercompatibility.php
plugins/serendipity_event_contentrewrite/serendipity_event_contentrewrite.php
plugins/serendipity_event_creativecommons/serendipity_event_creativecommons.php
plugins/serendipity_event_emoticate/serendipity_event_emoticate.php
plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php
plugins/serendipity_event_karma/serendipity_event_karma.php
plugins/serendipity_event_livesearch/serendipity_event_livesearch.php
plugins/serendipity_event_mailer/serendipity_event_mailer.php
plugins/serendipity_event_nl2br/serendipity_event_nl2br.php
plugins/serendipity_event_s9ymarkup/serendipity_event_s9ymarkup.php
plugins/serendipity_event_searchhighlight/serendipity_event_searchhighlight.php
plugins/serendipity_event_spamblock/serendipity_event_spamblock.php
plugins/serendipity_event_spartacus/serendipity_event_spartacus.php
plugins/serendipity_event_statistics/serendipity_event_statistics.php
plugins/serendipity_event_statistics/serendipity_plugin_statistics.php
plugins/serendipity_event_templatechooser/serendipity_event_templatechooser.php
plugins/serendipity_event_textile/serendipity_event_textile.php
plugins/serendipity_event_textwiki/serendipity_event_textwiki.php
plugins/serendipity_event_trackexits/serendipity_event_trackexits.php

index beaba8a4bb3e9ba94d5818b6c7146b107108d8bb..86b1a6828ec3ca11f70b3ddab0563ffe36c1fd48 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+
+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)) {
@@ -19,7 +24,7 @@ class serendipity_event_bbcode extends serendipity_event
         $propbag->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'));
         }
index 47a512ba72b336ac519d85d7b548882538286eb4..456e011deb72041653d3ce1924a5225dca6ac45b 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+
+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)) {
@@ -25,7 +30,7 @@ class serendipity_event_browsercompatibility extends serendipity_event
             'smarty'      => '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,
index 9db6f4cab5cb95d48a0738c087bb277d92b724b0..38892c85d826dd365851b6e094509b808351f201 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+
+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)) {
@@ -12,6 +17,7 @@ class serendipity_event_contentrewrite extends serendipity_event
 {
     var $title = PLUGIN_EVENT_CONTENTREWRITE_NAME;
     var $rewrite_from, $rewrite_to;
+    var $fromstring, $tostring;
 
     function cleanup() {
         // Cleanup. Remove all empty configs on SAVECONF-Submit.
@@ -29,7 +35,7 @@ class serendipity_event_contentrewrite extends serendipity_event
         $propbag->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]);
                                 }
index 257db0ae309b69ea07310874ed291b9dcacfcded..f883b7b63a5a466a86db1ba6d706002544620de3 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+
+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)) {
@@ -18,7 +23,7 @@ class serendipity_event_creativecommons extends serendipity_event {
         $propbag->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'] = '<div style="text-align: center;">';
+                $eventData['display_dat'] .= '<div style="text-align: center;">';
                 if ($license_string == '') {
                     if ($cc_visibility == 'visible') {
                         $eventData['display_dat'] .= '<a href="http://creativecommons.org/licenses/publicdomain">';
@@ -151,17 +156,17 @@ class serendipity_event_creativecommons extends serendipity_event {
                 break;
 
             case 'frontend_display:rss-2.0:per_entry':
-                $eventData['display_dat'] = '<creativeCommons:license>'.$license_uri.'</creativeCommons:license>';
+                $eventData['display_dat'] .= '<creativeCommons:license>'.$license_uri.'</creativeCommons:license>';
                 return true;
                 break;
 
             case 'frontend_display:rss-1.0:per_entry':
-                $eventData['display_dat'] = '<cc:license rdf:resource="'.$license_uri.'" />';
+                $eventData['display_dat'] .= '<cc:license rdf:resource="'.$license_uri.'" />';
                 return true;
                 break;
 
             case 'frontend_display:rss-1.0:once':
-                $eventData['display_dat'] = '<cc:License rdf:about="'.$license_uri.'">';
+                $eventData['display_dat'] .= '<cc:License rdf:about="'.$license_uri.'">';
                 foreach ($rdf as $rdf_t => $rdf_v) {
                   $eventData['display_dat'] .= '<cc:'.$rdf_v.' rdf:resource="http://web.resource.org/cc/'.$rdf_t.'" />';
                 }
@@ -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;
 
index 80d1b4ace241456b0d959013c2ba2549f309d362..b22be27efec71411f1eb44a2b339674988f804dc 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+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)) {
@@ -20,7 +25,7 @@ class serendipity_event_emoticate extends serendipity_event
         $propbag->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) {
index bea749365a318f48ca04fbcd10ec3205716f926a..c8086c5aaeadf20a5fa8d48e7ef7b6e6c6e11016 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+
+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)) {
@@ -21,7 +26,7 @@ class serendipity_event_entryproperties extends serendipity_event
         $propbag->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',
index 11a5dd1d9af0410e52d959938d8eec8ef4ef79a5..75071ab6dbb1c8cdf8ac882a96729cb7efc59442 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+
+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)) {
@@ -26,7 +31,7 @@ class serendipity_event_karma extends serendipity_event
         $propbag->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',
index f866e9c5a03868f54ba2d189e11c594f157305b5..dadd4e71fb827506f574019c781382493993f929 100644 (file)
@@ -1,10 +1,15 @@
 <?php # $Id$
 
+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)) {
     include $probelang;
-} 
+}
 
 include dirname(__FILE__) . '/lang_en.inc.php';
 
@@ -20,7 +25,7 @@ class serendipity_event_livesearch extends serendipity_event
         $propbag->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',
index d4972996976e099ccd650982cc9333a30282a6e2..13221cd8ffe6c7d30750b4dd4d3e1fb8c42cb048 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+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)) {
@@ -21,7 +26,7 @@ class serendipity_event_mailer extends serendipity_event
         $propbag->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) {
index 280b8818219614d8523d5326e4370d13837a3a38..8815cb3bc42fb09a073ebafe946430fa8dec6099 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+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)) {
@@ -20,7 +25,7 @@ class serendipity_event_nl2br extends serendipity_event
         $propbag->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',
index 971d414cdd04e51ebb376c1bdef88e2b2f0987b9..fda358ba5d645aa833cb7dc5f50e9e024e6147b6 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+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)) {
@@ -20,7 +25,7 @@ class serendipity_event_s9ymarkup extends serendipity_event
         $propbag->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]);
                         }
index 5adb101606f9c53564b84a76ba4f0484c13ec3ea..a3aa4fe84835bd577f1c5c24dedfe8cf653b20f4 100644 (file)
@@ -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 ) {
index ebc6c73143834b65315b413c6c65d68e979af19d..90d034b7b893fcd897ae96bc4d7b170caf52aa37 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+
+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 @@ var $filter_defaults;
             'smarty'      => '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;
index 6d387e83bf0685385697efdc3fb92780cd728f5a..4872deb0bad8ea630fccb04b1561afb509b75e0c 100644 (file)
@@ -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
         ));
index 69a8703c8b1d658881a068fff6474022fbc897d6..976a0c8a81ce569a6edc4bc73e4acc0cf8175415 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+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)) {
@@ -7,7 +12,7 @@ if (file_exists($probelang)) {
 }
 
 include dirname(__FILE__) . '/lang_en.inc.php';
-        
+
 class serendipity_event_statistics extends serendipity_event
 {
     var $title = PLUGIN_EVENT_STATISTICS_NAME;
@@ -19,8 +24,8 @@ class serendipity_event_statistics extends serendipity_event
         $propbag->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; $i<count($tmp_array); $i++) {
-                            if (trim($tmp_array[$i]) == trim($_SERVER['HTTP_USER_AGENT'])){
-                                $found = 'yes';
+                        if ($this->get_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");
 ?>
     <h3><?php echo PLUGIN_EVENT_STATISTICS_OUT_STATISTICS; ?></h3>
 
@@ -234,7 +307,7 @@ class serendipity_event_statistics extends serendipity_event
                         foreach($author_rows AS $author => $author_stat) {
 ?>
             <dt><strong><?php echo $author_stat['author']; ?></strong></dt>
-            <dd><?php echo $author_stat['entries']; ?> <?php echo PLUGIN_EVENT_STATISTICS_OUT_ENTRIES; ?></dd>
+            <dd><?php echo $author_stat['entries']; ?> <?php echo PLUGIN_EVENT_STATISTICS_OUT_ENTRIES; ?> (<?php echo 100*round($author_stat['entries'] / max($total_count[0], 1), 3); ?>%)</dd>
 <?php
                         }
                     }
@@ -442,20 +515,21 @@ class serendipity_event_statistics extends serendipity_event
                     }
 ?>
         </dl>
-        <br />
 
+        <br />
         <dt><strong><?php echo TOP_REFERRER; ?></strong></dt>
         <dd><?php echo serendipity_displayTopReferrers($max_items, true); ?></dd>
-        <br />
 
+        <br />
         <dt><strong><?php echo TOP_EXITS; ?></strong></dt>
         <dd><?php echo serendipity_displayTopExits($max_items, true); ?></dd>
     </dl>
     <hr />
     <?php serendipity_plugin_api::hook_event('event_additional_statistics', $eventData, array('maxitems' => $max_items)); ?>
     </div>
-    
+
     <?php
+                    }
 
                     if ($ext_vis_stat == 'yesBot') {
                         $this->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 "<style type='text/css'>";
         echo ".colVis {text-align: center; width:600px; font-size: 10px; background-color:#dddddd;} ";
         echo ".col1 {text-align: center; width:150px; font-size: 10px; background-color:#dddddd;} ";
-        echo ".col2 {text-align: center; width:150px; font-size: 10px;} ";
+        echo ".col2 {text-align: center; width:150px; font-size: 10px; background-color:#CCCCFF;} ";
         echo ".col4 {text-align: center; width:600px; font-size: 10px; background-color:#dddddd;} ";
-        echo ".col5 {text-align: center; width:600px; font-size: 10px;} ";
+        echo ".col5 {text-align: center; width:600px; font-size: 10px; background-color:#CCCCFF;} ";
         echo "</style>";
 
         ?>
         <h3><?php echo PLUGIN_EVENT_STATISTICS_OUT_EXT_STATISTICS; ?></h3>
         <div style="margin: 5px; padding: 5px">
         <dl>
-            <dt><?php echo PLUGIN_EVENT_STATISTICS_EXT_VISSINCE." ".$visitors_count_firstday[0].".<br /><br /><br />\n"?></dt>
-        
             <dt><strong><?php echo PLUGIN_EVENT_STATISTICS_EXT_VISITORS; ?></strong></dt>
+            <table width="100%" cellpadding="3" cellspacing="3">
+                <tr>
+                    <td colspan="4" align="center">
+                        <?php echo PLUGIN_EVENT_STATISTICS_EXT_VISSINCE." ".$visitors_count_firstday[0]; ?>
+                    </td>
+                </tr>
+                <tr>
+                    <td colspan="4" align="center"><?php echo PLUGIN_EVENT_STATISTICS_EXT_COUNTDESC; ?></td>
+                </tr>
+                <tr>
+                    <td width="25%" align="center">
+                        <?php echo PLUGIN_EVENT_STATISTICS_EXT_VISTODAY; ?><br /><strong><?php echo $visitors_count_today[0]; ?></strong>
+                    </td>
+                    <td width="25%" align="center">
+                        <?php echo PLUGIN_EVENT_STATISTICS_EXT_VISTOTAL; ?><br /><strong><?php echo $visitors_count[0]; ?>
+                    </td>
+                    <td width="25%" align="center">
+                        <?php echo PLUGIN_EVENT_STATISTICS_EXT_HITSTODAY; ?><br /><strong><?php echo $hits_count_today[0]; ?>
+                    </td>
+                    <td width="25%" align="center">
+                        <?php echo PLUGIN_EVENT_STATISTICS_EXT_HITSTOTAL; ?><br /><strong><?php echo $hits_count[0]; ?>
+                    </td>
+                </tr>
+            </table>
                 <dd>
                     <div class="colVis">
-                    <?php 
-                    echo PLUGIN_EVENT_STATISTICS_EXT_VISTODAY.": <strong>".$visitors_count_today[0]."</strong><br />\n";
-                    echo PLUGIN_EVENT_STATISTICS_EXT_VISTOTAL.": <strong>".$visitors_count[0]."</strong><br />\n";
-                    ?>
                     </div>
                 </dd>
         </dl>
-                    
+
+         <!-- Visitor graphs -->
+        <dt><strong><?php echo PLUGIN_EVENT_STATISTICS_EXT_MONTHGRAPH;?></strong></dt>
+        <?php if ($visitors_count[0] > 0) { ?>
+        <table width="100%" cellpadding="0" cellspacing="0"><tr>
+            <?php
+                $color = "col2";
+                for ($i=1; $i < 13; $i++) {
+                    if ($color == "col1") {
+                        $color ="col2";
+                    } else {
+                        $color ="col1";
+                    }
+
+                    $num = $this->statistics_getmonthlystats($i, $visitors_count[0]);
+                    echo '<td class="'.$color.'" width="8%" align="center" valign="bottom"><small>' . $num[$i];
+                    $num[$i] = ($num[$i] / 100) * 20 + 1;
+                    echo '<br /><img src="plugins/serendipity_event_statistics/';
+                    if ($num[$i] < 10) {
+                        echo 'red.png';
+                    } else if ($num[$i] >= 11 && $num[$i] < 30) {
+                        echo 'yellow.png';
+                    } else {
+                        echo 'green.png';
+                    }
+                    echo '" width="8" alt="" align="bottom" height="'.$num[$i].'" />';
+                    echo '<br /></small></td>';
+                } ?>
+        </tr><tr>
+            <?php
+            $mon = array('1' => '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 '<td class="'.$color.'" width="8%" align="center"><small><b>'. serendipity_strftime('%b', mktime(0, 0, 0, $i, 1, 2000)) .'</b></small></td>';
+            }
+            ?>
+        </tr></table>
+        <?php } ?>
+
+        <dt><strong><?php echo PLUGIN_EVENT_STATISTICS_EXT_DAYGRAPH;?></strong></dt>
+        <?php if ($visitors_count[0] > 0) { ?>
+        <table width="100%" cellpadding="0" cellspacing="0"><tr>
+            <?php
+                $color = "col2";
+                 for ($i=1; $i < 32; $i++) {
+                    if ($color == "col1") {
+                        $color ="col2";
+                    } else {
+                        $color ="col1";
+                    }
+
+                    $num = $this->statistics_getdailystats($i, $visitors_count[0]);
+                    echo '<td class="'.$color.'" width="3%" align="center" valign="bottom"><small>' . $num[$i];
+                    $num[$i] = ($num[$i] / 100) * 40 + 1;
+                    echo '<br /><img src="plugins/serendipity_event_statistics/';
+                    if ($num[$i] < 20) {
+                        echo 'red.png';
+                    } else if ($num[$i] >= 21 && $num[$i] < 40) {
+                        echo 'yellow.png';
+                    } else {
+                        echo 'green.png';
+                    }
+                    echo '" width="8" alt="" align="bottom" height="'.$num[$i].'" />';
+                    echo '<br /></small></td>';
+                }
+            ?>
+        </tr><tr>
+            <?php
+                $color = "col2";
+                for ($i=1; $i < 32; $i++) {
+                    if ($color == "col1") {
+                        $color ="col2";
+                    } else {
+                        $color ="col1";
+                    }
+                    echo '<td class="'.$color.'" width="3%" align="center"><small><b>'. $i .'</b></small></td>';
+                } ?>
+        </tr></table>
+        <?php } ?>
+         <!-- End visitor graphs -->
+
+        <br /><br />
+
         <dl>
-        
+
         <dt><strong><?php echo PLUGIN_EVENT_STATISTICS_EXT_VISLATEST;?></strong></dt>
             <dd>
-                <table>
+                <table width="100%" cellpadding="0" cellspacing="0">
                     <?php
                     $i=1;
                     $color = "col2";
@@ -594,21 +862,20 @@ class serendipity_event_statistics extends serendipity_event
                 </table><br />
             </dd>
         </dl>
-                        
-        <dl>
-        <dt><strong>
-        <?php 
-        echo PLUGIN_EVENT_STATISTICS_EXT_TOPREFS;
-        ?>
-        </strong></dt>
+       <dl>
+        <dt><strong><?php echo PLUGIN_EVENT_STATISTICS_EXT_TOPREFS; ?></strong></dt>
             <dd>
-                <table>
+                <table width="100%" cellpadding="0" cellspacing="0">
                     <?php
                         $i=1;
                         if (is_array($top_refs)) {
                             foreach($top_refs AS $key => $row) {
-                                if ($color == "col4"){$color ="col5";}else{$color ="col4";}
-                                    echo "<tr><td class=\"".$color."\">".$i++.".  ".$row['refs']." (<strong>".$row['count']."</strong>)</td></tr>";
+                                if ($color == "col4") {
+                                    $color ="col5";
+                                } else {
+                                    $color ="col4";
+                                }
+                                echo '<tr><td class="'.$color.'">'.$i++.'. <a href="http://'.$row['refs'].'" target="_blank">'.$row['refs'].'</a> (<strong>'.$row['count'].'</strong>)</td></tr>';
                             }
                         } else {
                             echo PLUGIN_EVENT_STATISTICS_EXT_TOPREFS_NONE;
@@ -617,14 +884,13 @@ class serendipity_event_statistics extends serendipity_event
                 </table>
             </dd>
         </dl>
-        <hr />
+
     <?php
     } //end of function extendedVisitorStatistics()
-    
-    
+
     function createTables() {
         global $serendipity;
-        
+
         //create table xxxx_visitors
         $q   = "CREATE TABLE {$serendipity['dbPrefix']}visitors (
             counter_id {AUTOINCREMENT} {PRIMARY},
@@ -636,6 +902,17 @@ class serendipity_event_statistics extends serendipity_event
             ip varchar(15) default null
         )";
 
+       serendipity_db_schema_import($q);
+
+        //create table xxxx_visitors_counts
+        $q   = "CREATE TABLE {$serendipity['dbPrefix']}visitors_count (
+            year int(4) not null,
+            month int(2) not null,
+            day int(2) not null,
+            visits int(12) not null,
+            hits int(12) not null
+        )";
+
        serendipity_db_schema_import($q);
 
         //create table xxxx_refs
@@ -645,11 +922,10 @@ class serendipity_event_statistics extends serendipity_event
             count int(11) not null default '0'
         )";
         serendipity_db_schema_import($q);
-        
+
         $this->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
index ccc6cf9230afa05fb4fe8ea058600c7891383466..3efb53c1eeeeee360bea350f8328ee2b873a5f4e 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id: serendipity_plugin_comments.php 691 2005-11-13 06:58:40Z elf2000 $
 
+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)) {
@@ -21,8 +26,8 @@ class serendipity_plugin_statistics extends serendipity_plugin
         $propbag->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 .= '<div class="stat_monthvisitors">' . sprintf($this->get_config('text_monthvisitors'), '<span class="stat_number">' . $res['monthvisitors'] . '</span>') . "</div>\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
index 3ab1cd216142cce4c85e3b6ab37b75a1dd85cf60..1dddc9770d57654d9b66b7cacafdf4f8a9e941bd 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+
+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)) {
@@ -21,7 +26,7 @@ class serendipity_event_templatechooser extends serendipity_event
         $propbag->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',
index 8c74c0d2b1f2e90d1ef2714442d816c720b63e3a..cc032ff9ca8a66b8385eb748a2ac42ed0966b07c 100644 (file)
@@ -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',
index 1d9f3f228d5fb4edbe57de43f1d4be8e9c594749..b5421ca859c2c8cee54d74762d0e2de865763071 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+
+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)) {
@@ -461,7 +466,7 @@ class serendipity_event_textwiki extends serendipity_event
         $propbag->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]);
                         }
index 14b05f3f45d9ea79f3eb1872cd65bee734034907..818c3bda0737efe8651f5cec86328b6cb64b77c2 100644 (file)
@@ -1,5 +1,10 @@
 <?php # $Id$
 
+
+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)) {
@@ -21,7 +26,7 @@ class serendipity_event_trackexits extends serendipity_event
         $propbag->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     = '<a%shref="%sexit.php?url%s=%s%s" ' . (!$is_title ? 'title="%s" ' : '%s') . (!$is_over ? ' onmouseover="window.status=\'%s\';return true;" ' : '%s') . (!$is_out ? 'onmouseout="window.status=\'\';return true;"' : '') . '%s>';
-        
+
         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) ? '&amp;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) ? '&amp;entry_id=' . $entry_id : '',
-                (!$is_title ? $url : ''),
-                (!$is_over  ? $url : ''),
+                (!$is_title ? htmlspecialchars($url) : ''),
+                (!$is_over  ? htmlspecialchars($url) : ''),
                 $buffer[6]
             );
         }