• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/componenthelper.php
  • Класс: BitrixSocialnetworkComponentHelper
  • Вызов: ComponentHelper::createUserBlog
static function createUserBlog($params)
{
	$result = false;

	if (!Loader::includeModule('blog'))
	{
		throw new MainSystemException("Could not load 'blog' module.");
	}

	if (
		!isset($params["BLOG_GROUP_ID"], $params["USER_ID"], $params["SITE_ID"])
		|| (int)$params["BLOG_GROUP_ID"] <= 0
		|| (int)$params["USER_ID"] <= 0
		|| (string)$params["SITE_ID"] === ''
	)
	{
		return false;
	}

	if (
		!isset($params["PATH_TO_BLOG"])
		|| $params["PATH_TO_BLOG"] == ''
	)
	{
		$params["PATH_TO_BLOG"] = "";
	}

	$connection = Application::getConnection();
	$helper = $connection->getSqlHelper();

	$fields = array(
		"=DATE_UPDATE" => $helper->getCurrentDateTimeFunction(),
		"=DATE_CREATE" => $helper->getCurrentDateTimeFunction(),
		"GROUP_ID" => (int)$params["BLOG_GROUP_ID"],
		"ACTIVE" => "Y",
		"OWNER_ID" => (int)$params["USER_ID"],
		"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",
		"PERMS_POST" => Array(
			1 => "I",
			2 => "I"
		),
		"PERMS_COMMENT" => Array(
			1 => "P",
			2 => "P"
		)
	);

	$res = BitrixMainUserTable::getList(array(
		'order' => array(),
		'filter' => array(
			"ID" => $params["USER_ID"]
		),
		'select' => array("NAME", "LAST_NAME", "LOGIN")
	));

	if ($user = $res->fetch())
	{
		$fields["NAME"] = Loc::getMessage("BLG_NAME")." ".(
			$user["NAME"]."".$user["LAST_NAME"] === ''
				? $user["LOGIN"]
				: $user["NAME"]." ".$user["LAST_NAME"]
		);

		$fields["URL"] = str_replace(" ", "_", $user["LOGIN"])."-blog-".$params["SITE_ID"];
		$urlCheck = preg_replace("/[^a-zA-Z0-9_-]/i", "", $fields["URL"]);
		if ($urlCheck !== $fields["URL"])
		{
			$fields["URL"] = "u".$params["USER_ID"]."-blog-".$params["SITE_ID"];
		}

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

		$fields["PATH"] = CComponentEngine::makePathFromTemplate(
			$params["PATH_TO_BLOG"],
			array(
				"blog" => $fields["URL"],
				"user_id" => $fields["OWNER_ID"]
			)
		);

		if ($blogID = CBlog::add($fields))
		{
			BXClearCache(true, "/blog/form/blog/");

			$rightsFound = false;

			$featureOperationPerms = CSocNetFeaturesPerms::getOperationPerm(
				SONET_ENTITY_USER,
				$fields["OWNER_ID"],
				"blog",
				"view_post"
			);

			if ($featureOperationPerms === SONET_RELATIONS_TYPE_ALL)
			{
				$rightsFound = true;
			}

			if ($rightsFound)
			{
				CBlog::addSocnetRead($blogID);
			}

			$result = CBlog::getByID($blogID);
		}
	}

	return $result;
}