Skip to content
Snippets Groups Projects
Unverified Commit 502d3bdc authored by Sébastien Gaya's avatar Sébastien Gaya
Browse files

fix embed blocks from indirect source

parent 5a9c7da9
No related merge requests found
......@@ -21,7 +21,7 @@ module Communication::Website::WithAssociatedObjects
has_many :permalinks,
class_name: "Communication::Website::Permalink",
dependent: :destroy
has_many :communication_blocks,
class_name: "Communication::Block",
foreign_key: :communication_website_id
......@@ -29,6 +29,22 @@ module Communication::Website::WithAssociatedObjects
end
def blocks_from_education
Communication::Block.where(about: education_programs).or(
Communication::Block.where(about: education_diplomas)
)
end
def blocks_from_research
Communication::Block.where(about: research_papers)
end
def blocks_from_university
Communication::Block.where(about: connected_people).or(
Communication::Block.where(about: connected_organizations)
)
end
def education_diplomas
has_education_diplomas? ? about.diplomas : Education::Diploma.none
end
......
......@@ -5,7 +5,10 @@ module Communication::Website::WithSecurity
list = external_domains_default
list.concat external_domains_plausible
list.concat external_domains_from_blocks_video
list.concat external_domains_from_blocks_embed
list.concat external_domains_from_blocks_embed(blocks)
list.concat external_domains_from_blocks_embed(blocks_from_education)
list.concat external_domains_from_blocks_embed(blocks_from_research)
list.concat external_domains_from_blocks_embed(blocks_from_university)
list.uniq.compact
end
......@@ -34,14 +37,14 @@ module Communication::Website::WithSecurity
list
end
def external_domains_from_blocks_embed
def external_domains_from_blocks_embed(blocks)
list = []
blocks.where(template_kind: :embed).each do |block|
blocks.where(template_kind: :embed).published.each do |block|
code = block.template.code
# https://stackoverflow.com/questions/25095176/extracting-all-urls-from-a-page-using-ruby
code.scan(/[[:lower:]]+:\/\/[^\s"]+/).each do |url|
url = CGI.unescapeHTML(url)
url = ActionController::Base.helpers.strip_tags(url)
url = ActionController::Base.helpers.strip_tags(url)
url = URI::Parser.new.escape(url)
host = URI.parse(url).host
list << host
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment