private function register_link_encoders() {
        global $LINKS_ENCODERS_CACHE;
        // If encoder is linked, then return cached encoder.
        if (!empty($LINKS_ENCODERS_CACHE)) {
            return $LINKS_ENCODERS_CACHE;
        }

        $encoders = array();

        // Add the course encoder
        $encoders['backup_course_task'] = 'encode_content_links';

        // Add the module ones. Each module supporting moodle2 backups MUST have it
        $mods = core_component::get_plugin_list('mod');
        foreach ($mods as $mod => $moddir) {
            if (plugin_supports('mod', $mod, FEATURE_BACKUP_MOODLE2) && class_exists('backup_' . $mod . '_activity_task')) {
                $encoders['backup_' . $mod . '_activity_task'] = 'encode_content_links';
            }
        }

        // Add the block encoders
        $blocks = core_component::get_plugin_list('block');
        foreach ($blocks as $block => $blockdir) {
            if (class_exists('backup_' . $block . '_block_task')) {
                $encoders['backup_' . $block . '_block_task'] = 'encode_content_links';
            }
        }

        // Add the course format encodes
        // TODO: Same than blocks, need to know how courseformats are going to handle backup
        //       (1.9 was based in backuplib function, see code)

        // Add local encodes
        // TODO: Any interest? 1.9 never had that.

        $LINKS_ENCODERS_CACHE = $encoders;
        return $encoders;
    }