%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/socialnetwork/classes/general/ |
Current File : //home/bitrix/www/bitrix/modules/socialnetwork/classes/general/log_counter.php |
<? class CAllSocNetLogCounter { public static function GetSubSelect2($entityId, $arParams = array()) { return CSocNetLogCounter::GetSubSelect( array( "LOG_ID" => $entityId, "TYPE" => (is_array($arParams) && !empty($arParams["TYPE"]) ? $arParams["TYPE"] : CSocNetLogCounter::TYPE_LOG_ENTRY), "CODE" => (is_array($arParams) && !empty($arParams["CODE"]) ? $arParams["CODE"] : false), "DECREMENT" => (is_array($arParams) && $arParams["DECREMENT"]), "FOR_ALL_ACCESS" => (is_array($arParams) && $arParams["FOR_ALL_ACCESS"]), "FOR_ALL_ACCESS_ONLY" => (is_array($arParams) && $arParams["FOR_ALL_ACCESS_ONLY"]), "TAG_SET" => (is_array($arParams) && !empty($arParams["TAG_SET"]) ? $arParams["TAG_SET"] : false), "MULTIPLE" => (is_array($arParams) && !empty($arParams["MULTIPLE"]) && $arParams["MULTIPLE"] == "Y" ? "Y" : "N"), "SET_TIMESTAMP" => (is_array($arParams) && !empty($arParams["SET_TIMESTAMP"]) && $arParams["SET_TIMESTAMP"] == "Y" ? "Y" : "N"), "SEND_TO_AUTHOR" => (!is_array($arParams) || !isset($arParams["SEND_TO_AUTHOR"]) || $arParams["SEND_TO_AUTHOR"] != "Y" ? "N" : "Y"), "USER_ID" => (isset($arParams["USER_ID"]) && is_array($arParams["USER_ID"]) ? $arParams["USER_ID"] : array()) ) ); } public static function GetSubSelect($entityId, $entity_type = false, $entity_id = false, $event_id = false, $created_by_id = false, $arOfEntities = false, $arAdmin = false, $transport = false, $visible = "Y", $type = CSocNetLogCounter::TYPE_LOG_ENTRY, $params = array(), $bDecrement = false, $bForAllAccess = false) { global $DB; if ( is_array($entityId) && isset($entityId["LOG_ID"]) ) { $arFields = $entityId; $entityId = intval($arFields["LOG_ID"]); $entity_type = (isset($arFields["ENTITY_TYPE"]) ? $arFields["ENTITY_TYPE"] : false); $entity_id = (isset($arFields["ENTITY_ID"]) ? $arFields["ENTITY_ID"] : false); $event_id = (isset($arFields["EVENT_ID"]) ? $arFields["EVENT_ID"] : false); $created_by_id = (isset($arFields["CREATED_BY_ID"]) ? $arFields["CREATED_BY_ID"] : false); $arOfEntities = (isset($arFields["ENTITIES"]) ? $arFields["ENTITIES"] : false); $transport = (isset($arFields["TRANSPORT"]) ? $arFields["TRANSPORT"] : false); $visible = (isset($arFields["VISIBLE"]) ? $arFields["VISIBLE"] : "Y"); $type = (isset($arFields["TYPE"]) ? $arFields["TYPE"] : CSocNetLogCounter::TYPE_LOG_ENTRY); $code = (isset($arFields["CODE"]) ? $arFields["CODE"] : false); $params = (isset($arFields["PARAMS"]) ? $arFields["PARAMS"] : array()); $bDecrement = (isset($arFields["DECREMENT"]) ? $arFields["DECREMENT"] : false); $bMultiple = (isset($arFields["MULTIPLE"]) && $arFields["MULTIPLE"] == "Y"); $bSetTimestamp = (isset($arFields["SET_TIMESTAMP"]) && $arFields["SET_TIMESTAMP"] == "Y"); $IsForAllAccessOnly = false; if (isset($arFields["FOR_ALL_ACCESS_ONLY"])) { $IsForAllAccessOnly = ($arFields["FOR_ALL_ACCESS_ONLY"] ? "Y" : "N"); } $bForAllAccess = ( $IsForAllAccessOnly == "Y" ? true : (isset($arFields["FOR_ALL_ACCESS"]) ? $arFields["FOR_ALL_ACCESS"] : false) ); $tagSet = (isset($arFields["TAG_SET"]) ? $arFields["TAG_SET"] : false); $bSendToAuthor = ( !isset($arFields["SEND_TO_AUTHOR"]) || $arFields["SEND_TO_AUTHOR"] != 'Y' ? false : true ); $arUserIdToIncrement = (isset($arFields["USER_ID"]) && is_array($arFields["USER_ID"]) ? $arFields["USER_ID"] : array()); } else { $bSendToAuthor = $IsForAllAccessOnly = $bMultiple = $tagSet = $code = $bSetTimestamp = false; $arUserIdToIncrement = array(); } if (intval($entityId) <= 0) { return false; } $arSocNetAllowedSubscribeEntityTypesDesc = CSocNetAllowed::GetAllowedEntityTypesDesc(); $bGroupCounters = ($type === "group"); $params = ( is_array($params) ? $params : array() ); $params['CODE'] = ( !empty($params['CODE']) ? $params['CODE'] : ( $code ? $code : ( $bGroupCounters ? "SLR0.GROUP_CODE" : "'".CUserCounter::LIVEFEED_CODE.($bMultiple ? $type.$entityId : "")."'" ) ) ); if ( $type == CSocNetLogCounter::TYPE_LOG_ENTRY && ($arLog = CSocNetLog::GetByID($entityId)) ) { $logId = $entityId; $entity_type = $arLog["ENTITY_TYPE"]; $entity_id = $arLog["ENTITY_ID"]; $event_id = $arLog["EVENT_ID"]; $created_by_id = $arLog["USER_ID"]; $log_user_id = $arLog["USER_ID"]; } elseif ( $type == CSocNetLogCounter::TYPE_LOG_COMMENT && ($arLogComment = CSocNetLogComments::GetByID($entityId)) ) { $entity_type = $arLogComment["ENTITY_TYPE"]; $entity_id = $arLogComment["ENTITY_ID"]; $event_id = $arLogComment["EVENT_ID"]; $created_by_id = $arLogComment["USER_ID"]; $logId = $arLogComment["LOG_ID"]; // recalculate log_id $log_user_id = $arLogComment["LOG_USER_ID"]; } else { $logId = $entityId; $log_user_id = 0; } if ( !in_array($entity_type, CSocNetAllowed::GetAllowedEntityTypes()) || intval($entity_id) <= 0 || strlen($event_id) <= 0 ) { return false; } if (!$arOfEntities) { if ( array_key_exists($entity_type, $arSocNetAllowedSubscribeEntityTypesDesc) && array_key_exists("HAS_MY", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]) && $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["HAS_MY"] == "Y" && array_key_exists("CLASS_OF", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]) && array_key_exists("METHOD_OF", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]) && strlen($arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["CLASS_OF"]) > 0 && strlen($arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["METHOD_OF"]) > 0 && method_exists($arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["CLASS_OF"], $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["METHOD_OF"]) ) { $arOfEntities = call_user_func(array($arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["CLASS_OF"], $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["METHOD_OF"]), $entity_id); } else { $arOfEntities = array(); } } if ( ( !defined("DisableSonetLogVisibleSubscr") || DisableSonetLogVisibleSubscr !== true ) && $visible && strlen($visible) > 0 ) { $key_res = CSocNetGroup::GetFilterOperation($visible); $strField = $key_res["FIELD"]; $strNegative = $key_res["NEGATIVE"]; $strOperation = $key_res["OPERATION"]; $visibleFilter = "AND (".($strNegative == "Y" ? " SLE.VISIBLE IS NULL OR NOT " : "")."(SLE.VISIBLE ".$strOperation." '".$DB->ForSql($strField)."'))"; $transportFilter = ""; } else { $visibleFilter = ""; if ( $transport && strlen($transport) > 0 ) { $key_res = CSocNetGroup::GetFilterOperation($transport); $strField = $key_res["FIELD"]; $strNegative = $key_res["NEGATIVE"]; $strOperation = $key_res["OPERATION"]; $transportFilter = "AND (".($strNegative == "Y" ? " SLE.TRANSPORT IS NULL OR NOT " : "")."(SLE.TRANSPORT ".$strOperation." '".$DB->ForSql($strField)."'))"; } else { $transportFilter = ""; } } $followJoin = $followWhere = ""; if ( $type == CSocNetLogCounter::TYPE_LOG_COMMENT && ( !defined("DisableSonetLogFollow") || DisableSonetLogFollow !== true) ) { $default_follow = COption::GetOptionString("socialnetwork", "follow_default_type", "Y"); if ($default_follow == "Y") { $followWhere = " AND ( NOT EXISTS (SELECT USER_ID FROM b_sonet_log_follow WHERE USER_ID = U.ID AND TYPE='N' AND (CODE = 'L".$logId."' OR CODE = '**')) OR EXISTS (SELECT USER_ID FROM b_sonet_log_follow WHERE USER_ID = U.ID AND TYPE='Y' AND CODE = 'L".$logId."') ) "; } else { $followJoin = " INNER JOIN b_sonet_log_follow LFW ON LFW.USER_ID = U.ID AND (LFW.CODE = 'L".$logId."' OR LFW.CODE = '**') LEFT JOIN b_sonet_log_follow LFW2 ON LFW2.USER_ID = U.ID AND (LFW2.CODE = 'L".$logId."' AND LFW2.TYPE = 'N') "; $followWhere = " AND (LFW.USER_ID IS NOT NULL AND LFW.TYPE = 'Y') AND LFW2.USER_ID IS NULL "; } } $viewJoin = " LEFT JOIN b_sonet_log_view LFV ON LFV.USER_ID = U.ID AND LFV.EVENT_ID = '".$DB->ForSql($event_id)."'"; $viewWhere = "AND (LFV.USER_ID IS NULL OR LFV.TYPE = 'Y')"; $strOfEntities = ( is_array($arOfEntities) && count($arOfEntities) > 0 ? "U.ID IN (".implode(",", $arOfEntities).")" : "" ); if (!empty($arUserIdToIncrement)) { $userWhere = "AND U.ID IN (".implode(",", $arUserIdToIncrement).")"; } else { $userWhere = ( !$bGroupCounters && !IsModuleInstalled("intranet") ? ( COption::GetOptionString("socialnetwork", "sonet_log_smart_filter", "N") == "Y" ? " AND ( 0=1 OR ( ( SLSF.USER_ID IS NULL OR SLSF.TYPE = 'Y' ) ".(!$bForAllAccess ? "AND (UA.ACCESS_CODE = SLR.GROUP_CODE)" : "")." AND ( SLR.GROUP_CODE LIKE 'SG%' OR SLR.GROUP_CODE = 'U".$log_user_id."' OR SLR.GROUP_CODE = ".$DB->Concat("'U'", ($DB->type == "MSSQL" ? "CAST(U.ID as varchar(17))" : "U.ID"))." ) ) OR ( SLSF.TYPE <> 'Y' AND ( SLR.GROUP_CODE IN ('AU', 'G2') ".(!$bForAllAccess ? "OR (UA.ACCESS_CODE = SLR.GROUP_CODE)" : "")." ) ) ) " : " AND ( 0=1 OR ( ( SLSF.USER_ID IS NULL OR SLSF.TYPE <> 'Y' ) AND ( SLR.GROUP_CODE IN ('AU', 'G2') ".($bForAllAccess ? "" : " OR (UA.ACCESS_CODE = SLR.GROUP_CODE)")." ) ) OR ( SLSF.TYPE = 'Y' ".($bForAllAccess ? "" : "AND (UA.ACCESS_CODE = SLR.GROUP_CODE)")." AND ( SLR.GROUP_CODE LIKE 'SG%' OR SLR.GROUP_CODE = 'U".$log_user_id."' OR SLR.GROUP_CODE = ".$DB->Concat("'U'", ($DB->type == "MSSQL" ? "CAST(U.ID as varchar(17))" : "U.ID"))." ) ) ) " ) : " AND ( 0=1 ".( $IsForAllAccessOnly != "N" || $bForAllAccess ? "OR (SLR.GROUP_CODE IN ('AU', 'G2'))" : "" )." ".( !$bForAllAccess && $IsForAllAccessOnly != "Y" ? " OR (UA.ACCESS_CODE = SLR.GROUP_CODE) " : "" )." ) " ); } $strSQL = " SELECT DISTINCT U.ID as ID ,".($bDecrement ? "-1" : "1")." as CNT ,".$DB->IsNull("SLS.SITE_ID", "'**'")." as SITE_ID ,".$params['CODE']." as CODE, 0 as SENT ".($tagSet ? ", '".$DB->ForSQL($tagSet)."' as TAG" : "")." ".($bSetTimestamp ? ", ".$DB->CurrentTimeFunction()." as TIMESTAMP_X" : "")." FROM b_user U INNER JOIN b_sonet_log_right SLR ON SLR.LOG_ID = ".$logId." ".($bGroupCounters ? "INNER JOIN b_sonet_log_right SLR0 ON SLR0.LOG_ID = SLR.LOG_ID ": "")." ".( !$bForAllAccess ? "INNER JOIN b_user_access UA ON UA.USER_ID = U.ID" : "" )." LEFT JOIN b_sonet_log_site SLS ON SLS.LOG_ID = SLR.LOG_ID ".(strlen($followJoin) > 0 ? $followJoin : "")." ".(strlen($viewJoin) > 0 ? $viewJoin : "")." ".(!$bGroupCounters && !IsModuleInstalled("intranet") ? "LEFT JOIN b_sonet_log_smartfilter SLSF ON SLSF.USER_ID = U.ID " : "")." WHERE U.ACTIVE = 'Y' AND U.LAST_ACTIVITY_DATE IS NOT NULL AND U.LAST_ACTIVITY_DATE > ".CSocNetLogCounter::dbWeeksAgo(2)." AND CASE WHEN U.EXTERNAL_AUTH_ID IN ('".implode("','", \Bitrix\Main\UserTable::getExternalUserTypes())."') THEN 'N' ELSE 'Y' END = 'Y' ".( ( $type == CSocNetLogCounter::TYPE_LOG_COMMENT || ( array_key_exists("USE_CB_FILTER", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]) && $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["USE_CB_FILTER"] == "Y" ) ) && intval($created_by_id) > 0 && !$bSendToAuthor ? "AND U.ID <> ".$created_by_id : "" )." ".($bGroupCounters ? "AND (SLR0.GROUP_CODE like 'SG%' AND SLR0.GROUP_CODE NOT LIKE 'SG%\_%')": ""). $userWhere." ". (strlen($followWhere) > 0 ? $followWhere : ""). (strlen($viewWhere) > 0 ? $viewWhere : "")." "; if($bGroupCounters) { return $strSQL; } if ( strlen($visibleFilter) > 0 || strlen($transportFilter) > 0 ) { $strSQL .= " AND ( EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_CB = 'N' AND SLE.ENTITY_ID = ".$entity_id." AND SLE.EVENT_ID = '".$event_id."' ".$transportFilter." ".$visibleFilter." )"; if ( array_key_exists("USE_CB_FILTER", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]) && $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["USE_CB_FILTER"] == "Y" && intval($created_by_id) > 0 ) { $strSQL .= " OR ( EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_CB = 'Y' AND SLE.ENTITY_ID = ".$created_by_id." AND SLE.EVENT_ID = '".$event_id."' ".$transportFilter." ".$visibleFilter." ) )"; } $strSQL .= " OR ( ( NOT EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_CB = 'N' AND SLE.ENTITY_ID = ".$entity_id." AND SLE.EVENT_ID = '".$event_id."' ) OR EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_CB = 'N' AND SLE.ENTITY_ID = ".$entity_id." AND SLE.EVENT_ID = '".$event_id."' AND ".($visibleFilter ? "SLE.VISIBLE = 'I'" : "SLE.TRANSPORT = 'I'")." ) )"; if ( array_key_exists("USE_CB_FILTER", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]) && $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["USE_CB_FILTER"] == "Y" && intval($created_by_id) > 0 ) { $strSQL .= " AND ( NOT EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_CB = 'Y' AND SLE.ENTITY_ID = ".$created_by_id." AND SLE.EVENT_ID = '".$event_id."' ) OR EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_CB = 'Y' AND SLE.ENTITY_ID = ".$created_by_id." AND SLE.EVENT_ID = '".$event_id."' AND ".($visibleFilter ? "SLE.VISIBLE = 'I'" : "SLE.TRANSPORT = 'I'")." ) )"; } $strSQL .= " AND ( EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_CB = 'N' AND SLE.ENTITY_ID = ".$entity_id." AND SLE.EVENT_ID = 'all' ".$transportFilter." ".$visibleFilter." )"; if ( array_key_exists("USE_CB_FILTER", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]) && $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["USE_CB_FILTER"] == "Y" && intval($created_by_id) > 0 ) { $strSQL .= " OR ( EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_CB = 'Y' AND SLE.ENTITY_ID = ".$created_by_id." AND SLE.EVENT_ID = 'all' ".$transportFilter." ".$visibleFilter." ) )"; } $strSQL .= " OR ( ( NOT EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_CB = 'N' AND SLE.ENTITY_ID = ".$entity_id." AND SLE.EVENT_ID = 'all' ) OR EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_CB = 'N' AND SLE.ENTITY_ID = ".$entity_id." AND SLE.EVENT_ID = 'all' AND ".($visibleFilter ? "SLE.VISIBLE = 'I'" : "SLE.TRANSPORT = 'I'")." ) ) AND "; if ( array_key_exists("USE_CB_FILTER", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]) && $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["USE_CB_FILTER"] == "Y" && intval($created_by_id) > 0 ) { $strSQL .= " ( NOT EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_CB = 'Y' AND SLE.ENTITY_ID = ".$created_by_id." AND SLE.EVENT_ID = 'all' ) OR EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_CB = 'Y' AND SLE.ENTITY_ID = ".$created_by_id." AND SLE.EVENT_ID = 'all' AND ".($visibleFilter ? "SLE.VISIBLE = 'I'" : "SLE.TRANSPORT = 'I'")." ) ) AND ( "; } if (strlen($strOfEntities) > 0) { $strSQL .= " ( ".$strOfEntities." AND ( EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_ID = 0 AND SLE.ENTITY_MY = 'Y' AND SLE.EVENT_ID = '".$event_id."' ".$transportFilter." ".$visibleFilter." ) OR ( ( EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_ID = 0 AND SLE.ENTITY_MY = 'Y' AND SLE.EVENT_ID = '".$event_id."' AND ".($visibleFilter ? "SLE.VISIBLE = 'I'" : "SLE.TRANSPORT = 'I'")." ) OR NOT EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_ID = 0 AND SLE.ENTITY_MY = 'Y' AND SLE.EVENT_ID = '".$event_id."' ) ) AND ( EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_ID = 0 AND SLE.ENTITY_MY = 'Y' AND SLE.EVENT_ID = 'all' ".$transportFilter." ".$visibleFilter." ) ) ) ) ) OR "; } $strSQL .= " ( EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_ID = 0 AND SLE.ENTITY_MY = 'N' AND SLE.EVENT_ID = '".$event_id."' ".$transportFilter." ".$visibleFilter." ) OR ( ( EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_ID = 0 AND SLE.ENTITY_MY = 'N' AND SLE.EVENT_ID = '".$event_id."' AND ".($visibleFilter ? "SLE.VISIBLE = 'I'" : "SLE.TRANSPORT = 'I'")." ) OR NOT EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_ID = 0 AND SLE.ENTITY_MY = 'N' AND SLE.EVENT_ID = '".$event_id."' ) ) AND ( EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_ID = 0 AND SLE.ENTITY_MY = 'N' AND SLE.EVENT_ID = 'all' ".$transportFilter." ".$visibleFilter." ) OR EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_ID = 0 AND SLE.ENTITY_MY = 'N' AND SLE.EVENT_ID = 'all' AND ".($visibleFilter ? "SLE.VISIBLE = 'I'" : "SLE.TRANSPORT = 'I'")." ) OR NOT EXISTS( SELECT ID FROM b_sonet_log_events SLE WHERE SLE.USER_ID = U.ID AND SLE.ENTITY_TYPE = '".$entity_type."' AND SLE.ENTITY_ID = 0 AND SLE.ENTITY_MY = 'N' AND SLE.EVENT_ID = 'all' ) ) ) )"; if ( array_key_exists("USE_CB_FILTER", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]) && $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["USE_CB_FILTER"] == "Y" && intval($created_by_id) > 0 ) $strSQL .=" )"; $strSQL .=" ) ) ) )"; } return $strSQL; } function GetValueByUserID($user_id, $site_id = SITE_ID) { global $DB; $user_id = intval($user_id); if ($user_id <= 0) return false; $strSQL = " SELECT SUM(CNT) CNT FROM b_sonet_log_counter WHERE USER_ID = ".$user_id." AND (SITE_ID = '".$site_id."' OR SITE_ID = '**') AND CODE = '**' "; $dbRes = $DB->Query($strSQL, false, "File: ".__FILE__."<br>Line: ".__LINE__); if ($arRes = $dbRes->Fetch()) return $arRes["CNT"]; else return 0; } function GetCodeValuesByUserID($user_id, $site_id = SITE_ID) { global $DB; $result = array(); $user_id = intval($user_id); if($user_id > 0) { $strSQL = " SELECT CODE, SUM(CNT) CNT FROM b_sonet_log_counter WHERE USER_ID = ".$user_id." AND (SITE_ID = '".$site_id."' OR SITE_ID = '**') GROUP BY CODE "; $dbRes = $DB->Query($strSQL, false, "File: ".__FILE__."<br>Line: ".__LINE__); while ($arRes = $dbRes->Fetch()) $result[$arRes["CODE"]] = $arRes["CNT"]; } return $result; } function GetLastDateByUserAndCode($user_id, $site_id = SITE_ID, $code = "**") { global $DB; $result = 0; $user_id = intval($user_id); if($user_id > 0) { $strSQL = " SELECT ".$DB->DateToCharFunction("LAST_DATE", "FULL")." LAST_DATE FROM b_sonet_log_counter WHERE USER_ID = ".$user_id." AND (SITE_ID = '".$DB->ForSql($site_id)."' OR SITE_ID = '**') AND CODE = '".$DB->ForSql($code)."' "; $dbRes = $DB->Query($strSQL, false, "File: ".__FILE__."<br>Line: ".__LINE__); if ($arRes = $dbRes->Fetch()) $result = MakeTimeStamp($arRes["LAST_DATE"]); } return $result; } function GetList($arFilter = Array(), $arSelectFields = array()) { global $DB; if (count($arSelectFields) <= 0) $arSelectFields = array("LAST_DATE", "PAGE_SIZE", "PAGE_LAST_DATE_1"); // FIELDS --> $arFields = array( "USER_ID" => Array("FIELD" => "SLC.USER_ID", "TYPE" => "int"), "SITE_ID" => Array("FIELD" => "SLC.SITE_ID", "TYPE" => "string"), "CODE" => Array("FIELD" => "SLC.CODE", "TYPE" => "string"), "LAST_DATE" => Array("FIELD" => "SLC.LAST_DATE", "TYPE" => "datetime"), "PAGE_SIZE" => array("FIELD" => "SLC.PAGE_SIZE", "TYPE" => "int"), "PAGE_LAST_DATE_1" => Array("FIELD" => "SLC.PAGE_LAST_DATE_1", "TYPE" => "datetime"), ); // <-- FIELDS $arSqls = CSocNetGroup::PrepareSql($arFields, array(), $arFilter, false, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); $strSql = "SELECT ".$arSqls["SELECT"]." ". "FROM b_sonet_log_counter SLC ". " ".$arSqls["FROM"]." "; if (strlen($arSqls["WHERE"]) > 0) $strSql .= "WHERE ".$arSqls["WHERE"]." "; $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); return $dbRes; } } ?>