TalkPHP
 
 
Account Login
Latest Articles
» The basic usage of PHPTAL, a XML/XHTML template library for PHP
» Vulnerable methods and the areas they are commonly trusted in.
» Simple way to protect a form from bot
» The Basics On: How Session Stealing Works
» How to keep your forms from double posting data
IRC Channel
IRC Speech Bubble Join the friendly bunch on IRC...
(#TalkPHP on Freenode)

...Also available via a web interface.

See this thread for information on the TalkPHP Free Hugs Initiative™. Subject to availability.
Associates
Associates
CSS Tutorials
Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old 06-14-2009, 07:38 AM   #1 (permalink)
The Addict
 
Enfernikus's Avatar
 
Join Date: Jun 2008
Posts: 319
Thanks: 2
Enfernikus is on a distinguished road
Default Random script I made

So I got bored and made a script to essentially turn a file into an object....have it.

Examples
php Code:
<?php

$dir = dirname(__FILE__);
include $dir . '/file.php';

$file = new file($dir . '/anime.txt');

//Function supports All of the following methods
//of inserting into the data file
$file->insert('Teacher', 'Great');
$file->insert(10, 'The Anime List');

$insertArray = array(
                        12,
                        'This',
                        5,
                        3,
                        'tree'
                    );

$file->insert($insertArray, 'Nike');

//Truncase the file
$file->truncate(100, 'left');

//Cut off a section of it somewhere
$file->cutoff(10, 'right');

//Search for a particularly word
if( $file->search('great') )
{
    //Do cool stuff here
}

//We can also do occurences
if( $file->search('great', true) > 0 )
{
    echo 'do more cool stuff'
}

//append and prepend data
$file->append('foo');
$file->prepend('foothis');

//Lets say we're done with editing
$file->save();

//We can offload to user
$file->download();

The Script
php Code:
<?php

class file
{
    private $data, $filePath;
    private $is = array(
                        'image' => array(
                                            'png',
                                            'gif',
                                            'jpg',
                                            'jpeg',
                                            'bmp',
                                            'psd',
                                            'ai',
                                            'raw',
                                            'tiff'
                                        ),
                        'doc'   => array(
                                            'txt',
                                            'doc',
                                            'docx',
                                            'pdf',
                                            'rdf',
                                            'odf'
                                        ),
                        'zip'   =>array(
                                            '7z',
                                            'zip',
                                            'gz',
                                            'tar',
                                            'rar',
                                       )
                       );
    private $mimetypes = array(
                                "323" => "text/h323",
                                "acx" => "application/internet-property-stream",
                                "ai" => "application/postscript",
                                "aif" => "audio/x-aiff",
                                "aifc" => "audio/x-aiff",
                                "aiff" => "audio/x-aiff",
                                "asf" => "video/x-ms-asf",
                                "asr" => "video/x-ms-asf",
                                "asx" => "video/x-ms-asf",
                                "au" => "audio/basic",
                                "avi" => "video/x-msvideo",
                                "axs" => "application/olescript",
                                "bas" => "text/plain",
                                "bcpio" => "application/x-bcpio",
                                "bin" => "application/octet-stream",
                                "bmp" => "image/bmp",
                                "c" => "text/plain",
                                "cat" => "application/vnd.ms-pkiseccat",
                                "cdf" => "application/x-cdf",
                                "cer" => "application/x-x509-ca-cert",
                                "class" => "application/octet-stream",
                                "clp" => "application/x-msclip",
                                "cmx" => "image/x-cmx",
                                "cod" => "image/cis-cod",
                                "cpio" => "application/x-cpio",
                                "crd" => "application/x-mscardfile",
                                "crl" => "application/pkix-crl",
                                "crt" => "application/x-x509-ca-cert",
                                "csh" => "application/x-csh",
                                "css" => "text/css",
                                "dcr" => "application/x-director",
                                "der" => "application/x-x509-ca-cert",
                                "dir" => "application/x-director",
                                "dll" => "application/x-msdownload",
                                "dms" => "application/octet-stream",
                                "doc" => "application/msword",
                                "dot" => "application/msword",
                                "dvi" => "application/x-dvi",
                                "dxr" => "application/x-director",
                                "eps" => "application/postscript",
                                "etx" => "text/x-setext",
                                "evy" => "application/envoy",
                                "exe" => "application/octet-stream",
                                "fif" => "application/fractals",
                                "flr" => "x-world/x-vrml",
                                "gif" => "image/gif",
                                "gtar" => "application/x-gtar",
                                "gz" => "application/x-gzip",
                                "h" => "text/plain",
                                "hdf" => "application/x-hdf",
                                "hlp" => "application/winhlp",
                                "hqx" => "application/mac-binhex40",
                                "hta" => "application/hta",
                                "htc" => "text/x-component",
                                "htm" => "text/html",
                                "html" => "text/html",
                                "htt" => "text/webviewhtml",
                                "ico" => "image/x-icon",
                                "ief" => "image/ief",
                                "iii" => "application/x-iphone",
                                "ins" => "application/x-internet-signup",
                                "isp" => "application/x-internet-signup",
                                "jfif" => "image/pipeg",
                                "jpe" => "image/jpeg",
                                "jpeg" => "image/jpeg",
                                "jpg" => "image/jpeg",
                                "js" => "application/x-javascript",
                                "latex" => "application/x-latex",
                                "lha" => "application/octet-stream",
                                "lsf" => "video/x-la-asf",
                                "lsx" => "video/x-la-asf",
                                "lzh" => "application/octet-stream",
                                "m13" => "application/x-msmediaview",
                                "m14" => "application/x-msmediaview",
                                "m3u" => "audio/x-mpegurl",
                                "man" => "application/x-troff-man",
                                "mdb" => "application/x-msaccess",
                                "me" => "application/x-troff-me",
                                "mht" => "message/rfc822",
                                "mhtml" => "message/rfc822",
                                "mid" => "audio/mid",
                                "mny" => "application/x-msmoney",
                                "mov" => "video/quicktime",
                                "movie" => "video/x-sgi-movie",
                                "mp2" => "video/mpeg",
                                "mp3" => "audio/mpeg",
                                "mpa" => "video/mpeg",
                                "mpe" => "video/mpeg",
                                "mpeg" => "video/mpeg",
                                "mpg" => "video/mpeg",
                                "mpp" => "application/vnd.ms-project",
                                "mpv2" => "video/mpeg",
                                "ms" => "application/x-troff-ms",
                                "mvb" => "application/x-msmediaview",
                                "nws" => "message/rfc822",
                                "oda" => "application/oda",
                                "p10" => "application/pkcs10",
                                "p12" => "application/x-pkcs12",
                                "p7b" => "application/x-pkcs7-certificates",
                                "p7c" => "application/x-pkcs7-mime",
                                "p7m" => "application/x-pkcs7-mime",
                                "p7r" => "application/x-pkcs7-certreqresp",
                                "p7s" => "application/x-pkcs7-signature",
                                "pbm" => "image/x-portable-bitmap",
                                "pdf" => "application/pdf",
                                "pfx" => "application/x-pkcs12",
                                "pgm" => "image/x-portable-graymap",
                                "pko" => "application/ynd.ms-pkipko",
                                "pma" => "application/x-perfmon",
                                "pmc" => "application/x-perfmon",
                                "pml" => "application/x-perfmon",
                                "pmr" => "application/x-perfmon",
                                "pmw" => "application/x-perfmon",
                                "pnm" => "image/x-portable-anymap",
                                "pot" => "application/vnd.ms-powerpoint",
                                "ppm" => "image/x-portable-pixmap",
                                "pps" => "application/vnd.ms-powerpoint",
                                "ppt" => "application/vnd.ms-powerpoint",
                                "prf" => "application/pics-rules",
                                "ps" => "application/postscript",
                                "pub" => "application/x-mspublisher",
                                "qt" => "video/quicktime",
                                "ra" => "audio/x-pn-realaudio",
                                "ram" => "audio/x-pn-realaudio",
                                "ras" => "image/x-cmu-raster",
                                "rgb" => "image/x-rgb",
                                "rmi" => "audio/mid",
                                "roff" => "application/x-troff",
                                "rtf" => "application/rtf",
                                "rtx" => "text/richtext",
                                "scd" => "application/x-msschedule",
                                "sct" => "text/scriptlet",
                                "setpay" => "application/set-payment-initiation",
                                "setreg" => "application/set-registration-initiation",
                                "sh" => "application/x-sh",
                                "shar" => "application/x-shar",
                                "sit" => "application/x-stuffit",
                                "snd" => "audio/basic",
                                "spc" => "application/x-pkcs7-certificates",
                                "spl" => "application/futuresplash",
                                "src" => "application/x-wais-source",
                                "sst" => "application/vnd.ms-pkicertstore",
                                "stl" => "application/vnd.ms-pkistl",
                                "stm" => "text/html",
                                "svg" => "image/svg+xml",
                                "sv4cpio" => "application/x-sv4cpio",
                                "sv4crc" => "application/x-sv4crc",
                                "t" => "application/x-troff",
                                "tar" => "application/x-tar",
                                "tcl" => "application/x-tcl",
                                "tex" => "application/x-tex",
                                "texi" => "application/x-texinfo",
                                "texinfo" => "application/x-texinfo",
                                "tgz" => "application/x-compressed",
                                "tif" => "image/tiff",
                                "tiff" => "image/tiff",
                                "tr" => "application/x-troff",
                                "trm" => "application/x-msterminal",
                                "tsv" => "text/tab-separated-values",
                                "txt" => "text/plain",
                                "uls" => "text/iuls",
                                "ustar" => "application/x-ustar",
                                "vcf" => "text/x-vcard",
                                "vrml" => "x-world/x-vrml",
                                "wav" => "audio/x-wav",
                                "wcm" => "application/vnd.ms-works",
                                "wdb" => "application/vnd.ms-works",
                                "wks" => "application/vnd.ms-works",
                                "wmf" => "application/x-msmetafile",
                                "wps" => "application/vnd.ms-works",
                                "wri" => "application/x-mswrite",
                                "wrl" => "x-world/x-vrml",
                                "wrz" => "x-world/x-vrml",
                                "xaf" => "x-world/x-vrml",
                                "xbm" => "image/x-xbitmap",
                                "xla" => "application/vnd.ms-excel",
                                "xlc" => "application/vnd.ms-excel",
                                "xlm" => "application/vnd.ms-excel",
                                "xls" => "application/vnd.ms-excel",
                                "xlt" => "application/vnd.ms-excel",
                                "xlw" => "application/vnd.ms-excel",
                                "xof" => "x-world/x-vrml",
                                "xpm" => "image/x-xpixmap",
                                "xwd" => "image/x-xwindowdump",
                                "z" => "application/x-compress",
                                "zip" => "application/zip"
                        );
   
        public function __construct($file)
        {
            if( file_exists($file) )
            {
                $this->filePath = $file;
                $this->data = file_get_contents($file);
            }else{
               
                throw new Exception('File does not exists');
            }
        }
       
        public function __toString()
        {
            return (string)$this->data;
        }
       
        public function __call($func, $arg)
        {
            if( preg_match('/is(.*?)/U', $func, $match) )
            {
                $match[1] = strtolower($match[1]);
                $ext = $this->fetchFileExt();
                if( array_key_exists($match[1], $this->is) && in_array($ext, $this->is[$match[1]])  )
                {
                    if( isset($arg[0]) && $arg[0] )
                    {
                        return $ext;
                    }
                   
                    return true;
                }
               
                return false;
            }
        }
       
        public function save()
        {
            file_put_contents($this->filePath, $this->data);
        }
       
        public function changeFileName($to)
        {
            $this->data = str_replace( $this->fetchFileName(), $to, $this->data );
        }
       
        public function fetchFileName()
        {
            return basename($this->filePath);
        }
       
        public function replace($search, $replace, $regex = false)
        {
            if( $regex )
            {
                $this->data = preg_replace($search, $replace, $this->data);
                return;
            }
           
            $this->data = str_replace($search, $replace);
        }
       
        public function search($term, $returnNumberOfOcurrences = false )
        {
            if( strstr($this->data, $term) )
            {
                if( $returnNumberOfOcurrences )
                {
                    return count(explode($term, $this->data))-1;
                }
               
                return true;
            }
        }
       
        public function fetchFileType()
        {
            $fExt = $this->fetchFileExt();
            foreach( $this->is as $filetype => $extArray )
            {
                foreach( $extArray as $ext)
                {
                    if( $ext == $fExt )
                    {
                        return $filetype;
                    }
                }
            }
           
            return false;
        }
       
        public function fetchFileExt()
        {
            return pathinfo($this->filePath, PATHINFO_EXTENSION);
        }
       
        public function returnMimeType()
        {
            $ext = $this->fetchFileExt();
            if( array_key_exists($ext, $this->mimetypes) )
            {
                return $this->mimetypes[$ext];
            }
        }
       
        public function download($filename = '')
        {
            $mimetype = $this->returnMimeType();
            if( !empty($mimetype) )
            {
                $filename = ( $filename == '' ) ? basename($this->filePath) : $filename;
                header('Content-type: ' . $mimetype);
                header('Content-Length: ' . strlen($this->data));
                header('Content-Disposition: attachment; filename="' . $filename . '"');
                die( $this->data );
            }
        }
       
        public function applyFilter( Array $filters )
        {
            foreach( $filters as $filter )
            {
                if( function_exists($filter) )
                {
                    $this->data = $filter($this->data);
                }
            }
        }
       
        public function filter($word, $filterChar = '*')
        {
            if( is_string($word) )
            {
                $filter = str_pad($filter, strlen($word), $filterChar);
                $this->data = str_replace($word, $filter, $this->data);
            }elseif( is_array($word) || is_object($word) )
            {
                foreach( (array)$word as $filter )
                {
                    $this->filter($filter, $filterChar);
                }
            }
        }
       
        public function insert( $find, $toInsert = '' )
        {
            if( is_int($find) && $find <= strlen($this->data) )
            {
                $fHalf = substr($this->data, 0, $find);
                $sHalf = substr($this->data, $find, strlen($this->data) - $find);
                $this->data = $fHalf . $toInsert . $sHalf;
            }elseif( is_string($find) && strstr($this->data, $find))
            {
                $findPos = strpos($this->data, $find) + strlen($find);
                $fHalf = substr($this->data, 0, $findPos);
                $sHalf = substr($this->data, $findPos, strlen($this->data) - $findPos);
                $this->data = $fHalf . $toInsert . $sHalf;
            }elseif( is_array($find) || is_object($find) )
            {
                $find = (array)$find;
                foreach( $find as $where )
                {
                    $this->insert($where);
                }
            }
        }
       
        public function append($text)
        {
            $this->data .= $text;
            die($this->data);
            return $this;
        }
       
       
        public function prepend($text)
        {
            $this->data = $text . $this->data;
            return $this;
        }
       
        public function truncate($maxlength,$truncatefocus) 
        {
            $newString = trim($this->data);
            $lenDifference = strlen($this->data) - $maxlength;
        
            if (strlen($newString) < $maxlength)
                return $newString;
        
            switch($truncatefocus) {
                case "left":
                    $newString = "..." . trim(substr($newString, $lenDifference));
                break;
                case "right":
                    $newString = trim(substr($newString, 0, (0 - $lenDifference))) . "...";
                break;
                case "middle":
                case "center":
                    $half = ceil($maxlength/2);
                    $fHalf = trim(substr($newString, 0, $half));
                    $lHalf = trim(substr($newString, (0 - $half)));
                    $newString = $fHalf . "..." . $lHalf;
                break;
            }
        
            $this->data = $newString;
        }
       
        public function cutoff($len, $from, $truncationIndicator = '...')
        {
            $dataLength = strlen($this->data);
            $lenDiff = $dataLength - $len;
           
            switch( $from )
            {
                case 'right':
                    $newString = substr($this->data, 0, $lenDiff) . $truncationIndicator;
                    break;
                   
                case 'left':
                    $newString = $truncationIndicator . substr($this->data, $len, $lenDiff );
                    break;
               
                case 'middle':
                case 'center':
                    $halfWayPoint = ceil($dataLength/2);
                    $lenDiffHalf = ceil($len/2);
                    $firstHalf = substr( $this->data, 0, $halfWayPoint - $lenDiffHalf);
                    $secondHalf = substr($this->data, $halfWayPoint + $lenDiffHalf, $halfWayPoint - $lenDiffHalf);
                    $newString = $firstHalf . $truncationIndicator . $secondHalf;
            }
           
            $this->data = $newString;
            return $this;
        }
}
Enfernikus is offline  
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
Part 2: Giving our Currency Conversion Script some Responsibility Wildhoney General 15 03-17-2009 02:53 PM
Nginx Rewrite Causing Wrong Path for PHP Script stewart General 0 11-09-2008 12:32 AM
Random Avatar Script FaceDancer Script Giveaway 1 08-22-2008 06:47 AM
hash() algorithm info script RobertK Script Giveaway 4 01-09-2008 03:00 PM
How Rdoanm is Rondam? Wildhoney General 3 09-19-2007 02:32 PM


All times are GMT. The time now is 01:08 PM.

 
     

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0
Inactive Reminders By Icora Web Design