public function addSite($groupId, $siteId, $allowChange = false)
    {
        $ret = false;

        $currentGroupId = (int)$this
            ->database
            ->query(
                "SELECT group_id FROM {ucms_site} WHERE id = :site",
                [':site' => $siteId]
            )
            ->fetchField()
        ;

        if (!$allowChange && $currentGroupId && $currentGroupId !== (int)$groupId) {
            throw new GroupMoveDisallowedException("site group change is not allowed");
        }

        if ($currentGroupId !== (int)$groupId) {
            $this
                ->database
                ->query(
                    "UPDATE {ucms_site} SET group_id = :group WHERE id = :site",
                    [':site' => $siteId, ':group' => $groupId]
                )
            ;

            $ret = true;
        }

        $this->touch($groupId);

        // @todo dispatch event

        return $ret;
    }