]> git.mjollnir.org Git - s9y.git/commitdiff
Make track exits plugin not overwrit existing title/onmouseXXX attributes.
authorgarvinhicking <garvinhicking>
Thu, 18 Aug 2005 09:16:49 +0000 (09:16 +0000)
committergarvinhicking <garvinhicking>
Thu, 18 Aug 2005 09:16:49 +0000 (09:16 +0000)
Might break things *g*

plugins/serendipity_event_trackexits/serendipity_event_trackexits.php

index 361f026f01cb31a48a85effbd444e5ae59023a69..1e55a28db062b2bd00b6d79c9ac4a96c7e89b42b 100644 (file)
@@ -27,7 +27,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.1');
+        $propbag->add('version',       '1.2');
         $propbag->add('requirements',  array(
             'serendipity' => '0.8',
             'smarty'      => '2.6.7',
@@ -126,7 +126,7 @@ class serendipity_event_trackexits extends serendipity_event
                             $element = $temp['element'];
 
                             $eventData[$element] = preg_replace_callback(
-                                "#<a(.*)href=(\"|')http(s?)://([^\"']+)(\"|')#isUm",
+                                "#<a(.*)href=(\"|')http(s?)://([^\"']+)(\"|')([^>]*)>#isUm",
                                 array($this, '_encodeExitsCallback'),
                                 $eventData[$element]
                             );
@@ -189,25 +189,33 @@ class serendipity_event_trackexits extends serendipity_event
             );
         }
 
+        $is_title = (stristr($buffer[0], 'title=')       !== false ? true : false);
+        $is_over  = (stristr($buffer[0], 'onmouseover=') !== false ? true : false);
+        $is_out   = (stristr($buffer[0], 'onmouseout=')  !== false ? true : false);
+
+        $link     = '<a%shref="%sexit.php?url_id=%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) && isset($this->links[$url])) {
             return sprintf(
-                '<a%shref="%sexit.php?url_id=%s%s" title="%s" onmouseover="window.status=\'%s\';return true;" onmouseout="window.status=\'\';return true;"',
+                $link,
                 $buffer[1],
                 $serendipity['baseURL'],
                 $this->links[$url],
                 ($entry_id != 0) ? '&amp;entry_id=' . $entry_id : '',
-                $url,
-                $url
+                (!$is_title ? $url : ''),
+                (!$is_over  ? $url : ''),
+                $buffer[6]
             );
         } else {
             return sprintf(
-                '<a%shref="%sexit.php?url=%s%s" title="%s" onmouseover="window.status=\'%s\';return true;" onmouseout="window.status=\'\';return true;"',
+                $link,
                 $buffer[1],
                 $serendipity['baseURL'],
                 base64_encode($url),
                 ($entry_id != 0) ? '&amp;entry_id=' . $entry_id : '',
-                $url,
-                $url
+                (!$is_title ? $url : ''),
+                (!$is_over  ? $url : ''),
+                $buffer[6]
             );
         }
     }