Expire Caches for Redirected Links
[[!redirect foo]] should expire all pages which reference "foo". Sounds simple, but this was a really gnarly bug to fix.
This commit is contained in:
parent
ea6b04271b
commit
0943b7e510
5 changed files with 15 additions and 18 deletions
|
@ -71,10 +71,6 @@ class Page < ActiveRecord::Base
|
|||
def linked_from
|
||||
web.select.pages_that_link_to(name)
|
||||
end
|
||||
|
||||
def redirects_for
|
||||
wiki_references.select { |ref| ref.redirected_page?}.map { |ref| ref.referenced_name }
|
||||
end
|
||||
|
||||
def included_from
|
||||
web.select.pages_that_include(name)
|
||||
|
|
|
@ -54,14 +54,9 @@ class WikiReference < ActiveRecord::Base
|
|||
|
||||
def self.pages_redirected_to(web, page_name)
|
||||
names = []
|
||||
if web.has_page?(page_name)
|
||||
page = web.page(page_name)
|
||||
redirected_names = page.redirects_for
|
||||
redirected_names.each do |name|
|
||||
names = names | self.pages_that_reference(web, name)
|
||||
end
|
||||
end
|
||||
names
|
||||
page = web.page(page_name)
|
||||
Thread.current[:page_redirects][page.name].each { |name| names = names + self.pages_that_reference(web, name) }
|
||||
names.uniq
|
||||
end
|
||||
|
||||
def self.page_that_redirects_for(web, page_name)
|
||||
|
@ -70,8 +65,8 @@ class WikiReference < ActiveRecord::Base
|
|||
'WHERE wiki_references.referenced_name = ? ' +
|
||||
"AND wiki_references.link_type = '#{REDIRECTED_PAGE}' " +
|
||||
"AND pages.web_id = '#{web.id}'"
|
||||
names = connection.select_all(sanitize_sql([query, page_name])).map { |row| row['name'] }
|
||||
names[0]
|
||||
row = connection.select_one(sanitize_sql([query, page_name]))
|
||||
row['name'] if row
|
||||
end
|
||||
|
||||
def self.pages_in_category(web, category)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue