php Поствживуюлентуbitrix24。 #CBlog ::添加#CBlogPost ::添加#CBlogPost :: Notify

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php Поствживуюлентуbitrix24。 #CBlog ::添加#CBlogPost ::添加#CBlogPost :: Notify相关的知识,希望对你有一定的参考价值。

<?
public static $arAdminUserGroups = array(26);

	/**
	  * Метод для создания блога
	  *
	  * @param int $userId - id полльзователя, для которого создается блог
	  *	@param int $blogGroupId - группа блогов, в которую включать создаваемый блог 
	  * @param string $siteId - сайт
	  * @return array
	  */
	public function createBlog($userId, $blogGroupId, $siteId)
	{
		$arRes = array();
		if(Loader::includeModule("blog") && Loader::includeModule("socialnetwork"))
		{
			global $DB;
			$arFields = array(
				"=DATE_UPDATE" => $DB->CurrentTimeFunction(),
				"GROUP_ID" => $blogGroupId,
				"ACTIVE" => "Y",
				"ENABLE_COMMENTS" => "Y",
				"ENABLE_IMG_VERIF" => "Y",
				"EMAIL_NOTIFY" => "Y",
				"ENABLE_RSS" => "Y",
				"ALLOW_HTML" => "N",
				"ENABLE_TRACKBACK" => "N",
				"SEARCH_INDEX" => "Y",
				"USE_SOCNET" => "Y",
				"=DATE_CREATE" => $DB->CurrentTimeFunction(),
				"PERMS_POST" => Array(
					1 => "I",
					2 => "I" ),
				"PERMS_COMMENT" => Array(
					1 => "P",
					2 => "P" ),
			);

			$bRights = false;
			$rsUser = \CUser::GetByID($userId);
			$arUser = $rsUser->Fetch();
			if(strlen($arUser["NAME"]."".$arUser["LAST_NAME"]) <= 0)
			{
				$arFields["NAME"] = Loc::getMessage("TRS_SNBPA_BLOG_NAME")." ".$arUser["LOGIN"];
			}
			else
			{
				$arFields["NAME"] = Loc::getMessage("TRS_SNBPA_BLOG_NAME")." ".$arUser["NAME"]." ".$arUser["LAST_NAME"];
			}

			$arFields["URL"] = str_replace(" ", "_", $arUser["LOGIN"])."-blog-".$siteId;
			$arFields["OWNER_ID"] = $userId;

			$urlCheck = preg_replace("/[^a-zA-Z0-9_-]/is", "", $arFields["URL"]);
			if ($urlCheck != $arFields["URL"])
			{
				$arFields["URL"] = "u".$userId."-blog-".$siteId;
			}

			if(\CBlog::GetByUrl($arFields["URL"]))
			{
				$uind = 0;
				do
				{
					$uind++;
					$arFields["URL"] = $arFields["URL"].$uind;
				}
				while (\CBlog::GetByUrl($arFields["URL"]));
			}

			$featureOperationPerms = \CSocNetFeaturesPerms::GetOperationPerm(SONET_ENTITY_USER, $arFields["OWNER_ID"], "blog", "view_post");
			if ($featureOperationPerms == SONET_RELATIONS_TYPE_ALL)
			{
				$bRights = true;
			}

			$blogID = \CBlog::Add($arFields);

			BXClearCache(true, "/blog/form/blog/");
			if ($bRights)
			{
				\CBlog::AddSocnetRead($blogID);
			}

			$arRes = \CBlog::GetByID($blogID, $blogGroupId);
		}
		return $arRes;
	}

	
	public function getUsersIDInGroup($iGroupID=0)
	{
		if(!$iGroupID)
		{
			return false;
		}

		$cUser = new CUser; 
		$sort_by = "ID";
		$sort_ord = "ASC";
		$arFilter = array(
		   "GROUPS_ID" => $iGroupID,
		);
		$dbUsers = $cUser->GetList($sort_by, $sort_ord, $arFilter);
		while ($arUser = $dbUsers->Fetch()) 
		{
		   $result[] = $arUser['ID'];
		}			
		
		return $result;
	}
	
		/**
	* Отправляем соообщение $sMessage в живую ленту пользователям с id из массива $arUserIDs(если он пуст, сообщение отправляется только пользователю кем инициировано создание сообщения)
	*/
	public function sendNotify( $sMessage, $arUserIDs=array() )
	{
		global $USER;

		CModule::IncludeModule("blog");
		
		$sSiteID = 's1';
		
		$iUserID = $USER->GetID();

		if(!$arUserIDs)
		{
			$arUserIDs = array($iUserID);
		}
		
		foreach(array(self::$arAdminUserGroups) as $iGroup)
		{
			//$arMasterRights[] = 'G'.$iGroup;
		}

		foreach($arUserIDs as $iID)
		{
			if(!in_array('U'.$iID, $arMasterRights))
			{
				$arMasterRights[] = 'U'.$iID;
			}
		}
		
		$arBlog = CBlog::GetByOwnerID($iUserID);
		if (!$arBlog)
		{
			$arBlog = self::createBlog($iUserID, 1, $sSiteID);
		}
		
		$arFields = array(
			"TITLE" => "Смена сценария доступа",
			"DETAIL_TEXT" => $sMessage,
			"DATE_PUBLISH" => date('d.m.Y H:i:s'),
			"PUBLISH_STATUS" => "P",
			"CATEGORY_ID" => "",
			//"PATH" => " / company / personal / user / ".$USER->GetID()." / blog /#post_id#/",
			"URL" => $arBlog['URL'],
			"PERMS_POST" => Array(),
			"PERMS_COMMENT" => Array(),
			"ENABLE_TRACKBACK"=>"Y",
			"MICRO"=>"Y",
			"HAS_PROPS"=>"Y",
			"UF_BLOG_POST_IMPRTNT"=>"1",
			"SOCNET_RIGHTS" =>$arMasterRights,
			"=DATE_CREATE" => "now()",
			"AUTHOR_ID" => $iUserID,
			"BLOG_ID" => $arBlog['ID'],
			'UF_IMPRTANT_DATE_END' => date('d.m.Y', strtotime("+1 day")).' 00:00:00' // делаем это сообщение важным на один день 
		);
		
		// создаем пост в блоге
		$newID = CBlogPost::Add($arFields);
		
		$arFields["ID"] = $newID;
		
		$arParamsNotify = Array(
			"bSoNet" => true,
			"UserID" =>$iUserID,
			"SITE_ID" => $sSiteID
			//"user_id" => $iUserID,
		);
		
		// отправляем созданный пост в живую ленту
		$logId = CBlogPost::Notify($arFields, $arBlog, $arParamsNotify);
		
		
		BXClearCache(true, \Bitrix\Socialnetwork\ComponentHelper::getBlogPostCacheDir(array(
			'TYPE' => 'posts_last',
			'SITE_ID' => $sSiteID
		)));
	}
	
	
	
		/**
	* Общая функция смены сценария
	*/
	public function changeScenario($iID)
	{
		global $USER;
		
		$arRes = self::activateScenarion($iID);
		
		if($arRes['AFTER'])
		{
			$sMessage = 'Пользователем «'.$USER->GetFullName().'» был изменен сценарий доступности портала с «'.$arRes['BEFORE'].'» на «'.$arRes['AFTER'].'»';
			
			// отправить сообщение в живую ленту			
			$arNotifyUsers = self::getUsersIDInGroup(self::$arAdminUserGroups);
			self::sendNotify($sMessage, $arNotifyUsers);
		}
	}
	
	?>

以上是关于php Поствживуюлентуbitrix24。 #CBlog ::添加#CBlogPost ::添加#CBlogPost :: Notify的主要内容,如果未能解决你的问题,请参考以下文章

php обрезаемпоследнююбукву - делаемизмножественногочислаединственное

php ОтключениескриптовистилейCF7тамгденужно

php Выводитвадмин-сайдбарпунктыменюдлякаждойнепустойрубрики

Erlangе демо

php Еслинамнужно,чтобыбылоневозможноредактироватьполе“Название”,мывносимследующеевычисление...

csharp Вставитьпеременнуюврегулярноевыражение