function getModAndParentNamesWithSharedSupport($fhir, &$displayname, &$parent)
{
    // PUT IN HERE YOUR SHARED FOLDER PREFIXES
    $shared_prefix = ["#Users", "#Public"];
    $serverdelimiter = "/";
    if (!isset($displayname) || strlen($displayname) == 0) {
        if (count($fhir) > 1) {
            foreach ($shared_prefix as $prefix) {
                if (strcasecmp($fhir[0], $prefix) == 0) {
                    printf("Found shared prefix\n");
                    // Remove first element, it's the shared prefix
                    array_shift($fhir);
                    $displayname = "SHARED " . $fhir[count($fhir) - 1];
                    $parent = implode($serverdelimiter, $fhir);
                    return;
                }
            }
        }
    }
    printf("displayname is: %s\n", $displayname);
    // if mod is already set add the previous part to it as it might be a folder which has
    // delimiter in its name
    $displayname = isset($displayname) && strlen($displayname) > 0 ? $displayname = array_pop($fhir) . $serverdelimiter . $displayname : array_pop($fhir);
    $parent = implode($serverdelimiter, $fhir);
    printf("displayname after is: %s\n", $displayname);
    if (count($fhir) == 1 || checkIfIMAPFolder($parent)) {
        return;
    }
    //recursion magic
    getModAndParentNames($fhir, $displayname, $parent);
}
function GetFolder($imapid)
{
    $folder = array();
    // explode hierarchy
    $fhir = explode(getServerDelimiter(), $imapid);
    if (strcasecmp($imapid, create_name_folder(IMAP_FOLDER_INBOX)) == 0) {
        $folder["parentid"] = "0";
        $folder["displayname"] = "Inbox";
        $folder["type"] = "SYNC_FOLDER_TYPE_INBOX";
    } else {
        if (strcasecmp($imapid, create_name_folder(IMAP_FOLDER_DRAFT)) == 0) {
            $folder["parentid"] = "0";
            $folder["displayname"] = "Drafts";
            $folder["type"] = "SYNC_FOLDER_TYPE_DRAFTS";
        } else {
            if (strcasecmp($imapid, create_name_folder(IMAP_FOLDER_SENT)) == 0) {
                $folder["parentid"] = "0";
                $folder["displayname"] = "Sent";
                $folder["type"] = "SYNC_FOLDER_TYPE_SENTMAIL";
            } else {
                if (strcasecmp($imapid, create_name_folder(IMAP_FOLDER_TRASH)) == 0) {
                    $folder["parentid"] = "0";
                    $folder["displayname"] = "Trash";
                    $folder["type"] = "SYNC_FOLDER_TYPE_WASTEBASKET";
                } else {
                    if (defined('IMAP_FOLDER_PREFIX') && strlen(IMAP_FOLDER_PREFIX) > 0) {
                        if (strcasecmp($fhir[0], IMAP_FOLDER_PREFIX) == 0) {
                            // Discard prefix
                            array_shift($fhir);
                        } else {
                            printf("GetFolder('%s'): '%s'; using server delimiter '%s', first part '%s' is not equal to the prefix defined '%s'. Something is wrong with your config.\n", $id, $imapid, getServerDelimiter(), $fhir[0], IMAP_FOLDER_PREFIX);
                        }
                    }
                    if (count($fhir) == 1) {
                        $folder["displayname"] = $fhir[0];
                        $folder["parentid"] = "0";
                    } else {
                        getModAndParentNames($fhir, $folder["displayname"], $imapparent);
                        $folder["displayname"] = $folder["displayname"];
                        if ($imapparent === null) {
                            printf("GetFolder('%s'): '%s'; we didn't found a valid parent name for the folder, but we should... contact the developers for further info\n", $id, $imapid);
                            $folder["parentid"] = "0";
                            // We put the folder as root folder, so we see it
                        } else {
                            $folder["parentid"] = $imapparent;
                        }
                    }
                    $folder["type"] = "SYNC_FOLDER_TYPE_USER_MAIL";
                }
            }
        }
    }
    //     print_r($folder);
}