|
Графический счетчик.
Рассмотрена работа операторов ^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Результат работы макроса:
|