[php-blog-cvs] r1652 - in trunk: docs include plugins/serendipity_event_trackexits
A reliable, secure & extensible PHP blog | Not mainstream since 2002
Brought to you by:
garvinhicking,
jhermanns
From: garvinhicking at B. <gar...@ma...> - 2007-03-21 10:53:58
|
Author: garvinhicking Date: 2007-03-21 11:53:46 +0100 (Wed, 21 Mar 2007) New Revision: 1652 Modified: trunk/docs/NEWS trunk/include/functions_trackbacks.inc.php trunk/plugins/serendipity_event_trackexits/serendipity_event_trackexits.php Log: Fix track exit ids off by one when being used in conjunction with caching plugin Modified: trunk/docs/NEWS =================================================================== --- trunk/docs/NEWS 2007-03-20 09:00:40 UTC (rev 1651) +++ trunk/docs/NEWS 2007-03-21 10:53:46 UTC (rev 1652) @@ -3,6 +3,9 @@ Version 1.2 () ------------------------------------------------------------------------ + * Fix track exit url ids off by one when being used in conjunction + with caching plugin (garvinhicking) + * Fix permalink patterns for some cases to properly detect pagination variables instead of interpreting search words as those. (garvinhicking) Modified: trunk/include/functions_trackbacks.inc.php =================================================================== --- trunk/include/functions_trackbacks.inc.php 2007-03-20 09:00:40 UTC (rev 1651) +++ trunk/include/functions_trackbacks.inc.php 2007-03-21 10:53:46 UTC (rev 1652) @@ -421,20 +421,35 @@ function serendipity_handle_references($id, $author, $title, $text, $dry_run = false) { global $serendipity; static $old_references = array(); + static $debug = false; if ($dry_run) { // Store the current list of references. We might need to restore them for later user. $old_references = serendipity_db_query("SELECT * FROM {$serendipity['dbPrefix']}references WHERE type = '' AND entry_id = " . (int)$id, false, 'assoc'); + if (is_array($old_references) && count($old_references) > 0) { + $current_references = array(); + foreach($old_references AS $idx => $old_reference) { + // We need the current reference ID to restore it later. + $current_references[$old_reference['link']] = $old_reference; + } + } + if ($debug) echo "Got references in dry run: <pre>" . print_r($current_references, true) . "</pre><br />\n"; } else { // A dry-run was called previously and restorable references are found. Restore them now. serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}references WHERE type = '' AND entry_id = " . (int)$id); + if ($debug) echo "Deleted references.<br />\n"; if (is_array($old_references) && count($old_references) > 0) { + $current_references = array(); foreach($old_references AS $idx => $old_reference) { + // We need the current reference ID to restore it later. + $current_references[$old_reference['link']] = $old_reference; $q = serendipity_db_insert('references', $old_reference, 'show'); serendipity_db_query($q); } } + + if ($debug) echo "Got references in final run: <pre>" . print_r($current_references, true) . "</pre><br />\n"; } if (!preg_match_all('@<a[^>]+?href\s*=\s*["\']?([^\'" >]+?)[ \'"][^>]*>(.+?)</a>@i', $text, $matches)) { @@ -490,14 +505,40 @@ } } serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}references WHERE entry_id=" . (int)$id . " AND type = ''"); + if ($debug) echo "Deleted references again.<br />\n"; + if (!is_array($old_references)) { + $old_references = array(); + } + for ($i = 0; $i < $j; ++$i) { - $query = "INSERT INTO {$serendipity['dbPrefix']}references (entry_id, name, link) VALUES("; - $query .= (int)$id . ", '" . serendipity_db_escape_string(strip_tags($names[$i])) . "', '"; - $query .= serendipity_db_escape_string($locations[$i]) . "')"; - - serendipity_db_query($query); + $i_link = serendipity_db_escape_string(strip_tags($names[$i])); + $i_location = serendipity_db_escape_string($locations[$i]); + if (isset($current_references[$locations[$i]])) { + $query = "INSERT INTO {$serendipity['dbPrefix']}references (id, entry_id, name, link) VALUES("; + $query .= (int)$current_references[$locations[$i]]['id'] . ", " . (int)$id . ", '" . $i_link . "', '" . $i_location . "')"; + serendipity_db_query($query); + } else { + $query = "INSERT INTO {$serendipity['dbPrefix']}references (entry_id, name, link) VALUES("; + $query .= (int)$id . ", '" . $i_link . "', '" . $i_location . "')"; + serendipity_db_query($query); + $old_references[] = array( + 'id' => serendipity_db_insert_id('references', 'id'), + 'name' => $i_link, + 'link' => $i_location, + 'entry_id' => (int)$id + ); + } + + if ($debug) { + echo "Current lookup for {$locations[$i]} is <pre>" . print_r($current_references[$locations[$i]], true) . "</pre><br />\n"; + echo $query . "<br />\n"; + } } + + if ($debug) { + echo "Old/Saved locations: <pre>" . print_r($old_references, true) . "</pre><br />\n"; + } // Add citations preg_match_all('@<cite[^>]*>([^<]+)</cite>@i', $text, $matches); Modified: trunk/plugins/serendipity_event_trackexits/serendipity_event_trackexits.php =================================================================== --- trunk/plugins/serendipity_event_trackexits/serendipity_event_trackexits.php 2007-03-20 09:00:40 UTC (rev 1651) +++ trunk/plugins/serendipity_event_trackexits/serendipity_event_trackexits.php 2007-03-21 10:53:46 UTC (rev 1652) @@ -118,7 +118,9 @@ if (empty($serendipity['encodeExitsCallback_entry_id'])) { $this->links = array(); } else { + #echo "SELECT id, link FROM {$serendipity['dbPrefix']}references WHERE entry_id = {$serendipity['encodeExitsCallback_entry_id']} AND type = ''<br />\n"; $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'); + #echo "<pre>" . print_r($this->links, true) . "</pre><br />\n"; } foreach ($this->markup_elements as $temp) { |