parser

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

 

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

barabanner v1.0

yes 19.04.2003 14:46 / 19.04.2003 14:50

Решил попробовать сочинить банерокрутилку. Задумка такая:
В файле banner.cfg храняться: айди баннера, путь к файлу, айди группы, сколько раз был показан, сколько нужно показать, высота картинки, ширина картинки, и ссылка. Там где нужно вызываем метод с параметрами (айди баннера и айди группы). Если указать айди баннера, то будет всегда показываться именно он. Если айди баннера поставить равным нулю и указать айди группы, то будут крутиться баннеры из этой группы.
Вот что насочинял:
@barabanner[bid;bgroup]
#######
####Содержит все записи из banner.cfg.
$all[^table::load[/banner.cfg]]

#######
####Содержит записи, соответствующие группе. 
$bygroup[^all.select($all.group_id==$bgroup)]

#######
####Содержит записи, лимит которых не исчерпан.
$bylimit[^all.select($all.showed < $all.limit)]

#######
####Содержит записи, соответствующие группе, лимит которых не исчерпан.
$bygrouplimit[^all.select($all.group_id==$bgroup && $all.showed < $all.limit)]

#######
####Начало обработки
^if($bid != 0){
$bselect[^bylimit.select($bylimit.id==$bid)]
 ^if(^bselect.count[]==1){
 $selcut[^all.select($all.id!=$bselect.id)]
 $showed[^eval($bselect.showed+1)]
 ^selcut.append{$bselect.id	$bselect.path	$bselect.group_id	$showed	$bselect.limit	$bselect.w	$bselect.h	$bselect.link}
 ^selcut.sort($selcut.id)
 ^selcut.save[/banner.cfg]
 }
}{
 ^if($bgroup !=0){
  ^switch[^bygroup.count[]]{
   ^case[0]{}
   ^case[1]{
   $bselect[^bygroup.select(^bygroup.line[]==1)]
    ^if(^bselect.count[]==1 && $bselect.showed < $bselect.limit){
    $selcut[^all.select($all.id!=$bselect.id)]
    $showed[^eval($bselect.showed+1)]
    ^selcut.append{$bselect.id	$bselect.path	$bselect.group_id	$showed	$bselect.limit	$bselect.w	$bselect.h	$bselect.link}
    ^selcut.sort($selcut.id)
    ^selcut.save[/banner.cfg]
    }
   }
   ^case[DEFAULT]{
    ^switch[^bygrouplimit.count[]]{
     ^case[0]{
     $rndselect[^eval(^math:random(^bygroup.count[])+1)]
     $bselect[^bygroup.select(^bygroup.line[]==$rndselect)]
     }
     ^case[1]{
     $bselect[^bygrouplimit.select(^bygrouplimit.line[]==1)]
      ^if(^bselect.count[]==1){
      $selcut[^all.select($all.id!=$bselect.id)]
      $showed[^eval($bselect.showed+1)]
      ^selcut.append{$bselect.id	$bselect.path	$bselect.group_id	$showed	$bselect.limit	$bselect.w	$bselect.h	$bselect.link}
      ^selcut.sort($selcut.id)
      ^selcut.save[/banner.cfg]
      }
     }
     ^case[DEFAULT]{
     $rndselect[^eval(^math:random(^bygrouplimit.count[])+1)]
     $bselect[^bygrouplimit.select(^bygrouplimit.line[]==$rndselect)]
      ^if(^bselect.count[]==1){
      $selcut[^all.select($all.id!=$bselect.id)]
      $showed[^eval($bselect.showed+1)]
      ^selcut.append{$bselect.id	$bselect.path	$bselect.group_id	$showed	$bselect.limit	$bselect.w	$bselect.h	$bselect.link}
      ^selcut.sort($selcut.id)
      ^selcut.save[/banner.cfg]
      }
     }
    }
   }
  }
 }{
  ^switch[^bylimit.count[]]{
   ^case[0]{
    ^switch[^all.count[]]{
     ^case[0]{}
     ^case[1]{
     $bselect[^all.select(^all.line[]==1)]
     }
     ^case[DEFAULT]{
     $rndselect[^eval(^math:random(^all.count[])+1)]
     $bselect[^all.select(^all.line[]==$rndselect)]
     }
    }
   }
   ^case[1]{
   $bselect[^bylimit.select(^bylimit.line[]==1)]
    ^if(^bselect.count[]==1){
    $selcut[^all.select($all.id!=$bselect.id)]
    $showed[^eval($bselect.showed+1)]
    ^selcut.append{$bselect.id	$bselect.path	$bselect.group_id	$showed	$bselect.limit	$bselect.w	$bselect.h	$bselect.link}
    ^selcut.sort($selcut.id)
    ^selcut.save[/banner.cfg]
    }
   }
   ^case[DEFAULT]{
   $rndselect[^eval(^math:random(^bylimit.count[])+1)]
   $bselect[^bylimit.select(^bylimit.line[]==$rndselect)]
    ^if(^bselect.count[]==1){
    $selcut[^all.select($all.id!=$bselect.id)]
    $showed[^eval($bselect.showed+1)]
    ^selcut.append{$bselect.id	$bselect.path	$bselect.group_id	$showed	$bselect.limit	$bselect.w	$bselect.h	$bselect.link}
    ^selcut.sort($selcut.id)
    ^selcut.save[/banner.cfg]
    }
   }
  }
 }
}

#######
####Вывод полученного баннера.
<a href="$bselect.link"><img src="$bselect.path" width="$bselect.w" height="$bselect.h" border="0"></a>
Буду рад выслушать Ваши мнения.
Мнения выслушаю и буду сочинять систему администрирования.