File indexing completed on 2025-03-09 05:21:19

0001 <?php
0002 
0003 /**
0004  *  ocs-apiserver
0005  *
0006  *  Copyright 2016 by pling GmbH.
0007  *
0008  *    This file is part of ocs-apiserver.
0009  *
0010  *    This program is free software: you can redistribute it and/or modify
0011  *    it under the terms of the GNU Affero General Public License as
0012  *    published by the Free Software Foundation, either version 3 of the
0013  *    License, or (at your option) any later version.
0014  *
0015  *    This program is distributed in the hope that it will be useful,
0016  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
0017  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0018  *    GNU Affero General Public License for more details.
0019  *
0020  *    You should have received a copy of the GNU Affero General Public License
0021  *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0022  *
0023  * Created: 21.09.2017
0024  */
0025 class Local_Markup_Renderer_Html_Url extends Zend_Markup_Renderer_Html_HtmlAbstract
0026 {
0027 
0028     /**
0029      * Convert the token
0030      *
0031      * @param Zend_Markup_Token $token
0032      * @param string            $text
0033      *
0034      * @return string
0035      */
0036     public function convert(Zend_Markup_Token $token, $text)
0037     {
0038         if ($token->hasAttribute('url')) {
0039             $uri = $token->getAttribute('url');
0040         } else {
0041             $uri = $text;
0042         }
0043 
0044         if (!preg_match('/^([a-z][a-z+\-.]*):/i', $uri)) {
0045             $uri = 'http://' . $uri;
0046         }
0047 
0048         // check if the URL is valid
0049         if (!Zend_Markup_Renderer_Html::isValidUri($uri)) {
0050             return $text;
0051         }
0052 
0053         $attributes =
0054             Zend_Markup_Renderer_Html::renderAttributes($token, array('target' => '_blank', 'rel' => 'nofollow'));
0055 
0056         return "<a href=\"{$uri}\"{$attributes}>{$text}</a>";
0057     }
0058 
0059 }