PX : code

Perfect News by Philip Gatt
Download this code


<?
//////////////////////////////////////////////////////////////////////////////////////////////
//
//    Author: Philip Gatt
//    Email: pxg@hotmail.com
//    Date: 6-22-99
//    Location: Orlando, Florida
//
//    This file is free to use, modify, distribute, delete, distort, or whatever else you desire.
//    I only ask that I receive credit and that you send me an email letting me know you are 
//    using my script(so I know I helped somebody).
//
//
//    Need a script created? I am available for contract work, or full/part-time employment.
//
//    Installation:
//        Modify the $newsdir and $adminpagesrc variables to fit your page.
//        Modify the displayNewsEntry() function to display the news in a format that fits your page
//        Include this file in any page you wish to use the news(preferabley near the top)
//        Send me email telling me I have created something you found useful (pxg@hotmail.com)
//
//
//////////////////////////////////////////////////////////////////////////////////////////////




$newsdir = "/home/httpd/trainme/html/temp/data/";                     // dir to store the news data files in
$newssuffix = ".news";                                // file extension for news data files
$adminpagesrc = "newsadmin.php3";                    // location of the administrator page

//////////////////////////////////////////////////////////////////////////////////////////////
//This function compiles an ordered array called $newsfile of all news files in the $newsdir
//It must be run prior to displaying the news
//////////////////////////////////////////////////////////////////////////////////////////////
function buildNewsfile ()
{
    global $newsdir, $newssuffix, $newsfile;
    
    $newsfile = array();
    
    $td = dir($newsdir);

    while ($filename = $td->read())
    {
        $s = strtolower($filename);
        if (strstr ($s, $newssuffix))
        {
            $lastchanged = filemtime($newsdir.$filename);
            $newsfile[$filename] = $lastchanged;
        }

        arsort($newsfile);
    }
}

//////////////////////////////////////////////////////////////////////////////////////////////
//This function is used internally to display a single news entry
//This will probably need to be modified to meet the needs of your page
//////////////////////////////////////////////////////////////////////////////////////////////
function displayNewsEntry($fn)
{
        global $newsdir;
        
        $fa = file($newsdir.$fn);
        $n=count($fa); 
        echo("<FONT FACE=\"Helvetica\" COLOR=\"#3F5E9E\" SIZE=\"3\"><I><B>\n");
        echo($fa[0] . "\n");
        echo("</I></B></FONT><BR>\n");
        echo("<HR>\n");
        echo("<FONT FACE=\"Helvetica\" SIZE=\"2\"><B>\n");
        echo(date( "l, F d, Y", filemtime($newsdir.$fn)) . "\n");
        echo("</B><BR>\n");

        for ($i=1; $i<$n; $i=$i+1)
        { 
            $s=chop($fa[$i]); 
            echo($s. "<BR>\n"); 
        }
}


//////////////////////////////////////////////////////////////////////////////////////////////
//Call this funciton to display the entire news listing, in order of date
//////////////////////////////////////////////////////////////////////////////////////////////
function displayNews()
{
    global $newsfile;
    
    for(reset($newsfile); $key = key($newsfile); next($newsfile))
    { 
        displayNewsEntry(key($newsfile));
        print  "<P>"; 
    } 
}

//////////////////////////////////////////////////////////////////////////////////////////////
//Call this funciton from a secure page
//It allows addition and deletion of news files
//////////////////////////////////////////////////////////////////////////////////////////////
function displayNewsAdmin()
{
    global $newsfile;
    global $adminpagesrc;
    
    print "<FORM METHOD=\"post\" ACTION=\"".$adminpagesrc."\">";
    for(reset($newsfile); $key = key($newsfile); next($newsfile))
    { 
        displayNewsEntry(key($newsfile));
        print "<INPUT TYPE=\"submit\" NAME=\"deleteButton\" VALUE=\"Delete ".key($newsfile)."\">";
        print  "<P>"; 
    } 

    //print news creation form
    print '<FONT FACE="Helvetica" SIZE="2">';
    print '<FORM METHOD="post" ACTION="'.$adminpagesrc.'">Title:<BR><INPUT type="text" NAME="title" size="40" VALUE=""><BR>News Message:<BR><TEXTAREA NAME="message" ROWS=6 COLS=60></TEXTAREA><BR><INPUT type="submit" NAME="submitButton" VALUE="Create News Entry"></FORM></FONT>';
}


//////////////////////////////////////////////////////////////////////////////////////////////
//internal use
//////////////////////////////////////////////////////////////////////////////////////////////
function createNewsEntry($title, $message)
{
    global $newsdir, $newssuffix;
    $fp = fopen ($newsdir.time().$newssuffix, "w");    
    fwrite ($fp, stripslashes($title."\n".$message));
    fclose($fp);
    buildNewsfile();
}

//////////////////////////////////////////////////////////////////////////////////////////////
//internal use
//////////////////////////////////////////////////////////////////////////////////////////////
function deleteNewsEntry ($fn)
{
    global $newsdir;
    unlink ($newsdir.$fn);
    buildNewsfile();
}

buildNewsfile();

//handle administrator functions
if ($submitButton == "Create News Entry")
{
    createNewsEntry($title, $message);    
}
elseif ($deleteButton != "")
{
    $tok = strtok($deleteButton, " ");
    $fn = strtok(" ");
    deleteNewsEntry ($fn);
}    
?>

Comments or questions?
PX is running PHP 5.2.17
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.