Example #1
0
 function Set($arFields, $CONTRACT_ID, $CHECK_RIGHTS = "Y")
 {
     $err_mess = CAdvContract_all::err_mess() . "<br>Function: Set<br>Line: ";
     global $DB, $USER;
     if (CAdvContract::CheckFields($arFields, $CONTRACT_ID, $CHECK_RIGHTS)) {
         if ($CHECK_RIGHTS == "Y") {
             $USER_ID = intval($USER->GetID());
             $isAdmin = CAdvContract::IsAdmin();
         } else {
             if (is_object($USER)) {
                 $USER_ID = intval($USER->GetID());
             } else {
                 $USER_ID = 0;
             }
             $isAdmin = true;
         }
         $check_activity = "N";
         $arFields_i = array();
         $arrKeys = array_keys($arFields);
         if ($isAdmin) {
             if (in_array("SHOW_COUNT", $arrKeys)) {
                 $check_activity = "Y";
                 $arFields_i["SHOW_COUNT"] = intval($arFields["SHOW_COUNT"]);
             }
             if (in_array("VISITOR_COUNT", $arrKeys)) {
                 $check_activity = "Y";
                 $arFields_i["VISITOR_COUNT"] = intval($arFields["VISITOR_COUNT"]);
             }
             if (in_array("CLICK_COUNT", $arrKeys)) {
                 $check_activity = "Y";
                 $arFields_i["CLICK_COUNT"] = intval($arFields["CLICK_COUNT"]);
             }
             if (in_array("ACTIVE", $arrKeys) && ($arFields["ACTIVE"] == "Y" || $arFields["ACTIVE"] == "N")) {
                 $check_activity = "Y";
                 $arFields_i["ACTIVE"] = "'" . $arFields["ACTIVE"] . "'";
             }
             if (in_array("WEIGHT", $arrKeys)) {
                 $arFields_i["WEIGHT"] = intval($arFields["WEIGHT"]);
             }
             if (in_array("ADMIN_COMMENTS", $arrKeys)) {
                 $arFields_i["ADMIN_COMMENTS"] = "'" . $DB->ForSql($arFields["ADMIN_COMMENTS"], 2000) . "'";
             }
             if (in_array("KEYWORDS", $arrKeys)) {
                 $arFields_i["KEYWORDS"] = "'" . $DB->ForSql($arFields["KEYWORDS"], 2000) . "'";
             }
             if (in_array("MAX_SHOW_COUNT", $arrKeys)) {
                 $check_activity = "Y";
                 if (strlen($arFields["MAX_SHOW_COUNT"]) > 0) {
                     $arFields_i["MAX_SHOW_COUNT"] = intval($arFields["MAX_SHOW_COUNT"]);
                 } else {
                     $arFields_i["MAX_SHOW_COUNT"] = "null";
                 }
             }
             if (in_array("MAX_VISITOR_COUNT", $arrKeys)) {
                 $check_activity = "Y";
                 if (strlen($arFields["MAX_VISITOR_COUNT"]) > 0) {
                     $arFields_i["MAX_VISITOR_COUNT"] = intval($arFields["MAX_VISITOR_COUNT"]);
                 } else {
                     $arFields_i["MAX_VISITOR_COUNT"] = "null";
                 }
             }
             if (in_array("MAX_CLICK_COUNT", $arrKeys)) {
                 $check_activity = "Y";
                 if (strlen($arFields["MAX_CLICK_COUNT"]) > 0) {
                     $arFields_i["MAX_CLICK_COUNT"] = intval($arFields["MAX_CLICK_COUNT"]);
                 } else {
                     $arFields_i["MAX_CLICK_COUNT"] = "null";
                 }
             }
             if (in_array("DATE_SHOW_FROM", $arrKeys)) {
                 $check_activity = "Y";
                 if (strlen($arFields["DATE_SHOW_FROM"]) > 0) {
                     $arFields_i["DATE_SHOW_FROM"] = $DB->CharToDateFunction($arFields["DATE_SHOW_FROM"]);
                 } else {
                     $arFields_i["DATE_SHOW_FROM"] = "null";
                 }
             }
             if (in_array("DATE_SHOW_TO", $arrKeys)) {
                 $check_activity = "Y";
                 if (strlen($arFields["DATE_SHOW_TO"]) > 0) {
                     $time = "";
                     if (defined("FORMAT_DATE") && strlen($arFields["DATE_SHOW_TO"]) <= strlen(FORMAT_DATE)) {
                         $time = " 23:59:59";
                     }
                     $arFields_i["DATE_SHOW_TO"] = $DB->CharToDateFunction($arFields["DATE_SHOW_TO"] . $time);
                 } else {
                     $arFields_i["DATE_SHOW_TO"] = "null";
                 }
             }
             if (in_array("DEFAULT_STATUS_SID", $arrKeys)) {
                 $arrStatus = CAdvBanner::GetStatusList("N");
                 $arrV = array_values($arrStatus["reference_id"]);
                 if (in_array($arFields["DEFAULT_STATUS_SID"], $arrV)) {
                     $arFields_i["DEFAULT_STATUS_SID"] = "'" . $DB->ForSql($arFields["DEFAULT_STATUS_SID"], 255) . "'";
                 }
             }
             if (in_array("SORT", $arrKeys)) {
                 $arFields_i["SORT"] = intval($arFields["SORT"]);
             }
             if (in_array("NAME", $arrKeys)) {
                 $arFields_i["NAME"] = "'" . $DB->ForSql($arFields["NAME"], 255) . "'";
             }
             if (in_array("DESCRIPTION", $arrKeys)) {
                 $arFields_i["DESCRIPTION"] = "'" . $DB->ForSql($arFields["DESCRIPTION"], 2000) . "'";
             }
         }
         $arFields_i["EMAIL_COUNT"] = 0;
         $str_PREV_LAMP = "";
         if (intval($CONTRACT_ID) > 0) {
             $rsContract = CAdvContract::GetByID($CONTRACT_ID);
             $arContract = $rsContract->Fetch();
             $str_PREV_LAMP = $arContract["LAMP"];
             if (in_array("DATE_MODIFY", $arrKeys) && CheckDateTime($arFields["DATE_MODIFY"])) {
                 $arFields_i["DATE_MODIFY"] = $DB->CharToDateFunction($arFields["DATE_MODIFY"]);
             } else {
                 $arFields_i["DATE_MODIFY"] = $DB->GetNowFunction();
             }
             if (in_array("MODIFIED_BY", $arrKeys)) {
                 $arFields_i["MODIFIED_BY"] = intval($arFields["MODIFIED_BY"]);
             } else {
                 $arFields_i["MODIFIED_BY"] = $USER_ID;
             }
             $DB->Update("b_adv_contract", $arFields_i, "WHERE ID='" . intval($CONTRACT_ID) . "'", $err_mess . __LINE__);
         } elseif ($isAdmin) {
             $check_activity = "Y";
             if (in_array("DATE_CREATE", $arrKeys) && CheckDateTime($arFields["DATE_CREATE"])) {
                 $arFields_i["DATE_CREATE"] = $DB->CharToDateFunction($arFields["DATE_CREATE"]);
             } else {
                 $arFields_i["DATE_CREATE"] = $DB->GetNowFunction();
             }
             if (in_array("CREATED_BY", $arrKeys)) {
                 $arFields_i["CREATED_BY"] = intval($arFields["CREATED_BY"]);
             } else {
                 $arFields_i["CREATED_BY"] = $USER_ID;
             }
             if (in_array("DATE_MODIFY", $arrKeys) && CheckDateTime($arFields["DATE_MODIFY"])) {
                 $arFields_i["DATE_MODIFY"] = $DB->CharToDateFunction($arFields["DATE_MODIFY"]);
             } else {
                 $arFields_i["DATE_MODIFY"] = $DB->GetNowFunction();
             }
             if (in_array("MODIFIED_BY", $arrKeys)) {
                 $arFields_i["MODIFIED_BY"] = intval($arFields["MODIFIED_BY"]);
             } else {
                 $arFields_i["MODIFIED_BY"] = $USER_ID;
             }
             $CONTRACT_ID = $DB->Insert("b_adv_contract", $arFields_i, $err_mess . __LINE__);
         }
         $CONTRACT_ID = intval($CONTRACT_ID);
         if ($CONTRACT_ID > 0) {
             if ($isAdmin) {
                 if (in_array("arrSITE", $arrKeys)) {
                     CAdvContract::DeleteSiteLink($CONTRACT_ID);
                     if (is_array($arFields["arrSITE"])) {
                         $arrSite = array_unique($arFields["arrSITE"]);
                         foreach ($arrSite as $sid) {
                             if (strlen(trim($sid)) > 0) {
                                 $strSql = "INSERT INTO b_adv_contract_2_site(CONTRACT_ID, SITE_ID) VALUES ({$CONTRACT_ID}, '" . $DB->ForSql($sid, 2) . "')";
                                 $DB->Query($strSql, false, $err_mess . __LINE__);
                             }
                         }
                     }
                 }
                 if (in_array("arrSHOW_PAGE", $arrKeys)) {
                     CAdvContract::DeletePageLink($CONTRACT_ID, " and SHOW_ON_PAGE='Y'");
                     if (is_array($arFields["arrSHOW_PAGE"])) {
                         $arrPage = array_unique($arFields["arrSHOW_PAGE"]);
                         foreach ($arrPage as $page) {
                             $page = trim($page);
                             if (strlen($page) > 0) {
                                 $arFields_i = array("CONTRACT_ID" => $CONTRACT_ID, "PAGE" => "'" . $DB->ForSql($page, 255) . "'", "SHOW_ON_PAGE" => "'Y'");
                                 $DB->Insert("b_adv_contract_2_page", $arFields_i, $err_mess . __LINE__);
                             }
                         }
                     }
                 }
                 if (in_array("arrNOT_SHOW_PAGE", $arrKeys)) {
                     CAdvContract::DeletePageLink($CONTRACT_ID, " and SHOW_ON_PAGE='N'");
                     if (is_array($arFields["arrNOT_SHOW_PAGE"])) {
                         $arrPage = array_unique($arFields["arrNOT_SHOW_PAGE"]);
                         foreach ($arrPage as $page) {
                             $page = trim($page);
                             if (strlen($page) > 0) {
                                 $arFields_i = array("CONTRACT_ID" => $CONTRACT_ID, "PAGE" => "'" . $DB->ForSql($page, 255) . "'", "SHOW_ON_PAGE" => "'N'");
                                 $DB->Insert("b_adv_contract_2_page", $arFields_i, $err_mess . __LINE__);
                             }
                         }
                     }
                 }
                 if (in_array("arrTYPE", $arrKeys)) {
                     CAdvContract::DeleteTypeLink($CONTRACT_ID);
                     if (is_array($arFields["arrTYPE"])) {
                         $arrType = array_unique($arFields["arrTYPE"]);
                         foreach ($arrType as $type) {
                             if (strlen(trim($type)) > 0) {
                                 $strSql = "INSERT INTO b_adv_contract_2_type(CONTRACT_ID, TYPE_SID) VALUES ({$CONTRACT_ID}, '" . $DB->ForSql($type, 255) . "')";
                                 $DB->Query($strSql, false, $err_mess . __LINE__);
                             }
                         }
                     }
                 }
                 if (in_array("arrWEEKDAY", $arrKeys)) {
                     CAdvContract::DeleteWeekdayLink($CONTRACT_ID);
                     if (is_array($arFields["arrWEEKDAY"])) {
                         $arrWeekday = array_keys($arFields["arrWEEKDAY"]);
                         $arrWeekday = array_unique($arrWeekday);
                         if (is_array($arrWeekday) && count($arrWeekday) > 0) {
                             foreach ($arrWeekday as $weekday) {
                                 if (is_array($arFields["arrWEEKDAY"][$weekday]) && count($arFields["arrWEEKDAY"][$weekday]) > 0) {
                                     $arrHour = $arFields["arrWEEKDAY"][$weekday];
                                     array_walk($arrHour, create_function("&\$item", "\$item=intval(\$item);"));
                                     $arrHour = array_unique($arrHour);
                                     foreach ($arrHour as $hour) {
                                         if ($hour >= 0 && $hour <= 23) {
                                             $strSql = "INSERT INTO b_adv_contract_2_weekday (CONTRACT_ID, C_WEEKDAY, C_HOUR) VALUES (" . $CONTRACT_ID . ", '" . $DB->ForSql($weekday, 10) . "', " . $hour . ")";
                                             $DB->Query($strSql, false, $err_mess . __LINE__);
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
             if (in_array("arrUSER_VIEW", $arrKeys)) {
                 CAdvContract::DeleteUserLink($CONTRACT_ID, " and PERMISSION = 'VIEW'");
                 if (is_array($arFields["arrUSER_VIEW"])) {
                     $arrUser = array_unique($arFields["arrUSER_VIEW"]);
                     foreach ($arrUser as $user_id) {
                         if (intval($user_id) > 0) {
                             $arFields_i = array("CONTRACT_ID" => $CONTRACT_ID, "USER_ID" => intval($user_id), "PERMISSION" => "'VIEW'");
                             $DB->Insert("b_adv_contract_2_user", $arFields_i, $err_mess . __LINE__);
                         }
                     }
                 }
             }
             if (in_array("arrUSER_ADD", $arrKeys)) {
                 CAdvContract::DeleteUserLink($CONTRACT_ID, " and PERMISSION = 'ADD'");
                 if (is_array($arFields["arrUSER_ADD"])) {
                     $arrUser = array_unique($arFields["arrUSER_ADD"]);
                     foreach ($arrUser as $user_id) {
                         if (intval($user_id) > 0) {
                             $arFields_i = array("CONTRACT_ID" => $CONTRACT_ID, "USER_ID" => intval($user_id), "PERMISSION" => "'ADD'");
                             $DB->Insert("b_adv_contract_2_user", $arFields_i, $err_mess . __LINE__);
                         }
                     }
                 }
             }
             if ($isAdmin) {
                 if (in_array("arrUSER_EDIT", $arrKeys)) {
                     CAdvContract::DeleteUserLink($CONTRACT_ID, " and PERMISSION = 'EDIT'");
                     if (is_array($arFields["arrUSER_EDIT"])) {
                         $arrUser = array_unique($arFields["arrUSER_EDIT"]);
                         foreach ($arrUser as $user_id) {
                             if (intval($user_id) > 0) {
                                 $arFields_i = array("CONTRACT_ID" => $CONTRACT_ID, "USER_ID" => intval($user_id), "PERMISSION" => "'EDIT'");
                                 $DB->Insert("b_adv_contract_2_user", $arFields_i, $err_mess . __LINE__);
                             }
                         }
                     }
                 }
             }
             if ($check_activity == "Y") {
                 CTimeZone::Disable();
                 $rsContract = CAdvContract::GetByID($CONTRACT_ID);
                 CTimeZone::Enable();
                 $arContract = $rsContract->Fetch();
                 $str_CURRENT_LAMP = $arContract["LAMP"];
                 if ($str_PREV_LAMP != $str_CURRENT_LAMP) {
                     $mess = $str_CURRENT_LAMP == "red" ? "< " . GetMessage("AD_CONTRACT_NOT_ACTIVE") . " >" : "< " . GetMessage("AD_CONTRACT_ACTIVE") . " >";
                     CAdvContract::SendEMail($arContract, $mess);
                 }
                 if ($str_CURRENT_LAMP == "red") {
                     $arFields = array("EMAIL_COUNT" => "EMAIL_COUNT + 1");
                     $DB->Update("b_adv_contract", $arFields, "WHERE ID='" . $CONTRACT_ID . "'", $err_mess . __LINE__);
                 }
             }
         }
     }
     return $CONTRACT_ID;
 }