Automation init...2
This commit is contained in:
parent
cb1b64126e
commit
7b7149fbc5
@ -15,10 +15,9 @@ $routes->addPlaceholder('uuid', '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}
|
||||
//2. Config/Filters.php -> $aliases = ['authFilter' => AuthFilter::class]
|
||||
|
||||
$routes->get('/', 'Home::index');
|
||||
$routes->group('cli', ['namespace' => 'App\Controllers\CLI'], function ($routes) {
|
||||
$routes->cli('mangboard/level', 'Mangboard::level');
|
||||
$routes->cli('crawler/yamap', 'Crawler::yamap');
|
||||
$routes->cli('crawler/yamap/(:any)', 'Crawler::yamap::/$1');
|
||||
$routes->group('crawler', ['namespace' => 'App\Controllers\Crawler'], function ($routes) {
|
||||
$routes->cli('yamap', 'YamapController::crawling');
|
||||
$routes->cli('yamap/(:segment)', 'YamapController::crawling::/$1');
|
||||
});
|
||||
|
||||
$routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:manager'], function ($routes) {
|
||||
@ -32,14 +31,9 @@ $routes->group('mangboard', ['namespace' => 'App\Controllers\Mangboard'], functi
|
||||
$routes->group('admin', ['namespace' => 'App\Controllers\Mangboard\Admin', 'filter' => 'authFilter:manager'], function ($routes) {
|
||||
$routes->group('/user', function ($routes) {
|
||||
$routes->get('/', 'UserController::index');
|
||||
// $routes->get('insert', 'UserController::form_insert');
|
||||
// $routes->post('insert', 'UserController::insert');
|
||||
// $routes->get('update', 'UserController::form_update');
|
||||
// $routes->post('update', 'UserController::upadate');
|
||||
// $routes->get('view', 'UserController::view');
|
||||
// $routes->get('delete/', 'UserController::delete', ['filter' => 'authFilter:master']);
|
||||
$routes->get('point', 'UserController::form_point', ['filter' => 'authFilter:master']);
|
||||
$routes->post('point', 'UserController::point', ['filter' => 'authFilter:master']);
|
||||
$routes->post('level', 'UserController::level', ['filter' => 'authFilter:master']);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controllers\CLI;
|
||||
|
||||
use App\Controllers\BaseController;
|
||||
use App\Libraries\MyCrawler\YamapLibrary;
|
||||
|
||||
class Crawler extends BaseController
|
||||
{
|
||||
public function yamap(...$params): bool
|
||||
{
|
||||
try {
|
||||
$isDebug = in_array("debug", $params);
|
||||
$yamap = new YamapLibrary();
|
||||
$yamap->setDebug($isDebug);
|
||||
$yamap->execute();
|
||||
log_message("notice", "Crawler->" . __FUNCTION__ . " 작업이 완료되었습니다.");
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
log_message("error", $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,24 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controllers\CLI;
|
||||
|
||||
use App\Libraries\Mangboard\UserLibrary;
|
||||
use App\Controllers\BaseController;
|
||||
|
||||
class Mangboard extends BaseController
|
||||
{
|
||||
public function level(...$params): bool
|
||||
{
|
||||
try {
|
||||
$isDebug = in_array("debug", $params);
|
||||
$user = new UserLibrary();
|
||||
$user->setDebug($isDebug);
|
||||
$user->setLevel();
|
||||
log_message("notice", "Mangboard->level 작업이 완료되었습니다.");
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
log_message("error", $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
49
app/Controllers/Crawler/YamapController.php
Normal file
49
app/Controllers/Crawler/YamapController.php
Normal file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controllers\Crawler;
|
||||
|
||||
use App\Controllers\BaseController;
|
||||
use App\Libraries\MyCrawler\YamapLibrary as MyCrawler;
|
||||
|
||||
class YamapController extends BaseController
|
||||
{
|
||||
public function crawling(...$params)
|
||||
{
|
||||
try {
|
||||
$isDebug = in_array("debug", $params);
|
||||
$crawler = new MyCrawler();
|
||||
$crawler->setDebug($isDebug);
|
||||
|
||||
//1. 사이트 로그인 처리
|
||||
$user = $crawler->login();
|
||||
$crawler->getMyStorage()->setUser($user);
|
||||
$items = [];
|
||||
//2. 해당사이트 MainPage 처리
|
||||
if ($crawler->getDebug()) {
|
||||
$items[] = [
|
||||
'title' => getenv("yamap.view.test.title"),
|
||||
'nickname' => getenv("yamap.view.test.nickname"),
|
||||
'detail_url' => getenv("yamap.view.test.url"),
|
||||
'time' => date("Y-m-d H:i:s"),
|
||||
'hit' => 1
|
||||
];
|
||||
} else {
|
||||
$items = $crawler->mainPage(getenv("yamap.list.url"));
|
||||
}
|
||||
if (!count($items)) {
|
||||
throw new \Exception("Yamap 사이트에서 게시물이 존재하지 않습니다.");
|
||||
}
|
||||
//최초 게시물만 등록하기 위함
|
||||
$item = $items[0];
|
||||
//3. DetailPage 처리 : bbs_view > div.contents 가진 객체를 찾아서 처리
|
||||
$fileEntitys = $crawler->detailPage($item["detail_url"]);
|
||||
//4.망보드 일반게시판에 게시물 등록 처리
|
||||
$crawler->createBoard($item, $fileEntitys);
|
||||
log_message("notice", "Crawler->" . __FUNCTION__ . " 작업이 완료되었습니다.");
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
log_message("error", $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2,8 +2,8 @@
|
||||
|
||||
namespace App\Controllers\Mangboard\Admin;
|
||||
|
||||
use App\Libraries\Mangboard\UserLibrary;
|
||||
use App\Controllers\Admin\AdminController;
|
||||
use App\Models\Mangboard\UserModel;
|
||||
|
||||
class UserController extends AdminController
|
||||
{
|
||||
@ -20,16 +20,30 @@ class UserController extends AdminController
|
||||
public function point(): string
|
||||
{
|
||||
try {
|
||||
$id = $this->request->getVar("id");
|
||||
$point = intval($this->request->getVar("point"));
|
||||
$sign = $this->request->getVar("point") ?? "+";
|
||||
$id = $this->request->getPost("id");
|
||||
$point = intval($this->request->getPost("point"));
|
||||
$sign = $this->request->getPost("point") ?? "+";
|
||||
|
||||
$user = new UserLibrary();
|
||||
$user->setPoint($id, $point, $sign);
|
||||
$userModel = new UserModel();
|
||||
$userModel->setPoint($id, $point, $sign);
|
||||
return "완료되었습니다.";
|
||||
} catch (\Exception $e) {
|
||||
log_message("error", $e->getMessage());
|
||||
return $e->getMessage();
|
||||
}
|
||||
}
|
||||
public function level(...$params): bool
|
||||
{
|
||||
try {
|
||||
$isDebug = in_array("debug", $params);
|
||||
$userModel = new UserModel();
|
||||
$userModel->setDebug($isDebug);
|
||||
$userModel->setLevel();
|
||||
log_message("notice", "Mangboard->level 작업이 완료되었습니다.");
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
log_message("error", $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Libraries\Mangboard;
|
||||
|
||||
use App\Libraries\CommonLibrary;
|
||||
use App\Entities\Mangboard\BoardEntity;
|
||||
|
||||
class BoardLibrary extends CommonLibrary
|
||||
{
|
||||
private $_model = null;
|
||||
public function __construct($model)
|
||||
{
|
||||
parent::__construct();
|
||||
$this->_model = $model;
|
||||
}
|
||||
public function getModel(): mixed
|
||||
{
|
||||
return $this->_model;
|
||||
}
|
||||
|
||||
public function create(BoardEntity $entity, array $formDatas = []): BoardEntity
|
||||
{
|
||||
$entity = $this->getModel()->create($entity, $formDatas);
|
||||
log_message("debug", __FUNCTION__ . "=>등록이 완료되었습니다.");
|
||||
return $entity;
|
||||
}
|
||||
}
|
||||
@ -1,98 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Libraries\Mangboard;
|
||||
|
||||
use App\Models\Mangboard\UserModel;
|
||||
use App\Entities\Mangboard\UserEntity;
|
||||
use App\Libraries\CommonLibrary;
|
||||
|
||||
class UserLibrary extends CommonLibrary
|
||||
{
|
||||
private $_model = null;
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function getModel(): UserModel
|
||||
{
|
||||
if ($this->_model === null) {
|
||||
return $this->_model = new UserModel();
|
||||
}
|
||||
return $this->_model;
|
||||
}
|
||||
|
||||
private function checkLevel(UserEntity $entity): UserEntity
|
||||
{
|
||||
//Admin용 Level로는 변경불가
|
||||
if ($entity->getLevel() == getenv('mangboard.admin.level')) {
|
||||
// throw new \Exception("Admin용 Level을 변경하실수 없습니다.\n");
|
||||
return $entity;
|
||||
}
|
||||
|
||||
//사용자 Point별 Level 계산
|
||||
$level = intval($entity->getPoint() / getenv('mangboard.point.unit') * getenv('mangboard.point.unit') / getenv('mangboard.point.unit'));
|
||||
|
||||
//운영자면 7~9
|
||||
if (getenv('mangboard.manager.level.min') <= $level && $level <= getenv('mangboard.manager.level.max')) {
|
||||
$level = $level < getenv('mangboard.manager.level.min') ? getenv('mangboard.manager.level.min') : $level;
|
||||
$level = getenv('mangboard.manager.level.max') < $level ? getenv('mangboard.manager.level.max') : $level;
|
||||
}
|
||||
// echo "point:" . $entity->getPoint() . ",level:" . $level . "\n";
|
||||
|
||||
//사용자 Level 1~5;
|
||||
if (getenv('mangboard.user.level.min') <= $level && $level <= getenv('mangboard.user.level.max')) {
|
||||
$level = $level < getenv('mangboard.user.level.min') ? getenv('mangboard.user.level.min') : $level;
|
||||
$level = getenv('mangboard.user.level.max') < $level ? getenv('mangboard.user.level.max') : $level;
|
||||
}
|
||||
// echo "point:" . $entity->getPoint() . ",level:" . $level . "\n";
|
||||
|
||||
//기존정보와 Level값이 다르면 저장
|
||||
if ($entity->getLevel() != $level) {
|
||||
$old_level = $entity->getLevel();
|
||||
$entity->setLevel($level);
|
||||
$entity = $this->getModel()->modify($entity);
|
||||
log_message("notice", __FUNCTION__ . "=>{$entity}의 Level이 {$old_level}에서 {$entity->getLevel()}로 변경되었습니다.");
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
|
||||
public function setPoint($id, int $point, $sign = '+'): UserEntity
|
||||
{
|
||||
$entity = is_numeric($id) ? $this->getModel()->getEntityByPK(intval($id)) : $this->getModel()->getEntityByID($id);
|
||||
if (!$entity) {
|
||||
throw new \Exception("해당 회원[{$id}]이 없습니다.");
|
||||
}
|
||||
|
||||
switch ($sign) {
|
||||
case '-':
|
||||
if ($point < $point) {
|
||||
throw new \Exception("기존포인트:{$point}가 감소 포인트:-{$point} 작습니다.\n");
|
||||
}
|
||||
$point = $point - $point;
|
||||
break;
|
||||
case '+':
|
||||
$point = $point + $point;
|
||||
break;
|
||||
default:
|
||||
throw new \Exception(__FUNCTION__ . "에서는 {$sign}은 사용할수 없습니다.\n");
|
||||
// break;
|
||||
}
|
||||
|
||||
//기존정보와 Point값이 다르면 저장
|
||||
if ($entity->getPoint() != $point) {
|
||||
$old_point = $entity->getPoint();
|
||||
$entity->setPoint($point);
|
||||
$entity = $this->getModel()->modify($entity);
|
||||
log_message("notice", __FUNCTION__ . "=>{$entity}의 Point가 {$old_point}에서 {$entity->getPoint()}로 변경되었습니다.");
|
||||
}
|
||||
return $this->checkLevel($entity);
|
||||
}
|
||||
public function setLevel(): void
|
||||
{
|
||||
foreach ($this->getModel()->getEntitys() as $entity) {
|
||||
$entity = $this->checkLevel($entity);
|
||||
log_message("debug", __FUNCTION__ . "=>[{$entity}] 회원님의 Level은 {$entity->getLevel()} 입니다.");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2,9 +2,8 @@
|
||||
|
||||
namespace App\Libraries\MyCrawler;
|
||||
|
||||
use Symfony\Component\DomCrawler\Crawler;
|
||||
use App\Libraries\CommonLibrary;
|
||||
use App\Entities\Mangboard\FileEntity;
|
||||
use Symfony\Component\DomCrawler\Crawler;
|
||||
|
||||
abstract class MyCrawlerLibrary extends CommonLibrary
|
||||
{
|
||||
@ -12,9 +11,8 @@ abstract class MyCrawlerLibrary extends CommonLibrary
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
abstract protected function getMySocket();
|
||||
abstract protected function getMyStorage();
|
||||
abstract public function execute(): void;
|
||||
abstract public function getMySocket();
|
||||
abstract public function getMyStorage();
|
||||
|
||||
final protected function getContent(string $url, string $tag): Crawler
|
||||
{
|
||||
|
||||
@ -2,43 +2,30 @@
|
||||
|
||||
namespace App\Libraries\MyCrawler;
|
||||
|
||||
|
||||
use Symfony\Component\DomCrawler\Crawler;
|
||||
use App\Libraries\MySocket\WebLibrary as MySocketLibrary;
|
||||
use App\Libraries\MyStorage\MangboardLibrary as MyStorageLibrary;
|
||||
use App\Models\Mangboard\UserModel;
|
||||
use App\Models\Mangboard\BoardModel;
|
||||
use App\Libraries\MySocket\WebLibrary;
|
||||
use App\Libraries\Mangboard\FileLibrary;
|
||||
use App\Libraries\Mangboard\BoardLibrary;
|
||||
use App\Entities\Mangboard\BoardEntity;
|
||||
use App\Entities\Mangboard\UserEntity;
|
||||
use Symfony\Component\DomCrawler\Crawler;
|
||||
|
||||
class YamapLibrary extends MyCrawlerLibrary
|
||||
{
|
||||
private $_userModel = null;
|
||||
private $_boardModel = null;
|
||||
private $_mySocket = null;
|
||||
private $_myStorage = null;
|
||||
private $_boardModel = null;
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
protected function getMySocket(): WebLibrary
|
||||
private function getUserModel(): UserModel
|
||||
{
|
||||
if ($this->_mySocket === null) {
|
||||
$this->_mySocket = new WebLibrary(getenv('yamap.host.url'));
|
||||
if ($this->_userModel === null) {
|
||||
$this->_userModel = new UserModel();
|
||||
}
|
||||
return $this->_mySocket;
|
||||
}
|
||||
|
||||
protected function getMyStorage(): FileLibrary
|
||||
{
|
||||
if ($this->_myStorage === null) {
|
||||
$this->_myStorage = new FileLibrary(getenv('yamap.storage.upload.path'));
|
||||
//원래는 mb_board에서 해당Board정보를 읽어서 처리해아함
|
||||
$this->_myStorage->setBoardName(getenv('yamap.storage.board.name'));
|
||||
$this->_myStorage->setBoardTable($this->getBoardModel()->getTable());
|
||||
$this->_myStorage->setBoardlevel(getenv('yamap.storage.board.level'));
|
||||
}
|
||||
return $this->_myStorage;
|
||||
return $this->_userModel;
|
||||
}
|
||||
private function getBoardModel(): BoardModel
|
||||
{
|
||||
@ -48,23 +35,56 @@ class YamapLibrary extends MyCrawlerLibrary
|
||||
return $this->_boardModel;
|
||||
}
|
||||
|
||||
private function mainPage(string $url): array
|
||||
public function getMySocket(): MySocketLibrary
|
||||
{
|
||||
if ($this->_mySocket === null) {
|
||||
$this->_mySocket = new MySocketLibrary(getenv('yamap.host.url'));
|
||||
}
|
||||
return $this->_mySocket;
|
||||
}
|
||||
|
||||
public function getMyStorage(): MyStorageLibrary
|
||||
{
|
||||
if ($this->_myStorage === null) {
|
||||
$this->_myStorage = new MyStorageLibrary(getenv('yamap.storage.upload.path'));
|
||||
//원래는 mb_board에서 해당Board정보를 읽어서 처리해아함
|
||||
$this->_myStorage->setBoardName(getenv('yamap.storage.board.name'));
|
||||
$this->_myStorage->setBoardTable($this->getBoardModel()->getTable());
|
||||
$this->_myStorage->setBoardlevel(getenv('yamap.storage.board.level'));
|
||||
}
|
||||
return $this->_myStorage;
|
||||
}
|
||||
|
||||
public function login(): UserEntity
|
||||
{
|
||||
$entity = $this->getUserModel()->getEntityByID("idcjp");
|
||||
// $daemonidc = new MySocketLibrary(getenv('daemonidc.host.url'));
|
||||
// $daemonidc->setDebug($isDebug);
|
||||
// $daemonidc->login(
|
||||
// getenv('daemonidc.login.url'),
|
||||
// getenv('daemonidc.login.user_id'),
|
||||
// getenv('daemonidc.login.user_password')
|
||||
// );
|
||||
return $entity;
|
||||
}
|
||||
|
||||
public function mainPage(string $url): array
|
||||
{
|
||||
$crawler = $this->getContent($url, getenv("yamap.list.tag"));
|
||||
$items = [];
|
||||
$items = [];
|
||||
//div.bbs_item를 가진 객체를 찾아서 같은 형식의 객체(sibling)를 배열로 넘김
|
||||
$crawler->filter(getenv("yamap.list.item.tag"))->each(
|
||||
function (Crawler $node) use (&$items): void {
|
||||
//bbs_item에서 span.g_nickname 객체를 찾아서 작성자가 "관리자" 아닌지 확인 후 Return Bool
|
||||
$nickname = $node->filter(getenv("yamap.list.item.nickname.tag"))->text();
|
||||
$hit = $node->filter(getenv("yamap.list.item.hit.tag"))->text();
|
||||
$date = $node->filter(getenv("yamap.list.item.date.tag"))->text();
|
||||
$hit = $node->filter(getenv("yamap.list.item.hit.tag"))->text();
|
||||
$date = $node->filter(getenv("yamap.list.item.date.tag"))->text();
|
||||
if ($nickname != getenv("yamap.list.item.nickname.except")) {
|
||||
//작성자가 "관리자"가 아니 게시물이면 해당 bbs_item에서 a.list_subject 객체를 찾아서
|
||||
$link_node = $node->filter(getenv("yamap.list.item.link.tag"));
|
||||
$link_node = $node->filter(getenv("yamap.list.item.link.tag"));
|
||||
$detail_url = $link_node->attr("href");
|
||||
$title = $link_node->children()->last()->text();
|
||||
$items[] = ['title' => $title, 'nickname' => $nickname, 'detail_url' => $detail_url, 'date' => $date, 'hit' => $hit];
|
||||
$title = $link_node->children()->last()->text();
|
||||
$items[] = ['title' => $title, 'nickname' => $nickname, 'detail_url' => $detail_url, 'date' => $date, 'hit' => $hit];
|
||||
}
|
||||
}
|
||||
);
|
||||
@ -74,7 +94,7 @@ class YamapLibrary extends MyCrawlerLibrary
|
||||
return $items;
|
||||
}
|
||||
|
||||
private function detailPage(string $url, array $fileEntitys = []): array
|
||||
public function detailPage(string $url, array $fileEntitys = []): array
|
||||
{
|
||||
$crawler = $this->getContent($url, getenv("yamap.view.content.tag"));
|
||||
//3. Image 처리
|
||||
@ -83,23 +103,20 @@ class YamapLibrary extends MyCrawlerLibrary
|
||||
return $this->download("video", $crawler, ["tag" => "video", "attr" => "src"], $fileEntitys);
|
||||
}
|
||||
|
||||
private function createBoard(array $item, array $fileEntitys): BoardEntity
|
||||
public function createBoard(array $item, array $fileEntitys): BoardEntity
|
||||
{
|
||||
$board = new BoardLibrary($this->getBoardModel());
|
||||
$board->setDebug($this->getDebug());
|
||||
|
||||
//미디어관련정보 entity에 넣기
|
||||
$entity = new BoardEntity();
|
||||
$entity->title = $item["title"];
|
||||
$entity->user_pid = $this->getMyStorage()->getUser()->getPK();
|
||||
$entity->user_id = $this->getMyStorage()->getUser()->getID();
|
||||
$entity->user_name = $item["nickname"] != "" ? $item["nickname"] : $this->getMyStorage()->getUser()->getTitle();
|
||||
$entity->level = $this->getMyStorage()->getBoardLevel();
|
||||
$entity->hit = $item['hit'];
|
||||
$entity->reg_date = date("Y-m-d H:i:s", strtotime($item['date']));
|
||||
$entity->data_type = "html";
|
||||
$entity = new BoardEntity();
|
||||
$entity->title = $item["title"];
|
||||
$entity->user_pid = $this->getMyStorage()->getUser()->getPK();
|
||||
$entity->user_id = $this->getMyStorage()->getUser()->getID();
|
||||
$entity->user_name = $item["nickname"] != "" ? $item["nickname"] : $this->getMyStorage()->getUser()->getTitle();
|
||||
$entity->level = $this->getMyStorage()->getBoardLevel();
|
||||
$entity->hit = $item['hit'];
|
||||
$entity->reg_date = date("Y-m-d H:i:s", strtotime($item['date']));
|
||||
$entity->data_type = "html";
|
||||
$entity->editor_type = "S";
|
||||
$entity->image_path = false;
|
||||
$entity->image_path = false;
|
||||
foreach ($fileEntitys as $fileEntity) {
|
||||
if ($entity->image_path === false) {
|
||||
$entity->image_path = $fileEntity->getPath() . DIRECTORY_SEPARATOR . $fileEntity->getTitle();
|
||||
@ -113,7 +130,8 @@ class YamapLibrary extends MyCrawlerLibrary
|
||||
// echo $entity->reg_date . "\n";
|
||||
// exit;
|
||||
//망보드 게시판에 등록
|
||||
$entity = $board->create($entity);
|
||||
$entity = $this->getBoardModel()->create($entity);
|
||||
log_message("debug", __FUNCTION__ . "=>등록이 완료되었습니다.");
|
||||
|
||||
//망보드 파일관리툴에 등록된 파일게시물에 등록한 게시판번호 수정하기
|
||||
foreach ($fileEntitys as $fileEntity) {
|
||||
@ -121,41 +139,4 @@ class YamapLibrary extends MyCrawlerLibrary
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
|
||||
public function execute(): void
|
||||
{
|
||||
//1. 사이트 로그인 처리
|
||||
$userModel = new UserModel();
|
||||
$user = $userModel->getEntityByID("idcjp");
|
||||
// $daemonidc = new MyWebLibrary(getenv('daemonidc.host.url'));
|
||||
// $daemonidc->setDebug($isDebug);
|
||||
// $daemonidc->login(
|
||||
// getenv('daemonidc.login.url'),
|
||||
// getenv('daemonidc.login.user_id'),
|
||||
// getenv('daemonidc.login.user_password')
|
||||
// );
|
||||
$this->getMyStorage()->setUser($user);
|
||||
$items = [];
|
||||
//2. 해당사이트 MainPage 처리
|
||||
if ($this->getDebug()) {
|
||||
$items[] = [
|
||||
'title' => getenv("yamap.view.test.title"),
|
||||
'nickname' => getenv("yamap.view.test.nickname"),
|
||||
'detail_url' => getenv("yamap.view.test.url"),
|
||||
'time' => date("Y-m-d H:i:s"),
|
||||
'hit' => 1
|
||||
];
|
||||
} else {
|
||||
$items = $this->mainPage(getenv("yamap.list.url"));
|
||||
}
|
||||
if (!count($items)) {
|
||||
throw new \Exception("Yamap 사이트에서 게시물이 존재하지 않습니다.");
|
||||
}
|
||||
//최초 게시물만 등록하기 위함
|
||||
$item = $items[0];
|
||||
//3. DetailPage 처리 : bbs_view > div.contents 가진 객체를 찾아서 처리
|
||||
$fileEntitys = $this->detailPage($item["detail_url"]);
|
||||
//4.망보드 일반게시판에 게시물 등록 처리
|
||||
$this->createBoard($item, $fileEntitys);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Libraries\Mangboard;
|
||||
namespace App\Libraries\MyStorage;
|
||||
|
||||
|
||||
use App\Models\Mangboard\FileModel;
|
||||
use App\Libraries\MyStorage\FileLibrary as MyStorageLibrary;
|
||||
use App\Libraries\MyStorage\FileLibrary;
|
||||
use App\Entities\Mangboard\UserEntity;
|
||||
use App\Entities\Mangboard\FileEntity;
|
||||
use App\Entities\Mangboard\BoardEntity;
|
||||
|
||||
class FileLibrary extends MyStorageLibrary
|
||||
class MangboardLibrary extends FileLibrary
|
||||
{
|
||||
private $_user = null;
|
||||
private $_boardName = "";
|
||||
@ -144,6 +144,80 @@ class UserModel extends CommonModel
|
||||
return $this->getEntity();
|
||||
}
|
||||
|
||||
private function checkLevel(UserEntity $entity): UserEntity
|
||||
{
|
||||
//Admin용 Level로는 변경불가
|
||||
if ($entity->getLevel() == getenv('mangboard.admin.level')) {
|
||||
// throw new \Exception("Admin용 Level을 변경하실수 없습니다.\n");
|
||||
return $entity;
|
||||
}
|
||||
|
||||
//사용자 Point별 Level 계산
|
||||
$level = intval($entity->getPoint() / getenv('mangboard.point.unit') * getenv('mangboard.point.unit') / getenv('mangboard.point.unit'));
|
||||
|
||||
//운영자면 7~9
|
||||
if (getenv('mangboard.manager.level.min') <= $level && $level <= getenv('mangboard.manager.level.max')) {
|
||||
$level = $level < getenv('mangboard.manager.level.min') ? getenv('mangboard.manager.level.min') : $level;
|
||||
$level = getenv('mangboard.manager.level.max') < $level ? getenv('mangboard.manager.level.max') : $level;
|
||||
}
|
||||
// echo "point:" . $entity->getPoint() . ",level:" . $level . "\n";
|
||||
|
||||
//사용자 Level 1~5;
|
||||
if (getenv('mangboard.user.level.min') <= $level && $level <= getenv('mangboard.user.level.max')) {
|
||||
$level = $level < getenv('mangboard.user.level.min') ? getenv('mangboard.user.level.min') : $level;
|
||||
$level = getenv('mangboard.user.level.max') < $level ? getenv('mangboard.user.level.max') : $level;
|
||||
}
|
||||
// echo "point:" . $entity->getPoint() . ",level:" . $level . "\n";
|
||||
|
||||
//기존정보와 Level값이 다르면 저장
|
||||
if ($entity->getLevel() != $level) {
|
||||
$old_level = $entity->getLevel();
|
||||
$entity->setLevel($level);
|
||||
$entity = $this->modify($entity);
|
||||
log_message("notice", __FUNCTION__ . "=>{$entity}의 Level이 {$old_level}에서 {$entity->getLevel()}로 변경되었습니다.");
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
|
||||
public function setPoint($id, int $point, $sign = '+'): UserEntity
|
||||
{
|
||||
$entity = is_numeric($id) ? $this->getEntityByPK(intval($id)) : $this->getEntityByID($id);
|
||||
if (!$entity) {
|
||||
throw new \Exception("해당 회원[{$id}]이 없습니다.");
|
||||
}
|
||||
|
||||
switch ($sign) {
|
||||
case '-':
|
||||
if ($point < $point) {
|
||||
throw new \Exception("기존포인트:{$point}가 감소 포인트:-{$point} 작습니다.\n");
|
||||
}
|
||||
$point = $point - $point;
|
||||
break;
|
||||
case '+':
|
||||
$point = $point + $point;
|
||||
break;
|
||||
default:
|
||||
throw new \Exception(__FUNCTION__ . "에서는 {$sign}은 사용할수 없습니다.\n");
|
||||
// break;
|
||||
}
|
||||
|
||||
//기존정보와 Point값이 다르면 저장
|
||||
if ($entity->getPoint() != $point) {
|
||||
$old_point = $entity->getPoint();
|
||||
$entity->setPoint($point);
|
||||
$entity = $this->modify($entity);
|
||||
log_message("notice", __FUNCTION__ . "=>{$entity}의 Point가 {$old_point}에서 {$entity->getPoint()}로 변경되었습니다.");
|
||||
}
|
||||
return $this->checkLevel($entity);
|
||||
}
|
||||
public function setLevel(): void
|
||||
{
|
||||
foreach ($this->getEntitys() as $entity) {
|
||||
$entity = $this->checkLevel($entity);
|
||||
log_message("debug", __FUNCTION__ . "=>[{$entity}] 회원님의 Level은 {$entity->getLevel()} 입니다.");
|
||||
}
|
||||
}
|
||||
|
||||
//create용
|
||||
public function create(UserEntity $entity): UserEntity
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user