Exemple #1
0
	/**
	 * <p>Метод инициализирует интеграцию.</p>
	 *
	 *
	 *
	 *
	 * @param int $SOCNET_GROUP_ID  Идентификатор рабочей группы соц. сети
	 *
	 *
	 *
	 * @param int $IBLOCK_ID  Идентификатор инфо.блока
	 *
	 *
	 *
	 * @return bool 
	 *
	 *
	 * <h4>Example</h4> 
	 * <pre>
	 * &lt;?<br>// Инициализируем интеграцию<br>$SOCNET_GROUP_ID = 14;<br>$IBLOCK_ID = 3;<br><br>if (!CWikiSocnet::Init($SOCNET_GROUP_ID, $IBLOCK_ID))<br>	echo 'Ошибка. Не удалось инициализировать интеграцию.';<br>?&gt;
	 * </pre>
	 *
	 *
	 * @static
	 * @link http://dev.1c-bitrix.ru/api_help/wiki/classes/cwikisocnet/Init.php
	 * @author Bitrix
	 */
	static function Init($SOCNET_GROUP_ID, $IBLOCK_ID)
	{
		if (self::$bInit)
			return self::$bInit;

		if (!self::IsEnabledSocnet())
			return false;

		self::$iSocNetId = $SOCNET_GROUP_ID;

		// detect work group
		$arFilter = Array();
		$arFilter['IBLOCK_ID'] = $IBLOCK_ID;
		$arFilter['SOCNET_GROUP_ID'] = self::$iSocNetId;
		$arFilter['CHECK_PERMISSIONS'] = 'N';
		$rsSection = CIBlockSection::GetList(Array($by=>$order), $arFilter, true);
		$obSection = $rsSection->GetNextElement();

		if ($obSection !== false)
		{
			$arResult = $obSection->GetFields();
			self::$iCatId = $arResult['ID'];
			self::$iCatLeftBorder = $arResult['LEFT_MARGIN'];
			self::$iCatRightBorder = $arResult['RIGHT_MARGIN'];
		}
		else
		{
			$arWorkGroup = CSocNetGroup::GetById(self::$iSocNetId);

			$arFields = Array(
				'ACTIVE' => 'Y',
				'IBLOCK_ID' => $IBLOCK_ID,
				'SOCNET_GROUP_ID' => self::$iSocNetId,
				'CHECK_PERMISSIONS' => 'N',
				'NAME' => $arWorkGroup['NAME']
			);
			$CIB_S = new CIBlockSection();
			self::$iCatId = $CIB_S->Add($arFields);
			if (self::$iCatId == false)
			{
				self::$bInit = false;
				return false;
			}
			$rsSection = CIBlockSection::GetList(Array($by=>$order), $arFilter, true);
			$obSection = $rsSection->GetNextElement();
			if ($obSection == false)
			{
				self::$bInit = false;
				return false;
			}
			$arResult = $obSection->GetFields();
			self::$iCatLeftBorder = $arResult['LEFT_MARGIN'];
			self::$iCatRightBorder = $arResult['RIGHT_MARGIN'];
		}

		self::$bInit = CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, self::$iSocNetId, 'wiki');
		return self::$bInit;
	}
Exemple #2
0
 function CanUserReadGroup($userID, $groupID)
 {
     $userID = IntVal($userID);
     $groupID = IntVal($groupID);
     if ($groupID <= 0) {
         return false;
     }
     $arGroup = CSocNetGroup::GetById($groupID);
     if ($arGroup == false) {
         return false;
     }
     if ($arGroup["OPENED"] == "Y") {
         return true;
     }
     $userRoleInGroup = CSocNetUserToGroup::GetUserRole($userID, $groupID);
     if ($userRoleInGroup == false) {
         return false;
     }
     if ($userRoleInGroup == SONET_ROLES_MODERATOR || $userRoleInGroup == SONET_ROLES_OWNER || $userRoleInGroup == SONET_ROLES_USER) {
         return true;
     } else {
         return false;
     }
     return false;
 }
Exemple #3
0
?>
				</select>
			</div>

			<?php 
