Switch automatically to "SHOW ALL" if ($f_state == "") : $f_state = "1"; for ($i = 0; $i <= $f_state; $i++) : $checkedStateArray[$i] = "checked"; endfor; $whereClauseState .= " AND mf.mf_state <= '" . $f_state . "' "; else : $stateFieldLength = count($f_state); if ($stateFieldLength > 0) : for ($i = 0; $i < $stateFieldLength; $i++) : $whereClauseState .= " mf.mf_state = '" . $f_state[$i] . "' "; if ($i < ($stateFieldLength - 1)) : $whereClauseState .= " OR "; endif; $checkedStateArray[$f_state[$i]] = "checked"; endfor; $whereClauseState = "AND (" . $whereClauseState . ")"; endif; endif; $whereClauseFilter = ""; if (!isset($f_filter) || $f_filter == "") : $f_filter = array(); endif; $checkedFilterArray = array(); $filterFieldLength = count($f_filter); if ($filterFieldLength > 0) : // 1. Filter $j = array_search("0", $f_filter); if (!($j === FALSE)) : $checkedFilterArray[0] = "checked"; $whereClauseFilter .= " AND mf.mf_type <> '1' "; endif; // 1. Filter $j = array_search("1", $f_filter); if (!($j === FALSE)) : $checkedFilterArray[1] = "checked"; $whereClauseFilter .= " AND mf.mf_type = '1' "; endif; // ... More filters ... // $checkedFilterArray[2] = ""; // ... else : // First call of the page, no reload if ($f_reload == "") : $checkedFilterArray[0] = "checked"; $whereClauseFilter .= " AND mf.mf_type <> '1' "; $checkedFilterArray[1] = ""; endif; endif; if ($f_prio == "") : $f_prio = "3"; endif; // All msgs with this prio and higher (<= $f_prio) if ($f_usr_type == "") : $f_usr_type = "0"; endif; // "0" = All msgs., ">0" = All msgs only with this user type (== $f_usr_type) // Get the number of message groups according to the current mandator $numOfMsgGroups = getCountOfTable("messagegroup", "hq_id = '" . $hq_id . "'"); // Get the current time $currentTime = getDateTime("0"); // Initialisations $limitOfRowsDisplayed = "1000"; // For limitation of the rows displayed $f_subject_group = trim($f_subject_group); $f_subject_group = str_replace("'", "", $f_subject_group); $f_body_group = trim($f_body_group); $f_body_group = str_replace("'", "", $f_body_group); // Maximum of chars to be inserted into a message $maxMsgLength = getParameterValue("0", "MESSAGE_MAX_BODY_LENGTH", $hq_id); if ($maxMsgLength == "" || $maxMsgLength == "0") : $maxMsgLength = 250; endif; $f_body_group = substr($f_body_group,0,$maxMsgLength); // Get the array for formatting the database-values for the output according to the defined type $outputFormatField = defineOutputFormats(); // Check range of date. All fields have to be set if ($day_from == "" || $month_from == "" || $year_from == "" || $day_to == "" || $month_to == "" || $year_to == "") : // Initialize date-ranges to the current date $fromDateRange = getDateTime("1") . "000000"; $toDateRange = getDateTime("1") . "235959"; $day_from = getDateTime("day"); $month_from = getDateTime("month"); $year_from = getDateTime("year"); $day_to = getDateTime("day"); $month_to = getDateTime("month"); $year_to = getDateTime("year"); else : $fromDateRange = $year_from . pad($month_from,2) . pad($day_from,2) . "000000"; $toDateRange = $year_to . pad($month_to,2) . pad($day_to,2) . "235959"; endif; function postParseHistory ($textToParse) { $textToParse = trim($textToParse); if ($textToParse != "") : // Iterate ALL occurrences of "..." while (!(strpos($textToParse, "") === FALSE)) { $beginTagPosBegin = strpos($textToParse, ""); $beginTagPosEnd = $beginTagPosBegin + 12; $endTagPosBegin = strpos($textToParse, ""); $endTagPosEnd = $endTagPosBegin + 13; if ($beginTagPosEnd < $endTagPosBegin) : $tagContent = substr($textToParse, $beginTagPosEnd, $endTagPosBegin - $beginTagPosEnd); // $tagContent contains 0. "mf_id", 1. "mf_usr_type", 2. "mf_state", 3. "usr_id_sender" , 4. "mf_pre_id" , 5. "usr_id_first_reader" , 6. "usr_id_answerer" $tmp = spliti(",",$tagContent); $tagContent = ""; // If message is read if ($tmp[2] >= "2") : $usrNameFirstReader = ""; if ($tmp[5] != "" && $tmp[5] > 0) : $usrNameFirstReader = " [" . getFieldValueFromId("phoenix.user", "usr_id", $tmp[5], "usr_firstname") . " " . getFieldValueFromId("phoenix.user", "usr_id", $tmp[5], "usr_name") . "]"; endif; $tagContent .= "- " . getLngt("Nachricht gelesen") . $usrNameFirstReader; endif; // If sender is courier ... if ($tmp[1] == "3") : // If message is read if ($tmp[2] < "2") : $tagContent .= "\n"; endif; // If message not is answered yet if ($tmp[2] < "3") : $tagContent .= ""; $tagContent .= "\n"; $tagContent .= "Betreff: \n"; $tagContent .= getLngt("Text:") . " \n"; else : $usrNameAnswerer = ""; if ($tmp[6] != "" && $tmp[6] > 0) : $usrNameAnswerer = " [" . getFieldValueFromId("phoenix.user", "usr_id", $tmp[6], "usr_firstname") . " " . getFieldValueFromId("phoenix.user", "usr_id", $tmp[6], "usr_name") . "]"; endif; $tagContent .= ""; $tagContent .= "- " . getLngt("Nachricht beantwortet") . $usrNameAnswerer; endif; endif; // Show number of original request message if ($tmp[4] > "0") : $tagContent .= "- " . getLngt("Anfragenachricht") . " " . $tmp[4] . ""; endif; // Substitute text fragment $textToParse = substr_replace($textToParse, $tagContent, $beginTagPosBegin, $endTagPosEnd - $beginTagPosBegin); endif; } endif; return $textToParse; } // Message was read by the employee if ($f_act == "read") : if ($f_mf_id != "" && $f_mf_id != "0") : $mfState = getFieldValueFromId("phoenix_log.messageforum", "mf_id", $f_mf_id, "mf_state"); // Message was not read or answered => Change "mf_state" if ($mfState < "2") : $res = updateStmt("phoenix_log.messageforum", "mf_id", $f_mf_id, array("mf_state", "2", "mf_acknowledge", $currentTime), "mf_state < '2'"); if ($db->affected_rows == 1) : // Write first reader of the message $res = updateStmt("phoenix_log.messageforum", "mf_id", $f_mf_id, array("usr_id_first_reader", $usr_id)); else : $statusMessage = getLngt("Nachricht wurde gerade als gelesen markiert! Bitte die Seite nochmal neu laden!"); endif; else : $statusMessage = getLngt("Nachricht wurde gerade als gelesen markiert! Bitte die Seite nochmal neu laden!"); endif; else : $statusMessage = getLngt("Intergritätsfehler! Die Nachricht konnte nicht referenziert werden!"); endif; endif; // Message was answered by the employee if ($f_act == "answered") : if ($f_mf_id != "" && $f_mf_id != "0") : list($f_subject, $f_body) = getSecHttpVars("1",array("f_subject_" . $f_mf_id, "f_body_" . $f_mf_id)); $f_subject = str_replace("'", "", $f_subject); $f_body = str_replace("'", "", $f_body); $mfState = getFieldValueFromId("phoenix_log.messageforum", "mf_id", $f_mf_id, "mf_state"); // Message was not answered => Change "mf_state" if ($mfState < "3") : // Change original message $res = updateStmt("phoenix_log.messageforum", "mf_id", $f_mf_id, array("mf_state", "3", "usr_id_answerer", $f_usr_sender, "mf_acknowledge", $currentTime), "mf_state < '3'"); if ($db->affected_rows == 1) : // Generate new message (the answer) insertStmt("phoenix_log.messageforum", array("mf_createtime", $currentTime, "usr_id_sender", $f_usr_sender, "hq_id", $hq_id, "usr_id_receiver", $f_usr_receiver, "mf_usr_type", "1", "mf_subject", $f_subject, "mf_body", $f_body, "mf_pre_id", $f_mf_id)); else : $statusMessage = getLngt("Nachricht wurde gerade als beantwortet markiert! Bitte die Seite nochmal neu laden!"); endif; else : $statusMessage = getLngt("Nachricht wurde gerade als beantwortet markiert! Bitte die Seite nochmal neu laden!"); endif; else : $statusMessage = getLngt("Intergritätsfehler! Die Nachricht konnte nicht referenziert werden!"); endif; endif; // Message to couriers belonging to one or more groups if ($f_act == "sendmsg") : if ($f_body_group != "") : // Identify couriers belonging to at least one group $whereClauseMsggrp = ""; if ($f_cr_sid_msg == "") : $msggrpFieldLength = count($f_msggrp); if ($f_msggrp != "" && $msggrpFieldLength > 0) : for ($i = 0; $i < $msggrpFieldLength; $i++) : $whereClauseMsggrp .= " cr.cr_msggrp LIKE '%," . $f_msggrp[$i] . ",%' "; if ($i < ($msggrpFieldLength - 1)) : $whereClauseMsggrp .= " OR "; endif; endfor; $whereClauseMsggrp = "AND (" . $whereClauseMsggrp . ")"; $tmpSqlquery = "SELECT DISTINCT cr.usr_id" . " FROM courier AS cr, company AS cmp" . " WHERE cr.hq_id = '" . $hq_id . "' AND cmp.cmp_id = cr.cmp_id AND cmp.cmp_archived = '0' AND cmp.cmp_authenticated = '1' " . $whereClauseMsggrp . " ORDER BY cr.cr_id"; $result = $db->query($tmpSqlquery); if (DB::isError($result)) die ("$PHP_SELF 5: {$tmpSqlquery} " . $result->getMessage() . ": " . $tmpSqlquery); while ($row = $result->fetch_assoc()): insertStmt("phoenix_log.messageforum", array("mf_type", "1", "mf_createtime", $currentTime, "usr_id_sender", $f_usr_sender, "hq_id", $hq_id, "usr_id_receiver", $row["usr_id"], "mf_usr_type", "1", "mf_subject", $f_subject_group, "mf_body", $f_body_group, "mf_pre_id", "0")); endwhile; $result->free(); // Initialisieren $f_subject_group = ""; $f_body_group = ""; $statusMessage = getLngt("Die Nachricht wurde verschickt!"); else : $statusMessage = getLngt("Bitte selektieren Sie mindestens eine Nachrichtengruppe oder einen speziellen Transporteur!"); endif; else : $tmpUsrId = getFieldValueFromId("courier", "cr_sid", $f_cr_sid_msg, "usr_id"); insertStmt("phoenix_log.messageforum", array("mf_type", "0", "mf_createtime", $currentTime, "usr_id_sender", $f_usr_sender, "hq_id", $hq_id, "usr_id_receiver", $tmpUsrId, "mf_usr_type", "1", "mf_subject", $f_subject_group, "mf_body", $f_body_group, "mf_pre_id", "0")); $statusMessage = getLngt("Die Nachricht wurde an") . " " . $f_cr_sid_msg . " " . getLngt("verschickt!"); // Initialisieren $f_subject_group = ""; $f_body_group = ""; endif; else : $statusMessage = getLngt("Bitte tragen Sie etwas in das Nachrichtenfeld ein!"); endif; endif; // Message to all active couriers of all headquarters if ($f_act == "sendAllActive") : if ($f_body_group != "") : // Get all active couriers $constAmStarttimeInDays = getParameterValue("0", "MESSAGE_MIN_DAYS_BEFORE", "0"); if ($constAmStarttimeInDays == "" || !is_numeric($constAmStarttimeInDays)) : $constAmStarttimeInDays = 7; endif; $minAvailableTime = getDateTime("datetime_plus_offset", array(0,0,0,0,-($constAmStarttimeInDays),0), "Y-m-d H:i:s"); $tmpSqlquery = "SELECT DISTINCT cr.usr_id" . " FROM courier AS cr, company AS cmp" . " WHERE cr.cr_availabletime > '" . $minAvailableTime . "' AND cmp.cmp_id = cr.cmp_id AND cmp.cmp_archived = '0' AND cmp.cmp_authenticated = '1'" . " ORDER BY cr.cr_id"; $result = $db->query($tmpSqlquery); if (DB::isError($result)) die ("$PHP_SELF 5: {$tmpSqlquery} " . $result->getMessage() . ": " . $tmpSqlquery); while ($row = $result->fetch_assoc()): insertStmt("phoenix_log.messageforum", array("mf_type", "1", "mf_createtime", $currentTime, "usr_id_sender", $f_usr_sender, "hq_id", $hq_id, "usr_id_receiver", $row["usr_id"], "mf_usr_type", "1", "mf_subject", $f_subject_group, "mf_body", $f_body_group, "mf_pre_id", "0")); endwhile; $result->free(); // Initialisieren $f_subject_group = ""; $f_body_group = ""; $statusMessage = getLngt("Die Nachricht wurde verschickt!"); else : $statusMessage = getLngt("Bitte tragen Sie etwas in das Nachrichtenfeld ein!"); endif; endif; // --- MESSAGE HISTORY ------------------ // From table "messageforum" $fieldClause = "mf.mf_id, mf.mf_createtime, mf.mf_expiration, mf.mf_delivery,mf.mf_acknowledge," . "mf.usr_id_sender, mf.usr_id_receiver, mf.usr_id_first_reader, mf.usr_id_answerer," . "mf.mf_usr_type, mf.mf_state, mf.mf_prio, mf.mf_subject, mf.mf_body, mf.mf_pre_id," . "CONCAT(usr_s.usr_firstname,'',usr_s.usr_name,'',cr_s.cr_sid,'',cr_s.cr_mobile_pda,'',usr_s.usr_phone,'',usr_s.usr_phone2) AS usr_from," . "CONCAT(usr_r.usr_firstname,'',usr_r.usr_name,'',cr_r.cr_sid,'',cr_r.cr_mobile_pda,'',usr_r.usr_phone,'',usr_r.usr_phone2) AS usr_to," . "CONCAT(mf.mf_id,',',mf.mf_usr_type,',',mf.mf_state,',',mf.usr_id_sender,',',mf.mf_pre_id,',',mf.usr_id_first_reader,',',mf.usr_id_answerer) AS mf_special"; $fromClause = "phoenix_log.messageforum AS mf " . "LEFT JOIN phoenix.user AS usr_s ON mf.usr_id_sender = usr_s.usr_id " . "LEFT JOIN phoenix.courier AS cr_s ON usr_s.usr_id = cr_s.usr_id " . "LEFT JOIN phoenix.user AS usr_r ON mf.usr_id_receiver = usr_r.usr_id " . "LEFT JOIN phoenix.courier AS cr_r ON usr_r.usr_id = cr_r.usr_id "; $whereClause = "mf.hq_id = '" . $hq_id . "' AND "; $whereClause .= "mf.mf_createtime >= '$fromDateRange' AND mf.mf_createtime <= '$toDateRange' AND "; $whereClause .= "mf.mf_prio <= '" . $f_prio . "' " . $whereClauseState; $whereClause .= $whereClauseFilter; if ($f_usr_type != "0") : $whereClause .= " AND mf.mf_user_type = '" . $f_usr_type . "'"; endif; $orderByClause = "mf.mf_createtime DESC LIMIT 0," . $limitOfRowsDisplayed; $sqlquery = generateStatement($fieldClause,$fromClause,$whereClause,$orderByClause); // echo $sqlquery . ""; // Send request to database $result = $db->query($sqlquery); if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage()); // Generate list with header $titleArray = array(getLngt("Lfd")." ",getLngt("Zeitpunkt")." ",getLngt("Sender")." ",getLngt("Empfänger")." ",getLngt("Betreff")." ",getLngt("Text")." ",getLngt("Aktion")); $fieldArray = array("mf_id","mf_createtime","usr_from","usr_to","mf_subject","mf_body","mf_special"); $aligns = "r,c,l,l,l,l,l,l"; $alignArray = spliti(",",$aligns); $alignTitles = "center"; $widths = "30,80,100,100,100,200,350"; $widthArray = spliti(",",$widths); $summationField = ""; $postParserField = "mf_special"; $mode = "1"; // Output from DB-RESULT $sortDBField = ""; // Used in following include-file for sorting per column; include ("../include/inc_list_defineoutput.inc.php"); $result->free(); // Message groups and mailing $outMsgGroups = addCheckboxesFromTable ("f_msggrp", "messagegroup", "msggrp_id", "msggrp_name", "msggrp_id", "hq_id =" . $hq_id, "", ""); // Special courier $outCouriers = "\n"; $outCouriers .= " \n"; $outCouriers .= "" . getLngt("ONLINE:") . "\n"; $outCouriers .= addOptionsFromTable("courier", "cr_sid", "cr_sid", "cr_sid", "cr_available = '1' AND hq_id = '" . $hq_id . "'", ""); $outCouriers .= " \n"; $outCouriers .= "" . getLngt("OFFLINE:") . "\n"; $outCouriers .= addOptionsFromTable("courier", "cr_sid", "cr_sid", "cr_sid", "cr_available != '1' AND cr_sid != '' AND (NOT isnull(cr_availabletime)) AND cr_availabletime > '" . getDateTime("datetime_plus_offset", array(0,0,0,-1,0,0), $formatStr = "Y-m-d H:i:s") . "' AND hq_id = '" . $hq_id . "'", ""); $outCouriers .= "\n"; // *** ONLY OUTPUT *** // Post parsing if necessary if ($postParserField != "") : $tableBody = postParseHistory($tableBody); endif; // Define output table $historyentry = $tableHeader . $tableBody; $currentFrameName = ""; // Empty string for "main frame" // Date-ranges $filter_dateranges = getLngt("Von:") . "\n"; $filter_dateranges .= "\n"; $filter_dateranges .= "\n"; $filter_dateranges .= "\n"; $filter_dateranges .= " " . getLngt("bis:") . "\n"; $filter_dateranges .= "\n"; $filter_dateranges .= "\n"; $filter_dateranges .= "\n"; // Javascript-function as template only for $js_date = "\n"; ?> > Gruppen > > > ( ) > > > > > > > > 1000) : echo getLngt("Mehr als") . " " . $limitOfRowsDisplayed . " " . getLngt("Datensätze werden nicht dargestellt"); endif; ?>