function bulkLongToDate($arr)
{
    foreach ($arr as $key => $value) {
        $arr[$key]['date'] = date(getDateString($value['date']));
    }
    return $arr;
}
Ejemplo n.º 2
0
function logToFile($filename, $msg)
{
    $fd = fopen($filename, "a");
    fwrite($fd, getDateString() . $_SERVER['REQUEST_METHOD'] . " " . $_SERVER['HTTP_X_FORWARDED_FOR'] . "\n");
    if (is_array($msg)) {
        foreach ($msg as $key => $val) {
            fwrite($fd, $key . ":" . $val . "\n");
        }
    }
    fclose($fd);
}
function sqimap_get_small_header_list($imap_stream, $msg_list)
{
    global $squirrelmail_language, $color, $data_dir, $username, $imap_server_type;
    global $uid_support, $allow_server_sort;
    /* Get the small headers for each message in $msg_list */
    $sid = sqimap_session_id($uid_support);
    $maxmsg = sizeof($msg_list);
    $msgs_str = sqimap_message_list_squisher($msg_list);
    $messages = array();
    $read_list = array();
    /*
     * We need to return the data in the same order as the caller supplied
     * in $msg_list, but IMAP servers are free to return responses in
     * whatever order they wish... So we need to re-sort manually
     */
    for ($i = 0; $i < sizeof($msg_list); $i++) {
        $id2index[$msg_list[$i]] = $i;
    }
    $internaldate = getPref($data_dir, $username, 'internal_date_sort');
    if ($internaldate) {
        $query = "{$sid} FETCH {$msgs_str} (FLAGS UID RFC822.SIZE INTERNALDATE BODY.PEEK[HEADER.FIELDS (Date To Cc From Subject X-Priority Content-Type)])\r\n";
    } else {
        $query = "{$sid} FETCH {$msgs_str} (FLAGS UID RFC822.SIZE BODY.PEEK[HEADER.FIELDS (Date To Cc From Subject X-Priority Content-Type)])\r\n";
    }
    fputs($imap_stream, $query);
    $readin_list = sqimap_read_data_list($imap_stream, $sid, false, $response, $message);
    $i = 0;
    foreach ($readin_list as $r) {
        if (!$uid_support) {
            if (!preg_match("/^\\*\\s+([0-9]+)\\s+FETCH/iAU", $r[0], $regs)) {
                set_up_language($squirrelmail_language);
                echo '<br><b><font color=$color[2]>' . _("ERROR : Could not complete request.") . '</b><br>' . _("Unknown response from IMAP server: ") . ' 1.' . htmlspecialchars($r[0]) . "</font><br>\n";
            } else {
                if (!isset($id2index[$regs[1]]) || !count($id2index[$regs[1]])) {
                    set_up_language($squirrelmail_language);
                    echo '<br><b><font color=$color[2]>' . _("ERROR : Could not complete request.") . '</b><br>' . _("Unknown message number in reply from server: ") . htmlspecialchars($regs[1]) . "</font><br>\n";
                } else {
                    $read_list[$id2index[$regs[1]]] = $r;
                }
            }
        } else {
            if (!preg_match("/^\\*\\s+([0-9]+)\\s+FETCH.*UID\\s+([0-9]+)\\s+/iAU", $r[0], $regs)) {
                set_up_language($squirrelmail_language);
                echo '<br><b><font color=$color[2]>' . _("ERROR : Could not complete request.") . '</b><br>' . _("Unknown response from IMAP server: ") . ' 1.' . htmlspecialchars($r[0]) . "</font><br>\n";
            } else {
                if (!isset($id2index[$regs[2]]) || !count($id2index[$regs[2]])) {
                    set_up_language($squirrelmail_language);
                    echo '<br><b><font color=$color[2]>' . _("ERROR : Could not complete request.") . '</b><br>' . _("Unknown message number in reply from server: ") . htmlspecialchars($regs[2]) . "</font><br>\n";
                } else {
                    $read_list[$id2index[$regs[2]]] = $r;
                    $unique_id = $regs[2];
                }
            }
        }
    }
    arsort($read_list);
    $patterns = array("/^To:(.*)\$/AUi", "/^From:(.*)\$/AUi", "/^X-Priority:(.*)\$/AUi", "/^Cc:(.*)\$/AUi", "/^Date:(.*)\$/AUi", "/^Subject:(.*)\$/AUi", "/^Content-Type:(.*)\$/AUi");
    $regpattern = '';
    for ($msgi = 0; $msgi < $maxmsg; $msgi++) {
        $subject = _("(no subject)");
        $from = _("Unknown Sender");
        $priority = 0;
        $messageid = '<>';
        $cc = $to = $date = $type[0] = $type[1] = $inrepto = '';
        $flag_seen = $flag_answered = $flag_deleted = $flag_flagged = false;
        $read = $read_list[$msgi];
        $prevline = false;
        foreach ($read as $read_part) {
            //unfold multi-line headers
            if ($prevline && $prevline[strlen($prevline) - 1] == "\n" && ($read_part[0] == ' ' || $read_part[0] == "\t")) {
                $read_part = substr($prevline, 0, -2) . preg_replace('/(\\t\\s+)/', ' ', $read_part);
            }
            $prevline = $read_part;
            if ($read_part[0] == '*') {
                if ($internaldate) {
                    if (preg_match("/^.+INTERNALDATE\\s+\"(.+)\".+/iUA", $read_part, $reg)) {
                        $tmpdate = trim($reg[1]);
                        $tmpdate = str_replace('  ', ' ', $tmpdate);
                        $tmpdate = explode(' ', $tmpdate);
                        $date = str_replace('-', ' ', $tmpdate[0]) . " " . $tmpdate[1] . ' ' . $tmpdate[2];
                    }
                }
                if (preg_match("/^.+RFC822.SIZE\\s+(\\d+).+/iA", $read_part, $reg)) {
                    $size = $reg[1];
                }
                if (preg_match("/^.+FLAGS\\s+\\((.*)\\).+/iUA", $read_part, $regs)) {
                    $flags = explode(' ', trim($regs[1]));
                    foreach ($flags as $flag) {
                        $flag = strtolower($flag);
                        if ($flag == '\\seen') {
                            $flag_seen = true;
                        } else {
                            if ($flag == '\\answered') {
                                $flag_answered = true;
                            } else {
                                if ($flag == '\\deleted') {
                                    $flag_deleted = true;
                                } else {
                                    if ($flag == '\\flagged') {
                                        $flag_flagged = true;
                                    }
                                }
                            }
                        }
                    }
                }
                if (preg_match("/^.+UID\\s+(\\d+).+/iA", $read_part, $reg)) {
                    $unique_id = $reg[1];
                }
            } else {
                $firstchar = strtoupper($read_part[0]);
                if ($firstchar == 'T') {
                    $regpattern = $patterns[0];
                    $id = 1;
                } else {
                    if ($firstchar == 'F') {
                        $regpattern = $patterns[1];
                        $id = 2;
                    } else {
                        if ($firstchar == 'X') {
                            $regpattern = $patterns[2];
                            $id = 3;
                        } else {
                            if ($firstchar == 'C') {
                                if (strtolower($read_part[1]) == 'c') {
                                    $regpattern = $patterns[3];
                                    $id = 4;
                                } else {
                                    if (strtolower($read_part[1]) == 'o') {
                                        $regpattern = $patterns[6];
                                        $id = 7;
                                    }
                                }
                            } else {
                                if ($firstchar == 'D' && !$internaldate) {
                                    $regpattern = $patterns[4];
                                    $id = 5;
                                } else {
                                    if ($firstchar == 'S') {
                                        $regpattern = $patterns[5];
                                        $id = 6;
                                    } else {
                                        $regpattern = '';
                                    }
                                }
                            }
                        }
                    }
                }
                if ($regpattern) {
                    if (preg_match($regpattern, $read_part, $regs)) {
                        switch ($id) {
                            case 1:
                                $to = trim($regs[1]);
                                break;
                            case 2:
                                $from = trim($regs[1]);
                                break;
                            case 3:
                                $priority = $regs[1];
                                break;
                            case 4:
                                $cc = trim($regs[1]);
                                break;
                            case 5:
                                $date = $regs[1];
                                break;
                            case 6:
                                $subject = trim($regs[1]);
                                if ($subject == "") {
                                    $subject = _("(no subject)");
                                }
                                break;
                            case 7:
                                $type = strtolower(trim($regs[1]));
                                if ($pos = strpos($type, ";")) {
                                    $type = substr($type, 0, $pos);
                                }
                                $type = explode("/", $type);
                                if (!is_array($type)) {
                                    $type[0] = 'text';
                                }
                                if (!isset($type[1])) {
                                    $type[1] = '';
                                }
                                break;
                            default:
                                break;
                        }
                    }
                }
            }
        }
        if (isset($date)) {
            $date = str_replace('  ', ' ', $date);
            $tmpdate = explode(' ', trim($date));
        } else {
            $tmpdate = $date = array('', '', '', '', '', '');
        }
        if ($uid_support) {
            $messages[$msgi]['ID'] = $unique_id;
        } else {
            $messages[$msgi]['ID'] = $msg_list[$msgi];
        }
        $messages[$msgi]['TIME_STAMP'] = getTimeStamp($tmpdate);
        $messages[$msgi]['DATE_STRING'] = getDateString($messages[$msgi]['TIME_STAMP']);
        $messages[$msgi]['FROM'] = parseAddress($from);
        $messages[$msgi]['SUBJECT'] = $subject;
        //        if (handleAsSent($mailbox)) {
        $messages[$msgi]['TO'] = parseAddress($to);
        //        }
        $messages[$msgi]['PRIORITY'] = $priority;
        $messages[$msgi]['CC'] = parseAddress($cc);
        $messages[$msgi]['SIZE'] = $size;
        $messages[$msgi]['TYPE0'] = $type[0];
        $messages[$msgi]['FLAG_DELETED'] = $flag_deleted;
        $messages[$msgi]['FLAG_ANSWERED'] = $flag_answered;
        $messages[$msgi]['FLAG_SEEN'] = $flag_seen;
        $messages[$msgi]['FLAG_FLAGGED'] = $flag_flagged;
        /* non server sort stuff */
        if (!$allow_server_sort) {
            $from = parseAddress($from);
            if ($from[0][1]) {
                $from = decodeHeader($from[0][1]);
            } else {
                $from = $from[0][0];
            }
            $messages[$msgi]['FROM-SORT'] = $from;
            $subject_sort = strtolower(decodeHeader($subject));
            if (preg_match("/^(vedr|sv|re|aw):\\s*(.*)\$/si", $subject_sort, $matches)) {
                $messages[$msgi]['SUBJECT-SORT'] = $matches[2];
            } else {
                $messages[$msgi]['SUBJECT-SORT'] = $subject_sort;
            }
        }
    }
    return $messages;
}
Ejemplo n.º 4
0
    return;
}
echo '<div class="ads_manager">
<table>';
foreach ($campaigns['data'] as $campaign) {
    $campaign_id = trim(sprintf("%20.0f", $campaign['campaign_id']));
    echo '<tr style="background-color:#aaa;">' . '<td>';
    if ($campaign['campaign_status'] == CampaignStatus::ACTIVE) {
        echo '<input type=button onclick="pauseCampaign(' . $campaign_id . ')" value="Pause">';
    } else {
        if ($campaign['campaign_status'] == CampaignStatus::PAUSED) {
            echo '<input type=button onclick="resumeCampaign(' . $campaign_id . ')" value="Resume">';
        }
    }
    echo '<input type=button onclick="deleteCampaign(' . $campaign_id . ')" value="Delete"></td>';
    echo '<td>Campaign ' . $campaign_id . '</td>' . '<td>Campaign Name: ' . $campaign['name'] . '</td>' . '<td>from ' . getDateString($campaign['start_time']) . ' ' . 'to ' . ($campaign['end_time'] ? getDateString($campaign['end_time']) : '') . '</td>' . '<td>Daily Budget: ' . (isset($campaign['daily_budget']) ? getMoneyString($campaign['daily_budget']) : 'N/A') . '</td>' . '<td>Lifetime Budget: ' . (isset($campaign['lifetime_budget']) ? getMoneyString($campaign['lifetime_budget']) : 'N/A') . '</td>' . '<td>Status: ' . getStatusString($campaign['campaign_status']) . '</td>';
    $stat = getCampaignStat($campaign_stats, $campaign_id);
    if ($stat) {
        $impressions = 0;
        $clicks = 0;
        $spend = 0;
        if ($stat) {
            $impressions = $stat['impressions'];
            $clicks = $stat['clicks'];
            $spend = $stat['spent'];
        }
        echo '<td>Impressions: ' . $impressions . ', ' . 'Clicks: ' . $clicks . ', ' . 'Cost: ' . getMoneyString($spend) . '</td>';
    }
    echo '</tr>';
    $adgroups = array();
    foreach ($all_adgroups['data'] as $adgroup) {
Ejemplo n.º 5
0
<?php

if (!array_key_exists("type", $_POST)) {
    return;
}
if (!array_key_exists("name", $_POST)) {
    return;
}
if (!array_key_exists("goal", $_POST)) {
    return;
}
$type = $_POST["type"];
if ($type != "add") {
    return;
}
//TODO: sanitize
$activityName = $_POST["name"];
$goalDuration = $_POST["goal"];
include_once 'auth/login.php';
list($userId, $timezone) = checkLogin();
include_once '../classes/db.php';
$db = new Db($userId, $timezone);
$result = $db->createActivity($activityName, $goalDuration);
$activities = $db->getActivities();
include_once '../util/util.php';
//Data for today
$dataForToday = $db->getData(getDateString(0));
echo json_encode(array("result" => $result, "activities" => $activities, "dataForToday" => $dataForToday));
/**
 * Displays message header row in messages list
 *
 * @param  array $aMsg contains all message related parameters
 * @return void
 */
function printMessageInfo($aMsg)
{
    // FIX ME, remove these globals as well by adding an array as argument for the user settings
    // specificly meant for header display
    global $checkall, $color, $default_use_priority, $message_highlight_list, $index_order, $truncate_sender, $email_address, $show_recipient_instead, $use_icons, $icon_theme;
    /* icons theming */
    $color_string = $color[4];
    // initialisation:
    $mailbox = $aMsg['MAILBOX'];
    $msg = $aMsg['HEADER'];
    $t = $aMsg['INDX'];
    $start_msg = $aMsg['PAGEOFFSET'];
    $last = $aMsg['LAST'];
    if (isset($aMsg['SEARCH']) && count($aMsg['SEARCH']) > 1) {
        $where = $aMsg['SEARCH'][0];
        $what = $aMsg['SEARCH'][1];
    } else {
        $where = false;
        $what = false;
    }
    $iIndent = $aMsg['INDENT'];
    $sSubject = isset($msg['SUBJECT']) && $msg['SUBJECT'] != '' ? $msg['SUBJECT'] : _("(no subject)");
    $sFrom = isset($msg['FROM']) ? $msg['FROM'] : _("Unknown sender");
    $sTo = isset($msg['TO']) ? $msg['TO'] : _("Unknown recipient");
    $sCc = isset($msg['CC']) ? $msg['CC'] : '';
    $aFlags = isset($msg['FLAGS']) ? $msg['FLAGS'] : array();
    $iPrio = isset($msg['PRIORITY']) ? $msg['PRIORITY'] : 3;
    $iSize = isset($msg['SIZE']) ? $msg['SIZE'] : 0;
    $sType0 = isset($msg['TYPE0']) ? $msg['TYPE0'] : 'text';
    $sType1 = isset($msg['TYPE1']) ? $msg['TYPE1'] : 'plain';
    if (isset($msg['INTERNALDATE'])) {
        $sDate = getDateString(getTimeStamp(explode(' ', $msg['INTERNALDATE'])));
    } else {
        $sDate = isset($msg['DATE']) ? getDateString(getTimeStamp(explode(' ', $msg['DATE']))) : '';
    }
    $iId = isset($msg['UID']) ? $msg['UID'] : false;
    if (!$iId) {
        return;
    }
    if ($GLOBALS['alt_index_colors']) {
        if (!($t % 2)) {
            if (!isset($color[12])) {
                $color[12] = '#EAEAEA';
            }
            $color_string = $color[12];
        }
    }
    $urlMailbox = urlencode($mailbox);
    // FIXME, foldertype should be set in right_main.php
    // in other words, handle as sent is obsoleted from now.
    // We replace that by providing an array to aMailbox with the to shown headers
    // that way we are free to show the user different layouts for different folders
    $bSentFolder = handleAsSent($mailbox);
    if (!$bSentFolder && $show_recipient_instead) {
        // If the From address is the same as $email_address, then handle as Sent
        $from_array = parseAddress($sFrom, 1);
        if (!isset($email_address)) {
            global $datadir, $username;
            $email_address = getPref($datadir, $username, 'email_address');
        }
        $bHandleAsSent = isset($from_array[0][0]) && $from_array[0][0] == $email_address;
    } else {
        $bHandleAsSent = $bSentFolder;
    }
    // If this is a Sent message, display To address instead of From
    if ($bHandleAsSent) {
        $sFrom = $sTo;
    }
    // Passing 1 below results in only 1 address being parsed, thus defeating the following code
    $sFrom = parseAddress($sFrom);
    /*
     * This is done in case you're looking into Sent folders,
     * because you can have multiple receivers.
     */
    $senderNames = $sFrom;
    $senderName = '';
    $senderAddress = '';
    if (sizeof($senderNames)) {
        foreach ($senderNames as $senderNames_part) {
            if ($senderName != '') {
                $senderName .= ', ';
                $senderAddress .= ', ';
            }
            $sender_address_part = htmlspecialchars($senderNames_part[0]);
            $sender_name_part = str_replace('&nbsp;', ' ', decodeHeader($senderNames_part[1]));
            if ($sender_name_part) {
                $senderName .= $sender_name_part;
                $senderAddress .= $sender_name_part . ' <' . $sender_address_part . '>';
            } else {
                $senderName .= $sender_address_part;
                $senderAddress .= $sender_address_part;
            }
        }
    }
    // If Sent, prefix with To: but only if not Sent folder
    if ($bHandleAsSent ^ $bSentFolder) {
        $senderName = _("To") . ': ' . $senderName;
        $senderAddress = _("To") . ': ' . $senderAddress;
    }
    // this is a column property which can apply to multiple columns. Do not use vars for one column
    // only. instead we should use something like this:
    // 1ed column $aMailbox['columns']['SUBJECT'] value: aray with properties ...
    // 2ed column $aMailbox['columns']['FROM'] value: aray with properties ...
    //            NB in case of the sentfolder this could be the TO field
    // properties array example:
    //      'truncate' => length (0 is no truncate)
    //      'prefix    => if (x in b then do that )
    if ($truncate_sender > 0) {
        $senderName = truncateWithEntities($senderName, $truncate_sender);
    }
    $flag = $flag_end = $bold = $bold_end = $fontstr = $fontstr_end = $italic = $italic_end = '';
    $bold = '<b>';
    $bold_end = '</b>';
    foreach ($aFlags as $sFlag => $value) {
        switch ($sFlag) {
            case '\\flagged':
                if ($value) {
                    $flag = "<font color=\"{$color['2']}\">";
                    $flag_end = '</font>';
                }
                break;
            case '\\seen':
                if ($value) {
                    $bold = '';
                    $bold_end = '';
                }
                break;
            case '\\deleted':
                if ($value) {
                    $fontstr = "<font color=\"{$color['9']}\">";
                    $fontstr_end = '</font>';
                }
                break;
        }
    }
    if ($bHandleAsSent) {
        $italic = '<i>';
        $italic_end = '</i>';
    }
    if ($where && $what) {
        $searchstr = '&amp;where=' . $where . '&amp;what=' . $what;
    } else {
        $searchstr = '';
    }
    /*
     *  Message highlight code
     */
    $matches = array('TO' => 'sTo', 'CC' => 'sCc', 'FROM' => 'sFrom', 'SUBJECT' => 'sSubject');
    if (is_array($message_highlight_list) && count($message_highlight_list)) {
        $sTo = parseAddress($sTo);
        $sCc = parseAddress($sCc);
        foreach ($message_highlight_list as $message_highlight_list_part) {
            if (trim($message_highlight_list_part['value']) != '') {
                $high_val = strtolower($message_highlight_list_part['value']);
                $match_type = strtoupper($message_highlight_list_part['match_type']);
                if ($match_type == 'TO_CC') {
                    $match = array('TO', 'CC');
                } else {
                    $match = array($match_type);
                }
                foreach ($match as $match_type) {
                    switch ($match_type) {
                        case 'TO':
                        case 'CC':
                        case 'FROM':
                            foreach (${$matches}[$match_type] as $address) {
                                $address[0] = decodeHeader($address[0], true, false);
                                $address[1] = decodeHeader($address[1], true, false);
                                if (strstr('^^' . strtolower($address[0]), $high_val) || strstr('^^' . strtolower($address[1]), $high_val)) {
                                    $hlt_color = $message_highlight_list_part['color'];
                                    break 4;
                                }
                            }
                            break;
                        default:
                            $headertest = strtolower(decodeHeader(${$matches}[$match_type], true, false));
                            if (strstr('^^' . $headertest, $high_val)) {
                                $hlt_color = $message_highlight_list_part['color'];
                                break 3;
                            }
                            break;
                    }
                }
            }
        }
    }
    /* end Message highlight code */
    if (!isset($hlt_color)) {
        $hlt_color = $color_string;
    }
    $col = 0;
    $sSubject = str_replace('&nbsp;', ' ', decodeHeader($sSubject));
    $subject = processSubject($sSubject, $iIndent);
    echo html_tag('tr', '', '', '', 'valign="top"') . "\n";
    if (sizeof($index_order)) {
        foreach ($index_order as $index_order_part) {
            switch ($index_order_part) {
                case 1:
                    /* checkbox */
                    echo html_tag('td', addCheckBox("msg[{$t}]", $checkall, $iId), 'center', $hlt_color);
                    break;
                case 2:
                    /* from */
                    if ($senderAddress != $senderName) {
                        $senderAddress = strtr($senderAddress, array_flip(get_html_translation_table(HTML_SPECIALCHARS)));
                        $title = ' title="' . str_replace('"', "''", $senderAddress) . '"';
                    } else {
                        $title = '';
                    }
                    echo html_tag('td', $italic . $bold . $flag . $fontstr . $senderName . $fontstr_end . $flag_end . $bold_end . $italic_end, 'left', $hlt_color, $title);
                    break;
                case 3:
                    /* date */
                    if ($sDate == '') {
                        $sDate = _("Unknown date");
                    }
                    echo html_tag('td', $bold . $flag . $fontstr . $sDate . $fontstr_end . $flag_end . $bold_end, 'center', $hlt_color, 'nowrap');
                    break;
                case 4:
                    /* subject */
                    $td_str = $bold;
                    if ($iIndent) {
                        $td_str .= str_repeat("&nbsp;&nbsp;&nbsp;&nbsp;", $iIndent);
                    }
                    $td_str .= '<a href="read_body.php?mailbox=' . $urlMailbox . '&amp;passed_id=' . $iId . '&amp;startMessage=' . $start_msg . $searchstr . '"';
                    $td_str .= ' ' . concat_hook_function('subject_link', array($start_msg, $searchstr));
                    if ($subject != $sSubject) {
                        $title = get_html_translation_table(HTML_SPECIALCHARS);
                        $title = array_flip($title);
                        $title = strtr($sSubject, $title);
                        $title = str_replace('"', "''", $title);
                        $td_str .= " title=\"{$title}\"";
                    }
                    $td_str .= ">{$flag}{$subject}{$flag_end}</a>{$bold_end}";
                    echo html_tag('td', $td_str, 'left', $hlt_color);
                    break;
                case 5:
                    /* flags */
                    // icon message markers
                    //
                    if ($use_icons && $icon_theme != 'none') {
                        $td_str = "<b><small>";
                        if (isset($aFlags['\\flagged']) && $aFlags['\\flagged'] == true) {
                            $td_str .= '<img src="' . SM_PATH . 'images/themes/' . $icon_theme . '/flagged.png" border="0" height="10" width="10" /> ';
                        }
                        if ($default_use_priority) {
                            if ($iPrio == 1 || $iPrio == 2) {
                                $td_str .= '<img src="' . SM_PATH . 'images/themes/' . $icon_theme . '/prio_high.png" border="0" height="10" width="5" /> ';
                            } else {
                                if ($iPrio == 5) {
                                    $td_str .= '<img src="' . SM_PATH . 'images/themes/' . $icon_theme . '/prio_low.png" border="0" height="10" width="5" /> ';
                                } else {
                                    $td_str .= '<img src="' . SM_PATH . 'images/themes/' . $icon_theme . '/transparent.png" border="0" width="5" /> ';
                                }
                            }
                        }
                        if ($sType1 == 'mixed') {
                            $td_str .= '<img src="' . SM_PATH . 'images/themes/' . $icon_theme . '/attach.png" border="0" height="10" width="6" />';
                        } else {
                            $td_str .= '<img src="' . SM_PATH . 'images/themes/' . $icon_theme . '/transparent.png" border="0" width="6" />';
                        }
                        $msg_icon = '';
                        if (!isset($aFlags['\\seen']) || $aFlags['\\seen'] == false) {
                            $msg_alt = '(' . _("New") . ')';
                            $msg_title = '(' . _("New") . ')';
                            $msg_icon .= SM_PATH . 'images/themes/' . $icon_theme . '/msg_new';
                        } else {
                            $msg_alt = '(' . _("Read") . ')';
                            $msg_title = '(' . _("Read") . ')';
                            $msg_icon .= SM_PATH . 'images/themes/' . $icon_theme . '/msg_read';
                        }
                        if (isset($aFlags['\\deleted']) && $aFlags['\\deleted'] == true) {
                            $msg_icon .= '_deleted';
                        }
                        if (isset($aFlags['\\answered']) && $aFlags['\\answered'] == true) {
                            $msg_alt = '(' . _("Answered") . ')';
                            $msg_title = '(' . _("Answered") . ')';
                            $msg_icon .= '_reply';
                        }
                        $td_str .= '<img src="' . $msg_icon . '.png" border="0" alt="' . $msg_alt . '" title="' . $msg_title . '" height="12" width="18" />';
                        $td_str .= '</small></b>';
                        echo html_tag('td', $td_str, 'right', $hlt_color, 'nowrap');
                    } else {
                        $stuff = false;
                        $td_str = "<b><small>";
                        if (isset($aFlags['\\answered']) && $aFlags['\\answered'] == true) {
                            $td_str .= _("A");
                            $stuff = true;
                        }
                        if ($sType1 == 'mixed') {
                            $td_str .= '+';
                            $stuff = true;
                        }
                        if ($default_use_priority) {
                            if ($iPrio == 1 || $iPrio == 2) {
                                $td_str .= "<font color=\"{$color['1']}\">!</font>";
                                $stuff = true;
                            }
                            if ($iPrio == 5) {
                                $td_str .= "<font color=\"{$color['8']}\">?</font>";
                                $stuff = true;
                            }
                        }
                        if (isset($aFlags['\\deleted']) && $aFlags['\\deleted'] == true) {
                            $td_str .= "<font color=\"{$color['1']}\">D</font>";
                            $stuff = true;
                        }
                        if (!$stuff) {
                            $td_str .= '&nbsp;';
                        }
                        $td_str .= '</small></b>';
                        echo html_tag('td', $td_str, 'center', $hlt_color, 'nowrap');
                    }
                    break;
                case 6:
                    /* size */
                    echo html_tag('td', $bold . $fontstr . show_readable_size($iSize) . $fontstr_end . $bold_end, 'right', $hlt_color);
                    break;
            }
            ++$col;
        }
    }
    /* html for separationlines between rows */
    if ($last) {
        echo '</tr>' . "\n";
    } else {
        echo '</tr>' . "\n" . '<tr><td colspan="' . $col . '" bgcolor="' . $color[0] . '" height="1"></td></tr>' . "\n";
    }
}
Ejemplo n.º 7
0
/**
 * Prepares the message headers for display inside a template. The links are calculated,
 * color for row highlighting is calculated and optionally the strings are truncated.
 *
 * @param array    $aMailbox (reference) mailbox retrieved from sqm_api_mailbox_select
 * @param array    $aProps properties
 * @return array   $aFormattedMessages array with message headers and format info
 * @since 1.5.1
 * @author Marc Groot Koerkamp
 */
function prepareMessageList(&$aMailbox, $aProps)
{
    /* Globalize link attributes so plugins can share in modifying them */
    global $link, $title, $target, $onclick, $link_extra, $preselected;
    /* retrieve the properties */
    $my_email_address = isset($aProps['email']) ? $aProps['email'] : false;
    $highlight_list = isset($aProps['config']['highlight_list']) ? $aProps['config']['highlight_list'] : false;
    $aColumnDesc = isset($aProps['columns']) ? $aProps['columns'] : false;
    $aExtraColumns = isset($aProps['extra_columns']) ? $aProps['extra_columns'] : array();
    $iAccount = isset($aProps['account']) ? (int) $aProps['account'] : 0;
    $sMailbox = isset($aProps['mailbox']) ? $aProps['mailbox'] : false;
    $sTargetModule = isset($aProps['module']) ? $aProps['module'] : 'read_body';
    /*
     * TODO 1, retrieve array with identity email addresses in order to match against to,cc and set a flag
     * $aFormattedMessages[$iUid]['match_identity'] = true
     * The template can show some image if there is a match.
     * TODO 2, makes sure the matching is done fast by doing a strpos call on the returned $value
     */
    /**
     * Only retrieve values for displayable columns
     */
    foreach ($aColumnDesc as $k => $v) {
        switch ($k) {
            case SQM_COL_FROM:
                $aCol[SQM_COL_FROM] = 'from';
                break;
            case SQM_COL_DATE:
                $aCol[SQM_COL_DATE] = 'date';
                break;
            case SQM_COL_SUBJ:
                $aCol[SQM_COL_SUBJ] = 'subject';
                break;
            case SQM_COL_FLAGS:
                $aCol[SQM_COL_FLAGS] = 'FLAGS';
                break;
            case SQM_COL_SIZE:
                $aCol[SQM_COL_SIZE] = 'SIZE';
                break;
            case SQM_COL_PRIO:
                $aCol[SQM_COL_PRIO] = 'x-priority';
                break;
            case SQM_COL_ATTACHMENT:
                $aCol[SQM_COL_ATTACHMENT] = 'content-type';
                break;
            case SQM_COL_INT_DATE:
                $aCol[SQM_COL_INT_DATE] = 'INTERNALDATE';
                break;
            case SQM_COL_TO:
                $aCol[SQM_COL_TO] = 'to';
                break;
            case SQM_COL_CC:
                $aCol[SQM_COL_CC] = 'cc';
                break;
            case SQM_COL_BCC:
                $aCol[SQM_COL_BCC] = 'bcc';
                break;
            default:
                break;
        }
    }
    $aExtraHighLightColumns = array();
    foreach ($aExtraColumns as $v) {
        switch ($v) {
            case SQM_COL_FROM:
                $aExtraHighLightColumns[] = 'from';
                break;
            case SQM_COL_SUBJ:
                $aExtraHighLightColumns[] = 'subject';
                break;
            case SQM_COL_TO:
                $aExtraHighLightColumns[] = 'to';
                break;
            case SQM_COL_CC:
                $aExtraHighLightColumns[] = 'cc';
                break;
            case SQM_COL_BCC:
                $aExtraHighLightColumns[] = 'bcc';
                break;
            default:
                break;
        }
    }
    $aFormattedMessages = array();
    $iSetIndx = $aMailbox['SETINDEX'];
    $aId = $aMailbox['UIDSET'][$iSetIndx];
    $aHeaders =& $aMailbox['MSG_HEADERS'];
    /* use a reference to avoid a copy.
       MSG_HEADERS can contain large amounts of data */
    $iOffset = $aMailbox['OFFSET'];
    $sort = $aMailbox['SORT'];
    $iPageOffset = $aMailbox['PAGEOFFSET'];
    $sMailbox = $aMailbox['NAME'];
    $sSearch = isset($aMailbox['SEARCH'][$aMailbox['SETINDEX']]) && $aMailbox['SEARCH'][$aMailbox['SETINDEX']] != 'ALL' ? $aMailbox['SEARCH'][$aMailbox['SETINDEX']] : false;
    $aSearch = $sSearch ? array('search.php', $aMailbox['SETINDEX']) : null;
    /* avoid improper usage */
    if ($sMailbox && isset($iAccount) && $sTargetModule) {
        $aInitQuery = array("account={$iAccount}", 'mailbox=' . urlencode($sMailbox));
    } else {
        $aInitQuery = false;
    }
    if ($aMailbox['SORT'] & SQSORT_THREAD) {
        $aIndentArray =& $aMailbox['THREAD_INDENT'][$aMailbox['SETINDEX']];
        $bThread = true;
    } else {
        $bThread = false;
    }
    /*
     * Retrieve value for checkbox column
     */
    if (!sqgetGlobalVar('checkall', $checkall, SQ_GET)) {
        $checkall = false;
    }
    /*
     * Loop through and display the info for each message.
     */
    $iEnd = $aMailbox['SHOWALL'][$iSetIndx] ? $aMailbox['EXISTS'] : $iOffset + $aMailbox['LIMIT'];
    for ($i = $iOffset, $t = 0; $i < $iEnd; ++$i) {
        if (isset($aId[$i])) {
            $bHighLight = false;
            $value = $title = $link = $target = $onclick = $link_extra = '';
            $aQuery = $aInitQuery !== false ? $aInitQuery : false;
            $aMsg = $aHeaders[$aId[$i]];
            if (isset($aSearch) && count($aSearch) > 1 && $aQuery) {
                $aQuery[] = "where=" . $aSearch[0];
                $aQuery[] = "what=" . $aSearch[1];
            }
            $iUid = isset($aMsg['UID']) ? $aMsg['UID'] : $aId[$i];
            if ($aQuery) {
                $aQuery[] = "passed_id={$aId[$i]}";
                $aQuery[] = "startMessage={$iPageOffset}";
            }
            foreach ($aCol as $k => $v) {
                $title = $link = $target = $onclick = $link_extra = '';
                $aColumns[$k] = array();
                $value = isset($aMsg[$v]) ? $aMsg[$v] : '';
                $sUnknown = _("Unknown recipient");
                switch ($k) {
                    case SQM_COL_FROM:
                        $sUnknown = _("Unknown sender");
                    case SQM_COL_TO:
                    case SQM_COL_CC:
                    case SQM_COL_BCC:
                        $sTmp = false;
                        if ($value) {
                            if ($highlight_list && !$bHighLight) {
                                $bHighLight = highlightMessage($aCol[$k], $value, $highlight_list, $aFormattedMessages[$iUid]);
                            }
                            $aAddressList = parseRFC822Address($value);
                            $sTmp = getAddressString($aAddressList, array('best' => true));
                            $title = $title_maybe = '';
                            foreach ($aAddressList as $aAddr) {
                                $sPersonal = isset($aAddr[SQM_ADDR_PERSONAL]) ? $aAddr[SQM_ADDR_PERSONAL] : '';
                                $sMailbox = isset($aAddr[SQM_ADDR_MAILBOX]) ? $aAddr[SQM_ADDR_MAILBOX] : '';
                                $sHost = isset($aAddr[SQM_ADDR_HOST]) ? $aAddr[SQM_ADDR_HOST] : '';
                                if ($sPersonal) {
                                    $title .= sm_encode_html_special_chars($sMailbox . '@' . $sHost) . ', ';
                                } else {
                                    // if $value gets truncated we need to add the addresses with no
                                    // personal name as well
                                    $title_maybe .= sm_encode_html_special_chars($sMailbox . '@' . $sHost) . ', ';
                                }
                            }
                            if ($title) {
                                $title = substr($title, 0, -2);
                                // strip ', ';
                            }
                            $sTmp = decodeHeader($sTmp);
                            if (isset($aColumnDesc[$k]['truncate']) && $aColumnDesc[$k]['truncate']) {
                                $sTrunc = sm_truncate_string($sTmp, $aColumnDesc[$k]['truncate'], '...', TRUE);
                                if ($sTrunc != $sTmp) {
                                    if (!$title) {
                                        $title = $sTmp;
                                    } else {
                                        if ($title_maybe) {
                                            $title = $title . ', ' . $title_maybe;
                                            $title = substr($title, 0, -2);
                                            // strip ', ';
                                        }
                                    }
                                }
                                $sTmp = $sTrunc;
                            }
                        }
                        $value = $sTmp ? substr($sTmp, 0, 6) == '&quot;' && substr($sTmp, -6) == '&quot;' ? substr(substr($sTmp, 0, -6), 6) : $sTmp : $sUnknown;
                        break;
                    case SQM_COL_SUBJ:
                        // subject is mime encoded, decode it.
                        // value is sanitized in decoding function.
                        // TODO, verify if it should be done before or after the highlighting
                        $value = decodeHeader($value);
                        if ($highlight_list && !$bHighLight) {
                            $bHighLight = highlightMessage('SUBJECT', $value, $highlight_list, $aFormattedMessages[$iUid]);
                        }
                        $iIndent = isset($aIndentArray[$aId[$i]]) ? $aIndentArray[$aId[$i]] : 0;
                        // FIXME: don't break 8bit symbols and html entities during truncation
                        if (isset($aColumnDesc[$k]['truncate']) && $aColumnDesc[$k]['truncate']) {
                            $sTmp = sm_truncate_string($value, $aColumnDesc[$k]['truncate'] - $iIndent, '...', TRUE);
                            // drop any double spaces since these will be displayed in the title
                            // Nah, it's nice to always have a roll-over
                            //$title = ($sTmp != $value) ? preg_replace('/\s{2,}/', ' ', $value) : '';
                            $title = preg_replace('/\\s{2,}/', ' ', $value);
                            $value = $sTmp;
                        }
                        /* generate the link to the message */
                        if ($aQuery) {
                            // TODO, $sTargetModule should be a query parameter so that we can use a single entrypoint
                            $link = $sTargetModule . '.php?' . implode('&amp;', $aQuery);
                            // see top of this function for which attributes are available
                            // in the global scope for plugin use (like $link, $target,
                            // $onclick, $link_extra, $title, and so forth)
                            // plugins are responsible for sharing nicely (such as for
                            // setting the target, etc)
                            $temp = array(&$iPageOffset, &$sSearch, &$aSearch, $aMsg);
                            do_hook('subject_link', $temp);
                        }
                        $value = trim($value) ? $value : _("(no subject)");
                        /* add thread indentation */
                        $aColumns[$k]['indent'] = $iIndent;
                        break;
                    case SQM_COL_SIZE:
                        $value = show_readable_size($value);
                        break;
                    case SQM_COL_DATE:
                    case SQM_COL_INT_DATE:
                        $value = getTimeStamp(explode(' ', trim($value)));
                        $title = getDateString($value, TRUE);
                        $value = getDateString($value);
                        break;
                    case SQM_COL_FLAGS:
                        $aFlagColumn = array('seen' => false, 'deleted' => false, 'answered' => false, 'forwarded' => false, 'flagged' => false, 'draft' => false);
                        if (!is_array($value)) {
                            $value = array();
                        }
                        foreach ($value as $sFlag => $v) {
                            switch ($sFlag) {
                                case '\\seen':
                                    $aFlagColumn['seen'] = true;
                                    break;
                                case '\\deleted':
                                    $aFlagColumn['deleted'] = true;
                                    break;
                                case '\\answered':
                                    $aFlagColumn['answered'] = true;
                                    break;
                                case '$forwarded':
                                    $aFlagColumn['forwarded'] = true;
                                    break;
                                case '\\flagged':
                                    $aFlagColumn['flagged'] = true;
                                    break;
                                case '\\draft':
                                    $aFlagColumn['draft'] = true;
                                    break;
                                default:
                                    break;
                            }
                        }
                        $value = $aFlagColumn;
                        break;
                    case SQM_COL_PRIO:
                        $value = $value ? (int) $value : 3;
                        break;
                    case SQM_COL_ATTACHMENT:
                        $value = is_array($value) && $value[0] == 'multipart' && $value[1] == 'mixed' ? true : false;
                        break;
                    case SQM_COL_CHECK:
                        $value = $checkall || in_array($iUid, $preselected);
                        break;
                    default:
                        break;
                }
                if ($title) {
                    $aColumns[$k]['title'] = $title;
                }
                if ($link) {
                    $aColumns[$k]['link'] = $link;
                }
                if ($link_extra) {
                    $aColumns[$k]['link_extra'] = $link_extra;
                }
                if ($onclick) {
                    $aColumns[$k]['onclick'] = $onclick;
                }
                if ($target) {
                    $aColumns[$k]['target'] = $target;
                }
                $aColumns[$k]['value'] = $value;
            }
            /* columns which will not be displayed but should be inspected
               because the highlight list contains rules with those columns */
            foreach ($aExtraHighLightColumns as $v) {
                if ($highlight_list && !$bHighLight && isset($aMsg[$v])) {
                    $bHighLight = highlightMessage($v, $aMsg[$v], $highlight_list, $aFormattedMessages[$iUid]);
                }
            }
            $aFormattedMessages[$iUid]['columns'] = $aColumns;
        } else {
            break;
        }
    }
    return $aFormattedMessages;
}
Ejemplo n.º 8
0
/**
 * Retrieves a list with headers, flags, size or internaldate from the imap server
 */
function sqimap_get_small_header_list($imap_stream, $msg_list, $show_num = false)
{
    global $squirrelmail_language, $color, $data_dir, $username, $imap_server_type;
    global $uid_support, $allow_server_sort;
    /* Get the small headers for each message in $msg_list */
    $maxmsg = sizeof($msg_list);
    if ($show_num != '999999') {
        $msgs_str = sqimap_message_list_squisher($msg_list);
    } else {
        $msgs_str = '1:*';
    }
    $messages = array();
    $read_list = array();
    /*
     * We need to return the data in the same order as the caller supplied
     * in $msg_list, but IMAP servers are free to return responses in
     * whatever order they wish... So we need to re-sort manually
     */
    for ($i = 0; $i < sizeof($msg_list); $i++) {
        $messages["{$msg_list[$i]}"] = array();
    }
    $internaldate = getPref($data_dir, $username, 'internal_date_sort', SMPREF_ON);
    if ($internaldate) {
        $query = "FETCH {$msgs_str} (FLAGS UID RFC822.SIZE INTERNALDATE BODY.PEEK[HEADER.FIELDS (Date To Cc From Subject X-Priority Importance Priority Content-Type)])";
    } else {
        $query = "FETCH {$msgs_str} (FLAGS UID RFC822.SIZE BODY.PEEK[HEADER.FIELDS (Date To Cc From Subject X-Priority Importance Priority Content-Type)])";
    }
    $read_list = sqimap_run_command_list($imap_stream, $query, true, $response, $message, $uid_support);
    $i = 0;
    foreach ($read_list as $r) {
        /* initialize/reset vars */
        $subject = _("(no subject)");
        $from = _("Unknown Sender");
        $priority = 0;
        $messageid = '<>';
        $type = array('', '');
        $cc = $to = $inrepto = '';
        $size = 0;
        // use unset because we do isset below
        unset($date);
        $flag_seen = $flag_answered = $flag_deleted = $flag_flagged = false;
        $read = implode('', $r);
        /*
         * #id<space>FETCH<space>(
         */
        /* extract the message id */
        $i_space = strpos($read, ' ', 2);
        $id = substr($read, 2, $i_space - 2);
        $fetch = substr($read, $i_space + 1, 5);
        if (!is_numeric($id) && $fetch !== 'FETCH') {
            set_up_language($squirrelmail_language);
            echo '<br /><b><font color="' . $color[2] . '">' . _("ERROR: Could not complete request.") . '</b><br />' . _("Unknown response from IMAP server:") . ' 1.' . htmlspecialchars($read) . "</font><br />\n";
            break;
        }
        $i = strpos($read, '(', $i_space + 5);
        $read = substr($read, $i + 1);
        $i_len = strlen($read);
        $i = 0;
        while ($i < $i_len && $i !== false) {
            /* get argument */
            $read = trim(substr($read, $i));
            $i_len = strlen($read);
            $i = strpos($read, ' ');
            $arg = substr($read, 0, $i);
            ++$i;
            switch ($arg) {
                case 'UID':
                    $i_pos = strpos($read, ' ', $i);
                    if (!$i_pos) {
                        $i_pos = strpos($read, ')', $i);
                    }
                    if ($i_pos) {
                        $unique_id = substr($read, $i, $i_pos - $i);
                        $i = $i_pos + 1;
                    } else {
                        break 3;
                    }
                    break;
                case 'FLAGS':
                    $flags = parseArray($read, $i);
                    if (!$flags) {
                        break 3;
                    }
                    foreach ($flags as $flag) {
                        $flag = strtolower($flag);
                        switch ($flag) {
                            case '\\seen':
                                $flag_seen = true;
                                break;
                            case '\\answered':
                                $flag_answered = true;
                                break;
                            case '\\deleted':
                                $flag_deleted = true;
                                break;
                            case '\\flagged':
                                $flag_flagged = true;
                                break;
                            default:
                                break;
                        }
                    }
                    break;
                case 'RFC822.SIZE':
                    $i_pos = strpos($read, ' ', $i);
                    if (!$i_pos) {
                        $i_pos = strpos($read, ')', $i);
                    }
                    if ($i_pos) {
                        $size = substr($read, $i, $i_pos - $i);
                        $i = $i_pos + 1;
                    } else {
                        break 3;
                    }
                    break;
                case 'INTERNALDATE':
                    $date = parseString($read, $i);
                    //if ($tmpdate === false) break 3;
                    //$tmpdate = str_replace('  ',' ',$tmpdate);
                    //$tmpdate = explode(' ',$tmpdate);
                    //$date = str_replace('-',' ',$tmpdate[0]) . " " .
                    //                            $tmpdate[1] . ' ' . $tmpdate[2];
                    break;
                case 'BODY.PEEK[HEADER.FIELDS':
                case 'BODY[HEADER.FIELDS':
                    $i = strpos($read, '{', $i);
                    $header = parseString($read, $i);
                    if ($header === false) {
                        break 2;
                    }
                    /* First we replace all \r\n by \n, and unfold the header */
                    $hdr = trim(str_replace(array("\r\n", "\n\t", "\n "), array("\n", ' ', ' '), $header));
                    /* Now we can make a new header array with */
                    /* each element representing a headerline  */
                    $hdr = explode("\n", $hdr);
                    foreach ($hdr as $line) {
                        $pos = strpos($line, ':');
                        if ($pos > 0) {
                            $field = strtolower(substr($line, 0, $pos));
                            if (!strstr($field, ' ')) {
                                /* valid field */
                                $value = trim(substr($line, $pos + 1));
                                switch ($field) {
                                    case 'to':
                                        $to = $value;
                                        break;
                                    case 'cc':
                                        $cc = $value;
                                        break;
                                    case 'from':
                                        $from = $value;
                                        break;
                                    case 'date':
                                        $date = $value;
                                        break;
                                    case 'x-priority':
                                    case 'importance':
                                    case 'priority':
                                        $priority = parsePriority($value);
                                        break;
                                    case 'subject':
                                        $subject = $value;
                                        if ($subject == "") {
                                            $subject = _("(no subject)");
                                        }
                                        break;
                                    case 'content-type':
                                        $type = strtolower($value);
                                        if ($pos = strpos($type, ";")) {
                                            $type = substr($type, 0, $pos);
                                        }
                                        $type = explode("/", $type);
                                        if (empty($type[0])) {
                                            $type[0] = 'text';
                                            // I had this added, but not committed to CVS.... did it help fix something?
                                            //                                    $type[1] = 'plain';
                                        }
                                        if (empty($type[1])) {
                                            $type[1] = 'plain';
                                        }
                                        break;
                                    default:
                                        break;
                                }
                            }
                        }
                    }
                    break;
                default:
                    ++$i;
                    break;
            }
        }
        if (isset($date)) {
            $date = str_replace('  ', ' ', $date);
            $tmpdate = explode(' ', trim($date));
        } else {
            $tmpdate = $date = array();
        }
        if ($uid_support) {
            $msgi = "{$unique_id}";
            $messages[$msgi]['ID'] = $unique_id;
        } else {
            $msgi = "{$id}";
            $messages[$msgi]['ID'] = $id;
        }
        $messages[$msgi]['TIME_STAMP'] = getTimeStamp($tmpdate);
        $messages[$msgi]['DATE_STRING'] = getDateString($messages[$msgi]['TIME_STAMP']);
        $messages[$msgi]['FROM'] = $from;
        //parseAddress($from);
        $messages[$msgi]['SUBJECT'] = $subject;
        //        if (handleAsSent($mailbox)) {
        $messages[$msgi]['TO'] = $to;
        //parseAddress($to);
        //        }
        $messages[$msgi]['PRIORITY'] = $priority;
        $messages[$msgi]['CC'] = $cc;
        //parseAddress($cc);
        $messages[$msgi]['SIZE'] = $size;
        $messages[$msgi]['TYPE0'] = $type[0];
        $messages[$msgi]['TYPE1'] = $type[1];
        $messages[$msgi]['FLAG_DELETED'] = $flag_deleted;
        $messages[$msgi]['FLAG_ANSWERED'] = $flag_answered;
        $messages[$msgi]['FLAG_SEEN'] = $flag_seen;
        $messages[$msgi]['FLAG_FLAGGED'] = $flag_flagged;
        /* non server sort stuff */
        if (!$allow_server_sort) {
            $from = parseAddress($from);
            if ($from[0][1]) {
                $from = decodeHeader($from[0][1], true, false);
            } else {
                $from = $from[0][0];
            }
            $messages[$msgi]['FROM-SORT'] = $from;
            $subject_sort = strtolower(decodeHeader($subject, true, false));
            if (preg_match("/^(?:(?:vedr|sv|re|aw|fw|fwd|\\[\\w\\]):\\s*)*\\s*(.*)\$/si", $subject_sort, $matches)) {
                $messages[$msgi]['SUBJECT-SORT'] = $matches[1];
            } else {
                $messages[$msgi]['SUBJECT-SORT'] = $subject_sort;
            }
        }
        ++$msgi;
    }
    array_reverse($messages);
    $new_messages = array();
    foreach ($messages as $i => $message) {
        $new_messages[] = $message;
    }
    return $new_messages;
}
Ejemplo n.º 9
0
    $tagIds = [$tag['_id']];
    $tagPostsCollection = collection('Blog Posts');
    $tagPostCount = $tagPostsCollection->count(function ($post) use($tagIds) {
        return count(array_intersect($tagIds, $post['tags'])) === count($tagIds) && isset($post['published']) && $post['published'] == true;
    });
    $tagPageCount = ceil($tagPostCount / $blogPostsPerPage);
    for ($tagPageId = 1; $tagPageId <= $tagPageCount; $tagPageId++) {
        $pages[] = ['loc' => 'blog/tag/' . $tag['name_slug'] . '/' . $tagPageId, 'lastmod' => getDateString($lastBlogModified), 'changefreq' => 'weekly', 'priority' => 0.5];
    }
}
$pages[] = ['loc' => 'blog', 'lastmod' => getDateString($lastBlogModified), 'changefreq' => 'monthly', 'priority' => 0.75];
/* ##### PROJECTS ##### */
$lastProjectModified = 0;
$projects = collection('Projects')->find(["published" => true])->toArray();
foreach ($projects as $project) {
    $pages[] = ['loc' => 'projects/' . $project['name_slug'], 'lastmod' => getDateString($project['modified']), 'changefreq' => 'weekly', 'priority' => 0.85];
    if ($project['modified'] > $lastProjectModified) {
        $lastProjectModified = $project['modified'];
    }
}
$pages[] = ['loc' => 'projects', 'lastmod' => getDateString($lastProjectModified), 'changefreq' => 'weekly', 'priority' => 0.75];
/* ##### PRINT OUTS ##### */
foreach ($pages as $page) {
    echo "  <url>\n";
    echo "    <loc>" . $url . $page['loc'] . "</loc>\n";
    echo "    <lastmod>" . $page['lastmod'] . "</lastmod>\n";
    echo "    <changefreq>" . $page['changefreq'] . "</changefreq>\n";
    echo "    <priority>" . $page['priority'] . "</priority>\n";
    echo "  </url>\n";
}
echo '</urlset>';
Ejemplo n.º 10
0
		echo "\n";
		echo "if(DATA.currentEvent) DATA.currentEvent = new Event(DATA.currentEvent);";
		//For readability
		echo "\n";*/
//.
echo "DATA.activities = createActivitiesArray(" . json_encode($activities) . ");";
/*echo "\n";
		echo "DATA.completed = createEventsArray(".json_encode($completed).");";
		*/
//Data Format
//Array (('id'=>'1', 'name'=>'exercise', 'goal'=>3600 duration'=>600), ...)
echo "DATA.data = [];";
echo "DATA.days = [];";
//Get the graph data
for ($dayOffset = -6; $dayOffset < 1; $dayOffset++) {
    echo "DATA.data.push(" . json_encode($db->getData(getDateString($dayOffset))) . "); \n";
    echo "DATA.days.push('" . getDayInitialFormattedString($dayOffset) . "'); \n";
}
?>
			console.log(DATA);
			
			//Document Ready
			$(document).ready(function(){
			
				//Setup
				setUpLife(DATA);
			});
	</script>
	
	<div class="navbar navbar-fixed-top">
      <div class="navbar-inner">