- Доработаны триггеры отвечающие за проверку выполненности условий

parent 8893bf63
...@@ -11,6 +11,7 @@ namespace common\modules\triggers\components\conditions; ...@@ -11,6 +11,7 @@ namespace common\modules\triggers\components\conditions;
use common\modules\triggers\controllers\TriggerAdminController; use common\modules\triggers\controllers\TriggerAdminController;
use common\modules\triggers\models\TriggerCondition; use common\modules\triggers\models\TriggerCondition;
use common\modules\triggers\models\TriggerTrigger; use common\modules\triggers\models\TriggerTrigger;
use common\modules\users\models\User;
use yii\web\ServerErrorHttpException; use yii\web\ServerErrorHttpException;
class Conditions { class Conditions {
...@@ -180,17 +181,46 @@ class Conditions { ...@@ -180,17 +181,46 @@ class Conditions {
return false; return false;
} }
public function handleUserByTriggerId($user_id, $trigger_id)
{
/** @var User $user */
$user = User::findOne($user_id);
if (!is_null($user)) {
// Результирующий массив
$resultArray=[];
// Получили все условия в рамках триггера
$conditions = TriggerCondition::find()->where(['trigger_id' => $trigger_id])->all();
// Привели массив в понятный вид
$conditionsArray=[];
foreach($conditions as $i=>$condition) {
$conditionsArray[$i][] = $condition;
} // На выходе получаем массив необходимого формата
// Обрабатываем отформатированный массив
foreach($conditionsArray as $key=>$array) {
$resultArray[] = self::checkConditionsArray($array, null, ['email' => $user->email]);
}
// Проверяем результат
if (count($resultArray)>0) {
foreach($resultArray as $result)
if ($result===false)
return false;
return true;
}
}
return false;
}
/** /**
* Проверяем массив параметров на срабатывание хотябы одного условия * Проверяем массив параметров на срабатывание хотябы одного условия
* @param $array * @param $array
* @param $message * @param $message
* @return bool * @return bool
*/ */
public static function checkConditionsArray($array, $message){ public static function checkConditionsArray($array, $message=null, $params=array()){
foreach($array as $item) { foreach($array as $item) {
$object=Conditions::init()->getConditionById($item->condition_id); $object=Conditions::init()->getConditionById($item->condition_id);
$object->model=$item; $object->model=$item;
if ($object->check($message)==true) if ($object->check($message, $params)==true)
return true; return true;
} }
return false; return false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment