parser

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

 

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

Bug?

Sanja v.2 15.09.2003 18:42 / 15.09.2003 18:50

Отмеченные красным строки вызывают "exception in request exception handler: Exception 0xC0000005 at 0x0040E260" при наличии в query string параметра skip: index.html?skip=NN

ОС: Win2K Prof. English SP1, вебсервер - apache. Парсер 3.1
@main[]
#Debug: ^page[]

^body[]

@title[]

Фотоальбомы&nbsp^;&mdash^;

# Получаем ID интересующего нас альбома:

$form_id[$form:id]
$form_id(^form_id.int(0))

	$albums[^table::load[albums.cfg]]
	$albums[^albums.select($albums.id==$form_id)]
	^if($albums){
		$albums.name
	}{
		Ошибка: Фотоальбома с таким номером не существует.
	}

@body[]

# Проверяем права посетителя смотреть friend-only и приватные фотки:
^album_security[]

# Получаем ID интересующего нас альбома:
$form_id[$form:id]
$form_id(^form_id.int(0))

$albums[^table::load[albums.cfg]]
$albums[^albums.select($albums.id==$form_id)]

^switch[$albums.security]{
	^case[personal]{
		^if($security_is_personal == 0){
			<p>Простите, но этот альбом может просматривать только владелец сайта.
			<a href="./">Вернуться к списку альбомов</a></p>
		}{
			^display_album[$form_id]
		}
	}
	^case[friends]{
		^if($security_is_friend == 0){
			<p>Простите, но этот альбом могут просматривать лишь друзья владельца сайта.
			<a href="./">Вернуться к списку альбомов</a></p>
		}{
			^display_album[$form_id]
		}
	}
	^case[DEFAULT]{
		^display_album[$form_id]
	}
}

@display_album[id]

# Номер альбома:
$form_id[$form:id]
$form_id(^form_id.int(0))

# Из общего списка берём только те фотки, что относятся к текущему альбому:
$photos[^table::load[photos.cfg]]
$photos[^photos.select($photos.coll_id==$form_id)]

# Вычисляем общее число фоток:
$totalcount[^photos.count[]]
$totalcount[^totalcount.int(0)]

# Сколько фоток от начала пропустить:
$form_skip[$form:skip]
$form_skip(^form_skip.int(0))
^if(!def $form_skip){$form_skip(0)}

# Сколько фоток показывать за раз:
$form_show[$form:show]
$form_show(^form_show.int(20))
^if(!def $form_show){$form_show(20)}

# Убираем из списка начальные $form_skip фоток, из оставшихся оставляем только $form_show:
$photos[^table::create[$photos; 
    $.offset($form_skip)
    $.limit($form_show) 
]] 

$form_skip 
$form_show

<table>
#	Переменные для счёта:
	$i(1)
	^photos.menu{

#		Рисуем табличку с превьюшками первых $form:skip фоток:
#			Приводим id к формату числа "000000":
			$photos_id_zero[${photos.id}]
			$photos_id_zero(^photos_id_zero.int(0))
			$photos_id_zero[^photos_id_zero.format[%06u]]
	
			^if($i <= 1){<tr valign=top>}
# TODO: запретить прямое скачивание фоток, а то вся наша секьюрити - профанация...
			<td align=left width=130><a href="picture_${photos.id}.html"><img
				src="preview${photos_id_zero}.jpg" width=120 alt="${photos.comment}"
				style="border: solid 1px black"></a><br>
				<a href="picture_${photos.id}.html"  style="font-family:Arial Narrow, Arial, sans-serif^;font-weight: normal">${photos.comment}</a></td>
			^if($i >= 5){</tr>}
			$i($i + 1)
			$j($j + 1)
			^if($i >= 6){$i(1)}
	}</td></tr>
</table>