/** * Formats a comment before it's broadcasted. * * @param WP_Comment $comment * @param array $format * @return string */ public function format_comment_content($comment, $format) { // Filter the format $format = apply_filters('social_comment_broadcast_format', $format, $comment, $this); $_format = $format; $available = $this->max_broadcast_length(); $used_tokens = array(); // Gather used tokens and subtract remaining characters from available length foreach (Social::comment_broadcast_tokens() as $token => $description) { $replaced = 0; $_format = str_replace($token, '', $_format, $replaced); if ($replaced) { $used_tokens[$token] = ''; } } $available = $available - strlen($_format); // Prep token replacement content foreach ($used_tokens as $token => $content) { switch ($token) { case '{url}': $url = wp_get_shortlink($comment->comment_post_ID); if (empty($url)) { $url = home_url('?p=' . $comment->comment_post_ID); } $url .= '#comment-' . $comment->comment_ID; $url = apply_filters('social_comment_broadcast_permalink', $url, $comment, $this); $used_tokens[$token] = esc_url($url); break; case '{content}': $used_tokens[$token] = strip_tags($comment->comment_content); $used_tokens[$token] = str_replace(array("\n", "\r", PHP_EOL), '', $used_tokens[$token]); $used_tokens[$token] = str_replace(' ', '', $used_tokens[$token]); break; } } // if {url} is used, pre-allocate its length if (isset($used_tokens['{url}'])) { $available = $available - strlen($used_tokens['{url}']); } $used_tokens['{content}'] = apply_filters('social_format_comment_content', $used_tokens['{content}'], $comment, $format, $this); // Truncate content to size limit if (strlen($used_tokens['{content}']) > $available) { $used_tokens['{content}'] = substr($used_tokens['{content}'], 0, $available - 3) . '...'; } foreach ($used_tokens as $token => $replacement) { if (strpos($format, $token) !== false) { $format = str_replace($token, $replacement, $format); } } $format = apply_filters('social_comment_broadcast_content_formatted', $format, $comment, $this); return $format; }
/** * Formats a comment before it's broadcasted. * * @param WP_Comment $comment * @param array $format * @return string */ public function format_comment_content($comment, $format) { // Filter the format $format = apply_filters('social_comment_broadcast_format', $format, $comment, $this); $_format = $format; $available = $this->max_broadcast_length(); foreach (Social::comment_broadcast_tokens() as $token => $description) { $_format = str_replace($token, '', $_format); } $available = $available - strlen($_format); $_format = explode(' ', $format); foreach (Social::comment_broadcast_tokens() as $token => $description) { $content = ''; switch ($token) { case '{url}': $url = wp_get_shortlink($comment->comment_post_ID); if (empty($url)) { $url = home_url('?p=' . $comment->comment_post_ID); } $url .= '#comment-' . $comment->comment_ID; $url = apply_filters('social_comment_broadcast_permalink', $url, $comment, $this); $content = esc_url($url); break; case '{content}': $content = strip_tags($comment->comment_content); $content = str_replace(array("\n", "\r", PHP_EOL), '', $content); $content = str_replace(' ', '', $content); break; } if (strlen($content) > $available) { $content = substr($content, 0, $available - 3) . '...'; } $content = apply_filters('social_format_comment_content', $content, $comment, $format, $this); foreach ($_format as $haystack) { if (strpos($haystack, $token) !== false and $available > 0) { $haystack = str_replace($token, $content, $haystack); $available = $available - strlen($haystack); $format = str_replace($token, $content, $format); break; } } } $format = apply_filters('social_comment_broadcast_content_formatted', $format, $comment, $this); return $format; }
<input type="text" class="regular-text" name="social_comment_broadcast_format" id="social_comment_broadcast_format" value="<?php echo esc_attr(Social::option('comment_broadcast_format')); ?> " /> <p class="description"><?php _e('How you would like comments to be formatted when broadcasting to Twitter or Facebook.', 'social'); ?> </p> <div class="description"> <?php _e('Tokens:', 'social'); ?> <ul> <?php foreach (Social::comment_broadcast_tokens() as $token => $description) { if (!empty($description)) { $description = ' - ' . $description; } ?> <li><b><?php echo esc_html($token); ?> </b><?php echo esc_html($description); ?> </li> <?php } ?> </ul>