function AddNewUser($SITE_ID, $arFields, &$strError) { $ID_ADDED = 0; $iDepartmentId = intval($arFields["DEPARTMENT_ID"]); $bExtranet = $iDepartmentId <= 0; $strEmail = trim($arFields["ADD_EMAIL"]); $strName = trim($arFields["ADD_NAME"]); $strLastName = trim($arFields["ADD_LAST_NAME"]); $strPosition = trim($arFields["ADD_POSITION"]); $strPassword = self::GeneratePassword($SITE_ID, $bExtranetUser); self::setSendPassword($arFields["ADD_SEND_PASSWORD"] == "Y"); if (strlen($strEmail) <= 0) { if (!isset($arFields["ADD_MAILBOX_ACTION"]) || !in_array($arFields["ADD_MAILBOX_ACTION"], array("create", "connect")) || strlen($arFields['ADD_MAILBOX_USER']) <= 0 || strlen($arFields['ADD_MAILBOX_DOMAIN']) <= 0) { $strError = GetMessage("BX24_INVITE_DIALOG_ERROR_EMPTY_EMAIL"); } else { // email from mailbox $strEmail = $arFields['ADD_MAILBOX_USER'] . "@" . $arFields['ADD_MAILBOX_DOMAIN']; } } if (!$strError) { $arUser = array("LOGIN" => $strEmail, "NAME" => $strName, "LAST_NAME" => $strLastName, "EMAIL" => $strEmail, "PASSWORD" => $strPassword, "GROUP_ID" => CIntranetInviteDialog::getUserGroups($SITE_ID, $bExtranet), "WORK_POSITION" => $strPosition, "UF_DEPARTMENT" => $iDepartmentId > 0 ? array($iDepartmentId) : array(0)); if (!self::getSendPassword()) { $arUser["CONFIRM_CODE"] = randString(8); } $obUser = new CUser(); $ID_ADDED = $obUser->Add($arUser); if (!$ID_ADDED) { if ($e = $GLOBALS["APPLICATION"]->GetException()) { $strError = $e->GetString(); } else { $strError = $obUser->LAST_ERROR; } } else { if (self::getSendPassword()) { $db_events = GetModuleEvents("main", "OnUserInitialize", true); foreach ($db_events as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID_ADDED, $arUser)); } } $SiteIdToSend = $bExtranet && CModule::IncludeModule("extranet") ? CExtranet::GetExtranetSiteID() : CSite::GetDefSite(); $rsSites = CSite::GetByID($SiteIdToSend); $arSite = $rsSites->Fetch(); $serverName = strlen($arSite["SERVER_NAME"]) > 0 ? $arSite["SERVER_NAME"] : (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0 ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name", "")); $event = new CEvent(); if (self::getSendPassword()) { $url = (CMain::IsHTTPS() ? "https" : "http") . "://" . $serverName . $arSite["DIR"]; $event->SendImmediate("INTRANET_USER_ADD", $SITE_ID, array("EMAIL_TO" => $arUser["EMAIL"], "LINK" => $url, "PASSWORD" => $strPassword, "USER_TEXT" => GetMessage("BX24_INVITE_DIALOG_INVITE_MESSAGE_TEXT"))); } else { $dbUser = CUser::GetByID($ID_ADDED); $arUser = $dbUser->Fetch(); if (IsModuleInstalled("bitrix24")) { $event->SendImmediate("BITRIX24_USER_INVITATION", $SITE_ID, array("EMAIL_FROM" => $GLOBALS["USER"]->GetEmail(), "EMAIL_TO" => $arUser["EMAIL"], "LINK" => CHTTP::URN2URI("/bitrix/tools/intranet_invite_dialog.php?user_id=" . $ID_ADDED . "&checkword=" . urlencode($arUser["CONFIRM_CODE"]), $serverName), "USER_TEXT" => GetMessage("BX24_INVITE_DIALOG_INVITE_MESSAGE_TEXT"))); } else { $event->SendImmediate("INTRANET_USER_INVITATION", $SITE_ID, array("EMAIL_TO" => $arUser["EMAIL"], "LINK" => CHTTP::URN2URI("/bitrix/tools/intranet_invite_dialog.php?user_id=" . $ID_ADDED . "&checkword=" . urlencode($arUser["CONFIRM_CODE"]), $serverName), "USER_TEXT" => GetMessage("BX24_INVITE_DIALOG_INVITE_MESSAGE_TEXT"))); } } } } return $ID_ADDED; }
public static function ToAbsoluteUrl($url) { $url = trim(strval($url)); if ($url === '') { return ''; } elseif (self::GetUrlScheme($url) !== '') { return $url; } $scheme = CMain::IsHTTPS() ? 'https' : 'http'; $host = ''; if (defined('SITE_SERVER_NAME') && is_string(SITE_SERVER_NAME)) { $host = SITE_SERVER_NAME; } if ($host === '') { $host = COption::GetOptionString('main', 'server_name', ''); } if ($host === '') { $host = $_SERVER['SERVER_NAME']; } $port = intval($_SERVER['SERVER_PORT']); if (preg_match('/^\\//', $url)) { $url = substr($url, 1); } return $scheme . '://' . $host . ($port !== 80 && $port !== 443 ? ':' . $port : '') . '/' . $url; }
function GetRedirectUrl($identity, $return_to = false) { if (strlen($identity) <= 0) { $GLOBALS['APPLICATION']->ThrowException(GetMessage('OPENID_CLIENT_EMPTY_IDENTITY')); return false; } if (strlen($identity) > 1024) { $identity = substr($identity, 0, 1024); } // may be 256 ???? if (strpos(strtolower($identity), 'http://') === false && strpos(strtolower($identity), 'https://') === false) { $identity = 'http://' . $identity; } $_SESSION['BX_OPENID_IDENTITY'] = $identity; if ($arOpenidServerTags = $this->GetOpenIDServerTags($identity)) { if (!$this->CheckTrustProviders($arOpenidServerTags['server'])) { $GLOBALS['APPLICATION']->ThrowException(GetMessage('OPENID_CLIENT_CHECK_TRUST_PRIVIDERS_FAULT')); return false; } $protocol = CMain::IsHTTPS() ? "https" : "http"; $port = $_SERVER['SERVER_PORT'] > 0 && $_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443 ? ':' . $_SERVER['SERVER_PORT'] : ''; $server_name = $protocol . '://' . $_SERVER['SERVER_NAME'] . $port; if ($return_to === false) { $return_to = $server_name . $GLOBALS['APPLICATION']->GetCurPageParam('', array('SEF_APPLICATION_CUR_PAGE_URL'), false); } if (strlen($arOpenidServerTags['delegate']) > 0) { $identity = $arOpenidServerTags['delegate']; } $trust_root = $server_name . '/'; $url = $arOpenidServerTags['server'] . (strpos($arOpenidServerTags['server'], '?') !== false ? '&' : '?') . 'openid.mode=checkid_setup' . '&openid.return_to=' . urlencode($return_to) . '&openid.identity=' . urlencode($identity) . '&openid.trust_root=' . urlencode($trust_root) . '&openid.sreg.required=email,fullname' . '&openid.sreg.optional=gender,dob,postcode,country,timezone'; $_SESSION['BX_OPENID_RETURN_TO'] = $return_to; return $url; } return false; }
function CSeoPageChecker($site, $url, $get = true, $check_errors = true) { global $APPLICATION; if (CModule::IncludeModule('search')) { $this->bSearch = true; } else { $APPLICATION->ThrowException(GetMessage('SEO_ERROR_NO_SEARCH')); } // don't return false or set bError! $this->__bCheckErrors = $check_errors; $this->__site = $site; $dbRes = CSite::GetByID($this->__site); if ($arRes = $dbRes->Fetch()) { $this->__lang = $arRes['LANGUAGE_ID']; $this->__server_name = $arRes['SERVER_NAME']; if (strlen($this->__server_name) <= 0) { $this->__server_name = COption::GetOptionString('main', 'server_name', ''); } if (strlen($this->__server_name) > 0) { $this->__url = (CMain::IsHTTPS() ? "https://" : "http://") . CBXPunycode::ToASCII($this->__server_name, $e = null) . $url; return $get ? $this->GetHTTPData() : true; } else { $this->bError = true; $APPLICATION->ThrowException(str_replace('#SITE_ID#', $this->__site, GetMessage('SEO_ERROR_NO_SERVER_NAME'))); return false; } } return false; }
/** * Terminates controller and application. * This method replaces "die()" or "exit()" and ensures life cycle of application. * @return void */ protected function end() { $this->logDebugInfo(); /** @noinspection PhpUndefinedClassInspection */ \CMain::finalActions(); die; }
function init() { $this->username = CSalePaySystemAction::GetParamValue("USER"); $this->pwd = CSalePaySystemAction::GetParamValue("PWD"); $this->signature = CSalePaySystemAction::GetParamValue("SIGNATURE"); $this->currency = CSalePaySystemAction::GetParamValue("CURRENCY"); $this->testMode = CSalePaySystemAction::GetParamValue("TEST") == "Y"; if ($this->testMode) { $this->domain = "sandbox."; } if (strlen($_REQUEST["token"]) > 0) { $this->token = $_REQUEST["token"]; } if (strlen($_REQUEST["PayerID"]) > 0) { $this->payerId = $_REQUEST["PayerID"]; } $this->version = "98.0"; $dbSite = CSite::GetByID(SITE_ID); $arSite = $dbSite->Fetch(); $this->serverName = $arSite["SERVER_NAME"]; if (strLen($this->serverName) <= 0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) { $this->serverName = SITE_SERVER_NAME; } else { $this->serverName = COption::GetOptionString("main", "server_name", "www.bitrixsoft.com"); } } $this->serverName = (CMain::IsHTTPS() ? "https" : "http") . "://" . $this->serverName; if (strlen($this->username) <= 0 || strlen($this->username) <= 0 || strlen($this->username) <= 0) { $GLOBALS["APPLICATION"]->ThrowException("CSalePaySystempaypal: init error", "CSalePaySystempaypal_init_error"); return false; } return true; }
function InstallDB() { global $DB, $APPLICATION; $this->errors = false; if(!$DB->Query("SELECT 'x' FROM b_pull_stack", true)) $this->errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/pull/install/db/".strtolower($DB->type)."/install.sql"); if($this->errors !== false) { $APPLICATION->ThrowException(implode("", $this->errors)); return false; } RegisterModule("pull"); RegisterModuleDependences("main", "OnProlog", "main", "", "", 3, "/modules/pull/ajax_hit.php"); RegisterModuleDependences("perfmon", "OnGetTableSchema", "pull", "CPullTableSchema", "OnGetTableSchema"); RegisterModuleDependences("main", "OnAfterRegisterModule", "pull", "CPullOptions", "ClearCheckCache"); RegisterModuleDependences("main", "OnAfterUnRegisterModule", "pull", "CPullOptions", "ClearCheckCache"); COption::SetOptionString("pull", "path_to_listener", (CMain::IsHTTPS() ? "https" : "http")."://#DOMAIN#".(CMain::IsHTTPS() ? ":8894" : ":8893").'/bitrix/sub/'); COption::SetOptionString("pull", "path_to_websocket", (CMain::IsHTTPS() ? "wss" : "ws")."://#DOMAIN#".(CMain::IsHTTPS() ? ":8894" : ":8893").'/bitrix/subws/'); COption::SetOptionString("pull", "path_to_publish", 'http://127.0.0.1:8895/bitrix/pub/'); COption::SetOptionString("pull", "websocket", 'N'); COption::SetOptionString("pull", "nginx", 'N'); COption::SetOptionString("pull", "push", 'N'); CAgent::AddAgent("CPullOptions::ClearAgent();", "pull", "N", 30, "", "Y", ConvertTimeStamp(time()+CTimeZone::GetOffset()+30, "FULL")); return true; }
function createSmartFilterSeoXML() { if (CModule::IncludeModule("iblock")) { $resElDB = CIBlockElement::GetList(array("SORT" => "ASC"), array('IBLOCK_ID' => SEO_IBLOCK), false, false, array('PROPERTY_TARGET_ON', 'PROPERTY_INDEX', 'PROPERTY_FOLLOW', 'IBLOCK_ID', 'ID', 'NAME')); $protocol = CMain::IsHTTPS() ? "https" : "http"; $host = $_SERVER['HTTP_HOST']; if ($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443 && $_SERVER['SERVER_PORT'] > 0 && strpos($_SERVER['HTTP_HOST'], ":") === false) { $host .= ":" . $_SERVER['SERVER_PORT']; } $curDate = date("Y-m-d\\TH:i:s P"); $strBeginSmartFilter = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n"; $index = 0; while ($res = $resElDB->fetch()) { $exp = explode('*', $res['PROPERTY_TARGET_ON_VALUE']['TEXT']); $urlFilter = trim($exp[0]); //clean url of smart filter if ($index == 0) { $strBeginSmartFilter .= "\t<url>\n\t\t"; $index++; } else { $strBeginSmartFilter .= "<url>\n\t\t"; } $strBeginSmartFilter .= "<loc>" . $protocol . "://" . $host . $urlFilter . "</loc>\n\t\t"; $strBeginSmartFilter .= "<lastmod>" . $curDate . "</lastmod>\n\t"; $strBeginSmartFilter .= "</url>"; } $strBeginSmartFilter .= "</urlset\n>"; $smartXmlFileName = 'sitemap_iblock_' . SEO_IBLOCK . '.xml'; $el = fopen($_SERVER['DOCUMENT_ROOT'] . '/' . $smartXmlFileName, "w"); fwrite($el, $strBeginSmartFilter); fclose($el); return "createSmartFilterSeoXML();"; } }
/** * get current url */ public static function url($full) { if (isset($_SERVER['REQUEST_URI'])) { $uri = $_SERVER['REQUEST_URI']; } else { if (isset($_SERVER['argv'])) { $uri = $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['argv'][0]; } elseif (isset($_SERVER['QUERY_STRING'])) { $uri = $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING']; } else { $uri = $_SERVER['SCRIPT_NAME']; } } // Prevent multiple slashes to avoid cross site requests via the FAPI. $uri = '/' . ltrim($uri, '/'); $host = $_SERVER['HTTP_HOST']; if ($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443 && $_SERVER['SERVER_PORT'] > 0 && strpos($_SERVER['HTTP_HOST'], ":") === false) { $host .= ":" . $_SERVER['SERVER_PORT']; } $protocol = CMain::IsHTTPS() ? "https" : "http"; if ($full) { $uri = $protocol . "://" . $_SERVER['SERVER_NAME'] . $uri; } return $uri; }
/** * * @param string &$content * @return void * */ public function OnEndBufferContent(&$content) { if (isset($_GET["nocdn"])) { return; } self::$proto = CMain::IsHTTPS() ? "https" : "http"; self::$config = CBitrixCloudCDNConfig::getInstance()->loadFromOptions(); if (self::$config->isExpired()) { if (self::$config->lock()) { try { try { $delayExpiration = true; self::$config = CBitrixCloudCDNConfig::getInstance()->loadRemoteXML(); self::$config->saveToOptions(); self::$config->unlock(); } catch (CBitrixCloudException $e) { //In case of documented XML error we'll disable CDN if ($e->getErrorCode() !== "") { self::SetActive(false); $delayExpiration = false; } throw $e; } } catch (exception $e) { if ($delayExpiration) { self::$config->setExpired(time() + 1800); } CAdminNotify::Add(array("MESSAGE" => GetMessage("BCL_CDN_NOTIFY", array("#HREF#" => "/bitrix/admin/bitrixcloud_cdn.php?lang=" . LANGUAGE_ID)), "TAG" => "bitrixcloud_off", "MODULE_ID" => "bitrixcloud", "ENABLE_CLOSE" => "Y")); self::$config->unlock(); return; } } } if (!self::$config->isActive()) { return false; } $sites = self::$config->getSites(); if (defined("ADMIN_SECTION")) { if (!isset($sites["admin"])) { return; } } elseif (defined("SITE_ID")) { if (!isset($sites[SITE_ID])) { return; } } else { return; } self::$ajax = preg_match("/<head>/i", substr($content, 0, 512)) === 0; $arPrefixes = array_map(array("CBitrixCloudCDN", "_preg_quote"), self::$config->getLocationsPrefixes()); $arExtensions = array_map(array("CBitrixCloudCDN", "_preg_quote"), self::$config->getLocationsExtensions()); if (!empty($arPrefixes) && !empty($arExtensions)) { $prefix_regex = "(?:" . implode("|", $arPrefixes) . ")"; $extension_regex = "(?:" . implode("|", $arExtensions) . ")"; $regex = "/\n\t\t\t\t((?i:\n\t\t\t\t\thref=\n\t\t\t\t\t|src=\n\t\t\t\t\t|BX\\.loadCSS\\(\n\t\t\t\t\t|BX\\.loadScript\\(\n\t\t\t\t\t|jsUtils\\.loadJSFile\\(\n\t\t\t\t\t|background\\s*:\\s*url\\(\n\t\t\t\t)) #attribute\n\t\t\t\t(\"|') #open_quote\n\t\t\t\t(" . $prefix_regex . ") #prefix\n\t\t\t\t([^?'\"]+\\.) #href body\n\t\t\t\t(" . $extension_regex . ") #extension\n\t\t\t\t(|\\?\\d+|\\?v=\\d+) #params\n\t\t\t\t(\\2) #close_quote\n\t\t\t/x"; $content = preg_replace_callback($regex, array("CBitrixCloudCDN", "_filter"), $content); } }
public static function unRegisterModule($moduleName) { $con = Application::getInstance()->getConnection(); $con->queryExecute("DELETE FROM b_agent WHERE MODULE_ID='" . $con->getSqlHelper()->forSql($moduleName) . "'"); \CMain::DelGroupRight($moduleName); static::delete($moduleName); $event = new Event("main", "OnAfterUnRegisterModule", array($moduleName)); $event->send(); }
protected function end($terminate = true) { Diag::getInstance()->logDebugInfo($this->getName()); if ($terminate) { /** @noinspection PhpUndefinedClassInspection */ \CMain::finalActions(); die; } }
function ExecuteEvents() { $err_mess = "<br>Class: CEvent<br>File: ".__FILE__."<br>Function: CheckEvents<br>Line: "; global $DB, $CACHE_MANAGER; if(defined("FX_FORK_AGENTS_AND_EVENTS_FUNCTION")) { if(CMain::ForkActions(array("CEvent", "ExecuteEvents"))) return ""; } }
function SaveConfig($arServerList) { self::$arList = false; $isOnline = false; $content = '<' . '? define("BX_MEMCACHE_CLUSTER", "' . EscapePHPString(CMain::GetServerUniqID()) . '"); $arList = array( '; $defGroup = 1; $arGroups = array(); $rsGroups = CClusterGroup::GetList(array("ID" => "DESC")); while ($arGroup = $rsGroups->Fetch()) { $defGroup = $arGroups[$arGroup["ID"]] = intval($arGroup["ID"]); } foreach ($arServerList as $i => $arServer) { $isOnline |= $arServer["STATUS"] == "ONLINE"; $GROUP_ID = intval($arServer["GROUP_ID"]); if (!array_key_exists($arServer["GROUP_ID"], $arGroups)) { $GROUP_ID = $defGroup; } $content .= "\t" . intval($i) . " => array(\n"; $content .= "\t\t'ID' => \"" . EscapePHPString($arServer["ID"]) . "\",\n"; $content .= "\t\t'GROUP_ID' => " . $GROUP_ID . ",\n"; $content .= "\t\t'HOST' => \"" . EscapePHPString($arServer["HOST"]) . "\",\n"; $content .= "\t\t'PORT' => " . intval($arServer["PORT"]) . ",\n"; $content .= "\t\t'WEIGHT' => " . intval($arServer["WEIGHT"]) . ",\n"; if ($arServer["STATUS"] == "ONLINE") { $content .= "\t\t'STATUS' => \"ONLINE\",\n"; } elseif ($arServer["STATUS"] == "OFFLINE") { $content .= "\t\t'STATUS' => \"OFFLINE\",\n"; } else { $content .= "\t\t'STATUS' => \"READY\",\n"; } $content .= "\t),\n"; } $content .= '); ?' . '>'; file_put_contents($_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/cluster/memcache.php", $content); bx_accelerator_reset(); self::$systemConfigurationUpdate = null; $cache = \Bitrix\Main\Config\Configuration::getValue('cache'); if ($isOnline) { if (!is_array($cache) || !isset($cache['type']) || !is_array($cache['type']) || !isset($cache['type']['class_name']) || !$cache['type']['class_name'] === 'CPHPCacheMemcacheCluster') { \Bitrix\Main\Config\Configuration::setValue('cache', array('type' => array('class_name' => 'CPHPCacheMemcacheCluster', 'extension' => 'memcache', 'required_file' => 'modules/cluster/classes/general/memcache_cache.php'))); self::$systemConfigurationUpdate = true; } } else { if (is_array($cache) && isset($cache['type']) && is_array($cache['type']) && isset($cache['type']['class_name']) && $cache['type']['class_name'] === 'CPHPCacheMemcacheCluster') { \Bitrix\Main\Config\Configuration::setValue('cache', null); self::$systemConfigurationUpdate = false; } } }
private function SaveGroupRight() { CMain::DelGroupRight($this->module_id); $GROUP = $_REQUEST['GROUPS']; $RIGHT = $_REQUEST['RIGHTS']; foreach ($GROUP as $k => $v) { if ($k == 0) { COption::SetOptionString($this->module_id, 'GROUP_DEFAULT_RIGHT', $RIGHT[0], 'Right for groups by default'); } else { CMain::SetGroupRight($this->module_id, $GROUP[$k], $RIGHT[$k]); } } }
/** * Отправляет результат запроса на клиент * @internal */ protected function sendAjaxResponse() { $response = $this->arResult['AJAX']; if ($response !== self::SKIP_AJAX_EXECUTION) { if (is_array($response) and !isset($response['success'])) { $response['success'] = true; } elseif (is_bool($response)) { $response = array('success' => $response); } else { $response = array('success' => true, 'data' => $response); } $this->app->RestartBuffer(); print json_encode($response); exit; } }
function ExecuteEvents() { $err_mess = "<br>Class: CEvent<br>File: " . __FILE__ . "<br>Function: CheckEvents<br>Line: "; global $DB, $CACHE_MANAGER; if (defined("BX_FORK_AGENTS_AND_EVENTS_FUNCTION")) { if (CMain::ForkActions(array("CEvent", "ExecuteEvents"))) { return ""; } } $uniq = COption::GetOptionString("main", "server_uniq_id", ""); if (strlen($uniq) <= 0) { $uniq = md5(uniqid(rand(), true)); COption::SetOptionString("main", "server_uniq_id", $uniq); } $bulk = intval(COption::GetOptionString("main", "mail_event_bulk", 5)); if ($bulk <= 0) { $bulk = 5; } $strSql = "SELECT 'x' " . "FROM b_event " . "WHERE SUCCESS_EXEC='N' " . "LIMIT 1"; $db_result_event = $DB->Query($strSql); if ($db_result_event->Fetch()) { $db_lock = $DB->Query("SELECT GET_LOCK('" . $uniq . "_event', 0) as L"); $ar_lock = $db_lock->Fetch(); if ($ar_lock["L"] == "0") { return ""; } } else { if (CACHED_b_event !== false) { $CACHE_MANAGER->Set("events", true); } return ""; } $strSql = "\n\t\t\tSELECT ID, C_FIELDS, EVENT_NAME, MESSAGE_ID, LID, DATE_FORMAT(DATE_INSERT, '%d.%m.%Y %H:%i:%s') as DATE_INSERT, DUPLICATE\n\t\t\tFROM b_event\n\t\t\tWHERE SUCCESS_EXEC='N'\n\t\t\tORDER BY ID\n\t\t\tLIMIT " . $bulk; $rsMails = $DB->Query($strSql); while ($arMail = $rsMails->Fetch()) { $flag = CEvent::HandleEvent($arMail); /* '0' - нет шаблонов (не нужно было ничего отправл¤ть) 'Y' - все отправлены 'F' - все не смогли быть отправлены 'P' - частично отправлены */ $strSql = "\n\t\t\t\tUPDATE b_event SET\n\t\t\t\t\tDATE_EXEC = now(),\n\t\t\t\t\tSUCCESS_EXEC = '{$flag}'\n\t\t\t\tWHERE\n\t\t\t\t\tID = " . $arMail["ID"]; $DB->Query($strSql, false, $err_mess . __LINE__); } $DB->Query("SELECT RELEASE_LOCK('" . $uniq . "_event')"); }
function GetCurTemplate() { /** @noinspection PhpUnusedLocalVariableInspection */ global $DB, $APPLICATION, $USER; $strSql = "\n\t\t\t\tSELECT\n\t\t\t\t\t" . CMain::__GetConditionFName() . ",\n\t\t\t\t\tTEMPLATE\n\t\t\t\tFROM\n\t\t\t\t\tb_site_template\n\t\t\t\tWHERE\n\t\t\t\t\tSITE_ID = '" . SITE_ID . "'\n\t\t\t\tORDER BY\n\t\t\t\t\tif(length(" . CMain::__GetConditionFName() . ")>0, 1, 2), SORT\n\t\t\t\t"; $dbr = $DB->Query($strSql); while ($ar = $dbr->Fetch()) { $strCondition = trim($ar["CONDITION"]); if (strlen($strCondition) > 0 && !@eval("return " . $strCondition . ";")) { continue; } if (($path = getLocalPath("templates/" . $ar["TEMPLATE"], FX_PERSONAL_ROOT)) !== false && is_dir($_SERVER["DOCUMENT_ROOT"] . $path)) { return $ar["TEMPLATE"]; } } return ".default"; }
public static function onBeforeAdd(Entity\Event $event) { $result = new Entity\EventResult(); $data = $event->getParameter("fields"); if (isset($data["USER_ID"]) && isset($data['PASSWORD'])) { $salt = md5(\CMain::GetServerUniqID() . uniqid()); $password = $salt . md5($salt . $data['PASSWORD']); $modified = array('PASSWORD' => $password); $user = Main\UserTable::getRowById($data["USER_ID"]); if ($user !== null) { $realm = defined('BX_HTTP_AUTH_REALM') ? BX_HTTP_AUTH_REALM : "Bitrix Site Manager"; $digest = md5($user["LOGIN"] . ':' . $realm . ':' . $data['PASSWORD']); $modified['DIGEST_PASSWORD'] = $digest; } $result->modifyFields($modified); } return $result; }
public static function SaveConfig($arServerList) { self::$arList = false; $content = '<'.'? // define("BX_MEMCACHE_CLUSTER", "'.EscapePHPString(CMain::GetServerUniqID()).'"); $arList = array( '; $defGroup = 1; $arGroups = array(); $rsGroups = CClusterGroup::GetList(array("ID" => "DESC")); while($arGroup = $rsGroups->Fetch()) $defGroup = $arGroups[$arGroup["ID"]] = intval($arGroup["ID"]); foreach($arServerList as $i => $arServer) { $GROUP_ID = intval($arServer["GROUP_ID"]); if(!array_key_exists($arServer["GROUP_ID"], $arGroups)) $GROUP_ID = $defGroup; $content .= "\t".intval($i)." => array(\n"; $content .= "\t\t'ID' => \"".EscapePHPString($arServer["ID"])."\",\n"; $content .= "\t\t'GROUP_ID' => ".$GROUP_ID.",\n"; $content .= "\t\t'HOST' => \"".EscapePHPString($arServer["HOST"])."\",\n"; $content .= "\t\t'PORT' => ".intval($arServer["PORT"]).",\n"; $content .= "\t\t'WEIGHT' => ".intval($arServer["WEIGHT"]).",\n"; if($arServer["STATUS"] == "ONLINE") $content .= "\t\t'STATUS' => \"ONLINE\",\n"; elseif($arServer["STATUS"] == "OFFLINE") $content .= "\t\t'STATUS' => \"OFFLINE\",\n"; else $content .= "\t\t'STATUS' => \"READY\",\n"; $content .= "\t),\n"; } $content .= '); ?'.'>'; file_put_contents( $_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/cluster/memcache.php" ,$content ); }
public static function ExecuteAgents($str_crontab) { global $DB, $CACHE_MANAGER, $pPERIOD; if (defined("BX_FORK_AGENTS_AND_EVENTS_FUNCTION")) { if (CMain::ForkActions(array("CAgent", "ExecuteAgents"), array($str_crontab))) { return ""; } } $saved_time = 0; $cache_id = "agents" . $str_crontab; if (CACHED_b_agent !== false && $CACHE_MANAGER->Read(CACHED_b_agent, $cache_id, "agents")) { $saved_time = $CACHE_MANAGER->Get($cache_id); if (time() < $saved_time) { return ""; } } $uniq = CMain::GetServerUniqID(); $strSql = "\n\t\t\tSELECT 'x'\n\t\t\tFROM b_agent\n\t\t\tWHERE\n\t\t\t\tACTIVE = 'Y'\n\t\t\t\tAND NEXT_EXEC <= now()\n\t\t\t\tAND (DATE_CHECK IS NULL OR DATE_CHECK <= now())\n\t\t\t\t" . $str_crontab . "\n\t\t\tLIMIT 1\n\t\t"; $db_result_agents = $DB->Query($strSql); if ($db_result_agents->Fetch()) { $db_lock = $DB->Query("SELECT GET_LOCK('" . $uniq . "_agent', 0) as L"); $ar_lock = $db_lock->Fetch(); if ($ar_lock["L"] == "0") { return ""; } } else { if (CACHED_b_agent !== false) { $rs = $DB->Query("SELECT UNIX_TIMESTAMP(MIN(NEXT_EXEC))-UNIX_TIMESTAMP(NOW()) DATE_DIFF FROM b_agent WHERE ACTIVE='Y' " . $str_crontab . ""); $ar = $rs->Fetch(); if (!$ar || $ar["DATE_DIFF"] < 0) { $date_diff = 0; } elseif ($ar["DATE_DIFF"] > CACHED_b_agent) { $date_diff = CACHED_b_agent; } else { $date_diff = $ar["DATE_DIFF"]; } if ($saved_time > 0) { $CACHE_MANAGER->Clean($cache_id, "agents"); $CACHE_MANAGER->Read(CACHED_b_agent, $cache_id, "agents"); } $CACHE_MANAGER->Set($cache_id, intval(time() + $date_diff)); } return ""; } $strSql = "SELECT ID, NAME, AGENT_INTERVAL, IS_PERIOD, MODULE_ID " . "FROM b_agent " . "WHERE ACTIVE='Y' " . "\tAND NEXT_EXEC<=now() " . "\tAND (DATE_CHECK IS NULL OR DATE_CHECK<=now()) " . $str_crontab . " ORDER BY RUNNING ASC, SORT desc"; $db_result_agents = $DB->Query($strSql); $ids = ''; $agents_array = array(); while ($db_result_agents_array = $db_result_agents->Fetch()) { $agents_array[] = $db_result_agents_array; $ids .= ($ids != '' ? ', ' : '') . $db_result_agents_array["ID"]; } if ($ids != '') { $strSql = "UPDATE b_agent SET DATE_CHECK=DATE_ADD(IF(DATE_CHECK IS NULL, now(), DATE_CHECK), INTERVAL 600 SECOND) WHERE ID IN (" . $ids . ")"; $DB->Query($strSql); } $DB->Query("SELECT RELEASE_LOCK('" . $uniq . "_agent')"); $logFunction = defined("BX_AGENTS_LOG_FUNCTION") && function_exists(BX_AGENTS_LOG_FUNCTION) ? BX_AGENTS_LOG_FUNCTION : false; for ($i = 0, $n = count($agents_array); $i < $n; $i++) { $arAgent = $agents_array[$i]; if ($logFunction) { $logFunction($arAgent, "start"); } @set_time_limit(0); ignore_user_abort(true); if (strlen($arAgent["MODULE_ID"]) > 0 && $arAgent["MODULE_ID"] != "main") { if (!CModule::IncludeModule($arAgent["MODULE_ID"])) { continue; } } //update the agent to the running state - if it fails it'll go to the end of the list on the next try $DB->Query("UPDATE b_agent SET RUNNING='Y' WHERE ID=" . $arAgent["ID"]); //these vars can be assigned within agent code $pPERIOD = $arAgent["AGENT_INTERVAL"]; CTimeZone::Disable(); global $USER; unset($USER); $eval_result = ""; $e = eval("\$eval_result=" . $arAgent["NAME"]); unset($USER); CTimeZone::Enable(); if ($logFunction) { $logFunction($arAgent, "finish", $eval_result, $e); } if ($e === false) { continue; } elseif (strlen($eval_result) <= 0) { $strSql = "DELETE FROM b_agent WHERE ID=" . $arAgent["ID"]; } else { $strSql = "\n\t\t\t\t\tUPDATE b_agent SET\n\t\t\t\t\t\tNAME='" . $DB->ForSQL($eval_result, 2000) . "',\n\t\t\t\t\t\tLAST_EXEC=now(),\n\t\t\t\t\t\tNEXT_EXEC=DATE_ADD(" . ($arAgent["IS_PERIOD"] == "Y" ? "NEXT_EXEC" : "now()") . ", INTERVAL " . $pPERIOD . " SECOND),\n\t\t\t\t\t\tDATE_CHECK=NULL,\n\t\t\t\t\t\tRUNNING='N'\n\t\t\t\t\tWHERE ID=" . $arAgent["ID"]; } $DB->Query($strSql); } return null; }
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); if (!isset($arParams['GOOGLE_VERSION'])) $arParams['GOOGLE_VERSION'] = '3'; $arParams['DEV_MODE'] = $arParams['DEV_MODE'] == 'Y' ? 'Y' : 'N'; if (!defined('FX_GMAP_SCRIPT_LOADED')) { CUtil::InitJSCore(); if ($arParams['DEV_MODE'] != 'Y') { $scheme = (CMain::IsHTTPS() ? "https" : "http"); $APPLICATION->AddHeadString('<script src="'.$scheme.'://maps.google.com/maps/api/js?sensor=false&language='.LANGUAGE_ID.'" charset="utf-8"></script>'); define('FX_GMAP_SCRIPT_LOADED', 1); } } $arParams['MAP_ID'] = (strlen($arParams["MAP_ID"])<=0 || !preg_match("/^[A-Za-z_][A-Za-z01-9_]*$/", $arParams["MAP_ID"])) ? 'MAP_'.RandString() : $arParams['MAP_ID']; $arParams['INIT_MAP_LON'] = floatval($arParams['INIT_MAP_LON']); $arParams['INIT_MAP_LON'] = $arParams['INIT_MAP_LON'] ? $arParams['INIT_MAP_LON'] : 37.64; $arParams['INIT_MAP_LAT'] = floatval($arParams['INIT_MAP_LAT']); $arParams['INIT_MAP_LAT'] = $arParams['INIT_MAP_LAT'] ? $arParams['INIT_MAP_LAT'] : 55.76; $arParams['INIT_MAP_SCALE'] = intval($arParams['INIT_MAP_SCALE']); $arParams['INIT_MAP_SCALE'] = $arParams['INIT_MAP_SCALE'] ? $arParams['INIT_MAP_SCALE'] : 10;
/** * <p>Функция добавляет нового пользователя. При успешном выполнении возвращает ID нового пользователя, в противном случае - вернет "false", а в свойстве LAST_ERROR объекта будет содержаться текст ошибки. <br><br><b>CUser::Add()</b> можно вызывать только как метод инициализированного объекта, а не как статический метод класса CUser. </p> * * * * * @param array $fields Массив значений полей, в качестве ключей данного массива * допустимо использовать: <ul> <li> <b>LOGIN</b><font color="red">*</font> - логин (имя * входа) </li> <li> <b>NAME</b> - имя пользователя </li> <li> <b>LAST_NAME</b> - фамилия * пользователя </li> <li> <b>SECOND_NAME</b> - отчество пользователя </li> <li> * <b>EMAIL</b><font color="red">*</font> - E-Mail адрес пользователя </li> <li> <b>PASSWORD</b><font * color="red">*</font> - пароль пользователя </li> <li> <b>CONFIRM_PASSWORD</b><font * color="red">*</font> - подтверждение пароля (должно быть равным <b>PASSWORD</b>) * </li> <li> <b>GROUP_ID</b> - массив ID групп к которым будет приписан * пользователь </li> <li> <b>ACTIVE</b> - флаг активности пользователя [Y|N] </li> * <li> <b>LID</b> - ID сайта по умолчанию для уведомлений </li> <li> <b>ADMIN_NOTES</b> - * заметки администратора </li> <li> <b>XML_ID</b> - ID пользователя для связи с * внешними источниками (например, ID пользователя в какой-либо * внешний базе) </li> <li> <b>EXTERNAL_AUTH_ID</b> - код источника [link=89611]внешней * авторизации[/link] </li> <li> <b>PERSONAL_PROFESSION</b> - наименование профессии </li> * <li> <b>PERSONAL_WWW</b> - персональная WWW-страница </li> <li> <b>PERSONAL_ICQ</b> - ICQ </li> <li> * <b>PERSONAL_GENDER</b> - пол ["M" - мужчина; "F" - женщина] </li> <li> <b>PERSONAL_BIRTHDAY</b> - * дата рождения в формате текущего сайта (или текущего языка для * административной части) </li> <li> <b>PERSONAL_PHOTO</b> - массив описывающий * фотографию, допустимы следующие ключи этого массива: <ul> <li> <b>name</b> * - имя файла </li> <li> <b>size</b> - размер файла </li> <li> <b>tmp_name</b> - временный * путь на сервере </li> <li> <b>type</b> - тип загружаемого файла </li> <li> <b>del</b> - * если значение равно "Y", то изображение будет удалено </li> <li> * <b>MODULE_ID</b> - идентификатор главного модуля - "main" </li> </ul> </li> <li> * <b>PERSONAL_PHONE</b> - телефон </li> <li> <b>PERSONAL_FAX</b> - факс </li> <li> <b>PERSONAL_MOBILE</b> - * мобильный телефон </li> <li> <b>PERSONAL_PAGER</b> - пэйджер </li> <li> <b>PERSONAL_STREET</b> - * улица, дом </li> <li> <b>PERSONAL_MAILBOX</b> - почтовый ящик </li> <li> <b>PERSONAL_CITY</b> - * город </li> <li> <b>PERSONAL_STATE</b> - область / край </li> <li> <b>PERSONAL_ZIP</b> - индекс * </li> <li> <b>PERSONAL_COUNTRY</b> - страна </li> <li> <b>PERSONAL_NOTES</b> - личные заметки </li> * <li> <b>WORK_COMPANY</b> - наименование компании </li> <li> <b>WORK_DEPARTMENT</b> - * департамент / отдел </li> <li> <b>WORK_POSITION</b> - должность </li> <li> <b>WORK_WWW</b> - * WWW-страница компании </li> <li> <b>WORK_PHONE</b> - рабочий телефон </li> <li> * <b>WORK_FAX</b> - рабочий факс </li> <li> <b>WORK_PAGER</b> - рабочий пэйджер </li> <li> * <b>WORK_STREET</b> - улица, дом компании </li> <li> <b>WORK_MAILBOX</b> - почтовый ящик * компании </li> <li> <b>WORK_CITY</b> - город компании </li> <li> <b>WORK_STATE</b> - область * / край компании </li> <li> <b>WORK_ZIP</b> - индекс компании </li> <li> <b>WORK_COUNTRY</b> - * страна компании </li> <li> <b>WORK_PROFILE</b> - направления деятельности * компании </li> <li> <b>WORK_LOGO</b> - массив описывающий логотип компании, * допустимы следующие ключи этого массива: <ul> <li> <b>name</b> - имя файла * </li> <li> <b>size</b> - размер файла </li> <li> <b>tmp_name</b> - временный путь на * сервере </li> <li> <b>type</b> - тип загружаемого файла </li> <li> <b>del</b> - если * значение равно "Y", то изображение будет удалено </li> <li> <b>MODULE_ID</b> - * идентификатор главного модуля - "main" </li> </ul> </li> <li> <b>WORK_NOTES</b> - * заметки касаемо работы пользователя </li> </ul> <font color="red">*</font> - * обязательные поля. * * * * @return mixed * * * <h4>Example</h4> * <pre> * <? * // создадим массив описывающий изображение * // находящееся в файле на сервере * $arIMAGE = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/photo.gif"); * $arIMAGE["MODULE_ID"] = "main"; * * $user = new CUser; * $arFields = Array( * "NAME" => "Сергей", * "LAST_NAME" => "Иванов", * "EMAIL" => "*****@*****.**", * "LOGIN" => "ivan", * "LID" => "ru", * "ACTIVE" => "Y", * "GROUP_ID" => array(10,11), * "PASSWORD" => "123456", * "CONFIRM_PASSWORD" => "123456", * "PERSONAL_PHOTO" => $arIMAGE * ); * * $ID = <b>$user->Add</b>($arFields); * if (intval($ID) > 0) * echo "Пользователь успешно добавлен."; * else * echo $user->LAST_ERROR; * ?> * </pre> * * * * <h4>See Also</h4> * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cuser/index.php#flds">Поля CUser</a> </li> <li> * <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cuser/update.php">CUser::Update</a> </li> <li> <a * href="http://dev.1c-bitrix.ru/api_help/main/reference/cuser/delete.php">CUser::Delete</a> </li> </ul></b<a * name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/main/reference/cuser/add.php * @author Bitrix */ public function Add($arFields) { /** @global CUserTypeManager $USER_FIELD_MANAGER */ global $DB, $USER_FIELD_MANAGER, $CACHE_MANAGER; $ID = 0; if (!$this->CheckFields($arFields)) { $Result = false; $arFields["RESULT_MESSAGE"] =& $this->LAST_ERROR; } else { unset($arFields["ID"]); if (is_set($arFields, "ACTIVE") && $arFields["ACTIVE"] != "Y") { $arFields["ACTIVE"] = "N"; } if ($arFields["PERSONAL_GENDER"] == "NOT_REF" || $arFields["PERSONAL_GENDER"] != "M" && $arFields["PERSONAL_GENDER"] != "F") { $arFields["PERSONAL_GENDER"] = ""; } $original_pass = $arFields["PASSWORD"]; $salt = randString(8); $arFields["PASSWORD"] = $salt . md5($salt . $arFields["PASSWORD"]); unset($arFields["STORED_HASH"]); $salt = randString(8); $checkword = $arFields["CHECKWORD"] == '' ? md5(CMain::GetServerUniqID() . uniqid()) : $arFields["CHECKWORD"]; $arFields["CHECKWORD"] = $salt . md5($salt . $checkword); $arFields["~CHECKWORD_TIME"] = $DB->CurrentTimeFunction(); if (is_set($arFields, "EMAIL")) { $arFields["EMAIL"] = strtolower($arFields["EMAIL"]); } if (is_set($arFields, "WORK_COUNTRY")) { $arFields["WORK_COUNTRY"] = intval($arFields["WORK_COUNTRY"]); } if (is_set($arFields, "PERSONAL_COUNTRY")) { $arFields["PERSONAL_COUNTRY"] = intval($arFields["PERSONAL_COUNTRY"]); } if (array_key_exists("PERSONAL_PHOTO", $arFields) && is_array($arFields["PERSONAL_PHOTO"]) && (!array_key_exists("MODULE_ID", $arFields["PERSONAL_PHOTO"]) || strlen($arFields["PERSONAL_PHOTO"]["MODULE_ID"]) <= 0)) { $arFields["PERSONAL_PHOTO"]["MODULE_ID"] = "main"; } CFile::SaveForDB($arFields, "PERSONAL_PHOTO", "main"); if (array_key_exists("WORK_LOGO", $arFields) && is_array($arFields["WORK_LOGO"]) && (!array_key_exists("MODULE_ID", $arFields["WORK_LOGO"]) || strlen($arFields["WORK_LOGO"]["MODULE_ID"]) <= 0)) { $arFields["WORK_LOGO"]["MODULE_ID"] = "main"; } CFile::SaveForDB($arFields, "WORK_LOGO", "main"); $arInsert = $DB->PrepareInsert("b_user", $arFields); if (!is_set($arFields, "DATE_REGISTER")) { $arInsert[0] .= ", DATE_REGISTER"; $arInsert[1] .= ", " . $DB->GetNowFunction(); } $strSql = "\n\t\t\t\tINSERT INTO b_user (\n\t\t\t\t\t" . $arInsert[0] . "\n\t\t\t\t) VALUES (\n\t\t\t\t\t" . $arInsert[1] . "\n\t\t\t\t)\n\t\t\t"; $DB->Query($strSql); $ID = $DB->LastID(); $USER_FIELD_MANAGER->Update("USER", $ID, $arFields); if (is_set($arFields, "GROUP_ID")) { CUser::SetUserGroup($ID, $arFields["GROUP_ID"]); } //update digest hash for http digest authorization if (COption::GetOptionString('main', 'use_digest_auth', 'N') == 'Y') { CUser::UpdateDigest($ID, $original_pass); } $Result = $ID; $arFields["ID"] =& $ID; $arFields["CHECKWORD"] = $checkword; } $arFields["RESULT"] =& $Result; foreach (GetModuleEvents("main", "OnAfterUserAdd", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array(&$arFields)); } if ($ID > 0 && defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->ClearByTag("USER_CARD_" . intval($ID / TAGGED_user_card_size)); $CACHE_MANAGER->ClearByTag("USER_CARD"); $CACHE_MANAGER->ClearByTag("USER_NAME_" . $ID); $CACHE_MANAGER->ClearByTag("USER_NAME"); } return $Result; }
function ImportUser() { if ($this->isErrorOccured) { return false; } $this->errorMessage = ""; $defaultEmail = $this->GetDefaultEmail(); if (!($arUser = $this->csv->FetchDelimiter())) { return false; } $arFields = array(); foreach ($this->arHeader as $index => $key) { if (($f = trim($arUser[$index])) != '') { $arFields[$key] = $f; } } if (!array_key_exists("NAME", $arFields) || strlen($arFields["NAME"]) < 1) { $this->errorMessage = GetMessage("CSV_IMPORT_NO_NAME") . " (" . implode(", ", $arFields) . ").<br>"; return true; } if (!array_key_exists("LAST_NAME", $arFields) || strlen($arFields["LAST_NAME"]) < 1) { $this->errorMessage = GetMessage("CSV_IMPORT_NO_LASTNAME") . " (" . implode(", ", $arFields) . ").<br>"; return true; } if (!array_key_exists("PASSWORD", $arFields) || strlen($arFields["PASSWORD"]) < 1) { $arFields["PASSWORD"] = $this->GenerateUserPassword(6); } $arFields["CONFIRM_PASSWORD"] = $arFields["PASSWORD"]; if (!array_key_exists("EMAIL", $arFields) || strlen($arFields["EMAIL"]) < 3 || !check_email($arFields["EMAIL"])) { $arFields["EMAIL"] = $defaultEmail; } if (!array_key_exists("LOGIN", $arFields)) { $arFields["LOGIN"] = ToLower($arFields["NAME"] . " " . $arFields["LAST_NAME"]); } if (array_key_exists("PERSONAL_BIRTHDAY", $arFields) && (strlen($arFields["PERSONAL_BIRTHDAY"]) < 2 || !CheckDateTime($arFields["PERSONAL_BIRTHDAY"]))) { unset($arFields["PERSONAL_BIRTHDAY"]); } if (array_key_exists("DATE_REGISTER", $arFields) && (strlen($arFields["DATE_REGISTER"]) < 2 || !CheckDateTime($arFields["DATE_REGISTER"]))) { unset($arFields["DATE_REGISTER"]); } if ($this->externalAuthID !== null && !array_key_exists("EXTERNAL_AUTH_ID", $arFields)) { $arFields["EXTERNAL_AUTH_ID"] = $this->externalAuthID; } if (!array_key_exists("XML_ID", $arFields)) { $arFields["XML_ID"] = md5(uniqid(rand(), true)); } if (!array_key_exists("CHECKWORD", $arFields) || strlen($arFields["CHECKWORD"]) <= 0) { $arFields["CHECKWORD"] = md5(CMain::GetServerUniqID() . uniqid()); } if ($this->imageFilePath !== null) { if (array_key_exists("PERSONAL_PHOTO", $arFields) && strlen($arFields["PERSONAL_PHOTO"]) > 0) { $arFile = CFile::MakeFileArray($this->imageFilePath . "/" . $arFields["PERSONAL_PHOTO"]); $arFile["MODULE_ID"] = "main"; $arFields["PERSONAL_PHOTO"] = $arFile; } if (array_key_exists("WORK_LOGO", $arFields) && strlen($arFields["WORK_LOGO"]) > 0) { $arFile = CFile::MakeFileArray($this->imageFilePath . "/" . $arFields["WORK_LOGO"]); $arFile["MODULE_ID"] = "main"; $arFields["WORK_LOGO"] = $arFile; } } else { unset($arFields["PERSONAL_PHOTO"]); unset($arFields["WORK_LOGO"]); } $arFields["GROUP_ID"] = $this->userGroups; $user = new CUser(); $userID = (int) $user->Add($arFields); if ($userID <= 0) { if ($user->LAST_ERROR != '') { $this->errorMessage = $arFields["NAME"] . " " . $arFields["LAST_NAME"] . ": " . $user->LAST_ERROR; } } if ($userID <= 0 && $this->ignoreDuplicate === false) { $postFix = 2; $login = $arFields["LOGIN"]; do { $rsUser = CUser::GetByLogin($arFields["LOGIN"]); if (!$rsUser->Fetch()) { break; } $arFields["LOGIN"] = $login . $postFix; $userID = (int) $user->Add($arFields); if ($userID > 1) { break; } $postFix++; } while (true); } if ($userID > 0) { if ($this->attachIBlockID > 0) { $iblockSectionID = $this->__GetIBlockSectionID($arFields); if ($iblockSectionID > 0) { if (!$this->isUserPropertyCreate) { $this->isUserPropertyCreate = $this->__CreateUserProperty(); } $arUpdate = array(); $arUpdate[$this->userPropertyName] = array($iblockSectionID); $user->Update($userID, $arUpdate); } } if ($this->callback !== null) { call_user_func_array($this->callback, array(&$arFields, &$userID)); } } return true; }
public static function checkMailDomain($service_id, $user_id, $cnt = 1) { $service_id = intval($service_id); $user_id = intval($user_id); $cnt = intval($cnt); if (!CModule::includeModule('mail')) { return ''; } $arAdmin = CUser::getList($by, $order, array('ID' => $user_id, 'GROUPS_ID' => 1, 'ACTIVE' => 'Y'), array('FIELDS' => array('ID', 'TIME_ZONE_OFFSET')))->fetch(); if (empty($arAdmin)) { return ''; } $service = \Bitrix\Mail\MailServicesTable::getList(array('filter' => array('=ID' => $service_id)))->fetch(); if (empty($service) || $service['ACTIVE'] != 'Y' || !in_array($service['SERVICE_TYPE'], array('domain', 'crdomain'))) { return ''; } if ($service['SERVICE_TYPE'] == 'domain') { $result = CMailDomain2::getDomainStatus($service['TOKEN'], $service['SERVER']); $stage = empty($result['stage']) ? null : $result['stage']; } else { $crResponse = CControllerClient::executeEvent('OnMailControllerCheckMemberDomain', array('DOMAIN' => $service['SERVER'])); $stage = empty($crResponse['result']['stage']) ? null : $crResponse['result']['stage']; } if (!in_array($stage, array('none', 'owner-check', 'mx-check', 'added'))) { return false; } else { if (in_array($stage, array('none', 'added'))) { if ($stage == 'added') { if (CModule::includeModule('im')) { includeModuleLangFile(__FILE__); $siteUrl = sprintf('http%s://%s%s', CMain::isHTTPS() ? 's' : '', $_SERVER['SERVER_NAME'], in_array($_SERVER['SERVER_PORT'], array(80, 443)) ? '' : ':' . $_SERVER['SERVER_PORT']); CIMNotify::add(array('TO_USER_ID' => $user_id, 'FROM_USER_ID' => 0, 'NOTIFY_TYPE' => IM_NOTIFY_SYSTEM, 'NOTIFY_MODULE' => 'intranet', 'NOTIFY_MESSAGE' => str_replace(array('#DOMAIN#', '#SERVER#'), array(htmlspecialcharsbx($service['SERVER']), $siteUrl), getMessage('INTR_MAIL_DOMAINREADY_NOTICE')))); } $timeout = new DateTime(intval($arAdmin['TIME_ZONE_OFFSET']) . ' seconds +7 days'); if ($timeout->format('N') > 5) { $timeout->modify('next monday'); } CAgent::addAgent('CIntranetUtils::notifyMailDomain("nomailbox", ' . $service_id . ', ' . $user_id . ');', 'intranet', 'N', $timeout->getTimestamp() - intval($arAdmin['TIME_ZONE_OFFSET']) - time()); } return ''; } else { if ($cnt > 100) { return ''; } global $pPERIOD; $pPERIOD = $pPERIOD * $cnt; if ($pPERIOD > 3600 * 4) { $pPERIOD = 3600 * 4; } return 'CIntranetUtils::checkMailDomain(' . $service_id . ', ' . $user_id . ', ' . ++$cnt . ');'; } } }
function InstallDB() { /** @global string $DBType */ global $DB, $DBType, $DBHost, $DBLogin, $DBPassword, $DBName, $APPLICATION; if (!is_object($APPLICATION)) { $APPLICATION = new CMain(); } $DB = new CDatabase(); $DB->DebugToFile = false; $DB->debug = true; if (!defined("DBPersistent")) { define("DBPersistent", false); } if (!$DB->Connect($DBHost, $DBName, $DBLogin, $DBPassword)) { $APPLICATION->ThrowException(GetMessage("MAIN_INSTALL_DB_ERROR")); return false; } $result = $DB->Query("SELECT * FROM b_module WHERE ID='main'", true, "", array("fixed_connection" => true)); $success = $result && $result->Fetch(); if ($success) { return true; } if ($DBType == "mysql" && defined("MYSQL_TABLE_TYPE") && strlen(MYSQL_TABLE_TYPE) > 0) { $DB->Query("SET storage_engine = '" . MYSQL_TABLE_TYPE . "'", true); } $errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/install/" . $DBType . "/install.sql"); if ($errors !== false) { $APPLICATION->ThrowException(implode("", $errors)); return false; } $this->InstallTasks(); $group = new CGroup(); $arGroups = array(array("~ID" => 1, "ACTIVE" => "Y", "C_SORT" => 1, "NAME" => GetMessage("MAIN_ADMIN_GROUP_NAME"), "ANONYMOUS" => "N", "DESCRIPTION" => GetMessage("MAIN_ADMIN_GROUP_DESC")), array("~ID" => 2, "ACTIVE" => "Y", "C_SORT" => 2, "NAME" => GetMessage("MAIN_EVERYONE_GROUP_NAME"), "ANONYMOUS" => "Y", "DESCRIPTION" => GetMessage("MAIN_EVERYONE_GROUP_DESC")), array("~ID" => 3, "ACTIVE" => "Y", "C_SORT" => 3, "NAME" => GetMessage("MAIN_VOTE_RATING_GROUP_NAME"), "ANONYMOUS" => "N", "DESCRIPTION" => GetMessage("MAIN_VOTE_RATING_GROUP_DESC"), "STRING_ID" => "RATING_VOTE"), array("~ID" => 4, "ACTIVE" => "Y", "C_SORT" => 4, "NAME" => GetMessage("MAIN_VOTE_AUTHORITY_GROUP_NAME"), "ANONYMOUS" => "N", "DESCRIPTION" => GetMessage("MAIN_VOTE_AUTHORITY_GROUP_DESC"), "STRING_ID" => "RATING_VOTE_AUTHORITY")); foreach ($arGroups as $arGroup) { $rsGroup = CGroup::GetByID($arGroup["~ID"]); if ($rsGroup->Fetch()) { continue; } //mssql does not allow insert identity by default if (strtolower($DB->type) == "mssql") { unset($arGroup["~ID"]); } $success = (bool) $group->Add($arGroup); if (!$success) { $APPLICATION->ThrowException($group->LAST_ERROR); return false; } } self::InstallRatings(); $arLanguages = array(array("LID" => LANGUAGE_ID, "ACTIVE" => "Y", "SORT" => 1, "DEF" => "Y", "NAME" => GetMessage("MAIN_DEFAULT_LANGUAGE_NAME"), "FORMAT_DATE" => GetMessage("MAIN_DEFAULT_LANGUAGE_FORMAT_DATE"), "FORMAT_DATETIME" => GetMessage("MAIN_DEFAULT_LANGUAGE_FORMAT_DATETIME"), "FORMAT_NAME" => GetMessage("MAIN_DEFAULT_LANGUAGE_FORMAT_NAME"), "CHARSET" => defined("BX_UTF") ? "UTF-8" : GetMessage("MAIN_DEFAULT_LANGUAGE_FORMAT_CHARSET"))); if (LANGUAGE_ID != "en") { $arLanguages[] = array("LID" => "en", "ACTIVE" => "Y", "SORT" => 2, "DEF" => "N", "NAME" => "English", "FORMAT_DATE" => "MM/DD/YYYY", "FORMAT_DATETIME" => "MM/DD/YYYY H:MI:SS T", "FORMAT_NAME" => "#NAME# #LAST_NAME#", "CHARSET" => defined("BX_UTF") ? "UTF-8" : "iso-8859-1"); } if (LANGUAGE_ID != "de" && file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/lang/de/install/index.php')) { $arLanguages[] = array("LID" => "de", "ACTIVE" => "Y", "SORT" => 3, "DEF" => "N", "NAME" => "German", "FORMAT_DATE" => "DD.MM.YYYY", "FORMAT_DATETIME" => "DD.MM.YYYY HH:MI:SS", "FORMAT_NAME" => "#NAME# #LAST_NAME#", "CHARSET" => defined("BX_UTF") ? "UTF-8" : "iso-8859-1"); } if (LANGUAGE_ID != "ru" && file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/lang/ru/install/index.php')) { $arLanguages[] = array("LID" => "ru", "ACTIVE" => "Y", "SORT" => 3, "DEF" => "N", "NAME" => "Russian", "FORMAT_DATE" => "DD.MM.YYYY", "FORMAT_DATETIME" => "DD.MM.YYYY HH:MI:SS", "FORMAT_NAME" => "#NAME# #LAST_NAME#", "CHARSET" => defined("BX_UTF") ? "UTF-8" : "windows-1251"); } $lang = new CLanguage(); foreach ($arLanguages as $arLanguage) { $rsLang = CLanguage::GetByID($arLanguage["LID"]); if ($rsLang->Fetch()) { continue; } $success = (bool) $lang->Add($arLanguage); if (!$success) { $APPLICATION->ThrowException($lang->LAST_ERROR); return false; } } $arSite = array("LID" => "s1", "ACTIVE" => "Y", "SORT" => 1, "DEF" => "Y", "NAME" => GetMessage("MAIN_DEFAULT_SITE_NAME"), "DIR" => "/", "FORMAT_DATE" => GetMessage("MAIN_DEFAULT_SITE_FORMAT_DATE"), "FORMAT_DATETIME" => GetMessage("MAIN_DEFAULT_SITE_FORMAT_DATETIME"), "FORMAT_NAME" => GetMessage("MAIN_DEFAULT_SITE_FORMAT_NAME"), "CHARSET" => defined("BX_UTF") ? "UTF-8" : GetMessage("MAIN_DEFAULT_SITE_FORMAT_CHARSET"), "LANGUAGE_ID" => LANGUAGE_ID); $rsSites = CSite::GetByID($arSite["LID"]); if (!$rsSites->Fetch()) { $site = new CSite(); $success = (bool) $site->Add($arSite); if (!$success) { $APPLICATION->ThrowException($site->LAST_ERROR); return false; } } RegisterModule("main"); RegisterModuleDependences('iblock', 'OnIBlockPropertyBuildList', 'main', 'CIBlockPropertyUserID', 'GetUserTypeDescription', 100, '/modules/main/tools/prop_userid.php'); RegisterModuleDependences('main', 'OnUserDelete', 'main', 'CFavorites', 'OnUserDelete', 100, "/modules/main/classes/" . strtolower($GLOBALS["DB"]->type) . "/favorites.php"); RegisterModuleDependences('main', 'OnLanguageDelete', 'main', 'CFavorites', 'OnLanguageDelete', 100, "/modules/main/classes/" . strtolower($GLOBALS["DB"]->type) . "/favorites.php"); RegisterModuleDependences('main', 'OnUserDelete', 'main', 'CUserOptions', 'OnUserDelete'); RegisterModuleDependences('main', 'OnChangeFile', 'main', 'CMain', 'OnChangeFileComponent'); RegisterModuleDependences('main', 'OnUserTypeRightsCheck', 'main', 'CUser', 'UserTypeRightsCheck'); RegisterModuleDependences('main', 'OnUserLogin', 'main', 'UpdateTools', 'CheckUpdates'); RegisterModuleDependences('main', 'OnModuleUpdate', 'main', 'UpdateTools', 'SetUpdateResult'); RegisterModuleDependences('main', 'OnUpdateCheck', 'main', 'UpdateTools', 'SetUpdateError'); RegisterModuleDependences('main', 'OnPanelCreate', 'main', 'CUndo', 'CheckNotifyMessage'); RegisterModuleDependences('main', 'OnAfterAddRating', 'main', 'CRatingsComponentsMain', 'OnAfterAddRating'); RegisterModuleDependences('main', 'OnAfterUpdateRating', 'main', 'CRatingsComponentsMain', 'OnAfterUpdateRating'); RegisterModuleDependences('main', 'OnSetRatingsConfigs', 'main', 'CRatingsComponentsMain', 'OnSetRatingConfigs'); RegisterModuleDependences('main', 'OnGetRatingsConfigs', 'main', 'CRatingsComponentsMain', 'OnGetRatingConfigs'); RegisterModuleDependences('main', 'OnGetRatingsObjects', 'main', 'CRatingsComponentsMain', 'OnGetRatingObject'); RegisterModuleDependences('main', 'OnGetRatingContentOwner', 'main', 'CRatingsComponentsMain', 'OnGetRatingContentOwner'); RegisterModuleDependences('main', 'OnAfterAddRatingRule', 'main', 'CRatingRulesMain', 'OnAfterAddRatingRule'); RegisterModuleDependences('main', 'OnAfterUpdateRatingRule', 'main', 'CRatingRulesMain', 'OnAfterUpdateRatingRule'); RegisterModuleDependences('main', 'OnGetRatingRuleObjects', 'main', 'CRatingRulesMain', 'OnGetRatingRuleObjects'); RegisterModuleDependences('main', 'OnGetRatingRuleConfigs', 'main', 'CRatingRulesMain', 'OnGetRatingRuleConfigs'); RegisterModuleDependences('main', 'OnAfterUserAdd', 'main', 'CRatings', 'OnAfterUserRegister'); RegisterModuleDependences('main', 'OnUserDelete', 'main', 'CRatings', 'OnUserDelete'); RegisterModuleDependences('main', 'OnUserDelete', 'main', 'CAccess', 'OnUserDelete'); RegisterModuleDependences('main', 'OnAfterGroupAdd', 'main', 'CGroupAuthProvider', 'OnAfterGroupAdd'); RegisterModuleDependences('main', 'OnBeforeGroupUpdate', 'main', 'CGroupAuthProvider', 'OnBeforeGroupUpdate'); RegisterModuleDependences('main', 'OnBeforeGroupDelete', 'main', 'CGroupAuthProvider', 'OnBeforeGroupDelete'); RegisterModuleDependences('main', 'OnAfterUserUpdate', 'main', 'CGroupAuthProvider', 'OnAfterUserUpdate'); RegisterModuleDependences('main', 'OnUserLogin', 'main', 'CGroupAuthProvider', 'OnUserLogin'); RegisterModuleDependences("main", "OnEventLogGetAuditTypes", "main", "CEventMain", "GetAuditTypes"); RegisterModuleDependences("main", "OnEventLogGetAuditHandlers", "main", "CEventMain", "MakeMainObject"); RegisterModuleDependences("perfmon", "OnGetTableSchema", "main", "CTableSchema", "OnGetTableSchema"); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeString", "GetUserTypeDescription", 110); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeInteger", "GetUserTypeDescription", 120); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeDouble", "GetUserTypeDescription", 130); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeDateTime", "GetUserTypeDescription", 140); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeBoolean", "GetUserTypeDescription", 150); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeFile", "GetUserTypeDescription", 160); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeEnum", "GetUserTypeDescription", 170); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeIBlockSection", "GetUserTypeDescription", 180); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeIBlockElement", "GetUserTypeDescription", 190); RegisterModuleDependences("main", "OnUserTypeBuildList", "main", "CUserTypeStringFormatted", "GetUserTypeDescription", 200); COption::SetOptionString('main', 'auth_comp2', 'Y'); COption::SetOptionString("main", "PARAM_MAX_SITES", "2"); COption::SetOptionString("main", "PARAM_MAX_USERS", "0"); COption::SetOptionString("main", "distributive6", "Y"); COption::SetOptionString("main", "~new_license11_sign", "Y"); COption::SetOptionString("main", "GROUP_DEFAULT_TASK", "1"); if (LANGUAGE_ID == "ru") { COption::SetOptionString("main", "vendor", "1c_bitrix"); } else { COption::SetOptionString("main", "vendor", "bitrix"); } COption::SetOptionString("main", "admin_lid", LANGUAGE_ID); COption::SetOptionString("main", "update_site", "www.bitrixsoft.com"); COption::SetOptionString("main", "update_site_ns", "Y"); COption::SetOptionString("main", "optimize_css_files", "Y"); COption::SetOptionString("main", "optimize_js_files", "Y"); CAgent::AddAgent("CEvent::CleanUpAgent();", "main", "Y", 86400); CAgent::AddAgent("CUser::CleanUpHitAuthAgent();", "main", "Y", 86400); CAgent::AddAgent("CCaptchaAgent::DeleteOldCaptcha(3600);", "main", "N", 3600); CAgent::AddAgent("CUndo::CleanUpOld();", "main", "Y", 86400); self::InstallDesktop(); self::InstallSmiles(); return true; }
protected function getBatchWithModifier($appMessages = array(), $modifier = "") { global $APPLICATION; $batch = ""; if (!is_array($appMessages) || count($appMessages) <= 0) { return $batch; } foreach ($appMessages as $appID => $arMessages) { $appModifier = ";tkey=" . $appID . ";"; foreach ($arMessages as $token => $messages) { if (!count($messages)) { continue; } $mess = 0; $messCount = count($messages); while ($mess < $messCount) { /** * @var CPushMessage $message; */ if (!$this->allowEmptyMessage && strlen(trim($messages[$mess]["MESSAGE"])) <= 0) { $mess++; continue; } $message = static::getMessageInstance($token); $id = rand(1, 10000); $message->setCustomIdentifier($id); if ("UTF-8" != toupper(SITE_CHARSET)) { $text = $APPLICATION->ConvertCharset($messages[$mess]["MESSAGE"], SITE_CHARSET, "utf-8"); } else { $text = $messages[$mess]["MESSAGE"]; } $message->setText($text); $message->setTitle($messages[$mess]["TITLE"]); if (strlen($text) > 0) { if (strlen($messages[$mess]["SOUND"]) > 0) { $message->setSound($messages[$mess]["SOUND"]); } } else { $message->setSound(''); } if ($messages[$mess]["PARAMS"]) { $params = $messages[$mess]["PARAMS"]; if (is_array($messages[$mess]["PARAMS"])) { $params = json_encode($messages[$mess]["PARAMS"]); } $message->setCustomProperty('params', $params); } if ($messages[$mess]["ACTION"]) { $message->setCustomProperty('action', $messages[$mess]["ACTION"]); } if ($messages[$mess]["JSEVENT"]) { $message->setCustomProperty('jsevent', $messages[$mess]["JSEVENT"]); } if ($messages[$mess]["CATEGORY"]) { $message->setCategory($messages[$mess]["CATEGORY"]); } $message->setCustomProperty('target', md5($messages[$mess]["USER_ID"] . CMain::GetServerUniqID())); if (array_key_exists("EXPIRY", $messages[$mess])) { $expiry = $messages[$mess]["EXPIRY"]; if ($expiry === 0 || $expiry === "0") { $message->setExpiry(0); } else { $message->setExpiry(intval($expiry) > 0 ? intval($expiry) : self::DEFAULT_EXPIRY); } } $badge = intval($messages[$mess]["BADGE"]); if (array_key_exists("BADGE", $messages[$mess]) && $badge >= 0) { $message->setBadge($badge); } if (strlen($batch) > 0) { $batch .= ";"; } $batch .= $message->getBatch(); $mess++; } } $batch = $appModifier . $batch; } if (strlen($batch) == 0) { return $batch; } return $modifier . $batch; }
public static function requestGroupUser($arFields) { $groupID = $arFields['GROUP_ID']; $message = $arFields['MESSAGE']; if(intval($groupID) <= 0) throw new Exception('Wrong group ID'); $dbRes = CSocNetGroup::GetList(array(), array( "ID" => $groupID, "CHECK_PERMISSIONS" => "Y" )); $arGroup = $dbRes->Fetch(); if(is_array($arGroup)) { $url = (CMain::IsHTTPS() ? "https://" : "http://").$_SERVER["HTTP_HOST"].CComponentEngine::MakePathFromTemplate("/workgroups/group/#group_id#/requests/", array("group_id" => $arGroup["ID"])); if (!CSocNetUserToGroup::SendRequestToBeMember($GLOBALS["USER"]->GetID(), $arGroup["ID"], $message, $url, false)) throw new Exception('Cannot request to join group'); return true; } else throw new Exception('Socialnetwork group not found'); }
// { $bNeedButton = $arParams["OBJECT"]->workflow == "bizproc"; if ($arParams["OBJECT"]->workflow == "bizproc_limited") { $bNeedButton = CIBlock::GetArrayByID($arParams["OBJECT"]->IBLOCK_ID, "BIZPROC") != "N"; } if ($bNeedButton) { $component->arResult["arButtons"] = is_array($component->arResult["arButtons"]) ? $component->arResult["arButtons"] : array(); $component->arResult["arButtons"][] = array("TEXT" => GetMessage("SOCNET_SETTINGS"), "TITLE" => GetMessage("SOCNET_SETTINGS_ALT"), "LINK" => "javascript:" . $APPLICATION->GetPopupLink(array("URL" => $component->__path . "/include/webdav_settings.php?DOCUMENT_ID=" . $arParams["OBJECT"]->wfParams['DOCUMENT_TYPE'][2] . "&back_url=" . urlencode($APPLICATION->GetCurPage()), "PARAMS" => array("min_width" => 300, "min_height" => 150))), "ICON" => "btn-list settings"); } // } } $result = $APPLICATION->IncludeComponent("bitrix:webdav.menu", ".default", array("OBJECT" => $arParams["OBJECT"], "SECTION_ID" => $arResult["VARIABLES"]["SECTION_ID"], "ELEMENT_ID" => $arResult["VARIABLES"]["ELEMENT_ID"], "PAGE_NAME" => $arResult["VARIABLES"]["PAGE_NAME"], "ACTION" => $arResult["VARIABLES"]["ACTION"], "BASE_URL" => $arResult["VARIABLES"]["BASE_URL"], "SECTIONS_URL" => $arResult["~PATH_TO_USER_FILES"], "SECTION_EDIT_URL" => $arResult["~PATH_TO_USER_FILES_SECTION_EDIT"], "ELEMENT_URL" => $arResult["~PATH_TO_USER_FILES_ELEMENT"], "ELEMENT_EDIT_URL" => $arResult["~PATH_TO_USER_FILES_ELEMENT_EDIT"], "ELEMENT_FILE_URL" => $arResult["~PATH_TO_USER_FILES_ELEMENT_FILE"], "ELEMENT_HISTORY_URL" => $arResult["~PATH_TO_USER_FILES_ELEMENT_HISTORY"], "ELEMENT_HISTORY_GET_URL" => $arResult["~PATH_TO_USER_FILES_ELEMENT_HISTORY_GET"], "ELEMENT_VERSION_URL" => $arResult["~PATH_TO_USER_FILES_ELEMENT_VERSION"], "ELEMENT_VERSIONS_URL" => $arResult["~PATH_TO_USER_FILES_ELEMENT_VERSIONS"], "ELEMENT_UPLOAD_URL" => $arResult["~PATH_TO_USER_FILES_ELEMENT_UPLOAD"], "HELP_URL" => $arResult["~PATH_TO_USER_FILES_HELP"], "USER_VIEW_URL" => $arResult["~PATH_TO_USER"], "WEBDAV_BIZPROC_HISTORY_URL" => $arResult["~PATH_TO_USER_FILES_WEBDAV_BIZPROC_HISTORY"], "WEBDAV_BIZPROC_HISTORY_GET_URL" => $arResult["~PATH_TO_USER_FILES_WEBDAV_BIZPROC_HISTORY_GET"], "WEBDAV_BIZPROC_LOG_URL" => $arResult["~PATH_TO_USER_FILES_WEBDAV_BIZPROC_LOG"], "WEBDAV_BIZPROC_VIEW_URL" => $arResult["~PATH_TO_USER_FILES_WEBDAV_BIZPROC_VIEW"], "WEBDAV_BIZPROC_WORKFLOW_ADMIN_URL" => $arResult["~PATH_TO_USER_FILES_WEBDAV_BIZPROC_WORKFLOW_ADMIN"], "WEBDAV_BIZPROC_WORKFLOW_EDIT_URL" => $arResult["~PATH_TO_USER_FILES_WEBDAV_BIZPROC_WORKFLOW_EDIT"], "WEBDAV_START_BIZPROC_URL" => $arResult["~PATH_TO_USER_FILES_WEBDAV_START_BIZPROC"], "WEBDAV_TASK_LIST_URL" => $arResult["~PATH_TO_BIZPROC_TASK_LIST"], "WEBDAV_TASK_URL" => $arResult["~PATH_TO_BIZPROC_TASK"], "BIZPROC" => $arResult["VARIABLES"]["BIZPROC"], "USE_COMMENTS" => "N", "FORUM_ID" => false, "STR_TITLE" => $arResult["VARIABLES"]["STR_TITLE"], "SHOW_WEBDAV" => $arResult["VARIABLES"]["SHOW_WEBDAV"]), $component, array("HIDE_ICONS" => "Y")); $this->__component->__menu_values = $result; if ($arParams["SHOW_NAVIGATION"] != "N") { // text from main CMain::InitPathVars($site, $path); $DOC_ROOT = CSite::GetSiteDocRoot($site); $path = $GLOBALS["APPLICATION"]->GetCurDir(); $arChain = array(); while (true) { $path = rtrim($path, "/"); $chain_file_name = $DOC_ROOT . $path . "/.section.php"; if (file_exists($chain_file_name)) { $sSectionName = ""; include $chain_file_name; if (strlen($sSectionName) > 0) { $arChain[] = array("TITLE" => $sSectionName, "LINK" => $path . "/"); } } if ($path . '/' == SITE_DIR) { break;
function NotifyIm($arParams) { if (!CModule::IncludeModule("im")) { return; } $arUsers = array(); if (!empty($arParams["TO_USER_ID"])) { foreach ($arParams["TO_USER_ID"] as $val) { $val = IntVal($val); if ($val > 0 && $val != $arParams["FROM_USER_ID"]) { $arUsers[] = $val; } } } if (!empty($arParams["TO_SOCNET_RIGHTS"])) { foreach ($arParams["TO_SOCNET_RIGHTS"] as $v) { if (substr($v, 0, 1) == "U") { $u = IntVal(substr($v, 1)); if ($u > 0 && !in_array($u, $arUsers) && empty($arParams["TO_SOCNET_RIGHTS_OLD"][$u]) && $u != $arParams["FROM_USER_ID"]) { $arUsers[] = $u; } } } } $arMessageFields = array("MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => "", "FROM_USER_ID" => $arParams["FROM_USER_ID"], "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "blog"); if (CModule::IncludeModule("socialnetwork")) { $rsLog = CSocNetLog::GetList(array(), array("EVENT_ID" => array("blog_post", "blog_post_micro"), "SOURCE_ID" => $arParams["ID"]), false, false, array("ID")); if ($arLog = $rsLog->Fetch()) { $arMessageFields["LOG_ID"] = $arLog["ID"]; } } $arParams["TITLE"] = str_replace(array("\r\n", "\n"), " ", $arParams["TITLE"]); $arParams["TITLE"] = TruncateText($arParams["TITLE"], 100); $arParams["TITLE_OUT"] = TruncateText($arParams["TITLE"], 255); $dbSite = CSite::GetByID(SITE_ID); $arSite = $dbSite->Fetch(); $serverName = htmlspecialcharsEx($arSite["SERVER_NAME"]); if (strlen($serverName) <= 0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) { $serverName = SITE_SERVER_NAME; } else { $serverName = COption::GetOptionString("main", "server_name", ""); } } $serverName = (CMain::IsHTTPS() ? "https" : "http") . "://" . $serverName; if ($arParams["TYPE"] == "POST") { $arMessageFields["NOTIFY_EVENT"] = "post"; $arMessageFields["NOTIFY_TAG"] = "BLOG|POST|" . $arParams["ID"]; $arMessageFields["NOTIFY_MESSAGE"] = GetMessage("BLG_GP_IM_1", array("#title#" => "<a href=\"" . $arParams["URL"] . "\" class=\"bx-notifier-item-action\">" . htmlspecialcharsbx($arParams["TITLE"]) . "</a>")); $arMessageFields["NOTIFY_MESSAGE_OUT"] = GetMessage("BLG_GP_IM_1", array("#title#" => htmlspecialcharsbx($arParams["TITLE_OUT"]))) . " (" . $serverName . $arParams["URL"] . ")"; } elseif ($arParams["TYPE"] == "COMMENT") { $arMessageFields["NOTIFY_EVENT"] = "comment"; $arMessageFields["NOTIFY_TAG"] = "BLOG|COMMENT|" . $arParams["ID"]; $arMessageFields["NOTIFY_MESSAGE"] = GetMessage("BLG_GP_IM_4", array("#title#" => "<a href=\"" . $arParams["URL"] . "\" class=\"bx-notifier-item-action\">" . htmlspecialcharsbx($arParams["TITLE"]) . "</a>")); $arMessageFields["NOTIFY_MESSAGE_OUT"] = GetMessage("BLG_GP_IM_4", array("#title#" => htmlspecialcharsbx($arParams["TITLE_OUT"]))) . " (" . $serverName . $arParams["URL"] . ")"; $arMessageFields["NOTIFY_MESSAGE_AUTHOR"] = GetMessage("BLG_GP_IM_5", array("#title#" => "<a href=\"" . $arParams["URL"] . "\" class=\"bx-notifier-item-action\">" . htmlspecialcharsbx($arParams["TITLE"]) . "</a>")); $arMessageFields["NOTIFY_MESSAGE_AUTHOR_OUT"] = GetMessage("BLG_GP_IM_5", array("#title#" => htmlspecialcharsbx($arParams["TITLE_OUT"]))) . " (" . $serverName . $arParams["URL"] . ")"; } foreach ($arUsers as $v) { if (!empty($arParams["EXCLUDE_USERS"]) && IntVal($arParams["EXCLUDE_USERS"][$v]) > 0) { continue; } $arMessageFieldsTmp = $arMessageFields; if ($arParams["TYPE"] == "COMMENT") { if ($arParams["AUTHOR_ID"] == $v) { $arMessageFieldsTmp["NOTIFY_MESSAGE"] = $arMessageFields["NOTIFY_MESSAGE_AUTHOR"]; $arMessageFieldsTmp["NOTIFY_MESSAGE_OUT"] = $arMessageFields["NOTIFY_MESSAGE_AUTHOR_OUT"]; } } $arMessageFieldsTmp["TO_USER_ID"] = $v; $ID = CIMNotify::Add($arMessageFieldsTmp); } if (!empty($arParams["MENTION_ID"])) { if (!is_array($arParams["MENTION_ID_OLD"])) { $arParams["MENTION_ID_OLD"] = array(); } foreach ($arParams["MENTION_ID"] as $val) { $val = IntVal($val); if (IntVal($val) > 0 && !in_array($val, $arUsers) && !in_array($val, $arParams["MENTION_ID_OLD"]) && $val != $arParams["FROM_USER_ID"]) { if (CBlogPost::GetSocNetPostPerms($arParams["ID"], false, $val) >= BLOG_PERMS_READ) { $arMessageFields["TO_USER_ID"] = $val; $arMessageFields["NOTIFY_EVENT"] = "mention"; if ($arParams["TYPE"] == "POST") { $arMessageFields["NOTIFY_TAG"] = "BLOG|POST_MENTION|" . $arParams["ID"]; $arMessageFields["NOTIFY_MESSAGE"] = GetMessage("BLG_GP_IM_6", array("#title#" => "<a href=\"" . $arParams["URL"] . "\" class=\"bx-notifier-item-action\">" . htmlspecialcharsbx($arParams["TITLE"]) . "</a>")); $arMessageFields["NOTIFY_MESSAGE_OUT"] = GetMessage("BLG_GP_IM_6", array("#title#" => htmlspecialcharsbx($arParams["TITLE_OUT"]))) . " (" . $arParams["URL"] . ")"; } elseif ($arParams["TYPE"] == "COMMENT") { $arMessageFields["NOTIFY_TAG"] = "BLOG|COMMENT_MENTION|" . $arParams["ID"]; $arMessageFields["NOTIFY_MESSAGE"] = GetMessage("BLG_GP_IM_7", array("#title#" => "<a href=\"" . $arParams["URL"] . "\" class=\"bx-notifier-item-action\">" . htmlspecialcharsbx($arParams["TITLE"]) . "</a>")); $arMessageFields["NOTIFY_MESSAGE_OUT"] = GetMessage("BLG_GP_IM_7", array("#title#" => htmlspecialcharsbx($arParams["TITLE_OUT"]))) . " (" . $arParams["URL"] . ")"; } $ID = CIMNotify::Add($arMessageFields); if (intval($ID) > 0 && intval($arMessageFields["LOG_ID"]) > 0) { $db_events = GetModuleEvents("blog", "OnBlogPostMentionNotifyIm"); while ($arEvent = $db_events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, $arMessageFields)); } } } } } } }