Example #1
0
<?

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
	die();
if (CModule::IncludeModuleEx('prmedia.treelikecomments') != MODULE_DEMO_EXPIRED)
{

	if ($this->StartResultCache($arParams['CACHE_TIME']))
	{
		CModule::IncludeModule("prmedia.treelikecomments");
		CModule::IncludeModule("iblock");

		$arResult['TITLE'] = $arParams['TITLE'];

		$res = CTreelikeComments::getPopularElements($arParams['COUNT']);
		while ($arRes = $res->GetNext())
		{
			$element = CIBlockElement::GetByID($arRes['OBJECT_ID']);
			if ($arElement = $element->GetNext())
			{

				$detailURL = $arParams['DETAIL_PAGE_URL'];
				if (preg_match('/ID/i', $detailURL))
					$detailURL = str_replace('#ID#', $arElement['ID'], $detailURL);
				if (preg_match('/CODE/i', $detailURL))
					$detailURL = str_replace('#CODE#', $arElement['CODE'], $detailURL);
				if (preg_match('/DETAIL_PAGE_URL/i', $detailURL))
					$detailURL = str_replace('#DETAIL_PAGE_URL#', $arElement['DETAIL_PAGE_URL'], $detailURL);
				if (preg_match('/SECTION_ID/i', $detailURL))
					$detailURL = str_replace('#SECTION_ID#', $arElement['IBLOCK_SECTION_ID'], $detailURL);
				if (preg_match('/SECTION_CODE/i', $detailURL))
Example #2
0
	public static function import_cancel()
	{
		$moduleId = 'prmedia.treelikecomments';

		// retrieve or init session storage
		$sessionStorage = $_SESSION['tlc_import_cancel'];
		if ($_REQUEST['start'] == 'Y')
		{
			$sessionStorage = array(
				'processing_time' => time(),
				'current_count' => 0,
				'total_count' => CTreelikeForumImporter::getImportedCount()
			);
		}


		// import cancel comments...
		$obComment = new CTreelikeComments;
		global $DB;
		$is_finish = true;
		$currentTime = time();
		$rsCommentId = $DB->Query('SELECT COMMENT_ID FROM prmedia_treelike_comments_import_forum');
		while ($arCommentId = $rsCommentId->Fetch())
		{
			$is_finish = false;
			$commentId = intval($arCommentId['COMMENT_ID']);
			$obComment->Delete($commentId);
			CTreelikeForumImporter::removeImportedComment($commentId);
			$sessionStorage['current_count']++;

			// one step is one second
			if ($currentTime != time())
			{
				break;
			}
		}


		if ($is_finish)
		{
			// go to finish step
			echo '<script>document.getElementsByClassName("wizard-next-button")[0].click();</script>';
			CTreelikeForumImporter::clearCache();
			return;
		}

		// progress message
		$text = GetMessage('PRMEDIA_WIZARDS_IMPORT_CANCEL_FORUM_PROGRESS_MESSAGE');
		$arReplace = array(
			"#IMPORTED#" => $sessionStorage['current_count'],
			"#COUNT#" => $sessionStorage['total_count'],
			"#TIME#" => gmdate("i:s", time() - $sessionStorage['processing_time'])
		);
		$progressMessage = str_replace(array_keys($arReplace), $arReplace, $text);
		CAdminMessage::ShowMessage(array(
			"TYPE" => "PROGRESS",
			"MESSAGE" => GetMessage('PRMEDIA_SS_DIST_CANCEL_PROGRESS_TITLE'),
			"DETAILS" => $progressMessage,
			"HTML" => true,
			"PROGRESS_VALUE" => $sessionStorage['current_count'],
			"PROGRESS_TOTAL" => $sessionStorage['total_count']
		));
		echo "<script>jsPrmediaCommentImporter.update();</script>";

		$_SESSION['tlc_import_cancel'] = $sessionStorage;
	}
Example #3
0
	if ($action == 'deactivate' && isset($id_element))
	{
		$DB->query("UPDATE prmedia_treelike_comments SET ACTIVATED = 0 WHERE ID = $id_element");

		$objectId = $obComment->GetObjectData($id_element);
		@$CACHE_MANAGER->ClearByTag("prmedia_treelike_comments_" . $objectId);

		LocalRedirect('/bitrix/admin/tc_comment_list.php?result=deactivated');
	}

	if (in_array($action, array("ban", "ban_delete")) && isset($id_element))
	{
		// add user ip into ban
		$elementId = 5;
		$obComment = new CTreelikeComments;
		$rsComment = $obComment->GetByID($id_element);
		if ($arComment = $rsComment->Fetch())
		{
			$addr = $arComment['REMOTE_ADDR'];
			$ips = trim(COption::GetOptionString("prmedia.treelikecomments", "ban", ""));
			$arIPs = explode(",", $ips);
			foreach ($arIPs as $key => $ip)
			{
				$ip = trim($ip);
				if (empty($ip))
				{
					unset($arIPs[$key]);
					continue;
				}
				$arIPs[$key] = trim($ip);
Example #4
0
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/components/prmedia/treelike_comments/lang/ru/ajax_actions.php");
?>

<?

$MODULE_ID = "prmedia.treelikecomments";
CModule::IncludeModule($MODULE_ID);

$AxObject = new CTreelikeComments;
global $CACHE_MANAGER;
global $USER;


// activate (moderator action)
if(isset($_POST['ACTIVATE_ON']))
{
    $objectID = $AxObject->GetObjectData($_POST['ACTIVATE_ON']);
    $AxObject->Activate($_POST['ACTIVATE_ON']);
    @$CACHE_MANAGER->ClearByTag("prmedia_treelike_comments_".$objectID);
}


// vote up
if(isset($_POST['VoteUp']))
{
	if(!$AxObject->IsUserVoted($_POST['VoteUp'], $USER->GetID()))
	{
		$users = array(
			"USER_ID" => $USER->GetID(),
Example #5
0
<?

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/prmedia.treelikecomments/include.php");
IncludeModuleLangFile(__FILE__);
$APPLICATION->SetTitle(GetMessage("PRMEDIA_TC_COMMENT_EDIT_TITLE"));
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php");
CJSCore::Init(array("jquery"));

$ID = $_GET['COMMENT_ID'];

$comment = new CTreelikeComments;

$aTabs = array(
	array("DIV" => "edit1", "TAB" => GetMessage("PRMEDIA_TC_COMMENT_EDIT"), "ICON" => "ib_settings", "TITLE" => GetMessage("PRMEDIA_TC_COMMENT")),
);
$tabControl = new CAdminTabControl("tabControl", $aTabs);

if($REQUEST_METHOD == "POST")
{
	if(trim($_POST["AUTHOR_NAME"]) == "")
		$_POST["AUTHOR_NAME"] = NULL;
		
	$arUpdate = array(
		"OBJECT_ID" => intval($_POST["OBJECT_ID"]),
		"AUTHOR_NAME" => $_POST["AUTHOR_NAME"],
		"COMMENT" => trim($_POST["COMMENT"]),
		"ACTIVATED" => intval($_POST["ACTIVATED"]),
	);
            
	$comment->Update($_POST['currentID'], $arUpdate);
 /**
  * Checking treelike comment for spam
  * @param &array Comment fields to check
  * @return null|boolean NULL when success or FALSE when spam detected
  */
 function OnBeforePrmediaCommentAddHandler(&$arFields)
 {
     global $APPLICATION, $USER;
     $ct_status = COption::GetOptionString('cleantalk.antispam', 'status', '0');
     $ct_comment_treelike = COption::GetOptionString('cleantalk.antispam', 'form_comment_treelike', '0');
     if ($ct_status == 1 && $ct_comment_treelike == 1) {
         if ($USER->IsAdmin()) {
             return;
         }
         // Skip authorized user with more than 5 approved comments
         if ($USER->IsAuthorized()) {
             $approved_comments = CTreelikeComments::GetList(array('ID' => 'ASC'), array('USER_ID' => $arFields['USER_ID'], 'ACTIVATED' => 1), '', TRUE);
             if (intval($approved_comments) > 5) {
                 return;
             }
         }
         $aComment = array();
         $aComment['type'] = 'comment';
         $aComment['sender_email'] = isset($arFields['EMAIL']) ? $arFields['EMAIL'] : '';
         $aComment['sender_nickname'] = isset($arFields['AUTHOR_NAME']) ? $arFields['AUTHOR_NAME'] : '';
         $aComment['message_title'] = '';
         $aComment['message_body'] = isset($arFields['COMMENT']) ? $arFields['COMMENT'] : '';
         $aComment['example_title'] = '';
         $aComment['example_body'] = '';
         $aComment['example_comments'] = '';
         if (COption::GetOptionString('cleantalk.antispam', 'form_send_example', '0') == 1) {
             // Find last 10 approved comments
             $db_res = CTreelikeComments::GetList(array('DATE' => 'DESC'), array('OBJECT_ID_NUMBER' => $arFields['OBJECT_ID'], 'ACTIVATED' => 1), 10);
             while ($ar_res = $db_res->Fetch()) {
                 $aComment['example_comments'] .= $ar_res['COMMENT'] . "\n\n";
             }
         }
         $aResult = self::CheckAllBefore($aComment, TRUE);
         if (isset($aResult) && is_array($aResult)) {
             if ($aResult['errno'] == 0) {
                 if ($aResult['allow'] == 1) {
                     // Not spammer - just return;
                     return;
                 } else {
                     if ($aResult['stop_queue'] == 1) {
                         // Spammer and stop_queue - return false and throw
                         if (preg_match('//u', $aResult['ct_result_comment'])) {
                             $err_str = preg_replace('/^[^\\*]*?\\*\\*\\*|\\*\\*\\*[^\\*]*?$/iu', '', $aResult['ct_result_comment']);
                             $err_str = preg_replace('/<[^<>]*>/iu', '', $err_str);
                         } else {
                             $err_str = preg_replace('/^[^\\*]*?\\*\\*\\*|\\*\\*\\*[^\\*]*?$/i', '', $aResult['ct_result_comment']);
                             $err_str = preg_replace('/<[^<>]*>/i', '', $err_str);
                         }
                         $APPLICATION->ThrowException($err_str);
                         return FALSE;
                     } else {
                         // Spammer and NOT stop_queue - to manual approvement
                         // ACTIVATED = 0
                         /*            
                                                     // doesn't work - TreeLike Comments uses
                                                     // deprecated ExecuteModuleEvent
                                                     // instead of ExecuteModuleEventEx
                                                     // $arFields are not passwd by ref
                                                     // (See source - $args[] = func_get_arg($i))
                                                     // so I cannot change 'ACTIVATED'
                                                     $arFields['ACTIVATED'] = 0;
                                                     return;
                         */
                         if (preg_match('//u', $aResult['ct_result_comment'])) {
                             $err_str = preg_replace('/^[^\\*]*?\\*\\*\\*|\\*\\*\\*[^\\*]*?$/iu', '', $aResult['ct_result_comment']);
                             $err_str = preg_replace('/<[^<>]*>/iu', '', $err_str);
                         } else {
                             $err_str = preg_replace('/^[^\\*]*?\\*\\*\\*|\\*\\*\\*[^\\*]*?$/i', '', $aResult['ct_result_comment']);
                             $err_str = preg_replace('/<[^<>]*>/i', '', $err_str);
                         }
                         $APPLICATION->ThrowException($err_str);
                         return FALSE;
                     }
                 }
             }
         }
     }
 }
Example #7
0
function getComments($PARENT_ID, $DEPTH_LEVEL, &$comments, &$left_margin, $date_format, $userlink, $commentLink, $max_depth_level, $asName, &$arIDs, $templateFolder, $canModify)
{
  $arFilter = array("OBJECT_ID_NUMBER" => OBJECT_ID, "PARENT_ID" => $PARENT_ID);
	$res = CTreelikeComments::GetList(array("ID" => "DESC"), $arFilter);

	while ($ob = $res->GetNext())
	{
		if ($ob['USER_ID'] != NULL)
		{
			$link = $userlink;

			if (preg_match('/USER_LOGIN/i', $link))
			{
				$userlogin_before = "#USER_LOGIN#";
				$userlogin_after = $ob['LOGIN'];

				$link = str_replace($userlogin_before, $userlogin_after, $link);
			}
			if (preg_match('/USER_ID/i', $link))
			{
				$id_before = "#USER_ID#";
				$id_after = $ob['USER_ID'];

				$link = str_replace($id_before, $id_after, $link);
			}
			if (preg_match('/PERSONAL_WWW/i', $link))
			{
				$id_before = "#PERSONAL_WWW#";
				$id_after = "";
				$arFilter = array(
					"ID" => $ob['USER_ID']
				);
				$arSelectParams = array(
					"FIELDS" => array(
						"ID", "PERSONAL_WWW"
					)
				);
				$rsUser = CUser::GetList($by = "ID", $order = "DESC", $arFilter, $arSelectParams);
				if ($arUser = $rsUser->Fetch())
				{
					$id_after = $arUser['PERSONAL_WWW'];
				}

				$link = str_replace($id_before, $id_after, $link);
			}
		}

		$user = array(
			"ID" => $ob['USER_ID'],
			"LOGIN" => $ob['LOGIN'],
			"NAME" => $ob['NAME'],
			"LAST_NAME" => $ob['LAST_NAME'],
			"PERSONAL_PHOTO" => CFile::GetPath($ob['PERSONAL_PHOTO']),
			"USERLINK" => $link
		);

		switch ($asName)
		{
			case "name_lastname":
				if ($user['NAME'] != "" && $user['LAST_NAME'] != "")
					$user['LOGIN'] = $user['NAME'] . " " . $user['LAST_NAME'];
				break;

			case "name":
				if ($user['NAME'] != "")
					$user['LOGIN'] = $user['NAME'];
				break;
		}

		if ($DEPTH_LEVEL > $max_depth_level - 1)
			$DEPTH_LEVEL = $max_depth_level - 1;

		if ($commentLink == "Y")
			$cLink = "comment_" . $ob["ID"];
		else
			$cLink = "N";

		$arIDs[] = $ob['ID'];

		// add modification date
		$commentText = $ob['~COMMENT'];
		$commentModify = "";

		if (!empty($ob['DATE_MODIFY']) && $canModify == "Y")
		{
			$commentModify = GetMessage('CHANGE_COMMENT_MSG');
			$commentDateTime = explode(" ", $ob['DATE_MODIFY']);
			$commentModify = str_replace("#DATE#", $commentDateTime[0], $commentModify);
			$commentModify = str_replace("#TIME#", $commentDateTime[1], $commentModify);
		}

		// if user is author add modification link
		$canEdit = "N";
		if (!empty($ob['USER_ID']) && $ob['USER_ID'] == CUser::GetID() && $canModify == "Y")
		{
			$canEdit = "Y";
		}

		$commentHiddenContent = TreelikeCommentsGetSmiles($ob['~COMMENT'],
			array(
				":)" => "smile.png",
				":D" => "xd.png",
				":(" => "sad.png",
				"x_x" => "x_x.png",
				"0_0" => "0_0.png",
			),
			array("FOLDER" => $templateFolder)
		);
		$commentHiddenContent = CTreelikeComments::ParseTextBack($commentHiddenContent);
		$commentHiddenContent = strip_tags($commentHiddenContent);


		$comments[$ob['ID']] = array(
			"ID" => $ob['ID'],
			"DEPTH_LEVEL" => $DEPTH_LEVEL,
			"PARENT_ID" => $ob['PARENT_ID'],
			"LEFT_MARGIN" => $DEPTH_LEVEL * $left_margin,
			"USER" => $user,
			"COMMENT_LINK" => $cLink,
			"COMMENT" => $commentText,
			"AUTHOR_NAME" => $ob['AUTHOR_NAME'],
			"DATE_CREATE" => FormatDate($date_format, strtotime($ob['NEW_DATE'])),
			"ACTIVATED" => $ob['ACTIVATED'],
			"VoteUp" => 0,
			"VoteDown" => 0,
			"TOTAL_VOTE" => 0,
			"COMMENT_HIDDEN_CONTENT" => $commentHiddenContent,
			"MODIFY_STRING" => $commentModify,
			"DATE_MODIFY" => $ob['DATE_MODIFY'],
			"CAN_EDIT" => $canEdit
		);

		getComments($ob['ID'], $DEPTH_LEVEL + 1, $comments, $left_margin, $date_format, $userlink, $commentLink, $max_depth_level, $asName, $arIDs, $templateFolder, $canModify);
	}

}
Example #8
0
File: index.php Project: ASDAFF/mp
CJSCore::Init(array('jquery'));

// logic
CModule::IncludeModule('prmedia.treelikecomments');
CModule::IncludeModule('iblock');
if (empty($arGadgetParams['COUNT']))
{
	$arGadgetParams['COUNT'] = 10;
}

// delete comment
if (!empty($_GET['delete-comment-id']))
{
	$commentId = intval($_GET['delete-comment-id']);
	$obComment = new CTreelikeComments;

	$rsComment = $obComment->GetByID($commentId);
	if ($arComment = $rsComment->Fetch())
	{
		$obComment->Delete($commentId);
		$CACHE_MANAGER->ClearByTag("prmedia_treelike_comments_" . $arComment['OBJECT_ID']);
	}

	LocalRedirect($APPLICATION->GetCurPageParam("", array("delete-comment-id")));
}


$arResult = array();
$rsComment = CTreelikeComments::GetList(array(), array(), intval($arGadgetParams['COUNT']));
$count = CTreelikeComments::GetList(array(), array(), intval($arGadgetParams['COUNT']), true);
Example #9
0
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>	
<?
$arResult['FANCYBOX'] = false;
if (is_array($arResult['PROPERTIES']['MORE_PHOTO']['VALUE'])) {
	foreach ($arResult['PROPERTIES']['MORE_PHOTO']['VALUE'] as $photo) {
		$arResult['FANCYBOX'][] = array(
			'thumb' => CFile::ResizeImageGet($photo, array('width' => 100, 'height' => 100), BX_RESIZE_IMAGE_PROPORTIONAL, true),
			'normal' => CFile::ResizeImageGet($photo, array('width' => 800, 'height' => 800), BX_RESIZE_IMAGE_PROPORTIONAL, true)
			);
	}
}

CModule::IncludeModule('prmedia.treelikecomments');
$arFilter = array("OBJECT_ID_NUMBER" => $arResult['ID']);
$commentsCounter = CTreelikeComments::GetList(array("ID" => "DESC"), $arFilter)->SelectedRowsCount();

$showComments = false;
if ($_SESSION['COMMENTS']['ADD'] == 'Y') {
	$showComments = true;
	unset($_SESSION['COMMENTS']['ADD']);
}
?>
<script>
	$(document).ready(function () {
		<?if (true === $showComments) : ?>
			$('.comments-tab').click();
		<?endif;?>
	});
</script>
<style>
	.play-btn {width: 160px; opacity: 0.9; display: block; line-height: 0.7em; padding: 19px 0 19px 0; margin: 0 0 21px 0; background: #bfbfbf url(/src/icons/play48.png) no-repeat left; background-origin: content-box; text-align: center; color: #fff;  font-weight: 400; font-size: 24px; font-family: 'Open Sans', sans-serif; text-decoration: none; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px;position: absolute; top: 181px; left: 391px; padding-left: 12px;}
Example #10
0
  )
);


$lAdmin->AddGroupActionTable(Array(
  "delete"=>GetMessage("MAIN_ADMIN_LIST_DELETE"), // удалить выбранные элементы
  ));


$lAdmin->AddAdminContextMenu($aContext);
$lAdmin->CheckListMode();

$APPLICATION->SetTitle(GetMessage("TC_TITLE"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");

$get_right_groups = new CTreelikeComments;

if(!$get_right_groups->IsModerator())
{
    echo CAdminMessage::ShowMessage(GetMessage("TC_ERROR_ACCESS"));
}
else
{
    ?>

    <form name="form2" method="GET" action="<?echo $APPLICATION->GetCurPage()?>?">
    <?$filter->Begin();?>
    <tr>
    	<td nowrap><?php 
echo GetMessage("TC_ID");
?>
Example #11
0
	if (PrmediaLastCommentsCheckRestrictions($arParams['IBLOCK_RESTRICTIONS']))
	{
		$arRestrictons = $arParams['IBLOCK_RESTRICTIONS'];
	}
	$restrictions = implode(',', $arRestrictons);

	// getlist
	$order = array(
		'ID' => 'DESC'
	);
	$filter = array(
		'SITE_ID' => SITE_ID,
		'ACTIVATED' => 1,
		'IBLOCK_ID' => $restrictions
	);
	$rsComment = CTreelikeComments::GetList($order, $filter, intval($arParams['COUNT']));
	while ($arComment = $rsComment->GetNext())
	{
		$element = CIBlockElement::GetByID($arComment['OBJECT_ID']);
		$arIblockElement = $element->GetNext();
		if (!strlen($arComment['LOGIN']))
		{
			$username = $arComment['AUTHOR_NAME'];
			$isRegistered = 'N';
			$profileURL = '';
		}
		else
		{
			$username = $arComment['LOGIN'];
			if (strlen($arParams['PROFILE_URL']))
			{
Example #12
0
	function GetList($aSort = array(), $aFilter = array(), $limit = '', $count = false, $isFullList = false)
	{
		global $DB;

		$groupBy = " GROUP BY prmedia_treelike_comments.ID ";
		if ($aFilter['OBJECT_ID_UNIQUE'] === true)
		{
			unset($aFilter['OBJECT_ID_UNIQUE']);
			$groupBy = ' GROUP BY OBJECT_ID ';
		}

		if (intval($limit) > 0)
			$limit = " LIMIT 0, " . $limit;
		else
			$limit = "";

		$arHaving = array();

		foreach ($aFilter as $key => $val)
		{
			$val = $DB->ForSql($val);

			$key_res = CTreelikeComments::GetFilterOperation($key);
			$key = $key_res["FIELD"];
			$strNegative = $key_res["NEGATIVE"];
			$strOperation = $key_res["OPERATION"];

			if ($key == 'PARENT_ID')
			{
				if (intval($val) == 0)
					$arFilter[] = "prmedia_treelike_comments.PARENT_ID IS NULL";
				else
					$arFilter[] = "prmedia_treelike_comments.PARENT_ID=" . intval($val);

				continue;
			}

			if (strlen($val) <= 0)
				continue;
			switch (strtoupper($key))
			{
				case "ID":
					$arFilter[] = "prmedia_treelike_comments.ID = '" . $val . "'";
					break;
				case "PARENT_ID":
					$arFilter[] = "prmedia_treelike_comments.PARENT_ID = '" . $val . "'";
					break;

				case "OBJECT_ID":
					$arFilter[] = "b_iblock_element.NAME LIKE '%" . $val . "%'";
					break;

				case "IBLOCK_ID":
					$arFilter[] = "b_iblock_element.IBLOCK_ID IN (" . $val . ")";
					break;

				case "OBJECT_ID_NUMBER":
					$arFilter[] = "prmedia_treelike_comments.OBJECT_ID = '" . $val . "'";
					break;

				case "DATE":
					$arFilter[] = "DATE_FORMAT(prmedia_treelike_comments.DATE, '%d.%m.%Y') = '" . $val . "'";
					break;

				case "COMMENT":
					$arFilter[] = "prmedia_treelike_comments.COMMENT LIKE '%" . $val . "%'";
					break;

				case "USER_ID":
					$arFilter[] = "prmedia_treelike_comments.USER_ID='" . $val . "'";
					break;

				case "UP":
				case "DOWN":

					if ($strNegative == "Y")
						$strOperation = "!=";
					$arHaving[] = $key . " " . $strOperation . " " . $val;

					break;

				case "ACTIVATED":
					$arFilter[] = "ACTIVATED = '" . $val . "'";
					break;

				case "AUTHOR_NAME":
					$arFilter[] = "(prmedia_treelike_comments.AUTHOR_NAME LIKE '%" . $val . "%' OR b_user.LOGIN LIKE '%" . $val . "%' OR b_user.NAME LIKE '%" . $val . "%' OR b_user.LAST_NAME LIKE '%" . $val . "%')";
					break;

				case "IP":
					$arFilter[] = "prmedia_treelike_comments.REMOTE_ADDR = '" . $val . "'";
					break;

				case "EMAIL":
					$arFilter[] = "(prmedia_treelike_comments.EMAIL LIKE '%" . $val . "%' OR b_user.EMAIL LIKE '%" . $val . "%')";
					break;

				case "SITE_ID":
					$arFilter[] = "SITE_ID = '" . $val . "'";
					break;

				case "DATE_MODIFY":
					$arFilter[] = "DATE_FORMAT(prmedia_treelike_comments.DATE_MODIFY, '%d.%m.%Y') = '" . $val . "'";
					break;

				case "REMOTE_ADDR":
					$arFilter[] = "REMOTE_ADDR = '" . $val . "'";
					break;
			}
		}

		$arOrder = array();
		foreach ($aSort as $key => $val)
		{
			$ord = (strtoupper($val) <> "ASC" ? "DESC" : "ASC");
			switch (strtoupper($key))
			{

				case "ID":
					$arOrder[] = "prmedia_treelike_comments.ID " . $ord;
					break;
				case "PARENT_ID":
					$arOrder[] = "prmedia_treelike_comments.PARENT_ID " . $ord;
					break;

				case "OBJECT_ID":
					$arOrder[] = "b_iblock_element.NAME " . $ord;
					break;

				case "DATE":
					$arOrder[] = "prmedia_treelike_comments.DATE " . $ord;
					break;

				case "COMMENT":
					$arOrder[] = "prmedia_treelike_comments.COMMENT " . $ord;
					break;

				case "USER_ID":
					$arOrder[] = "prmedia_treelike_comments.USER_ID " . $ord;
					break;

				case "ACTIVATED":
					$arOrder[] = "prmedia_treelike_comments.ACTIVATED " . $ord;
					break;

				case "AUTHOR_NAME":
					$arOrder[] = "prmedia_treelike_comments.AUTHOR_NAME " . $ord;
					break;

				case "REMOTE_ADDR":
					$arOrder[] = "prmedia_treelike_comments.REMOTE_ADDR " . $ord;
					break;

				case "EMAIL":
					$arOrder[] = "prmedia_treelike_comments.EMAIL " . $ord;
					break;

				case "SITE_ID":
					$arOrder[] = "prmedia_treelike_comments.SITE_ID " . $ord;
					break;

				case "DATE_MODIFY":
					$arOrder[] = "prmedia_treelike_comments.DATE_MODIFY " . $ord;
					break;
			}
		}
		if (count($arOrder) == 0)
			$arOrder[] = "prmedia_treelike_comments.ID DESC";
		$sOrder = "\nORDER BY " . implode(", ", $arOrder);

		if (count($arFilter) == 0)
			$sFilter = "";
		else
			$sFilter = "\nWHERE " . implode("\nAND ", $arFilter);

		if (count($arHaving) == 0)
			$arHaving = "";
		else
			$arHaving = "\nHAVING " . implode("\nAND ", $arHaving);

		if (!$count)
		{

			if (!$isFullList)
			{
				$strSql = "
						SELECT
							prmedia_treelike_comments.ID, prmedia_treelike_comments.PARENT_ID, prmedia_treelike_comments.OBJECT_ID,
							DATE_FORMAT(prmedia_treelike_comments.DATE, '%d.%m.%Y %H:%i') AS NEW_DATE, prmedia_treelike_comments.COMMENT,
							DATE_FORMAT(prmedia_treelike_comments.DATE_MODIFY, '%d.%m.%Y %H:%i') AS DATE_MODIFY,
							prmedia_treelike_comments.USER_ID, prmedia_treelike_comments.ACTIVATED, prmedia_treelike_comments.AUTHOR_NAME,
							prmedia_treelike_comments.REMOTE_ADDR, prmedia_treelike_comments.SITE_ID, b_iblock_element.NAME, b_iblock_element.IBLOCK_ID,
							b_user.LOGIN, b_user.EMAIL, b_user.NAME, b_user.LAST_NAME, b_user.PERSONAL_PHOTO
						FROM
							prmedia_treelike_comments
						LEFT JOIN b_iblock_element ON OBJECT_ID = b_iblock_element.ID
						LEFT JOIN b_user ON USER_ID = b_user.ID

						" . $sFilter . " "
					. $groupBy
					. $arHaving
					. $sOrder
					. $limit;
			} else
			{
				$strSql = "
						SELECT
							prmedia_treelike_comments.ID, prmedia_treelike_comments.PARENT_ID, prmedia_treelike_comments.OBJECT_ID,
							DATE_FORMAT(prmedia_treelike_comments.DATE, '%d.%m.%Y %H:%i') AS NEW_DATE, prmedia_treelike_comments.COMMENT,
							DATE_FORMAT(prmedia_treelike_comments.DATE_MODIFY, '%d.%m.%Y %H:%i') AS DATE_MODIFY,
							prmedia_treelike_comments.USER_ID, prmedia_treelike_comments.ACTIVATED, prmedia_treelike_comments.AUTHOR_NAME,
							prmedia_treelike_comments.REMOTE_ADDR, prmedia_treelike_comments.SITE_ID, b_iblock_element.NAME, b_user.LOGIN,
							b_user.EMAIL, b_user.NAME, b_user.LAST_NAME, b_user.PERSONAL_PHOTO
						FROM
							prmedia_treelike_comments
						LEFT JOIN b_iblock_element ON OBJECT_ID = b_iblock_element.ID
						LEFT JOIN b_user ON USER_ID = b_user.ID
						" . $sFilter . " "
					. $groupBy
					. $arHaving
					. $sOrder
					. $limit;
			}

			return $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
		} else
		{
			$strSql = "
				SELECT
					COUNT(prmedia_treelike_comments.ID) as C
				FROM
					prmedia_treelike_comments LEFT JOIN b_iblock_element ON OBJECT_ID = b_iblock_element.ID LEFT JOIN b_user ON USER_ID = b_user.ID
				" . $sFilter . $sOrder . $limit;

			$res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);

			$res_cnt = $res->Fetch();
			return IntVal($res_cnt["C"]);
		}
	}
Example #13
0
	$arFilter = array(
		"OBJECT_ID_NUMBER" => $arParams["OBJECT_ID"],
		"SITE_ID" => SITE_ID,
	);

	$resComm = CTreelikeComments::GetList(array(), $arFilter);
	while($arComm = $resComm->GetNext()):
		$arIDs[] = $arComm["ID"];
		$arItems[$arComm["ID"]] = $arComm;
		$arItems[$arComm["ID"]]["COMMENT"] = $arComm["~COMMENT"];
	endwhile;

	// Count votes
	if(!empty($arIDs))
	{
		$resVoteIDs = CTreelikeComments::GetVotedIDs($arIDs);
		$allbestCommentsCount = 0; // corresponding to the condition

		while($arIDs = $resVoteIDs->GetNext()):
			if($arIDs["VOTE_TYPE"] == "UP")
			{
				if($arIDs["COUNT"] > 0)
					$arItems[$arIDs["COMMENT_ID"]]["VoteUp"] = $arIDs["COUNT"];
				else
					$arItems[$arIDs["COMMENT_ID"]]["VoteUp"] = 0;
			}
			if($arIDs["VOTE_TYPE"] == "DOWN")
			{
				if($arIDs["COUNT"] > 0)
					$arItems[$arIDs["COMMENT_ID"]]["VoteDown"] = $arIDs["COUNT"];
				else