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)'; } ), ), ), );