public function copy($id, $data = array(), $recursive = true)
{
if ($id) {
$data = $this->find('first', array('conditions' => array('UserGroup.id' => $id), 'recursive' => -1));
} else {
if (!empty($data['UserGroup']['id'])) {
$id = $data['UserGroup']['id'];
}
}
$data['UserGroup']['name'] .= '_copy';
$data['UserGroup']['title'] .= '_copy';
unset($data['UserGroup']['id']);
unset($data['UserGroup']['modified']);
unset($data['UserGroup']['created']);
$this->create($data);
$result = $this->save();
if ($result) {
$result['UserGroup']['id'] = $this->getInsertID();
if ($recursive) {
$permissions = $this->Permission->find('all', array('conditions' => array('Permission.user_group_id' => $id), 'order' => array('Permission.sort'), 'recursive' => -1));
if ($permissions) {
foreach ($permissions as $permission) {
$permission['Permission']['user_group_id'] = $result['UserGroup']['id'];
$this->Permission->copy(null, $permission);
}
}
}
return $result;
} else {
if (isset($this->validationErrors['name'])) {
return $this->copy(null, $data, $recursive);
} else {
return false;
}
}
}