123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- <?php
- /**
- * Created by PhpStorm.
- * User: stanley-king
- * Date: 2018/8/16
- * Time: 下午5:03
- */
- namespace room;
- use uniquer;
- use Log;
- class face_item
- {
- const user_count = 50;
- private $mParams;
- public function __construct($params) {
- $this->mParams = $params;
- }
- public function face_id() {
- return intval($this->mParams['face_id']);
- }
- public function hasroom() {
- return $this->room_id() > 0;
- }
- public function room_id() {
- return intval($this->mParams['room_id']);
- }
- public function users()
- {
- $unique = new uniquer();
- if($this->room_id() === 0)
- {
- if(empty($this->mParams['users'])) return $unique;
- $users = explode(',',$this->mParams['users']);
- foreach ($users as $user) {
- $unique->add_value($user);
- }
- }
- else
- {
- $mod_room = Model('room');
- $items = $mod_room->getRoomParts(['room_id' => $this->room_id(),'state' => 0],'member_id',self::user_count);
- foreach ($items as $item) {
- $unique->add_value(intval($item['member_id']));
- }
- }
- return $unique;
- }
- }
- class face_room
- {
- private $mCode;
- private $mLochash;
- private $mModRoom;
- private $mFaceItem;
- public function __construct($code,$lochash)
- {
- $this->mCode = $code;
- $this->mLochash = $lochash;
- $this->mModRoom = Model('room');
- $this->mFaceItem = null;
- }
- public function find($user)
- {
- $item = $this->mModRoom->findFace(['lochash' => $this->mLochash,'check_code' => $this->mCode]);
- if(empty($item)) {
- $this->mModRoom->createFace($this->mLochash,$this->mCode);
- $item = $this->mModRoom->findFace(['lochash' => $this->mLochash,'check_code' => $this->mCode]);
- }
-
- if(empty($item)) return false;
- $this->mFaceItem = new face_item($item);
- $unique = $this->mFaceItem->users();
- if($unique->add_value($user)) {
- $users = $unique->values();
- $fact_id = $this->mFaceItem->face_id();
- $strusers = implode(',',$users);
- $this->mModRoom->editFace(['face_id' => $fact_id],['users' => $strusers]);
- } else {
- $users = $unique->values();
- }
- return $users;
- }
- public function join($user)
- {
- if($this->find($user) === false) return false;
- if($this->mFaceItem->hasroom()) {
- Log::record("join hasroom true",Log::DEBUG);
- return $this->mFaceItem->room_id();
- }
- else
- {
- $ret = factory_client::instance()->create_chat($user);
- if($ret == false) {
- Log::record("join create_chat error",Log::ERR);
- return false;
- } else {
- $room_id = $ret['room'];
- $fact_id = $this->mFaceItem->face_id();
- $this->mModRoom->editFace(['face_id' => $fact_id],['room_id' => $room_id]);
- return $room_id;
- }
- }
- }
- public function leave($user)
- {
- if($this->find($user) === false) return false;
- if($this->mFaceItem->hasroom()) {
- return true;
- }
- else
- {
- $fact_id = $this->mFaceItem->face_id();
- $unique = $this->mFaceItem->users();
- $unique->remove_value($user);
- $users = $unique->values();
- $strusers = implode(',',$users);
- $this->mModRoom->editFace(['face_id' => $fact_id],['users' => $strusers]);
- return true;
- }
- }
- }
|