UserGroup::copy PHP Method

copy() public method

ユーザーグループデータをコピーする
public copy ( integer $id, array $data = [], boolean $recursive = true ) : mixed
$id integer ユーザーグループID
$data array DBに挿入するデータ
$recursive boolean 関連したPermissionもcopyをするかしないか
return mixed UserGroup Or false
    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;
            }
        }
    }