PHP Classes

File: phpodp.inc

Recommend this page to a friend!
  Classes of ryan   phpODP Class   phpodp.inc   Download  
File: phpodp.inc
Role: ???
Content type: text/plain
Description: Main class file.
Class: phpODP Class
Author: By
Last change:
Date: 24 years ago
Size: 7,375 bytes
 

Contents

Class file image Download
<?php // REMEMBER TO RENAME TO: phpodp.inc // phpODP.inc - Version 1.0 - PHP Class phpODP for use with ODP (dmoz.org) data retrieval // Copyright (c) 2000, Ryan Heggem. // URL: http://www.gren.addr.com/ // EMAIL: gren@addr.com // // Please send questions, comments, whatever to the email address above. // // A demo of what this class can do can be found at: // http://www.gren.addr.com/scripts/PHP/phpODP/directory.php // // Released under the GNU GPL. // http://www.gnu.org/copyleft/gpl.html // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // usage: // require('phpodp.inc'); // $odp = new phpODP; // $odp->_init(); // returns: // [ variable ] [ type ] [ description ] // $odp->dirs array array of the current dir level chopped up err somethin... // $odp->contents array dmoz.org gets split up into sections and put into this array // $odp->page_title string the page title of the catagory fetched // $odp->desc_file string html <a> tag w/ link to catagory description file if available // $odp->faq_file string html <a> tag w/ link to catagory faq file if available // $odp->a2z string html <a> tags w/ links to the single lettered catagories if available // $odp->catagories string html chunk of the sub-catagory listing // $odp->other_catagories string another (?) html chunk of the sub-directory listing // $odp->links string html chunk of all the links in the current catagory // TODO(s): // 1) make a function to replace this line of code to check/set a cache'd (is that even a word?) version of the current catagory // ^------ SEE TODO#1 IN THE CODE BELOW // 2) add a little search box like the real ODP catagories // 3) add an editors variable (array?) to help list out all the editors of a certain catagory class phpODP { function _init() { global $SERVER_NAME, $SCRIPT_NAME, $PATH_INFO, $PHP_SELF; if(empty($PATH_INFO)){ header('Location: http://' . $SERVER_NAME . '' . $SCRIPT_NAME . '/Computers/'); } // misc stuff... $this->dirs = explode('/', preg_replace('|^/(.*)/$|', '\\1', $PATH_INFO)); // spit out each section of a dmoz.org catagory into an array // TODO #1: $this->contents = explode('<hr>', implode('', file('http://dmoz.org' . $PATH_INFO) ) ); // get page title eregi('<title>(.*)</title>', $this->contents[0], $tmp_page_title); $this->page_title = $tmp_page_title[1]; // check for description and faq files, then set up links to them $this->desc_file = (preg_match('|desc.html|i', $this->contents[0])) ? ' <a href="http://dmoz.org' . $PATH_INFO . 'desc.html">Description</a> ' : ''; $this->faq_file = (preg_match('|faq.html|i', $this->contents[0])) ? ' <a href="http://dmoz.org' . $PATH_INFO . 'faq.html">FAQ</a> ' : ''; // check for an A-Z catagory listing, then set up links to each one $a2zA = explode(',', strtoupper('a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z')); if(preg_match('|/[A-Z]/|i', $this->contents[0])){ for($z=0;$z<=25;$z++){ $sfx = ($z != 25) ? ' / ' : ''; $this->a2z .= '<a href="' . $PHP_SELF . $a2zA[$z] . '/">' . $a2zA[$z] . '</a>' . $sfx; } } else{ $this->a2z = ''; } // this chunk of code... // goes through each array element of $contents to see what's what // replaces all the dmoz.org relative links with a local version // sets a <font> tag in <td> tags to make the text in them look nice // sets <img> tags to point to dmoz.org if(preg_match('|href="/|i', $this->contents[1])){ $this->catagories = preg_replace('|href="/(.*)"|im', 'href="' . $SCRIPT_NAME . '/\\1"', preg_replace('|(<td valign=top>)|im', '\\1<font face="Arial, Helvetica" size="2">', preg_replace('|(</td>)|im', '</font>\\1', $this->contents[1]))); if(preg_match('|href="/|i', $this->contents[2])){ $this->other_catagories = preg_replace('|href="/(.*)"|im', 'href="' . $SCRIPT_NAME . '/\\1"', preg_replace('|(<td valign=top>)|im', '\\1<font face="Arial, Helvetica" size="2">', preg_replace('|(</td>)|im', '</font>\\1', $this->contents[2]))); if(preg_match('|<li><a href="http://|i', $this->contents[3])){ $this->links = preg_replace('|src="/(.*)"|im', 'src="http://dmoz.org/\\1"', $this->contents[3]); } else{ $this->links = ''; } } elseif(preg_match('|<li><a href="http://|i', $this->contents[2])){ $this->links = preg_replace('|src="/(.*)"|im', 'src="http://dmoz.org/\\1"', $this->contents[2]); } else{ $this->other_catagories = ''; $this->links = ''; } } elseif(preg_match('|<li><a href="http://|i', $this->contents[1])){ $this->links = preg_replace('|src="/(.*)"|im', 'src="http://dmoz.org/\\1"', $this->contents[1]); } else{ $this->catagories = ''; $this->other_catagories = ''; $this->links = ''; } } } ?>