Ver código fonte

Ticket #4558 - Build-in API support: Comments.

AntonLV 2 anos atrás
pai
commit
1996191d97

+ 4 - 2
install/sql/system.sql

@@ -5892,8 +5892,6 @@ INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `
 
 ('sys_unsubscribe_news', 1, 'system', '', '_sys_page_block_title_unsubscribe_news', 11, 0, 0, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:16:"unsubscribe_news";s:6:"params";a:0:{}s:5:"class";s:19:"TemplServiceAccount";}', 0, 1, 1, 1),
 
-('sys_cmts_view', 1, 'system', '_sys_page_block_title_system_cmts_view', '_cmt_page_view_title', 11, 0, 0, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:14:"get_block_view";s:6:"params";a:3:{i:0;s:8:"{system}";i:1;s:11:"{object_id}";i:2;s:12:"{comment_id}";}s:5:"class";s:17:"TemplCmtsServices";}', 0, 0, 1, 1),
-
 ('sys_cmts_administration', 1, 'system', '_sys_page_block_title_system_cmts_administration', '_sys_page_block_title_cmts_administration', 11, 0, 0, 192, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:12:"manage_tools";s:6:"params";a:1:{i:0;s:14:"administration";}s:5:"class";s:17:"TemplCmtsServices";}', 0, 1, 1, 1),
 
 ('sys_audit', 1, 'system', '_sys_page_block_title_system_audit_administration', '_sys_page_block_title_audit_administration', 11, 0, 0, 192, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:12:"manage_tools";s:6:"params";a:1:{i:0;s:14:"administration";}s:5:"class";s:18:"TemplAuditServices";}', 0, 1, 1, 1),
@@ -5926,6 +5924,10 @@ INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `
 
 ('sys_std_dashboard', 2, 'system', '', '_sys_page_block_title_std_dash_queues', 11, 0, 0, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:16:"get_block_queues";s:6:"params";a:0:{}s:5:"class";s:20:"TemplStudioDashboard";}', 0, 0, 1, 3);
 
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `tabs`, `async`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `active_api`, `order`) VALUES
+('sys_cmts_view', 1, 'system', '_sys_page_block_title_system_cmts_view_author', '_cmt_page_view_title_author', 11, 0, 0, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:16:"get_block_author";s:6:"params";a:3:{i:0;s:8:"{system}";i:1;s:11:"{object_id}";i:2;s:12:"{comment_id}";}s:5:"class";s:17:"TemplCmtsServices";}', 0, 0, 0, 1, 1),
+('sys_cmts_view', 1, 'system', '_sys_page_block_title_system_cmts_view', '_cmt_page_view_title', 11, 0, 0, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:14:"get_block_view";s:6:"params";a:3:{i:0;s:8:"{system}";i:1;s:11:"{object_id}";i:2;s:12:"{comment_id}";}s:5:"class";s:17:"TemplCmtsServices";}', 0, 0, 1, 1, 2);
+
 -- --------------------------------------------------------
 
 CREATE TABLE `sys_labels` (

+ 2 - 0
modules/boonex/english/data/langs/system/en.xml

@@ -1966,6 +1966,7 @@
 	<string name="_cmt_msg_login_required"><![CDATA[<a href="{0}">Login</a> or <a href="{1}">Join</a> to comment.]]></string>
 	<string name="_cmt_page_view_header"><![CDATA[Comment to '{object_title}']]></string>
 	<string name="_cmt_page_view_title"><![CDATA[Comment to <a href="{object_url}">{object_title}</a>]]></string>
+        <string name="_cmt_page_view_title_author"><![CDATA[Comment author]]></string>
 	<string name="_cmt_download_attached_file"><![CDATA[Download file]]></string>
 	<string name="_cmt_view_attached_image"><![CDATA[View image]]></string>
 	<string name="_cmt_load_more_comments_head"><![CDATA[See newer comments...]]></string>
@@ -3333,6 +3334,7 @@ If it is not enabled then please consider implement this optimization, since it
     <string name="_sys_page_block_title_dashboard_audit"><![CDATA[Dashboard - Audit]]></string>
     <string name="_sys_page_block_title_dashboard_reports"><![CDATA[Dashboard - Reports]]></string>
     <string name="_sys_page_block_title_system_cmts_view"><![CDATA[View Comment]]></string>
+    <string name="_sys_page_block_title_system_cmts_view_author"><![CDATA[Comment Author]]></string>
     <string name="_sys_page_block_title_system_cmts_administration"><![CDATA[Manage Comments]]></string>
     <string name="_sys_page_block_title_system_audit_administration"><![CDATA[Audit]]></string>
     <string name="_sys_page_block_title_logout"><![CDATA[Log out]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/system/ru.xml

@@ -1941,6 +1941,7 @@
 	<string name="_cmt_msg_login_required"><![CDATA[Чтобы оставить комментарий, вам необходимо <a href="{0}">войти</a> или <a href="{1}">зарегистрироваться</a>.]]></string>
 	<string name="_cmt_page_view_header"><![CDATA[Комментарий к '{object_title}']]></string>
 	<string name="_cmt_page_view_title"><![CDATA[Комментарий к <a href="{object_url}">{object_title}</a>]]></string>
+        <string name="_cmt_page_view_title_author"><![CDATA[Автор комментария]]></string>
 	<string name="_cmt_download_attached_file"><![CDATA[Скачать файл]]></string>
 	<string name="_cmt_view_attached_image"><![CDATA[Просмотреть изображение]]></string>
 	<string name="_cmt_load_more_comments_head"><![CDATA[Увидеть новые комментарии...]]></string>
@@ -3288,6 +3289,7 @@
         <string name="_sys_page_block_title_dashboard_audit"><![CDATA[Панель - аудит]]></string>
         <string name="_sys_page_block_title_dashboard_reports"><![CDATA[Панель - жалобы]]></string>
         <string name="_sys_page_block_title_system_cmts_view"><![CDATA[Просмотр комментария]]></string>
+        <string name="_sys_page_block_title_system_cmts_view_author"><![CDATA[Автор комментария]]></string>
 	<string name="_sys_page_block_title_system_cmts_administration"><![CDATA[Управление комментариями]]></string>
         <string name="_sys_page_block_title_system_audit_administration"><![CDATA[Аудит]]></string>
     <string name="_sys_page_block_title_logout"><![CDATA[Выход]]></string>

+ 31 - 18
template/scripts/BxBaseCmtsServices.php

@@ -30,13 +30,18 @@ class BxBaseCmtsServices extends BxDol
         return $oCmts->serviceGetAuthor((int)$aCmt['cmt_id']);
     }
     
-    public function serviceGetAuthorBlock()
+    public function serviceGetBlockAuthor($sSystem = '', $iObjectId = 0, $iCommentId = 0)
     {
-        if(bx_is_api()){
-            $iCommentId = bx_process_input(bx_get('cmt_id'), BX_DATA_INT);
-            $sSystem =  bx_process_input(bx_get('sys'));
-            $iObjectId = bx_process_input(bx_get('id'), BX_DATA_INT);
-            
+        if(empty($sSystem) && ($sSystem = bx_get('sys')) !== false)
+            $sSystem = bx_process_input($sSystem);
+
+        if(empty($iObjectId) && ($iObjectId = bx_get('id')) !== false)
+            $iObjectId = bx_process_input($iObjectId, BX_DATA_INT);
+
+        if(empty($iCommentId) && ($iCommentId = bx_get('cmt_id')) !== false)
+            $iCommentId = bx_process_input($iCommentId, BX_DATA_INT);
+
+        if(bx_is_api()) {
             $oCmts = BxDolCmts::getObjectInstance($sSystem, $iObjectId, true);
             $aCmt = $oCmts->getCommentRow($iCommentId);
 
@@ -48,6 +53,8 @@ class BxBaseCmtsServices extends BxDol
                 'url' => bx_api_get_relative_url($oCmts->getBaseUrl())
             ])];
         }
