<commit_before><?php

namespace app\models;

use Yii;
use app\models\Users;
use app\models\Vk;
use app\models\Chats;
use app\models\Params;

/**
 * This is the model class for table "events".
 *
 * @property integer $id
 * @property integer $chatId
 * @property integer $userId
 * @property integer $time
 * @property string $event
 */
class Events extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'events';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['chatId', 'userId', 'time', 'event'], 'required'],
            [['chatId', 'userId', 'time'], 'integer'],
            [['event'], 'string', 'max' => 20],
        ];
    }
	
	public static function getEvent($chatId, $event) 
	{ 
		$eventList = static::findAll(['chatId' => $chatId, 'event' => $event]); 
		return $eventList; 
	}
	
    public static function setEvent($chatId, $userId, $time, $event, $midEvent = null)
    {
        if (Events::find()->where(['chatId' => $chatId, 'userId' => $userId, 'time' => $time])->exists()) return false;
        
        switch ($event){ 
            case "chat_create": 
            $event = "chat_create";
            break; 
            case "chat_title_update": 
            $event = "title_update";
            break; 
            case "chat_photo_update": 
            $event = "photo_update";
		Events::changePhoto($chatId, $userId);
            break; 
            case "chat_invite_user":
            if($userId == $midEvent) {
                $event = "return_user";
            } else {
                $event = "invite_user";
                Events::rightsToInvite($chatId, $userId, $midEvent);
				Events::getLastInvite($chatId, $midEvent);
            } 
            break; 
            case "chat_kick_user": 
            if($userId == $midEvent) {
                $event = "leave_user";
		Events::returnLeaveUser($chatId, $userId);
            } else {
                $event = "kick_user";
            }
            break; 
            default:
            break; 
        }

        $self = new self([
            'chatId' => $chatId,
            'userId' => $userId,
            'time' => $time,
            'event' => $event,
        ]);
        $self->save();
    }
    
    public static function returnLeaveUser($chatId, $userId){
	    $chat = Chats::getChat($chatId);    
	    if($chat->inviteUser($userId)) $chat->sendMessage("Прошу прощения, но я не могу этого допустить. Выходить из беседы – не лучшая идея.\n\nМожете записаться на курс психологического лечения к нашему админу, он поможет вам 😄");
    }
	
	public static function getLastInvite($chatId, $midEvent) 
	{ 
		$chat = Chats::getChat($chatId);
		$timevents = static::findAll(['chatId' => $chatId, 'event' => 'invite_user', 'userId' => $midEvent]);
		usort($timevents, function ($a, $b) {
                    return $b->time - $a->time;
                });
		$timevent = array_pop($timevents);
		$user = Users::getUser($chatId, $midEvent);
		$user->invdate=$timevent->time; 
		$user->save();
		return $timevent->time; 
	}
	
    public static function changePhoto($chatId, $userId){
	    $chat = Chats::getChat($chatId);    
	    $chat->sendMessage("Боюсь, что в этой беседе нельзя менять фотографию диалога. Я вынуждена сейчас же её удалить.");
	    // Vk::get(true)->messages->deleteChatPhoto(['chat_id' => $chatId]);
    }
	    
    public static function rightsToInvite($chatId, $userId, $invitationUserId)
    {
        $chat = Chats::getChat($chatId);
	$user = Users::getUser($chatId, $userId);
        if (Users::getStatus($chatId, $userId) != USER_STATUS_DEFAULT && Users::getStatus($chatId, $userId) != USER_STATUS_UNTOUCHABLE) {
		return false;
	} else if(Users::getStatus($chatId, $userId) == USER_STATUS_UNTOUCHABLE) {
		$user->status = USER_STATUS_DEFAULT;
		$user->save();
		
		$chat->sendMessage("{$user->name} {$user->secondName} использовал свое право пригласить человека.\n\nЯ уже изменила его статус.");
		return false;
	}
        $invitationUser = Users::getUser($chatId, $invitationUserId);
        $kick1 = false;
        $kick2 = false;
        
        $chat->sendMessage("Приглашать людей в эту беседу без согласования с админами запрещено.\nСогласно правилам, {$user->name} {$user->secondName} и {$invitationUser->name} {$invitationUser->secondName} будут выкинуты из чата.");
        <commit_msg>Update Events.php<commit_after><?php

namespace app\models;

use Yii;
use app\models\Users;
use app\models\Vk;
use app\models\Chats;
use app\models\Params;

/**
 * This is the model class for table "events".
 *
 * @property integer $id
 * @property integer $chatId
 * @property integer $userId
 * @property integer $time
 * @property string $event
 */
class Events extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'events';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['chatId', 'userId', 'time', 'event'], 'required'],
            [['chatId', 'userId', 'time'], 'integer'],
            [['event'], 'string', 'max' => 20],
        ];
    }
	
	public static function getEvent($chatId, $event) 
	{ 
		$eventList = static::findAll(['chatId' => $chatId, 'event' => $event]); 
		return $eventList; 
	}
	
    public static function setEvent($chatId, $userId, $time, $event, $midEvent = null)
    {
        if (Events::find()->where(['chatId' => $chatId, 'userId' => $userId, 'time' => $time])->exists()) return false;
        
        switch ($event){ 
            case "chat_create": 
            $event = "chat_create";
            break; 
            case "chat_title_update": 
            $event = "title_update";
            break; 
            case "chat_photo_update": 
            $event = "photo_update";
		Events::changePhoto($chatId, $userId);
            break; 
            case "chat_invite_user":
            if($userId == $midEvent) {
                $event = "return_user";
            } else {
                $event = "invite_user";
                Events::rightsToInvite($chatId, $userId, $midEvent);
				Events::getLastInvite($chatId, $midEvent);
            } 
            break; 
            case "chat_kick_user": 
            if($userId == $midEvent) {
                $event = "leave_user";
		Events::returnLeaveUser($chatId, $userId);
            } else {
                $event = "kick_user";
            }
            break; 
            default:
            break; 
        }

        $self = new self([
            'chatId' => $chatId,
            'userId' => $userId,
            'time' => $time,
            'event' => $event,
        ]);
        $self->save();
    }
    
    public static function returnLeaveUser($chatId, $userId){
	    $chat = Chats::getChat($chatId);    
	    if($chat->inviteUser($userId)) $chat->sendMessage("Прошу прощения, но я не могу этого допустить. Выходить из беседы – не лучшая идея.\n\nМожете записаться на курс психологического лечения к нашему админу, он поможет вам 😄");
    }
	
	public static function getLastInvite($chatId, $midEvent) 
	{ 
		$chat = Chats::getChat($chatId);
		$timevents = static::findAll(['chatId' => $chatId, 'event' => 'invite_user', 'userId' => $midEvent]);
		usort($timevents, function ($a, $b) {
                    return $b->time - $a->time;
                });
		$timevent = array_pop($timevents);
		$user = Users::getUser($chatId, $midEvent);
		if (!is_object($timevent->time)) return false;
		$user->invdate = $timevent->time; 
		$user->save();
		return $timevent->time; 
	}
	
    public static function changePhoto($chatId, $userId){
	    $chat = Chats::getChat($chatId);    
	    $chat->sendMessage("Боюсь, что в этой беседе нельзя менять фотографию диалога. Я вынуждена сейчас же её удалить.");
	    // Vk::get(true)->messages->deleteChatPhoto(['chat_id' => $chatId]);
    }
	    
    public static function rightsToInvite($chatId, $userId, $invitationUserId)
    {
        $chat = Chats::getChat($chatId);
	$user = Users::getUser($chatId, $userId);
        if (Users::getStatus($chatId, $userId) != USER_STATUS_DEFAULT && Users::getStatus($chatId, $userId) != USER_STATUS_UNTOUCHABLE) {
		return false;
	} else if(Users::getStatus($chatId, $userId) == USER_STATUS_UNTOUCHABLE) {
		$user->status = USER_STATUS_DEFAULT;
		$user->save();
		
		$chat->sendMessage("{$user->name} {$user->secondName} использовал свое право пригласить человека.\n\nЯ уже изменила его статус.");
		return false;
	}
        $invitationUser = Users::getUser($chatId, $invitationUserId);
        $kick1 = false;
        $kick2 = false;
        
        $chat->sendMessage("Приглашать людей в эту беседу без согласования с админами запрещено.\nСогласно правилам, {$user->name} {$user->secondName} и {$invitationUser->name} {$invitationUser->secondName} будут выкинуты из чата.");
        
{'fraction_non_alphanumeric': 0.15422495803021824, 'fraction_numerical': 0.0008953553441522104, 'mean_word_length': 2.468944099378882, 'pattern_counts': {'":': 10, '<': 5, '<?xml version=': 0, '>': 80, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '185051', 'n_tokens_mistral': 2992, 'n_tokens_neox': 2980, 'n_words': 628}