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

Ticket #4275 - Relationships: Cannot confirm a relation.

AntonLV 3 лет назад
Родитель
Сommit
4d2c62d715
2 измененных файлов с 15 добавлено и 6 удалено
  1. 6 2
      inc/classes/BxDolConnection.php
  2. 9 4
      inc/classes/BxDolRelation.php

+ 6 - 2
inc/classes/BxDolConnection.php

@@ -177,7 +177,7 @@ class BxDolConnection extends BxDolFactory implements iBxDolFactoryObject
     /**
      * Check whether connection between Initiator and Content can be established.
      */
-    public function checkAllowedConnect ($iInitiator, $iContent, $isPerformAction = false, $isMutual = false, $isInvertResult = false, $isSwap = false)
+    public function checkAllowedConnect ($iInitiator, $iContent, $isPerformAction = false, $isMutual = false, $isInvertResult = false, $isSwap = false, $isCheckExists = true)
     {
         if(!$iInitiator || !$iContent || $iInitiator == $iContent)
             return _t('_sys_txt_access_denied');
@@ -195,6 +195,9 @@ class BxDolConnection extends BxDolFactory implements iBxDolFactoryObject
         if(($mixedResult = $this->_checkAllowedConnectContent($oContent)) !== CHECK_ACTION_RESULT_ALLOWED)
             return $mixedResult;
 
+        if(!$isCheckExists)
+            return CHECK_ACTION_RESULT_ALLOWED;
+
         if($isSwap)
             $isConnected = $this->isConnected($iContent, $iInitiator, $isMutual);
         else
@@ -272,7 +275,8 @@ class BxDolConnection extends BxDolFactory implements iBxDolFactoryObject
         if(!$iContent || !$iInitiator)
             return ['err' => true, 'msg' => _t('_sys_conn_err_input_data_is_not_defined')];
 
-        if(($mixedResult = $this->checkAllowedConnect($iInitiator, $iContent, false, false, $isInvert)) !== CHECK_ACTION_RESULT_ALLOWED)
+        $sMethodCheck = 'checkAllowed' . bx_gen_method_name($sMethod);
+        if(($mixedResult = $this->{method_exists($this, $sMethodCheck) ? $sMethodCheck : 'checkAllowedConnect'}($iInitiator, $iContent, false, false, $isInvert)) !== CHECK_ACTION_RESULT_ALLOWED)
             return ['err' => true, 'msg' => $mixedResult];
 
         if (!$this->$sMethod((int)$iInitiator, (int)$iContent)) {

+ 9 - 4
inc/classes/BxDolRelation.php

@@ -189,23 +189,23 @@ class BxDolRelation extends BxDolConnection
     /**
      * Check whether connection between Initiator and Content can be established.
      */
-    public function checkAllowedConnect($iInitiator, $iContent, $isPerformAction = false, $isMutual = false, $isInvertResult = false, $isSwap = false)
+    public function checkAllowedConnect($iInitiator, $iContent, $isPerformAction = false, $isMutual = false, $isInvertResult = false, $isSwap = false, $isCheckExists = true)
     {
         if(!$this->isRelationAvailable($iInitiator, $iContent))
             return _t('_sys_txt_access_denied');
 
-        $mixedResult = $this->checkAllowedConnectCustom($iInitiator, $iContent, $isPerformAction, $isMutual, $isInvertResult, $isSwap);
+        $mixedResult = $this->checkAllowedConnectCustom($iInitiator, $iContent, $isPerformAction, $isMutual, $isInvertResult, $isSwap, $isCheckExists);
         if($mixedResult !== CHECK_ACTION_RESULT_ALLOWED)
             return $mixedResult;
 
-        return parent::checkAllowedConnect($iInitiator, $iContent, $isPerformAction, $isMutual, $isInvertResult, $isSwap);
+        return parent::checkAllowedConnect($iInitiator, $iContent, $isPerformAction, $isMutual, $isInvertResult, $isSwap, $isCheckExists);
     }
 
     /**
      * Custom check action method which can be overwritten.
      * Currently only friends can establish relations.
      */
-    public function checkAllowedConnectCustom($iInitiator, $iContent, $isPerformAction = false, $isMutual = false, $isInvertResult = false, $isSwap = false)
+    public function checkAllowedConnectCustom($iInitiator, $iContent, $isPerformAction = false, $isMutual = false, $isInvertResult = false, $isSwap = false, $isCheckExists = true)
     {
         if(!BxDolConnection::getObjectInstance('sys_profiles_friends')->isConnected($iInitiator, $iContent, true))
             return _t('_sys_txt_access_denied');
@@ -213,6 +213,11 @@ class BxDolRelation extends BxDolConnection
         return CHECK_ACTION_RESULT_ALLOWED;
     }
 
+    public function checkAllowedConfirmConnection($iInitiator, $iContent, $isPerformAction = false, $isMutual = false, $isInvertResult = false, $isSwap = false, $isCheckExists = true)
+    {
+        return $this->checkAllowedConnect($iInitiator, $iContent, $isPerformAction, $isMutual, $isInvertResult, $isSwap, false);
+    }
+
     public function isRelationAvailableFromProfile($sModule)
     {
         $sModule .= $this->_sParamDivider;