+        
+        return '';
     }
 
     public function serviceGetInfo($iCmtUniqId, $bSearchableFieldsOnly = true)
@@ -65,16 +72,6 @@ class BxBaseCmtsServices extends BxDol
 
     public function serviceGetBlockView($sSystem = '', $iObjectId = 0, $iCommentId = 0)
     {
-        if (bx_is_api()){
-            $aParams['comment_id'] = bx_process_input(bx_get('cmt_id'), BX_DATA_INT);
-            $aParams['module'] =  bx_process_input(bx_get('sys'));
-            $aParams['object_id'] = bx_process_input(bx_get('id'), BX_DATA_INT);
-
-            $aRv = $this->serviceGetDataApi($aParams);
-            $aRv['browse']['data']['total_count'] = 0;
-            return [$aRv];
-        }
-        
         if(empty($sSystem) && ($sSystem = bx_get('sys')) !== false)
             $sSystem = bx_process_input($sSystem);
 
@@ -84,6 +81,19 @@ class BxBaseCmtsServices extends BxDol
         if(empty($iCommentId) && ($iCommentId = bx_get('cmt_id')) !== false)
             $iCommentId = bx_process_input($iCommentId, BX_DATA_INT);
 
+        if(bx_is_api()) {
+            $aRv = $this->serviceGetDataApi([
+                'module' => $sSystem,
+                'object_id' => $iObjectId,
+                'comment_id' => $iCommentId
+            ]);
+
+            if(isset($aRv['browse']) && is_array($aRv['browse']))
+                $aRv['browse']['data']['total_count'] = 0;
+
+            return [$aRv];
+        }
+
         $oCmts = BxDolCmts::getObjectInstance($sSystem, $iObjectId, true);
         if(!$oCmts)
             return '';
@@ -633,14 +643,17 @@ class BxBaseCmtsServices extends BxDol
         $aCmtsRv = [];
         foreach ($aCmts as $aCmt) {
             $oCmt = $oCmts->getCommentStructure($aCmt['cmt_id'], $aBp, $aDp);
-            $sKey = array_keys($oCmt)[0];
-            if ($oCmt[$sKey]['data']['cmt_parent_id'] > 0){
+            if($oCmt === false)
+                continue;
+
+            if(($sKey = array_shift(array_keys($oCmt))) && $oCmt[$sKey]['data']['cmt_parent_id'] > 0){
                 $aParent = $oCmts->getCommentSimple((int)$oCmt[$sKey]['data']['cmt_parent_id']);
                 $oCmt[$sKey]['data']['cmt_parent'] = [
                     'data' => $aParent,
                     'author_data' => BxDolProfile::getData($aParent['cmt_author_id'])
                 ];
             }
+
             $aCmtsRv[] = $oCmt;
         }