<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_alignak_configuration(self, section=SECTION_CONFIGURATION, legacy_cfg=False, macros=False):
 """ Get the Alignak configuration parameters. All the variables included in the SECTION_CONFIGURATION section except the variables starting with 'cfg' and the macros. If `lecagy_cfg` is True, this function only returns the variables included in the SECTION_CONFIGURATION section except the variables starting with 'cfg' If `macros` is True, this function only returns the variables included in the SECTION_CONFIGURATION section that are considered as macros :param section: name of the sectio nto search for :type section: str :param legacy_cfg: only get the legacy cfg declarations :type legacy_cfg: bool :param macros: only get the macros declarations :type macros: bool :return: a dict containing the Alignak configuration parameters """

        configuration = self._search_sections(section)
        if section not in configuration:
            return []
        for prop, _ in list(configuration[section].items()):
            # Only legacy configuration items
            if legacy_cfg:
                if not prop.startswith('cfg'):
                    configuration[section].pop(prop)
                continue
            # Only macro definitions
            if macros:
                if not prop.startswith('_') and not prop.startswith('$'):
                    configuration[section].pop(prop)
                continue
            # All values except legacy configuration and macros
            if prop.startswith('cfg') or prop.startswith('_') or prop.startswith('$'):
                configuration[section].pop(prop)

        return configuration[section]