1: <?php
 2: 
 3: 
 4: 
 5: namespace aliuly\common;
 6: use pocketmine\event\Listener;
 7: use pocketmine\event\player\PlayerQuitEvent;
 8: use pocketmine\plugin\PluginBase;
 9: 
10: use aliuly\common\MPMU;
11: 
12: 13: 14: 
15: class Session implements Listener {
16:   protected $plugin;
17:   protected $state;
18:   19: 20: 
21:   public function __construct(PluginBase $owner) {
22:     $this->plugin = $owner;
23:     $this->plugin->getServer()->getPluginManager()->registerEvents($this,$this->plugin);
24:     $this->state = [];
25:   }
26:   27: 28: 29: 30: 31: 
32:     public function onPlayerQuit(PlayerQuitEvent $ev) {
33:     
34:         $n = MPMU::iName($ev->getPlayer());
35:         if (isset($this->state[$n])) unset($this->state[$n]);
36:     
37:     }
38:   39: 40: 41: 42: 43: 44: 45: 
46:     public function getState($label,$player,$default) {
47:     $player = MPMU::iName($player);
48:         if (!isset($this->state[$player])) return $default;
49:         if (!isset($this->state[$player][$label])) return $default;
50:         return $this->state[$player][$label];
51:     }
52:     53: 54: 55: 56: 57: 58: 59: 
60:     public function setState($label,$player,$val) {
61:     $player = MPMU::iName($player);
62:         if (!isset($this->state[$player])) $this->state[$player] = [];
63:         $this->state[$player][$label] = $val;
64:         return $val;
65:     }
66:     67: 68: 69: 70: 71: 
72:     public function unsetState($label,$player) {
73:     $player = MPMU::iName($player);
74:         if (!isset($this->state[$player])) return;
75:         if (!isset($this->state[$player][$label])) return;
76:         unset($this->state[$player][$label]);
77:     }
78: 
79: }
80: