-1, "userid" => 0, "ClientUserId" => 0, "siteid" => 0, "placeid" => 0, "GroupId" => 0, "Title" => "", "TitleHtml" => "", "TitleBgColor" => "", "TitleColor" => "", "TitleBold" => 0, "TitleItalic" => 0, "TitleUnderline" => 0, "TitleFontStyle" => "", "TitleFontSize" => "", "PlainMsg" => "", "PlainMsgHtml" => "", "PlainMsgBgColor" => "", "PlainMsgColor" => "", "PlainMsgBold" => 0, "PlainMsgItalic" => 0, "PlainMsgUnderline" => 0, "PlainMsgFontStyle" => "", "PlainMsgFontSize" => "", "HtmlMsgEncoded" => "", "Url" => "", "TickerFeed" => "", "Duration" => 20, "ImageLocationSelector" => "", "ImageDisplaySelection" => "0", "ImageKeepAspect" => "1", "LastUpdated" => null, "PublishedDate" => null, "Inserted" => null, "IsPublished" => 0, "StatusChanged" => 0, "LastAction" => 0, "Transition" => "", "MessageImage" => "", "Ticker" => 0, "SlideImagePublished" => 0, "MessageGroupId" => 0, "MessageGroup" => 0, "FormattedAddress" => "", "Latitude" => "", "Longitude" => "", "GUID" => null, "Rating" => self::RATING_LIKE_DISLIKE, "Likes" => 1, "Dislikes" => 1, "CreatedBySource" => 0 ); /* ctor */ public function __construct($Db) { $this->Db = $Db; $this->Table = new CTable($Db, "Message"); $this->Table->AddColumnInt(self::PRIMARYKEYFIELD, 10, true, true); $this->Table->AddColumnInt("userid", 10, false, true, true, self::$aDefaultValues["userid"]); $this->Table->AddColumnInt("ClientUserId", 10, false, true, true, self::$aDefaultValues["ClientUserId"]); $this->Table->AddColumnInt("siteid", 10, false, true, true, self::$aDefaultValues["siteid"]); $this->Table->AddColumnInt("placeid", 10, false, true, true, self::$aDefaultValues["placeid"]); $this->Table->AddColumnInt("GroupId", 10, false, true, true, self::$aDefaultValues["GroupId"]); $this->Table->AddColumnText("Title", 4096, true, self::$aDefaultValues["Title"]); $this->Table->AddColumnText("TitleHtml", 8192, true, self::$aDefaultValues["TitleHtml"]); $this->Table->AddColumnText("TitleBgColor", 32, true, self::$aDefaultValues["TitleBgColor"]); $this->Table->AddColumnText("TitleColor", 32, true, self::$aDefaultValues["TitleColor"]); $this->Table->AddColumnInt("TitleBold", 2, false, true, true, self::$aDefaultValues["TitleBold"]); $this->Table->AddColumnInt("TitleItalic", 2, false, true, true, self::$aDefaultValues["TitleItalic"]); $this->Table->AddColumnInt("TitleUnderline", 2, false, true, true, self::$aDefaultValues["TitleUnderline"]); $this->Table->AddColumnText("TitleFontStyle", 100, true, self::$aDefaultValues["TitleFontStyle"]); $this->Table->AddColumnText("TitleFontSize", 20, true, self::$aDefaultValues["TitleFontSize"]); $this->Table->AddColumnText("PlainMsg", 16384, true, self::$aDefaultValues["PlainMsg"]); $this->Table->AddColumnText("PlainMsgHtml", 32768, true, self::$aDefaultValues["PlainMsgHtml"]); $this->Table->AddColumnText("PlainMsgBgColor", 32, true, self::$aDefaultValues["PlainMsgBgColor"]); $this->Table->AddColumnText("PlainMsgColor", 32, true, self::$aDefaultValues["PlainMsgColor"]); $this->Table->AddColumnInt("PlainMsgBold", 2, false, true, true, self::$aDefaultValues["PlainMsgBold"]); $this->Table->AddColumnInt("PlainMsgItalic", 2, false, true, true, self::$aDefaultValues["PlainMsgItalic"]); $this->Table->AddColumnInt("PlainMsgUnderline", 2, false, true, true, self::$aDefaultValues["PlainMsgUnderline"]); $this->Table->AddColumnText("PlainMsgFontStyle", 100, true, self::$aDefaultValues["PlainMsgFontStyle"]); $this->Table->AddColumnText("PlainMsgFontSize", 20, true, self::$aDefaultValues["PlainMsgFontSize"]); $this->Table->AddColumnText("HtmlMsgEncoded", 8192, true, self::$aDefaultValues["HtmlMsgEncoded"]); $this->Table->AddColumnText("Url", 2048, true, self::$aDefaultValues["Url"]); $this->Table->AddColumnText("TickerFeed", 2048, true, self::$aDefaultValues["TickerFeed"]); $this->Table->AddColumnInt("Duration", 10, false, true, true, self::$aDefaultValues["Duration"]); $this->Table->AddColumnText("ImageLocationSelector", 25, true, self::$aDefaultValues["ImageLocationSelector"]); $this->Table->AddColumnText("ImageDisplaySelection", 25, true, self::$aDefaultValues["ImageDisplaySelection"]); $this->Table->AddColumnText("ImageKeepAspect", 25, true, self::$aDefaultValues["ImageKeepAspect"]); $this->Table->AddColumnInt("LastUpdated", 10, false, false); $this->Table->AddColumnInt("PublishedDate", 10, false, false); $this->Table->AddColumnInt("Inserted", 10, false, false); $this->Table->AddColumnInt("IsPublished", 1, false, true, true, self::$aDefaultValues["IsPublished"]); $this->Table->AddColumnInt("StatusChanged", 1, false, true, true, self::$aDefaultValues["StatusChanged"]); $this->Table->AddColumnInt("LastAction", 1, false, true, true, self::$aDefaultValues["LastAction"]); $this->Table->AddColumnText("Transition", 150, true, self::$aDefaultValues["Transition"]); $this->Table->AddColumnText("MessageImage", 50, true, self::$aDefaultValues["MessageImage"]); $this->Table->AddColumnInt("Ticker", 1, false, true, true, self::$aDefaultValues["Ticker"]); $this->Table->AddColumnInt("SlideImagePublished", 1, false, true, true, self::$aDefaultValues["SlideImagePublished"]); $this->Table->AddColumnInt("MessageGroupId", 10, false, true, true, self::$aDefaultValues["MessageGroupId"]); $this->Table->AddColumnInt("MessageGroup", 10, false, true, true, self::$aDefaultValues["MessageGroup"]); $this->Table->AddColumnText("FormattedAddress", 1000, true, self::$aDefaultValues["FormattedAddress"]); $this->Table->AddColumnText("Latitude", 50, true, self::$aDefaultValues["Latitude"]); $this->Table->AddColumnText("Longitude", 50, true, self::$aDefaultValues["Longitude"]); $this->Table->AddColumnText("GUID", 68, true, self::$aDefaultValues["GUID"]); $this->Table->AddColumnInt("Rating", 1, false, true, true, self::$aDefaultValues["Rating"]); $this->Table->AddColumnInt("Likes", 10, false, true, true, self::$aDefaultValues["Likes"]); $this->Table->AddColumnInt("Dislikes", 10, false, true, true, self::$aDefaultValues["Dislikes"]); $this->Table->AddColumnInt("CreatedBySource", 2, false, true, true, self::$aDefaultValues["CreatedBySource"]); $this->Table->SetPrimaryKeyName(self::PRIMARYKEYFIELD); global $g_aMessageLastAction; $this->aStatus = $g_aMessageLastAction; } function CreateTable() { WriteToLog("CMessageTable :: CreateTable()"); $this->Table->CreateTable(); } // insert needed for ConvertTable.php function Insert($MessageData) { $iMessageGroupId = null; if (isset($MessageData["MessageGroupId"])) { $iMessageGroupId = $MessageData["MessageGroupId"]; } $aFields = array(); $aFields["userid"] = $MessageData["userid"]; $aFields["ClientUserId"] = $MessageData["ClientUserId"]; $aFields["siteid"] = $MessageData["siteid"]; $aFields["GroupId"] = $MessageData["GroupId"]; $aFields["Title"] = $MessageData["Title"]; $aFields["TitleHtml"] = $MessageData["TitleHtml"]; $aFields["TitleBgColor"] = (isset($MessageData["TitleBgColor"]) ? $MessageData["TitleBgColor"] : GetConfigVar("DefaultBgColor", "General")); $aFields["TitleColor"] = (isset($MessageData["TitleColor"]) ? $MessageData["TitleColor"] : GetConfigVar("DefaultTextColor", "General")); $aFields["TitleBold"] = (isset($MessageData["TitleBold"]) ? $MessageData["TitleBold"] : 0); $aFields["TitleItalic"] = (isset($MessageData["TitleItalic"]) ? $MessageData["TitleItalic"] : 0); $aFields["TitleUnderline"] = (isset($MessageData["TitleUnderline"]) ? $MessageData["TitleUnderline"] : 0); $aFields["TitleFontStyle"] = (isset($MessageData["TitleFontStyle"]) ? $MessageData["TitleFontStyle"] : "default"); $aFields["TitleFontSize"] = (isset($MessageData["TitleFontSize"]) ? $MessageData["TitleFontSize"] : "default"); $aFields["PlainMsg"] = $MessageData["PlainMsg"]; $aFields["PlainMsgHtml"] = $MessageData["PlainMsgHtml"]; $aFields["PlainMsgBgColor"] = (isset($MessageData["PlainMsgBgColor"]) ? $MessageData["PlainMsgBgColor"] : GetConfigVar("DefaultBgColor", "General")); $aFields["PlainMsgColor"] = (isset($MessageData["PlainMsgColor"]) ? $MessageData["PlainMsgColor"] : GetConfigVar("DefaultTextColor", "General")); $aFields["PlainMsgBold"] = (isset($MessageData["PlainMsgBold"]) ? $MessageData["PlainMsgBold"] : 0); $aFields["PlainMsgItalic"] = (isset($MessageData["PlainMsgItalic"]) ? $MessageData["PlainMsgItalic"] : 0); $aFields["PlainMsgUnderline"] = (isset($MessageData["PlainMsgUnderline"]) ? $MessageData["PlainMsgUnderline"] : 0); $aFields["PlainMsgFontStyle"] = (isset($MessageData["PlainMsgFontStyle"]) ? $MessageData["PlainMsgFontStyle"] : "default"); $aFields["PlainMsgFontSize"] = (isset($MessageData["PlainMsgFontSize"]) ? $MessageData["PlainMsgFontSize"] : "default"); $aFields["HtmlMsgEncoded"] = $MessageData["HtmlMsgEncoded"]; $aFields["Url"] = $MessageData["Url"]; $aFields["TickerFeed"] = (isset($MessageData["TickerFeed"]) ? $MessageData["TickerFeed"] : ""); $aFields["Duration"] = $this->ValidateDuration($MessageData["Duration"]); $aFields["Transition"] = (isset($MessageData["Transition"]) ? $MessageData["Transition"] : GetConfigVar("DefaultTransition", "General")); $aFields["LastUpdated"] = time(); //$aFields["PublishedDate"] = time(); $aFields["Inserted"] = time(); $aFields["IsPublished"] = 0; $aFields["StatusChanged"] = (isset($MessageData["StatusChanged"]) ? $MessageData["StatusChanged"] : 0); $aFields["LastAction"] = (isset($MessageData["LastAction"]) ? $MessageData["LastAction"] : $this->aStatus["New"]); $aFields["MessageImage"] = (isset($MessageData["MessageImage"]) ? $MessageData["MessageImage"] : md5(uniqid(rand(), true))); if (isset($MessageData["Ticker"])) { $aFields["Ticker"] = $MessageData["Ticker"]; } else { $aFields["Ticker"] = (GetConfigVar("DefaultTicker", "General") == "Horizontal Ticker" ? 1 : 0); } $aFields["ImageKeepAspect"] = (isset($MessageData["ImageKeepAspect"]) ? $MessageData["ImageKeepAspect"] : "1"); $aFields["ImageLocationSelector"] = (isset($MessageData["ImageLocationSelector"]) ? $MessageData["ImageLocationSelector"] : ""); $aFields["ImageDisplaySelection"] = (isset($MessageData["ImageDisplaySelection"]) ? $MessageData["ImageDisplaySelection"] : "0"); $aFields["SlideImagePublished"] = (isset($MessageData["SlideImagePublished"]) ? $MessageData["SlideImagePublished"] : 0); $aFields["MessageGroupId"] = (isset($MessageData["MessageGroupId"]) ? $MessageData["MessageGroupId"] : 0); $aFields["MessageGroup"] = (isset($MessageData["MessageGroup"]) ? $MessageData["MessageGroup"] : 0); $aFields["FormattedAddress"] = (isset($MessageData["FormattedAddress"]) ? $MessageData["FormattedAddress"] : ""); $aFields["Latitude"] = (isset($MessageData["Latitude"]) ? $MessageData["Latitude"] : ""); $aFields["Longitude"] = (isset($MessageData["Longitude"]) ? $MessageData["Longitude"] : ""); $aFields["Rating"] = (isset($MessageData["Rating"]) ? $MessageData["Rating"] : self::RATING_NONE); $aFields["Likes"] = (isset($MessageData["Likes"]) ? $MessageData["Likes"] : 0); $aFields["Dislikes"] = (isset($MessageData["Dislikes"]) ? $MessageData["Dislikes"] : 0); $aFields["GUID"] = (isset($MessageData["GUID"]) ? $MessageData["GUID"] : GetGUID()); $aFields["CreatedBySource"] = (isset($MessageData["CreatedBySource"]) ? $MessageData["CreatedBySource"] : 0); $iPlaceId = $this->GetPlaceId($MessageData); $aFields["placeid"] = $iPlaceId; return $this->Table->Insert($aFields); } function Import($aResult) { global $g_SharedVars; $this->Table->CreateTable(true); foreach ($aResult as $Result) { if (!array_key_exists("placeid", $Result)) { $Result["placeid"] = $Result["messageid"]; } if (!array_key_exists("GroupId", $Result)) { $Result["GroupId"] = $g_SharedVars["DefaultTemplateGroupId"]; } if (array_key_exists("HtmlMsg", $Result)) { $Result["HtmlMsgEncoded"] = base64_encode($Result["HtmlMsg"]); unset($Result["HtmlMsg"]); } if (!array_key_exists("ImageLocationSelector", $Result)) { $Result["ImageLocationSelector"] = ""; } if (!array_key_exists("TitleHtml", $Result)) { $Result["TitleHtml"] = ""; } if (!array_key_exists("TitleBgColor", $Result)) { $Result["TitleBgColor"] = GetConfigVar("DefaultBgColor", "General"); } if (!array_key_exists("TitleColor", $Result)) { $Result["TitleColor"] = GetConfigVar("DefaultTextColor", "General"); } if (!array_key_exists("TitleBold", $Result)) { $Result["TitleBold"] = 0; } if (!array_key_exists("TitleItalic", $Result)) { $Result["TitleItalic"] = 0; } if (!array_key_exists("TitleUnderline", $Result)) { $Result["TitleUnderline"] = 0; } if (!array_key_exists("TitleFontStyle", $Result)) { $Result["TitleFontStyle"] = "default"; } if (!array_key_exists("TitleFontSize", $Result)) { $Result["TitleFontSize"] = "default"; } if (!array_key_exists("PlainMsgHtml", $Result)) { $Result["PlainMsgHtml"] = ""; } if (!array_key_exists("PlainMsgBgColor", $Result)) { $Result["PlainMsgBgColor"] = GetConfigVar("DefaultBgColor", "General"); } if (!array_key_exists("PlainMsgColor", $Result)) { $Result["PlainMsgColor"] = GetConfigVar("DefaultTextColor", "General"); } if (!array_key_exists("PlainMsgBold", $Result)) { $Result["PlainMsgBold"] = 0; } if (!array_key_exists("PlainMsgItalic", $Result)) { $Result["PlainMsgItalic"] = 0; } if (!array_key_exists("PlainMsgUnderline", $Result)) { $Result["PlainMsgUnderline"] = 0; } if (!array_key_exists("PlainMsgFontStyle", $Result)) { $Result["PlainMsgFontStyle"] = "default"; } if (!array_key_exists("PlainMsgFontSize", $Result)) { $Result["PlainMsgFontSize"] = "default"; } if (!array_key_exists("Transition", $Result)) { $Result["Transition"] = GetConfigVar("DefaultTransition", "General"); } if (array_key_exists("imageid", $Result)) { unset($Result["imageid"]); } if (array_key_exists("videoname", $Result)) { unset($Result["videoname"]); } if (array_key_exists("remotemedia", $Result)) { unset($Result["remotemedia"]); } if (array_key_exists("mediasource", $Result)) { unset($Result["mediasource"]); } if (array_key_exists("mediathumb", $Result)) { unset($Result["mediathumb"]); } if (array_key_exists("mediadescription", $Result)) { unset($Result["mediadescription"]); } if (!array_key_exists("TickerFeed", $Result)) { $Result["TickerFeed"] = ""; } if (!array_key_exists("MessageImage", $Result)) { $Result["MessageImage"] = md5(uniqid(mt_rand(), true)); } if (!array_key_exists("PublishedDate", $Result)) { $Result["PublishedDate"] = self::$aDefaultValues["PublishedDate"]; } // 7.2.6 version had other values for DefaultBgColor and DefaultTextColor if (array_key_exists("TitleBgColor", $Result) && $Result["TitleBgColor"] == "#ffffee") { $Result["TitleBgColor"] = GetConfigVar("DefaultBgColor", "General"); } if (array_key_exists("TitleColor", $Result) && $Result["TitleColor"] == "#000011") { $Result["TitleColor"] = GetConfigVar("DefaultTextColor", "General"); } if (array_key_exists("PlainMsgBgColor", $Result) && $Result["PlainMsgBgColor"] == "#ffffee") { $Result["PlainMsgBgColor"] = GetConfigVar("DefaultBgColor", "General"); } if (array_key_exists("PlainMsgColor", $Result) && $Result["PlainMsgColor"] == "#000011") { $Result["PlainMsgColor"] = GetConfigVar("DefaultTextColor", "General"); } // Somehow made mistake to insert Default text strings into Message table ... if (array_key_exists("TitleFontStyle", $Result) && $Result["TitleFontStyle"] == "Font (Default)") { $Result["TitleFontStyle"] = "default"; } if (array_key_exists("TitleFontSize", $Result) && $Result["TitleFontSize"] == "Size (Default)") { $Result["TitleFontSize"] = "default"; } if (array_key_exists("PlainMsgFontStyle", $Result) && $Result["PlainMsgFontStyle"] == "Font (Default)") { $Result["PlainMsgFontStyle"] = "default"; } if (array_key_exists("PlainMsgFontSize", $Result) && $Result["PlainMsgFontSize"] == "Size (Default)") { $Result["PlainMsgFontSize"] = "default"; } if (!array_key_exists("Ticker", $Result)) { $Result["Ticker"] = (GetConfigVar("DefaultTicker", "General") == "Horizontal Ticker" ? 1 : 0); } // housekeeping is now in schedule table if (array_key_exists("HouseKeepingScheduling", $Result)) { unset($Result["HouseKeepingScheduling"]); } // twitter info is now in socialmedia table if (array_key_exists("TweetId", $Result)) { unset($Result["TweetId"]); } if (array_key_exists("TweetEnabled", $Result)) { unset($Result["TweetEnabled"]); } if (array_key_exists("TweetText", $Result)) { unset($Result["TweetText"]); } if (array_key_exists("TweetPublished", $Result)) { unset($Result["TweetPublished"]); } if (array_key_exists("FacebookEnabled", $Result)) { unset($Result["FacebookEnabled"]); } if (array_key_exists("FacebookMedia", $Result)) { unset($Result["FacebookMedia"]); } if (array_key_exists("FacebookHyperlink", $Result)) { unset($Result["FacebookHyperlink"]); } if (array_key_exists("FacebookText", $Result)) { unset($Result["FacebookText"]); } if (array_key_exists("FacebookPublished", $Result)) { unset($Result["FacebookPublished"]); } if (!array_key_exists("SlideImagePublished", $Result)) { $Result["SlideImagePublished"] = 0; } if (!array_key_exists("MessageGroupId", $Result) || empty($Result["MessageGroupId"])) { $Result["MessageGroupId"] = 0; } if (!array_key_exists("MessageGroup", $Result) || empty($Result["MessageGroup"])) { $Result["MessageGroup"] = 0; } if (!array_key_exists("FormattedAddress", $Result) || empty($Result["FormattedAddress"])) { $Result["FormattedAddress"] = ""; } if (!array_key_exists("Latitude", $Result) || empty($Result["Latitude"])) { $Result["Latitude"] = ""; } if (!array_key_exists("Longitude", $Result) || empty($Result["Longitude"])) { $Result["Longitude"] = ""; } if (!array_key_exists("GUID", $Result) || empty($Result["GUID"])) { $Result["GUID"] = GetGUID(); } if (!array_key_exists("CreatedBySource", $Result) || empty($Result["CreatedBySource"])) { $Result["CreatedBySource"] = 0; } if (!array_key_exists("ClientUserId", $Result) || empty($Result["ClientUserId"])) { $Result["ClientUserId"] = 0; } $this->Table->Import($Result); } $this->Table->RenameTmpTable(); } function Export(&$aResult, $bDropTable) { // Full Memory export return $this->Table->Export($aResult); } function ValidateDuration($iDuration) { if (!ValidateIntegerValue(trim($iDuration))) { return 20; } return $iDuration; } function GetLastInsertedId() { return $this->Table->GetLastInsertedId(); } function UpdateMessage(&$MessageData) { global $g_SessionVars; $aFields = array(); if ($MessageData["messageid"] == -1) { $aFields["userid"] = $MessageData["userid"]; $aFields["siteid"] = $MessageData["siteid"]; $aFields["GroupId"] = $MessageData["GroupId"]; $aFields["Title"] = $MessageData["Title"]; $aFields["TitleHtml"] = $MessageData["TitleHtml"]; $aFields["TitleBgColor"] = $MessageData["TitleBgColor"]; $aFields["TitleColor"] = $MessageData["TitleColor"]; $aFields["TitleBold"] = $MessageData["TitleBold"]; $aFields["TitleItalic"] = $MessageData["TitleItalic"]; $aFields["TitleUnderline"] = $MessageData["TitleUnderline"]; $aFields["TitleFontStyle"] = $MessageData["TitleFontStyle"]; $aFields["TitleFontSize"] = $MessageData["TitleFontSize"]; $aFields["PlainMsg"] = $MessageData["PlainMsg"]; $aFields["PlainMsgHtml"] = $MessageData["PlainMsgHtml"]; $aFields["PlainMsgBgColor"] = $MessageData["PlainMsgBgColor"]; $aFields["PlainMsgColor"] = $MessageData["PlainMsgColor"]; $aFields["PlainMsgBold"] = $MessageData["PlainMsgBold"]; $aFields["PlainMsgItalic"] = $MessageData["PlainMsgItalic"]; $aFields["PlainMsgUnderline"] = $MessageData["PlainMsgUnderline"]; $aFields["PlainMsgFontStyle"] = $MessageData["PlainMsgFontStyle"]; $aFields["PlainMsgFontSize"] = $MessageData["PlainMsgFontSize"]; $aFields["HtmlMsgEncoded"] = $MessageData["HtmlMsgEncoded"]; $aFields["Url"] = $MessageData["Url"]; $aFields["TickerFeed"] = $MessageData["TickerFeed"]; $aFields["Duration"] = $this->ValidateDuration($MessageData["Duration"]); $aFields["ImageLocationSelector"] = $MessageData["ImageLocationSelector"]; $aFields["ImageDisplaySelection"] = $MessageData["ImageDisplaySelection"]; $aFields["ImageKeepAspect"] = $MessageData["ImageKeepAspect"]; $aFields["Transition"] = $MessageData["Transition"]; $aFields["LastUpdated"] = time(); //$aFields["PublishedDate"] = time(); $aFields["Inserted"] = time(); $aFields["IsPublished"] = (GetSessionValue($g_SessionVars["UserType"]) != CUserTable::USERTYPE_EDITOR ? $MessageData["IsPublished"] : 2); $aFields["StatusChanged"] = $MessageData["StatusChanged"]; $aFields["LastAction"] = $this->aStatus["New"]; $aFields["MessageImage"] = $MessageData["MessageImage"]; $aFields["Ticker"] = $MessageData["Ticker"]; $aFields["SlideImagePublished"] = $MessageData["SlideImagePublished"]; $aFields["MessageGroupId"] = $MessageData["MessageGroupId"]; $aFields["MessageGroup"] = $MessageData["MessageGroup"]; $aFields["FormattedAddress"] = $MessageData["FormattedAddress"]; $aFields["Latitude"] = $MessageData["Latitude"]; $aFields["Longitude"] = $MessageData["Longitude"]; $aFields["GUID"] = (isset($MessageData["GUID"]) ? $MessageData["GUID"] : GetGUID()); $aFields["Rating"] = (isset($MessageData["Rating"]) ? $MessageData["Rating"] : self::RATING_NONE); $aFields["Likes"] = (isset($MessageData["Likes"]) ? $MessageData["Likes"] : 0); $aFields["Dislikes"] = (isset($MessageData["Dislikes"]) ? $MessageData["Dislikes"] : 0); $aFields["CreatedBySource"] = (isset($MessageData["CreatedBySource"]) ? $MessageData["CreatedBySource"] : 0); $iPlaceId = $this->GetPlaceId($MessageData); $aFields["placeid"] = $iPlaceId; return $this->Table->Insert($aFields); } else { $aFields["userid"] = $MessageData["userid"]; $aFields["siteid"] = $MessageData["siteid"]; $aFields["GroupId"] = $MessageData["GroupId"]; $aFields["Title"] = $MessageData["Title"]; $aFields["TitleHtml"] = $MessageData["TitleHtml"]; $aFields["TitleBgColor"] = $MessageData["TitleBgColor"]; $aFields["TitleColor"] = $MessageData["TitleColor"]; $aFields["TitleBold"] = $MessageData["TitleBold"]; $aFields["TitleItalic"] = $MessageData["TitleItalic"]; $aFields["TitleUnderline"] = $MessageData["TitleUnderline"]; $aFields["TitleFontStyle"] = $MessageData["TitleFontStyle"]; $aFields["TitleFontSize"] = $MessageData["TitleFontSize"]; $aFields["PlainMsg"] = $MessageData["PlainMsg"]; $aFields["PlainMsgHtml"] = $MessageData["PlainMsgHtml"]; $aFields["PlainMsgBgColor"] = $MessageData["PlainMsgBgColor"]; $aFields["PlainMsgColor"] = $MessageData["PlainMsgColor"]; $aFields["PlainMsgBold"] = $MessageData["PlainMsgBold"]; $aFields["PlainMsgItalic"] = $MessageData["PlainMsgItalic"]; $aFields["PlainMsgUnderline"] = $MessageData["PlainMsgUnderline"]; $aFields["PlainMsgFontStyle"] = $MessageData["PlainMsgFontStyle"]; $aFields["PlainMsgFontSize"] = $MessageData["PlainMsgFontSize"]; $aFields["HtmlMsgEncoded"] = $MessageData["HtmlMsgEncoded"]; $aFields["Url"] = $MessageData["Url"]; $aFields["TickerFeed"] = $MessageData["TickerFeed"]; $aFields["Duration"] = $this->ValidateDuration($MessageData["Duration"]); $aFields["ImageLocationSelector"] = $MessageData["ImageLocationSelector"]; $aFields["ImageDisplaySelection"] = $MessageData["ImageDisplaySelection"]; $aFields["ImageKeepAspect"] = $MessageData["ImageKeepAspect"]; $aFields["Transition"] = $MessageData["Transition"]; //$aFields["PublishedDate"] = $MessageData["PublishedDate"]; //$aFields["Inserted"] = $MessageData["Inserted"]; $aFields["IsPublished"] = (GetSessionValue($g_SessionVars["UserType"]) != CUserTable::USERTYPE_EDITOR ? $MessageData["IsPublished"] : 2); $aFields["LastAction"] = (isset($MessageData["LastAction"]) ? $MessageData["LastAction"] : $this->aStatus["Modified"]); $aFields["StatusChanged"] = (isset($MessageData["StatusChanged"]) ? $MessageData["StatusChanged"] : 0); $aFields["Ticker"] = $MessageData["Ticker"]; $aFields["SlideImagePublished"] = $MessageData["SlideImagePublished"]; $aFields["MessageGroupId"] = $MessageData["MessageGroupId"]; $aFields["MessageGroup"] = $MessageData["MessageGroup"]; $aFields["FormattedAddress"] = $MessageData["FormattedAddress"]; $aFields["Latitude"] = $MessageData["Latitude"]; $aFields["Longitude"] = $MessageData["Longitude"]; $aFields["Rating"] = $MessageData["Rating"]; $aFields["CreatedBySource"] = (isset($MessageData["CreatedBySource"]) ? $MessageData["CreatedBySource"] : 0); $this->DeleteAppArticle($MessageData); $this->DeleteMedia($MessageData); $this->InsertMedia($MessageData); $this->DeleteSocialMedia($MessageData); $this->InsertSocialMedia($MessageData); $this->InsertAppArticle($MessageData); $MessageInfo = array(); $this->GetMessageInformation($MessageInfo, $MessageData["messageid"]); // not for sorting messages if ($MessageInfo["LastAction"] != 4) { $aFields["LastUpdated"] = time(); if ($MessageInfo["IsPublished"] == 1 || $MessageInfo["IsPublished"] == 2) { $aFields["StatusChanged"] = 1; if (GetSessionValue($g_SessionVars["UserType"]) != CUserTable::USERTYPE_EDITOR) { $aFields["IsPublished"] = 0; } else { $aFields["IsPublished"] = 2; $aFields["StatusChanged"] = 0; } } else { if (GetSessionValue($g_SessionVars["UserType"]) == CUserTable::USERTYPE_EDITOR) { $aFields["IsPublished"] = 2; } } } $aFields["MessageImage"] = $MessageInfo["MessageImage"]; $MessageData = array_merge($MessageData, $aFields); $aWhere = array(); $aWhere["messageid"] = $MessageData["messageid"]; return $this->Table->Update($aFields, $aWhere); } } function InsertMedia($MessageInfo) { global $g_CustomImagesStore, $g_CustomImagesThumbStore, $g_Tmp; $SiteTable = new CSiteTable($this->Db); $aSiteInfo = array(); $SiteTable->GetSiteInformation($aSiteInfo, $MessageInfo["siteid"]); $MediaTable = new CMediaTable($this->Db); $RemoteMediaTable = new CRemoteMediaTable($this->Db); $CustomImageTable = new CCustomImageTable($this->Db); $ImageTable = new CImageTable($this->Db); $aSelectedMedia = $MessageInfo["mediatabs"]; foreach ($aSelectedMedia AS $MediaInfo) { if ($MediaInfo["type"] != "" && intval($MessageInfo["messageid"]) > 0) { //possible types: image / flash / customimage / remote //only insert when mediatype is enabled on site level switch ($MediaInfo["type"]) { case "image": case "flash": if (($MediaInfo["type"] == 'image' && $aSiteInfo["EnableImages"] == 1) || ($MediaInfo["type"] == 'flash' && $aSiteInfo["EnableFlash"] == 1)) { $MediaTable->Insert($MessageInfo["messageid"], $MediaInfo["placeid"], $MediaInfo["mediatypeid"], $MediaInfo["type"], json_encode($MediaInfo["settings"])); } break; case "customimage": if ($aSiteInfo["EnableImages"] == 1) { $aImageResult = array(); $ImageTable->GetImageInfo($aImageResult, $MediaInfo["originalimageid"]); $path_parts = pathinfo(base64_decode($MediaInfo["url"])); $savedfileName = $path_parts['basename']; $CustomImageTable->Insert($MediaInfo["originalimageid"], $aImageResult["Name"], $savedfileName, $MediaInfo["bordereffect"]); $customImageId = $CustomImageTable->GetLastInsertedId(); if (!file_exists($g_CustomImagesStore . $savedfileName)) { //move the img to customimage folder @rename(base64_decode($MediaInfo["url"]), $g_CustomImagesStore . $savedfileName); //move thumb to customimage thumb folder @rename(base64_decode($MediaInfo["thumb"]), $g_CustomImagesThumbStore . $savedfileName); } else { //delete the image from the temp folder if (base64_decode($MediaInfo["url"]) != $g_CustomImagesStore . $savedfileName) { unlink(base64_decode($MediaInfo["url"])); unlink(base64_decode($MediaInfo["thumb"])); } } list($hashPart,) = explode("_", $savedfileName); // delete all possible types of borderimage for ($i=1; $i<=8; $i++){ $fileName = $hashPart .'_'. $i .'.'. $path_parts['extension']; $thumbName = $hashPart .'_'. $i .'_thumb.'. $path_parts['extension']; // suppress possible warnings, because not all effect images are present @unlink($g_Tmp . $fileName); @unlink($g_Tmp . $thumbName); } // insert new entry into mediatable $MediaTable->Insert($MessageInfo["messageid"], $MediaInfo["placeid"], $customImageId, "customimage", json_encode($MediaInfo["settings"])); } break; default: if (($MediaInfo["remotetype"] == "imageremote" && $aSiteInfo["EnableImages"] == 1) || (($MediaInfo["remotetype"] == "videolocal" || $MediaInfo["remotetype"] == "videoremote" || $MediaInfo["remotetype"] == "stream") && $aSiteInfo["EnableVideos"] == 1) || ($MediaInfo["remotetype"] == "flashremote" && $aSiteInfo["EnableFlash"] == 1) || ($MediaInfo["remotetype"] == "youtube" && $aSiteInfo["EnableYouTube"] == 1) ) { // new entry in remotemediatable $RemoteMediaTable->Insert($MediaInfo["remotetype"], $MediaInfo["url"], $MediaInfo["thumb"], $MediaInfo["description"]); $iMediaTypeId = $RemoteMediaTable->GetLastInsertedId(); // new entry in mediatable $MediaTable->Insert($MessageInfo["messageid"], $MediaInfo["placeid"], $iMediaTypeId, $MediaInfo["type"], json_encode($MediaInfo["settings"])); } break; } } } } function DeleteMedia($MessageInfo) { global $g_CustomImagesStore, $g_CustomImagesThumbStore; $iMessageId = $MessageInfo["messageid"]; $MediaTable = new CMediaTable($this->Db); $RemoteMediaTable = new CRemoteMediaTable($this->Db); $CustomImageTable = new CCustomImageTable($this->Db); $MediaInfo = array(); $MediaTable->GetMediaInfoForMessage($MediaInfo, $iMessageId, GetConfigVar("TotalMediaTabs", "Media")); if (!is_array($MediaInfo) || count($MediaInfo) == 0) { return; } for ($i = 1; $i <= GetConfigVar("TotalMediaTabs", "Media"); $i++) { if (!isset($MediaInfo[$i]["mediatype"]) || ($MediaInfo[$i]["mediatype"] != "remote" && $MediaInfo[$i]["mediatype"] != "customimage")) { continue; } // delete entries from remotemediatable if (isset($MediaInfo[$i]["mediatypeId"]) && $MediaInfo[$i]["mediatypeId"] > 0 && $MediaInfo[$i]["mediatype"] == "remote") { $RemoteInfo = array(); $RemoteMediaTable->GetRemoteMediaInfo($RemoteInfo, $MediaInfo[$i]["mediatypeId"]); if (isset($RemoteInfo["type"]) && $RemoteInfo["type"] == "imageremote" && trim($RemoteInfo["thumb"]) != "") { // we need to know if the thumb is deleted if (isset($MessageInfo["mediatabs"]) && $MessageInfo["mediatabs"][$i]["thumb"] == "") { // delete local thumb from online image $OnlineThumb = base64_decode($RemoteInfo["thumb"]); if (file_exists($OnlineThumb)) { unlink($OnlineThumb); } } } $RemoteMediaTable->Delete($MediaInfo[$i]["mediatypeId"]); } //delete entries from customimagetable if (isset($MediaInfo[$i]["mediatypeId"]) && $MediaInfo[$i]["mediatypeId"] > 0 && $MediaInfo[$i]["mediatype"] == "customimage") { $CustomImageInfo = array(); $CustomImageTable->GetCustomImageInfo($CustomImageInfo, $MediaInfo[$i]["mediatypeId"]); if (!is_array($CustomImageInfo) || !isset($CustomImageInfo["ImageId"])) { continue; } if (isset($MessageInfo["mediatabs"]) && isset($MessageInfo["mediatabs"][$i]) && $MessageInfo["mediatabs"][$i]["bordereffect"] != $CustomImageInfo["Effect"] && $MessageInfo["mediatabs"][$i]["originalimageid"] != $CustomImageInfo["ImageId"]) { //Delete the images if not in use for other messages if (!$CustomImageTable->InUseForOtherMessages($CustomImageInfo["ImageId"], $CustomImageInfo["Effect"]) ) { $CustomImage = $g_CustomImagesStore . $CustomImageInfo["SavedFileName"]; $CustomImageThumb = $g_CustomImagesThumbStore . $CustomImageInfo["SavedFileName"]; if (file_exists($CustomImage)) { unlink($CustomImage); unlink($CustomImageThumb); } } } $CustomImageTable->Delete($MediaInfo[$i]["mediatypeId"]); } } // delete entries from mediatable $MediaTable->DeleteByMessageId($iMessageId); } function InsertSocialMedia($MessageInfo) { $Message_SocialMedia = new CMessage_SocialMediaTable($this->Db); $aSocialMedia = $MessageInfo["SocialMedia"]; //WriteToLog("CMessageTable :: InsertSocialMedia(), ". var_export($aSocialMedia, true)); foreach ($aSocialMedia AS $aSocialInfo) { if ($aSocialInfo["Published"] != CSocialMediaStatus::NOTENABLED) { $aData = ['MessageId' => $MessageInfo["messageid"], 'Guid' => GetGUID(), 'Type' => $aSocialInfo["Type"], 'Enabled' => $aSocialInfo["Enabled"], 'Published' => $aSocialInfo["Published"], 'Title' => $aSocialInfo["Title"], 'Body' => $aSocialInfo["Body"], 'MediaId' => $aSocialInfo["MediaId"], 'HyperlinkEnabled' => $aSocialInfo["HyperlinkEnabled"], 'Date' => time(), 'Parameter' => $aSocialInfo["Parameter"]]; $Message_SocialMedia->Insert($aData); } } } function DeleteSocialMedia($MessageInfo) { $iMessageId = $MessageInfo["messageid"]; if ($iMessageId <= 0) { return; } WriteToLog(__METHOD__ ."(), for messageid " . $iMessageId); $Message_SocialMedia = new CMessage_SocialMediaTable($this->Db); // delete entries from kpl socialmedia table //$Message_SocialMedia->DeleteByMessageId($iMessageId); $Message_SocialMedia->Delete(['MessageId' => $iMessageId]); } function GetMediaForMessage(&$MessageInfo) { global $g_MediaDictionary, $g_CustomImagesStore, $g_CustomImagesThumbStore; global $g_SharedVars; $aMediaForMessage = array(); $MediaTable = new CMediaTable($this->Db); $MediaTable->GetMediaInfoForMessage($aMediaForMessage, $MessageInfo["messageid"], GetConfigVar("TotalMediaTabs", "Media")); $iDomainId = GetSessionValue("DomainId"); if ($MessageInfo["GroupId"] == $g_SharedVars["DefaultTemplateGroupId"] && is_numeric($iDomainId) && $iDomainId > 0) { // get from channelcfgforsite $aChannelCfgInfo = array(); $ChannelCfgForSite = new CChannelCfgForSiteTable($this->Db); if ($ChannelCfgForSite->GetChannelCfgInfo($aChannelCfgInfo, $MessageInfo["siteid"])) { $MessageInfo["GroupId"] = $aChannelCfgInfo["DefaultTemplateGroup"]; } } $aTemplatesInfo = array(); $ChannelTemplateTable = new CChannelTemplateTable($this->Db); $ChannelTemplateTable->GetTemplatesForTemplateGroup($aTemplatesInfo, $MessageInfo["GroupId"]); $aGroupInfo = array(); $ChannelTemplateGroupTable = new CChannelTemplateGroupTable($this->Db); $ChannelTemplateGroupTable->GetGroupInfo($aGroupInfo, $MessageInfo["GroupId"]); $aTemplateObjects = array(); $Management_Templates = new CManagement_Templates($this->Db, new CBreadCrumb()); $Management_Templates->GetTemplateGroupObjectInfo($aTemplateObjects, $MessageInfo["GroupId"]); $aTemplatesInfo = array_merge($aTemplatesInfo, $aTemplateObjects); $aAspectRatios = array(); if (is_array($aTemplatesInfo) && isset($aTemplatesInfo[0]) && isset($aTemplatesInfo[0]["id"])) { $Management_Templates = new CManagement_Templates($this->Db, new CBreadCrumb()); $aAspectRatios = $Management_Templates->GetMediaAspectRatios($aTemplatesInfo[0]["id"]); } $MessageInfo["mediatabs"] = array(); for ($i = 1; $i <= GetConfigVar("TotalMediaTabs", "Media"); $i++) { $aMedia = $aMediaForMessage[$i]; $iBpos = isset($aAspectRatios[$i]) ? $aAspectRatios[$i] : 1; $MediaInfo = array(); $MediaInfo["placeid"] = $i; $MediaInfo["type"] = isset($aMedia["mediatype"]) ? $aMedia["mediatype"] : ""; $MediaInfo["mediatypeid"] = isset($aMedia["mediatypeId"]) ? $aMedia["mediatypeId"] : "-1"; $MediaInfo["settings"] = isset($aMedia["settings"]) ? json_decode($aMedia["settings"], true) : array('MuteAudio' => 0, 'Bpos' => $iBpos); $iAspectRatio = $MediaInfo["settings"]["Bpos"]; $MediaInfo["aspectratio"] = $iAspectRatio; $MediaInfo["muteaudio"] = $MediaInfo["settings"]["MuteAudio"]; $MediaInfo["remotetype"] = ""; if (isset($aMedia["mediatype"]) && isset($g_MediaDictionary[$aMedia["mediatype"]])) { $MediaInfo["remotetype"] = $g_MediaDictionary[$aMedia["mediatype"]]; } elseif (isset($aMedia["mediatype"])) { $MediaInfo["remotetype"] = $aMedia["mediatype"]; } $MediaInfo["url"] = ""; $MediaInfo["thumb"] = ""; $MediaInfo["description"] = ""; $MediaInfo["bordereffect"] = ""; $MediaInfo["originalimageid"] = ""; if ($MediaInfo["type"] == "remote") { $RemoteMediaInfo = array(); $RemoteMediaTable = new CRemoteMediaTable($this->Db); $RemoteMediaTable->GetRemoteMediaInfo($RemoteMediaInfo, $aMedia["mediatypeId"]); if (is_array($RemoteMediaInfo) && isset($RemoteMediaInfo["url"])) { $MediaInfo["remotetype"] = $RemoteMediaInfo["type"]; $MediaInfo["url"] = $RemoteMediaInfo["url"]; $MediaInfo["thumb"] = $RemoteMediaInfo["thumb"]; $MediaInfo["description"] = $RemoteMediaInfo["description"]; } else { WriteToLog("CMessageTable :: GetMediaForMessage(), No Remote Media info found for Media with id " . $aMedia["mediatypeId"] . " ( " . $MessageInfo["messageid"] . " )"); } } if ($MediaInfo["type"] == "customimage") { $CustomImageInfo = array(); $CustomImageTable = new CCustomImageTable($this->Db); $CustomImageTable->GetCustomImageInfo($CustomImageInfo, $aMedia["mediatypeId"]); if (is_array($CustomImageInfo) && isset($CustomImageInfo["ImageId"])) { $MediaInfo["url"] = base64_encode($g_CustomImagesStore . $CustomImageInfo["SavedFileName"]); $MediaInfo["thumb"] = base64_encode($g_CustomImagesThumbStore . $CustomImageInfo["SavedFileName"]); $MediaInfo["bordereffect"] = $CustomImageInfo["Effect"]; $MediaInfo["originalimageid"] = $CustomImageInfo["ImageId"]; } else { WriteToLog("CMessageTable :: GetMediaForMessage(), No Custom Image info found for Media with id " . $aMedia["mediatypeId"] . " ( " . $MessageInfo["messageid"] . " )"); } } $MessageInfo["mediatabs"][$i] = $MediaInfo; } } function GetItemSettings($iItemSettings) { $aRetVals = array(); $strBinSettings = str_pad(decbin($iItemSettings), 2, '0', STR_PAD_LEFT); // always a string with length 2 $aRetVals['aspectratio'] = substr($strBinSettings, 1, 1); $aRetVals['muteaudio'] = substr($strBinSettings, 0, 1); return $aRetVals; } function GetSocialMediaForMessage(&$MessageInfo) { $aSocialMediaForMessage = array(); $Message_SocialMediaTable = new CMessage_SocialMediaTable($this->Db); $Message_SocialMediaTable->GetSocialMediaInfoForMessage($aSocialMediaForMessage, $MessageInfo["messageid"]); $MessageInfo["SocialMedia"] = array(); $MessageInfo["SocialMedia"] = $aSocialMediaForMessage; } function InsertAppArticle($MessageInfo) { $iMessageId = $MessageInfo["messageid"]; $aAppArticle = $MessageInfo["AppArticle"]; $aAppArticle["MessageId"] = $iMessageId; if ( $aAppArticle["Enabled"] == CAppArticleTable::ENABLED_ON || $aAppArticle["Enabled"] == CAppArticleTable::ENABLED_ON_SEPERATETEXT || ($aAppArticle["Enabled"] == CAppArticleTable::ENABLED_OFF && $aAppArticle["Update"] == 1) ) { $aAppArticle['NotificationPublished'] = 0; $CAppArticleTable = new CAppArticleTable($this->Db); if (!$CAppArticleTable->Insert($aAppArticle)) { WriteToLog(__METHOD__ . "(), Failed for $iMessageId"); return; } $iArticleId = $CAppArticleTable->GetLastInsertedId(); $aAppCategries = array(); $CAppCategoryTable = new CAppCategoryTable($this->Db); $CAppCategoryTable->GetRows($aAppCategries, array("SiteId" => $MessageInfo["siteid"])); foreach ($aAppCategries as $aCategory) { $iCategoryId = $aCategory[CAppCategoryTable::PRIMARYKEYFIELD]; $aKplData = array( "AppCategoryId" => $iCategoryId, "AppArticleId" => $iArticleId ); $Ckpl_AppCategory_AppArticleTable = new CKpl_AppCategory_AppArticleTable($this->Db); $Ckpl_AppCategory_AppArticleTable->Insert($aKplData); } $MediaTable = new CMediaTable($this->Db); $aMediaInfos = array(); $MediaTable->GetMediaInfoForMessage($aMediaInfos, $iMessageId, GetConfigVar("TotalMediaTabs", "Media")); foreach ($aMediaInfos as $aMediaInfo) { if (!isset($aMediaInfo["mediatype"])) { continue; } if ( ($aMediaInfo["mediatype"] == CMediaTable::TYPE_IMAGE) || ($aMediaInfo["mediatype"] == CMediaTable::TYPE_CUSTOMIMAGE) || ($aMediaInfo["mediatype"] == CMediaTable::TYPE_REMOTE) ) { $aKplMedia = array( "AppArticleId" => $iArticleId, "MediaId" => $aMediaInfo["mediaid"] ); $Ckpl_AppArticle_MediaTable = new CKpl_AppArticle_MediaTable($this->Db); $Ckpl_AppArticle_MediaTable->Insert($aKplMedia); } } } } function DeleteAppArticle($MessageInfo) { $iMessageId = $MessageInfo["messageid"]; if ($iMessageId <= 0) { return; } $CAppArticleTable = new CAppArticleTable($this->Db); $CAppCategoryTable = new CAppCategoryTable($this->Db); $CAppSectionTable = new CAppSectionTable($this->Db); $Ckpl_AppArticle_MediaTable = new CKpl_AppArticle_MediaTable($this->Db); $Ckpl_AppCategory_AppArticleTable = new CKpl_AppCategory_AppArticleTable($this->Db); $aAppArticle = array(); if ($CAppArticleTable->GetRow($aAppArticle, array("MessageId" => $iMessageId))) { $aAppArticleMedia = array(); $Ckpl_AppArticle_MediaTable->GetRows($aAppArticleMedia, array("AppArticleId" => $aAppArticle[CAppArticleTable::PRIMARYKEYFIELD])); $aAppArticleCategories = array(); $Ckpl_AppCategory_AppArticleTable->GetRows($aAppArticleCategories, array("AppArticleId" => $aAppArticle[CAppArticleTable::PRIMARYKEYFIELD])); foreach ($aAppArticleCategories as $aAppArticleCategory) { $aAppCategoryInfo = array(); if ($CAppCategoryTable->GetRow($aAppCategoryInfo, array(CAppCategoryTable::PRIMARYKEYFIELD => $aAppArticleCategory['AppCategoryId'])) ) { $aAppSectionInfo = array(); $CAppSectionTable->GetRow($aAppSectionInfo, array(CAppSectionTable::PRIMARYKEYFIELD => $aAppCategoryInfo["AppSectionId"])); foreach ($aAppArticleMedia as $aAppArticleMediaInfo) { $CAppMediaItem = new CAppMediaItem($aAppSectionInfo, $aAppArticleMediaInfo['MediaId']); $CAppMediaItem->Delete($aAppArticle[CAppArticleTable::PRIMARYKEYFIELD]); } } } $Ckpl_AppCategory_AppArticleTable->Delete(array("AppArticleId" => $aAppArticle[CAppArticleTable::PRIMARYKEYFIELD])); //$Ckpl_AppArticle_MediaTable->Delete(array("AppArticleId" => $aAppArticle[CAppArticleTable::PRIMARYKEYFIELD])); } $CAppArticleTable->Delete(array("MessageId" => $iMessageId)); } function GetAppArticleForMessage(&$MessageInfo) { global $g_SessionVars; $aAppArticle = CAppArticleTable::$aDefaultValues; // only for new messages if ($MessageInfo['messageid'] == -1) { $iSiteId = GetSessionValue($g_SessionVars['ActiveSite']); $aSiteInfo = GetSiteInfo($iSiteId); // comments default enabled -> MS-683 $aAppArticle['AllowReact'] = CAppArticleTable::COMMENTTYPE_COMMENTS; if (isset($aSiteInfo['AutoEnableApp']) && $aSiteInfo['AutoEnableApp'] == 1) { $aAppArticle['Enabled'] = CAppArticleTable::ENABLED_ON; } } $aAppArticleForMessage = array(); $CAppArticleTable = new CAppArticleTable($this->Db); if ($CAppArticleTable->GetRow($aAppArticleForMessage, array("MessageId" => $MessageInfo["messageid"], "Kind" => CAppArticleTable::KIND_MESSAGE)) ) { $aAppArticle = $aAppArticleForMessage; } $MessageInfo['AppArticle'] = $aAppArticle; } /** * Delete all site messages tagged with LastAction "Delete" * @param $iSiteId * @param $iDomainId * @param $DeletedMessage * @return bool */ function PerformDelete($iSiteId, $iDomainId, &$DeletedMessage) { global $g_Db; $bDeleteSocialMedia = false; if (GetDomainConfigVar("DeleteSocialMedia", "General", $iDomainId) === true) { $bDeleteSocialMedia = true; } $aWhere = array(); $aWhere["LastAction"] = $this->aStatus["Deleted"]; $aWhere["siteid"] = $iSiteId; $aSiteInfo = GetSiteInfo($iSiteId); $SocialMediaTable = new CSocialMediaTable($g_Db); $Message_SocialMediaTable = new CMessage_SocialMediaTable($g_Db); $FacebookModule = new CFacebookModule($aSiteInfo); $FacebookModule->SetFacebookInfo($iSiteId, $iDomainId); $TwitterModule = new CTwitterModule($aSiteInfo); $TwitterModule->SetTwitterInfo($iSiteId, $iDomainId); $BlogModule = new CBlogModule($aSiteInfo); $aResult = array(); if ($this->Table->Select($aResult, $aWhere)) { foreach ($aResult as $Result) { $MessageInfo = $Result; $MessageInfo["TotalMediaTabs"] = GetConfigVar("TotalMediaTabs", "Media"); $this->GetMediaForMessage($MessageInfo); $iMessageId = intval($MessageInfo["messageid"]); $this->DeleteAppArticle($MessageInfo); $this->DeleteMedia($MessageInfo); $this->DeleteMessagePreview($MessageInfo["MessageImage"]); $this->DeleteSlideHDImages($aSiteInfo, $MessageInfo); // check for bannermodule -> enabled? remove banners for message if (GetConfigVar('EnableBannerModule', 'General')) { $CBannerModule = new CBannerModule($aSiteInfo); $CBannerModule->SetPaths(); $CBannerModule->DeleteBanners('MS', $iMessageId); } $CCommentsTable = new CCommentsTable($g_Db); $CCommentsTable->Delete(['MessageId' => $iMessageId]); //$Message_SocialMediaTable->DeleteByMessageId($iMessageId); $Message_SocialMediaTable->Delete(['MessageId' => $iMessageId]); $aSocialInfo = array(); $SocialMediaTable->GetSocialMediaInfoForMessage($aSocialInfo, $iMessageId); if ($bDeleteSocialMedia) { // also delete from Facebook and / or Twitter websites foreach ($aSocialInfo AS $aSocialMessage) { if ($aSocialMessage["Type"] == "Facebook") { if ($FacebookModule->GetAccessToken()!=''){ $FacebookModule->DeleteMessage($aSocialMessage["SocialID"]); } } elseif ($aSocialMessage["Type"] == "Twitter") { if (count($TwitterModule->GetTwitterInfo())>0) { $TwitterModule->DeleteMessage($aSocialMessage["SocialID"]); } } elseif ($aSocialMessage["Type"] == "Blog") { $BlogModule->DeletePost($aSocialMessage["SocialID"]); } } // delete entry from SocialMedia table $SocialMediaTable->DeleteByMessageId($iMessageId); } if ($this->IsSubMessage($MessageInfo)) { $aSubMessages = array(); $this->GetAllSubMessage($aSubMessages, $MessageInfo['MessageGroupId']); if (is_array($aSubMessages) && count($aSubMessages) == 1) { WriteToLog("CMessageTable :: Delete(), Updating Head Message " . $MessageInfo['MessageGroupId'] . " to Normal Message"); $aHeadMessageInfo = array(); // last sub message -> update the head message to normal message $this->GetMessageInformation($aHeadMessageInfo, $MessageInfo['MessageGroupId']); //WriteToLog("CMessageTable :: PerformDelete( ". $MessageInfo['MessageGroupId'] ." ), HeadMessageInfo ". var_export($aHeadMessageInfo, true)); // head message can just be deleted in the same delete action // so check if it's really found in database if (is_array($aHeadMessageInfo) && isset($aHeadMessageInfo['messageid'])) { $aHeadMessageInfo['MessageGroup'] = 0; $this->UpdateMessage($aHeadMessageInfo); } } } $aWhere = array(); $aWhere["messageid"] = $MessageInfo["messageid"]; $this->Table->Delete($aWhere); } $DeletedMessage = $aResult; return true; } } function Delete($iMsgId) { $aFields = array(); $aFields["LastAction"] = $this->aStatus["Deleted"]; $aFields["StatusChanged"] = 0; $aWhere = array(); $aWhere["messageid"] = $iMsgId; return $this->Table->Update($aFields, $aWhere); } function DeleteBySiteId($iSiteId, $iDomainId = null) { if (!is_numeric($iDomainId) || $iDomainId <= 0) { $iDomainId = GetSessionValue('DomainId'); } // get messages for this site $aMessages = array(); $this->GetMessagesBySiteId($aMessages, $iSiteId); foreach ($aMessages AS $Key => $Message) { // set flag deleted $this->Delete($Message["messageid"]); } // delete messages $DeletedMessage = array(); $this->PerformDelete($iSiteId, $iDomainId, $DeletedMessage); } /* * Remove the image identified by the media id from all messages * and reset all necessary properties to default. */ function RemoveMediaFromMessages($iMediaTypeId, $strType) { global $g_Db; WriteToLog(__METHOD__ . ", mediaid [$iMediaTypeId] type [$strType]"); // select from media table where mediatypeId = iMediaId $aMedia = array(); $MediaTable = new CMediaTable($g_Db); if ($MediaTable->GetMediaTypeInfo($aMedia, $iMediaTypeId, $strType)) { $CAppSectionTable = new CAppSectionTable($g_Db); foreach ($aMedia AS $Media) { $aAppSections = array(); $CAppSectionTable->GetRows($aAppSections); foreach ($aAppSections as $aAppSectionInfo) { $CAppMediaItem = new CAppMediaItem($aAppSectionInfo, $Media['mediaid']); $CAppMediaItem->Delete(); } if ($Media['place'] == 1) { // if place = 1 also update message image properties $aFields = array(); $aFields["ImageLocationSelector"] = ""; $aFields["ImageDisplaySelection"] = "0"; $aFields["ImageKeepAspect"] = "1"; $aWhere = array(); $aWhere["messageid"] = $Media['msgid']; $this->Table->Update($aFields, $aWhere); } $MediaTable->Delete($Media['mediaid']); } return true; } // nothing found? return false; } function GetMessageIdsBySiteId(&$aResult, $iSiteId) { $aWhere = array(); $aWhere["siteid"] = $iSiteId; $aOrderBy = array(); $aOrderBy["placeid"] = "DESC"; $aResult = array(); if ($this->Table->Select($aResult, $aWhere, null, $aOrderBy) == 0) { return false; } return true; } function GetMessagesBySiteId( &$aSiteMessages, $iSiteId, $iOffset = null, $iSize = null, $strSortOrder = "", $strFilter = "" ) { if (!is_numeric($iSiteId) || $iSiteId <= 0) { WriteToLog("CMessageTable :: GetMessagesBySiteId(), No (correct) siteid given, returning ..."); return false; } global $g_aSocialMediaInEditMessage; $Result = array(); $aResult = array(); $aSocialInfo = array(); $aSocialInit = array( "Id" => "-1", "MessageId" => "0", "Enabled" => "0", "Published" => CSocialMediaStatus::NOTENABLED ); // if multiple SocialMedia / Outputs are checked, we get multiple records for 1 message // so we have to create an array with an entry for each message // that (always) has a socialmedia array with an entry for the selected SocialMedia / Outputs // msg.*, msg.Title AS MessageTitle, // kms.Title AS SocialTitle, // kms.*, // sdl.Housekeeping, $strFields = "kms.Type, msg.placeid, msg.Title, msg.PlainMsg, msg.messageid AS MessageGuid, msg.MessageGroupId AS MessageGroupId, msg.MessageGroup AS MessageGroup, msg.userid, msg.IsPublished, msg.StatusChanged, msg.LastAction, msg.LastUpdated, sdl.MessageId AS msgid, sdl.scheduleid, sdl.PeriodeStart, sdl.PeriodeStop, sdl.DailyStart, sdl.DailyStop, sdl.Days, sdl.AdvancedSchedule, sdl.SetStartDateAndTime, sdl.SetStopDateAndTime, sdl.TimeZoneInfo, sdl.Popup, msg.MessageImage, kms.Id AS SocialId, kms.MessageId AS SocialMessageId, kms.Published AS SocialPublished, kms.Enabled AS SocialEnabled, fbc.Enabled AS SiteFacebookEnabled, twc.Enabled AS SiteTwitterEnabled, emc.Enabled AS SiteEmailEnabled, smc.Enabled AS SiteSmsEnabled, blc.Enabled AS SiteBlogEnabled, apa.id AS AppArticleId, apa.Enabled AS AppArticleEnabled, apa.Kind AS AppArticleKind"; $strTables = "((((((((Message AS msg LEFT JOIN Schedule AS sdl ON msg.messageid = sdl.MessageId) LEFT JOIN Message_SocialMedia AS kms ON msg.messageid = kms.MessageId) LEFT JOIN AppArticle AS apa ON msg.messageid = apa.MessageId) LEFT JOIN FacebookCfg AS fbc ON (msg.siteid = fbc.siteid AND fbc.Program = 'MS')) LEFT JOIN TwitterCfg AS twc ON (msg.siteid = twc.siteid AND twc.Program = 'MS')) LEFT JOIN EmailCfg AS emc ON (msg.siteid = emc.siteid)) LEFT JOIN SmsCfg AS smc ON (msg.siteid = smc.siteid)) LEFT JOIN BlogCfg AS blc ON (msg.siteid = blc.siteid))"; $strWhere = "msg.siteid = " . $iSiteId . ""; if (trim($strFilter) != "") { $strWhere .= $strFilter; } $strOrderBy = "msg.placeid DESC"; if ($strSortOrder != "") { $strOrderBy = $strSortOrder; } if ($this->Table->SelectMultiple($Result, $strFields, $strTables, $strWhere, $strOrderBy, $iOffset, $iSize) > 0 ) { $iStoredId = 0; for ($i = 0; $i < count($Result); $i++) { if ($iStoredId != $Result[$i]["MessageGuid"]) { $aSocialInfo = array(); } if (isset($Result[$i]["Type"]) && is_string($Result[$i]["Type"]) && $Result[$i]["Type"] != "") { $aSocialMedia = array( "Id" => $Result[$i]["SocialId"], "MessageId" => $Result[$i]["MessageGuid"], "Enabled" => $Result[$i]["SocialEnabled"], "Published" => $Result[$i]["SocialPublished"] ); $aSocialInfo[$Result[$i]["Type"]] = $aSocialMedia; } //unset($Result[$i]["Title"]); //$Result[$i]["Title"] = $Result[$i]["MessageTitle"]; unset($Result[$i]["MessageId"]); $Result[$i]["messageid"] = $Result[$i]["MessageGuid"]; $aResult[$Result[$i]["messageid"]] = $Result[$i]; if (!isset($aResult[$Result[$i]["messageid"]]["SocialMedia"])) { $aResult[$Result[$i]["messageid"]]["SocialMedia"] = array(); } $aResult[$Result[$i]["messageid"]]["SocialMedia"] = $aSocialInfo; $iStoredId = $Result[$i]["messageid"]; } $aSiteMessages = array(); foreach ($aResult AS $aMessage) { $aSiteMessage = $aMessage; foreach ($g_aSocialMediaInEditMessage AS $strSocialType => $aSocialOpts) { $strType = $aSocialOpts["Type"]; $strPrefix = $aSocialOpts["Prefix"]; if (!array_key_exists($strType, $aMessage["SocialMedia"])) { $aSiteMessage["SocialMedia"][$strType] = $aSocialInit; } $aSiteMessage[$strPrefix . "Published"] = $aSiteMessage["SocialMedia"][$strType]["Published"]; } $aSiteMessages[] = $aSiteMessage; } return true; } return false; } function GetMessagesBySiteIdForApi(&$aResult, $iSiteId, $iClientUserId = null) { $strFields = "msg.*, msg.PlainMsgHtml as PlainMsgHtml, rsc.enabled as RssEnabled, moc.enabled as MobileEnabled, chc.enabled as PlayerEnabled, arc.enabled as ArchiveEnabled, intr.enabled as IntranetEnabled "; $strTables = "(((((Message AS msg LEFT JOIN IntranetCfg AS intr ON (msg.siteid = intr.siteid)) LEFT JOIN MobileCfg AS moc ON (msg.siteid = moc.siteid)) LEFT JOIN RssCfg AS rsc ON (msg.siteid = rsc.siteid)) LEFT JOIN ChannelCfgForSite AS chc ON (msg.siteid = chc.siteid)) LEFT JOIN ArchiveCfg AS arc ON (msg.siteid = arc.siteid)) "; $strWhere = "msg.siteid = " . $iSiteId . ""; if(is_numeric($iClientUserId)) { $strWhere .= ' AND msg.ClientUserId=' . $iClientUserId; } if ($this->Table->SelectMultiple($aResult, $strFields, $strTables, $strWhere) > 0) { return true; } return false; } function GetMessagesForFirstPublish(&$aResult, $iSiteId) { $strFields = "messageid, siteid"; $strTables = "Message"; $strWhere = "siteid = " . $iSiteId . " AND (PublishedDate IS NULL OR PublishedDate = 0)"; if ($this->Table->SelectMultiple($aResult, $strFields, $strTables, $strWhere) > 0) { return true; } return false; } function GetMessagesByDomain(&$aDomainMessages, $iDomainId) { global $g_Db; if (!is_numeric($iDomainId) || $iDomainId <= 0) { WriteToLog("CMessageTable :: GetAllMessagesFormDomain(), No (correct) DomainId given, returning ..."); return false; } $SiteTable = new CSiteTable($g_Db); $aSites = array(); $SiteTable->GetSitesByDomainId($aSites, $iDomainId); foreach ($aSites as $Site) { $aSiteMessages = array(); if ($this->GetMessageIdsBySiteId($aSiteMessages, $Site["siteid"])) { foreach ($aSiteMessages as $SiteMessage) { $aMessageInfo = array(); $this->GetMessageInformation($aMessageInfo, $SiteMessage["messageid"]); $aDomainMessages[] = $aMessageInfo; } } else { return false; } } return true; } function GetFilterForMessages() { $strFilter = ""; $strWhere = ""; if (isset($_SESSION["FilterOption"]) && $_SESSION["FilterOption"] != "") { $strFilter = $_SESSION["FilterOption"]; } /* * Nico [11-02-2015]: not used anymore * switch($strFilter) { case "on": $strWhere = " AND (( msg.IsPublished = 0 AND msg.StatusChanged = 1 ) OR ( msg.IsPublished = 1 AND msg.StatusChanged = 0 ))"; break; case "off": $strWhere = " AND (( msg.IsPublished = 1 AND msg.StatusChanged = 1 ) OR ( msg.IsPublished = 0 AND msg.StatusChanged = 0 ))"; break; case "twitter": $strWhere = " AND ( kms.Type = 'Twitter' AND kms.Enabled > 0 )"; break; case "facebook": $strWhere = " AND ( kms.Type = 'Facebook' AND kms.Enabled > 0 )"; break; }*/ return array($strFilter, $strWhere); } function GetMessageType($message) { if ($this->IsHeadMessage($message)) { $type = self::TYPE_HEAD; } else { if ($this->IsSubMessage($message)) { $type = self::TYPE_SUB; } else { $type = self::TYPE_NORMAL; } } return $type; } function IsHeadMessage($message) { if (isset($message["MessageGroup"]) && $message["MessageGroup"] > 0) { return true; } else { return false; } } function IsSubMessage($message) { if (isset($message["MessageGroupId"]) && $message["MessageGroupId"] != 0) { return true; } else { return false; } } function GetMessageInformation(&$MessageInfo, $iMsgId, $bAlsoLinkTables = true) { $aWhere = array(); $aWhere["messageid"] = $iMsgId; $aResult = array(); if ($this->Table->Select($aResult, $aWhere) == 0) { return false; } $MessageInfo = $aResult[0]; if ($bAlsoLinkTables) { $MessageInfo["TotalMediaTabs"] = GetConfigVar("TotalMediaTabs", "Media"); $this->GetMediaForMessage($MessageInfo); $this->GetSocialMediaForMessage($MessageInfo); $this->GetAppArticleForMessage($MessageInfo); } return true; } function GetMessageInformationForApi(&$MessageInfo, $iMsgId) { $strFields = "msg.messageid, msg.isPublished, msg.GUID, msg.Title, msg.PlainMsg, msg.siteid, msg.Url, msg.GroupId, msg.MessageImage, msg.PlainMsgHtml as PlainMsgHtml, msg.PublishedDate, msg.Duration, msg.HtmlMsgEncoded, msg.Transition, msg.Ticker, msg.TickerFeed, msg.Rating, fbc.enabled as FacebookEnabled, twc.enabled as TwitterEnabled, emc.enabled as EmailEnabled, smc.enabled as SmsEnabled, blc.enabled as BlogEnabled, rsc.enabled as RssEnabled, moc.enabled as MobileEnabled, chc.enabled as PlayerEnabled, arc.enabled as ArchiveEnabled, intc.enabled as IntranetEnabled "; $strTables = "(((((((((((((Message AS msg LEFT JOIN Schedule AS sdl ON msg.messageid = sdl.MessageId) LEFT JOIN Message_SocialMedia AS kms ON msg.messageid = kms.MessageId) LEFT JOIN AppArticle AS apa ON msg.messageid = apa.MessageId) LEFT JOIN FacebookCfg AS fbc ON (msg.siteid = fbc.siteid AND fbc.Program = 'MS')) LEFT JOIN TwitterCfg AS twc ON (msg.siteid = twc.siteid AND twc.Program = 'MS')) LEFT JOIN EmailCfg AS emc ON (msg.siteid = emc.siteid)) LEFT JOIN SmsCfg AS smc ON (msg.siteid = smc.siteid)) LEFT JOIN MobileCfg AS moc ON (msg.siteid = moc.siteid)) LEFT JOIN RssCfg AS rsc ON (msg.siteid = rsc.siteid)) LEFT JOIN ChannelCfgForSite AS chc ON (msg.siteid = chc.siteid)) LEFT JOIN ArchiveCfg AS arc ON (msg.siteid = arc.siteid)) LEFT JOIN IntranetCfg AS intc ON (msg.siteid = intc.siteid)) LEFT JOIN BlogCfg AS blc ON (msg.siteid = blc.siteid))"; $strWhere = "msg.messageid = " . $iMsgId . ""; $aResult = array(); if ($this->Table->SelectMultiple($aResult,$strFields,$strTables ,$strWhere) == 0) { return false; } $MessageInfo = $aResult[0]; $this->GetSocialMediaForMessage($MessageInfo); $this->GetAppArticleForMessage($MessageInfo); return true; } function CountMessages($iSiteId = null) { $aWhere = null; if (is_numeric($iSiteId)) { $aWhere = array(); $aWhere["siteid"] = $iSiteId; } return $this->Table->CountRows($aWhere); } function UpdateMessages($aFields, $aWhere) { if (!is_array($aFields) || count($aFields) == 0) { WriteToLog(__METHOD__ . "(), No Fields found for Update, returning ..."); return false; } if (!is_array($aWhere) || count($aWhere) == 0) { WriteToLog(__METHOD__ . "(), No Where clause found for Update, returning ..."); return false; } return $this->Table->Update($aFields, $aWhere); } function UpdateStatus($aMessageInfo, $iMsgId) { //WriteToLog(__METHOD__ ."(), MsgId = $iMsgId -> ".$aMessageInfo["IsPublished"]." - ".$aMessageInfo["StatusChanged"]." - ".$aMessageInfo["LastAction"]); $aFields = array(); $aFields["IsPublished"] = $aMessageInfo["IsPublished"]; $aFields["StatusChanged"] = $aMessageInfo["StatusChanged"]; $aFields["LastAction"] = $aMessageInfo["LastAction"]; $aWhere = array(); $aWhere["messageid"] = $iMsgId; return $this->Table->Update($aFields, $aWhere); } function UpdateStatusForSite($StatusChanged, $iSiteId) { $aFields = array(); $aFields["StatusChanged"] = $StatusChanged; $aWhere = array(); $aWhere["siteid"] = $iSiteId; return $this->Table->Update($aFields, $aWhere); } function UpdateTemplateGroupForSite($iOldGroupId, $iNewGroupId, $iSiteId) { $aFields = array(); $aFields["GroupId"] = $iNewGroupId; $aWhere = array(); $aWhere["siteid"] = $iSiteId; $aWhere["GroupId"] = $iOldGroupId; return $this->Table->Update($aFields, $aWhere); } function UpdateSlideImagePublished($iMessageId, $iState) { $aFields = array(); $aFields["SlideImagePublished"] = $iState; $aWhere = array(); $aWhere["messageid"] = $iMessageId; return $this->Table->Update($aFields, $aWhere); } function UpdateMessageTypeFields($aMessageInfo, $iOldMessageType = CMessageTable::TYPE_HEAD) { global $g_Db, $g_SessionVars; $iSiteId = GetSessionValue($g_SessionVars['ActiveSite']); $aSiteInfo = GetSiteInfo($iSiteId); $ScheduleTable = new CScheduleTable($g_Db); if ($this->IsSubMessage($aMessageInfo)) { // sub message, update LastAction head message $aHeadMessageInfo = array(); $this->GetMessageInformation($aHeadMessageInfo, $aMessageInfo['MessageGroupId']); if ($aHeadMessageInfo['LastAction'] != $this->aStatus["Deleted"]) { $aHeadMessageInfo['LastAction'] = $this->aStatus['SubChanged']; } if ($aHeadMessageInfo['MessageGroup'] != 1) { $aHeadMessageInfo['MessageGroup'] = 1; $this->UpdateMessage($aHeadMessageInfo); } $this->UpdateStatus($aHeadMessageInfo, $aHeadMessageInfo['messageid']); // only if old type was sub or normal ( processSortable ) if ($iOldMessageType != CMessageTable::TYPE_HEAD) { // check if scheduling is enabled (messageserver wide and site based) if (GetConfigVar('SchedulingEnabled', 'General') && $aSiteInfo['EnableScheduling'] > 0) { $aSchedule = array(); // delete scheduling of this message $ScheduleTable->DeleteAllForMessageId($aMessageInfo['messageid']); // get scheduling of head if ($ScheduleTable->Get($aHeadMessageInfo['messageid'], $aSchedule)) { // insert head scheduling for sub $ScheduleTable->Insert($aMessageInfo['messageid'], $aSchedule); } } } } if ($this->IsHeadMessage($aMessageInfo)) { $aSubMessages = array(); $this->GetAllSubMessage($aSubMessages, $aMessageInfo['messageid']); foreach ($aSubMessages AS $aSubMessage) { if (GetConfigVar('SchedulingEnabled', 'General') && $aSiteInfo['EnableScheduling'] > 0) { $aSchedule = array(); if ($aMessageInfo['Schedule']['IsScheduled'] == '1') { $ScheduleTable->Get($aMessageInfo['messageid'], $aSchedule); $ScheduleTable->DeleteAllForMessageId($aSubMessage['messageid']); $ScheduleTable->Insert($aSubMessage['messageid'], $aSchedule); } else { WriteToLog("Found NO scheduling for " . $aMessageInfo['messageid']); $ScheduleTable->DeleteAllForMessageId($aSubMessage['messageid']); } } //adjust state $aSubMessage['IsPublished'] = $aMessageInfo['IsPublished']; $aSubMessage['StatusChanged'] = $aMessageInfo['StatusChanged']; $aSubMessage['LastAction'] = $aMessageInfo['LastAction']; $this->UpdateStatus($aSubMessage, $aSubMessage['messageid']); } } } function UpdateFields($aMessageInfo) { WriteToLog(__METHOD__ ."(), messageId = " . $aMessageInfo["messageid"]); $aFields = array(); $aFields["placeid"] = $aMessageInfo["placeid"]; $aFields["TitleHtml"] = $aMessageInfo["TitleHtml"]; $aFields["PlainMsgHtml"] = $aMessageInfo["PlainMsgHtml"]; $aFields["GUID"] = $aMessageInfo["GUID"]; $aWhere = array(); $aWhere["messageid"] = $aMessageInfo["messageid"]; return $this->Table->Update($aFields, $aWhere); } function replaceTemplateGroupIds($iOldTemplateGroupId, $iNewTemplateGroupId) { $aWhere = array(); $aWhere["GroupId"] = $iOldTemplateGroupId; $aResult = array(); if ($this->Table->Select($aResult, $aWhere) == 0) { return false; } $aFields = array(); $aFields["GroupId"] = $iNewTemplateGroupId; foreach ($aResult as $result) { if (!$this->Table->Update($aFields, $result)) { return false; } } return true; } function ResetLastAction($iMsgId) { $aFields = array(); $aFields["LastAction"] = $this->aStatus["None"]; $aWhere = array(); $aWhere["messageid"] = $iMsgId; return $this->Table->Update($aFields, $aWhere); } function ResetLastActionForSite($iSiteId) { $aFields = array(); $aFields["LastAction"] = $this->aStatus["None"]; $aWhere = array(); $aWhere["siteid"] = $iSiteId; return $this->Table->Update($aFields, $aWhere); } function GetHighestPlaceIdForSite($iSiteId) { $aSiteMessages = array(); $this->GetMessagesBySiteId($aSiteMessages, $iSiteId, null, null, "msg.placeid DESC"); if (is_array($aSiteMessages) && count($aSiteMessages) > 0) { return $aSiteMessages[0]['placeid']; } //no message yet return 0; } function GetPlaceId($aMessageData) { $iSiteId = $aMessageData["siteid"]; if ($this->IsSubMessage($aMessageData)) { WriteToLog("CMessageTable :: GetPlaceId(), messagegroupid [" . $aMessageData['MessageGroupId'] . "]"); $aSubMessageInfo = array(); $this->GetAllSubMessage($aSubMessageInfo, $aMessageData['MessageGroupId']); if (is_array($aSubMessageInfo) && count($aSubMessageInfo) > 0) { $aLastSubMessage = end($aSubMessageInfo); $iPlaceId = $aLastSubMessage['placeid']; } else { $aHeadMessageInfo = array(); // get placeid of the parent $this->GetMessageInformation($aHeadMessageInfo, $aMessageData['MessageGroupId']); $iPlaceId = $aHeadMessageInfo['placeid']; } // all higher placeids need to be increased $aSiteMessages = array(); $this->GetMessagesBySiteId($aSiteMessages, $iSiteId); foreach ($aSiteMessages AS $aMessageInfo) { $aMessage = array(); $this->GetMessageInformation($aMessage, $aMessageInfo['messageid']); if (is_numeric($aMessage['messageid']) && $aMessage['messageid'] > 0 && $aMessage['placeid'] >= $iPlaceId) { $aMessage['placeid']++; $this->MoveMessage($aMessage['placeid'], $aMessage['messageid']); } } return $iPlaceId; } else { // head and normal : get highest placeid return $this->GetHighestPlaceIdForSite($iSiteId) + 1; } } function GetAllSubMessage(&$aMessageInfo, $iMessageGroupId) { if ($iMessageGroupId <= 0) { return false; } $aWhere = array(); $aWhere["MessageGroupId"] = $iMessageGroupId; $aOrderBy = array(); $aOrderBy["placeid"] = "DESC"; $aResult = array(); if ($this->Table->Select($aResult, $aWhere, null, $aOrderBy) == 0) { return false; } foreach ($aResult as $key => $result) { $aMessageInfo[$key] = $result; $aMessageInfo[$key]["TotalMediaTabs"] = GetConfigVar("TotalMediaTabs", "Media"); $this->GetMediaForMessage($aMessageInfo[$key]); $this->GetSocialMediaForMessage($aMessageInfo[$key]); } return true; } function GetAllNonSubMessage(&$MessageInfo) { $aWhere = array(); $aWhere["MessageGroupId"] = 0; $aOrderBy = array(); $aOrderBy["placeid"] = "DESC"; $aResult = array(); if ($this->Table->Select($aResult, $aWhere, null, $aOrderBy) == 0) { return false; } $MessageInfo = $aResult; $MessageInfo["TotalMediaTabs"] = GetConfigVar("TotalMediaTabs", "Media"); $this->GetMediaForMessage($MessageInfo); $this->GetSocialMediaForMessage($MessageInfo); return true; } function GetMessagesForInit(&$aMessageList, $iSiteId, $bSchedulerPublish) { $aMessageList = array(); $aResult = array(); $strFields = "msg.*"; $strTables = "Message AS msg"; $strWhere = "(msg.StatusChanged = 1 OR msg.LastAction > 0) AND msg.siteid = " . $iSiteId . ""; //$strWhere = "msg.siteid = ". $iSiteId .""; $strOrderBy = "msg.placeid DESC"; if ($this->Table->SelectMultiple($aResult, $strFields, $strTables, $strWhere, $strOrderBy) > 0) { foreach ($aResult AS $aMessage) { $aMessageList[] = $aMessage["messageid"]; } return true; } return false; } function GetPublishedMessages(&$MessageList, $iSiteId, $bSchedulerPublish) { global $g_aMessageLastAction; $MessageList = array(); $_SESSION["ChangedMessagesList"] = array(); $aChangedMessages = array(); $aWhere = array(); $aWhere["siteid"] = $iSiteId; $aWhere["StatusChanged"] = "1"; $aOrderBy = array(); $aOrderBy["placeid"] = "DESC"; $aResult = array(); if ($this->Table->Select($aResult, $aWhere, null, $aOrderBy)) { foreach ($aResult as $Result) { $aFields = array(); $bUpdate = false; if ($Result["IsPublished"] == "1") { $bUpdate = true; $aFields["IsPublished"] = "0"; $aFields["StatusChanged"] = "0"; } elseif ($Result["IsPublished"] == "0") { $bUpdate = true; $aFields["IsPublished"] = "1"; $aFields["StatusChanged"] = "0"; } if (!$bUpdate) { continue; } if ($Result["StatusChanged"] == 1 || intval($Result["LastAction"]) == $g_aMessageLastAction["New"] || (intval($Result["LastAction"]) > 0 && intval($Result['IsPublished']) == 1) ) { // message has been changed $aChangedMessages[] = $Result['messageid']; } $aWhere = array(); $aWhere["messageid"] = $Result["messageid"]; $this->Table->Update($aFields, $aWhere); } } $_SESSION['ChangedMessagesList'] = $aChangedMessages; $aWhere = array(); $aWhere["siteid"] = $iSiteId; $aWhere["IsPublished"] = 1; $aOrderBy = array(); $aOrderBy["placeid"] = "DESC"; if ($this->Table->Select($aResult, $aWhere, null, $aOrderBy)) { foreach ($aResult as $Result) { $MessageList[] = $Result["messageid"]; } return true; } return false; } function MoveUp($iMsgId, $iSiteId) { $this->Move($iMsgId, $iSiteId, "up"); } function MoveDown($iMsgId, $iSiteId) { $this->Move($iMsgId, $iSiteId, "down"); } function MoveMessage($iPlaceId, $iMsgId, $bItemHasChanged = false) { //WriteToLog("CMessageTable :: MoveMessage( placeid: $iPlaceId, messageid: $iMsgId, hasMoved: $bItemHasChanged)"); global $g_SessionVars; $aFields = array(); $aFields["placeid"] = $iPlaceId; if ($bItemHasChanged) { $aFields["userid"] = GetSessionValue($g_SessionVars["UserId"]); $aFields["LastAction"] = $this->aStatus["Moved"]; } $aWhere = array(); $aWhere["messageid"] = $iMsgId; $this->Table->Update($aFields, $aWhere); } function Move($iMsgId, $iSiteId, $Direction) { global $g_SharedVars; global $g_SessionVars; $aWhere = array(); $aWhere["siteid"] = $iSiteId; $aOrderBy = array(); $aOrderBy["placeid"] = "DESC"; $aResult = array(); $this->Table->Select($aResult, $aWhere, null, $aOrderBy); $FilterAction = $g_SharedVars["FilterActions"]; $SelectedFilter = $FilterAction["All"]; if (GetSession($g_SessionVars["SelectedFilter"], $GetFilter)) { $SelectedFilter = $GetFilter; } switch ($SelectedFilter) { case $FilterAction["On"] : $NewMessageList = array(); foreach ($aResult AS $Message) { if (($Message["IsPublished"]) xor ($Message["StatusChanged"])) { $NewMessageList[] = $Message; } } $aResult = $NewMessageList; break; case $FilterAction["Off"] : $NewMessageList = array(); foreach ($aResult AS $Message) { if (!(($Message["IsPublished"]) xor ($Message["StatusChanged"]))) { $NewMessageList[] = $Message; } } $aResult = $NewMessageList; break; case $FilterAction["All"] : break; } for ($i = 0; $i < count($aResult); $i++) { if ($aResult[$i]["messageid"] == $iMsgId) { $iFromPlaceId = $aResult[$i]["placeid"]; $iFromMsgId = $iMsgId; switch ($Direction) { case "up": if ($i > 0) { if (array_key_exists(($i - 1), $aResult)) { $iToPlaceId = $aResult[($i - 1)]["placeid"]; $iToMsgId = $aResult[($i - 1)]["messageid"]; } else { return false; } } else { return false; } break; case "down": if ($i < count($aResult)) { if (array_key_exists(($i + 1), $aResult)) { $iToPlaceId = $aResult[($i + 1)]["placeid"]; $iToMsgId = $aResult[($i + 1)]["messageid"]; } else { return false; } } else { return false; } break; } } } $aFields = array(); $aFields["placeid"] = $iToPlaceId; $aFields["LastAction"] = $this->aStatus["Moved"]; $aWhere = array(); $aWhere["messageid"] = $iFromMsgId; $this->Table->Update($aFields, $aWhere); $aFields = array(); $aFields["placeid"] = $iFromPlaceId; $aFields["LastAction"] = $this->aStatus["Moved"]; $aWhere = array(); $aWhere["messageid"] = $iToMsgId; $this->Table->Update($aFields, $aWhere); } function ChangeTemplateForMessages($CurrentGroupId, $NewGroupId) { $aFields = array(); $aFields["GroupId"] = $NewGroupId; $aWhere = array(); $aWhere["GroupId"] = $CurrentGroupId; $this->Table->Update($aFields, $aWhere); } function ResetExpiredMessage($iMessageId) { $aFields = array(); $aFields["IsPublished"] = 0; $aFields["StatusChanged"] = 0; $aWhere = array(); $aWhere["messageid"] = $iMessageId; return $this->Table->Update($aFields, $aWhere); } /** * * Deletes the Message Preview images from the data folder * @param string $strFileName */ function DeleteMessagePreview($strFileName) { global $g_MessageImageStore, $g_PreviewImageExtension; $strMsgImgPath = $g_MessageImageStore . $strFileName . $g_PreviewImageExtension; $strMsgImgThumbPath = $g_MessageImageStore . "thumbs\\" . $strFileName . $g_PreviewImageExtension; $strMsgImgPathJpeg = $g_MessageImageStore . $strFileName . ".jpg"; $strMsgImgThumbPathJpeg = $g_MessageImageStore . "thumbs\\" . $strFileName . ".jpg"; if (file_exists($strMsgImgPath)) { unlink($strMsgImgPath); } if (file_exists($strMsgImgThumbPath)) { unlink($strMsgImgThumbPath); } if (file_exists($strMsgImgPathJpeg)) { unlink($strMsgImgPathJpeg); } if (file_exists($strMsgImgThumbPathJpeg)) { unlink($strMsgImgThumbPathJpeg); } } function DeleteSlideHDImages($aSiteInfo, $aMessageInfo) { // rss enabled for this site? if ($aSiteInfo["RssEnabled"] != "1") { WriteToLog("CMessageTable :: DeleteSlideHDImages(), Rss Module not enabled, returning ..."); return; } // delete directory in rss folder $strTargetPath = ResolvePath($aSiteInfo["RssTargetPath"]); $strTargetPath = dirname($strTargetPath); $strTargetPath .= "\\"; // check rss output directory if (strlen($strTargetPath) <= 4 || !is_writable($strTargetPath)) { WriteToLog("CMessageTable :: DeleteSlideHDImages(), Rss TargetPath ( " . $strTargetPath . " ) invalid or not writable, returning ..."); return; } $strSlideImageDir = $strTargetPath . $aMessageInfo["messageid"] . "\\"; if (is_dir($strSlideImageDir)) { WriteToLog("CMessageTable :: DeleteSlideHDImages(), Deleting directory ( " . $strSlideImageDir . " )"); $DirectoryFunctions = new CDirectoryFunctions(); $DirectoryFunctions->rmdirr($strSlideImageDir); } } }