- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
<?php
/* {{{ index */
function creative_stat_default()
{
$dtime = urldecode(get_param('dtime', date('d.m.Y-d.m.Y')));
list($begin_t, $end_t) = convert_date_calendar($dtime);
$user = User::get_instance();
$DB = DbSimple::getDb();
$creatives_ids = $user->get_users_ids_by_roles(array('creative'));
// user names
$sql = "
SELECT user_id AS ARRAY_KEY, {$user->sql_case_names} as name
FROM users
WHERE user_id IN (?a)";
$user_names = $DB->select($sql, $creatives_ids);
// tasks all
$sql = "
SELECT to_user_id AS ARRAY_KEY, count(task_id) as tasks_all
FROM creative_tasks
WHERE to_user_id IN (?a) AND dtime BETWEEN ?d AND ?d
GROUP BY to_user_id
";
$tasks = $DB->select($sql, $creatives_ids, $begin_t, $end_t);
// tasks done
$sql = "
SELECT to_user_id AS ARRAY_KEY, count(task_id) as tasks_done
FROM creative_tasks
WHERE to_user_id IN (?a) AND dtime BETWEEN ?d AND ?d AND status_id = ?d
GROUP BY to_user_id
";
$tasks_done = $DB->select($sql, $creatives_ids, $begin_t, $end_t, GOODS_STATUS_ACTIVE);
// goods all
$sql = "
SELECT creatives_id AS ARRAY_KEY, count(good_id) as goods_all
FROM goods
WHERE creatives_id IN (?a) AND date_create BETWEEN ?d AND ?d
GROUP BY creatives_id
";
$goods_all = $DB->select($sql, $creatives_ids, $begin_t, $end_t);
// goods active
$sql = "
SELECT creatives_id AS ARRAY_KEY, count(good_id) as goods_active
FROM goods
WHERE creatives_id IN (?a) AND date_create BETWEEN ?d AND ?d AND status_id = ?d
GROUP BY creatives_id
";
$goods_active = $DB->select($sql, $creatives_ids, $begin_t, $end_t, GOODS_STATUS_ACTIVE);
foreach($creatives_ids as $id) {
$stat[$id] = array_merge(
$user_names[$id],
isset($tasks[$id]) ? $tasks[$id] : array('tasks_all' => 0),
isset($tasks_done[$id]) ? $tasks_done[$id] : array('tasks_done' => 0),
array(
'tasks_not_ready' => (isset($tasks[$id]['tasks_all']) ? $tasks[$id]['tasks_all'] : 0) -
(isset($tasks_done[$id]['tasks_done']) ? $tasks_done[$id]['tasks_done'] : 0)),
isset($goods_all[$id]) ? $goods_all[$id] : array('goods_all' => 0),
isset($goods_active[$id]) ? $goods_active[$id] : array('goods_active' => 0)
);
}
render_tpl('creative/stat/index', array(
'header' => 'Статистика креатива',
'dtime' => $dtime,
'stat' => $stat
), 'creative#stat');
}
/* }}} */
Собираю статистику. Каждый запрос возвращает массив с ключем = id пользователя, дальше это все клеится в один массив для отображения в табличке.