From e2acd2d9643c0d07c287427279ceab88e43a37dd Mon Sep 17 00:00:00 2001 From: hakasenyang Date: Sun, 11 Dec 2016 03:38:27 +0900 Subject: [PATCH] Add function and fix style --- include/check.php | 98 ++++++++++++++++++++++++++++++++++++++++------- test.php | 19 +++++++-- 2 files changed, 101 insertions(+), 16 deletions(-) diff --git a/include/check.php b/include/check.php index bee161c..747a6af 100644 --- a/include/check.php +++ b/include/check.php @@ -26,49 +26,121 @@ * @var [int] */ private $mode; + /** + * [$data_profile description] + * [$data_userdata description] + * @var [string] + */ + private $data_profile, $data_userdata; /** * Other data * In production. */ - public function __construct($mode) + public function __construct() { - switch($mode) + $this->Parser = new Parser(); + } + /** + * [SelectMode osu! mode] + * [$mode osu! mode + * 0 = osu! standard (standard) + * 1 = Taiko (taiko) + * 2 = Catch The Beat (ctb) + * 3 = osu!mania (mania) + * ] + * @var [int] + */ + public function SelectMode($mode) + { + switch(strtolower($mode)) { - case 0: + case '0': case 'standard': $this->mode = 0; break; - case 1: + case '1': case 'taiko': $this->mode = 1; break; - case 2: + case '2': case 'ctb': $this->mode = 2; break; - case 3: + case '3': case 'mania': $this->mode = 3; break; default: - throw new Exception('Error Mode'); + throw new \Exception($mode . ' is not supported.'); break; } - $this->Parser = new Parser(); + return $this->mode; } + /** + * [CheckUser Get osu! UserID] + * @param [string] $osuid [osu! ID] + */ public function CheckUser($osuid) { // Transfer osu! ID to Num - $data = $this->Parser->WEBParsing('https://osu.ppy.sh/u/'.$osuid); - $this->OsuID = $this->Parser->splits($data, 'var userId = ', ';'); - if(!isset($this->OsuID)) return 0; + $this->data_profile = $this->Parser->WEBParsing('https://osu.ppy.sh/u/' . $osuid); + $this->OsuID = $this->Parser->splits($this->data_profile, 'var userId = ', ';'); + if(empty($this->OsuID)) + return false; + + $this->Occupation = $this->Parser->splits($this->data_profile, '
', '
'); return $this->OsuID; } + public function CheckOccupation() + { + /** + * md5 = $OsuID|date('Ymd')|$mode + * 20 string (substr) + */ + $occu = substr(md5($this->OsuID.'|' . date('Ymd') . '|' . $this->mode), 0, 20); + if ($occu === $this->Occupation) + return true; + else + return $occu; + } + private function GetUserData() + { + if(empty($this->OsuID)) + throw new \Exception('Please, CheckUser(OsuID) first!'); + if(empty($this->data_userdata)) + $this->data_userdata = $this->Parser->WEBParsing('https://osu.ppy.sh/pages/include/profile-general.php?u=' . $this->OsuID . '&m=' . $this->mode); + } + /** + * [CheckPlayCount Get PlayCount] + */ public function CheckPlayCount() { - $data = $this->Parser->WEBParsing('https://osu.ppy.sh/pages/include/profile-general.php?u=' . $this->OsuID .'&m=' . $this->mode); - $this->PlayCount = $this->Parser->splits($data, 'Play Count: ', ''); + $this->GetUserData(); + $this->PlayCount = $this->Parser->splits($this->data_userdata, 'Play Count: ', ''); return $this->PlayCount; } + public function CheckPerformance() + { + $this->GetUserData(); + if (strpos($this->data_userdata, 'This user has not played enough, or has not played recently.')) + return false; + $this->Performance = str_replace(',', NULL, $this->Parser->splits($this->data_userdata, 'Performance: ', 'pp')); + return $this->Performance; + } + public function CheckRank() + { + $this->GetUserData(); + if (strpos($this->data_userdata, 'This user has not played enough, or has not played recently.')) + return false; + $this->Rank = str_replace(',', NULL, $this->Parser->splits($this->data_userdata, 'pp (#', ')')); + return $this->Rank; + } + public function ResetObject() + { + foreach ($this as $key => $value) + unset($this->$key); + + $this->__construct(); + } } diff --git a/test.php b/test.php index 5e8ac0c..1b8f401 100644 --- a/test.php +++ b/test.php @@ -1,7 +1,20 @@ SelectMode(0); - echo $Check->CheckUser('Angelsim'); + echo $Check->CheckUser('peppy'); + if ($Check->CheckOccupation() === true) + echo '
You are applied!'; + else + echo '
Please change occupation to ' . $Check->CheckOccupation(); echo '
'; - echo $Check->CheckPlayCount(); + echo 'Performance : ' . $Check->CheckPerformance(); + echo '
'; + echo 'Ranking : ' . $Check->CheckRank(); + + $Check->ResetObject(); + + echo $Check->CheckUser('ExampleToNotUser'); + echo '
'; + echo 'Performance : ' . $Check->CheckPerformance(); \ No newline at end of file