/**
* 保存
*
* @param array $data 保存するデータの配列
* @param bool|array $validate 真偽値または配列
* 真偽値の場合はバリデーションするかを示す
* 配列の場合は下記のキーを含むことが可能:
*
* - validate: trueまたはfalseに設定してバリデーションを有効化・無効化する
* - fieldList: 保存を許すフィールドの配列
* - callbacks: falseに設定するとコールバックを無効にする. 'before' または 'after'
* に設定するとそれぞれのコールバックだけが有効になる
* - `counterCache`: Boolean to control updating of counter caches (if any)
*
* @param array $fieldList 保存を許すフィールドの配列
* @return bool
*/
public function save($data = null, $validate = true, $fieldList = array())
{
if (!$data) {
$data = $this->data;
} else {
$this->set($data);
}
if ($validate) {
if (!$this->validates()) {
return false;
}
}
if (isset($data['Theme'])) {
$data = $data['Theme'];
}
$path = WWW_ROOT . 'theme' . DS;
if ($path . $data['old_name'] != $path . $data['name']) {
if (!rename($path . $data['old_name'], $path . $data['name'])) {
return false;
}
}
$reader = new BcThemeConfigReader();
$data = array_merge($reader->read($data['name']), $data);
$reader->dump($data['name'], $data);
return true;
}