MVC/lib/Controller/Mangboard/UserController.php
2024-09-25 09:10:17 +09:00

97 lines
3.2 KiB
PHP

<?php
namespace lib\Controller\Mangboard;
use lib\Entity\Mangboard\UserEntity;
class UserController extends BaseController
{
private $_model = null;
public function __construct()
{
parent::__construct();
$this->_model = $this->getModel("Mangboard\\UserModel");
} //
final public function setPoint($params)
{
if (count($params) != 3) {
return "사용법: php app.php Mangboard\UserController setPoint 아이디 포인트 +|-\n" . var_export($params);
}
$id = $params[0];
$point = intval($params[1]);
if (!is_int($point)) {
return "{$params[1]}은 숫자형식이 아닙니다.";
}
$point = intval($params[1]);
switch ($params[2]) {
case '+':
case '-':
$sign = $params[2];
break;
default:
return "형식오류 +/- 가 아닙니다";
// break;
}
$this->_model->where("user_id", $id);
$entity = $this->_model->getEntity();
if (!$entity) {
return "[{$id}]에 해당하는 회원은 없습니다";
}
$old_point = $entity->getPoint();
if (is_int($point)) {
$entity = $this->_model->setPoint($entity, $point, $sign);
}
return "[{$entity}] 회원님의 포인트는 {$old_point}->{$entity->getPoint()} 입니다.";
} //
final public function getPoint($params)
{
if (count($params) == 1) {
$id = $params[0];
if ($id) {
$this->_model->where("user_id", $id);
$entity = $this->_model->getEntity();
if (!$entity) {
return "[{$id}]에 해당하는 회원은 없습니다";
}
}
}
$msgs = [];
foreach ($this->_model->getEntitys() as $entity) {
$msgs[] = "[{$entity}] 회원님의 포인트는 {$entity->getPoint()} 입니다.";
}
return implode("\n", $msgs);
} //
private function setLevel(UserEntity $entity, int $level)
{
$old_level = $entity->getLevel();
$entity = $this->_model->setLevel($entity, $level);
return "[{$entity}] 회원님의 레벨 {$old_level} -> {$entity->getLevel()}로 변경되었습니다.";
}
final public function checkLevel($id = false)
{
$entitys = [];
if ($id) {
$this->_model->where("user_id", $id);
$entity = $this->_model->getEntity();
if (!$entity) {
return "[{$id}]에 해당하는 회원은 없습니다";
}
$entitys[] = $entity;
} else {
$entitys = $this->_model->getEntitys();
}
$msgs = [];
foreach ($entitys as $entity) {
$level = intdiv($entity->getPoint() / MANGBOARD_POINT_UNIT);
if ($entity->getLevel() != $level) {
$msgs[] = $this->setLevel($entity, $level);
}
}
return PHP_EOL . "------" . date('Y/m/d-H:i') . "---------" . PHP_EOL . implode(PHP_EOL, $msgs) . PHP_EOL . "------------------------------" . PHP_EOL;
} //
}