Commit 5e4cf68c authored by Олег Гиммельшпах's avatar Олег Гиммельшпах

Merge branch 'master' of git.task-on.com:ktask/task-on.com

parents b15b175e 578d46ee
......@@ -161,9 +161,9 @@ class Conditions {
// Привели массив в понятный вид
$conditionsArray=[];
foreach($conditions as $i=>$condition) {
$object=Conditions::init()->getConditionById($condition->condition_id);
if ($object->recall===false)
return false;
// $object=Conditions::init()->getConditionById($condition->condition_id);
// if ($object->recall===false)
// return false;
$conditionsArray[$i][] = $condition;
} // На выходе получаем массив необходимого формата
// Обрабатываем отформатированный массив
......
......@@ -14,9 +14,11 @@ use common\modules\messageTemplate\models\MessageTemplate;
use common\modules\triggers\components\conditions\vendor\ConditionBase;
use common\modules\triggers\components\conditions\vendor\ConditionInterface;
use common\modules\triggers\models\TriggerCondition;
use common\modules\triggers\models\TriggerLogs;
use common\modules\triggers\models\TriggerParam;
use common\modules\triggers\models\TriggerSchedule;
use common\modules\triggers\models\TriggerTrigger;
use common\modules\users\models\User;
use yii\web\BadRequestHttpException;
class CheckPresenceTime extends ConditionBase implements ConditionInterface {
......@@ -75,10 +77,25 @@ class CheckPresenceTime extends ConditionBase implements ConditionInterface {
}
/**
* @param $time
* @param TriggerSchedule $message
* @return bool
*/
public function check($time){
public function check($message){
$user = User::find()->where(['email' => $message->email])->one();
if (!is_null($message->trigger_id) && !is_null($user)) {
/** @var TriggerCondition[] $conditions */
$conditions = TriggerCondition::find()->where(['trigger_id'=>$message->trigger_id, 'condition_id' => self::CONDITION_ID])->all();
foreach($conditions as $condition) {
$urlParam = TriggerParam::find()->where(['condition_id' => $condition->getPrimaryKey(), 'key' => 'url', 'value' => \Yii::$app->request->getUrl()])->one();
$timeParam = TriggerParam::find()->where(['condition_id' => $condition->getPrimaryKey(), 'key' => 'time'])->one();
if (!is_null($urlParam) && !is_null($timeParam)) {
$sumTime = TriggerLogs::getSummaryTimeByUrl($urlParam, $user->getPrimaryKey());
if ($sumTime >= $timeParam) {
return true;
}
}
}
}
return false;
}
}
\ No newline at end of file
......@@ -5,6 +5,7 @@ namespace common\modules\triggers\components\conditions\conditions;
use common\components\UnisenderAPI;
use common\modules\triggers\components\conditions\vendor\ConditionBase;
use common\modules\triggers\components\conditions\vendor\ConditionInterface;
use common\modules\triggers\models\TriggerLogs;
use common\modules\users\models\User;
class CheckUserToRegistration extends ConditionBase implements ConditionInterface{
......@@ -25,7 +26,11 @@ class CheckUserToRegistration extends ConditionBase implements ConditionInterfac
* @return bool
*/
public function check($message){
$exists = User::find()->where(['email' => $message->email])->exists();
$user = User::find()->where(['email' => $message->email])->one();
if (!is_null($user)) {
$exists = TriggerLogs::find()->where(['user_id' => $user->getPrimaryKey(), 'action' =>TriggerLogs::USER_REGISTRATION])->exists();
return $exists;
}
return false;
}
}
\ No newline at end of file
......@@ -45,7 +45,7 @@ class TriggerLogs extends \yii\db\ActiveRecord
var value = 5;
setInterval(function() {
$.ajax({
url: "/triggers/default/settimeoflogs",
url: "http://taskon.task-on.com/triggers/default/settimeoflogs",
method: "GET",
async: false,
data: {
......@@ -103,5 +103,17 @@ class TriggerLogs extends \yii\db\ActiveRecord
public function getUser()
{
return $this->hasOne(User::className(), ['id' => 'user_id']);
}
public static function getSummaryTimeByUrl($url, $user_id) {
/** @var TriggerLogs[] $model */
$model = TriggerLogs::find()->where(['url' => $url, 'user_id' => $user_id])->all();
$summ = 0;
foreach($model as $item) {
$summ += $item->presence_time;
}
return $summ;
}
}
......@@ -4,8 +4,10 @@ namespace common\modules\users\models;
use common\components\UnisenderAPI;
use common\modules\messageTemplate\controllers\TemplateAdminController;
use common\modules\messageTemplate\models\MessageTemplate;
use common\modules\triggers\components\conditions\Conditions;
use common\modules\triggers\components\conditions\conditions\CheckUserToRegistration;
use common\modules\triggers\models\TriggerCondition;
use common\modules\triggers\models\TriggerLogs;
use common\modules\triggers\models\TriggerSchedule;
use common\modules\triggers\models\TriggerTrigger;
use Yii;
......@@ -519,11 +521,21 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
if (!parent::validate($attributeNames = null, $clearErrors = true))
return false;
// if ($this->scenario===self::SCENARIO_REGISTRATION || $this->scenario===self::SCENARIO_SOCIAL_REGISTRATION) {
// if (!$this->afterRegistration(['email' => $this->email, 'user_fio' => $this->getFio()]))
// return false;
// }
return true;
}
public function afterSave($insert, $changedAttributes)
{
parent::afterSave($insert, $changedAttributes);
if ($this->scenario===self::SCENARIO_REGISTRATION || $this->scenario===self::SCENARIO_SOCIAL_REGISTRATION) {
if (!$this->afterRegistration(['email' => $this->email, 'user_fio' => $this->getFio()]))
return false;
}
return true;
}
public function afterDelete()
......@@ -579,6 +591,14 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
* Если указан, выполняем действия триггера
*/
public function afterRegistration($params=array()){
$date = new \DateTime();
$model = new TriggerLogs();
$model->user_id = $this->getPrimaryKey();
$model->action = TriggerLogs::USER_REGISTRATION;
$model->url = Yii::$app->request->getUrl();
$model->datetime = $date->format('Y-m-d H:i:s');
$model->presence_time = 1;
if ($model->save()) {
/** @var TriggerTrigger[] $actualTriggers */
$actualTriggers = TriggerTrigger::getActualTriggers();
foreach($actualTriggers as $trigger) {
......@@ -602,6 +622,10 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
}
}
}
} else {
$this->addError('email', current(current($model->getErrors())));
return false;
}
return true;
}
......
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