funi 様
ページネ―ションの都合もあるので、テンプレートだけで処理するのは無駄が多いです。
コントローラでビュー変数の$viewDblogsに設定されている配列をあらかじめフィルタリングするのが良いでしょう。
1. lib/Baser/Controller/DashboardController.phpをapp/Controller/DashboardController.phpにコピー
2. 下記2つのメソッドを上書きし、それら2つから共通で利用する1つのメソッドを追加
※ユーザーグループ名の設定は適宜調整してください。
/**
* [ADMIN] 管理者ダッシュボードページにajaxでデータを取得する
*
* @return void
* @access public
*/
public function admin_ajax_dblog_index() {
$default = array('named' => array('num' => $this->siteConfigs['admin_list_num']));
$this->setViewConditions('Dblog', array('default' => $default, 'action' => 'admin_index'));
$this->set('viewDblogs', $this->getAllowedDblogs());
}
/**
* [ADMIN] 管理者ダッシュボードページを表示する
*
* @return void
* @access public
*/
public function admin_index() {
$this->pageTitle = '管理者ダッシュボード';
$default = array('named' => array('num' => $this->siteConfigs['admin_list_num']));
$this->setViewConditions('Dblog', array('default' => $default));
$this->set('viewDblogs', $this->getAllowedDblogs());
$publishedPages = $this->Page->find('count', array('conditions' => array('Page.status' => true)));
$unpublishedPages = $this->Page->find('count', array('conditions' => array('Page.status' => false)));
$totalPages = $publishedPages + $unpublishedPages;
$this->set(compact('publishedPages', 'unpublishedPages', 'totalPages'));
$this->help = 'dashboard_index';
}
/**
* ユーザーグループに応じて閲覧が許される最近の動きを取得
*
* @return array
*/
protected function getAllowedDblogs() {
//ユーザグループ同士の閲覧権限を設定
$allowedGroups = array(
'admins' => array('admins', 'operators', 'editors', 'users'),
'operators' => array('operators', 'editors', 'users'),
'editors' => array('editors', 'users'),
'users' => array('users')
);
//ログインしているユーザのグループ名を取得
$user = $this->BcAuth->user();
$groupName = ($user['UserGroup']['name']);
$this->paginate = array(
'fields' => '*',
'conditions' => array('UserGroup.name' => $allowedGroups[$groupName]),
'joins' => array(
array(
'table' => 'user_groups',
'alias' => 'UserGroup',
'conditions' => 'UserGroup.id = User.user_group_id',
)
),
'order' => array('Dblog.created '=> 'DESC', 'Dblog.id' => 'DESC'),
'limit' => $this->passedArgs['num']
);
return $this->paginate('Dblog');
}