fix: Moved lookup function from controller to model and fixed some other issues

- That function has no reason not to be in a model
- Removed invalid contain
- Simple lookup against the users table is more efficient
pull/1436/head
iglocska 2016-08-13 23:30:31 +02:00
parent 1d5b7185ff
commit c94140bc9a
2 changed files with 18 additions and 20 deletions

View File

@ -42,7 +42,7 @@ class OrganisationsController extends AppController {
'conditions' => $conditions,
'recursive' => -1,
);
$usersPerOrg = $this->getMembersCount();
$usersPerOrg = $this->User->getMembersCount();
$orgs = $this->paginate();
if ($this->_isSiteAdmin()) {
$this->loadModel('User');
@ -238,23 +238,4 @@ class OrganisationsController extends AppController {
$this->render('ajax/merge');
}
}
public function getMembersCount() {
// for Organizations List
$fields = array('org_id', 'count(User.id) as `num_members`');
$params = array(
'fields' => $fields,
'recursive' => -1,
'contain' => array('Users'),
'group' => array('org_id'),
'order' => array('org_id'),
);
$orgs = $this->User->find('all', $params);
$usersPerOrg = [];
foreach ($orgs as $key => $value){
$usersPerOrg[$value['User']['org_id']] = $value[0]['num_members'];
}
return $usersPerOrg;
}
}

View File

@ -915,4 +915,21 @@ class User extends AppModel {
}
return $fields;
}
public function getMembersCount() {
// for Organizations List
$fields = array('org_id', 'count(User.id) as `num_members`');
$params = array(
'fields' => $fields,
'recursive' => -1,
'group' => array('org_id'),
'order' => array('org_id'),
);
$orgs = $this->find('all', $params);
$usersPerOrg = [];
foreach ($orgs as $key => $value){
$usersPerOrg[$value['User']['org_id']] = $value[0]['num_members'];
}
return $usersPerOrg;
}
}