144 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| 
 | |
| 	
 | |
| 	/**
 | |
| 	 * Blogdb lib
 | |
| 	 * provides access to the blog. 
 | |
| 	 *
 | |
| 	 * @author NoWhereMan <nowhereman@phreaker.net>
 | |
| 	 */
 | |
| 	
 | |
| 	/**
 | |
| 	 * entry id prefix and identifier
 | |
| 	 */
 | |
| 	define('BDB_ENTRY', 'entry');	
 | |
| 	/**
 | |
| 	 * comment id prefix and identifier
 | |
| 	 */
 | |
| 	define('BDB_COMMENT', 'comment');
 | |
| 	
 | |
| 	/**
 | |
| 	 * default file extension
 | |
| 	 */
 | |
| 	define('EXT', '.txt');
 | |
| 
 | |
| 	
 | |
| 	
 | |
| 
 | |
| 	/**
 | |
| 	 * function bdb_idtofile
 | |
| 	 *
 | |
| 	 * <p>Takes the id $id and returns a filepath</p>
 | |
| 	 *
 | |
| 	 * @param string $id string formatted like "prefixYYMMDD-HHMMSS.EXT"
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	function bdb_idtofile($id,$type=null) {
 | |
| 	
 | |
| 		$fname = $id.EXT;
 | |
| 		
 | |
| 		$date = date_from_id($id);
 | |
| 		
 | |
| 		if (!$date)
 | |
| 			return false;
 | |
| 		
 | |
| 		$path = CONTENT_DIR . $date['y'] . '/' . $date['m'] . '/';
 | |
| 		if ($type == null || $type == BDB_ENTRY) {
 | |
| 			$path .= $fname;
 | |
| 		} elseif ($type == BDB_COMMENT) {
 | |
| 			$path .= $id . '/comments/';
 | |
| 		}
 | |
| 		
 | |
| 		return $path;
 | |
| 		
 | |
| 	}
 | |
| 	
 | |
| 	
 | |
| 	/**
 | |
| 	 * function bdb_idfromtime
 | |
| 	 *
 | |
| 	 * <p>Returns a well formatted id for entry type specified in $type 
 | |
| 	 * and date eventually specified in $date; </p>
 | |
| 	 *
 | |
| 	 * @param string $type one of the BDB_ constants
 | |
| 	 * @param int $timestamp UNIX timestamp
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	function bdb_idfromtime($type, $timestamp=null) {
 | |
| 		if (!$timestamp)
 | |
| 			$timestamp=time();
 | |
| 			
 | |
| 		/*if (!ctype_digit($timestamp)) {
 | |
| 			trigger_error("bdb_idfromtime():
 | |
| 			$timestamp Not a valid timestamp", E_USER_WARNING);
 | |
| 		}*/
 | |
| 		return $type . date('ymd-His', $timestamp);
 | |
| 	}
 | |
| 	
 | |
| 	
 | |
| 	/**
 | |
| 	 * function bdb_filetoid
 | |
| 	 *
 | |
| 	 * <p>Cosmetic wrapper to basename($file, EXT)</p>
 | |
| 	 *
 | |
| 	 * @param string $file filepath of the blogdb entry
 | |
| 	 * @return string
 | |
| 	 *
 | |
| 	 * @todo validate returned id
 | |
| 	 */
 | |
| 	function bdb_filetoid($file) {
 | |
| 		
 | |
| 		return basename($file, EXT);
 | |
| 		
 | |
| 	}
 | |
| 	
 | |
| 	
 | |
| 	/**
 | |
| 	 * function bdb_parse_entry
 | |
| 	 *
 | |
| 	 * <p>Parses the entry file passed as parameter; returns an associative array
 | |
| 	 * of the file content</p>
 | |
| 	 * Tipically, entry arrays are usually made of these keys
 | |
| 	 * - VERSION	:	SimplePHPBlog or compatible blogs' version identifier string
 | |
| 	 * - SUBJECT 	:	Subject of the entry
 | |
| 	 * - CONTENT	:	Content of the entry
 | |
| 	 * - DATE		:	UNIX filestamp to format by {@link date_format()}.
 | |
| 	 * 
 | |
| 	 * comments usually provide also 
 | |
| 	 * - NAME 	:	author name
 | |
| 	 * - EMAIL	:	author email (if any)
 | |
| 	 * - URL	:	author website url (if any)
 | |
| 	 *
 | |
| 	 * A common usage of the function could be
 | |
| 	 * <code>
 | |
| 	 * <?php
 | |
| 	 * $entry = bdb_parse_entry(bdb_filetoid($myid));
 | |
| 	 * ?>
 | |
| 	 * </code>
 | |
| 	 *
 | |
| 	 * @param string $file filepath of the blogdb entry
 | |
| 	 * @return string
 | |
| 	 *
 | |
| 	 * @todo validate returned id
 | |
| 	 */
 | |
| 	function bdb_parse_entry($id, $type=null) {
 | |
| 	
 | |
| 		if (file_exists($id))
 | |
| 			$file = $id;
 | |
| 		else
 | |
| 			$file = bdb_idtofile($id, $type);
 | |
| 			
 | |
| 		
 | |
| 		if (file_exists($file)) {
 | |
| 			$contents = io_load_file($file);
 | |
| 			// TODO: here we must add compatibility to encoding conversion!
 | |
| 			// if "dumb" (legacy :D) mode is enabled (set to true in default.php, then we set parsing
 | |
| 			// to ignore array key case (defaults to true i.e. check them to be uppercase or failing otherwise
 | |
| 			$entry = utils_kexplode($contents, '|', !DUMB_MODE_ENABLED);
 | |
| 		
 | |
| 			return $entry;
 | |
| 		} else return false; 
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| ?>
 | 
