forked from matomo-org/matomo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Make it possible to define joins for log tables using `getWaysToJoinT…
…oOtherLogTables` (matomo-org#14062) * Make it possible to define joins for log tables using getWaysToJoinToOtherLogTables * Adds some tests for custom log table joins * add missing log tables joined using getWaysToJoinToOtherLogTables * automatically add log tables up the hierarchy * code improvements * Adds new ExampleLogTables plugin giving a showcase for custom log tables * specifiy table name in userid archiver to fix query if custom log table joins on user_id column * fix tests * Adds log table that does only indirectly join with log_visit * Allow defining joins on visit and action * update ui files
- Loading branch information
Showing
33 changed files
with
1,029 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<?php | ||
namespace Piwik\Plugins\ExampleLogTables\Columns; | ||
|
||
use Piwik\Columns\Dimension; | ||
|
||
class GroupAttributeAdmin extends Dimension | ||
{ | ||
protected $dbTableName = 'log_group'; | ||
protected $category = 'General_Visitors'; | ||
protected $type = self::TYPE_BOOL; | ||
protected $columnName = 'is_admin'; | ||
protected $segmentName = 'isadmin'; | ||
protected $nameSingular = 'Admin privileges'; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<?php | ||
namespace Piwik\Plugins\ExampleLogTables\Columns; | ||
|
||
use Piwik\Columns\Dimension; | ||
|
||
class UserAttributeGender extends Dimension | ||
{ | ||
protected $dbTableName = 'log_custom'; | ||
protected $category = 'General_Visitors'; | ||
protected $type = self::TYPE_TEXT; | ||
protected $columnName = 'gender'; | ||
protected $segmentName = 'attrgender'; | ||
protected $nameSingular = 'Gender'; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
<?php | ||
/** | ||
* 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\ExampleLogTables\Dao; | ||
|
||
use Piwik\Common; | ||
use Piwik\Db; | ||
use Piwik\DbHelper; | ||
|
||
class CustomGroupLog | ||
{ | ||
private $table = 'log_group'; | ||
private $tablePrefixed = ''; | ||
|
||
public function __construct() | ||
{ | ||
$this->tablePrefixed = Common::prefixTable($this->table); | ||
} | ||
|
||
public function install() | ||
{ | ||
DbHelper::createTable($this->table, " | ||
`group` VARCHAR(30) NOT NULL, | ||
`is_admin` TINYINT(1) NOT NULL, | ||
PRIMARY KEY (`group`)"); | ||
} | ||
|
||
public function uninstall() | ||
{ | ||
Db::query(sprintf('DROP TABLE IF EXISTS `%s`', $this->tablePrefixed)); | ||
} | ||
|
||
private function getDb() | ||
{ | ||
return Db::get(); | ||
} | ||
|
||
public function getAllRecords() | ||
{ | ||
return $this->getDb()->fetchAll('SELECT * FROM ' . $this->tablePrefixed); | ||
} | ||
|
||
public function addGroupInformation($group, $isAdmin) | ||
{ | ||
$columns = array( | ||
'group' => $group, | ||
'is_admin' => $isAdmin | ||
); | ||
|
||
$bind = array_values($columns); | ||
$placeholder = Common::getSqlStringFieldsArray($columns); | ||
|
||
$sql = sprintf('INSERT INTO %s (`%s`) VALUES(%s)', | ||
$this->tablePrefixed, implode('`,`', array_keys($columns)), $placeholder); | ||
|
||
$db = $this->getDb(); | ||
|
||
$db->query($sql, $bind); | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
<?php | ||
/** | ||
* 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\ExampleLogTables\Dao; | ||
|
||
use Piwik\Common; | ||
use Piwik\Db; | ||
use Piwik\DbHelper; | ||
|
||
class CustomUserLog | ||
{ | ||
private $table = 'log_custom'; | ||
private $tablePrefixed = ''; | ||
|
||
public function __construct() | ||
{ | ||
$this->tablePrefixed = Common::prefixTable($this->table); | ||
} | ||
|
||
public function install() | ||
{ | ||
DbHelper::createTable($this->table, " | ||
`user_id` VARCHAR(200) NOT NULL, | ||
`gender` VARCHAR(30) NOT NULL, | ||
`group` VARCHAR(30) NOT NULL, | ||
PRIMARY KEY (user_id)"); | ||
} | ||
|
||
public function uninstall() | ||
{ | ||
Db::query(sprintf('DROP TABLE IF EXISTS `%s`', $this->tablePrefixed)); | ||
} | ||
|
||
private function getDb() | ||
{ | ||
return Db::get(); | ||
} | ||
|
||
public function getAllRecords() | ||
{ | ||
return $this->getDb()->fetchAll('SELECT * FROM ' . $this->tablePrefixed); | ||
} | ||
|
||
public function addUserInformation($userId, $group, $gender) | ||
{ | ||
$columns = array( | ||
'user_id' => $userId, | ||
'group' => $group, | ||
'gender' => $gender | ||
); | ||
|
||
$bind = array_values($columns); | ||
$placeholder = Common::getSqlStringFieldsArray($columns); | ||
|
||
$sql = sprintf('INSERT INTO %s (`%s`) VALUES(%s)', | ||
$this->tablePrefixed, implode('`,`', array_keys($columns)), $placeholder); | ||
|
||
$db = $this->getDb(); | ||
|
||
$db->query($sql, $bind); | ||
} | ||
} | ||
|
Oops, something went wrong.