Rev 3 | Blame | Compare with Previous | Last modification | View Log | Download
<?php namespace ProcessWire;/*** Textformatter PrivacyWire* This module adds the textformatter for PrivacyWire*** @author blaueQuelle** ProcessWire 3.x* Copyright (C) 2011 by Ryan Cramer* Licensed under GNU/GPL v2, see LICENSE.TXT** http://www.processwire.com* http://www.ryancramer.com**/class TextformatterPrivacyWire extends Textformatter implements Module{public static function getModuleInfo(){return ['title' => 'PrivacyWire Textformatter','summary' => "PrivacyWire Textformatter to render privacy options via shortcode [[privacywire-choose-cookies]]",'author' => 'blaueQuelle','href' => "https://github.com/blaueQuelle/privacywire",'version' => 9,'requires' => ["PHP>=7.2","ProcessWire>=3.0.110"],];}/*** Formats the given $str reference.* Page and Field context are currently not necessary for the formatter to work.* The formatter can be called via format(&$str) or formatValue(Page $page, Field $field, &$value)* formatValue(Page $page, Field $field, &$value) internally calls format(&$str), so the former does not need to be overwritten.* @param mixed $str* @return void*/public function format(&$str){// Replace privacywire-choose-cookies with button element$tag_search = $this->open_tag . "privacywire-choose-cookies" . $this->close_tag;if (strpos($str, $tag_search) !== false) {$privacyWire = $this->modules->get("PrivacyWire");// Multi Language Support$lang = ($this->wire('languages') && !$this->wire('user')->language->isDefault()) ? '__' . $this->wire('user')->language->id : '';$tag_replace = "<button class='button privacywire-show-options'>{$privacyWire->get("textformatter_choose_label$lang|textformatter_choose_label")}</button>";$str = str_replace($tag_search, $tag_replace, $str);}// Optional: enable PrivacyWire support for embedded mediaif ($this->video_category && (strpos($str, 'www.youtube.com/embed/') !== false || strpos($str, 'www.youtube-nocookie.com/embed/') !== false || strpos($str, 'player.vimeo.com') !== false)) {if (preg_match_all('/\<iframe.*?src=("|\')(?:https?:)\/\/(?:www\.youtube-nocookie|youtube|player\.vimeo)\..*?\1.*?\<\/iframe\>/is', $str, $matches)) {foreach ($matches[0] as $match) {$new_match = str_replace(' src=', ' data-category="' . $this->video_category . '" data-ask-consent=1 data-src=', $match);$str = str_replace($match, $new_match, $str);}}}}}