parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Изменения

Mizter Egoist 02.04.2015 13:55

@getThreads[params]
$result[^table::sql{
	SELECT
		id,
		sectionID,
		threadID,
		parentID,
		uID,
		date,
		mess,
		closed
	FROM
		questions
	WHERE
		1 = 1
		^if(def $params.sectionIDs){AND sectionID IN($params.sectionIDs)}
		^if(def $params.threadIDs){AND threadID = '$params.threadIDs'}
		^if(def $params.parentIDs){AND parentID IN($params.parentIDs)}
		^if(def $params.uIDs){AND uID IN($params.uIDs)}
	ORDER BY
		date DESC
}[
	^if(def $params.limit){
		$.limit(^params.limit.int(0))
	}
]]
И код получился такой:
$questions[^getThreads[
	$.sectionIDs($advices.section.id)
	$.parentIDs(0)
]]
^if(def $questions){
	^if(def $form:url && $form:url eq $advices.section.section_url && $questions && !def $form:q){
		<h2>Действующие</h2>
		^questions.menu{
			$operator[^getThreads[
				$.threadIDs[$questions.threadID]
				$.uIDs($initialization.auth.uID)
				$.limit(1)
			]]
			^operator.menu{
				$Q[^getThreads[
					$.threadIDs[$operator.threadID]
					$.parentIDs(0)
				]]
				$U[^getUsers[
					$.uIDs($Q.uID)
				]]
				^U.menu{$U.forename $U.surname}
				^Q.menu{<a href="/${form:url}?q=${Q.threadID}">$Q.mess</a><br>}
			}
			$operators[^getUsers[
				$.gIDs(3)
			]]
			^operators.menu{
				$close[^getThreads[
					$.threadIDs[$questions.threadID]
					$.uIDs($operators.uID)
					$.limit(1)
				]]
				^close.menu{
					$free[
						^table::sql{
							SELECT	id,
								sectionID,
								threadID,
								parentID,
								uID,
								date,
								mess,
								closed
							FROM	questions
							WHERE 	sectionID = '$advices.section.id'
							AND	threadID != '$close.threadID'
							AND	parentID = '0'
						}
					]
					^free.menu{$free.threadID<br>}
				}
			}
		}
	}
}
$close получает threadID в которых уже написал оператор.
Вопрос в следующем:
Как правильно написать $free, чтобы он исключал из всего списка threadID $close.threadID и находил parentID = '0' и выдавал список threadID в которых еще не писал оператор.

Сейчас у меня в тестовом варианте 5 записей threadID, где parentID = '0'.
$close находит 2 записи и это true.
$free почему то находит все, но в неправильном порядке.