diff --git a/core/Api/VisitorsAPI.class.php b/core/Api/VisitorsAPI.class.php index 2489b8f..97f46b1 100644 --- a/core/Api/VisitorsAPI.class.php +++ b/core/Api/VisitorsAPI.class.php @@ -14,9 +14,38 @@ namespace Api\Visitors { use Api\VisitorsAPI; use DateTime; use Driver\SQL\Condition\Compare; + use Driver\SQL\Expression\Add; use Driver\SQL\Query\Select; + use Driver\SQL\Strategy\UpdateStrategy; use Objects\User; + class ProcessVisit extends VisitorsAPI { + public function __construct(User $user, bool $externalCall = false) { + parent::__construct($user, $externalCall, array( + "cookie" => new StringType("cookie") + )); + $this->isPublic = false; + } + + public function execute($values = array()) { + if (!parent::execute($values)) { + return false; + } + + $sql = $this->user->getSQL(); + $cookie = $this->getParam("cookie"); + $day = (new DateTime())->format("Ymd"); + $sql->insert("Visitor", array("cookie", "day")) + ->addRow($cookie, $day) + ->onDuplicateKeyStrategy(new UpdateStrategy( + array("day", "cookie"), + array("count" => new Add("Visitor.count", 1)))) + ->execute(); + + return $this->success; + } + } + class Stats extends VisitorsAPI { public function __construct(User $user, bool $externalCall = false) { parent::__construct($user, $externalCall, array( diff --git a/core/Objects/User.class.php b/core/Objects/User.class.php index f442006..2fa2361 100644 --- a/core/Objects/User.class.php +++ b/core/Objects/User.class.php @@ -254,20 +254,13 @@ class User extends ApiObject { public function processVisit() { if ($this->sql && $this->sql->isConnected() && isset($_COOKIE["PHPSESSID"]) && !empty($_COOKIE["PHPSESSID"])) { - if ($this->isBot()) { return; } $cookie = $_COOKIE["PHPSESSID"]; - $day = (new DateTime())->format("Ymd"); - - $this->sql->insert("Visitor", array("cookie", "day")) - ->addRow($cookie, $day) - ->onDuplicateKeyStrategy(new UpdateStrategy( - array("month", "cookie"), - array("count" => new Add("Visitor.count", 1)))) - ->execute(); + $req = new \Api\Visitors\ProcessVisit($this); + $req->execute(array("cookie" => $cookie)); } }