View Single Post
Old 06-14-2009, 06:38 AM   #1 (permalink)
Enfernikus
The Addict
 
Enfernikus's Avatar
 
Join Date: Jun 2008
Posts: 335
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