| PARSER | примеры | графический счетчик |

faq | авторы | документация |  | в действии | куда говорить
жаргон |  | скачать |  | примеры | форум

> Графический счетчик.

> Рассмотрена работа операторов ^gif_template, ^save, ^unlink.

> Автор — Кирилл Березин

>      @inc_host
>      # Увеличиваем значение хостов сегодня
>      	^var[hosts_today;+;1]
>      	^save[hosts_today.cfg;^var[hosts_today]]
>      @/inc_host

>      @time
>      # Разница между ^var[curr_time] и временем возвращаемым ^stat, вычисляется так: 4*3600 = 14400
>      	^var[offset;14400]

>      # Время в секундах, прошедшее с 1970  по 2000 года, вычисляется так: (31*365 + 8)*24*3600 = 978307200
>      	^var[seconds;978307200]

>      # Время в секундах, прошедшее с 1 января 1970 года с 00:00:00 до текущего времени
>      	^eval[^var[seconds] + (^date[%j] - 1)*24*3600 + ^date[%H]*3600 + ^date[%M]*60 + ^date[%S] - ^var[offset]]
>      @/time

>      @time_today
>      # Время в секундах, прошедшее сегодня с 00:00:00 и до текущего момента
>      	^eval[^date[%H]*3600 + ^date[%M]*60 + ^date[%S]]
>      @/time_today

>      @check_first_visit_today
>      # Проверяем первый ли это заход сегодня
>      ^if[^eval[^macro[time] - ^stat[mtime;_hosts_today.cfg]] > ^macro[time_today];
>      	^unlink[_hosts_today.cfg]
>      ]

>      ^if[^eval[^macro[time] - ^stat[mtime;hits_today.count]] > ^macro[time_today];
>      	^unlink[hits_today.count]
>      ]
>      @/check_first_visit_today

>      @counter_GIF
>      ^macro[check_first_visit_today]

>      ^context[host;
>      	^ifdef[^-f[_hosts_today.cfg];
>      		^load[hosts_today.cfg]
>      		^var[hosts_today;^item[0]]
>      	;
>      		^save[hosts_today.cfg;0]
>      		^var[hosts_today;0]
>      	]
>      ]

>      # Проверяем уникальный ли это заход сегодня
>      ^ifdef[^cookie[counter_cookie];
>      	^eq[^cookie[counter_cookie];^date[%d.%m.%Y];;
>      		^cookie[counter_cookie;^date[%d.%m.%Y]]
>      		^macro[inc_host]
>      	]
>      ;
>      	^cookie[counter_cookie;^date[%d.%m.%Y]]
>      	^macro[inc_host]
>      ]

>      # Увеличиваем значения хитов (всего/сегодня)
>      ^var[hits_all;^counter[hits_all]]
>      ^var[hits_today;^counter[hits_today]]

>      ^macro_new[font;digits.gif
>      8
>       0123456789
>      ]

>      # Вычисляем координаты вывода надписи (значение общего количества хитов) на изображение
>      ^var[x;^eval[88-3-^length[^var[hits_all]]*7]]
>      ^var[y;3]

>      # Загружаем изображение из файла bg.gif и наносим на него значение hits_all, результат сохраняем во временном файле tmp.gif
>      ^gif_template[bg.gif;
>      7	^var[x]	^var[y]	^var[hits_all]
>      ;tmp.gif]

>      # Вычисляем координаты вывода надписи (значение количества хитов сегодня) на изображение
>      ^var[x;^eval[88-3-^length[^var[hits_today]]*7]]
>      ^var[y;14]

>      # Загружаем изображение из файла tmp.gif и наносим на него значение hits_today, результат сохраняем во временном файле tmp1.gif
>      ^gif_template[tmp.gif;
>      7	^var[x]	^var[y]	^var[hits_today]
>      ;tmp1.gif]

>      # Вычисляем координаты вывода надписи (значение количества хостов сегодня) на изображение
>      ^var[x;^eval[88-3-^length[^var[hosts_today]]*7]]
>      ^var[y;22]

>      # Загружаем изображение из файла tmp1.gif и наносим на него значение hosts_today. В результате получаем изображение со всеми тремя показаниями счетчика  - файл counter.gif
>      ^gif_template[tmp1.gif;
>      7	^var[x]	^var[y]	^var[hosts_today]
>      ;counter.gif]

>      # Стираем временные (промежуточные) файлы
>      ^unlink[tmp.gif]
>      ^unlink[tmp1.gif]

>      # Выводим полученное изображение на страницу
>      <img src="counter.gif" width=88 height=31 border=0 alt="Counter_GIF">
>      @/counter_GIF

>      @main[]
>      	^macro[counter_GIF]
>      @/main

> Результат работы макроса:

E-mail: mailbox@parser.ru | Copyright © 1997-2001 | Студия Артемия Лебедева