OSDN Git Service

Add some codes from 3.61. Currently files under /nucleus/libs and /nucleus/libs/sql...
[nucleus-jp/nucleus-jp-ancient.git] / utf8 / nucleus / libs / COMMENT.php
index 39c83c4..6bdd43f 100755 (executable)
@@ -26,14 +26,13 @@ class COMMENT {
          * @static
          */
        function getComment($commentid) {
-               $query =  'SELECT cnumber as commentid, cbody as body, cuser as user, cmail as userid, cemail as email, cmember as memberid, ctime, chost as host, mname as member, cip as ip, cblog as blogid'
-                          . ' FROM '.sql_table('comment').' left outer join '.sql_table('member').' on cmember=mnumber'
-                          . ' WHERE cnumber=' . intval($commentid);
+               $query = 'SELECT `cnumber` AS commentid, `cbody` AS body, `cuser` AS user, `cmail` AS userid, `cemail` AS email, `cmember` AS memberid, `ctime`, `chost` AS host, `mname` AS member, `cip` AS ip, `cblog` AS blogid'
+                                       . ' FROM ' . sql_table('comment') . ' LEFT OUTER JOIN ' . sql_table('member') . ' ON `cmember` = `mnumber`'
+                                       . ' WHERE `cnumber` = ' . intval($commentid);
                $comments = sql_query($query);
 
                $aCommentInfo = sql_fetch_assoc($comments);
-               if ($aCommentInfo)
-               {
+               if ($aCommentInfo) {
                        $aCommentInfo['timestamp'] = strtotime($aCommentInfo['ctime']);
                }
                return $aCommentInfo;
@@ -49,13 +48,18 @@ class COMMENT {
                $comment['userid'] = strip_tags($comment['userid']);
                $comment['email'] = strip_tags($comment['email']);
 
-               // remove quotes and newlines from user and userid
-               $comment['user'] = strtr($comment['user'], "\'\"\n",'-- ');
-               $comment['userid'] = strtr($comment['userid'], "\'\"\n",'-- ');
-               $comment['email'] = strtr($comment['email'], "\'\"\n",'-- ');
-
+               // remove newlines from user; remove quotes and newlines from userid and email; trim whitespace from beginning and end
+               $comment['user'] = trim(strtr($comment['user'], "\n", ' ') );
+               $comment['userid'] = trim(strtr($comment['userid'], "\'\"\n", '-- ') );
+               $comment['email'] = trim(strtr($comment['email'], "\'\"\n", '-- ') );
+               
+               // begin if: a comment userid is supplied, but does not have an "http://" or "https://" at the beginning - prepend an "http://"
+               if ( !empty($comment['userid']) && (strpos($comment['userid'], 'http://') !== 0) && (strpos($comment['userid'], 'https://') !== 0) ) {
+                       $comment['userid'] = 'http://' . $comment['userid'];
+               } // end if
+               
                $comment['body'] = COMMENT::prepareBody($comment['body']);
-
+               
                return $comment;
        }
 
@@ -65,10 +69,12 @@ class COMMENT {
         * @ static
         */             
        function prepareBody($body) {
-
-               // remove newlines when too many in a row
-               $body = ereg_replace("\n.\n.\n","\n",$body);
-
+               # replaced ereg_replace() below with preg_replace(). ereg* functions are deprecated in PHP 5.3.0
+               # original ereg_replace: ereg_replace("\n.\n.\n", "\n", $body);
+               // remove newlines when too many in a row               
+               $body = preg_replace("/\r\n/", "\n", $body);
+               $body = preg_replace("/\n+/", "\n", $body);
+               
                // encode special characters as entities
                $body = htmlspecialchars($body);
 
@@ -109,11 +115,9 @@ class COMMENT {
                // since htmlspecialchars is applied _before_ URL linking
                // move the part of URL, starting from the disallowed entity to the 'post' link part
                $aBadEntities = array('"', '>', '<');
-               foreach ($aBadEntities as $entity)
-               {
+               foreach ($aBadEntities as $entity) {
                        $pos = strpos($url, $entity);
-                       if ($pos)
-                       {
+                       if ($pos) {
                                $post = substr($url, $pos) . $post;
                                $url = substr($url, 0, $pos);
 
@@ -127,25 +131,28 @@ class COMMENT {
                }
 
                // move ending comma from url to 'post' part
-               if (substr($url, strlen($url) - 1) == ',')
-               {
+               if (substr($url, strlen($url) - 1) == ',') {
                        $url = substr($url, 0, strlen($url) - 1);
                        $post = ',' . $post;
                }
 
-               if (!ereg('^'.$protocol.'://',$url))
+               # replaced ereg() below with preg_match(). ereg* functions are deprecated in PHP 5.3.0
+               # original ereg: ereg('^' . $protocol . '://', $url)
+               if (!preg_match('#^' . $protocol . '://#', $url) )
+               {
                        $linkedUrl = $protocol . (($protocol == 'mailto') ? ':' : '://') . $url;
+               }
                else
+               {
                        $linkedUrl = $url;
-
-
-               if ($protocol != 'mailto')
+               }
+               
+               if ($protocol != 'mailto') {
                        $displayedUrl = $linkedUrl;
-               else
+               } else {
                        $displayedUrl = $url;
+               }
                return $pre . '<a href="'.$linkedUrl.'" rel="nofollow">'.shorten($displayedUrl,30,'...').'</a>' . $post;
        }
-
 }
-
 ?>
\ No newline at end of file