157 lines
5.9 KiB
PHP
157 lines
5.9 KiB
PHP
<?php
|
||
|
||
OLAP::$sources = array(
|
||
'mediawiki_history' => array(
|
||
'id' => 'mediawiki_history',
|
||
'name' => 'Ревизии MediaWiki',
|
||
'tables' => array('r' => 'revision'),
|
||
'fields' => 't.rev_timestamp',
|
||
'where' => array(),
|
||
'fielddescs' => array(
|
||
'rev_timestamp' => array(
|
||
'name' => 'Время',
|
||
'le_ge' => true,
|
||
'is_time' => true,
|
||
'format' => TS_MW,
|
||
),
|
||
),
|
||
),
|
||
'v2tags' => array(
|
||
'id' => 'v2tags',
|
||
'name' => 'VitaphotoV2, статистика по тегам',
|
||
'tables' => array('t' => 'stats_tag_all'),
|
||
'fields' => 't.ts, t.tag',
|
||
'where' => array(),
|
||
'fielddescs' => array(
|
||
'ts' => array(
|
||
'name' => 'Время',
|
||
'le_ge' => true,
|
||
'is_time' => true,
|
||
'format' => TS_UNIX,
|
||
),
|
||
'tag' => array(
|
||
'name' => 'Тег',
|
||
'options' => function($olap)
|
||
{
|
||
return $olap->mysql()->select('tags', 'id, name', array('type' => 0));
|
||
}
|
||
),
|
||
),
|
||
),
|
||
'chk' => array(
|
||
'id' => 'chk',
|
||
'db' => array('chk', 'localhost', 'chk', 'chk'),
|
||
'name' => 'Чеки', // date, price, seller, comment, count, each
|
||
'tables' => array('t' => 'chk'),
|
||
'fields' => 't.date, t.price, t.seller, t.comment, t.count, t.each',
|
||
'where' => array(),
|
||
'fielddescs' => array(
|
||
'date' => array(
|
||
'name' => 'Дата',
|
||
'le_ge' => true,
|
||
'is_time' => true,
|
||
'format' => TS_DB,
|
||
),
|
||
'price' => array(
|
||
'name' => 'Цена',
|
||
'le_ge' => true,
|
||
),
|
||
'seller' => array(
|
||
'name' => 'Где',
|
||
),
|
||
'comment' => array(
|
||
'name' => 'Комментарий',
|
||
),
|
||
'count' => array(
|
||
'name' => 'Количество',
|
||
),
|
||
'each' => array(
|
||
'name' => 'Цена за каждый',
|
||
'sql' => '`each`',
|
||
),
|
||
),
|
||
),
|
||
'bugzilla' => array(
|
||
'id' => 'bugzilla',
|
||
'name' => 'Время Bugzilla',
|
||
'tables' => array(
|
||
't' => 'bugs3.longdescs',
|
||
'p' => [ 'INNER', 'bugs3.profiles', [ 'p.userid=t.who' ] ],
|
||
'b' => [ 'INNER', 'bugs3.bugs', [ 'b.bug_id=t.bug_id' ] ],
|
||
'pr' => [ 'INNER', 'bugs3.products', [ 'pr.id=b.product_id' ] ],
|
||
'c' => [ 'INNER', 'bugs3.components', [ 'c.id=b.component_id' ] ],
|
||
'bt' => [ 'LEFT', 'bugs3.cf_bug_type', [ 'bt.id=b.cf_bug_type' ] ],
|
||
),
|
||
'fields' => 'p.login_name, t.bug_when, t.work_time',
|
||
'where' => array(
|
||
'p.login_name like "%@custis.ru"',
|
||
),
|
||
'fielddescs' => array(
|
||
'group' => array(
|
||
'name' => 'Группа',
|
||
'join' => [
|
||
'ug' => [ 'INNER', 'bugs3.user_group_map', [ 'ug.user_id=t.who', 'ug.isbless=0' ] ],
|
||
'g' => [ 'INNER', 'bugs3.groups', [ 'g.id=ug.group_id' ] ],
|
||
],
|
||
'sql' => 'g.id',
|
||
'options' => function($olap)
|
||
{
|
||
return $olap->mysql()->select('bugs3.groups', 'id, name', array('isbuggroup=1'), array('ORDER BY' => 'name'));
|
||
}
|
||
),
|
||
'who' => array(
|
||
'name' => 'Логин',
|
||
'sql' => 'p.login_name',
|
||
/* 'options' => function($olap)
|
||
{
|
||
return $olap->mysql()->select('bugs3.profiles', 'userid id, login_name name', array('login_name like "%@custis.ru" and realname not like \'Группа%\''));
|
||
}*/
|
||
),
|
||
'bug_when' => array(
|
||
'name' => 'Момент времени',
|
||
'le_ge' => true,
|
||
'is_time' => true,
|
||
'format' => TS_DB,
|
||
),
|
||
'work_time' => array(
|
||
'name' => 'Часы',
|
||
'le_ge' => true,
|
||
),
|
||
'bug_id' => array(
|
||
'name' => 'ID бага',
|
||
'sql' => 't.bug_id',
|
||
'le_ge' => true,
|
||
),
|
||
'product' => array(
|
||
'name' => 'Продукт',
|
||
'sql' => 'pr.name',
|
||
),
|
||
'component' => array(
|
||
'name' => 'Компонент',
|
||
'sql' => 'c.name',
|
||
),
|
||
'cf_bug_type' => array(
|
||
'name' => 'Тип бага',
|
||
'sql' => 'bt.value',
|
||
),
|
||
'da_type' => array(
|
||
'name' => 'Время ДА',
|
||
'sql' => function($olap)
|
||
{
|
||
$arch_product = $olap->mysql()->select('bugs3.products', 'id', [ 'name' => '-Arch_Other' ], NULL, MS_VALUE);
|
||
$arch_components = $olap->mysql()->select('bugs3.components', 'id', [ 'name LIKE ?' => 'arch%' ], NULL, MS_COL);
|
||
$arch_bug_types = $olap->mysql()->select('bugs3.cf_bug_type', 'id', [ 'value LIKE ?' => 'arch%' ], NULL, MS_COL);
|
||
return '(CASE'.
|
||
($arch_product ? ' WHEN b.product_id='.$arch_product.' THEN \'ДА\'' : '').
|
||
($arch_components || $arch_bug_types ? ' WHEN '.
|
||
($arch_components ? 'b.component_id IN ('.implode(',', $arch_components).')' : '').
|
||
($arch_components && $arch_bug_types ? ' OR ' : '').
|
||
($arch_bug_types ? 'b.cf_bug_type IN ('.implode(',', $arch_bug_types).')' : '').
|
||
' THEN \'Арх\'' : '').
|
||
' ELSE \'Другое\' END)';
|
||
}
|
||
),
|
||
),
|
||
),
|
||
);
|