Просмотр исходного кода

Ticket #4558 - Build-in API support: 'Bento grid' page block type.

AntonLV 2 лет назад
Родитель
Сommit
ede0a3fa2c

+ 6 - 16
inc/classes/BxDolPageQuery.php

@@ -149,25 +149,15 @@ class BxDolPageQuery extends BxDolDb
 
         return $this->getOne("SELECT `data` FROM `sys_pages_blocks_data` WHERE `block_id` = :block_id" . $sWhereClause, $aBindings);
     }
-    
-    public function setPageBlockData($iBlockId, $mixedData, $iContentId = 0, $sContentModule = '')
+
+    public function setPageBlockData($iBlockId, $iContentId = 0, $sContentModule = '', $mixedData = '')
     {
-        $aBindings = [
+        return $this->query("INSERT INTO `sys_pages_blocks_data` (`block_id`, `content_id`, `content_module`, `data`) VALUES (:block_id, :content_id, :content_module, :data) ON DUPLICATE KEY UPDATE `data` = :data", [
             'block_id' => $iBlockId,
+            'content_id' => $iContentId,
+            'content_module' => $sContentModule,
             'data' => is_array($mixedData) ? json_encode($mixedData) : $mixedData
-        ];
-
-        $sWhereClause = "";
-        if(!empty($iContentId) && !empty($sContentModule)) {
-            $aBindings = array_merge($aBindings, [
-                'content_id' => $iContentId,
-                'content_module' => $sContentModule
-            ]);
-
-            $sWhereClause .= " AND `content_id` = :content_id AND `content_module` = :content_module";
-        }
-
-        return $this->query("UPDATE `sys_pages_blocks_data` SET `data` = :data WHERE `block_id` = :block_id" . $sWhereClause, $aBindings);
+        ]);
     }
 
     public function getPageBlockContent($iId)

+ 4 - 1
template/scripts/BxBasePage.php

@@ -1106,9 +1106,12 @@ class BxBasePage extends BxDolPage
             else
                 $bIsAllowedEdit = isAdmin();
 
+            $sData = $this->_oQuery->getPageBlockData($iBlockId, $iContentId, $sContentModule);
+            $aData = !empty($sData) ? json_decode($sData, true) : [];
+            
             return [bx_api_get_block('bento_grid', [
                 'title' => _t($aBlock['title']), 
-                'content' => []
+                'content' => $aData
             ], ['ext' => [
                 'block_id' => $iBlockId,
                 'content_id' => $iContentId,

+ 2 - 7
template/scripts/BxBaseServicePages.php

@@ -116,18 +116,13 @@ class BxBaseServicePages extends BxDol
 
     public function serviceSetPageBlockData($iBlockId, $iContentId = 0, $sContentModule = '')
     {
-        $oDb = new BxDolPageQuery([]);
-
         $sData = @file_get_contents("php://input");
         $aData = json_decode($sData, true);
         if($aData === null)
             return false;
 
-        $aParams = [$iBlockId, $sData];
-        if(!empty($iContentId) && !empty($sContentModule))
-            $aParams += [$iContentId, $sContentModule];
-
-        return call_user_func_array([$oDb, 'setPageBlockData'], $aParams);
+        $oDb = new BxDolPageQuery([]);
+        return $oDb->setPageBlockData($iBlockId, $iContentId, $sContentModule, $sData);
     }
 }