PHP Classes
elePHPant
Icontem

File: giCounter.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Giulio Bai  >  giCounter  >  giCounter.php  >  Download  
File: giCounter.php
Role: Class source
Content type: text/plain
Description: The main class file
Class: giCounter
Keep track of page visitors using text files
Author: By
Last change:
Date: 8 years ago
Size: 2,773 bytes
 

Contents

Class file image Download
<?php

class giCounter
{

    var
$page;
   
    var
$file = "counter.dat";
   
   
define('FILE_APPEND', 1);
   
   
   
/**
     * Just sets the page
     *
     * @param string $page the page name
     */
   
function set_page($page)
    {
       
$this->page = trim($page);
    }
   
   
/**
     * And this one sets the file name
     *
     * @param string $file the counter file
     */
   
function set_file($file)
    {
       
$this->file = trim($file);
    }
   


   
/**

     * write_file() is a file_put_contents(9 clone for PHP versions < 5.
     * It is identical to calling fopen(), fwrite() and fclose() successively.

     *

     * @param string $filename the file name where to write the data

     * @param mixed $data the data to write. Can be either a string, an array or a stream resource.

     * @param int $flag flags can take FILE_USE_INCLUDE_PATH, FILE_APPEND and/or LOCK_EX (acquire an exclusive lock), however the FILE_USE_INCLUDE_PATH option should be used with caution.

     * @return int returns the amount of bytes that were written to the file.

     */


   
function write_file($filename, $data, $flag = false)

    {

       
$mode = ($flag == FILE_APPEND || strtoupper($flag) == 'FILE_APPEND') ? 'a' : 'w';


       
$f = @fopen($filename, $mode);


        if (
$f === false) return 0;

        else {

            if (
is_array($data)) $data = implode($data);


           
$bytes_written = fwrite($f, $data);

           
fclose($f);


            return
$bytes_written;

        }


    }

   
/**
     * Actually makes the work. Passing the reset mode (0) or the counter mode (1)
     * you set what the function has to do.
     *
     * @param int $MODE Use 0 to reset, 1 to get the counter
     * @return int the counter
     */
   
function process($MODE)
    {
        if (!
file_exists($this->file))
           
fopen($this->file, "w");
                   
       
$file = unserialize(file_get_contents($this->file));
       
       
$counter = $file[$this->page];
       
        if (
$MODE)
           
$counter ++;
        else
           
$counter = 0;
       
       
$file[$this->page] = $counter;
       
       
$this->write_file($this->file, serialize($file));
       
        return
$counter;
    }
   
   
/**
     * Ask the process() function for the counter. Counter mode = 1
     *
     * @see process()
     * @return int the counter
     */
   
function get_counter()
    {
        return
$this->process(1);
    }
   
   
/**
     * Resets the counter by passing 0 to the process() function.
     *
     * @see process()
     * @return int the counter
     */
   
function reset()
    {
        return
$this->process(0);
    }
   
}

?>