1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
<?php
# Movable Type (r) Open Source (C) 2001-2008 Six Apart, Ltd.
# This program is distributed under the terms of the
# GNU General Public License, version 2.
#
# $Id: function.mtlink.php 1809 2008-04-08 17:29:46Z bchoate $
function smarty_function_mtlink($args, &$ctx) {
// status: incomplete
// parameters: template, entry_id
static $_template_links = array();
if (isset($args['template'])) {
$name = $args['template'];
$cache_key = $ctx->__stash['blog_id'] . ';' . $name;
if (isset($_template_links[$cache_key])) {
$link = $_template_links[$cache_key];
} else {
$tmpl = $ctx->mt->db->load_index_template($ctx, $name);
$blog = $ctx->stash('blog');
$site_url = $blog['blog_site_url'];
if (!preg_match('!/$!', $site_url)) $site_url .= '/';
$link = $site_url . $tmpl['template_outfile'];
$_template_links[$cache_key] = $link;
}
if (!$args['with_index']) {
$link = _strip_index($link, $blog);
}
return $link;
} elseif (isset($args['entry_id'])) {
$arg = array('entry_id' => $args['entry_id']);
list($entry) = $ctx->mt->db->fetch_entries($arg);
$ctx->localize(array('entry'));
$ctx->stash('entry', $entry);
$link = $ctx->tag('EntryPermalink',$args);
$ctx->restore(array('entry'));
if ($args['with_index'] && preg_match('/\/(#.*)$/', $link)) {
$blog = $ctx->stash('blog');
$index = $ctx->mt->config('IndexBasename');
$ext = $blog['blog_file_extension'];
if ($ext) $ext = '.' . $ext;
$index .= $ext;
$link = preg_replace('/\/(#.*)?$/', "/$index\$1", $link);
}
return $link;
}
return '';
}
|