/** * Return array with events list and users * * @param int $iblockId Info-block ID * @param int $elementId Info-block element ID * @param int $limit Limit returned rows * @return array (EVENTS => array(), USERS => array()) */ public static function getEventsLog($iblockId, $elementId, $limit = 0) { $arEvents = array(); $arUsersId = array(); $arUsers = array(); $limit = intval($limit); if ($limit > 0) { $rsEventsNav = array('nTopCount' => $limit); } else { $rsEventsNav = false; } $rsEvents = \CEventLog::GetList(array('ID' => 'DESC'), array('MODULE_ID' => 'iblock', 'ITEM_ID' => $iblockId), $rsEventsNav); while ($arEvent = $rsEvents->Fetch()) { $arEventDesc = unserialize($arEvent['DESCRIPTION']); if ($arEventDesc['ID'] === $elementId) { $arEvents[] = array_merge($arEvent, array('DESCRIPTION' => $arEventDesc)); $arUsersId[] = $arEventDesc['USER_ID']; } } if (!empty($arUsersId)) { $rsUsers = \CUser::GetList($by = 'id', $order = 'asc', array('ID' => $arUsersId), array('FIELDS' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME'))); while ($arUser = $rsUsers->Fetch()) { $arUsers[$arUser['ID']] = $arUser; } } return array('EVENTS' => $arEvents, 'USERS' => $arUsers); }
/** * @param int $level Record level. * @param string $type Record type. * @param string $itemId Identifier of record object. * @param string $description Record description. * @return bool * @throws \Bitrix\Main\SystemException */ public function addRecord($level, $type, $itemId, $description) { if ($this->logLevel < $level || $level == static::LOG_LEVEL_DISABLE) { return false; } if (!array_key_exists($level, $this->severities)) { throw new SystemException("Unknown type of severity: " . $level . ". " . __METHOD__); } $eventLog = new \CEventLog(); return $eventLog->Add(array("SEVERITY" => $this->severities[$level], "AUDIT_TYPE_ID" => $type, "MODULE_ID" => "sale", "ITEM_ID" => $itemId, "DESCRIPTION" => $description)); }
/** * @param mixed $data * @param bool | string | false $die * @param string $msg * * @return null */ public static function dbg2EventLog($data, $die = false, $msg = 'DEBUG') { if (!is_bool($die)) { $msg = $die; $die = false; } $sDebug = self::_debugmessage($data); $oEventLog = new \CEventLog(); $oEventLog->Add(array("SEVERITY" => "SECURITY", "AUDIT_TYPE_ID" => "DEBUG_MESSAGE", "MODULE_ID" => "DEBUG", "ITEM_ID" => $msg, "DESCRIPTION" => $sDebug)); if ($die && self::isValidIP()) { die; } }
/** * @see CEvent::HandleEvent() * @see bxmail() * * @param string $to * @param string $subject * @param string $message * @param string $additionalHeaders Additional headers setted by Bitrix. * * @return bool */ function custom_mail($to, $subject, $message, $additionalHeaders = '') { // Cache to send many mails in one script run. static $transport, $sender; try { if (!$sender) { if (!$transport) { $host = COption::GetOptionString('sh.mailtransport', 'host'); if (COption::GetOptionInt('sh.mailtransport', 'ssl')) { $host = 'ssl://' . $host; } $port = COption::GetOptionInt('sh.mailtransport', 'port'); $user = COption::GetOptionString('sh.mailtransport', 'username'); $password = COption::GetOptionString('sh.mailtransport', 'password'); $transport = new Net_SMTP($host, $port); if (PEAR::isError($connectionResult = $transport->connect())) { throw new Capall_MailTransportException($connectionResult); } // TODO Server without authentication?.. if (PEAR::isError($authenticationResult = $transport->auth($user, $password))) { throw new Capall_MailTransportException($authenticationResult); } } $sender = new Capall_MailTransport_Sender($transport); } $sender->send($to, $subject, $message, $additionalHeaders); return true; } catch (Capall_MailTransportException $error) { CEventLog::Log('WARNING', 'MAILTRANSPORT_ERROR', 'sh.mailtransport', null, $error->__toString()); return false; } catch (Exception $error) { // Unknown error... return false; } }
function BXCreateSection(&$fileContent, &$sectionFileContent, &$absoluteFilePath, &$sectionPath) { //Check quota $quota = new CDiskQuota(); if (!$quota->CheckDiskQuota(array("FILE_SIZE" => strlen($fileContent) + strlen($sectionFileContent)))) { $GLOBALS["APPLICATION"]->ThrowException($quota->LAST_ERROR, "BAD_QUOTA"); return false; } $io = CBXVirtualIo::GetInstance(); //Create dir if (!$io->CreateDirectory($absoluteFilePath)) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("PAGE_NEW_FOLDER_CREATE_ERROR") . "<br /> (" . htmlspecialcharsbx($absoluteFilePath) . ")", "DIR_NOT_CREATE"); return false; } //Create .section.php $f = $io->GetFile($absoluteFilePath . "/.section.php"); if (!$GLOBALS["APPLICATION"]->SaveFileContent($absoluteFilePath . "/.section.php", $sectionFileContent)) { return false; } //Create index.php if (!$GLOBALS["APPLICATION"]->SaveFileContent($absoluteFilePath . "/index.php", $fileContent)) { return false; } else { if (COption::GetOptionString($module_id, "log_page", "Y") == "Y") { $res_log['path'] = $sectionPath . "/index.php"; CEventLog::Log("content", "PAGE_ADD", "main", "", serialize($res_log)); } } return true; }
public function put() { if ($this->_stateSaved) { throw new \Exception("Log instance saved before"); } $this->_stateSaved = true; return \CEventLog::Log($this->_severity, $this->_type, $this->_moduleId, $this->_itemId, $this->_description); }
static function Log($object, $action, $id, $description) { if (!COption::GetOptionString("webdav", "webdav_log", "N") == "Y") { return; } $type = CWebDavEventLog::_name($object, $action); CEventLog::Log("NOTICE", $type, "webdav", $id, $description); }
/** * @param $level * @param $auditType * @param $itemId * @param $description * @return bool */ public static function addRecord($level, $auditType, $itemId, $description) { if ($level == self::LOG_LEVEL_ERROR) { $severity = "ERROR"; } elseif ($level == self::LOG_LEVEL_INFO) { $severity = "INFO"; } elseif ($level == self::LOG_LEVEL_DEBUG) { $severity = "DEBUG"; } else { $severity = "UNKNOWN"; } \CEventLog::Add(array("SEVERITY" => $severity, "AUDIT_TYPE_ID" => $auditType, "MODULE_ID" => "scale", "ITEM_ID" => $itemId, "DESCRIPTION" => $description)); return true; }
function Request($server, $page, $port, $params, $uri = false) { if ($uri && strlen($uri) > 0) { $strURI = $uri; } else { $strURI = "http://" . $server . (strlen($port) > 0 && intval($port) > 0 ? ":" . intval($port) : "") . (strlen($page) ? $page : "/") . (strlen($params) > 0 ? "?" . $params : ""); } $http = new \Bitrix\Main\Web\HttpClient(array("version" => "1.0", "socketTimeout" => 30, "streamTimeout" => 30, "redirect" => true, "redirectMax" => 5)); $strData = $http->get($strURI); $errors = $http->getError(); $arRSSResult = array(); if (!$strData && !empty($errors)) { $strError = ""; foreach ($errors as $errorCode => $errMes) { $strError .= $errorCode . ": " . $errMes; } \CEventLog::Add(array("SEVERITY" => "ERROR", "AUDIT_TYPE_ID" => "XDIMPORT_HTTP", "MODULE_ID" => "xdimport", "ITEM_ID" => "RSS_REQUEST", "DESCRIPTION" => $strError)); } if ($strData) { $rss_charset = "windows-1251"; if (preg_match("/<" . "\\?XML[^>]{1,}encoding=[\"']([^>\"']{1,})[\"'][^>]{0,}\\?" . ">/i", $strData, $matches)) { $rss_charset = Trim($matches[1]); } $strData = preg_replace("/<" . "\\?XML.*?\\?" . ">/i", "", $strData); $strData = $GLOBALS["APPLICATION"]->ConvertCharset($strData, $rss_charset, SITE_CHARSET); } if (strlen($strData) > 0) { require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/xml.php"; $objXML = new CDataXML(); $res = $objXML->LoadString($strData); if ($res !== false) { $ar = $objXML->GetArray(); if (is_array($ar) && isset($ar["rss"]) && is_array($ar["rss"]) && isset($ar["rss"]["#"]) && is_array($ar["rss"]["#"]) && isset($ar["rss"]["#"]["channel"]) && is_array($ar["rss"]["#"]["channel"]) && isset($ar["rss"]["#"]["channel"][0]) && is_array($ar["rss"]["#"]["channel"][0]) && isset($ar["rss"]["#"]["channel"][0]["#"])) { $arRSSResult = $ar["rss"]["#"]["channel"][0]["#"]; } else { $arRSSResult = array(); } $arRSSResult["rss_charset"] = strtolower(SITE_CHARSET); } } if (is_array($arRSSResult) && !empty($arRSSResult)) { $arRSSResult = CXDILFSchemeRSS::FormatArray($arRSSResult); if (!empty($arRSSResult) && array_key_exists("item", $arRSSResult) && is_array($arRSSResult["item"]) && !empty($arRSSResult["item"])) { $arRSSResult["item"] = array_reverse($arRSSResult["item"]); } } return $arRSSResult; }
function Log($object, $action, $id, $description = "", $title = "") { if (COption::GetOptionString("forum", "LOGS", "Q") <= "A") { return false; } $arTypesTitle = array("FORUM_MESSAGE_APPROVE" => GetMessage("FORUM_MESSAGE_APPROVE"), "FORUM_MESSAGE_UNAPPROVE" => GetMessage("FORUM_MESSAGE_UNAPPROVE"), "FORUM_MESSAGE_MOVE" => GetMessage("FORUM_MESSAGE_MOVE"), "FORUM_MESSAGE_EDIT" => GetMessage("FORUM_MESSAGE_EDIT"), "FORUM_MESSAGE_DELETE" => GetMessage("FORUM_MESSAGE_DELETE"), "FORUM_MESSAGE_SPAM" => GetMessage("FORUM_MESSAGE_SPAM"), "FORUM_TOPIC_APPROVE" => GetMessage("FORUM_TOPIC_APPROVE"), "FORUM_TOPIC_UNAPPROVE" => GetMessage("FORUM_TOPIC_UNAPPROVE"), "FORUM_TOPIC_STICK" => GetMessage("FORUM_TOPIC_STICK"), "FORUM_TOPIC_UNSTICK" => GetMessage("FORUM_TOPIC_UNSTICK"), "FORUM_TOPIC_OPEN" => GetMessage("FORUM_TOPIC_OPEN"), "FORUM_TOPIC_CLOSE" => GetMessage("FORUM_TOPIC_CLOSE"), "FORUM_TOPIC_MOVE" => GetMessage("FORUM_TOPIC_MOVE"), "FORUM_TOPIC_EDIT" => GetMessage("FORUM_TOPIC_EDIT"), "FORUM_TOPIC_DELETE" => GetMessage("FORUM_TOPIC_DELETE"), "FORUM_TOPIC_SPAM" => GetMessage("FORUM_TOPIC_SPAM"), "FORUM_FORUM_EDIT" => GetMessage("FORUM_FORUM_EDIT"), "FORUM_FORUM_DELETE" => GetMessage("FORUM_FORUM_DELETE")); $object = strToUpper($object); $action = strToUpper($action); $type = "FORUM_" . $object . "_" . $action; $title = trim($title); if (empty($title)) { $title = $arTypesTitle[$type]; } $description = trim($description); CEventLog::Log("NOTICE", $type, "forum", $id, $description); }
/** * @param string $severity * @param string $auditType * @param string $itemName * @param string $itemDescription * @return bool */ public function doLog($severity, $auditType, $itemName, $itemDescription) { $savedInDB = $savedInFile = $savedInSyslog = false; if ($this->isDBEngineActive) { $savedInDB = CEventLog::log($severity, $auditType, "security", $itemName, base64_encode($itemDescription)); } $message = ""; if ($this->isSyslogEngineActive) { $message = $this->messageFormatter->format($auditType, $itemName, $itemDescription); $savedInSyslog = syslog($this->syslogPriority, $message); } if ($this->isFileEngineActive) { if (!$message) { $message = $this->messageFormatter->format($auditType, $itemName, $itemDescription); } $message .= "\n"; $savedInFile = file_put_contents($this->filePath, $message, FILE_APPEND) > 0; } return $savedInDB || $savedInSyslog || $savedInFile; }
$arOffersOldFields = CIBlock::GetFields($OF_IBLOCK_ID); $arOffersFields["FIELDS"] = $arOffersOldFields; foreach ($arLogFields as $keyLogField => $valueLogField) { $arOffersFields["FIELDS"][$keyLogField] = $valueLogField; } } $obIBlock = new CIBlock(); $mxOffersID = $obIBlock->Update($OF_IBLOCK_ID, $arOffersFields); if (false == $mxOffersID) { $strWarning .= $obIBlock->LAST_ERROR . "<br>"; $bVarsFromForm = true; } else { $res_log = array(); $res_log['NAME'] = CIBlock::GetArrayByID($OF_IBLOCK_ID, 'NAME'); if (COption::GetOptionString("iblock", "event_log_iblock", "N") === "Y") { CEventLog::Log("IBLOCK", "IBLOCK_EDIT", "iblock", $OF_IBLOCK_ID, serialize($res_log)); } } } else { $strWarning .= str_replace(array('#ID#'), array($OF_IBLOCK_ID), GetMessage('IB_E_RIGHTS_IBLOCK_ACCESS_DENIED')) . '<br>'; $bVarsFromForm = true; } } if (!$bVarsFromForm) { $arSKUProp = CheckSKUProperty($ID, $OF_IBLOCK_ID); if ('OK' == $arSKUProp['RESULT']) { $intSKUPropID = $arSKUProp['VALUE']; } else { $bVarsFromForm = true; $strWarning .= $arSKUProp['MESSAGE'] . '<br>'; }
$abs_path = $DOC_ROOT . $path; } if (strlen($strWarning) <= 0) { if ($REQUEST_METHOD == "POST" && strlen($save) > 0 && is_array($ids) && check_bitrix_sessid()) { CFileMan::SaveMenu(array($site, $menufilename), $aMenuLinksTmp, $sMenuTemplateTmp); $bEdit = true; $module_id = "fileman"; if (COption::GetOptionString($module_id, "log_menu", "Y") == "Y") { $mt = COption::GetOptionString("fileman", "menutypes", $default_value, $site); $mt = unserialize(str_replace("\\", "", $mt)); $res_log['menu_name'] = $mt[$name]; $res_log['path'] = substr($path, 1); if (strlen($new) <= 0) { CEventLog::Log("content", "MENU_EDIT", "fileman", "", serialize($res_log)); } else { CEventLog::Log("content", "MENU_ADD", "fileman", "", serialize($res_log)); } } if (strlen($apply) <= 0) { if (strlen($back_url) > 0) { LocalRedirect("/" . ltrim($back_url, "/")); } else { LocalRedirect("/bitrix/admin/fileman_admin.php?" . $addUrl . "&site=" . $site . "&path=" . UrlEncode($path)); } } else { LocalRedirect("/bitrix/admin/fileman_menu_edit.php?" . $addUrl . "&site=" . $site . "&path=" . UrlEncode($path) . "&name=" . $name); } } } } if ($bEdit) {
$strWarning = GetMessage("pub_src_edit_err"); } } else { $bEdit = true; CUndo::ShowUndoMessage(CUndo::Add($arUndoParams)); $module_id = "fileman"; if(COption::GetOptionString($module_id, "log_page", "Y")=="Y") { $res_log['path'] = substr($path, 1); CEventLog::Log( "content", "PAGE_EDIT", "main", "", serialize($res_log), $_REQUEST["site"] ); } if (CAutoSave::Allowed()) $AUTOSAVE->Reset(); } if(strlen($strWarning)<=0) { ?> <script type="text/javascript" bxrunfirst="true"> top.BX.showWait(); top.BX.reload('<?php
function Start() { $this->test_percent = 100; // by default ob_start(); try { $this->result = call_user_func(array($this,$this->function)); } catch (Exception $e) { $this->Result(null, GetMessage("MAIN_SC_TEST_IS_INCORRECT")); echo $e->getMessage(); } $this->strError = ob_get_clean(); if (!$this->strResult) $this->Result($this->result); if (!$this->fix_mode) { // write to log if (@$this->OpenLog()) { $text = date('Y-M-d H:i:s') . ' ' . $this->strCurrentTestName . ' (' . $this->function . "): " . $this->LogResult . "\n"; if ($this->test_percent < 100) $text .= $this->test_percent.'% done' . "\n"; if ($this->strError) { $text .= str_replace('<br>', "\n", $this->strError)."\n"; } if ($this->test_percent >= 100) // test finished $text .= preg_replace('#<[^<>]+>#','',$this->strResult)."\n"; $text = htmlspecialchars_decode($text); fwrite($this->LogResourse, $text); } } $this->last_function = $this->function; $this->percent = floor(($this->step + $this->test_percent / 100) / count($this->arTest) * 100); if ($this->test_percent >= 100) // test finished { if ($this->step + 1 < count($this->arTest)) { $this->step++; $this->test_percent = 0; $this->arTestVars['last_value'] = ''; list($this->function, $this->strNextTestName) = each($this->arTest[$this->step]); } else // finish { if (!$this->fix_mode) // if we have a kernel { COption::SetOptionString('main', 'site_checker_success', $this->arTestVars['site_checker_success']); CEventLog::Add(array( "SEVERITY" => "WARNING", "AUDIT_TYPE_ID" => $this->arTestVars['site_checker_success'] == 'Y' ? 'SITE_CHECKER_SUCCESS' : 'SITE_CHECKER_ERROR', "MODULE_ID" => "main", "ITEM_ID" => $_SERVER['DOCUMENT_ROOT'], "DESCRIPTION" => '', )); if ($this->arTestVars['site_checker_success'] == 'Y') CAdminNotify::DeleteByTag('SITE_CHECKER'); } } } elseif ($this->result === true) $this->strResult = ''; // in case of temporary result on this step if ($this->result === false) $this->arTestVars['site_checker_success'] = 'N'; }
public static function Delete($ID) { global $DB, $APPLICATION, $USER; $USER_ID = is_object($USER) ? intval($USER->GetID()) : 0; $ID = IntVal($ID); $APPLICATION->ResetException(); foreach (GetModuleEvents("iblock", "OnBeforeIBlockElementDelete", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID)) === false) { $err = GetMessage("MAIN_BEFORE_DEL_ERR") . ' ' . $arEvent['TO_NAME']; $err_id = false; if ($ex = $APPLICATION->GetException()) { $err .= ': ' . $ex->GetString(); $err_id = $ex->GetID(); } $APPLICATION->throwException($err, $err_id); return false; } } $arSql = array("ID='" . $ID . "'", "WF_PARENT_ELEMENT_ID='" . $ID . "'"); foreach ($arSql as $strWhere) { $strSql = "\n\t\t\t\tSELECT\n\t\t\t\t\tID\n\t\t\t\t\t,IBLOCK_ID\n\t\t\t\t\t,WF_PARENT_ELEMENT_ID\n\t\t\t\t\t,WF_STATUS_ID\n\t\t\t\t\t,PREVIEW_PICTURE\n\t\t\t\t\t,DETAIL_PICTURE\n\t\t\t\t\t,XML_ID as EXTERNAL_ID\n\t\t\t\t\t,CODE\n\t\t\t\t\t,NAME\n\t\t\t\tFROM b_iblock_element\n\t\t\t\tWHERE " . $strWhere . "\n\t\t\t\tORDER BY ID DESC\n\t\t\t"; $z = $DB->Query($strSql); while ($zr = $z->Fetch()) { $elementId = (int) $zr["ID"]; $VERSION = CIBlockElement::GetIBVersion($zr["IBLOCK_ID"]); $db_res = CIBlockElement::GetProperty($zr["IBLOCK_ID"], $zr["ID"], "sort", "asc", array("PROPERTY_TYPE" => "F")); $arIBlockFields = CIBLock::GetArrayByID($zr["IBLOCK_ID"], "FIELDS"); if (IntVal($zr["WF_PARENT_ELEMENT_ID"]) <= 0 && $arIBlockFields["LOG_ELEMENT_DELETE"]["IS_REQUIRED"] == "Y") { $arEvents = GetModuleEvents("main", "OnBeforeEventLog", true); if (empty($arEvents) || ExecuteModuleEventEx($arEvents[0], array($USER_ID)) === false) { $rsElement = CIBlockElement::GetList(array(), array("=ID" => $ID), false, false, array("LIST_PAGE_URL", "NAME", "CODE")); $arElement = $rsElement->GetNext(); $arIblock = CIBlock::GetArrayByID($zr['IBLOCK_ID']); $res_log = array("ID" => $ID, "CODE" => $arElement["CODE"], "NAME" => $arElement["NAME"], "ELEMENT_NAME" => $arIblock["ELEMENT_NAME"], "USER_ID" => $USER_ID, "IBLOCK_PAGE_URL" => $arElement["LIST_PAGE_URL"]); CEventLog::Log("IBLOCK", "IBLOCK_ELEMENT_DELETE", "iblock", $zr["IBLOCK_ID"], serialize($res_log)); } } $piId = \Bitrix\Iblock\PropertyIndex\Manager::resolveElement($zr["IBLOCK_ID"], $zr["ID"]); foreach (GetModuleEvents("iblock", "OnIBlockElementDelete", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($elementId, $zr)); } while ($res = $db_res->Fetch()) { CIBlockElement::DeleteFile($res["VALUE"], $zr["ID"], "PROPERTY", $zr["WF_PARENT_ELEMENT_ID"], $zr["IBLOCK_ID"]); } if ($VERSION == 2) { if (!$DB->Query("DELETE FROM b_iblock_element_prop_m" . $zr["IBLOCK_ID"] . " WHERE IBLOCK_ELEMENT_ID = " . $elementId)) { return false; } if (!$DB->Query("DELETE FROM b_iblock_element_prop_s" . $zr["IBLOCK_ID"] . " WHERE IBLOCK_ELEMENT_ID = " . $elementId)) { return false; } } else { if (!$DB->Query("DELETE FROM b_iblock_element_property WHERE IBLOCK_ELEMENT_ID = " . $elementId)) { return false; } } static $arDelCache = array(); if (!is_set($arDelCache, $zr["IBLOCK_ID"])) { $arDelCache[$zr["IBLOCK_ID"]] = false; $db_ps = $DB->Query("SELECT ID,IBLOCK_ID,VERSION,MULTIPLE FROM b_iblock_property WHERE PROPERTY_TYPE='E' AND (LINK_IBLOCK_ID=" . $zr["IBLOCK_ID"] . " OR LINK_IBLOCK_ID=0 OR LINK_IBLOCK_ID IS NULL)"); while ($ar_ps = $db_ps->Fetch()) { if ($ar_ps["VERSION"] == 2) { if ($ar_ps["MULTIPLE"] == "Y") { $strTable = "b_iblock_element_prop_m" . $ar_ps["IBLOCK_ID"]; } else { $strTable = "b_iblock_element_prop_s" . $ar_ps["IBLOCK_ID"]; } } else { $strTable = "b_iblock_element_property"; } $arDelCache[$zr["IBLOCK_ID"]][$strTable][] = $ar_ps["ID"]; } } if ($arDelCache[$zr["IBLOCK_ID"]]) { foreach ($arDelCache[$zr["IBLOCK_ID"]] as $strTable => $arProps) { if (strncmp("b_iblock_element_prop_s", $strTable, 23) == 0) { $tableFields = $DB->GetTableFields($strTable); foreach ($arProps as $prop_id) { $strSql = "UPDATE " . $strTable . " SET PROPERTY_" . $prop_id . "=null"; if (isset($tableFields["DESCRIPTION_" . $prop_id])) { $strSql .= ",DESCRIPTION_" . $prop_id . "=null"; } $strSql .= " WHERE PROPERTY_" . $prop_id . "=" . $zr["ID"]; if (!$DB->Query($strSql)) { return false; } } } elseif (strncmp("b_iblock_element_prop_m", $strTable, 23) == 0) { $tableFields = $DB->GetTableFields(str_replace("prop_m", "prop_s", $strTable)); $strSql = "SELECT IBLOCK_PROPERTY_ID, IBLOCK_ELEMENT_ID FROM " . $strTable . " WHERE IBLOCK_PROPERTY_ID IN (" . implode(", ", $arProps) . ") AND VALUE_NUM=" . $zr["ID"]; $rs = $DB->Query($strSql); while ($ar = $rs->Fetch()) { $strSql = "\n\t\t\t\t\t\t\t\t\tUPDATE " . str_replace("prop_m", "prop_s", $strTable) . "\n\t\t\t\t\t\t\t\t\tSET PROPERTY_" . $ar["IBLOCK_PROPERTY_ID"] . "=null\n\t\t\t\t\t\t\t\t\t" . (isset($tableFields["DESCRIPTION_" . $ar["IBLOCK_PROPERTY_ID"]]) ? ",DESCRIPTION_" . $ar["IBLOCK_PROPERTY_ID"] . "=null" : "") . "\n\t\t\t\t\t\t\t\t\tWHERE IBLOCK_ELEMENT_ID = " . $ar["IBLOCK_ELEMENT_ID"] . "\n\t\t\t\t\t\t\t\t"; if (!$DB->Query($strSql)) { return false; } } $strSql = "DELETE FROM " . $strTable . " WHERE IBLOCK_PROPERTY_ID IN (" . implode(", ", $arProps) . ") AND VALUE_NUM=" . $zr["ID"]; if (!$DB->Query($strSql)) { return false; } } else { $strSql = "DELETE FROM " . $strTable . " WHERE IBLOCK_PROPERTY_ID IN (" . implode(", ", $arProps) . ") AND VALUE_NUM=" . $zr["ID"]; if (!$DB->Query($strSql)) { return false; } } } } if (!$DB->Query("DELETE FROM b_iblock_section_element WHERE IBLOCK_ELEMENT_ID = " . $elementId)) { return false; } $obIBlockElementRights = new CIBlockElementRights($zr["IBLOCK_ID"], $zr["ID"]); $obIBlockElementRights->DeleteAllRights(); $ipropTemplates = new \Bitrix\Iblock\InheritedProperty\ElementTemplates($zr["IBLOCK_ID"], $zr["ID"]); $ipropTemplates->delete(); if (IntVal($zr["WF_PARENT_ELEMENT_ID"]) <= 0 && $zr["WF_STATUS_ID"] == 1 && CModule::IncludeModule("search")) { CSearch::DeleteIndex("iblock", $elementId); } CIBlockElement::DeleteFile($zr["PREVIEW_PICTURE"], $zr["ID"], "PREVIEW", $zr["WF_PARENT_ELEMENT_ID"], $zr["IBLOCK_ID"]); CIBlockElement::DeleteFile($zr["DETAIL_PICTURE"], $zr["ID"], "DETAIL", $zr["WF_PARENT_ELEMENT_ID"], $zr["IBLOCK_ID"]); if (CModule::IncludeModule("workflow")) { $DB->Query("DELETE FROM b_workflow_move WHERE IBLOCK_ELEMENT_ID=" . $elementId); } $DB->Query("DELETE FROM b_iblock_element_lock WHERE IBLOCK_ELEMENT_ID=" . $elementId); $DB->Query("DELETE FROM b_rating_vote WHERE ENTITY_TYPE_ID = 'IBLOCK_ELEMENT' AND ENTITY_ID = " . $elementId); $DB->Query("DELETE FROM b_rating_voting WHERE ENTITY_TYPE_ID = 'IBLOCK_ELEMENT' AND ENTITY_ID = " . $elementId); if (!$DB->Query("DELETE FROM b_iblock_element WHERE ID=" . $elementId)) { return false; } if (isset(self::$elementIblock[$elementId])) { unset(self::$elementIblock[$elementId]); } \Bitrix\Iblock\PropertyIndex\Manager::deleteElementIndex($zr["IBLOCK_ID"], $piId); if (CModule::IncludeModule("bizproc")) { CBPDocument::OnDocumentDelete(array("iblock", "CIBlockDocument", $zr["ID"]), $arErrorsTmp); } foreach (GetModuleEvents("iblock", "OnAfterIBlockElementDelete", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($zr)); } CIBlock::clearIblockTagCache($zr['IBLOCK_ID']); unset($elementId); } } /************* QUOTA *************/ $_SESSION["SESS_RECOUNT_DB"] = "Y"; /************* QUOTA *************/ return true; }
function DelGroupRight($module_id = '', $arGroups = array(), $site_id = false) { global $DB; $err_mess = CAllMain::err_mess() . "<br>Function: DelGroupRight<br>Line: "; $strSql = ''; $sGroups = ''; if (is_array($arGroups) && count($arGroups) > 0) { foreach ($arGroups as $grp) { $sGroups .= ($sGroups != '' ? ',' : '') . intval($grp); } } if ($module_id != '') { if ($sGroups != '') { if (COption::GetOptionString("main", "event_log_module_access", "N") === "Y") { //get old value $rsRight = $DB->Query("SELECT GROUP_ID, G_ACCESS FROM b_module_group WHERE MODULE_ID='" . $DB->ForSql($module_id, 50) . "' AND GROUP_ID IN (" . $sGroups . ") AND SITE_ID " . ($site_id ? "= '" . $DB->ForSql($site_id) . "'" : "IS NULL")); while ($arRight = $rsRight->Fetch()) { CEventLog::Log("SECURITY", "MODULE_RIGHTS_CHANGED", "main", $arRight["GROUP_ID"], $module_id . ($site_id ? "/" . $site_id : "") . ": (" . $arRight["G_ACCESS"] . ") => ()"); } } $strSql = "DELETE FROM b_module_group WHERE MODULE_ID='" . $DB->ForSql($module_id, 50) . "' and GROUP_ID in (" . $sGroups . ") AND SITE_ID " . ($site_id ? "= '" . $DB->ForSql($site_id) . "'" : "IS NULL"); } else { //on delete module $strSql = "DELETE FROM b_module_group WHERE MODULE_ID='" . $DB->ForSql($module_id, 50) . "' AND SITE_ID " . ($site_id ? "= '" . $DB->ForSql($site_id) . "'" : "IS NULL"); } } elseif ($sGroups != '') { //on delete user group $strSql = "DELETE FROM b_module_group WHERE GROUP_ID in (" . $sGroups . ") AND SITE_ID " . ($site_id ? "= '" . $DB->ForSql($site_id) . "'" : "IS NULL"); } if ($strSql != '') { $DB->Query($strSql, false, $err_mess . __LINE__); } }
/** * @param string $pSeverity * @param string $pAuditType * @param string $pItemName * @param string $pItemDescription * @return bool */ public function doLog($pSeverity, $pAuditType, $pItemName, $pItemDescription) { $savedInDB = $savedInFile = $savedInSyslog = false; if ($this->isDBEngineActive) { $savedInDB = CEventLog::log($pSeverity, $pAuditType, "security", $pItemName, $pItemDescription); } if ($this->isSyslogEngineActive) { $message = self::formatMessage($pAuditType, $pItemName, $pItemDescription, $this->isUserInfoNeeded); $savedInSyslog = syslog($this->syslogPriority, $message); } if ($this->isFileEngineActive) { $message = self::formatMessage($pAuditType, $pItemName, $pItemDescription, $this->isUserInfoNeeded); $message .= "\n"; $savedInFile = file_put_contents($this->filePath, $message, FILE_APPEND) > 0; } return $savedInDB || $savedInSyslog || $savedInFile; }
function Update($ID, $arFields, $bWorkFlow = false, $bUpdateSearch = true, $bResizePictures = false, $bCheckDiskQuota = true) { global $DB, $USER; $ID = intval($ID); $db_element = CIBlockElement::GetList(array(), array("ID" => $ID, "SHOW_HISTORY" => "Y"), false, false, array("ID", "TIMESTAMP_X", "MODIFIED_BY", "DATE_CREATE", "CREATED_BY", "IBLOCK_ID", "ACTIVE", "ACTIVE_FROM", "ACTIVE_TO", "SORT", "NAME", "PREVIEW_PICTURE", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "DETAIL_PICTURE", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "WF_STATUS_ID", "WF_PARENT_ELEMENT_ID", "WF_NEW", "WF_COMMENTS", "IN_SECTIONS", "CODE", "TAGS", "XML_ID", "TMP_ID")); if (!($ar_element = $db_element->Fetch())) { return false; } $arIBlock = CIBlock::GetArrayByID($ar_element["IBLOCK_ID"]); $bWorkFlow = $bWorkFlow && is_array($arIBlock) && $arIBlock["WORKFLOW"] != "N" && CModule::IncludeModule("workflow"); $ar_wf_element = $ar_element; $LAST_ID = 0; if ($bWorkFlow) { $LAST_ID = CIBlockElement::WF_GetLast($ID); if ($LAST_ID != $ID) { $db_element = CIBlockElement::GetByID($LAST_ID); if (!($ar_wf_element = $db_element->Fetch())) { return false; } } $arFields["WF_PARENT_ELEMENT_ID"] = $ID; if (!array_key_exists("PROPERTY_VALUES", $arFields) || !is_array($arFields["PROPERTY_VALUES"])) { $arFields["PROPERTY_VALUES"] = array(); } $bFieldProps = array(); foreach ($arFields["PROPERTY_VALUES"] as $k => $v) { $bFieldProps[$k] = true; } $arFieldProps =& $arFields['PROPERTY_VALUES']; $props = CIBlockElement::GetProperty($ar_element["IBLOCK_ID"], $ar_wf_element["ID"]); while ($arProp = $props->Fetch()) { $pr_val_id = $arProp['PROPERTY_VALUE_ID']; if ($arProp['PROPERTY_TYPE'] == 'F' && strlen($pr_val_id) > 0) { if (strlen($arProp["CODE"]) > 0 && is_set($arFieldProps, $arProp["CODE"])) { $pr_id = $arProp["CODE"]; } else { $pr_id = $arProp['ID']; } if (array_key_exists($pr_id, $arFieldProps) && array_key_exists($pr_val_id, $arFieldProps[$pr_id]) && is_array($arFieldProps[$pr_id][$pr_val_id])) { $new_value = $arFieldProps[$pr_id][$pr_val_id]; if (strlen($new_value['name']) <= 0 && $new_value['del'] != "Y" && strlen($new_value['VALUE']['name']) <= 0 && $new_value['VALUE']['del'] != "Y") { if (array_key_exists('DESCRIPTION', $new_value) && $new_value['DESCRIPTION'] != $arProp['DESCRIPTION']) { $p = array("VALUE" => CFile::MakeFileArray($arProp['VALUE'])); $p["DESCRIPTION"] = $new_value["DESCRIPTION"]; $p["MODULE_ID"] = "iblock"; $arFieldProps[$pr_id][$pr_val_id] = $p; } elseif ($arProp['VALUE'] > 0) { $arFieldProps[$pr_id][$pr_val_id] = array("VALUE" => $arProp['VALUE'], "DESCRIPTION" => $arProp["DESCRIPTION"]); } } } else { $arFieldProps[$pr_id][$pr_val_id] = array("VALUE" => $arProp['VALUE'], "DESCRIPTION" => $arProp["DESCRIPTION"]); } continue; } if (strlen($pr_val_id) <= 0 || array_key_exists($arProp["ID"], $bFieldProps) || strlen($arProp["CODE"]) > 0 && array_key_exists($arProp["CODE"], $bFieldProps)) { continue; } $arFieldProps[$arProp["ID"]][$pr_val_id] = array("VALUE" => $arProp['VALUE'], "DESCRIPTION" => $arProp["DESCRIPTION"]); } if ($ar_wf_element["IN_SECTIONS"] == "Y") { $ar_wf_element["IBLOCK_SECTION"] = array(); $rsSections = CIBlockElement::GetElementGroups($ar_element["ID"], true, array('ID', 'IBLOCK_ELEMENT_ID')); while ($arSection = $rsSections->Fetch()) { $ar_wf_element["IBLOCK_SECTION"][] = $arSection["ID"]; } } unset($ar_wf_element["DATE_ACTIVE_FROM"]); unset($ar_wf_element["DATE_ACTIVE_TO"]); unset($ar_wf_element["EXTERNAL_ID"]); unset($ar_wf_element["TIMESTAMP_X"]); unset($ar_wf_element["ID"]); $arFields = $arFields + $ar_wf_element; } $arFields["WF"] = $bWorkFlow ? "Y" : "N"; $bBizProc = is_array($arIBlock) && $arIBlock["BIZPROC"] == "Y" && IsModuleInstalled("bizproc"); if (array_key_exists("BP_PUBLISHED", $arFields)) { if ($bBizProc) { if ($arFields["BP_PUBLISHED"] == "Y") { $arFields["WF_STATUS_ID"] = 1; $arFields["WF_NEW"] = false; } else { $arFields["WF_STATUS_ID"] = 2; $arFields["WF_NEW"] = "Y"; $arFields["BP_PUBLISHED"] = "N"; } } else { $arFields["WF_NEW"] = false; unset($arFields["BP_PUBLISHED"]); } } else { $arFields["WF_NEW"] = false; } if (is_set($arFields, "ACTIVE") && $arFields["ACTIVE"] != "Y") { $arFields["ACTIVE"] = "N"; } if (is_set($arFields, "PREVIEW_TEXT_TYPE") && $arFields["PREVIEW_TEXT_TYPE"] != "html") { $arFields["PREVIEW_TEXT_TYPE"] = "text"; } if (is_set($arFields, "DETAIL_TEXT_TYPE") && $arFields["DETAIL_TEXT_TYPE"] != "html") { $arFields["DETAIL_TEXT_TYPE"] = "text"; } $strWarning = ""; if ($bResizePictures) { $arDef = $arIBlock["FIELDS"]["PREVIEW_PICTURE"]["DEFAULT_VALUE"]; if ($arDef["DELETE_WITH_DETAIL"] === "Y" && $arFields["DETAIL_PICTURE"]["del"] === "Y") { $arFields["PREVIEW_PICTURE"]["del"] = "Y"; } if ($arDef["FROM_DETAIL"] === "Y" && ($arFields["PREVIEW_PICTURE"]["size"] <= 0 || $arDef["UPDATE_WITH_DETAIL"] === "Y") && is_array($arFields["DETAIL_PICTURE"]) && $arFields["DETAIL_PICTURE"]["size"] > 0) { if ($arFields["PREVIEW_PICTURE"]["del"] !== "Y" && $arDef["UPDATE_WITH_DETAIL"] !== "Y") { $rsElement = CIBlockElement::GetList(array("ID" => "DESC"), array("ID" => $ar_wf_element["ID"], "IBLOCK_ID" => $ar_wf_element["IBLOCK_ID"], "SHOW_HISTORY" => "Y"), false, false, array("ID", "PREVIEW_PICTURE")); $arOldElement = $rsElement->Fetch(); } else { $arOldElement = false; } if (!$arOldElement || !$arOldElement["PREVIEW_PICTURE"]) { $arNewPreview = $arFields["DETAIL_PICTURE"]; $arNewPreview["COPY_FILE"] = "Y"; $arNewPreview["description"] = $arFields["PREVIEW_PICTURE"]["description"]; $arFields["PREVIEW_PICTURE"] = $arNewPreview; } } if (array_key_exists("PREVIEW_PICTURE", $arFields) && is_array($arFields["PREVIEW_PICTURE"]) && $arFields["PREVIEW_PICTURE"]["size"] > 0 && $arDef["SCALE"] === "Y") { $arNewPicture = CIBlock::ResizePicture($arFields["PREVIEW_PICTURE"], $arDef); if (is_array($arNewPicture)) { $arNewPicture["description"] = $arFields["PREVIEW_PICTURE"]["description"]; $arFields["PREVIEW_PICTURE"] = $arNewPicture; } elseif ($arDef["IGNORE_ERRORS"] !== "Y") { unset($arFields["PREVIEW_PICTURE"]); $strWarning .= GetMessage("IBLOCK_FIELD_PREVIEW_PICTURE") . ": " . $arNewPicture . "<br>"; } } if (array_key_exists("PREVIEW_PICTURE", $arFields) && is_array($arFields["PREVIEW_PICTURE"]) && $arDef["USE_WATERMARK_FILE"] === "Y") { if (strlen($arFields["PREVIEW_PICTURE"]["tmp_name"]) > 0 && ($arFields["PREVIEW_PICTURE"]["tmp_name"] === $arFields["DETAIL_PICTURE"]["tmp_name"] || $arFields["PREVIEW_PICTURE"]["COPY_FILE"] == "Y" && !$arFields["PREVIEW_PICTURE"]["copy"])) { $tmp_name = CTempFile::GetFileName(basename($arFields["PREVIEW_PICTURE"]["tmp_name"])); CheckDirPath($tmp_name); copy($arFields["PREVIEW_PICTURE"]["tmp_name"], $tmp_name); $arFields["PREVIEW_PICTURE"]["copy"] = true; $arFields["PREVIEW_PICTURE"]["tmp_name"] = $tmp_name; } CIBLock::FilterPicture($arFields["PREVIEW_PICTURE"]["tmp_name"], array("name" => "watermark", "position" => $arDef["WATERMARK_FILE_POSITION"], "type" => "file", "size" => "real", "alpha_level" => 100 - min(max($arDef["WATERMARK_FILE_ALPHA"], 0), 100), "file" => $_SERVER["DOCUMENT_ROOT"] . Rel2Abs("/", $arDef["WATERMARK_FILE"]))); } if (array_key_exists("PREVIEW_PICTURE", $arFields) && is_array($arFields["PREVIEW_PICTURE"]) && $arDef["USE_WATERMARK_TEXT"] === "Y") { if (strlen($arFields["PREVIEW_PICTURE"]["tmp_name"]) > 0 && ($arFields["PREVIEW_PICTURE"]["tmp_name"] === $arFields["DETAIL_PICTURE"]["tmp_name"] || $arFields["PREVIEW_PICTURE"]["COPY_FILE"] == "Y" && !$arFields["PREVIEW_PICTURE"]["copy"])) { $tmp_name = CTempFile::GetFileName(basename($arFields["PREVIEW_PICTURE"]["tmp_name"])); CheckDirPath($tmp_name); copy($arFields["PREVIEW_PICTURE"]["tmp_name"], $tmp_name); $arFields["PREVIEW_PICTURE"]["copy"] = true; $arFields["PREVIEW_PICTURE"]["tmp_name"] = $tmp_name; } CIBLock::FilterPicture($arFields["PREVIEW_PICTURE"]["tmp_name"], array("name" => "watermark", "position" => $arDef["WATERMARK_TEXT_POSITION"], "type" => "text", "coefficient" => $arDef["WATERMARK_TEXT_SIZE"], "text" => $arDef["WATERMARK_TEXT"], "font" => $_SERVER["DOCUMENT_ROOT"] . Rel2Abs("/", $arDef["WATERMARK_TEXT_FONT"]), "color" => $arDef["WATERMARK_TEXT_COLOR"])); } $arDef = $arIBlock["FIELDS"]["DETAIL_PICTURE"]["DEFAULT_VALUE"]; if (array_key_exists("DETAIL_PICTURE", $arFields) && is_array($arFields["DETAIL_PICTURE"]) && $arDef["SCALE"] === "Y") { $arNewPicture = CIBlock::ResizePicture($arFields["DETAIL_PICTURE"], $arDef); if (is_array($arNewPicture)) { $arNewPicture["description"] = $arFields["DETAIL_PICTURE"]["description"]; $arFields["DETAIL_PICTURE"] = $arNewPicture; } elseif ($arDef["IGNORE_ERRORS"] !== "Y") { unset($arFields["DETAIL_PICTURE"]); $strWarning .= GetMessage("IBLOCK_FIELD_DETAIL_PICTURE") . ": " . $arNewPicture . "<br>"; } } if (array_key_exists("DETAIL_PICTURE", $arFields) && is_array($arFields["DETAIL_PICTURE"]) && $arDef["USE_WATERMARK_FILE"] === "Y") { if (strlen($arFields["DETAIL_PICTURE"]["tmp_name"]) > 0 && ($arFields["DETAIL_PICTURE"]["tmp_name"] === $arFields["PREVIEW_PICTURE"]["tmp_name"] || $arFields["DETAIL_PICTURE"]["COPY_FILE"] == "Y" && !$arFields["DETAIL_PICTURE"]["copy"])) { $tmp_name = CTempFile::GetFileName(basename($arFields["DETAIL_PICTURE"]["tmp_name"])); CheckDirPath($tmp_name); copy($arFields["DETAIL_PICTURE"]["tmp_name"], $tmp_name); $arFields["DETAIL_PICTURE"]["copy"] = true; $arFields["DETAIL_PICTURE"]["tmp_name"] = $tmp_name; } CIBLock::FilterPicture($arFields["DETAIL_PICTURE"]["tmp_name"], array("name" => "watermark", "position" => $arDef["WATERMARK_FILE_POSITION"], "type" => "file", "size" => "real", "alpha_level" => 100 - min(max($arDef["WATERMARK_FILE_ALPHA"], 0), 100), "file" => $_SERVER["DOCUMENT_ROOT"] . Rel2Abs("/", $arDef["WATERMARK_FILE"]))); } if (array_key_exists("DETAIL_PICTURE", $arFields) && is_array($arFields["DETAIL_PICTURE"]) && $arDef["USE_WATERMARK_TEXT"] === "Y") { if (strlen($arFields["DETAIL_PICTURE"]["tmp_name"]) > 0 && ($arFields["DETAIL_PICTURE"]["tmp_name"] === $arFields["PREVIEW_PICTURE"]["tmp_name"] || $arFields["DETAIL_PICTURE"]["COPY_FILE"] == "Y" && !$arFields["DETAIL_PICTURE"]["copy"])) { $tmp_name = CTempFile::GetFileName(basename($arFields["DETAIL_PICTURE"]["tmp_name"])); CheckDirPath($tmp_name); copy($arFields["DETAIL_PICTURE"]["tmp_name"], $tmp_name); $arFields["DETAIL_PICTURE"]["copy"] = true; $arFields["DETAIL_PICTURE"]["tmp_name"] = $tmp_name; } CIBLock::FilterPicture($arFields["DETAIL_PICTURE"]["tmp_name"], array("name" => "watermark", "position" => $arDef["WATERMARK_TEXT_POSITION"], "type" => "text", "coefficient" => $arDef["WATERMARK_TEXT_SIZE"], "text" => $arDef["WATERMARK_TEXT"], "font" => $_SERVER["DOCUMENT_ROOT"] . Rel2Abs("/", $arDef["WATERMARK_TEXT_FONT"]), "color" => $arDef["WATERMARK_TEXT_COLOR"])); } } $ipropTemplates = new \Bitrix\Iblock\InheritedProperty\ElementTemplates($ar_element["IBLOCK_ID"], $ar_element["ID"]); if (array_key_exists("PREVIEW_PICTURE", $arFields) && is_array($arFields["PREVIEW_PICTURE"])) { if (strlen($arFields["PREVIEW_PICTURE"]["name"]) <= 0 && strlen($arFields["PREVIEW_PICTURE"]["del"]) <= 0 && !is_set($arFields["PREVIEW_PICTURE"], "description")) { unset($arFields["PREVIEW_PICTURE"]); } else { $arFields["PREVIEW_PICTURE"]["MODULE_ID"] = "iblock"; $arFields["PREVIEW_PICTURE"]["old_file"] = $ar_wf_element["PREVIEW_PICTURE"]; $arFields["PREVIEW_PICTURE"]["name"] = \Bitrix\Iblock\Template\Helper::makeFileName($ipropTemplates, "ELEMENT_PREVIEW_PICTURE_FILE_NAME", array_merge($ar_element, $arFields), $arFields["PREVIEW_PICTURE"]); } } if (array_key_exists("DETAIL_PICTURE", $arFields) && is_array($arFields["DETAIL_PICTURE"])) { if (strlen($arFields["DETAIL_PICTURE"]["name"]) <= 0 && strlen($arFields["DETAIL_PICTURE"]["del"]) <= 0 && !is_set($arFields["DETAIL_PICTURE"], "description")) { unset($arFields["DETAIL_PICTURE"]); } else { $arFields["DETAIL_PICTURE"]["MODULE_ID"] = "iblock"; $arFields["DETAIL_PICTURE"]["old_file"] = $ar_wf_element["DETAIL_PICTURE"]; $arFields["DETAIL_PICTURE"]["name"] = \Bitrix\Iblock\Template\Helper::makeFileName($ipropTemplates, "ELEMENT_DETAIL_PICTURE_FILE_NAME", array_merge($ar_element, $arFields), $arFields["DETAIL_PICTURE"]); } } if (is_set($arFields, "DATE_ACTIVE_FROM")) { $arFields["ACTIVE_FROM"] = $arFields["DATE_ACTIVE_FROM"]; } if (is_set($arFields, "DATE_ACTIVE_TO")) { $arFields["ACTIVE_TO"] = $arFields["DATE_ACTIVE_TO"]; } if (is_set($arFields, "EXTERNAL_ID")) { $arFields["XML_ID"] = $arFields["EXTERNAL_ID"]; } $PREVIEW_tmp = is_set($arFields, "PREVIEW_TEXT") ? $arFields["PREVIEW_TEXT"] : $ar_wf_element["PREVIEW_TEXT"]; $PREVIEW_TYPE_tmp = is_set($arFields, "PREVIEW_TEXT_TYPE") ? $arFields["PREVIEW_TEXT_TYPE"] : $ar_wf_element["PREVIEW_TEXT_TYPE"]; $DETAIL_tmp = is_set($arFields, "DETAIL_TEXT") ? $arFields["DETAIL_TEXT"] : $ar_wf_element["DETAIL_TEXT"]; $DETAIL_TYPE_tmp = is_set($arFields, "DETAIL_TEXT_TYPE") ? $arFields["DETAIL_TEXT_TYPE"] : $ar_wf_element["DETAIL_TEXT_TYPE"]; $arFields["SEARCHABLE_CONTENT"] = ToUpper((is_set($arFields, "NAME") ? $arFields["NAME"] : $ar_wf_element["NAME"]) . "\r\n" . ($PREVIEW_TYPE_tmp == "html" ? HTMLToTxt($PREVIEW_tmp) : $PREVIEW_tmp) . "\r\n" . ($DETAIL_TYPE_tmp == "html" ? HTMLToTxt($DETAIL_tmp) : $DETAIL_tmp)); if (is_set($arFields["IBLOCK_SECTION_ID"]) && !is_set($arFields, "IBLOCK_SECTION")) { $arFields["IBLOCK_SECTION"] = array($arFields["IBLOCK_SECTION_ID"]); } $arFields["IBLOCK_ID"] = $ar_element["IBLOCK_ID"]; if (!$this->CheckFields($arFields, $ID, $bCheckDiskQuota) || strlen($strWarning)) { $this->LAST_ERROR .= $strWarning; $Result = false; $arFields["RESULT_MESSAGE"] =& $this->LAST_ERROR; } else { unset($arFields["ID"]); if (array_key_exists("PREVIEW_PICTURE", $arFields)) { $SAVED_PREVIEW_PICTURE = $arFields["PREVIEW_PICTURE"]; } else { $SAVED_PREVIEW_PICTURE = false; } if (array_key_exists("DETAIL_PICTURE", $arFields)) { $SAVED_DETAIL_PICTURE = $arFields["DETAIL_PICTURE"]; } else { $SAVED_DETAIL_PICTURE = false; } // edit was done in workflow mode if ($bWorkFlow) { $arFields["WF_PARENT_ELEMENT_ID"] = $ID; if (array_key_exists("PREVIEW_PICTURE", $arFields)) { if (is_array($arFields["PREVIEW_PICTURE"])) { if (strlen($arFields["PREVIEW_PICTURE"]["name"]) <= 0 && strlen($arFields["PREVIEW_PICTURE"]["del"]) <= 0) { if (array_key_exists("description", $arFields["PREVIEW_PICTURE"])) { $arFile = CFile::GetFileArray($ar_wf_element["PREVIEW_PICTURE"]); if ($arFields["PREVIEW_PICTURE"]["description"] != $arFile["DESCRIPTION"]) { //Description updated, so it's new file $arNewFile = CFile::MakeFileArray($ar_wf_element["PREVIEW_PICTURE"]); $arNewFile["description"] = $arFields["PREVIEW_PICTURE"]["description"]; $arNewFile["MODULE_ID"] = "iblock"; $arFields["PREVIEW_PICTURE"] = $arNewFile; } else { $arFields["PREVIEW_PICTURE"] = $ar_wf_element["PREVIEW_PICTURE"]; } } else { //File was not changed at all $arFields["PREVIEW_PICTURE"] = $ar_wf_element["PREVIEW_PICTURE"]; } } else { unset($arFields["PREVIEW_PICTURE"]["old_file"]); } } } else { $arFields["PREVIEW_PICTURE"] = $ar_wf_element["PREVIEW_PICTURE"]; } if (array_key_exists("DETAIL_PICTURE", $arFields)) { if (is_array($arFields["DETAIL_PICTURE"])) { if (strlen($arFields["DETAIL_PICTURE"]["name"]) <= 0 && strlen($arFields["DETAIL_PICTURE"]["del"]) <= 0) { if (array_key_exists("description", $arFields["DETAIL_PICTURE"])) { $arFile = CFile::GetFileArray($ar_wf_element["DETAIL_PICTURE"]); if ($arFields["DETAIL_PICTURE"]["description"] != $arFile["DESCRIPTION"]) { //Description updated, so it's new file $arNewFile = CFile::MakeFileArray($ar_wf_element["DETAIL_PICTURE"]); $arNewFile["description"] = $arFields["DETAIL_PICTURE"]["description"]; $arNewFile["MODULE_ID"] = "iblock"; $arFields["DETAIL_PICTURE"] = $arNewFile; } else { $arFields["DETAIL_PICTURE"] = $ar_wf_element["DETAIL_PICTURE"]; } } else { //File was not changed at all $arFields["DETAIL_PICTURE"] = $ar_wf_element["DETAIL_PICTURE"]; } } else { unset($arFields["DETAIL_PICTURE"]["old_file"]); } } } else { $arFields["DETAIL_PICTURE"] = $ar_wf_element["DETAIL_PICTURE"]; } $NID = $this->Add($arFields); if ($NID > 0) { if ($arFields["WF_STATUS_ID"] == 1) { $DB->Query("UPDATE b_iblock_element SET TIMESTAMP_X=TIMESTAMP_X, WF_NEW=null WHERE ID=" . $ID); $DB->Query("UPDATE b_iblock_element SET TIMESTAMP_X=TIMESTAMP_X, WF_NEW=null WHERE WF_PARENT_ELEMENT_ID=" . $ID); $ar_wf_element["WF_NEW"] = false; } if ($this->bWF_SetMove) { CIBlockElement::WF_SetMove($NID, $LAST_ID); } if ($ar_element["WF_STATUS_ID"] != 1 && $ar_wf_element["WF_STATUS_ID"] != $arFields["WF_STATUS_ID"] && $arFields["WF_STATUS_ID"] != 1) { $DB->Query("UPDATE b_iblock_element SET TIMESTAMP_X=TIMESTAMP_X, WF_STATUS_ID=" . $arFields["WF_STATUS_ID"] . " WHERE ID=" . $ID); } } //element was not published, so keep original if (is_set($arFields, "WF_STATUS_ID") && $arFields["WF_STATUS_ID"] != 1 && $ar_element["WF_STATUS_ID"] == 1 || !is_set($arFields, "WF_STATUS_ID") && $ar_wf_element["WF_STATUS_ID"] != 1) { CIBlockElement::WF_CleanUpHistoryCopies($ID); return true; } $arFields['WF_PARENT_ELEMENT_ID'] = false; $rs = $DB->Query("SELECT PREVIEW_PICTURE, DETAIL_PICTURE from b_iblock_element WHERE ID = " . $NID); $ar_new_element = $rs->Fetch(); } else { $ar_new_element = false; } if ($ar_new_element) { if (!intval($ar_new_element["PREVIEW_PICTURE"])) { $arFields["PREVIEW_PICTURE"] = false; } else { $arFields["PREVIEW_PICTURE"] = $ar_new_element["PREVIEW_PICTURE"]; } if (!intval($ar_new_element["DETAIL_PICTURE"])) { $arFields["DETAIL_PICTURE"] = false; } else { $arFields["DETAIL_PICTURE"] = $ar_new_element["DETAIL_PICTURE"]; } if (is_array($arFields["PROPERTY_VALUES"]) && count($arFields["PROPERTY_VALUES"]) > 0) { $i = 0; $db_prop = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $arFields["IBLOCK_ID"], "CHECK_PERMISSIONS" => "N", "PROPERTY_TYPE" => "F")); while ($arProp = $db_prop->Fetch()) { $i++; unset($arFields["PROPERTY_VALUES"][$arProp["CODE"]]); unset($arFields["PROPERTY_VALUES"][$arProp["ID"]]); $arFields["PROPERTY_VALUES"][$arProp["ID"]] = array(); } if ($i > 0) { //Delete previous files $props = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $ID, "sort", "asc", array("PROPERTY_TYPE" => "F", "EMPTY" => "N")); while ($arProp = $props->Fetch()) { $arFields["PROPERTY_VALUES"][$arProp["ID"]][$arProp['PROPERTY_VALUE_ID']] = array("VALUE" => array("del" => "Y"), "DESCRIPTION" => false); } //Add copy from history $arDup = array(); //This is cure for files duplication bug (just save element one more time) $props = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $NID, "sort", "asc", array("PROPERTY_TYPE" => "F", "EMPTY" => "N")); while ($arProp = $props->Fetch()) { if (!array_key_exists($arProp["VALUE"], $arDup)) { $arFields["PROPERTY_VALUES"][$arProp["ID"]][$arProp['PROPERTY_VALUE_ID']] = array("VALUE" => $arProp["VALUE"], "DESCRIPTION" => $arProp["DESCRIPTION"]); $arDup[$arProp["VALUE"]] = true; //This is cure for files duplication bug } } } } } else { if (array_key_exists("PREVIEW_PICTURE", $arFields)) { CFile::SaveForDB($arFields, "PREVIEW_PICTURE", "iblock"); } if (array_key_exists("DETAIL_PICTURE", $arFields)) { CFile::SaveForDB($arFields, "DETAIL_PICTURE", "iblock"); } } unset($arFields["IBLOCK_ID"]); unset($arFields["WF_NEW"]); unset($arFields["IBLOCK_SECTION_ID"]); $bTimeStampNA = false; if (is_set($arFields, "TIMESTAMP_X") && ($arFields["TIMESTAMP_X"] === NULL || $arFields["TIMESTAMP_X"] === false)) { $bTimeStampNA = true; unset($arFields["TIMESTAMP_X"]); } $strUpdate = $DB->PrepareUpdate("b_iblock_element", $arFields, "iblock"); if (strlen($strUpdate) > 0) { $strUpdate .= ", "; } $strSql = "UPDATE b_iblock_element SET " . $strUpdate . ($bTimeStampNA ? "TIMESTAMP_X=TIMESTAMP_X" : "TIMESTAMP_X=now()") . " WHERE ID=" . $ID; $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); if (array_key_exists("PROPERTY_VALUES", $arFields) && is_array($arFields["PROPERTY_VALUES"]) && count($arFields["PROPERTY_VALUES"]) > 0) { CIBlockElement::SetPropertyValues($ID, $ar_element["IBLOCK_ID"], $arFields["PROPERTY_VALUES"]); } if (is_set($arFields, "IBLOCK_SECTION")) { CIBlockElement::SetElementSection($ID, $arFields["IBLOCK_SECTION"], false, $arIBlock["RIGHTS_MODE"] === "E" ? $arIBlock["ID"] : 0); } if ($arIBlock["RIGHTS_MODE"] === "E") { $obElementRights = new CIBlockElementRights($arIBlock["ID"], $ID); if (array_key_exists("RIGHTS", $arFields) && is_array($arFields["RIGHTS"])) { $obElementRights->SetRights($arFields["RIGHTS"]); } } if (array_key_exists("IPROPERTY_TEMPLATES", $arFields)) { $ipropTemplates = new \Bitrix\Iblock\InheritedProperty\ElementTemplates($arIBlock["ID"], $ID); $ipropTemplates->set($arFields["IPROPERTY_TEMPLATES"]); } if ($bUpdateSearch) { CIBlockElement::UpdateSearch($ID, true); } if ($bWorkFlow) { CIBlockElement::WF_CleanUpHistoryCopies($ID); } //Restore saved values if ($SAVED_PREVIEW_PICTURE !== false) { $arFields["PREVIEW_PICTURE_ID"] = $arFields["PREVIEW_PICTURE"]; $arFields["PREVIEW_PICTURE"] = $SAVED_PREVIEW_PICTURE; } else { unset($arFields["PREVIEW_PICTURE"]); } if ($SAVED_DETAIL_PICTURE !== false) { $arFields["DETAIL_PICTURE_ID"] = $arFields["DETAIL_PICTURE"]; $arFields["DETAIL_PICTURE"] = $SAVED_DETAIL_PICTURE; } else { unset($arFields["DETAIL_PICTURE"]); } if ($arIBlock["FIELDS"]["LOG_ELEMENT_EDIT"]["IS_REQUIRED"] == "Y") { $USER_ID = is_object($USER) ? intval($USER->GetID()) : 0; $arEvents = GetModuleEvents("main", "OnBeforeEventLog", true); if (empty($arEvents) || ExecuteModuleEventEx($arEvents[0], array($USER_ID)) === false) { $rsElement = CIBlockElement::GetList(array(), array("=ID" => $ID, "CHECK_PERMISSIONS" => "N", "SHOW_NEW" => "Y"), false, false, array("ID", "NAME", "LIST_PAGE_URL", "CODE")); $arElement = $rsElement->GetNext(); $res = array("ID" => $ID, "CODE" => $arElement["CODE"], "NAME" => $arElement["NAME"], "ELEMENT_NAME" => $arIBlock["ELEMENT_NAME"], "USER_ID" => $USER_ID, "IBLOCK_PAGE_URL" => $arElement["LIST_PAGE_URL"]); CEventLog::Log("IBLOCK", "IBLOCK_ELEMENT_EDIT", "iblock", $arIBlock["ID"], serialize($res)); } } $Result = true; /************* QUOTA *************/ $_SESSION["SESS_RECOUNT_DB"] = "Y"; /************* QUOTA *************/ } $arFields["ID"] = $ID; $arFields["IBLOCK_ID"] = $ar_element["IBLOCK_ID"]; $arFields["RESULT"] =& $Result; if (isset($arFields["PREVIEW_PICTURE"]) && $arFields["PREVIEW_PICTURE"]["COPY_FILE"] == "Y" && $arFields["PREVIEW_PICTURE"]["copy"]) { @unlink($arFields["PREVIEW_PICTURE"]["tmp_name"]); @rmdir(dirname($arFields["PREVIEW_PICTURE"]["tmp_name"])); } if (isset($arFields["DETAIL_PICTURE"]) && $arFields["DETAIL_PICTURE"]["COPY_FILE"] == "Y" && $arFields["DETAIL_PICTURE"]["copy"]) { @unlink($arFields["DETAIL_PICTURE"]["tmp_name"]); @rmdir(dirname($arFields["DETAIL_PICTURE"]["tmp_name"])); } foreach (GetModuleEvents("iblock", "OnAfterIBlockElementUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array(&$arFields)); } if (defined("BX_COMP_MANAGED_CACHE")) { $GLOBALS["CACHE_MANAGER"]->ClearByTag("iblock_id_" . $arIBlock["ID"]); } return $Result; }
protected static function send($strParams) { $http = new \Bitrix\Main\Web\HttpClient(array("version" => "1.1", "socketTimeout" => 30, "streamTimeout" => 30, "redirect" => true, "redirectMax" => 5)); $jsnData = $http->post("http://www.pecom.ru/bitrix/components/pecom/calc/ajax.php", $strParams); $errors = $http->getError(); if (!$jsnData && !empty($errors)) { $strError = ""; foreach ($errors as $errorCode => $errMes) { $strError .= $errorCode . ": " . $errMes; } \CEventLog::Add(array("SEVERITY" => "ERROR", "AUDIT_TYPE_ID" => "SALE_DELIVERY", "MODULE_ID" => "sale", "ITEM_ID" => "PECOM_CALCULATOR_SEND", "DESCRIPTION" => $strError)); } return $jsnData; }
function Get_StatGA() { $u = COption::GetOptionString('statga', 'ga_login'); $p = COption::GetOptionString('statga', 'ga_password'); $id = COption::GetOptionString('statga', 'ga_id'); //дата, начиная с которой необходимо получить данные из GA для отчета. Формат YYYY-MM-DD //берем дату год назад $datestart = mktime(0, 0, 0, date("m"), date("d"), date("Y") - 1); //текущая дата $currentdate = date("Ymd"); //дата, заканчивая которой //$datefinish=""; //или вычисляем дату - конец предыдущего месяца $currentday = date("d"); $currentmonth = date("m"); $currentyear = date("Y"); $datefinish = date("Y-m-d"); //дата 3 месяца назад $date3MonthStart = date("Y-m-d", mktime(0, 0, 0, $currentmonth - 3, $currentday - 1, $currentyear)); $date3MonthFinish = date("Y-m-d", mktime(0, 0, 0, $currentmonth, $currentday - 1, $currentyear)); //дата месяц назад $date1MonthStart = date("Y-m-d", mktime(0, 0, 0, $currentmonth - 1, $currentday - 1, $currentyear)); $date1MonthFinish = date("Y-m-d", mktime(0, 0, 0, $currentmonth, $currentday - 1, $currentyear)); //количество стран $countryRows = 3; //количество городов $cityRows = 10; //csv-файл для отчета Посетители $visitorsCSV = "visitors.csv"; //csv-файл для отчета Посетители за посл. 3 месяца $visitors3CSV = "visitors_3.csv"; //csv-файл для отчета География по странам $countryCSV = "country.csv"; //csv-файл для отчета География по городам $cityCSV = "city.csv"; //полный пусть к директории со скриптом (слэш в конце обязателен!) $path = dirname(__FILE__) . "/../../../cache/" . SITE_ID . "/statga/"; try { $ga = new gapi($u, $p); //получаем пользователи/просмотры за все время $ga->requestReportData($id, array('month', 'year'), array('visitors', 'pageviews'), 'year', null, $datestart, $datefinish, 1, 1000); //получаем и обрабатываем результаты foreach ($ga->getResults() as $result) { $m = $result; //месяц год $visitors = $result->getVisitors(); //посетители $pageviews = $result->getPageviews(); //просмотры //приводим дату к удобочитаемому виду ,мменяем пробелы на точки $m = str_replace(" ", ".", $m); //формируем строку $output .= $m . ";" . $visitors . ";" . $pageviews . "\n"; } //пишем в файл self::writeToFile($path . $visitorsCSV, $output); //получаем пользователи/просмотры/посещения за последние 3 месяца $ga->requestReportData($id, array('day', 'month', 'year'), array('visitors', 'visits', 'pageviews'), array('year', 'month'), null, $date3MonthStart, $date3MonthFinish, 1, 1000); //переменная для записи резалта $output = ""; //получаем и обрабатываем результаты foreach ($ga->getResults() as $result) { $d = $result; //день $visitors = $result->getVisitors(); //посетители $pageviews = $result->getPageviews(); //просмотры $visits = $result->getVisits(); //посещения //приводим дату к удобочитаемому виду ,мменяем пробелы на точки $d = str_replace(" ", ".", $d); //формируем строку $output .= $d . ";" . $visitors . ";" . $pageviews . ";" . $visits . "\n"; } //пишем в файл self::writeToFile($path . $visitors3CSV, $output); //получаем географию посещений за последний месяц $ga->requestReportData($id, array('country'), array('visits'), '-visits', null, $date1MonthStart, $date1MonthFinish, 1, $countryRows); //переменная для записи резалта $output = ""; //получаем общее число посещений для всех стран $total_visits = $ga->getVisits(); //получаем и обрабатываем результаты foreach ($ga->getResults() as $result) { $country = $result->getCountry(); //страна $visits = $result->getVisits(); //кол-во посещений //нот сет переводим на русский $country = str_replace("(not set)", "не определено", $country); //формируем строку $output .= $country . ";" . $visits . "\n"; } //пишем в файл self::writeToFile($path . $countryCSV, $output); //////получаем ГОРОДА за последний месяц $ga->requestReportData($id, array('city'), array('visits'), '-visits', null, $date1MonthStart, $date1MonthFinish, 1, $cityRows); //переменная для записи резалта $output = ""; //получаем общее число посещений для всех стран $total_visits = $ga->getVisits(); //получаем и обрабатываем результаты foreach ($ga->getResults() as $result) { $city = $result->getCity(); //страна $visits = $result->getVisits(); //кол-во посещений //нот сет переводим на русский $city = str_replace("(not set)", "не определено", $city); //формируем строку $output .= $city . ";" . $visits . "\n"; } //пишем в файл self::writeToFile($path . $cityCSV, $output); } catch (Exception $e) { $SEVERITY = "WARNING"; $ERROR_TYPE = "STATGA_ERROR"; $MODULE_ID = "statga"; $ITEM_ID = "Get_StatGA"; $DESCRIPTION = $e->getMessage(); CEventLog::Add(array("SEVERITY" => $SEVERITY, "AUDIT_TYPE_ID" => $ERROR_TYPE, "MODULE_ID" => $MODULE_ID, "ITEM_ID" => $ITEM_ID, "DESCRIPTION" => $DESCRIPTION)); } return "statga::Get_StatGA();"; }
function Delete($ID, $bCheckPermissions = true) { $err_mess = "FILE: " . __FILE__ . "<br>LINE: "; global $DB, $APPLICATION, $USER; $ID = IntVal($ID); $APPLICATION->ResetException(); $db_events = GetModuleEvents("iblock", "OnBeforeIBlockSectionDelete"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($ID)) === false) { $err = GetMessage("MAIN_BEFORE_DEL_ERR") . ' ' . $arEvent['TO_NAME']; if ($ex = $APPLICATION->GetException()) { $err .= ': ' . $ex->GetString(); } $APPLICATION->throwException($err); return false; } } $s = CIBlockSection::GetList(array(), array("ID" => $ID, "CHECK_PERMISSIONS" => $bCheckPermissions ? "Y" : "N")); if ($s = $s->Fetch()) { CIBlock::_transaction_lock($s["IBLOCK_ID"]); $iblockelements = CIBlockElement::GetList(array(), array("SECTION_ID" => $ID, "SHOW_HISTORY" => "Y", "IBLOCK_ID" => $s["IBLOCK_ID"]), false, false, array("ID", "IBLOCK_ID", "WF_PARENT_ELEMENT_ID")); while ($iblockelement = $iblockelements->Fetch()) { $strSql = "\n\t\t\t\t\tSELECT IBLOCK_SECTION_ID\n\t\t\t\t\tFROM b_iblock_section_element\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tIBLOCK_ELEMENT_ID = " . $iblockelement["ID"] . "\n\t\t\t\t\t\tAND IBLOCK_SECTION_ID<>" . $ID . "\n\t\t\t\t\t\tAND ADDITIONAL_PROPERTY_ID IS NULL\n\t\t\t\t\tORDER BY\n\t\t\t\t\t\tIBLOCK_SECTION_ID\n\t\t\t\t"; $db_section_element = $DB->Query($strSql); if ($ar_section_element = $db_section_element->Fetch()) { $DB->Query("\n\t\t\t\t\t\tUPDATE b_iblock_element\n\t\t\t\t\t\tSET IBLOCK_SECTION_ID=" . $ar_section_element["IBLOCK_SECTION_ID"] . "\n\t\t\t\t\t\tWHERE ID=" . IntVal($iblockelement["ID"]) . "\n\t\t\t\t\t", false, $err_mess . __LINE__); } elseif (IntVal($iblockelement["WF_PARENT_ELEMENT_ID"]) <= 0) { if (!CIBlockElement::Delete($iblockelement["ID"])) { return false; } } else { $DB->Query("\n\t\t\t\t\t\tUPDATE b_iblock_element\n\t\t\t\t\t\tSET IBLOCK_SECTION_ID=NULL, IN_SECTIONS='N'\n\t\t\t\t\t\tWHERE ID=" . IntVal($iblockelement["ID"]) . "\n\t\t\t\t\t", false, $err_mess . __LINE__); } } $iblocksections = CIBlockSection::GetList(array(), array("SECTION_ID" => $ID, "CHECK_PERMISSIONS" => $bCheckPermissions ? "Y" : "N"), false, array("ID")); while ($iblocksection = $iblocksections->Fetch()) { if (!CIBlockSection::Delete($iblocksection["ID"], $bCheckPermissions)) { return false; } } CFile::Delete($s["PICTURE"]); CFile::Delete($s["DETAIL_PICTURE"]); static $arDelCache; if (!is_array($arDelCache)) { $arDelCache = array(); } if (!is_set($arDelCache, $s["IBLOCK_ID"])) { $arDelCache[$s["IBLOCK_ID"]] = false; $db_ps = $DB->Query("SELECT ID,IBLOCK_ID,VERSION,MULTIPLE FROM b_iblock_property WHERE PROPERTY_TYPE='G' AND (LINK_IBLOCK_ID=" . $s["IBLOCK_ID"] . " OR LINK_IBLOCK_ID=0 OR LINK_IBLOCK_ID IS NULL)", false, $err_mess . __LINE__); while ($ar_ps = $db_ps->Fetch()) { if ($ar_ps["VERSION"] == 2) { if ($ar_ps["MULTIPLE"] == "Y") { $strTable = "b_iblock_element_prop_m" . $ar_ps["IBLOCK_ID"]; } else { $strTable = "b_iblock_element_prop_s" . $ar_ps["IBLOCK_ID"]; } } else { $strTable = "b_iblock_element_property"; } $arDelCache[$s["IBLOCK_ID"]][$strTable][] = $ar_ps["ID"]; } } if ($arDelCache[$s["IBLOCK_ID"]]) { foreach ($arDelCache[$s["IBLOCK_ID"]] as $strTable => $arProps) { if (strncmp("b_iblock_element_prop_s", $strTable, 23) == 0) { foreach ($arProps as $prop_id) { $strSql = "UPDATE " . $strTable . " SET PROPERTY_" . $prop_id . "=null,DESCRIPTION_" . $prop_id . "=null WHERE PROPERTY_" . $prop_id . "=" . $s["ID"]; if (!$DB->Query($strSql, false, $err_mess . __LINE__)) { return false; } } } elseif (strncmp("b_iblock_element_prop_m", $strTable, 23) == 0) { $strSql = "SELECT IBLOCK_PROPERTY_ID, IBLOCK_ELEMENT_ID FROM " . $strTable . " WHERE IBLOCK_PROPERTY_ID IN (" . implode(", ", $arProps) . ") AND VALUE_NUM=" . $s["ID"]; $rs = $DB->Query($strSql, false, $err_mess . __LINE__); while ($ar = $rs->Fetch()) { $strSql = "\n\t\t\t\t\t\t\t\tUPDATE " . str_replace("prop_m", "prop_s", $strTable) . "\n\t\t\t\t\t\t\t\tSET\tPROPERTY_" . $ar["IBLOCK_PROPERTY_ID"] . "=null,\n\t\t\t\t\t\t\t\t\tDESCRIPTION_" . $ar["IBLOCK_PROPERTY_ID"] . "=null\n\t\t\t\t\t\t\t\tWHERE IBLOCK_ELEMENT_ID = " . $ar["IBLOCK_ELEMENT_ID"] . "\n\t\t\t\t\t\t\t"; if (!$DB->Query($strSql, false, $err_mess . __LINE__)) { return false; } } $strSql = "DELETE FROM " . $strTable . " WHERE IBLOCK_PROPERTY_ID IN (" . implode(", ", $arProps) . ") AND VALUE_NUM=" . $s["ID"]; if (!$DB->Query($strSql, false, $err_mess . __LINE__)) { return false; } } else { $strSql = "DELETE FROM " . $strTable . " WHERE IBLOCK_PROPERTY_ID IN (" . implode(", ", $arProps) . ") AND VALUE_NUM=" . $s["ID"]; if (!$DB->Query($strSql, false, $err_mess . __LINE__)) { return false; } } } } CIBlockSectionPropertyLink::DeleteBySection($ID); $DB->Query("DELETE FROM b_iblock_section_element WHERE IBLOCK_SECTION_ID=" . IntVal($ID), false, $err_mess . __LINE__); if (CModule::IncludeModule("search")) { CSearch::DeleteIndex("iblock", "S" . $ID); } $GLOBALS["USER_FIELD_MANAGER"]->Delete("IBLOCK_" . $s["IBLOCK_ID"] . "_SECTION", $ID); //Delete the hole in the tree $ss = $DB->Query("\n\t\t\t\tSELECT\n\t\t\t\t\tIBLOCK_ID,\n\t\t\t\t\tLEFT_MARGIN,\n\t\t\t\t\tRIGHT_MARGIN\n\t\t\t\tFROM\n\t\t\t\t\tb_iblock_section\n\t\t\t\tWHERE\n\t\t\t\t\tID = " . $s["ID"] . "\n\t\t\t"); $ss = $ss->Fetch(); if ($ss["RIGHT_MARGIN"] > 0 && $ss["LEFT_MARGIN"] > 0) { $DB->Query("\n\t\t\t\t\tUPDATE b_iblock_section SET\n\t\t\t\t\t\tTIMESTAMP_X=" . ($DB->type == "ORACLE" ? "NULL" : "TIMESTAMP_X") . "\n\t\t\t\t\t\t,RIGHT_MARGIN = RIGHT_MARGIN - 2\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tIBLOCK_ID = " . $ss["IBLOCK_ID"] . "\n\t\t\t\t\t\tAND RIGHT_MARGIN > " . $ss["RIGHT_MARGIN"] . "\n\t\t\t\t"); $DB->Query("\n\t\t\t\t\tUPDATE b_iblock_section SET\n\t\t\t\t\t\tTIMESTAMP_X=" . ($DB->type == "ORACLE" ? "NULL" : "TIMESTAMP_X") . "\n\t\t\t\t\t\t,LEFT_MARGIN = LEFT_MARGIN - 2\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tIBLOCK_ID = " . $ss["IBLOCK_ID"] . "\n\t\t\t\t\t\tAND LEFT_MARGIN > " . $ss["LEFT_MARGIN"] . "\n\t\t\t\t"); } $obSectionRights = new CIBlockSectionRights($s["IBLOCK_ID"], $ID); $obSectionRights->DeleteAllRights(); /************* QUOTA *************/ $_SESSION["SESS_RECOUNT_DB"] = "Y"; /************* QUOTA *************/ $arIBlockFields = CIBlock::GetArrayByID($s["IBLOCK_ID"], "FIELDS"); if ($arIBlockFields["LOG_SECTION_DELETE"]["IS_REQUIRED"] == "Y") { $USER_ID = is_object($USER) ? intval($USER->GetID()) : 0; $db_events = GetModuleEvents("main", "OnBeforeEventLog"); $arEvent = $db_events->Fetch(); if (!$arEvent || ExecuteModuleEventEx($arEvent, array($USER_ID)) === false) { $rsSection = CIBlockSection::GetList(array(), array("=ID" => $ID, "CHECK_PERMISSIONS" => $bCheckPermissions ? "Y" : "N"), false, array("LIST_PAGE_URL", "NAME", "CODE")); $arSection = $rsSection->GetNext(); $res = array("ID" => $ID, "CODE" => $arSection["CODE"], "NAME" => $arSection["NAME"], "SECTION_NAME" => CIBlock::GetArrayByID($s["IBLOCK_ID"], "SECTION_NAME"), "USER_ID" => $USER_ID, "IBLOCK_PAGE_URL" => $arSection["LIST_PAGE_URL"]); CEventLog::Log("IBLOCK", "IBLOCK_SECTION_DELETE", "iblock", $s["IBLOCK_ID"], serialize($res)); } } $res = $DB->Query("DELETE FROM b_iblock_section WHERE ID=" . IntVal($ID), false, $err_mess . __LINE__); if ($res) { $db_events = GetModuleEvents("iblock", "OnAfterIBlockSectionDelete"); while ($arEvent = $db_events->Fetch()) { ExecuteModuleEventEx($arEvent, array($s)); } if (defined("BX_COMP_MANAGED_CACHE")) { $GLOBALS["CACHE_MANAGER"]->ClearByTag("iblock_id_" . $s["IBLOCK_ID"]); } } return $res; } return true; }
public static function OnBeforeProlog() { if (defined("BX_CHECK_SHORT_URI") && BX_CHECK_SHORT_URI) { $upload_dir = "/" . trim(COption::GetOptionString("main", "upload_dir", "upload"), "/") . "/"; $request_uri = urldecode($_SERVER["REQUEST_URI"]); $request_uri = CCloudUtil::URLEncode($request_uri, LANG_CHARSET); foreach (CCloudStorageBucket::GetAllBuckets() as $arBucket) { if ($arBucket["ACTIVE"] == "Y") { $obBucket = new CCloudStorageBucket($arBucket["ID"]); if ($obBucket->Init()) { $match = array(); if ($obBucket->FileExists($request_uri)) { if (COption::GetOptionString("clouds", "log_404_errors") === "Y") { CEventLog::Log("WARNING", "CLOUDS_404", "clouds", $_SERVER["REQUEST_URI"], $_SERVER["HTTP_REFERER"]); } LocalRedirect($obBucket->GetFileSRC($request_uri), true); } elseif (strpos($request_uri, $upload_dir) === 0) { $check_url = substr($request_uri, strlen($upload_dir) - 1); if ($obBucket->FileExists($check_url)) { if (COption::GetOptionString("clouds", "log_404_errors") === "Y") { CEventLog::Log("WARNING", "CLOUDS_404", "clouds", $_SERVER["REQUEST_URI"], $_SERVER["HTTP_REFERER"]); } LocalRedirect($obBucket->GetFileSRC($check_url), true); } } elseif (COption::GetOptionString("clouds", "delayed_resize") === "Y" && preg_match("#^(/" . $obBucket->PREFIX . "|)(/resize_cache/.*\$)#", $request_uri, $match)) { session_write_close(); $to_file = $obBucket->GetFileSRC(urldecode($match[2])); if (CCloudStorage::ResizeImageFileCheck($obBucket, $to_file)) { LocalRedirect($to_file, true); } } } } } } }
public static function Init($Params) { global $USER; $arWarnings = array(); if (!$USER->CanDoOperation('fileman_admin_files') && !$USER->CanDoOperation('fileman_admin_folders')) { $arWarnings[] = GetMessage('FM_UTIL_ACCESS_DENIED'); } $io = CBXVirtualIo::GetInstance(); if (count($arWarnings) == 0) { $pathTo = trim($Params['copyTo'], " /"); $site = CFileMan::__CheckSite($_GET['site']); $siteTo = $Params['siteTo'] ? $Params['siteTo'] : $site; $pathTo = $pathTo == "" ? "/" : "/" . $pathTo . "/"; $absPathTo = CSite::GetSiteDocRoot($siteTo) . $pathTo; $docRootFrom = CSite::GetSiteDocRoot($site); if (!$io->DirectoryExists($absPathTo)) { // Create destination directory $bAccess = $USER->CanDoOperation('fileman_admin_folders') && $USER->CanDoFileOperation('fm_create_new_folder', $pathTo); if ($Params['createCopyTo']) { if ($bAccess) { CFileMan::CreateDir(array($siteTo, $pathTo)); } } else { ?> <script>window.BXFM_NoCopyToDir = "<?php echo $bAccess ? "ask_user" : "access_denied"; ?> ";</script><?php return; } } foreach ($Params['arFiles'] as $file) { $filePath = $file['path']; $caseOption = $Params['caseOption']; if ($Params["userCaseLastPath"]) { if ($Params["userCaseLastPath"] != $filePath) { continue; } $caseOption = $Params['userCaseAnswer']; if ($Params["userCaseToAll"]) { $Params['caseOption'] = $caseOption; } $Params["userCaseLastPath"] = false; } $arPath_i = array($site, $filePath); $absPath_i = $docRootFrom . $filePath; $bDir_i = $io->DirectoryExists($absPath_i); $name_i = CFileman::GetFileName($filePath); $strWarn = ""; // Check if file already exists in destination folder if ($io->FileExists($absPathTo . $name_i) || $bDir_i == $io->DirectoryExists($absPathTo . $name_i) && $bDir_i) { $fTmp = $io->GetFile($absPathTo . $name_i); $fTmp1 = $io->GetFile($absPath_i); $altName = CFilemanCopy::GetAltFileName($absPathTo, $name_i, $bDir_i); if ($caseOption == 'ask') { ?> <script> window.BXFM_fileExist = { fileOld: { name: "<?php echo CUtil::JSEscape($name_i); ?> ", path: "<?php echo CUtil::JSEscape($pathTo . $name_i); ?> ", site: "<?php echo CUtil::JSEscape($siteTo); ?> ", bDir: <?php echo $bDir_i ? "true" : "false"; ?> , size: "<?php echo $bDir_i ? '-' : CFile::FormatSize($fTmp->GetFileSize()); ?> ", date: "<?php echo date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL")), CFilemanUtils::GetModifyTime($absPathTo . $name_i) + CTimeZone::GetOffset()); ?> " }, fileNew: { alt_name: "<?php echo CUtil::JSEscape($altName); ?> ", name: "<?php echo CUtil::JSEscape($name_i); ?> ", path: "<?php echo CUtil::JSEscape($filePath); ?> ", site: "<?php echo CUtil::JSEscape($site); ?> ", bDir: <?php echo $bDir_i ? "true" : "false"; ?> , size: "<?php echo $bDir_i ? '-' : CFile::FormatSize($fTmp1->GetFileSize()); ?> ", date: "<?php echo date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL")), CFilemanUtils::GetModifyTime($absPath_i) + CTimeZone::GetOffset()); ?> " } }; </script><?php return; } elseif ($caseOption == 'replace') { // We don't need to replace, couse it's one file if (CFileMan::NormalizePath($pathTo . "/" . $name_i) == $filePath) { continue; } $strWarn = CFileMan::CopyEx($arPath_i, array($siteTo, CFileMan::NormalizePath($pathTo . "/" . $name_i)), !$Params['bCopy'], true); if ($strWarn != "") { $arWarnings[] = $strWarn; $log = false; } elseif ($Params['bSearch'] && $Params['ssess'] && !$Params['bCopy']) { CFilemanSearch::DelFromSearchResult($Params['ssess'], $filePath); } } elseif ($caseOption == 'auto_rename') { $strWarn = CFileMan::CopyEx($arPath_i, array($siteTo, CFileMan::NormalizePath($pathTo . "/" . $altName)), !$Params['bCopy']); if ($strWarn != "") { $arWarnings[] = $strWarn; $log = false; } elseif ($Params['bSearch'] && $Params['ssess'] && !$Params['bCopy']) { CFilemanSearch::DelFromSearchResult($Params['ssess'], $filePath); } } elseif ($caseOption == 'skip') { continue; } } else { $strWarn = CFileMan::CopyEx($arPath_i, array($siteTo, CFileMan::NormalizePath($pathTo . "/" . $name_i)), !$Params['bCopy']); if ($strWarn != "") { $arWarnings[] = $strWarn; $log = false; } elseif ($Params['bSearch'] && $Params['ssess'] && !$Params['bCopy']) { CFilemanSearch::DelFromSearchResult($Params['ssess'], $filePath); } } $module_id = "fileman"; if (COption::GetOptionString($module_id, "log_page", "Y") == "Y" && $log) { $res_log['copy_to'] = substr($pathTo, 1); $res_log['path'] = substr($filePath, 1); if ($Params['bCopy'] == "copy") { if (!$bDir_i) { CEventLog::Log("content", "FILE_COPY", "fileman", "", serialize($res_log)); } else { CEventLog::Log("content", "SECTION_COPY", "fileman", "", serialize($res_log)); } } else { if (!$bDir_i) { CEventLog::Log("content", "FILE_MOVE", "fileman", "", serialize($res_log)); } else { CEventLog::Log("content", "SECTION_MOVE", "fileman", "", serialize($res_log)); } } } } } $arWarnings; ?> <script> window.BXFM_result = { status: "<?php echo count($arWarnings) > 0 ? 'errors' : 'ok'; ?> ", errors: <?php echo count($arWarnings) > 0 ? CUtil::PhpToJSObject($arWarnings) : '{}'; ?> }; </script><?php }
public static final function Delete($lesson_id) { global $USER_FIELD_MANAGER; list($lesson_id, $simulate, $check_permissions, $user_id) = self::_funcDelete_ParseOptions($lesson_id); if ($check_permissions) { $oAccess = CLearnAccess::GetInstance($user_id); if (!$oAccess->IsLessonAccessible($lesson_id, CLearnAccess::OP_LESSON_REMOVE)) { throw new LearnException('EA_ACCESS_DENIED', LearnException::EXC_ERR_ALL_ACCESS_DENIED); } } // Parents and childs of the lesson $arNeighboursEdges = self::ListImmediateNeighbours($lesson_id); // precache rights for lesson if ($check_permissions) { $IsLessonAccessibleFor_OP_LESSON_UNLINK_DESCENDANTS = $oAccess->IsLessonAccessible($lesson_id, CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS); $IsLessonAccessibleFor_OP_LESSON_UNLINK_FROM_PARENTS = $oAccess->IsLessonAccessible($lesson_id, CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS); } foreach (GetModuleEvents('learning', 'OnBeforeLessonDelete', true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($lesson_id)); } foreach ($arNeighboursEdges as $arEdge) { $child_lesson_id = (int) $arEdge['CHILD_LESSON']; $parent_lesson_id = (int) $arEdge['PARENT_LESSON']; if ($check_permissions) { $IsLessonAccessible = false; if ($child_lesson_id === $lesson_id) { // if we will be remove edge to parent - use precached rights for OP_LESSON_UNLINK_FROM_PARENTS $IsLessonAccessible = $IsLessonAccessibleFor_OP_LESSON_UNLINK_FROM_PARENTS && $oAccess->IsLessonAccessible($parent_lesson_id, CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS); } elseif ($parent_lesson_id === $lesson_id) { // if we will be remove edge to child - use precached rights for OP_LESSON_UNLINK_DESCENDANTS $IsLessonAccessible = $IsLessonAccessibleFor_OP_LESSON_UNLINK_DESCENDANTS && $oAccess->IsLessonAccessible($child_lesson_id, CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS); } else { throw new LearnException('EA_FATAL: $lesson_id (' . $lesson_id . ') not equal to one of: $child_lesson_id (' . $child_lesson_id . '), $parent_lesson_id (' . $parent_lesson_id . ')', LearnException::EXC_ERR_ALL_LOGIC | LearnException::EXC_ERR_ALL_GIVEUP); } if (!$IsLessonAccessible) { throw new LearnException('EA_ACCESS_DENIED', LearnException::EXC_ERR_ALL_ACCESS_DENIED); } if ($simulate === false) { self::RelationRemove($parent_lesson_id, $child_lesson_id); } } } $linkedCourseId = self::GetLinkedCourse($lesson_id); // If lesson is course, remove course if ($linkedCourseId !== false) { global $DB; if ($simulate === false) { if (!$DB->Query("DELETE FROM b_learn_course_site WHERE COURSE_ID = " . (int) $linkedCourseId, true)) { throw new LearnException('EA_SQLERROR', LearnException::EXC_ERR_ALL_GIVEUP); } $rc = self::CourseBecomeLesson($linkedCourseId); // if course cannot be converted to lesson - don't remove lesson if ($rc === false) { throw new LearnException('EA_OTHER: lesson is unremovable because linked course is in use.', LearnException::EXC_ERR_LL_UNREMOVABLE_CL); } // reload cache of LINKED_LESSON_ID -> COURSE_ID self::GetCourseToLessonMap_ReloadCache(); if (CModule::IncludeModule("search")) { CSearch::DeleteIndex("learning", false, "C" . $linkedCourseId); CSearch::DeleteIndex("learning", "C" . $linkedCourseId); } } } // And remove lesson if ($simulate === false) { global $DB; $r = $DB->Query("SELECT PREVIEW_PICTURE, DETAIL_PICTURE \n\t\t\t\tFROM b_learn_lesson \n\t\t\t\tWHERE ID = " . (int) $lesson_id, true); if ($r === false) { throw new LearnException('EA_SQLERROR', LearnException::EXC_ERR_ALL_GIVEUP); } $arRes = $r->Fetch(); if (!$arRes) { throw new LearnException('EA_SQLERROR', LearnException::EXC_ERR_ALL_GIVEUP); } CFile::Delete($arRes['PREVIEW_PICTURE']); CFile::Delete($arRes['DETAIL_PICTURE']); // Remove questions $q = CLQuestion::GetList(array(), array('LESSON_ID' => $lesson_id)); while ($arQ = $q->Fetch()) { if (!CLQuestion::Delete($arQ['ID'])) { throw new LearnException('EA_QUESTION_NOT_REMOVED', LearnException::EXC_ERR_ALL_GIVEUP); } } CLearnGraphNode::Remove($lesson_id); $USER_FIELD_MANAGER->delete('LEARNING_LESSONS', $lesson_id); CLearnCacheOfLessonTreeComponent::MarkAsDirty(); CEventLog::add(array('AUDIT_TYPE_ID' => 'LEARNING_REMOVE_ITEM', 'MODULE_ID' => 'learning', 'ITEM_ID' => 'L #' . $lesson_id, 'DESCRIPTION' => 'lesson removed')); if (CModule::IncludeModule('search')) { CSearch::DeleteIndex('learning', false, 'L' . $lesson_id); CSearch::DeleteIndex('learning', 'L' . $lesson_id); } } if ($simulate === false) { foreach (GetModuleEvents('learning', 'OnAfterLessonDelete', true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($lesson_id)); } } }
/** * Adds params if they are missed * @return array Added params */ public static function addMissingKeysToParams() { $result = array(); $res = CSalePaySystemAction::GetList(array(), array("PS_ACTIVE" => "Y"), false, false, array("ID", "ACTION_FILE", "PARAMS")); while ($ps = $res->Fetch()) { $descriptionFile = $_SERVER["DOCUMENT_ROOT"] . $ps["ACTION_FILE"] . "/.description.php"; if (!file_exists($descriptionFile) || !is_file($descriptionFile)) { continue; } $arPSCorrespondence = array(); include $descriptionFile; if (!is_array($arPSCorrespondence) || empty($arPSCorrespondence)) { continue; } $arCorrespondence = CSalePaySystemAction::UnSerializeParams($ps["PARAMS"]); if (!is_array($arCorrespondence)) { continue; } $missingKeys = array_keys(array_diff_key($arPSCorrespondence, $arCorrespondence)); if (!empty($missingKeys)) { $result[$ps["ID"]] = $missingKeys; foreach ($missingKeys as $key) { $arCorrespondence[$key] = array_intersect_key($arPSCorrespondence[$key], array("TYPE" => true, "VALUE" => true)); } $updRes = CSalePaySystemAction::update($ps["ID"], array("PARAMS" => CSalePaySystemAction::SerializeParams($arCorrespondence))); if ($updRes <= 0) { $result[$ps["ID"]]["UPDATE_ERROR"] = true; } } } \CEventLog::Add(array("SEVERITY" => "INFO", "AUDIT_TYPE_ID" => "PS_PARAMS_CONVERT_RESULT", "MODULE_ID" => "sale", "ITEM_ID" => "PaySystems", "DESCRIPTION" => serialize($result))); return ""; }
function SetOperations($ID, $arr, $bOpNames = false) { global $DB; $ID = intval($ID); //get old operations $aPrevOp = array(); $res = $DB->Query("\n\t\t\tSELECT O.NAME\n\t\t\tFROM b_operation O\n\t\t\tINNER JOIN b_task_operation T_OP ON O.ID = T_OP.OPERATION_ID\n\t\t\tWHERE T_OP.TASK_ID = " . $ID . "\n\t\t\tORDER BY O.ID\n\t\t"); while ($res_arr = $res->Fetch()) { $aPrevOp[] = $res_arr["NAME"]; } $sql_str = 'DELETE FROM b_task_operation WHERE TASK_ID=' . $ID; $DB->Query($sql_str, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); if (is_array($arr) && count($arr) > 0) { if ($bOpNames) { $sID = ""; foreach ($arr as $op_id) { $sID .= ",'" . $DB->ForSQL($op_id) . "'"; } $sID = LTrim($sID, ","); $DB->Query("INSERT INTO b_task_operation (TASK_ID, OPERATION_ID) " . "SELECT '" . $ID . "', O.ID " . "FROM b_operation O, b_task T " . "WHERE O.NAME IN (" . $sID . ") AND T.MODULE_ID=O.MODULE_ID AND T.ID=" . $ID . " ", false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } else { $sID = "0"; foreach ($arr as $op_id) { $sID .= "," . intval($op_id); } $DB->Query("INSERT INTO b_task_operation (TASK_ID, OPERATION_ID) " . "SELECT '" . $ID . "', ID " . "FROM b_operation " . "WHERE ID IN (" . $sID . ") ", false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } if (CACHED_b_task_operation !== false) { $GLOBALS["CACHE_MANAGER"]->CleanDir("b_task_operation"); } //get new operations $aNewOp = array(); $res = $DB->Query("\n\t\t\tSELECT O.NAME\n\t\t\tFROM b_operation O\n\t\t\tINNER JOIN b_task_operation T_OP ON O.ID = T_OP.OPERATION_ID\n\t\t\tWHERE T_OP.TASK_ID = " . $ID . "\n\t\t\tORDER BY O.ID\n\t\t"); while ($res_arr = $res->Fetch()) { $aNewOp[] = $res_arr["NAME"]; } //compare with old one $aDiff = array_diff($aNewOp, $aPrevOp); if (empty($aDiff)) { $aDiff = array_diff($aPrevOp, $aNewOp); } if (!empty($aDiff)) { if (COption::GetOptionString("main", "event_log_task", "N") === "Y") { CEventLog::Log("SECURITY", "TASK_CHANGED", "main", $ID, "(" . implode(", ", $aPrevOp) . ") => (" . implode(", ", $aNewOp) . ")"); } foreach (GetModuleEvents("main", "OnTaskOperationsChanged", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $aPrevOp, $aNewOp)); } } }
function Start($failed = false) { if ($this->step == 0) $_SESSION['SITE_CHECKER_LOG'] = ''; $this->test_percent = 100; // by default if ($failed) { $this->result = $this->Result(false, GetMessage('SC_TEST_FAIL')); } else { ob_start(); $this->result = call_user_func(array($this,$this->function)); $this->strError = ob_get_clean(); } if (!$this->strResult) $this->Result($this->result); if ($this->function != 'OpenLog' && !$this->fix_mode) { // write to log if (@$this->OpenLog($continue = true)) { $text = date('Y-M-d H:i:s') . ' ' . $this->strCurrentTestName . ' (' . $this->function . "): " . $this->LogResult . "\n"; if ($this->test_percent < 100) $text .= $this->test_percent.'% done' . "\n"; if ($this->strError) { $text .= strip_tags($this->strError)."\n"; $_SESSION['SITE_CHECKER_LOG'] .= $text; } if ($this->test_percent >= 100) // test finished $text .= strip_tags($this->strResult)."\n"; $text = htmlspecialchars_decode($text); fwrite($this->LogResourse, $text); } } $this->last_function = $this->function; $this->percent = floor(($this->step + $this->test_percent / 100) / count($this->arTest) * 100); if ($this->test_percent >= 100) // test finished { if ($this->step + 1 < count($this->arTest)) { $this->step++; $this->test_percent = 0; $this->arTestVars['last_value'] = ''; list($this->function, $this->strNextTestName) = each($this->arTest[$this->step]); } else // finish { if (!$this->fix_mode) // if we have a kernel { COption::SetOptionString('main', 'site_checker_success', $this->arTestVars['site_checker_success']); CEventLog::Add(array( "SEVERITY" => "WARNING", "AUDIT_TYPE_ID" => $this->arTestVars['site_checker_success'] == 'Y' ? 'SITE_CHECKER_SUCCESS' : 'SITE_CHECKER_ERROR', "MODULE_ID" => "main", "ITEM_ID" => $_SERVER['DOCUMENT_ROOT'], "DESCRIPTION" => $_SESSION['SITE_CHECKER_LOG'], )); } } } elseif ($this->result === true) $this->strResult = ''; // in case of temporary result at this step if ($this->result === false) $this->arTestVars['site_checker_success'] = 'N'; }
public static function getAllPecomCities($cleanCache = false) { global $APPLICATION; $ttl = 2592000; $data = array(); $cacheId = "SaleDeliveryPecomCities"; $cacheManager = \Bitrix\Main\Application::getInstance()->getManagedCache(); if ($cleanCache) { $cacheManager->clean($cacheId); } if ($cacheManager->read($ttl, $cacheId)) { $data = $cacheManager->get($cacheId); } if (empty($data)) { $http = new \Bitrix\Main\Web\HttpClient(array("version" => "1.1", "socketTimeout" => 30, "streamTimeout" => 30, "redirect" => true, "redirectMax" => 5)); $jsnData = $http->get("http://www.pecom.ru/ru/calc/towns.php"); $errors = $http->getError(); if (!$jsnData && !empty($errors)) { $strError = ""; foreach ($errors as $errorCode => $errMes) { $strError .= $errorCode . ": " . $errMes; } \CEventLog::Add(array("SEVERITY" => "ERROR", "AUDIT_TYPE_ID" => "SALE_DELIVERY", "MODULE_ID" => "sale", "ITEM_ID" => "PECOM_GET_TOWNS", "DESCRIPTION" => $strError)); } $data = json_decode($jsnData, true); if (strtolower(SITE_CHARSET) != 'utf-8') { $data = $APPLICATION->ConvertCharsetArray($data, 'utf-8', SITE_CHARSET); if (is_array($data)) { foreach ($data as $key => $value) { $newKey = $APPLICATION->ConvertCharset($key, 'utf-8', SITE_CHARSET); $data[$newKey] = $value; unset($data[$key]); } } } if (!is_array($data)) { $data = array(); } $cacheManager->set($cacheId, $data); } return $data; }
$event->SendImmediate("NEW_USER_CONFIRM", SITE_ID, $arEventFields); } else { $arResult["ERRORS"][] = $user->LAST_ERROR; } if(count($arResult["ERRORS"]) <= 0) { if(COption::GetOptionString("main", "event_log_register", "N") === "Y") CEventLog::Log("SECURITY", "USER_REGISTER", "main", $ID); } else { if(COption::GetOptionString("main", "event_log_register_fail", "N") === "Y") CEventLog::Log("SECURITY", "USER_REGISTER_FAIL", "main", $ID, implode("<br>", $arResult["ERRORS"])); } $events = GetModuleEvents("main", "OnAfterUserRegister", true); foreach ($events as $arEvent) ExecuteModuleEventEx($arEvent, array(&$arResult['VALUES'])); } } // if user is registered - redirect him to backurl or to success_page; currently added users too if($register_done) { if($arParams["USE_BACKURL"] == "Y" && $_REQUEST["backurl"] <> '') LocalRedirect($_REQUEST["backurl"]); elseif($arParams["SUCCESS_PAGE"] <> '') LocalRedirect($arParams["SUCCESS_PAGE"]);