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

Ticket #5291 - Improve uploader and storage collaboration. P3.

AntonLV 10 месяцев назад
Родитель
Сommit
dee304ea85

+ 4 - 2
modules/base/general/classes/BxBaseModGeneralFormEntry.php

@@ -710,8 +710,10 @@ class BxBaseModGeneralFormEntry extends BxTemplFormView
         $CNF = &$this->_oModule->_oConfig->CNF;
 
         $mixedValue = parent::getCleanValue($sName);
-        if($this->_bIsApi && !empty($mixedValue) && in_array($sName, [$CNF['FIELD_POLL']]))
-            $mixedValue = explode(',', $mixedValue);
+        if($this->_bIsApi && !empty($mixedValue)) {
+            if(($sF = 'FIELD_POLL') && isset($CNF[$sF]) && strcmp($sName, $CNF[$sF]) == 0)
+                $mixedValue = explode(',', $mixedValue);
+        }
 
         return $mixedValue;
     }

+ 25 - 0
modules/base/profile/classes/BxBaseModProfileFormEntry.php

@@ -198,6 +198,31 @@ class BxBaseModProfileFormEntry extends BxBaseModGeneralFormEntry
         return parent::delete($iContentId, $aContentInfo);
     }
 
+    public function processFilesFlagsApi ($sFieldFile, $iContentId)
+    {
+        if(!isset($this->aInputs[$sFieldFile]) || ($this->aInputs[$sFieldFile]['multiple'] ?? true))
+            return false;
+        
+        $aContentInfo = $this->_oModule->_oDb->getEntriesBy(['type' => 'id', 'id' => $iContentId]);
+        if(empty($aContentInfo) || !is_array($aContentInfo) || !isset($aContentInfo[$sFieldFile]))
+            return false;
+
+        $iFileId = 0;
+        if(($mixedFileIds = $this->getCleanValue($sFieldFile)) === '')
+            $iFileId = 0;
+        else if(is_array($mixedFileIds))
+            $iFileId = (int)reset($mixedFileIds);
+        else
+            return false;
+
+        if($iFileId == $aContentInfo[$sFieldFile] || !$this->_oModule->_oDb->updateContentPictureById($iContentId, 0, $iFileId, $sFieldFile))
+            return false;
+
+        $this->_processTrackFields($iContentId);
+
+        return true;
+    }
+
     protected function genCustomViewRowValueProfileEmail($aInput)
     {
         return $this->genCustomViewRowValueProfileEmailOrIp($aInput);

+ 3 - 0
modules/base/profile/classes/BxBaseModProfileFormsEntryHelper.php

@@ -164,6 +164,9 @@ class BxBaseModProfileFormsEntryHelper extends BxBaseModGeneralFormsEntryHelper
 
             $oForm->processFiles($CNF[$sField], $iContentId, false);
 
+            if($this->_bIsApi)
+                $oForm->processFilesFlagsApi($CNF[$sField], $iContentId);
+
             if(($aChanged = $oForm->isTrackFieldChanged($CNF[$sField], true)) !== false)
                 $oForm->processFileDeletion($CNF[$sField], $aChanged['old']);
         }