if ($arResult["TASK_TYPE"] != "group") {
    ?>
				<div class="filter-field">
					<label for="filter-field-employee" class="filter-field-title"><?php 
    echo GetMessage("TASKS_FILTER_WORKGROUP");
    ?>
</label>
					<?php 
    $groupName = "";
    if (intval($arParams["ADV_FILTER"]["F_GROUP_ID"]) > 0) {
        $arGroup = CSocNetGroup::GetById(intval($arParams["ADV_FILTER"]["F_GROUP_ID"]));
        if ($arGroup) {
            $groupName = $arGroup["NAME"];
        }
    }
    ?>
					<span class="webform-field webform-field-textbox<?php 
    if (!strlen($groupName)) {
        ?>
 webform-field-textbox-empty<?php 
    }
    ?>
 webform-field-textbox-clearable">
						<span class="webform-field-textbox-inner" id="task-report-filter-group">
							<input type="text" id="filter-field-group" class="webform-field-textbox" autocomplete="off" value="<?php 
    echo $groupName;
Exemple #4
0
 function SendMailMessage($MID, $arFields = array(), $strLang = false, $mailTemplate = false)
 {
     global $USER;
     $MID = intVal($MID);
     $arMessage = array();
     $arTopic = array();
     $arForum = array();
     $arFiles = array();
     $mailTemplate = $mailTemplate === false ? "NEW_FORUM_MESSAGE" : $mailTemplate;
     $event = new CEvent();
     if ($MID > 0) {
         CTimeZone::Disable();
         $arMessage = CForumMessage::GetByIDEx($MID, array("GET_TOPIC_INFO" => "Y", "GET_FORUM_INFO" => "Y", "FILTER" => "Y"));
         CTimeZone::Enable();
         $db_files = CForumFiles::GetList(array("MESSAGE_ID" => "ASC"), array("MESSAGE_ID" => $MID));
         if ($db_files && ($res = $db_files->Fetch())) {
             do {
                 $arFiles[$res["ID"]] = CFile::GetFileArray($res["FILE_ID"]);
             } while ($res = $db_files->Fetch());
         }
     }
     if (empty($arMessage)) {
         return false;
     }
     $arTopic = $arMessage["TOPIC_INFO"];
     $arForum = $arMessage["FORUM_INFO"];
     $TID = intVal($arMessage["TOPIC_ID"]);
     $FID = intVal($arMessage["FORUM_ID"]);
     if (!is_set($arFields, "FORUM_ID")) {
         $arFields["FORUM_ID"] = $arMessage["FORUM_ID"];
     }
     if (!is_set($arFields, "FORUM_NAME")) {
         $arFields["FORUM_NAME"] = $arForum["NAME"];
     }
     if (!is_set($arFields, "TOPIC_ID")) {
         $arFields["TOPIC_ID"] = $arMessage["TOPIC_ID"];
     }
     if (!is_set($arFields, "MESSAGE_ID")) {
         $arFields["MESSAGE_ID"] = $arMessage["ID"];
     }
     if (!is_set($arFields, "TOPIC_TITLE")) {
         $arFields["TOPIC_TITLE"] = $arTopic["TITLE"];
     }
     if (!is_set($arFields, "MESSAGE_DATE")) {
         $arFields["MESSAGE_DATE"] = $arMessage["POST_DATE"];
     }
     if (!is_set($arFields, "AUTHOR")) {
         $arFields["AUTHOR"] = $arMessage["AUTHOR_NAME"];
     }
     if (!is_set($arFields, "TAPPROVED")) {
         $arFields["TAPPROVED"] = $arTopic["APPROVED"];
     }
     if (!is_set($arFields, "MAPPROVED")) {
         $arFields["MAPPROVED"] = $arMessage["APPROVED"];
     }
     if (!is_set($arFields, "FROM_EMAIL")) {
         $arFields["FROM_EMAIL"] = COption::GetOptionString("forum", "FORUM_FROM_EMAIL", "*****@*****.**");
     }
     //If the message is from socialnetwork, check if mail processor exists for this social network
     if ($arTopic["SOCNET_GROUP_ID"] > 0) {
         if (CModule::IncludeModule("mail") && CModule::IncludeModule("socialnetwork")) {
             $arMailParams = CForumEMail::GetForumFilters($FID, $arTopic["SOCNET_GROUP_ID"]);
             //If the processor exists:
             if ($arMailParams) {
                 global $DB;
                 if ($arMessage["XML_ID"] == '') {
                     //check if MSG_ID field exists, generate it if not
                     $arMessage["XML_ID"] = "M" . $MID . "." . md5(uniqid()) . "@" . ($_SERVER["SERVER_NAME"] != '' ? $_SERVER["SERVER_NAME"] : $_SERVER["SERVER_ADDR"]);
                     $DB->Query("UPDATE b_forum_message SET XML_ID='" . $DB->ForSQL($arMessage["XML_ID"]) . "' WHERE ID=" . $MID);
                 }
                 //get MSG_ID topics, it would be IN_REPLY_TO
                 if ($arTopic["XML_ID"] == '') {
                     $arTopic["XML_ID"] = "T" . $TID . "." . md5(uniqid()) . "@" . ($_SERVER["SERVER_NAME"] != '' ? $_SERVER["SERVER_NAME"] : $_SERVER["SERVER_ADDR"]);
                     $DB->Query("UPDATE b_forum_topic SET XML_ID='" . $DB->ForSQL($arTopic["XML_ID"]) . "' WHERE ID=" . $TID);
                 }
                 //fill FROM_EMAIL from AUTHOR_NAME + FROM_EMAIL or AUTHOR_EMAIL or from 'b_user' by AUTHOR_ID depending on the settings of mail processor
                 if ($arMailParams['USE_EMAIL'] == 'Y' && $arMessage["AUTHOR_EMAIL"] != '') {
                     $arFields["FROM_EMAIL"] = '"' . $arMessage['AUTHOR_NAME'] . '" <' . $arMessage['AUTHOR_EMAIL'] . '>';
                 } elseif ($arMailParams['USE_EMAIL'] == 'Y' && $arMessage["EMAIL"] != '') {
                     $arFields["FROM_EMAIL"] = '"' . $arMessage['AUTHOR_NAME'] . '" <' . $arMessage['EMAIL'] . '>';
                 } else {
                     $arFields["FROM_EMAIL"] = '"' . $arMessage['AUTHOR_NAME'] . '" <' . $arMailParams['EMAIL'] . '>';
                 }
                 if ($arMessage["NEW_TOPIC"] == "Y") {
                     $arFields["=Message-Id"] = $arFields["MSG_ID"] = "<" . $arTopic["XML_ID"] . ">";
                 } else {
                     $arFields["TOPIC_TITLE"] = "Re" . ($arMessage["TOPIC_INFO"]["POSTS"] > 1 ? "[" . $arMessage["TOPIC_INFO"]["POSTS"] . "]" : "") . ": " . $arFields["TOPIC_TITLE"];
                     $arFields["=Message-Id"] = $arFields["MSG_ID"] = "<" . $arMessage["XML_ID"] . ">";
                     $arFields["=In-Reply-To"] = $arFields["IN_REPLY_TO"] = "<" . $arTopic["XML_ID"] . ">";
                 }
                 //fill REPLY_TO from the settings of the mail processor
                 $arFields["=Reply-To"] = $arFields["REPLY_TO"] = $arMailParams["EMAIL"];
                 $arFields["FORUM_EMAIL"] = $arMailParams["EMAIL"];
                 $arSocNetGroup = CSocNetGroup::GetById($arTopic["SOCNET_GROUP_ID"]);
                 $arFields["FORUM_NAME"] = $arSocNetGroup["NAME"];
                 if ($arMailParams["SUBJECT_SUF"] != '') {
                     $arFields["TOPIC_TITLE"] .= ' ' . $arMailParams["SUBJECT_SUF"];
                 }
                 if ($arMailParams["USE_SUBJECT"] == "Y") {
                     $arFields["=Subject"] = $arFields["TOPIC_TITLE"];
                 }
                 $arFields["PATH2FORUM"] = CComponentEngine::MakePathFromTemplate($arMailParams["URL_TEMPLATES_MESSAGE"], array("FID" => $arMessage["FORUM_ID"], "TID" => $arMessage["TOPIC_ID"], "TITLE_SEO" => $arMessage["TOPIC_INFO"]["TITLE_SEO"], "MID" => $arMessage["ID"]));
             } else {
                 return false;
             }
         } else {
             return false;
         }
     } else {
         $arForumSites = CForumNew::GetSites($FID);
         foreach ($arForumSites as $site_id => $path) {
             $arForumSites[$site_id] = trim(CForumNew::PreparePath2Message($arForumSites[$site_id], array("FORUM_ID" => $arMessage["FORUM_ID"], "TOPIC_ID" => $arMessage["TOPIC_ID"], "TITLE_SEO" => $arMessage["TOPIC_INFO"]["TITLE_SEO"], "MESSAGE_ID" => $arMessage["ID"], "SOCNET_GROUP_ID" => $arTopic["SOCNET_GROUP_ID"], "OWNER_ID" => $arTopic["OWNER_ID"], "PARAM1" => $arMessage["PARAM1"], "PARAM2" => $arMessage["PARAM2"])));
             if (empty($arForumSites[$site_id])) {
                 $db_lang = CSite::GetByID($site_id);
                 $arForumSites[$site_id] = "/";
                 if ($ar_lang = $db_lang->Fetch()) {
                     $arForumSites[$site_id] = $ar_lang["DIR"];
                 }
                 $arForumSites[$site_id] = COption::GetOptionString("forum", "REL_FPATH", "") . "forum/read.php?FID=#FID#&TID=#TID#&MID=#MID##message#MID#";
             }
         }
         foreach (GetModuleEvents("forum", "onBeforeMailMessageSend", true) as $arEvent) {
             if (ExecuteModuleEventEx($arEvent, array(&$mailTemplate, &$arForumSites, &$arFields, $arForum, $arTopic, $arMessage)) === false) {
                 return false;
             }
         }
     }
     /*
     		??
     		ALTER TABLE dbo.B_FORUM_MESSAGE ADD
     			MSG_ID varchar(255) NULL,
     			MAIL_MESSAGE_ID int NULL
     */
     $arFilter = array("FORUM_ID" => $FID, "TOPIC_ID_OR_NULL" => $TID, "ACTIVE" => "Y", ">=PERMISSION" => $arTopic["APPROVED"] != "Y" || $arMessage["APPROVED"] != "Y" ? "Q" : "E");
     if ($arMessage["NEW_TOPIC"] != "Y") {
         $arFilter["NEW_TOPIC_ONLY"] = "N";
     }
     if ($mailTemplate == "NEW_FORUM_MESSAGE") {
         $arFilter["LAST_SEND_OR_NULL"] = $MID;
     }
     if ($arTopic["SOCNET_GROUP_ID"] > 0) {
         $mailTemplate = "FORUM_NEW_MESSAGE_MAIL";
         $arFilter["SOCNET_GROUP_ID"] = $arTopic["SOCNET_GROUP_ID"];
     } else {
         $arFilter["SOCNET_GROUP_ID"] = false;
     }
     $db_res = CForumSubscribe::GetListEx(array("USER_ID" => "ASC"), $arFilter);
     $arID = array();
     $arSiteFields = array();
     $currentUserID = false;
     while ($res = $db_res->Fetch()) {
         // SUBSC_GET_MY_MESSAGE - Send my messages to myself.
         if ($res["SUBSC_GET_MY_MESSAGE"] == "N" && $res["USER_ID"] == $USER->GetId()) {
             continue;
         }
         // SUBSC_GROUP_MESSAGE  - Group messages.
         if ($currentUserID == $res["USER_ID"]) {
             continue;
         }
         // Check email
         if (empty($res["EMAIL"])) {
             continue;
         }
         if ($mailTemplate == "FORUM_NEW_MESSAGE_MAIL" && $res["USER_ID"] == $arMessage["AUTHOR_ID"]) {
             continue;
         }
         $currentUserID = $res["USER_ID"];
         $arFields_tmp = $arFields;
         if (!is_set($arFields_tmp, "PATH2FORUM")) {
             $arFields_tmp["PATH2FORUM"] = $arForumSites[$res["SITE_ID"]];
         }
         if (!is_set($arFields_tmp, "MESSAGE_TEXT")) {
             if (!isset(${"parser_" . $res["SITE_ID"]})) {
                 ${"parser_" . $res["SITE_ID"]} = new forumTextParser($res["SITE_ID"]);
             }
             if (empty($arSiteFields[$res["SITE_ID"]])) {
                 $arSiteFields[$res["SITE_ID"]] = $event->GetSiteFieldsArray($res["SITE_ID"]);
                 $db_site = CSite::GetByID($res["SITE_ID"]);
                 if ($db_site && ($arSite = $db_site->Fetch())) {
                     $arSiteFields[$res["SITE_ID"]] = array_merge($arSiteFields[$res["SITE_ID"]], $arSite, array("LANG_MESS" => IncludeModuleLangFile(__FILE__, $arSiteFields[$res["SITE_ID"]]["LANGUAGE_ID"], true)));
                     $arSiteFields[$res["SITE_ID"]]["ATTACHED_FILES"] = $arSiteFields[$res["SITE_ID"]]["LANG_MESS"]["F_ATTACHED_FILES"];
                 }
             }
             if (!empty($arSiteFields[$res["SITE_ID"]]["SERVER_NAME"])) {
                 ${"parser_" . $res["SITE_ID"]}->serverName = $arSiteFields[$res["SITE_ID"]]["SERVER_NAME"];
             }
             ${"parser_" . $res["SITE_ID"]}->arFiles = $arFiles;
             $POST_MESSAGE_HTML = $arMessage["POST_MESSAGE"];
             if (COption::GetOptionString("forum", "FILTER", "Y") == "Y") {
                 $POST_MESSAGE_HTML = empty($arMessage["POST_MESSAGE_FILTER"]) ? CFilterUnquotableWords::Filter($POST_MESSAGE_HTML) : $arMessage["POST_MESSAGE_FILTER"];
             }
             $arFields_tmp["MESSAGE_TEXT"] = ${"parser_" . $res["SITE_ID"]}->convert4mail($POST_MESSAGE_HTML);
             $arFields_tmp["PARSED_FILES"] = ${"parser_" . $res["SITE_ID"]}->arFilesIDParsed;
             $tmp = array_diff(array_keys($arFiles), ${"parser_" . $res["SITE_ID"]}->arFilesIDParsed);
             if (!empty($tmp)) {
                 $str = "[FILE ID=" . implode("]\n[FILE ID=", $tmp) . "]";
                 ${"parser_" . $res["SITE_ID"]}->ParserFile($str, ${"parser_" . $res["SITE_ID"]}, "mail");
                 $arFields_tmp["MESSAGE_TEXT"] .= "\n\n" . $arSiteFields[$res["SITE_ID"]]["ATTACHED_FILES"] . "\n" . $str;
             }
         }
         $arFields_tmp["RECIPIENT"] = $res["EMAIL"];
         $event->Send($mailTemplate, $res["SITE_ID"], $arFields_tmp, "N");
         $arID[] = $res["ID"];
         if (count($arID) > 255) {
             CForumSubscribe::UpdateLastSend($MID, implode(",", $arID));
             $arID = array();
         }
     }
     if (count($arID) > 0) {
         CForumSubscribe::UpdateLastSend($MID, implode(",", $arID));
     }
     return true;
 }
Exemple #5
0
					</div>
				<?php 
}
?>
				<?php 
if (sizeof($arResult["GROUPS"])) {
    ?>
					<div class="filter-field">
						<label for="filter-field-employee" class="filter-field-title"><?php 
    echo GetMessage("TASKS_REPORT_WORKGROUP");
    ?>
</label>
						<?php 
    $groupName = "";
    if (intval($arResult["FILTER"]["F_GROUP_ID"]) > 0) {
        $arGroup = CSocNetGroup::GetById(intval($arResult["FILTER"]["F_GROUP_ID"]));
        if ($arGroup) {
            $groupName = $arGroup["NAME"];
        }
    }
    ?>
						<span class="webform-field webform-field-textbox<?php 
    if (!strlen($groupName)) {
        ?>
 webform-field-textbox-empty<?php 
    }
    ?>
 webform-field-textbox-clearable">
							<span class="webform-field-textbox-inner" id="task-report-filter-group">
								<input type="text" id="filter-field-group" class="webform-field-textbox" value="<?php 
    echo $groupName;