104 lines
3.1 KiB
PHP
104 lines
3.1 KiB
PHP
<?php
|
|
/**
|
|
* Piwik - Open source web analytics
|
|
*
|
|
* @link http://piwik.org
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*
|
|
*/
|
|
namespace Piwik\Plugins\SegmentEditor;
|
|
|
|
use Exception;
|
|
use Piwik\Common;
|
|
use Piwik\Db;
|
|
use Piwik\DbHelper;
|
|
use Piwik\Piwik;
|
|
use Piwik\Version;
|
|
|
|
/**
|
|
*/
|
|
class SegmentEditor extends \Piwik\Plugin
|
|
{
|
|
/**
|
|
* @see Piwik\Plugin::getInformation
|
|
*/
|
|
public function getInformation()
|
|
{
|
|
return array(
|
|
'description' => 'Create and reuse custom visitor Segments with the Segment Editor.',
|
|
'authors' => array(array('name' => 'Piwik', 'homepage' => 'http://piwik.org/')),
|
|
'version' => Version::VERSION,
|
|
'license' => 'GPL v3+',
|
|
'license_homepage' => 'http://www.gnu.org/licenses/gpl.html'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @see Piwik\Plugin::getListHooksRegistered
|
|
*/
|
|
public function getListHooksRegistered()
|
|
{
|
|
return array(
|
|
'Segments.getKnownSegmentsToArchiveForSite' => 'getKnownSegmentsToArchiveForSite',
|
|
'Segments.getKnownSegmentsToArchiveAllSites' => 'getKnownSegmentsToArchiveAllSites',
|
|
'AssetManager.getJavaScriptFiles' => 'getJsFiles',
|
|
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
|
|
'Template.nextToCalendar' => 'getSegmentEditorHtml',
|
|
);
|
|
}
|
|
|
|
function getSegmentEditorHtml(&$out)
|
|
{
|
|
$controller = new Controller();
|
|
$out .= $controller->getSelector();
|
|
}
|
|
|
|
public function getKnownSegmentsToArchiveAllSites(&$segments)
|
|
{
|
|
$this->getKnownSegmentsToArchiveForSite($segments, $idSite = false);
|
|
}
|
|
|
|
/**
|
|
* Adds the pre-processed segments to the list of Segments.
|
|
* Used by CronArchive, ArchiveProcessor\Rules, etc.
|
|
*
|
|
* @param $segments
|
|
* @param $idSite
|
|
*/
|
|
public function getKnownSegmentsToArchiveForSite(&$segments, $idSite)
|
|
{
|
|
$model = new Model();
|
|
$segmentToAutoArchive = $model->getSegmentsToAutoArchive($idSite);
|
|
foreach ($segmentToAutoArchive as $segmentInfo) {
|
|
$segments[] = $segmentInfo['definition'];
|
|
}
|
|
$segments = array_unique($segments);
|
|
}
|
|
|
|
public function install()
|
|
{
|
|
$segmentTable = "`idsegment` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`definition` TEXT NOT NULL,
|
|
`login` VARCHAR(100) NOT NULL,
|
|
`enable_all_users` tinyint(4) NOT NULL default 0,
|
|
`enable_only_idsite` INTEGER(11) NULL,
|
|
`auto_archive` tinyint(4) NOT NULL default 0,
|
|
`ts_created` TIMESTAMP NULL,
|
|
`ts_last_edit` TIMESTAMP NULL,
|
|
`deleted` tinyint(4) NOT NULL default 0,
|
|
PRIMARY KEY (`idsegment`)";
|
|
|
|
DbHelper::createTable('segment', $segmentTable);
|
|
}
|
|
|
|
public function getJsFiles(&$jsFiles)
|
|
{
|
|
$jsFiles[] = "plugins/SegmentEditor/javascripts/Segmentation.js";
|
|
}
|
|
|
|
public function getStylesheetFiles(&$stylesheets)
|
|
{
|
|
$stylesheets[] = "plugins/SegmentEditor/stylesheets/segmentation.less";
|
|
}
|
|
}
|