'not available', self::OUTPUT_AVAILABLE => 'available', self::OUTPUT_MANDATORY => 'mandatory', self::OUTPUT_MANDATORY_HIDDEN => 'mandatory and not visible' ]; public static $aDefaultValues = array( self::PRIMARYKEYFIELD => -1, "UserId" => -1, "DeleteImages" => 0, "ChangeTemplate" => 0, "AllowTwitter" => self::OUTPUT_AVAILABLE, "AllowFacebook" => self::OUTPUT_AVAILABLE, "AllowPlayer" => self::OUTPUT_AVAILABLE, "AllowEmail" => self::OUTPUT_AVAILABLE, "AllowSms" => self::OUTPUT_AVAILABLE, "SmsAseAccountId" => 0, "SmsSender" => "", "LimitScenario" => 0, "DefaultTemplate" => null, "LimitTargetArea" => 0, "MaxTargetArea" => 1000, "EnableDefaultGeoTargetArea" => 0, "DefaultGeoTargetAreaRadius" => 100, "EnableRequiredFields" => 0, "RequiredFields" => '["Title","Message"]', "DefaultAlertLevel" => null, "AlertLevelVisible" => 1, "AlertLevelChangeable" => 1, "EnforceImageCropping" => 0, "EnableImageUploadSiteSelector" => 1, "EnableAlertConfirmation" => 1, "GeographicTargetingVisible" => 1, "DurationVisible" => 1, "HyperlinkVisible" => 1, "PreviewVisible" => 1 ); public function __construct($Db) { $PrimaryKeyField = "id"; $this->Table = new CTable($Db, "AlertUsers"); $this->Table->AddColumnInt($PrimaryKeyField, 10, true, true); $this->Table->AddColumnInt("UserId", 10, false, true); $this->Table->AddColumnInt("DeleteImages", 1, false, false, true, self::$aDefaultValues["DeleteImages"]); $this->Table->AddColumnInt("ChangeTemplate", 1, false, false, true, self::$aDefaultValues["ChangeTemplate"]); $this->Table->AddColumnInt("AllowTwitter", 1, false, false, true, self::$aDefaultValues["AllowTwitter"]); $this->Table->AddColumnInt("AllowFacebook", 1, false, false, true, self::$aDefaultValues["AllowFacebook"]); $this->Table->AddColumnInt("AllowPlayer", 1, false, false, true, self::$aDefaultValues["AllowPlayer"]); $this->Table->AddColumnInt("AllowEmail", 1, false, false, true, self::$aDefaultValues["AllowEmail"]); $this->Table->AddColumnInt("AllowSms", 1, false, false, true, self::$aDefaultValues["AllowSms"]); $this->Table->AddColumnInt("SmsAseAccountId", 10, false, false, true, self::$aDefaultValues["SmsAseAccountId"]); $this->Table->AddColumnText("SmsSender", 20, true, self::$aDefaultValues["SmsSender"]); $this->Table->AddColumnInt("LimitScenario", 1, false, true, true, self::$aDefaultValues["LimitScenario"]); $this->Table->AddColumnInt("DefaultTemplate", 1, false, false, false, self::$aDefaultValues["DefaultTemplate"]); $this->Table->AddColumnInt("LimitTargetArea", 1, false, true, true, self::$aDefaultValues["LimitTargetArea"]); $this->Table->AddColumnInt("MaxTargetArea", 10, false, true, true, self::$aDefaultValues["MaxTargetArea"]); $this->Table->AddColumnInt("EnableDefaultGeoTargetArea", 1, false, true, true, self::$aDefaultValues["EnableDefaultGeoTargetArea"]); $this->Table->AddColumnInt("DefaultGeoTargetAreaRadius", 10, false, true, true, self::$aDefaultValues["DefaultGeoTargetAreaRadius"]); $this->Table->AddColumnInt("EnableRequiredFields", 10, false, true, true, self::$aDefaultValues["EnableRequiredFields"]); $this->Table->AddColumnText("RequiredFields", 1024, true, self::$aDefaultValues["RequiredFields"]); $this->Table->AddColumnInt("DefaultAlertLevel", 10, false, false, false, self::$aDefaultValues["DefaultAlertLevel"]); $this->Table->AddColumnInt("AlertLevelVisible", 1, false, true, true, self::$aDefaultValues["AlertLevelVisible"]); $this->Table->AddColumnInt("AlertLevelChangeable", 1, false, true, true, self::$aDefaultValues["AlertLevelChangeable"]); $this->Table->AddColumnInt("EnforceImageCropping", 1, false, true, true, self::$aDefaultValues["EnforceImageCropping"]); $this->Table->AddColumnInt("EnableImageUploadSiteSelector", 10, false, true, true, self::$aDefaultValues["EnableImageUploadSiteSelector"]); $this->Table->AddColumnInt("EnableAlertConfirmation", 10, false, true, true, self::$aDefaultValues["EnableAlertConfirmation"]); $this->Table->AddColumnInt("GeographicTargetingVisible", 10, false, true, true, self::$aDefaultValues["GeographicTargetingVisible"]); $this->Table->AddColumnInt("DurationVisible", 1, false, true, true, self::$aDefaultValues["DurationVisible"]); $this->Table->AddColumnInt("HyperlinkVisible", 1, false, true, true, self::$aDefaultValues["HyperlinkVisible"]); $this->Table->AddColumnInt("PreviewVisible", 1, false, true, true, self::$aDefaultValues["PreviewVisible"]); $this->Table->SetPrimaryKeyName($PrimaryKeyField); $this->aUserRights = array("DeleteImages", "ChangeTemplate", "AllowTwitter", "AllowFacebook", "AllowPlayer", "AllowEmail", "AllowSms"); } function CreateTable() { $this->Table->CreateTable(); } function Import($aResult) { $this->Table->CreateTable(true); foreach ($aResult as $Result) { foreach ($this->aUserRights AS $strUserRight) { if (!array_key_exists($strUserRight, $Result)) { $Result[$strUserRight] = 0; } } if (!array_key_exists("AllowTwitter", $Result) || empty($Result["AllowTwitter"])) { $Result["AllowTwitter"] = self::$aDefaultValues["AllowTwitter"]; } if (!array_key_exists("AllowFacebook", $Result) || empty($Result["AllowFacebook"])) { $Result["AllowFacebook"] = self::$aDefaultValues["AllowFacebook"]; } if (!array_key_exists("AllowPlayer", $Result) || empty($Result["AllowPlayer"])) { $Result["AllowPlayer"] = self::$aDefaultValues["AllowPlayer"]; } if (!array_key_exists("AllowEmail", $Result) || empty($Result["AllowEmail"])) { $Result["AllowEmail"] = self::$aDefaultValues["AllowEmail"]; } if (!array_key_exists("AllowSms", $Result) || empty($Result["AllowSms"])) { $Result["AllowSms"] = self::$aDefaultValues["AllowSms"]; } if (!array_key_exists("SmsAseAccountId", $Result) || empty($Result["SmsAseAccountId"])) { $Result["SmsAseAccountId"] = self::$aDefaultValues["SmsAseAccountId"]; } if (!array_key_exists("SmsSender", $Result) || empty($Result["SmsSender"])) { $Result["SmsSender"] = self::$aDefaultValues["SmsSender"]; } if (!array_key_exists("LimitScenario", $Result) || empty($Result["LimitScenario"])) { $Result["LimitScenario"] = self::$aDefaultValues["LimitScenario"]; } if (!array_key_exists("DefaultTemplate", $Result) || empty($Result["DefaultTemplate"])) { $Result["DefaultTemplate"] = self::$aDefaultValues["DefaultTemplate"]; } if (!array_key_exists("LimitTargetArea", $Result) || empty($Result["LimitTargetArea"])) { $Result["LimitTargetArea"] = self::$aDefaultValues["LimitTargetArea"]; } if (!array_key_exists("MaxTargetArea", $Result) || empty($Result["MaxTargetArea"])) { $Result["MaxTargetArea"] = self::$aDefaultValues["MaxTargetArea"]; } if (!array_key_exists("EnableDefaultGeoTargetArea", $Result) || empty($Result["EnableDefaultGeoTargetArea"])) { $Result["EnableDefaultGeoTargetArea"] = self::$aDefaultValues["EnableDefaultGeoTargetArea"]; } if (!array_key_exists("DefaultGeoTargetAreaRadius", $Result) || empty($Result["DefaultGeoTargetAreaRadius"])) { $Result["DefaultGeoTargetAreaRadius"] = self::$aDefaultValues["DefaultGeoTargetAreaRadius"]; } if (!array_key_exists("EnableRequiredFields", $Result) || empty($Result["EnableRequiredFields"])) { $Result["EnableRequiredFields"] = self::$aDefaultValues["EnableRequiredFields"]; } if (!array_key_exists("RequiredFields", $Result) || empty($Result["RequiredFields"])) { $Result["RequiredFields"] = self::$aDefaultValues["RequiredFields"]; } if (!array_key_exists("DefaultAlertLevel", $Result) || empty($Result["DefaultAlertLevel"])) { $Result["DefaultAlertLevel"] = self::$aDefaultValues["DefaultAlertLevel"]; } if (!array_key_exists("AlertLevelVisible", $Result) || empty($Result["AlertLevelVisible"])) { $Result["AlertLevelVisible"] = self::$aDefaultValues["AlertLevelVisible"]; } if (!array_key_exists("AlertLevelChangeable", $Result) || empty($Result["AlertLevelChangeable"])) { $Result["AlertLevelChangeable"] = self::$aDefaultValues["AlertLevelChangeable"]; } if (!array_key_exists("EnforceImageCropping", $Result) || empty($Result["EnforceImageCropping"])) { $Result["EnforceImageCropping"] = self::$aDefaultValues["EnforceImageCropping"]; } if (!array_key_exists("GeographicTargetingVisible", $Result) || empty($Result["GeographicTargetingVisible"])) { $Result["GeographicTargetingVisible"] = self::$aDefaultValues["GeographicTargetingVisible"]; } if (!array_key_exists("EnableImageUploadSiteSelector", $Result) || empty($Result["EnableImageUploadSiteSelector"])) { $Result["EnableImageUploadSiteSelector"] = self::$aDefaultValues["EnableImageUploadSiteSelector"]; } if (!array_key_exists("EnableAlertConfirmation", $Result) || empty($Result["EnableAlertConfirmation"])) { $Result["EnableAlertConfirmation"] = self::$aDefaultValues["EnableAlertConfirmation"]; } $this->Table->Import($Result); } $this->Table->RenameTmpTable(); } function Export(&$aResult, $bDropTable) { // Full Memory export return $this->Table->Export($aResult); } function UsersUpdateDeleteImages($aUserList) { $aFields = array(); $aFields["DeleteImages"] = 0; $aWhere = array(); $this->Table->Update($aFields, $aWhere); foreach ($aUserList AS $iUserId) { $aFields = array(); $aFields["DeleteImages"] = 1; $aWhere = array(); $aWhere["UserId"] = $iUserId; $this->Table->Update($aFields, $aWhere); } return true; } function UsersUpdateChangeTemplate($aUserList) { $aFields = array(); $aFields["ChangeTemplate"] = 0; $aWhere = array(); $this->Table->Update($aFields, $aWhere); foreach ($aUserList AS $iUserId) { $aFields = array(); $aFields["ChangeTemplate"] = 1; $aWhere = array(); $aWhere["UserId"] = $iUserId; $this->Table->Update($aFields, $aWhere); } return true; } function Delete($iUserId) { $aWhere = array(); $aWhere["UserId"] = $iUserId; return $this->Table->Delete($aWhere); } function GetAlertUserInfo(&$Result, $iUserId) { $Result = array(); $aResult = array(); $aWhere = array(); $aWhere["UserId"] = $iUserId; if (IsSuperUser($iUserId)) { foreach ($this->aUserRights AS $strUserRight) { $Result[$strUserRight] = 1; } return true; } if ($this->Table->Select($aResult, $aWhere) == 0) { return false; } $aResult[0]["RequiredFields"] = json_decode($aResult[0]["RequiredFields"]); $Result = $aResult[0]; return true; } function IsAlertUser($iUserId) { $aFields = array(); $aFields[] = "UserId"; $aWhere = array(); $aWhere["UserId"] = $iUserId; $aResult = array(); if ($this->Table->Select($aResult, $aWhere, $aFields) == 0) { return false; } return true; } function HasLimitedScenario($iUserId) { $aFields = array(); $aFields[] = "LimitScenario"; $aWhere = array(); $aWhere["UserId"] = $iUserId; $aResult = array(); if ($this->Table->Select($aResult, $aWhere, $aFields) > 0) { return $aResult[0]["LimitScenario"]; } return false; } function HasDefaultTemplate($iUserId) { $aFields = array(); $aFields[] = "DefaultTemplate"; $aWhere = array(); $aWhere["UserId"] = $iUserId; $aResult = array(); if ($this->Table->Select($aResult, $aWhere, $aFields) > 0) { return $aResult[0]["DefaultTemplate"]; } } function areRequiredFieldsEnabled($iUserId) { $aFields = array(); $aFields[] = "EnableRequiredFields"; $aWhere = array(); $aWhere["UserId"] = $iUserId; $aResult = array(); if ($this->Table->Select($aResult, $aWhere, $aFields) > 0) { return $aResult[0]["EnableRequiredFields"]; } } function getRequiredFields($iUserId) { $aFields = array(); $aFields[] = "RequiredFields"; $aWhere = array(); $aWhere["UserId"] = $iUserId; $aResult = array(); if ($this->Table->Select($aResult, $aWhere, $aFields) > 0) { return json_decode($aResult[0]["RequiredFields"]); } } function needsConfirmationBeforeActivatingAlert($iUserId) { $aFields = array(); $aFields[] = "EnableAlertConfirmation"; $aWhere = array(); $aWhere["UserId"] = $iUserId; $aResult = array(); if ($this->Table->Select($aResult, $aWhere, $aFields) > 0) { return $aResult[0]["EnableAlertConfirmation"]; } } function GetAlertUserCount() { if (!$this->TableExists()) { WriteToLog("CAlertUserTable :: AlertUserTable does not exist (Upgrade NOT Set?)"); return 0; } return $this->Table->CountRows(); } function GetAlertUsersForTemplate($iTemplateId) { $aResult = array(); $strFields = "alu.*, usr.*"; $strTables = "([AlertUsers] AS alu LEFT JOIN [User] AS usr ON alu.UserId = usr.userid)"; $strWhere = "alu.DefaultTemplate = " . $iTemplateId; $this->Table->SelectMultiple($aResult, $strFields, $strTables, $strWhere); return $aResult; } function resetTemplateToDefault($templateGroupId) { global $g_Db; $defaultTemplate = array(); $alertTemplateTable = new CAlertTemplatesManagement(); $alertTemplateTable->GetDefaultTemplate($defaultTemplate); $aFields = array(); $aFields["DefaultTemplate"] = $defaultTemplate["id"]; $aWhere = array(); $aWhere["DefaultTemplate"] = $templateGroupId; if ($this->Table->Update($aFields, $aWhere) > 0) { return true; } return false; } function GetAlertUsersForDomain($iDomainId = null) { $Result = array(); $iNumUsers = 0; $strFields = "alu.*, usr.*"; $strTables = "([AlertUsers] AS alu INNER JOIN [User] AS usr ON alu.UserId = usr.userid)"; $strWhere = ""; if (is_numeric($iDomainId)) { $strWhere = "usr.DomainId = " . $iDomainId; } if ($this->Table->SelectMultiple($Result, $strFields, $strTables, $strWhere) > 0) { $iNumUsers = count($Result); } return $iNumUsers; } function TableExists() { return $this->Table->TableExists(); } }