Download plugins/Goals/Model.php from Leon4gr45/matomo: direct link, hf CLI and curl.
- Browser
- Download file 3.94 kB
-
https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/Goals/Model.php
- Command line
-
hf download hf://spaces/Leon4gr45/matomo/plugins/Goals/Model.php
-
curl -L -o Model.php https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/Goals/Model.php
3.94 kB
| /** | |
| * Matomo - free/libre analytics platform | |
| * | |
| * @link https://matomo.org | |
| * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later | |
| */ | |
| namespace Piwik\Plugins\Goals; | |
| use Piwik\Common; | |
| use Piwik\Db; | |
| /** | |
| * @phpstan-type GoalStoredRecord array{ | |
| * idgoal: int|string, | |
| * idsite: int|string, | |
| * name: string, | |
| * description: string, | |
| * match_attribute: string, | |
| * pattern: string, | |
| * pattern_type: string, | |
| * case_sensitive: int|string, | |
| * allow_multiple: int|string, | |
| * revenue: float|int|string, | |
| * event_value_as_revenue: int|string, | |
| * deleted?: int|string | |
| * } | |
| */ | |
| class Model | |
| { | |
| private static $rawPrefix = 'goal'; | |
| private $table; | |
| public function __construct() | |
| { | |
| $this->table = Common::prefixTable(self::$rawPrefix); | |
| } | |
| private function getNextIdGoal($idSite) | |
| { | |
| $db = $this->getDb(); | |
| $idGoal = $db->fetchOne("SELECT max(idgoal) + 1 FROM `" . $this->table . "` | |
| WHERE idsite = ?", $idSite); | |
| if (empty($idGoal)) { | |
| $idGoal = 1; | |
| } | |
| return $idGoal; | |
| } | |
| public function createGoalForSite($idSite, $goal) | |
| { | |
| $db = $this->getDb(); | |
| $goalId = $this->getNextIdGoal($idSite); | |
| $goal['idgoal'] = $goalId; | |
| $goal['idsite'] = $idSite; | |
| $db->insert($this->table, $goal); | |
| return $goalId; | |
| } | |
| public function updateGoal($idSite, $idGoal, $goal) | |
| { | |
| $idSite = (int) $idSite; | |
| $idGoal = (int) $idGoal; | |
| $db = $this->getDb(); | |
| $db->update($this->table, $goal, "idsite = '$idSite' AND idgoal = '$idGoal'"); | |
| } | |
| // actually this should be in a log_conversion model | |
| public function deleteGoalConversions($idSite, $idGoal) | |
| { | |
| $table = Common::prefixTable("log_conversion"); | |
| Db::deleteAllRows($table, "WHERE idgoal = ? AND idsite = ?", "idvisit", 100000, array($idGoal, $idSite)); | |
| } | |
| /** | |
| * @param string|int $idSite | |
| * @param string|int $idGoal | |
| * @phpstan-return GoalStoredRecord|array{} | |
| */ | |
| public function getActiveGoal($idSite, $idGoal) | |
| { | |
| $idSite = (int) $idSite; | |
| $idGoal = (int) $idGoal; | |
| $goals = Db::fetchRow("SELECT * FROM `" . $this->table . "` | |
| WHERE idsite = $idSite AND idgoal = $idGoal | |
| AND deleted = 0 LIMIT 1"); | |
| return $goals; | |
| } | |
| /** | |
| * @param int|string|array<int|string> $idSite | |
| * @phpstan-return list<GoalStoredRecord> | |
| */ | |
| public function getActiveGoals($idSite) | |
| { | |
| $idSite = array_map('intval', $idSite); | |
| $goals = Db::fetchAll("SELECT * FROM `" . $this->table . "` | |
| WHERE idsite IN (" . implode(", ", $idSite) . ") | |
| AND deleted = 0"); | |
| return $goals; | |
| } | |
| public function deleteGoalsForSite($idSite): void | |
| { | |
| Db::query("DELETE FROM `" . $this->table . "` WHERE idsite = ? ", [$idSite]); | |
| } | |
| public function deleteGoal($idSite, $idGoal) | |
| { | |
| $query = "UPDATE " . $this->table . " SET deleted = 1 | |
| WHERE idsite = ? AND idgoal = ?"; | |
| $bind = array($idSite, $idGoal); | |
| Db::query($query, $bind); | |
| } | |
| public function getActiveGoalCount(): int | |
| { | |
| return (int)Db::fetchOne("SELECT count(*) FROM `" . $this->table . "` | |
| WHERE deleted = 0"); | |
| } | |
| private function getDb() | |
| { | |
| return Db::get(); | |
| } | |
| /** | |
| * Checks if an active idgoal exists for the site | |
| */ | |
| public function doesGoalExist(int $idGoal, int $idSite): bool | |
| { | |
| return (bool)Db::fetchOne("SELECT COUNT(*) FROM `" . $this->table . "` | |
| WHERE deleted = 0 AND idsite = ? AND idgoal = ?", [$idSite, $idGoal]); | |
| } | |
| } | |