1<?php
2// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
3//
4// All Rights Reserved. See copyright.txt for details and a complete list of authors.
5// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
6// $Id$
7
8// Translate only if feature_multilingual is on
9
10//this script may only be included - so its better to die if called directly.
11if (strpos($_SERVER["SCRIPT_NAME"], basename(__FILE__)) !== false) {
12	header("location: index.php");
13	exit;
14}
15
16function smarty_modifier_sefurl($source, $type = 'wiki', $with_next = '', $all_langs = '', $with_title = 'y', $title = '')
17{
18	global $prefs;
19	$wikilib = TikiLib::lib('wiki');
20	$tikilib = TikiLib::lib('tiki');
21	$smarty = TikiLib::lib('smarty');
22
23	$sefurl = $prefs['feature_sefurl'] == 'y';
24
25	switch ($type) {
26		case 'wiki page':
27		case 'wikipage':
28			$type = 'wiki';
29			break;
30		case 'post':
31		case 'blog post':
32			$type = 'blogpost';
33			break;
34	}
35
36	$urlAnchor = '';
37	if (substr($type, -7) == 'comment') {
38		$urlAnchor = '#threadId=' . (int)$source;
39		$type = substr($type, 0, strlen($type) - 8);
40		$info = TikiLib::lib('comments')->get_comment((int)$source);
41		$source = $info['object'];
42	}
43
44	switch ($type) {
45		case 'wiki':
46			return TikiLib::tikiUrlOpt($wikilib->sefurl($source, $with_next, $all_langs));
47
48		case 'blog':
49			$href = $sefurl ? "blog$source" : "tiki-view_blog.php?blogId=$source";
50			break;
51
52		case 'blog post':
53		case 'blogpost':
54			$href = $sefurl ? "blogpost$source" : "tiki-view_blog_post.php?postId=$source";
55			break;
56		case 'calendar':
57			$href = $sefurl ? "cal$source" : "tiki-calendar.php?calIds[]=$source";
58			break;
59
60		case 'calendaritem':
61			$href = "tiki-calendar_edit_item.php?viewcalitemId=$source";
62			break;
63
64		case 'calendar event':
65			$href = $sefurl ? "calevent$source" : "tiki-calendar_edit_item.php?viewcalitemId=$source";
66			break;
67
68		case 'gallery':
69			$href = 'tiki-browse_gallery.php?galleryId=' . $source;
70			break;
71
72		case 'article':
73			$href = $sefurl ? "article$source" : "tiki-read_article.php?articleId=$source";
74			break;
75
76		case 'topic':
77			$href = "tiki-view_articles.php?topic=$source";
78			break;
79
80		case 'file':
81		case 'thumbnail':
82		case 'display':
83		case 'preview':
84			$attributelib = TikiLib::lib('attribute');
85			$attributes = $attributelib->get_attributes('file', $source);
86
87			if ($type == 'file') {
88				$prefix = 'dl';
89				$suffix = null;
90			} else {
91				$prefix = $type;
92				$suffix = '&amp;' . $type;
93			}
94
95			if (isset($attributes['tiki.content.url'])) {
96				$href = $attributes['tiki.content.url'];
97			} else {
98				$href = $sefurl ? "$prefix$source" : "tiki-download_file.php?fileId=$source$suffix";
99			}
100
101			break;
102
103		case 'draft':
104			$href = 'tiki-download_file.php?fileId=' . $source . '&amp;draft';
105			break;
106
107		case 'trackeritemfield':
108			$type = 'trackeritem';
109			$source = (int)explode(':', $source)[0];
110
111		case 'tracker item':
112			$type = 'trackeritem';
113
114		case 'trackeritem':
115			$replacementpage = '';
116			if ($prefs["feature_sefurl_tracker_prefixalias"] == 'y' && $prefs['tracker_prefixalias_on_links'] == 'y') {
117				$trklib = TikiLib::lib('trk');
118				$replacementpage = $trklib->get_trackeritem_pagealias($source);
119			}
120			if ($replacementpage) {
121				return TikiLib::tikiUrlOpt($wikilib->sefurl($replacementpage, $with_next, $all_langs));
122			} else {
123				if ($prefs['pwa_feature'] == 'y') {
124					$trklib = TikiLib::lib('trk');
125					$item = $trklib->get_item_info($source);
126					$href = 'tiki-ajax_services.php?controller=tracker&action=update_item&trackerId=' . $item['trackerId'] . '&itemId=' . $source;
127				} else {
128					$href = 'tiki-view_tracker_item.php?itemId=' . $source;
129				}
130			}
131			break;
132
133		case 'tracker':
134			if ($source) {
135				$href = 'tiki-view_tracker.php?trackerId=' . $source;
136			} else {
137				$href = 'tiki-list_trackers.php';
138			}
139			break;
140
141		case 'trackerfield':
142			$trklib = TikiLib::lib('trk');
143			$trackerId = TikiLib::lib('trk')->get_field_info((int)$source)['trackerId'];
144			$href = 'tiki-admin_tracker_fields.php?trackerId=' . $trackerId;
145			break;
146		case 'filegallery':
147		case 'file gallery':
148			$type = 'file gallery';
149			$href = 'tiki-list_file_gallery.php?galleryId=' . $source;
150			break;
151
152		case 'forum':
153			$href = $sefurl ? "forum$source" : 'tiki-view_forum.php?forumId=' . $source;
154			break;
155
156		case 'forumthread':
157		case 'forum post':	// used in unified search getSupportedTypes()
158			$href = $sefurl ? "forumthread$source" : 'tiki-view_forum_thread.php?comments_parentId=' . $source;
159			break;
160
161		case 'image':
162			$href = 'tiki-browse_image.php?imageId=' . $source;
163			break;
164
165		case 'sheet':
166			$href = $sefurl ? "sheet$source" : "tiki-view_sheets.php?sheetId=$source";
167			break;
168
169		case 'category':
170			$href = $sefurl ? "cat$source" : "tiki-browse_categories.php?parentId=$source";
171			break;
172
173		case 'freetag':
174			$href = "tiki-browse_freetags.php?tag=" . urlencode($source);
175			break;
176
177		case 'newsletter':
178			$href = "tiki-newsletters.php?nlId=" . urlencode($source);
179			break;
180
181		case 'survey':
182			$href = "tiki-take_survey.php?surveyId=" . urlencode($source);
183			break;
184
185		default:
186			$href = $source;
187			break;
188	}
189
190	if ($with_next && ($with_title != 'y' || $prefs['feature_sefurl'] !== 'y')) {
191		$href .= '&amp;';
192	}
193
194	if ($prefs['feature_sefurl'] == 'y' && $smarty) {
195		include_once('tiki-sefurl.php');
196		return TikiLib::tikiUrlOpt(filter_out_sefurl($href, $type, $title, $with_next, $with_title)) . $urlAnchor;
197	} else {
198		return TikiLib::tikiUrlOpt($href) . $urlAnchor;
199	}
200}
201