/********************************************************************************** * nWordPress is an automated migration of WordPress 2.5.1 performed by Numiton. * * copyright : (C) 2008 Numiton - www.numiton.com * email : numiton@users.sourceforge.net * * $Id: Comment_templatePage.java,v 1.3 2008/10/14 13:15:48 numiton Exp $ * **********************************************************************************/ /********************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * **********************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * ***************************************************************************/ package org.numiton.nwp.wp_includes; import static com.numiton.PhpCommonConstants.BOOLEAN_FALSE; import static com.numiton.VarHandling.*; import static com.numiton.generic.PhpWeb.*; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.numiton.nwp.NumitonController; import org.numiton.nwp.wp_content.themes._default.CommentsPage; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.numiton.array.Array; import com.numiton.file.FileSystemOrSocket; import com.numiton.generic.PhpWebEnvironment; import com.numiton.generic.Ref; import com.numiton.generic.StdClass; import com.numiton.ntile.til.libraries.php.quercus.QStrings; import com.numiton.string.Strings; @Controller @Scope("request") public class Comment_templatePage extends NumitonController { protected static final Logger LOG = Logger.getLogger(Comment_templatePage.class.getName()); public Object wpcommentspopupfile; public Object wpcommentsjavascript; @Override @RequestMapping("/wp-includes/comment-template.php") public ModelAndView execute(HttpServletRequest javaRequest, HttpServletResponse javaResponse) throws IOException { return super.execute(javaRequest, javaResponse); } @Override public String getViewName() { return "wp_includes/comment_template"; } /** * Comment template functions * * These functions are meant to live inside of the WordPress loop. * * @package WordPress * @subpackage Template */ /** * get_comment_author() - Retrieve the author of the current comment * * If the comment has an empty comment_author field, then 'Anonymous' person * is assumed. * * @since 1.5 * @uses apply_filters() Calls 'get_comment_author' hook on the comment author * * @return string The comment author */ public String get_comment_author() { String author = null; if (empty(StdClass.getValue(gVars.comment, "comment_author"))) { author = getIncluded(L10nPage.class, gVars, gConsts).__("Anonymous", "default"); } else { author = strval(StdClass.getValue(gVars.comment, "comment_author")); } return strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comment_author", author)); } /** * comment_author() - Displays the author of the current comment * @since 0.71 * @uses apply_filters() Calls 'comment_author' on comment author before * displaying */ public void comment_author() { Object author = null; author = getIncluded(PluginPage.class, gVars, gConsts).apply_filters("comment_author", get_comment_author()); echo(gVars.webEnv, author); } /** * get_comment_author_email() - Retrieve the email of the author of the * current comment * @since 1.5 * @uses apply_filters() Calls the 'get_comment_author_email' hook on the * comment author email * @uses $comment * @return string The current comment author's email */ public String get_comment_author_email() { return strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comment_author_email", StdClass.getValue(gVars.comment, "comment_author_email"))); } /** * comment_author_email() - Display the email of the author of the current * global $comment * Care should be taken to protect the email address and assure that email * harvesters do not capture your commentors' email address. Most assume * that their email address will not appear in raw form on the blog. Doing * so will enable anyone, including those that people don't want to get the * email address and use it for their own means good and bad. * @since 0.71 * @uses apply_filters() Calls 'author_email' hook on the author email */ public void comment_author_email() { echo(gVars.webEnv, getIncluded(PluginPage.class, gVars, gConsts).apply_filters("author_email", get_comment_author_email())); } public void comment_author_email_link() { comment_author_email_link("", "", ""); } public void comment_author_email_link(String linktext) { comment_author_email_link(linktext, "", ""); } public void comment_author_email_link(String linktext, String before) { comment_author_email_link(linktext, before, ""); } /** * comment_author_email_link() - Display the html email link to the author * of the current comment * Care should be taken to protect the email address and assure that email * harvesters do not capture your commentors' email address. Most assume * that their email address will not appear in raw form on the blog. Doing * so will enable anyone, including those that people don't want to get the * email address and use it for their own means good and bad. * @since 0.71 * @uses apply_filters() Calls 'comment_email' hook for the display of the * comment author's email * @global object $comment The current Comment row object * @param string $linktext The text to display instead of the comment * author's email address * @param string $before The text or HTML to display before the email link. * @param string $after The text or HTML to display after the email link. */ public void comment_author_email_link(String linktext, String before, String after) { Object email = null; Object display = null; email = getIncluded(PluginPage.class, gVars, gConsts).apply_filters("comment_email", StdClass.getValue(gVars.comment, "comment_author_email")); if (!empty(email) && !equal(email, "@")) { display = ((!equal(linktext, "")) ? linktext : strval(email)); echo(gVars.webEnv, before); echo(gVars.webEnv, "<a href=\'mailto:" + strval(email) + "\'>" + strval(display) + "</a>"); echo(gVars.webEnv, after); } } /** * get_comment_author_link() - Retrieve the html link to the url of the * author of the current comment * @since 1.5 * @uses apply_filters() Calls 'get_comment_author_link' hook on the * complete link HTML or author * @return string Comment Author name or HTML link for author's URL */ public String get_comment_author_link() { String url = null; String author = null; String _return = null; /** @todo Only call these functions when they are needed. Include in if... else blocks */ url = get_comment_author_url(); author = get_comment_author(); if (empty(url) || equal("http://", url)) { _return = author; } else { _return = "<a href=\'" + url + "\' rel=\'external nofollow\'>" + author + "</a>"; } return strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comment_author_link", _return)); } /** * comment_author_link() - Display the html link to the url of the author * of the current comment * @since 0.71 * @see get_comment_author_link() Echos result */ public void comment_author_link() { echo(gVars.webEnv, get_comment_author_link()); } /** * get_comment_author_IP() - Retrieve the IP address of the author of the * current comment * @since 1.5 * @uses $comment * @uses apply_filters() * @return unknown */ public String get_comment_author_IP() { return strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comment_author_IP", StdClass.getValue(gVars.comment, "comment_author_IP"))); } /** * comment_author_IP() - Displays the IP address of the author of the * current comment * @since 0.71 * @see get_comment_author_IP() Echos Result */ public void comment_author_IP() { echo(gVars.webEnv, get_comment_author_IP()); } /** * get_comment_author_url() - Returns the url of the author of the current * comment * @since 1.5 * @uses apply_filters() Calls 'get_comment_author_url' hook on the comment * author's URL * @return string */ public String get_comment_author_url() { return strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comment_author_url", StdClass.getValue(gVars.comment, "comment_author_url"))); } /** * comment_author_url() - Display the url of the author of the current * comment * @since 0.71 * @uses apply_filters() * @uses get_comment_author_url() Retrieves the comment author's URL */ public void comment_author_url() { echo(gVars.webEnv, getIncluded(PluginPage.class, gVars, gConsts).apply_filters("comment_url", get_comment_author_url())); } public void get_comment_author_url_link() { get_comment_author_url_link("", "", ""); } public void get_comment_author_url_link(String linktext) { get_comment_author_url_link(linktext, "", ""); } public void get_comment_author_url_link(String linktext, String before) { get_comment_author_url_link(linktext, before, ""); } /** * get_comment_author_url_link() - Retrieves the HTML link of the url of * the author of the current comment * $linktext parameter is only used if the URL does not exist for the * comment author. If the URL does exist then the URL will be used and the * $linktext will be ignored. * Encapsulate the HTML link between the $before and $after. So it will * appear in the order of $before, link, and finally $after. * @since 1.5 * @uses apply_filters() Calls the 'get_comment_author_url_link' on the * complete HTML before returning. * @param string $linktext The text to display instead of the comment * author's email address * @param string $before The text or HTML to display before the email link. * @param string $after The text or HTML to display after the email link. * @return string The HTML link between the $before and $after parameters */ public String get_comment_author_url_link(String linktext, String before, String after) { String url = null; String display = null; String _return = null; url = get_comment_author_url(); display = ((!equal(linktext, "")) ? linktext : url); display = Strings.str_replace("http://www.", "", display); display = Strings.str_replace("http://", "", display); if (equal("/", Strings.substr(display, -1))) { display = Strings.substr(display, 0, -1); } _return = before + "<a href=\'" + url + "\' rel=\'external\'>" + display + "</a>" + after; return strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comment_author_url_link", _return)); } public void comment_author_url_link() { comment_author_url_link("", "", ""); } public void comment_author_url_link(String linktext) { comment_author_url_link(linktext, "", ""); } public void comment_author_url_link(String linktext, String before) { comment_author_url_link(linktext, before, ""); } /** * comment_author_url_link() - Displays the HTML link of the url of the * author of the current comment * @since 0.71 * @see get_comment_author_url_link() Echos result * @param string $linktext The text to display instead of the comment * author's email address * @param string $before The text or HTML to display before the email link. * @param string $after The text or HTML to display after the email link. */ public void comment_author_url_link(String linktext, String before, String after) { echo(gVars.webEnv, get_comment_author_url_link(linktext, before, after)); } public String get_comment_date() { return get_comment_date(""); } /** * get_comment_date() - Retrieve the comment date of the current comment * @since 1.5 * @uses apply_filters() Calls 'get_comment_date' hook with the formated * date and the $d parameter respectively * @uses $comment * @param string $d The format of the date (defaults to user's config) * @return string The comment's date */ public String get_comment_date(String d) { String date = null; if (equal("", d)) { date = getIncluded(FunctionsPage.class, gVars, gConsts).mysql2date(strval(getIncluded(FunctionsPage.class, gVars, gConsts).get_option("date_format")), strval(StdClass.getValue(gVars.comment, "comment_date")), true); } else { date = getIncluded(FunctionsPage.class, gVars, gConsts).mysql2date(d, strval(StdClass.getValue(gVars.comment, "comment_date")), true); } return strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comment_date", date, d)); } public void comment_date() { comment_date(""); } /** * comment_date() - Display the comment date of the current comment * @since 0.71 * @param string $d The format of the date (defaults to user's config) */ public void comment_date(String d) { echo(gVars.webEnv, get_comment_date(d)); } /** * get_comment_excerpt() - Retrieve the excerpt of the current comment * Will cut each word and only output the first 20 words with '...' at the * end. If the word count is less than 20, then no truncating is done and no * '...' will appear. * @since 1.5 * @uses $comment * @uses apply_filters() Calls 'get_comment_excerpt' on truncated comment * @return string The maybe truncated comment with 20 words or less */ public String get_comment_excerpt() { String comment_text = null; Array<String> blah = new Array<String>(); int k = 0; int use_dotdotdot = 0; String excerpt = null; int i = 0; comment_text = Strings.strip_tags(strval(StdClass.getValue(gVars.comment, "comment_content"))); blah = Strings.explode(" ", comment_text); if (Array.count(blah) > 20) { k = 20; use_dotdotdot = 1; } else { k = Array.count(blah); use_dotdotdot = 0; } excerpt = ""; for (i = 0; i < k; i++) { excerpt = excerpt + blah.getValue(i) + " "; } excerpt = excerpt + (booleanval(use_dotdotdot) ? "..." : ""); return strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comment_excerpt", excerpt)); } /** * comment_excerpt() - Returns the excerpt of the current comment * @since 1.2 * @uses apply_filters() Calls 'comment_excerpt' hook before displaying * excerpt */ public void comment_excerpt() { echo(gVars.webEnv, getIncluded(PluginPage.class, gVars, gConsts).apply_filters("comment_excerpt", get_comment_excerpt())); } /** * get_comment_ID() - Retrieve the comment id of the current comment * @since 1.5 * @uses $comment * @uses apply_filters() Calls the 'get_comment_ID' hook for the comment ID * @return int The comment ID */ public int get_comment_ID() { return intval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comment_ID", intval(StdClass.getValue(gVars.comment, "comment_ID")))); } /** * comment_ID() - Displays the comment id of the current comment * @since 0.71 * @see get_comment_ID() Echos Result */ public void comment_ID() { echo(gVars.webEnv, get_comment_ID()); } /** * get_comment_link() - Retrieve the link to the current comment * @since 1.5 * @uses $comment * @return string The permalink to the current comment */ public String get_comment_link() { return getIncluded(Link_templatePage.class, gVars, gConsts).get_permalink(intval(StdClass.getValue(gVars.comment, "comment_post_ID")), false) + "#comment-" + intval(StdClass.getValue(gVars.comment, "comment_ID")); } /** * get_comments_link() - Retrieves the link to the current post comments * @since 1.5 * @return string The link to the comments */ public String get_comments_link() { return getIncluded(Link_templatePage.class, gVars, gConsts).get_permalink(0, false) + "#comments"; } public void comments_link() { comments_link("", ""); } public void comments_link(String deprecated) { comments_link(deprecated, ""); } /** * comments_link() - Displays the link to the current post comments * @since 0.71 * @param string $deprecated Not Used * @param bool $deprecated Not Used */ public void comments_link(String deprecated, String deprecated1)/* Modified by Numiton */ { echo(gVars.webEnv, get_comments_link()); } public int get_comments_number() { return get_comments_number(0); } /** * get_comments_number() - Retrieve the amount of comments a post has * @since 1.5 * @uses apply_filters() Calls the 'get_comments_number' hook on the number * of comments * @param int $post_id The Post ID * @return int The number of comments a post has */ public int get_comments_number(int post_id) { StdClass post = null; int count = 0; post_id = post_id; if (!booleanval(post_id)) { post_id = intval(gVars.id); } post = (StdClass) getIncluded(PostPage.class, gVars, gConsts).get_post(post_id, gConsts.getOBJECT(), "raw"); if (!isset(StdClass.getValue(post, "comment_count"))) { count = 0; } else { count = intval(StdClass.getValue(post, "comment_count")); } return intval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comments_number", count)); } public void comments_number() { comments_number("", "", "", ""); } public void comments_number(String zero) { comments_number(zero, "", "", ""); } public void comments_number(String zero, String one) { comments_number(zero, one, "", ""); } public void comments_number(String zero, String one, String more) { comments_number(zero, one, more, ""); } /** * comments_number() - Display the language string for the number of * comments the current post has * @since 0.71 * @uses $id * @uses apply_filters() Calls the 'comments_number' hook on the output and * number of comments respectively. * @param string $zero Text for no comments * @param string $one Text for one comment * @param string $more Text for more than one comment * @param string $deprecated Not used. */ public void comments_number(String zero, String one, String more, String deprecated) { String output; int number = get_comments_number(intval(gVars.id)); if (number > 1) { output = Strings.str_replace("%", strval(number), equal(false, more) ? getIncluded(L10nPage.class, gVars, gConsts).__("% Comments", "default") : more); } else if (equal(number, 0)) { output = (equal(false, zero) ? getIncluded(L10nPage.class, gVars, gConsts).__("No Comments", "default") : zero); } else { // must be one output = (equal(false, one) ? getIncluded(L10nPage.class, gVars, gConsts).__("1 Comment", "default") : one); } echo(gVars.webEnv, getIncluded(PluginPage.class, gVars, gConsts).apply_filters("comments_number", output, number)); } /** * get_comment_text() - Retrieve the text of the current comment * @since 1.5 * @uses $comment * @return string The comment content */ public String get_comment_text() { return strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comment_text", StdClass.getValue(gVars.comment, "comment_content"))); } /** * comment_text() - Displays the text of the current comment * @since 0.71 * @uses apply_filters() Passes the comment content through the * 'comment_text' hook before display * @uses get_comment_text() Gets the comment content */ public void comment_text() { echo(gVars.webEnv, getIncluded(PluginPage.class, gVars, gConsts).apply_filters("comment_text", get_comment_text())); } public String get_comment_time() { return get_comment_time("", false); } public String get_comment_time(String d) { return get_comment_time(d, false); } /** * get_comment_time() - Retrieve the comment time of the current comment * @since 1.5 * @uses $comment * @uses apply_filter() Calls 'get_comment_time' hook with the formatted * time, the $d parameter, and $gmt parameter passed. * @param string $d Optional. The format of the time (defaults to user's * config) * @param bool $gmt Whether to use the GMT date * @return string The formatted time */ public String get_comment_time(String d, boolean gmt) { String comment_date = null; String date = null; comment_date = strval(gmt ? StdClass.getValue(gVars.comment, "comment_date_gmt") : StdClass.getValue(gVars.comment, "comment_date")); if (equal("", d)) { date = getIncluded(FunctionsPage.class, gVars, gConsts).mysql2date(strval(getIncluded(FunctionsPage.class, gVars, gConsts).get_option("time_format")), comment_date, true); } else { date = getIncluded(FunctionsPage.class, gVars, gConsts).mysql2date(d, comment_date, true); } return strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comment_time", date, d, gmt)); } public void comment_time() { comment_time(""); } /** * comment_time() - Display the comment time of the current comment * @since 0.71 * @param string $d Optional. The format of the time (defaults to user's * config) */ public void comment_time(String d) { echo(gVars.webEnv, get_comment_time(d, false)); } /** * get_comment_type() - Retrieve the comment type of the current comment * @since 1.5 * @uses $comment * @uses apply_filters() Calls the 'get_comment_type' hook on the comment * type * @return string The comment type */ public String get_comment_type() { if (equal("", StdClass.getValue(gVars.comment, "comment_type"))) { gVars.comment.fields.putValue("comment_type", "comment"); } return strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("get_comment_type", StdClass.getValue(gVars.comment, "comment_type"))); } public void comment_type() { comment_type("Comment", "Trackback", "Pingback"); } public void comment_type(String commenttxt) { comment_type(commenttxt, "Trackback", "Pingback"); } public void comment_type(String commenttxt, String trackbacktxt) { comment_type(commenttxt, trackbacktxt, "Pingback"); } /** * comment_type() - Display the comment type of the current comment * @since 0.71 * @param string $commenttxt The string to display for comment type * @param string $trackbacktxt The string to display for trackback type * @param string $pingbacktxt The string to display for pingback type */ public void comment_type(String commenttxt, String trackbacktxt, String pingbacktxt) { Object type = null; type = get_comment_type(); { int javaSwitchSelector59 = 0; if (equal(type, "trackback")) { javaSwitchSelector59 = 1; } if (equal(type, "pingback")) { javaSwitchSelector59 = 2; } switch (javaSwitchSelector59) { case 1: { echo(gVars.webEnv, trackbacktxt); break; } case 2: { echo(gVars.webEnv, pingbacktxt); break; } default:echo(gVars.webEnv, commenttxt); } } } /** * get_trackback_url() - Retrieve The current post's trackback URL * There is a check to see if permalink's have been enabled and if so, will * retrieve the pretty path. If permalinks weren't enabled, the ID of the * current post is used and appended to the correct page to go to. * @since 1.5 * @uses apply_filters() Calls 'trackback_url' on the resulting trackback * URL * @uses $id * @return string The trackback URL after being filtered */ public String get_trackback_url() { String tb_url = null; if (!equal("", getIncluded(FunctionsPage.class, gVars, gConsts).get_option("permalink_structure"))) { tb_url = getIncluded(FormattingPage.class, gVars, gConsts).trailingslashit(getIncluded(Link_templatePage.class, gVars, gConsts).get_permalink(0, false)) + getIncluded(Link_templatePage.class, gVars, gConsts).user_trailingslashit("trackback", "single_trackback"); } else { tb_url = getIncluded(FunctionsPage.class, gVars, gConsts).get_option("siteurl") + "/wp-trackback.php?p=" + strval(gVars.id); } return strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("trackback_url", tb_url)); } public String trackback_url() { return trackback_url(true); } /** * trackback_url() - Displays the current post's trackback URL * @since 0.71 * @uses get_trackback_url() Gets the trackback url for the current post * @param bool $deprecated Remove backwards compat in 2.5 * @return void|string Should only be used to echo the trackback URL, use * get_trackback_url() for the result instead. */ public String trackback_url(boolean deprecated) { if (deprecated) { echo(gVars.webEnv, get_trackback_url()); return ""; } else { return get_trackback_url(); } } public void trackback_rdf() { trackback_rdf(0); } /** * trackback_rdf() - Generates and displays the RDF for the trackback * information of current post * @since 0.71 * @param int $deprecated Not used (Was $timezone = 0) */ public void trackback_rdf(int deprecated) { if (strictEqual(Strings.stripos(gVars.webEnv.getHttpUserAgent(), "W3C_Validator"), BOOLEAN_FALSE)) { echo( gVars.webEnv, "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n\t\t\t\txmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n\t\t\t\txmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\">\n\t\t\t<rdf:Description rdf:about=\""); getIncluded(Link_templatePage.class, gVars, gConsts).the_permalink(); echo(gVars.webEnv, "\"" + "\n"); echo(gVars.webEnv, " dc:identifier=\""); getIncluded(Link_templatePage.class, gVars, gConsts).the_permalink(); echo(gVars.webEnv, "\"" + "\n"); echo( gVars.webEnv, " dc:title=\"" + Strings.str_replace( "--", "--", getIncluded(FormattingPage.class, gVars, gConsts).wptexturize(Strings.strip_tags(getIncluded(Post_templatePage.class, gVars, gConsts).get_the_title(0)))) + "\"" + "\n"); echo(gVars.webEnv, " trackback:ping=\"" + get_trackback_url() + "\"" + " />\n"); echo(gVars.webEnv, "</rdf:RDF>"); } } public boolean comments_open() { return comments_open(0); } /** * comments_open() - Whether the current post is open for comments * @since 1.5 * @uses $post * @param int $post_id An optional post ID to check instead of the current * post. * @return bool True if the comments are open */ public boolean comments_open(int post_id) { StdClass _post = null; boolean open = false; _post = (StdClass) getIncluded(PostPage.class, gVars, gConsts).get_post(post_id, gConsts.getOBJECT(), "raw"); open = equal("open", StdClass.getValue(_post, "comment_status")); return booleanval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("comments_open", open, post_id)); } public boolean pings_open() { return pings_open(0); } /** * pings_open() - Whether the current post is open for pings * @since 1.5 * @uses $post * @param int $post_id An optional post ID to check instead of the current * post. * @return bool True if pings are accepted */ public boolean pings_open(int post_id) { StdClass _post = null; boolean open = false; _post = (StdClass) getIncluded(PostPage.class, gVars, gConsts).get_post(new Ref<Integer>(post_id), gConsts.getOBJECT(), "raw"); open = equal("open", StdClass.getValue(_post, "ping_status")); return booleanval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("pings_open", open, post_id)); } /** * wp_comment_form_unfiltered_html_nonce() - Displays form token for * unfiltered comments * Will only display nonce token if the current user has permissions for * unfiltered html. Won't display the token for other users. * The function was backported to 2.0.10 and was added to versions 2.1.3 and * above. Does not exist in versions prior to 2.0.10 in the 2.0 branch and * in the 2.1 branch, prior to 2.1.3. Technically added in 2.2.0. * @since 2.0.10 Backported to 2.0 branch * @since 2.1.3 * @uses $post Gets the ID of the current post for the token */ public void wp_comment_form_unfiltered_html_nonce(Object... deprecated) { if (getIncluded(CapabilitiesPage.class, gVars, gConsts).current_user_can("unfiltered_html")) { getIncluded(FunctionsPage.class, gVars, gConsts).wp_nonce_field("unfiltered-html-comment_" + StdClass.getValue(gVars.post, "ID"), "_wp_unfiltered_html_comment", false, true); } } public void comments_template() { comments_template("/comments.php"); } /** * comments_template() - Loads the comment template specified in $file * Will not display the comments template if not on single post or page, or * if the post does not have comments. * Uses the WordPress database object to query for the comments. The * comments are passed through the 'comments_array' filter hook with the * list of comments and the post ID respectively. * The $file path is passed through a filter hook called, * 'comments_template' which includes the TEMPLATEPATH and $file combined. * Tries the $filtered path first and if it fails it will require the * default comment themplate from the default theme. If either does not * exist, then the WordPress process will be halted. It is advised for that * reason, that the default theme is not deleted. * @since 1.5 * @global array $comment List of comment objects for the current post * @uses $wpdb * @uses $id * @uses $post * @uses $withcomments Will not try to get the comments if the post has * none. * @param string $file Optional, default '/comments.php'. The file to load * @return null Returns null if no comments appear */ public void comments_template(String file) { Object req = null; Array<Object> commenter = new Array<Object>(); Array<StdClass> comments = null; String comment_author = null; String comment_author_email = null; String comment_author_url = null; String include = null; if (!(getIncluded(QueryPage.class, gVars, gConsts).is_single() || getIncluded(QueryPage.class, gVars, gConsts).is_page("") || booleanval(gVars.withcomments))) { return; } req = getIncluded(FunctionsPage.class, gVars, gConsts).get_option("require_name_email"); commenter = getIncluded(CommentPage.class, gVars, gConsts).wp_get_current_commenter(); req = Array.extractVar(commenter, "req", req, Array.EXTR_SKIP); comment_author = strval(Array.extractVar(commenter, "comment_author", comment_author, Array.EXTR_SKIP)); comment_author_email = strval(Array.extractVar(commenter, "comment_author_email", comment_author_email, Array.EXTR_SKIP)); comment_author_url = strval(Array.extractVar(commenter, "comment_author_url", comment_author_url, Array.EXTR_SKIP)); /** @todo Use API instead of SELECTs. */ if (booleanval(gVars.user_ID)) { comments = gVars.wpdb.get_results( gVars.wpdb.prepare( "SELECT * FROM " + gVars.wpdb.comments + " WHERE comment_post_ID = %d AND (comment_approved = \'1\' OR ( user_id = %d AND comment_approved = \'0\' ) ) ORDER BY comment_date", StdClass.getValue(gVars.post, "ID"), gVars.user_ID)); } else if (empty(comment_author)) { comments = gVars.wpdb.get_results( gVars.wpdb.prepare("SELECT * FROM " + gVars.wpdb.comments + " WHERE comment_post_ID = %d AND comment_approved = \'1\' ORDER BY comment_date", StdClass.getValue(gVars.post, "ID"))); } else { comments = gVars.wpdb.get_results( gVars.wpdb.prepare( "SELECT * FROM " + gVars.wpdb.comments + " WHERE comment_post_ID = %d AND ( comment_approved = \'1\' OR ( comment_author = %s AND comment_author_email = %s AND comment_approved = \'0\' ) ) ORDER BY comment_date", StdClass.getValue(gVars.post, "ID"), comment_author, comment_author_email)); } // keep $comments for legacy's sake (remember $table*? ;) ) gVars.wp_query.comments = (Array<StdClass>) getIncluded(PluginPage.class, gVars, gConsts).apply_filters("comments_array", comments, StdClass.getValue(gVars.post, "ID")); comments = Array.arrayCopy(gVars.wp_query.comments); gVars.wp_query.comment_count = Array.count(gVars.wp_query.comments); getIncluded(CommentPage.class, gVars, gConsts).update_comment_cache(comments); gConsts.setCOMMENTS_TEMPLATE(true); include = strval(getIncluded(PluginPage.class, gVars, gConsts).apply_filters("comments_template", gConsts.getTEMPLATEPATH() + file)); // Added by Numiton. Propagate local context gVars.comments = Array.arrayCopy(comments); if (FileSystemOrSocket.file_exists(gVars.webEnv, include)) { // Condensed dynamic construct if (equal(include, "wp-content/themes/default/comments.php")) { // Added by Numiton. Transfer the local context gVars.req = req; gVars.comments = Array.arrayCopy(comments); gVars.comment_author = comment_author; gVars.comment_author_email = comment_author_email; gVars.comment_author_url = comment_author_url; require(gVars, gConsts, CommentsPage.class); // Added by Numiton. Restore the local context req = gVars.req; comments = Array.arrayCopy(gVars.comments); comment_author = gVars.comment_author; comment_author_email = gVars.comment_author_email; comment_author_url = gVars.comment_author_url; } else { // TODO Implement support for multiple themes } } else { // Added by Numiton. Transfer the local context gVars.req = req; gVars.comments = Array.arrayCopy(comments); gVars.comment_author = comment_author; gVars.comment_author_email = comment_author_email; gVars.comment_author_url = comment_author_url; require(gVars, gConsts, CommentsPage.class); // Added by Numiton. Restore the local context req = gVars.req; comments = Array.arrayCopy(gVars.comments); comment_author = gVars.comment_author; comment_author_email = gVars.comment_author_email; comment_author_url = gVars.comment_author_url; } } public void comments_popup_script() { comments_popup_script(400, 400, ""); } public void comments_popup_script(int width) { comments_popup_script(width, 400, ""); } public void comments_popup_script(int width, int height) { comments_popup_script(width, height, ""); } /** * comments_popup_script() - Displays the JS popup script to show a * comment * If the $file parameter is empty, then the home page is assumed. The * defaults for the window are 400px by 400px. * For the comment link popup to work, this function has to be called or the * normal comment link will be assumed. * @since 0.71 * @global string $wpcommentspopupfile The URL to use for the popup window * @global int $wpcommentsjavascript Whether to use JavaScript or not. Set * when function is called * @param int $width Optional. The width of the popup window * @param int $height Optional. The height of the popup window * @param string $file Optional. Sets the location of the popup window */ public void comments_popup_script(int width, int height, String file) { String javascript = null; if (empty(file)) { wpcommentspopupfile = ""; // Use the index. } else { wpcommentspopupfile = file; } wpcommentsjavascript = 1; javascript = "<script type=\'text/javascript\'>\nfunction wpopen (macagna) {\n window.open(macagna, \'_blank\', \'width=" + strval(width) + ",height=" + strval(height) + ",scrollbars=yes,status=yes\');\n}\n</script>\n"; echo(gVars.webEnv, javascript); } public void comments_popup_link() { comments_popup_link("No Comments", "1 Comment", "% Comments", "", "Comments Off"); } public void comments_popup_link(String zero) { comments_popup_link(zero, "1 Comment", "% Comments", "", "Comments Off"); } public void comments_popup_link(String zero, String one) { comments_popup_link(zero, one, "% Comments", "", "Comments Off"); } public void comments_popup_link(String zero, String one, String more) { comments_popup_link(zero, one, more, "", "Comments Off"); } public void comments_popup_link(String zero, String one, String more, String css_class) { comments_popup_link(zero, one, more, css_class, "Comments Off"); } /** * comments_popup_link() - Displays the link to the comments popup window * for the current post ID. * Is not meant to be displayed on single posts and pages. Should be used on * the lists of posts * @since 0.71 * @uses $id * @uses $wpcommentspopupfile * @uses $wpcommentsjavascript * @uses $post * @param string $zero The string to display when no comments * @param string $one The string to display when only one comment is * available * @param string $more The string to display when there are more than one * comment * @param string $css_class The CSS class to use for comments * @param string $none The string to display when comments have been turned * off * @return null Returns null on single posts and pages. */ public void comments_popup_link(String zero, String one, String more, String css_class, String none) { int number; Object home = null; Object title = null; if (getIncluded(QueryPage.class, gVars, gConsts).is_single() || getIncluded(QueryPage.class, gVars, gConsts).is_page("")) { return; } number = get_comments_number(intval(gVars.id)); if (equal(0, number) && equal("closed", StdClass.getValue(gVars.post, "comment_status")) && equal("closed", StdClass.getValue(gVars.post, "ping_status"))) { echo(gVars.webEnv, "<span" + ((!empty(css_class)) ? (" class=\"" + css_class + "\"") : "") + ">" + none + "</span>"); return; } if (!empty(StdClass.getValue(gVars.post, "post_password"))) { // if there's a password if (!isset(gVars.webEnv._COOKIE.getValue("wp-postpass_" + gConsts.getCOOKIEHASH())) || !equal(gVars.webEnv._COOKIE.getValue("wp-postpass_" + gConsts.getCOOKIEHASH()), StdClass.getValue(gVars.post, "post_password"))) { // and it doesn't match the cookie echo(gVars.webEnv, getIncluded(L10nPage.class, gVars, gConsts).__("Enter your password to view comments", "default")); return; } } echo(gVars.webEnv, "<a href=\""); if (booleanval(wpcommentsjavascript)) { if (empty(wpcommentspopupfile)) { home = getIncluded(FunctionsPage.class, gVars, gConsts).get_option("home"); } else { home = getIncluded(FunctionsPage.class, gVars, gConsts).get_option("siteurl"); } echo(gVars.webEnv, strval(home) + "/" + wpcommentspopupfile + "?comments_popup=" + strval(gVars.id)); echo(gVars.webEnv, "\" onclick=\"wpopen(this.href); return false\""); } else { // if comments_popup_script() is not in the template, display simple comment link if (equal(0, number)) { echo(gVars.webEnv, getIncluded(Link_templatePage.class, gVars, gConsts).get_permalink(0, false) + "#respond"); } else { comments_link("", ""); } echo(gVars.webEnv, "\""); } if (!empty(css_class)) { echo(gVars.webEnv, " class=\"" + css_class + "\" "); } title = getIncluded(FormattingPage.class, gVars, gConsts).attribute_escape(getIncluded(Post_templatePage.class, gVars, gConsts).get_the_title(0)); echo(gVars.webEnv, getIncluded(PluginPage.class, gVars, gConsts).apply_filters("comments_popup_link_attributes", "")); echo(gVars.webEnv, " title=\"" + QStrings.sprintf(getIncluded(L10nPage.class, gVars, gConsts).__("Comment on %s", "default"), title) + "\">"); comments_number(zero, one, more, strval(number)); echo(gVars.webEnv, "</a>"); } public Object generateContent(PhpWebEnvironment webEnv) throws IOException, ServletException { gVars.webEnv = webEnv; return DEFAULT_VAL; } }