From f50413b1d428ae24df89335bd9e75e49ada716c7 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 29 Aug 2015 18:50:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D1=83=20=D1=81?= =?UTF-8?q?=D1=81=D1=8B=D0=BB=D0=BE=D0=BA=20=D0=B2=20wiki-=D1=80=D0=B0?= =?UTF-8?q?=D0=B7=D0=BC=D0=B5=D1=82=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/classes/Helper.php | 31 +++++++++++++++++++++------ ground/controllers/JsonController.php | 2 +- ground/controllers/PageController.php | 4 ++-- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/ground/classes/Helper.php b/ground/classes/Helper.php index 404d866..86d2a8f 100644 --- a/ground/classes/Helper.php +++ b/ground/classes/Helper.php @@ -8,9 +8,15 @@ class Helper return (bool) $var; } - public static function replaceLinks($string, $linkTemplate = '/page/point/id/') + /** + * TYPES: 'clear','html','js' + * @param type $string + * @param type $replaceType + * @return type + */ + public static function replaceLinks($string, $replaceType = 'clear') { - preg_match_all("(\[#(\d+)[>\|](.*?)\])", $string, $links); + preg_match_all("((\[#(\d+)[>\|](.*?)\])|(\[#(\d+)\]))", $string, $links); $links = isset($links[0]) ? $links[0] : FALSE; if ($links) { foreach ($links as $link) { @@ -19,13 +25,26 @@ class Helper $idAndLink = explode($delimiter, $idAndLink); $linkId = $idAndLink[0]; - $linkName = isset($idAndLink[1]) ? $idAndLink[1] : ''; + $linkName = isset($idAndLink[1]) ? $idAndLink[1] : ''; if ($linkId) { $linkPoint = Point::model()->getByPK($linkId); - if ($linkPoint->id) { - $linkPoint->name = str_replace('"', 'ʺ', $linkPoint->name); - $string = str_replace($link, '' . $linkName . '', $string); + if ($linkPoint && $linkPoint->id) { + $linkTitle = str_replace('"', 'ʺ', $linkPoint->name); + + switch ($replaceType) { + case 'html': + $linkName = $linkName ? $linkName : ''; + $string = str_replace($link, '' . $linkName . '', $string); + break; + case 'js': + $linkName = $linkName ? $linkName : ''; + $string = str_replace($link, '' . $linkName . '', $string); + break; + default: + $string = str_replace($link, $linkName, $string); + break; + } } } } diff --git a/ground/controllers/JsonController.php b/ground/controllers/JsonController.php index 632f120..fbb15ce 100644 --- a/ground/controllers/JsonController.php +++ b/ground/controllers/JsonController.php @@ -53,7 +53,7 @@ class JsonController extends Controller $point = Point::model()->getByPK($id); $point->descriptionHtml = nl2br($point->description); - $point->descriptionHtml = Helper::replaceLinks($point->descriptionHtml, '/?point='); + $point->descriptionHtml = Helper::replaceLinks($point->descriptionHtml, 'js'); $point->name = htmlspecialchars($point->name); $point->moderate = $point->moderate ? 'show' : 'hide'; $imgs = $point->photos; diff --git a/ground/controllers/PageController.php b/ground/controllers/PageController.php index 7f558c5..928778f 100644 --- a/ground/controllers/PageController.php +++ b/ground/controllers/PageController.php @@ -124,7 +124,7 @@ class PageController extends Controller $point->categoryIcon = $categories[$point->categoryId]['icon']; $point->categoryName = $categories[$point->categoryId]['name']; - $point->descriptionHtml = Helper::replaceLinks($point->descriptionHtml); + $point->descriptionHtml = Helper::replaceLinks($point->descriptionHtml, 'html'); // preg_match_all("/.*?(([.?!](?:\s|$))|$)/s", $point->descriptionHtml, $items); preg_match_all("/.*?((([^.?!\s]{3,}?)[.?!](?:\s|$))|$)/s", $point->descriptionHtml, $items); $point->inFavorites = Favorite::model()->checkIsMy($pointId); @@ -220,7 +220,7 @@ class PageController extends Controller $categories = Category::model()->getAll(array('order' => 'ord ASC', 'asArray' => true)); - $point->descriptionHtml = Helper::replaceLinks($point->descriptionHtml); + $point->description = Helper::replaceLinks($point->description); self::renderPartial('vkPoint.php', array( 'point' => $point,