Exemplo n.º 1
0
/** Translate the input date to imap date to local date display,
 * so the user can know if the date is wrong or illegal
 * @return string locally formatted date or error text
 */
function asearch_get_date_display(&$what)
{
    $what_parts = sqimap_asearch_parse_date($what);
    if (count($what_parts) == 4) {
        if (checkdate($what_parts[2], $what_parts[1], $what_parts[3])) {
            return date_intl(_("M j, Y"), mktime(0, 0, 0, $what_parts[2], $what_parts[1], $what_parts[3]));
        }
        //return $what_parts[1] . ' ' . getMonthName($what_parts[2]) . ' ' . $what_parts[3];
        return _("(Illegal date)");
    }
    return _("(Wrong date)");
}
Exemplo n.º 2
0
/**
 * Build one criteria sequence
 * @global array imap_asearch_opcodes
 * @param string $opcode search opcode
 * @param string $what opcode argument
 * @param string $charset search charset
 * @return string one full criteria sequence
 */
function sqimap_asearch_build_criteria($opcode, $what, $charset)
{
    global $imap_asearch_opcodes;
    $criteria = '';
    switch ($imap_asearch_opcodes[$opcode]) {
        default:
        case 'anum':
            $what = str_replace(' ', '', $what);
            $what = preg_replace('/[^0-9]+[^KMG]$/', '', strtoupper($what));
            if ($what != '') {
                switch (substr($what, -1)) {
                    case 'G':
                        $what = substr($what, 0, -1) << 30;
                        break;
                    case 'M':
                        $what = substr($what, 0, -1) << 20;
                        break;
                    case 'K':
                        $what = substr($what, 0, -1) << 10;
                        break;
                }
                $criteria = $opcode . ' ' . $what . ' ';
            }
            break;
        case '':
            //aflag
            $criteria = $opcode . ' ';
            break;
        case 'afield':
            /* HEADER field-name: field-body */
            preg_match('/^([^:]+):(.*)$/', $what, $what_parts);
            if (count($what_parts) == 3) {
                $criteria = $opcode . ' ' . sqimap_asearch_encode_string($what_parts[1], $charset) . ' ' . sqimap_asearch_encode_string($what_parts[2], $charset) . ' ';
            }
            break;
        case 'adate':
            $what_parts = sqimap_asearch_parse_date($what);
            if (isset($what_parts[0])) {
                $criteria = $opcode . ' ' . $what_parts[0] . ' ';
            }
            break;
        case 'akeyword':
        case 'astring':
            $criteria = $opcode . ' ' . sqimap_asearch_encode_string($what, $charset) . ' ';
            break;
        case 'asequence':
            $what = preg_replace('/[^0-9:()]+/', '', $what);
            if ($what != '') {
                $criteria = $opcode . ' ' . $what . ' ';
            }
            break;
    }
    return $criteria;
}