本文整理汇总了PHP中CForumTopic::CheckFields方法的典型用法代码示例。如果您正苦于以下问题:PHP CForumTopic::CheckFields方法的具体用法?PHP CForumTopic::CheckFields怎么用?PHP CForumTopic::CheckFields使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CForumTopic
的用法示例。
在下文中一共展示了CForumTopic::CheckFields方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: Update
function Update($ID, $arFields, $skip_counts = False)
{
global $DB;
$ID = intVal($ID);
$arFields1 = array();
$arFieldsForFilter = array();
$bNeedFilter = false;
if ($ID <= 0 || !CForumTopic::CheckFields("UPDATE", $arFields)) {
return false;
}
/***************** Event onBeforeTopicUpdate **************************/
$events = GetModuleEvents("forum", "onBeforeTopicUpdate");
while ($arEvent = $events->Fetch()) {
if (ExecuteModuleEventEx($arEvent, array(&$ID, &$arFields)) === false) {
return false;
}
}
/***************** /Event ******************************************/
if (empty($arFields)) {
return false;
}
foreach ($arFields as $key => $value) {
if (substr($key, 0, 1) == "=") {
$arFields1[substr($key, 1)] = $value;
unset($arFields[$key]);
}
}
if (!$skip_counts && is_set($arFields, "FORUM_ID") || COption::GetOptionString("forum", "FILTER", "Y") == "Y" || (is_set($arFields, "TITLE") || is_set($arFields, "TAGS")) && IsModuleInstalled("search")) {
$arTopic_prev = CForumTopic::GetByID($ID, array("NoFilter" => true));
}
// Fields "HTML".
if (COption::GetOptionString("forum", "FILTER", "Y") == "Y") {
$arFieldsForFilter = array("TITLE" => is_set($arFields, "TITLE") ? $arFields["TITLE"] : $arTopic_prev["TITLE"], "TAGS" => is_set($arFields, "TAGS") ? $arFields["TAGS"] : $arTopic_prev["TAGS"], "DESCRIPTION" => is_set($arFields, "DESCRIPTION") ? $arFields["DESCRIPTION"] : $arTopic_prev["DESCRIPTION"], "LAST_POSTER_NAME" => is_set($arFields, "LAST_POSTER_NAME") ? $arFields["LAST_POSTER_NAME"] : $arTopic_prev["LAST_POSTER_NAME"], "ABS_LAST_POSTER_NAME" => is_set($arFields, "ABS_LAST_POSTER_NAME") ? $arFields["ABS_LAST_POSTER_NAME"] : $arTopic_prev["ABS_LAST_POSTER_NAME"], "USER_START_NAME" => is_set($arFields, "USER_START_NAME") ? $arFields["USER_START_NAME"] : $arTopic_prev["USER_START_NAME"]);
$bNeedFilter = false;
foreach ($arFieldsForFilter as $key => $val) {
if (is_set($arFields, $key)) {
$bNeedFilter = true;
break;
}
}
if ($bNeedFilter) {
foreach ($arFieldsForFilter as $key => $val) {
$res = CFilterUnquotableWords::Filter($val);
if (empty($res) && !empty($val)) {
$res = "*";
}
$arFieldsForFilter[$key] = $res;
}
$arFields["HTML"] = serialize($arFieldsForFilter);
}
}
$strUpdate = $DB->PrepareUpdate("b_forum_topic", $arFields);
foreach ($arFields1 as $key => $value) {
if (strLen($strUpdate) > 0) {
$strUpdate .= ", ";
}
$strUpdate .= $key . "=" . $value . " ";
}
if (!empty($strUpdate)) {
$strSql = "UPDATE b_forum_topic SET " . $strUpdate . " WHERE ID = " . $ID;
$DB->QueryBind($strSql, array("HTML" => $arFields["HTML"]), false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
}
$res = array_merge($arFields1, $arFields);
if (count($res) == 1 && !empty($res["VIEWS"])) {
if (intVal($res["VIEWS"]) <= 0) {
$GLOBALS["FORUM_CACHE"]["TOPIC"][$ID]["VIEWS"]++;
$GLOBALS["FORUM_CACHE"]["TOPIC_FILTER"][$ID]["VIEWS"]++;
} else {
$GLOBALS["FORUM_CACHE"]["TOPIC"][$ID]["VIEWS"] = intVal($res["VIEWS"]);
$GLOBALS["FORUM_CACHE"]["TOPIC_FILTER"][$ID]["VIEWS"] = intVal($res["VIEWS"]);
}
} else {
unset($GLOBALS["FORUM_CACHE"]["FORUM"][$arTopic_prev["FORUM_ID"]]);
unset($GLOBALS["FORUM_CACHE"]["TOPIC"][$ID]);
unset($GLOBALS["FORUM_CACHE"]["TOPIC_FILTER"][$ID]);
if (intVal($arFields1["FORUM_ID"]) > 0) {
unset($GLOBALS["FORUM_CACHE"]["FORUM"][intVal($arFields1["FORUM_ID"])]);
}
if (intVal($arFields["FORUM_ID"]) > 0) {
unset($GLOBALS["FORUM_CACHE"]["FORUM"][intVal($arFields["FORUM_ID"])]);
}
}
if (count($res) == 1 && !empty($res["VIEWS"])) {
return $ID;
}
if (is_set($arFields, "FORUM_ID") && intVal($arFields["FORUM_ID"]) != intVal($arTopic_prev["FORUM_ID"])) {
$arFiles = array();
$db_res = CForumFiles::GetList(array(), array("TOPIC_ID" => $ID));
if ($db_res && ($res = $db_res->Fetch())) {
do {
$arFiles[] = $res["ID"];
} while ($res = $db_res->Fetch());
}
CForumFiles::UpdateByID($arFiles, array("FORUM_ID" => $arFields["FORUM_ID"]));
}
/***************** Event onAfterTopicUpdate ************************/
$events = GetModuleEvents("forum", "onAfterTopicUpdate");
if ($events->nSelectedCount > 0) {
$arTopicFields = CForumTopic::GetByID($ID, array("NoFilter" => true));
}
//.........这里部分代码省略.........