function smarty_function_mttagsearchlink($args, &$ctx)
{
    $tag = $ctx->stash('Tag');
    if (!$tag) {
        return '';
    }
    if (is_array($tag)) {
        $name = $tag['tag_name'];
    } else {
        $name = $tag;
    }
    $param = '';
    if ($include_blogs = $args['include_blogs'] ? $args['include_blogs'] : $ctx->stash('include_blogs')) {
        if ($args['include_blogs'] != 'all') {
            $param = 'IncludeBlogs=' . $include_blogs;
        }
    } elseif ($exclude_blogs = $args['exclude_blogs'] ? $args['exclude_blogs'] : $ctx->stash('exclude_blogs')) {
        $param = 'ExcludeBlogs=' . $exclude_blogs;
    } elseif ($blog_ids = $args['blog_ids'] ? $args['blog_ids'] : $ctx->stash('blog_ids')) {
        $param = 'IncludeBlogs=' . $blog_ids;
    } else {
        $blog_id = $ctx->stash('blog_id');
        $param = 'blog_id=' . $blog_id;
    }
    require_once "function.mtcgipath.php";
    $search = smarty_function_mtcgipath($args, $ctx);
    $search .= $ctx->mt->config('SearchScript');
    $link = $search . '?' . $param . ($param ? '&' : '') . 'tag=' . urlencode($name);
    $link .= '&limit=' . $ctx->mt->config('MaxResults');
    return $link;
}
function smarty_function_mtremotesigninlink($args, &$ctx)
{
    // status: complete
    // parameters: none
    global $_typekeytoken_cache;
    $blog = $ctx->stash('blog');
    $auths = $blog['blog_commenter_authenticators'];
    if (!preg_match('/TypeKey/', $auths)) {
        return $ctx->error($ctx->mt->translate("TypePad authentication is not enabled in this blog.  MTRemoteSignInLink can't be used."));
    }
    $blog_id = $blog['blog_id'];
    $token = 0;
    if (isset($_typekeytoken_cache[$blog_id])) {
        $token = $_typekeytoken_cache[$blog_id];
    } else {
        $token = $blog['blog_remote_auth_token'];
        if ($token) {
            $_typekeytoken_cache[$blog_id] = $token;
        }
    }
    $entry = $ctx->stash('entry');
    require_once "function.mtcgipath.php";
    $path = smarty_function_mtcgipath($args, $ctx);
    $return = $path . $ctx->mt->config('CommentScript') . '%3f__mode=handle_sign_in%26' . 'key=TypeKey%26' . ($args['static'] ? 'static=1' : 'static=0') . '%26entry_id=' . $entry['entry_id'];
    $lang = $args['lang'];
    $lang or $lang = $ctx->mt->config('DefaultLanguage');
    $lang or $lang = $blog['blog_language'];
    return $ctx->mt->config('SignOnURL') . '&lang=' . $lang . (isset($blog['blog_require_typekey_emails']) && $blog['blog_require_typekey_emails'] ? '&need_email=1' : '') . '&t=' . $token . '&v=' . $ctx->mt->config('TypeKeyVersion') . '&_return=' . $return;
}
function smarty_function_mtremotesignoutlink($args, &$ctx)
{
    // status: complete
    // parameters: none
    $entry = $ctx->stash('entry');
    require_once "function.mtcgipath.php";
    $path = smarty_function_mtcgipath($args, $ctx);
    $static_arg;
    if (isset($args['no_static']) && $args['no_static'] == 1) {
        $static_arg = '';
    } else {
        $url = $args['static'];
        if (isset($url) && $url != '1') {
            $static_arg = "&static=" . urlencode($url);
        } else {
            if (isset($url) && $url == 1) {
                $static_arg = "&static=1";
            } else {
                $static_arg = "&static=0";
            }
        }
    }
    $path = $path . $ctx->mt->config('CommentScript') . '?__mode=handle_sign_in' . $static_arg . '&logout=1';
    if ($entry) {
        $path .= '&entry_id=' . $entry->entry_id;
    }
    return $path;
}
function smarty_block_mtifentryrecommended($args, $content, &$ctx, &$repeat)
{
    $localvars = array('cp_if_recommended', 'cp_if_recommended_else');
    if (!isset($content)) {
        $ctx->localize(array('_ifrc_counter', 'conditional', 'else_content'));
        $ctx->stash('_ifrc_counter', 0);
        $ctx->stash('cp_if_recommended_else', 1);
    } else {
        $counter = $ctx->stash('_ifrc_counter');
        if ($counter < 1) {
            $repeat = true;
            $false_block = $ctx->stash('else_content');
            $ctx->stash('_ifrc_false_block', $false_block);
            $ctx->stash('_ifrc_counter', $counter + 1);
            $ctx->stash('conditional', 1);
            $ctx->__stash['cp_if_recommended_else'] = null;
            $ctx->stash('cp_if_recommended', '1');
            return '';
        } else {
            $ctx->restore(array('_ifrc_counter', 'conditional', 'else_content'));
            $repeat = false;
        }
        $false_block = $ctx->stash('_ifrc_false_block');
        $true_block = $content;
        $ctx->__stash['cp_if_recommended'] = null;
        $ctx->__stash['_ifrc_false_block'] = null;
        $entry = $ctx->stash('entry');
        if (!isset($entry)) {
            return $ctx->error('No entry available.');
        }
        $class = $args['class'];
        if (!$class) {
            $class = 'scored';
        }
        if ($class) {
            require_once "MTUtil.php";
            $class = strip_tags($class);
            $class = ' class="' . $class . '"';
        }
        $class_else = $args['class_else'];
        if (!$class_else) {
            $class_else = 'scored-else';
        }
        if ($class_else) {
            require_once "MTUtil.php";
            $class_else = strip_tags($class_else);
            $class_else = ' class="' . $class_else . '"';
        }
        require_once "function.mtstaticwebpath.php";
        $static_path = smarty_function_mtstaticwebpath($args, $ctx);
        require_once "function.mtcgipath.php";
        $cgi_path = smarty_function_mtcgipath($args, $ctx);
        $entry_id = $entry['entry_id'];
        $blog_id = $entry['entry_blog_id'];
        $script = "\n<script type=\"text/javascript\" src=\"{$static_path}mt.js\"></script>\n<script type=\"text/javascript\" src=\"{$static_path}js/tc.js\"></script>\n<script type=\"text/javascript\" src=\"{$static_path}js/tc/client.js\"></script>\n<script type=\"text/javascript\">\nfunction scoredby_script_vote(id) {\n    TC.Client.call({\n        'load': function(c, result) { eval(result); },\n        'method': 'POST',\n        'uri': '{$cgi_path}mt-cp.cgi',\n        'arguments': {\n            '__mode': 'vote',\n            'blog_id': '{$blog_id}',\n            'id': id,\n            'f': 'scored,sum',\n            'jsonp': 'scoredby_script_callback'\n        }\n    });\n}\nfunction scoredby_script_callback(scores_hash) {\n    var true_block = getByID('scored_' + {$entry_id});\n    var false_block = getByID('scored_' + {$entry_id} + '_else');\n    var span;\n    if (scores_hash['{$entry_id}'] && scores_hash['{$entry_id}'].scored) {\n        span = getByID('cp_total_' + {$entry_id});\n        if (true_block)\n            true_block.style.display = '';\n        if (false_block) \n            false_block.style.display = 'none';\n    }\n    else {\n        span = getByID('cp_total_' + {$entry_id} + '_else');\n        if (true_block)\n            true_block.style.display = 'none';\n        if (false_block) \n            false_block.style.display = '';\n    }\n    if (span) {\n        if (scores_hash['{$entry_id}'] && scores_hash['{$entry_id}'].sum)\n            span.innerHTML = scores_hash['{$entry_id}'].sum;\n        else\n            span.innerHTML = 0;\n    }\n}\n</script>";
        $out = "\n{$script}\n<div id=\"scored_{$entry_id}\"{$class} style=\"display:none\">\n    {$true_block}\n</div>\n<div id=\"scored_{$entry_id}_else\"{$class_else} style=\"display:none\">\n    {$false_block}\n</div>\n<script type=\"text/javascript\" src=\"{$cgi_path}mt-cp.cgi?__mode=score&blog_id={$blog_id}&id={$entry_id}&f=scored,sum&jsonp=scoredby_script_callback\"></script>";
        return $out;
    }
}
function smarty_function_mttagsearchlink($args, &$ctx)
{
    $mt = MT::get_instance();
    $blog = $ctx->stash('blog');
    $tag = $ctx->stash('Tag');
    if (!$tag) {
        return '';
    }
    if (is_object($tag)) {
        $name = $tag->tag_name;
    } else {
        $name = $tag;
    }
    $param = '';
    $include_blogs = $args['include_blogs'] ? $args['include_blogs'] : $ctx->stash('include_blogs');
    $include_blogs or $include_blogs = $args['blog_ids'] ? $args['blog_ids'] : $ctx->stash('blog_ids');
    if ($include_blogs) {
        if ($include_blogs != 'all') {
            $incl = $mt->db()->parse_blog_ids($include_blogs, $include_with_website);
            if (!$blog->is_blog) {
                array_unshift($incl, $blog->id);
            }
            $param = 'IncludeBlogs=' . implode(',', $incl);
        }
    } else {
        $blog_id = $ctx->stash('blog_id');
        $param = 'IncludeBlogs=' . $blog_id;
    }
    if ($exclude_blogs = $args['exclude_blogs'] ? $args['exclude_blogs'] : $ctx->stash('exclude_blogs')) {
        $excl = $mt->db()->parse_blog_ids($exclude_blogs);
        $param = 'ExcludeBlogs=' . implode(',', $excl);
    }
    $tmpl_blog_id = null;
    if (isset($args['tmpl_blog_id'])) {
        $tmpl_blog_id = $args['tmpl_blog_id'];
        if ('parent' == strtolower($tmpl_blog_id)) {
            if ($blog->is_blog) {
                $blog = $blog->website();
            }
            $tmpl_blog_id = $blog->id;
        } else {
            if (!preg_match('/^\\d+$/', $tmpl_blog_id) || $tmpl_blog_id < 1) {
                $mt = MT::get_instance();
                $ctx->error($mt->translate('Invalid [_1] parameter.', 'tmpl_blog_id'));
            }
        }
    }
    require_once "function.mtcgipath.php";
    $search = smarty_function_mtcgipath($args, $ctx);
    $search .= $ctx->mt->config('SearchScript');
    $link = $search . '?' . $param . ($param ? '&amp;' : '') . 'tag=' . urlencode($name);
    $link .= '&amp;limit=' . $ctx->mt->config('MaxResults');
    if ($tmpl_blog_id) {
        $link .= '&amp;blog_id=' . $tmpl_blog_id;
    }
    return $link;
}
function smarty_function_mtcommentauthorlink($args, &$ctx)
{
    $mt = MT::get_instance();
    $comment = $ctx->stash('comment');
    $name = $comment->comment_author;
    if (!$name && isset($args['default_name'])) {
        $name = $args['default_name'];
    }
    $name or $name = $mt->translate("Anonymous");
    require_once "MTUtil.php";
    $name = encode_html($name);
    $email = $comment->comment_email;
    $url = $comment->comment_url;
    if (isset($args['show_email'])) {
        $show_email = $args['show_email'];
    } else {
        $show_email = 0;
    }
    if (isset($args['show_url'])) {
        $show_url = $args['show_url'];
    } else {
        $show_url = 1;
    }
    $target = isset($args['new_window']) && $args['new_window'] ? ' target="_blank"' : '';
    _comment_follow($args, $ctx);
    $cmntr = $ctx->stash('commenter');
    if (!isset($cmntr) && isset($comment->comment_commenter_id)) {
        $cmntr = $comment->commenter();
    }
    if ($cmntr) {
        $name = isset($cmntr->author_nickname) ? encode_html($cmntr->author_nickname) : $name;
        if ($cmntr->author_url) {
            return sprintf('<a title="%s" href="%s"%s>%s</a>', encode_html($cmntr->author_url), encode_html($cmntr->author_url), $target, $name);
        }
        return $name;
    } elseif ($show_url && $url) {
        require_once "function.mtcgipath.php";
        $cgi_path = smarty_function_mtcgipath($args, $ctx);
        $comment_script = $ctx->mt->config('CommentScript');
        $name = strip_tags($name);
        $url = encode_html(strip_tags($url));
        if ($comment->comment_id && (!isset($args['no_redirect']) || isset($args['no_redirect']) && !$args['no_redirect']) && (!isset($args['nofollowfy']) || isset($args['nofollowfy']) && !$args['nofollowfy'])) {
            return sprintf('<a title="%s" href="%s%s?__mode=red;id=%d"%s>%s</a>', $url, $cgi_path, $comment_script, $comment->comment_id, $target, $name);
        } else {
            return sprintf('<a title="%s" href="%s"%s>%s</a>', $url, $url, $target, $name);
        }
    } elseif ($show_email && $email && is_valid_email($email)) {
        $email = encode_html(strip_tags($email));
        $str = 'mailto:' . $email;
        if ($args['spam_protect']) {
            $str = spam_protect($str);
        }
        return sprintf('<a href="%s">%s</a>', $str, $name);
    }
    return $name;
}
示例#7
0
function smarty_function_mtcgihost($args, &$ctx)
{
    // status: complete
    // parameters: none
    require_once "function.mtcgipath.php";
    $path = smarty_function_mtcgipath($args, $ctx);
    if (preg_match('/^https?:\\/\\/([^\\/:]+)(:\\d+)?\\//', $path, $matches)) {
        return $args['exclude_port'] ? $matches[1] : $matches[1] . $matches[2];
    }
    return '';
}
function smarty_function_mtcategorytrackbacklink($args, &$ctx)
{
    $cat = $ctx->stash('category');
    if (!$cat) {
        return '';
    }
    if (!$cat->trackback()->id) {
        return '';
    }
    require_once "function.mtcgipath.php";
    $path = smarty_function_mtcgipath($args, $ctx);
    $path .= $ctx->mt->config('TrackbackScript') . '/' . $cat->trackback()->id;
    return $path;
}
function smarty_function_mtentrytrackbacklink($args, &$ctx)
{
    $entry = $ctx->stash('entry');
    if (!$entry) {
        return '';
    }
    if (!$entry['trackback_id']) {
        return '';
    }
    require_once "function.mtcgipath.php";
    $path = smarty_function_mtcgipath($args, $ctx);
    $path .= $ctx->mt->config('TrackbackScript') . '/' . $entry['trackback_id'];
    return $path;
}
示例#10
0
function smarty_function_mtsigninlink($args, &$ctx)
{
    $blog = $ctx->stash('blog');
    $entry = $ctx->stash('entry');
    $static_arg = $args['static'] ? "&static=1" : "&static=0";
    require_once "function.mtcgipath.php";
    $path = smarty_function_mtcgipath($args, $ctx);
    $return = $path . $ctx->mt->config('CommentScript') . '?__mode=login' . $static_arg;
    if ($blog) {
        $return .= '&blog_id=' . $blog->blog_id;
    }
    if ($entry) {
        $return .= '&entry_id=' . $entry->entry_id;
    }
    return $return;
}
function smarty_function_mtcommenternamethunk($args, &$ctx)
{
    $blog = $ctx->stash('blog');
    $archive_url = $ctx->tag('BlogArchiveURL');
    if (preg_match('|://([^/]*)|', $archive_url, $matches)) {
        $blog_domain = $matches[1];
    }
    require_once "function.mtcgipath.php";
    $cgi_path = smarty_function_mtcgipath($args, $ctx);
    $mt_domain = $cgi_path;
    if (preg_match('|://([^/]*)|', $mt_domain, $matches)) {
        $mt_domain = $matches[1];
    }
    if ($blog_domain != $mt_domain) {
        $cmt_script = $ctx->mt->config('CommentScript');
        return "<script type='text/javascript' src='{$cgi_path}{$cmt_script}?__mode=cmtr_name_js'></script>";
    } else {
        return "<script type='text/javascript'>var commenter_name = getCookie('commenter_name')</script>";
    }
}
function smarty_function_mtstaticwebpath($args, &$ctx)
{
    $path = $ctx->mt->config('StaticWebPath');
    if (!$path) {
        require_once "function.mtcgipath.php";
        $path = smarty_function_mtcgipath($args, $ctx);
        $path .= 'mt-static/';
    } elseif (substr($path, 0, 1) == '/') {
        $blog = $ctx->stash('blog');
        $host = $blog['blog_site_url'];
        if (!preg_match('!/$!', $host)) {
            $host .= '/';
        }
        if (preg_match('!^(https?://[^/:]+)(:\\d+)?/!', $host, $matches)) {
            $path = $matches[1] . $path;
        }
    }
    if (substr($path, strlen($path) - 1, 1) != '/') {
        $path .= '/';
    }
    return $path;
}
function smarty_function_mtentrytrackbackdata($args, &$ctx)
{
    $e = $ctx->stash('entry');
    $tb = $e->trackback();
    if (empty($tb)) {
        return '';
    }
    if ($tb->trackback_is_disabled) {
        return '';
    }
    $blog = $ctx->stash('blog');
    $entry = $ctx->stash('entry');
    $blog_accepted = $blog->blog_allow_pings && $ctx->mt->config('AllowPings');
    if ($entry) {
        $accepted = $blog_accepted && $entry->entry_allow_pings;
    } else {
        $accepted = $blog_accepted;
    }
    if (!$accepted) {
        return '';
    }
    require_once "function.mtcgipath.php";
    $path = smarty_function_mtcgipath($args, $ctx);
    $path .= $ctx->mt->config('TrackbackScript') . '/' . $tb->trackback_id;
    $at = $ctx->stash('current_archive_type');
    if ($at) {
        $at = ArchiverFactory::get_archiver($at);
    }
    if ($at && !$at instanceof IndividualArchiver) {
        $url = $ctx->tag('ArchiveLink');
        $url .= '#entry-' . sprintf("%06d", $e->entry_id);
    } else {
        $url = $ctx->tag($e->entry_class . 'Permalink', array('archive_type' => 'Individual'));
    }
    $rdf = '';
    $comment_wrap = isset($args['comment_wrap']) ? $args['comment_wrap'] : 1;
    if ($comment_wrap) {
        $rdf .= "<!--\n";
    }
    require_once "MTUtil.php";
    ## SGML comments cannot contain double hyphens, so we convert
    ## any double hyphens to single hyphens.
    $title = encode_xml(strip_hyphen($e->entry_title), 1);
    $subject = encode_xml(strip_hyphen($ctx->tag('EntryCategory')), 1);
    $excerpt = encode_xml(strip_hyphen($ctx->tag('EntryExcerpt')), 1);
    $creator = encode_xml(strip_hyphen($ctx->tag('EntryAuthorDisplayName')), 1);
    $date = $ctx->_hdlr_date(array('format' => '%Y-%m-%dT%H:%M:%S'), $ctx) . $ctx->tag('BlogTimezone');
    $rdf .= <<<RDF
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
         xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description
    rdf:about="{$url}"
    trackback:ping="{$path}"
    dc:title="{$title}"
    dc:identifier="{$url}"
    dc:subject="{$subject}"
    dc:description="{$excerpt}"
    dc:creator="{$creator}"
    dc:date="{$date}" />
</rdf:RDF>

RDF;
    if ($comment_wrap) {
        $rdf .= "-->\n";
    }
    return $rdf;
}
示例#14
0
function smarty_block_mtifloggedin($args, $content, &$ctx, &$repeat)
{
    $localvars = array('cp_if_loggedin', 'cp_if_loggedin_else');
    if (!isset($content)) {
        $ctx->localize(array('_iflg_counter', 'conditional', 'else_content'));
        $ctx->stash('_iflg_counter', 0);
        $ctx->stash('cp_if_loggedin_else', 1);
    } else {
        $counter = $ctx->stash('_iflg_counter');
        if ($counter < 1) {
            $repeat = true;
            $false_block = $ctx->stash('else_content');
            $ctx->stash('_iflg_false_block', $false_block);
            $ctx->stash('_iflg_counter', $counter + 1);
            $ctx->stash('conditional', 1);
            $ctx->__stash['cp_if_loggedin_else'] = null;
            $ctx->stash('cp_if_loggedin', '1');
            return '';
        } else {
            $ctx->restore(array('_iflg_counter', 'conditional', 'else_content'));
            $repeat = false;
        }
        $false_block = $ctx->stash('_iflg_false_block');
        $true_block = $content;
        $ctx->__stash['cp_if_loggedin'] = null;
        $ctx->__stash['_iflg_false_block'] = null;
        $elem_id = 'logged_in';
        if (isset($args['element_id'])) {
            $elem_id = $args['element_id'];
        }
        if ($elem_id) {
            require_once "MTUtil.php";
            $class_else = strip_tags($class_else);
        }
        $class = 'logged-in';
        if (isset($args['class'])) {
            $class = $args['class'];
        }
        if ($class) {
            require_once "MTUtil.php";
            $class = strip_tags($class);
            $class = ' class="' . $class . '"';
        }
        $class_else = 'logged-in-else';
        if (isset($args['class_else'])) {
            $class_else = $args['class_else'];
        }
        if ($class_else) {
            require_once "MTUtil.php";
            $class_else = strip_tags($class_else);
            $class_else = ' class="' . $class_else . '"';
        }
        require_once "function.mtcgipath.php";
        $cgipath = smarty_function_mtcgipath($args, $ctx);
        require_once "function.mtcgihost.php";
        $cgihost = smarty_function_mtcgihost($args, $ctx);
        require_once "function.mtbloghost.php";
        $bloghost = smarty_function_mtbloghost($args, $ctx);
        $cpscript = $ctx->mt->config('CommunityScript');
        $names_script_block = $cgihost === $bloghost ? "commenter_name = getCookie('commenter_name');\nuser_name = getCookie('mt_user');" : "document.write('<script src=\"{$cgipath}{$cpscript}?__mode=loggedin_js\"></scr' + 'ipt>');";
        $script_block = "";
        $script = "";
        if (isset($args['script'])) {
            $script = $args['script'];
        }
        if ($script) {
            $script_block = "\n<script type=\"text/javascript\">\nvar is_loggedin = false;\nif ( typeof(mtGetUser) == 'undefined' )\n    is_loggedin = user ? true : false;\nelse {\n    var u = mtGetUser();\n    is_loggedin = u && u.name ? true : false;\n}\n{$script}(is_loggedin ? 1 : 0, '{$elem_id}');\n</script>";
        }
        $out = "\n<div id=\"{$elem_id}\"{$arg_class} style=\"display:none\" class=\"inline\">\n{$true_block}\n</div>\n<div id=\"{$elem_id}_else\"{$arg_class_else} style=\"display:none\" class=\"inline\">\n{$false_block}\n</div>\n{$script_block}";
        return $out;
    }
}