/** * エクスポート処理 * * @param Model $model 呼び出しもとのModel * @param array $options エクスポートのオプション * @param array $queryParams 絞り込みによる条件配列(リクエストデータ) * @return bool */ public function exportUsers(Model $model, $options = array(), $queryParams = array()) { App::uses('CsvFileWriter', 'Files.Utility'); $model->loadModels(['UserSearch' => 'Users.UserSearch']); $this->_bindModel($model, false); $header = $this->getCsvHeader($model); $defaultConditions = $model->UserSearch->cleanSearchFields($queryParams); $conditions = Hash::merge($defaultConditions, Hash::get($options, 'conditions', [])); $joins = $model->UserSearch->getSearchJoinTables(Hash::get($options, 'joins', array()), $conditions); $conditions = $model->UserSearch->getSearchConditions(Hash::get($options, 'conditions', [])); $userIds = $model->find('list', array('recursive' => -1, 'conditions' => $conditions, 'joins' => $joins, 'group' => 'User.id', 'limit' => self::MAX_LIMIT, 'order' => array('Role.id' => 'asc'))); $users = $model->find('all', array('fields' => array_keys($header), 'recursive' => 0, 'conditions' => array('User.id' => array_values($userIds)), 'order' => array('Role.id' => 'asc'))); $csvWriter = new CsvFileWriter(array('header' => $header)); if (!$users && !is_array($users)) { $csvWriter->close(); return false; } foreach ($users as $user) { $user = Hash::insert($user, 'User.password', ''); $csvWriter->addModelData($user); } $csvWriter->close(); return $csvWriter; }