@@ -61,28 +61,46 @@ public function report($user, $from, $to, $filterProjectId, $filterClientId, $fi
61
61
62
62
}
63
63
if (($ groupOn1 != 'name ' ) && ($ groupOn2 != 'name ' )){
64
- $ selectFields [] = 'MIN(wi.name) as name ' ;
64
+ if ($ this ->dbengine != 'MYSQL ' ) {
65
+ $ selectFields [] = '\'* \' as name ' ;
66
+ } else {
67
+ $ selectFields [] = 'CASE WHEN CHAR_LENGTH(group_concat(distinct wi.name)) > 40 THEN CONCAT(SUBSTRING(group_concat(distinct wi.name), 1, 40), "...") ELSE group_concat(distinct wi.name) END as name ' ;
68
+ }
69
+ //$selectFields[] = 'group_concat(distinct wi.name) as name';
65
70
} else {
66
71
$ selectFields [] = 'wi.name as name ' ;
67
72
}
68
73
if (($ groupOn1 != 'project ' ) && ($ groupOn2 != 'project ' )){
69
- $ selectFields [] = 'MIN(wi.project_id) as "projectId" ' ;
70
- $ selectFields [] = 'MIN(p.name) as project ' ;
74
+ $ selectFields [] = '\'* \' as "projectId" ' ;
75
+ if ($ this ->dbengine != 'MYSQL ' ) {
76
+ $ selectFields [] = 'string_agg(distinct p.name, \', \') as project ' ;
77
+ } else {
78
+ $ selectFields [] = 'group_concat(distinct p.name) as project ' ;
79
+ }
71
80
} else {
72
- $ selectFields [] = 'MIN(wi.project_id) as "projectId" ' ;
81
+ $ selectFields [] = '\' * \' as "projectId" ' ;
73
82
$ selectFields [] = 'p.name as project ' ;
74
83
}
75
84
76
85
if (($ groupOn1 != 'client ' ) && ($ groupOn2 != 'client ' )){
77
- $ selectFields [] = 'MIN(c.id) as "clientId" ' ;
78
- $ selectFields [] = 'MIN(c.name) as client ' ;
86
+ $ selectFields [] = '\'* \' as "clientId" ' ;
87
+ if ($ this ->dbengine != 'MYSQL ' ) {
88
+ $ selectFields [] = 'string_agg(distinct c.name, \', \') as client ' ;
89
+ } else {
90
+ $ selectFields [] = 'group_concat(distinct c.name) as client ' ;
91
+ }
92
+
79
93
} else {
80
- $ selectFields [] = 'MIN(c.id) as "clientId" ' ;
94
+ $ selectFields [] = '\' * \' as "clientId" ' ;
81
95
$ selectFields [] = 'c.name as client ' ;
82
96
}
83
97
84
98
if (($ groupOn1 != 'userUid ' ) && ($ groupOn2 != 'userUid ' )){
85
- $ selectFields [] = 'MIN(user_uid) as "userUid" ' ;
99
+ if ($ this ->dbengine != 'MYSQL ' ) {
100
+ $ selectFields [] = 'string_agg(distinct user_uid, \', \') as "userUid" ' ;
101
+ } else {
102
+ $ selectFields [] = 'group_concat(distinct user_uid) as "userUid" ' ;
103
+ }
86
104
87
105
} else {
88
106
$ selectFields [] = 'user_uid as "userUid" ' ;
@@ -124,10 +142,10 @@ public function report($user, $from, $to, $filterProjectId, $filterClientId, $fi
124
142
$ qm [] = '? ' ;
125
143
$ params [] = $ f ;
126
144
if ($ f == null ) {
127
- $ append = ' or p.client_id is null ' ;
145
+ $ append = ' or c.id is null ' ;
128
146
}
129
147
}
130
- $ filters [] = '(p.client_id in ( ' .implode (", " ,$ qm ).') ' .$ append .') ' ;
148
+ $ filters [] = '(c.id in ( ' .implode (", " ,$ qm ).') ' .$ append .') ' ;
131
149
}
132
150
if ( (!empty ($ user )) && (!$ admin ) ){
133
151
$ filters [] = "(user_uid = ?) " ;
@@ -177,6 +195,8 @@ public function report($user, $from, $to, $filterProjectId, $filterClientId, $fi
177
195
$ limit = 10000 ;
178
196
}
179
197
$ sql = 'SELECT ' .$ selectItems .' where ' .implode (" and " ,$ filters ).' ' .$ group . ' order by time desc ' ;
198
+ //var_dump($sql);
199
+ //var_dump($params);
180
200
return $ this ->findEntities ($ sql , $ params , $ limit , $ start );
181
201
}
182
202
0 commit comments