]> projects.mako.cc - scuttle/commitdiff
- Updated default filetypes used for system tags
authorMarcus Campbell <marcus.campbell@gmail.com>
Tue, 28 Dec 2010 07:07:14 +0000 (23:07 -0800)
committerMarcus Campbell <marcus.campbell@gmail.com>
Tue, 28 Dec 2010 07:07:14 +0000 (23:07 -0800)
- Added support for RSS media enclosures
- Restricted registration fields to match DB limits
- Updated debug mode activation
- Updated form style
- Minor code style updates

Signed-off-by: Marcus Campbell <marcus.campbell@gmail.com>
13 files changed:
AUTHORS
config.inc.php.example
debug.inc.php
edit.php
functions.inc.php
header.inc.php
jsScuttle.php
readme.txt
rss.php
scuttle.css
templates/register.tpl.php
templates/rss.tpl.php
templates/top.inc.php

diff --git a/AUTHORS b/AUTHORS
index 998ffe8bdd38d4a81d86a0489d872abac7ef863c..232a9cf8e57a1815a54ba9c44d331f6965d981d0 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,5 +1,8 @@
 Scuttle contains code from the following open-source projects:
 
+Drupal
+http://www.drupal.org/
+
 jQuery
 http://www.jquery.com/
 
index a8c32c9cb264d3b72b246cf94c0caa85bdeb0dd0..9d52a2fb3fda85683046b7da92a7e778394e76f7 100644 (file)
@@ -120,18 +120,19 @@ $useredir          = FALSE;
 $url_redir         = 'http://www.google.com/url?sa=D&q=';
 
 $filetypes         = array(
-                       'audio' => array('mp3', 'ogg', 'wav'),
-                       'document' => array('doc', 'odt', 'pdf'),
-                       'image' => array('gif', 'jpeg', 'jpg', 'png'),
-                       'video' => array('avi', 'mov', 'mp4', 'mpeg', 'mpg', 'wmv')
+                      'audio'      => array('aac', 'mp3', 'm4a', 'oga', 'ogg', 'wav'),
+                      'document'   => array('doc', 'docx', 'odt', 'pages', 'pdf', 'txt'),
+                      'image'      => array('gif', 'jpe', 'jpeg', 'jpg', 'png', 'svg'),
+                      'bittorrent' => array('torrent'),
+                      'video'      => array('avi', 'flv', 'mov', 'mp4', 'mpeg', 'mpg', 'm4v', 'ogv', 'wmv')
                      );
 
 $reservedusers     = array('all', 'watchlist');
 
 $email_whitelist   = NULL;
 $email_blacklist   = array(
-                       '/(.*-){2,}/',
-                        '/mailinator\.com/i'
+                      '/(.*-){2,}/',
+                      '/mailinator\.com/i'
                      );
 
 include_once 'debug.inc.php';
index 346140afc8e5eaeb214e4d3ed0d4e0bad3cb2207..2c5a977b447da0081c6ecd4889f26ee4fe8df266 100644 (file)
@@ -1,15 +1,16 @@
 <?php
 // Turn debugging on
-define('SCUTTLE_DEBUG', TRUE);
+define('SCUTTLE_DEBUG', FALSE);
 
 // generic debugging function
 // Sample:
 //     pc_debug(__FILE__, __LINE__, "This is a debug message.");
 
 function pc_debug($file, $line, $message) {
-    if (defined('SCUTTLE_DEBUG') && SCUTTLE_DEBUG) {
-        error_log("---DEBUG-". $sitename .": [$file][$line]: $message");
-    } else {
-        error_log("SCUTTLE_DEBUG disabled");
-    }
+  if (defined('SCUTTLE_DEBUG') && SCUTTLE_DEBUG) {
+    error_log("---DEBUG-". $sitename .": [$file][$line]: $message");
+  }
+  else {
+    error_log("SCUTTLE_DEBUG disabled");
+  }
 }
index bae38e42654c4ad62dc098669380f32255e41201..fbbc083a798798ea7b7f0ba45d54aab68b54d89d 100644 (file)
--- a/edit.php
+++ b/edit.php
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
-Copyright (c) 2004 - 2006 Marcus Campbell
+Copyright (c) 2004 - 2010 Marcus Campbell
 http://scuttle.org/
 
 This program is free software; you can redistribute it and/or modify
@@ -20,17 +20,18 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 require_once 'header.inc.php';
 
-$bookmarkservice = & ServiceFactory::getServiceInstance('BookmarkService');
-$templateservice = & ServiceFactory::getServiceInstance('TemplateService');
-$userservice     = & ServiceFactory::getServiceInstance('UserService');
+$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
+$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
+$userservice     =& ServiceFactory::getServiceInstance('UserService');
 
 // Header variables
 $tplVars['subtitle'] = T_('Edit Bookmark');
-$tplVars['loadjs'] = true;
+$tplVars['loadjs']   = TRUE;
 
 list ($url, $bookmark) = explode('/', $_SERVER['PATH_INFO']);
+
 if (!($row = $bookmarkservice->getBookmark(intval($bookmark), true))) {
-    $tplVars['error'] = sprintf(T_('Bookmark with id %s not was not found'), $bookmark);
+    $tplVars['error'] = sprintf(T_('Bookmark with id %s was not found'), $bookmark);
     $templateservice->loadTemplate('error.404.tpl', $tplVars);
     exit();
 } else {
@@ -89,4 +90,3 @@ if (!($row = $bookmarkservice->getBookmark(intval($bookmark), true))) {
     $tplVars['referrer'] = $_SERVER['HTTP_REFERER'];
     $templateservice->loadTemplate('editbookmark.tpl', $tplVars);
 }
-?>
index c9ef2f6173344cea4ac649967cafe86ffafd9566..c32fa683ed14d9d03d4233bc4cfe2f1388cd864d 100644 (file)
@@ -14,12 +14,12 @@ T_textdomain($domain);
 // - direction = out: convert spaces to underscores;
 // - direction = in: convert underscores to spaces.
 function convertTag($tag, $direction = 'out') {
-    if ($direction == 'out') {
-        $tag = str_replace(' ', '_', $tag);
-    } else {
-        $tag = str_replace('_', ' ', $tag);
-    }
-    return $tag;
+  if ($direction == 'out') {
+    return str_replace(' ', '_', $tag);
+  }
+  else {
+    return str_replace('_', ' ', $tag);
+  }
 }
 
 function filter($data, $type = NULL) {
@@ -44,8 +44,8 @@ function filter($data, $type = NULL) {
 }
 
 function getPerPageCount() {
-    global $defaultPerPage;
-    return $defaultPerPage;
+  global $defaultPerPage;
+  return $defaultPerPage;
 }
 
 function getSortOrder($override = NULL) {
@@ -69,17 +69,17 @@ function multi_array_search($needle, $haystack) {
                 $return = $result;
                 array_unshift($return, $key);
                 return $return;
-            } elseif ($result == true) {
+            } elseif ($result == TRUE) {
                 $return[] = $key;
                 return $return;
             }
         }
-        return false;
+        return FALSE;
     } else {
         if ($needle === $haystack) {
-            return true;
+            return TRUE;
         } else {
-            return false;
+            return FALSE;
         }
     }
 }
@@ -92,68 +92,455 @@ function createURL($page = '', $ending = '') {
     return $root . $page .'/'. $ending;
 }
 
+/**
+ * Return the size of the given file in bytes
+ */
+function file_get_filesize($filename) {
+  if (function_exists('curl_init')) {
+    $ch = curl_init($filename);
+    curl_setopt($ch, CURLOPT_NOBODY, TRUE);
+    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
+    curl_setopt($ch, CURLOPT_HEADER, TRUE);
+    $data = curl_exec($ch);
+    curl_close($ch);
+
+    if (FALSE !== $data && preg_match('/Content-Length: (\d+)/', $data, $matches)) {
+      return (float)$matches[1];
+    }
+  }
+  return FALSE;
+}
+
+/**
+ * Determine MIME type from a filename
+ */
+function file_get_mimetype($filename, $mapping = NULL) {
+  if (!is_array($mapping)) {
+    $mapping = array(
+      'ez' => 'application/andrew-inset', 
+      'atom' => 'application/atom', 
+      'atomcat' => 'application/atomcat+xml', 
+      'atomsrv' => 'application/atomserv+xml', 
+      'cap|pcap' => 'application/cap', 
+      'cu' => 'application/cu-seeme', 
+      'tsp' => 'application/dsptype', 
+      'spl' => 'application/x-futuresplash', 
+      'hta' => 'application/hta', 
+      'jar' => 'application/java-archive', 
+      'ser' => 'application/java-serialized-object', 
+      'class' => 'application/java-vm', 
+      'hqx' => 'application/mac-binhex40', 
+      'cpt' => 'image/x-corelphotopaint', 
+      'nb' => 'application/mathematica', 
+      'mdb' => 'application/msaccess', 
+      'doc|dot' => 'application/msword', 
+      'bin' => 'application/octet-stream', 
+      'oda' => 'application/oda', 
+      'ogg|ogx' => 'application/ogg', 
+      'pdf' => 'application/pdf', 
+      'key' => 'application/pgp-keys', 
+      'pgp' => 'application/pgp-signature', 
+      'prf' => 'application/pics-rules', 
+      'ps|ai|eps' => 'application/postscript', 
+      'rar' => 'application/rar', 
+      'rdf' => 'application/rdf+xml', 
+      'rss' => 'application/rss+xml', 
+      'rtf' => 'application/rtf', 
+      'smi|smil' => 'application/smil', 
+      'wpd' => 'application/wordperfect', 
+      'wp5' => 'application/wordperfect5.1', 
+      'xhtml|xht' => 'application/xhtml+xml', 
+      'xml|xsl' => 'application/xml', 
+      'zip' => 'application/zip', 
+      'cdy' => 'application/vnd.cinderella', 
+      'kml' => 'application/vnd.google-earth.kml+xml', 
+      'kmz' => 'application/vnd.google-earth.kmz', 
+      'xul' => 'application/vnd.mozilla.xul+xml', 
+      'xls|xlb|xlt' => 'application/vnd.ms-excel', 
+      'cat' => 'application/vnd.ms-pki.seccat', 
+      'stl' => 'application/vnd.ms-pki.stl', 
+      'ppt|pps' => 'application/vnd.ms-powerpoint', 
+      'odc' => 'application/vnd.oasis.opendocument.chart', 
+      'odb' => 'application/vnd.oasis.opendocument.database', 
+      'odf' => 'application/vnd.oasis.opendocument.formula', 
+      'odg' => 'application/vnd.oasis.opendocument.graphics', 
+      'otg' => 'application/vnd.oasis.opendocument.graphics-template', 
+      'odi' => 'application/vnd.oasis.opendocument.image', 
+      'odp' => 'application/vnd.oasis.opendocument.presentation', 
+      'otp' => 'application/vnd.oasis.opendocument.presentation-template', 
+      'ods' => 'application/vnd.oasis.opendocument.spreadsheet', 
+      'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', 
+      'odt' => 'application/vnd.oasis.opendocument.text', 
+      'odm' => 'application/vnd.oasis.opendocument.text-master', 
+      'ott' => 'application/vnd.oasis.opendocument.text-template', 
+      'oth' => 'application/vnd.oasis.opendocument.text-web', 
+      'docm' => 'application/vnd.ms-word.document.macroEnabled.12', 
+      'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 
+      'dotm' => 'application/vnd.ms-word.template.macroEnabled.12', 
+      'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', 
+      'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12', 
+      'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', 
+      'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12', 
+      'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12', 
+      'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 
+      'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', 
+      'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 
+      'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', 
+      'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', 
+      'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12', 
+      'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 
+      'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12', 
+      'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', 
+      'cod' => 'application/vnd.rim.cod', 
+      'mmf' => 'application/vnd.smaf', 
+      'sdc' => 'application/vnd.stardivision.calc', 
+      'sds' => 'application/vnd.stardivision.chart', 
+      'sda' => 'application/vnd.stardivision.draw', 
+      'sdd' => 'application/vnd.stardivision.impress', 
+      'sdf' => 'application/vnd.stardivision.math', 
+      'sdw' => 'application/vnd.stardivision.writer', 
+      'sgl' => 'application/vnd.stardivision.writer-global', 
+      'sxc' => 'application/vnd.sun.xml.calc', 
+      'stc' => 'application/vnd.sun.xml.calc.template', 
+      'sxd' => 'application/vnd.sun.xml.draw', 
+      'std' => 'application/vnd.sun.xml.draw.template', 
+      'sxi' => 'application/vnd.sun.xml.impress', 
+      'sti' => 'application/vnd.sun.xml.impress.template', 
+      'sxm' => 'application/vnd.sun.xml.math', 
+      'sxw' => 'application/vnd.sun.xml.writer', 
+      'sxg' => 'application/vnd.sun.xml.writer.global', 
+      'stw' => 'application/vnd.sun.xml.writer.template', 
+      'sis' => 'application/vnd.symbian.install', 
+      'vsd' => 'application/vnd.visio', 
+      'wbxml' => 'application/vnd.wap.wbxml', 
+      'wmlc' => 'application/vnd.wap.wmlc', 
+      'wmlsc' => 'application/vnd.wap.wmlscriptc', 
+      'wk' => 'application/x-123', 
+      '7z' => 'application/x-7z-compressed', 
+      'abw' => 'application/x-abiword', 
+      'dmg' => 'application/x-apple-diskimage', 
+      'bcpio' => 'application/x-bcpio', 
+      'torrent' => 'application/x-bittorrent', 
+      'cab' => 'application/x-cab', 
+      'cbr' => 'application/x-cbr', 
+      'cbz' => 'application/x-cbz', 
+      'cdf' => 'application/x-cdf', 
+      'vcd' => 'application/x-cdlink', 
+      'pgn' => 'application/x-chess-pgn', 
+      'cpio' => 'application/x-cpio', 
+      'csh' => 'text/x-csh', 
+      'deb|udeb' => 'application/x-debian-package', 
+      'dcr|dir|dxr' => 'application/x-director', 
+      'dms' => 'application/x-dms', 
+      'wad' => 'application/x-doom', 
+      'dvi' => 'application/x-dvi', 
+      'rhtml' => 'application/x-httpd-eruby',
+      'pages' => 'application/x-iwork-pages-sffpages',
+      'flac' => 'application/x-flac', 
+      'pfa|pfb|gsf|pcf|pcf.Z' => 'application/x-font', 
+      'mm' => 'application/x-freemind', 
+      'gnumeric' => 'application/x-gnumeric', 
+      'sgf' => 'application/x-go-sgf', 
+      'gcf' => 'application/x-graphing-calculator', 
+      'gtar|tgz|taz' => 'application/x-gtar', 
+      'hdf' => 'application/x-hdf', 
+      'phtml|pht|php' => 'application/x-httpd-php', 
+      'phps' => 'application/x-httpd-php-source', 
+      'php3' => 'application/x-httpd-php3', 
+      'php3p' => 'application/x-httpd-php3-preprocessed', 
+      'php4' => 'application/x-httpd-php4', 
+      'ica' => 'application/x-ica', 
+      'ins|isp' => 'application/x-internet-signup', 
+      'iii' => 'application/x-iphone', 
+      'iso' => 'application/x-iso9660-image', 
+      'jnlp' => 'application/x-java-jnlp-file', 
+      'js' => 'application/x-javascript', 
+      'jmz' => 'application/x-jmol', 
+      'chrt' => 'application/x-kchart', 
+      'kil' => 'application/x-killustrator', 
+      'skp|skd|skt|skm' => 'application/x-koan', 
+      'kpr|kpt' => 'application/x-kpresenter', 
+      'ksp' => 'application/x-kspread', 
+      'kwd|kwt' => 'application/x-kword', 
+      'latex' => 'application/x-latex', 
+      'lha' => 'application/x-lha', 
+      'lyx' => 'application/x-lyx', 
+      'lzh' => 'application/x-lzh', 
+      'lzx' => 'application/x-lzx', 
+      'frm|maker|frame|fm|fb|book|fbdoc' => 'application/x-maker', 
+      'mif' => 'application/x-mif', 
+      'wmd' => 'application/x-ms-wmd', 
+      'wmz' => 'application/x-ms-wmz', 
+      'com|exe|bat|dll' => 'application/x-msdos-program', 
+      'msi' => 'application/x-msi', 
+      'nc' => 'application/x-netcdf', 
+      'pac' => 'application/x-ns-proxy-autoconfig', 
+      'nwc' => 'application/x-nwc', 
+      'o' => 'application/x-object', 
+      'oza' => 'application/x-oz-application', 
+      'p7r' => 'application/x-pkcs7-certreqresp', 
+      'crl' => 'application/x-pkcs7-crl', 
+      'pyc|pyo' => 'application/x-python-code', 
+      'qtl' => 'application/x-quicktimeplayer', 
+      'rpm' => 'application/x-redhat-package-manager', 
+      'sh' => 'text/x-sh', 
+      'shar' => 'application/x-shar', 
+      'swf|swfl' => 'application/x-shockwave-flash', 
+      'sit|sitx' => 'application/x-stuffit', 
+      'sv4cpio' => 'application/x-sv4cpio', 
+      'sv4crc' => 'application/x-sv4crc', 
+      'tar' => 'application/x-tar', 
+      'tcl' => 'application/x-tcl', 
+      'gf' => 'application/x-tex-gf', 
+      'pk' => 'application/x-tex-pk', 
+      'texinfo|texi' => 'application/x-texinfo', 
+      '~|%|bak|old|sik' => 'application/x-trash', 
+      't|tr|roff' => 'application/x-troff', 
+      'man' => 'application/x-troff-man', 
+      'me' => 'application/x-troff-me', 
+      'ms' => 'application/x-troff-ms', 
+      'ustar' => 'application/x-ustar', 
+      'src' => 'application/x-wais-source', 
+      'wz' => 'application/x-wingz', 
+      'crt' => 'application/x-x509-ca-cert', 
+      'xcf' => 'application/x-xcf', 
+      'fig' => 'application/x-xfig', 
+      'xpi' => 'application/x-xpinstall',
+      'aac' => 'audio/aac',
+      'au|snd' => 'audio/basic', 
+      'mid|midi|kar' => 'audio/midi', 
+      'mpga|mpega|mp2|mp3|m4a' => 'audio/mpeg', 
+      'f4a|f4b' => 'audio/mp4', 
+      'm3u' => 'audio/x-mpegurl', 
+      'oga|spx' => 'audio/ogg', 
+      'sid' => 'audio/prs.sid', 
+      'aif|aiff|aifc' => 'audio/x-aiff', 
+      'gsm' => 'audio/x-gsm', 
+      'wma' => 'audio/x-ms-wma', 
+      'wax' => 'audio/x-ms-wax', 
+      'ra|rm|ram' => 'audio/x-pn-realaudio', 
+      'ra' => 'audio/x-realaudio', 
+      'pls' => 'audio/x-scpls', 
+      'sd2' => 'audio/x-sd2', 
+      'wav' => 'audio/x-wav', 
+      'alc' => 'chemical/x-alchemy', 
+      'cac|cache' => 'chemical/x-cache', 
+      'csf' => 'chemical/x-cache-csf', 
+      'cbin|cascii|ctab' => 'chemical/x-cactvs-binary', 
+      'cdx' => 'chemical/x-cdx', 
+      'cer' => 'chemical/x-cerius', 
+      'c3d' => 'chemical/x-chem3d', 
+      'chm' => 'chemical/x-chemdraw', 
+      'cif' => 'chemical/x-cif', 
+      'cmdf' => 'chemical/x-cmdf', 
+      'cml' => 'chemical/x-cml', 
+      'cpa' => 'chemical/x-compass', 
+      'bsd' => 'chemical/x-crossfire', 
+      'csml|csm' => 'chemical/x-csml', 
+      'ctx' => 'chemical/x-ctx', 
+      'cxf|cef' => 'chemical/x-cxf', 
+      'emb|embl' => 'chemical/x-embl-dl-nucleotide', 
+      'spc' => 'chemical/x-galactic-spc', 
+      'inp|gam|gamin' => 'chemical/x-gamess-input', 
+      'fch|fchk' => 'chemical/x-gaussian-checkpoint', 
+      'cub' => 'chemical/x-gaussian-cube', 
+      'gau|gjc|gjf' => 'chemical/x-gaussian-input', 
+      'gal' => 'chemical/x-gaussian-log', 
+      'gcg' => 'chemical/x-gcg8-sequence', 
+      'gen' => 'chemical/x-genbank', 
+      'hin' => 'chemical/x-hin', 
+      'istr|ist' => 'chemical/x-isostar', 
+      'jdx|dx' => 'chemical/x-jcamp-dx', 
+      'kin' => 'chemical/x-kinemage', 
+      'mcm' => 'chemical/x-macmolecule', 
+      'mmd|mmod' => 'chemical/x-macromodel-input', 
+      'mol' => 'chemical/x-mdl-molfile', 
+      'rd' => 'chemical/x-mdl-rdfile', 
+      'rxn' => 'chemical/x-mdl-rxnfile', 
+      'sd|sdf' => 'chemical/x-mdl-sdfile', 
+      'tgf' => 'chemical/x-mdl-tgf', 
+      'mcif' => 'chemical/x-mmcif', 
+      'mol2' => 'chemical/x-mol2', 
+      'b' => 'chemical/x-molconn-Z', 
+      'gpt' => 'chemical/x-mopac-graph', 
+      'mop|mopcrt|mpc|dat|zmt' => 'chemical/x-mopac-input', 
+      'moo' => 'chemical/x-mopac-out', 
+      'mvb' => 'chemical/x-mopac-vib', 
+      'asn' => 'chemical/x-ncbi-asn1-spec', 
+      'prt|ent' => 'chemical/x-ncbi-asn1-ascii', 
+      'val|aso' => 'chemical/x-ncbi-asn1-binary', 
+      'pdb|ent' => 'chemical/x-pdb', 
+      'ros' => 'chemical/x-rosdal', 
+      'sw' => 'chemical/x-swissprot', 
+      'vms' => 'chemical/x-vamas-iso14976', 
+      'vmd' => 'chemical/x-vmd', 
+      'xtel' => 'chemical/x-xtel', 
+      'xyz' => 'chemical/x-xyz', 
+      'gif' => 'image/gif', 
+      'ief' => 'image/ief', 
+      'jpeg|jpg|jpe' => 'image/jpeg', 
+      'pcx' => 'image/pcx', 
+      'png' => 'image/png', 
+      'svg|svgz' => 'image/svg+xml', 
+      'tiff|tif' => 'image/tiff', 
+      'djvu|djv' => 'image/vnd.djvu', 
+      'wbmp' => 'image/vnd.wap.wbmp', 
+      'ras' => 'image/x-cmu-raster', 
+      'cdr' => 'image/x-coreldraw', 
+      'pat' => 'image/x-coreldrawpattern', 
+      'cdt' => 'image/x-coreldrawtemplate', 
+      'ico' => 'image/x-icon', 
+      'art' => 'image/x-jg', 
+      'jng' => 'image/x-jng', 
+      'bmp' => 'image/x-ms-bmp', 
+      'psd' => 'image/x-photoshop', 
+      'pnm' => 'image/x-portable-anymap', 
+      'pbm' => 'image/x-portable-bitmap', 
+      'pgm' => 'image/x-portable-graymap', 
+      'ppm' => 'image/x-portable-pixmap', 
+      'rgb' => 'image/x-rgb', 
+      'xbm' => 'image/x-xbitmap', 
+      'xpm' => 'image/x-xpixmap', 
+      'xwd' => 'image/x-xwindowdump', 
+      'eml' => 'message/rfc822', 
+      'igs|iges' => 'model/iges', 
+      'msh|mesh|silo' => 'model/mesh', 
+      'wrl|vrml' => 'model/vrml', 
+      'ics|icz' => 'text/calendar', 
+      'css' => 'text/css', 
+      'csv' => 'text/csv', 
+      '323' => 'text/h323', 
+      'html|htm|shtml' => 'text/html', 
+      'uls' => 'text/iuls', 
+      'mml' => 'text/mathml', 
+      'asc|txt|text|pot' => 'text/plain', 
+      'rtx' => 'text/richtext', 
+      'sct|wsc' => 'text/scriptlet', 
+      'tm|ts' => 'text/texmacs', 
+      'tsv' => 'text/tab-separated-values', 
+      'jad' => 'text/vnd.sun.j2me.app-descriptor', 
+      'wml' => 'text/vnd.wap.wml', 
+      'wmls' => 'text/vnd.wap.wmlscript', 
+      'bib' => 'text/x-bibtex', 
+      'boo' => 'text/x-boo', 
+      'h++|hpp|hxx|hh' => 'text/x-c++hdr', 
+      'c++|cpp|cxx|cc' => 'text/x-c++src', 
+      'h' => 'text/x-chdr', 
+      'htc' => 'text/x-component', 
+      'c' => 'text/x-csrc', 
+      'd' => 'text/x-dsrc', 
+      'diff|patch' => 'text/x-diff', 
+      'hs' => 'text/x-haskell', 
+      'java' => 'text/x-java', 
+      'lhs' => 'text/x-literate-haskell', 
+      'moc' => 'text/x-moc', 
+      'p|pas' => 'text/x-pascal', 
+      'gcd' => 'text/x-pcs-gcd', 
+      'pl|pm' => 'text/x-perl', 
+      'py' => 'text/x-python', 
+      'etx' => 'text/x-setext', 
+      'tcl|tk' => 'text/x-tcl', 
+      'tex|ltx|sty|cls' => 'text/x-tex', 
+      'vcs' => 'text/x-vcalendar', 
+      'vcf' => 'text/x-vcard', 
+      '3gp' => 'video/3gpp', 
+      'dl' => 'video/dl', 
+      'dif|dv' => 'video/dv', 
+      'fli' => 'video/fli', 
+      'gl' => 'video/gl', 
+      'mpeg|mpg|mpe' => 'video/mpeg', 
+      'mp4|f4v|f4p' => 'video/mp4', 
+      'flv' => 'video/x-flv', 
+      'ogv' => 'video/ogg', 
+      'qt|mov' => 'video/quicktime', 
+      'mxu' => 'video/vnd.mpegurl', 
+      'lsf|lsx' => 'video/x-la-asf', 
+      'mng' => 'video/x-mng', 
+      'asf|asx' => 'video/x-ms-asf', 
+      'wm' => 'video/x-ms-wm', 
+      'wmv' => 'video/x-ms-wmv', 
+      'wmx' => 'video/x-ms-wmx', 
+      'wvx' => 'video/x-ms-wvx', 
+      'avi' => 'video/x-msvideo', 
+      'm4v' => 'video/x-m4v',
+      'movie' => 'video/x-sgi-movie', 
+      'ice' => 'x-conference/x-cooltalk', 
+      'sisx' => 'x-epoc/x-sisx-app', 
+      'vrm|vrml|wrl' => 'x-world/x-vrml', 
+      'xps' => 'application/vnd.ms-xpsdocument',
+    );
+  }
+  foreach ($mapping as $ext_preg => $mime_match) {
+    if (preg_match('!\.(' . $ext_preg . ')$!i', $filename)) {
+      return $mime_match;
+    }
+  }
+
+  return 'application/octet-stream';
+}
+
 function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '', $err_file = '', $sql = '', $db = NULL) {
     if(defined('HAS_DIED'))
         die(T_('message_die() was called multiple times.'));
     define('HAS_DIED', 1);
-       
-       $sql_store = $sql;
-       
-       // Get SQL error if we are debugging. Do this as soon as possible to prevent 
-       // subsequent queries from overwriting the status of sql_error()
-       if (DEBUG && ($msg_code == GENERAL_ERROR || $msg_code == CRITICAL_ERROR)) {
-               $sql_error = is_null($db) ? '' : $db->sql_error();
-               $debug_text = '';
-               
-               if ($sql_error['message'] != '')
-                       $debug_text .= '<br /><br />'. T_('SQL Error') .' : '. $sql_error['code'] .' '. $sql_error['message'];
-
-               if ($sql_store != '')
-                       $debug_text .= '<br /><br />'. $sql_store;
-
-               if ($err_line != '' && $err_file != '')
-                       $debug_text .= '</br /><br />'. T_('Line') .' : '. $err_line .'<br />'. T_('File') .' :'. $err_file;
-       }
-
-       switch($msg_code) {
-               case GENERAL_MESSAGE:
-                       if ($msg_title == '')
-                               $msg_title = T_('Information');
-                       break;
-
-               case CRITICAL_MESSAGE:
-                       if ($msg_title == '')
-                               $msg_title = T_('Critical Information');
-                       break;
-
-               case GENERAL_ERROR:
-                       if ($msg_text == '')
-                               $msg_text = T_('An error occured');
-
-                       if ($msg_title == '')
-                               $msg_title = T_('General Error');
-                       break;
-
-               case CRITICAL_ERROR:
-                       // Critical errors mean we cannot rely on _ANY_ DB information being
-                       // available so we're going to dump out a simple echo'd statement
-
-                       if ($msg_text == '')
-                               $msg_text = T_('An critical error occured');
-
-                       if ($msg_title == '')
-                               $msg_title = T_('Critical Error');
-                       break;
-       }
-
-       // Add on DEBUG info if we've enabled debug mode and this is an error. This
-       // prevents debug info being output for general messages should DEBUG be
-       // set TRUE by accident (preventing confusion for the end user!)
-       if (DEBUG && ($msg_code == GENERAL_ERROR || $msg_code == CRITICAL_ERROR)) {
-               if ($debug_text != '')
-                       $msg_text = $msg_text . '<br /><br /><strong>'. T_('DEBUG MODE') .'</strong>'. $debug_text;
-       }
-
-       echo "<html>\n<body>\n". $msg_title ."\n<br /><br />\n". $msg_text ."</body>\n</html>";
-       exit;
+  
+  $sql_store = $sql;
+  
+  // Get SQL error if we are debugging. Do this as soon as possible to prevent 
+  // subsequent queries from overwriting the status of sql_error()
+  if (DEBUG && ($msg_code == GENERAL_ERROR || $msg_code == CRITICAL_ERROR)) {
+    $sql_error = is_null($db) ? '' : $db->sql_error();
+    $debug_text = '';
+    
+    if ($sql_error['message'] != '')
+      $debug_text .= '<br /><br />'. T_('SQL Error') .' : '. $sql_error['code'] .' '. $sql_error['message'];
+
+    if ($sql_store != '')
+      $debug_text .= '<br /><br />'. $sql_store;
+
+    if ($err_line != '' && $err_file != '')
+      $debug_text .= '</br /><br />'. T_('Line') .' : '. $err_line .'<br />'. T_('File') .' :'. $err_file;
+  }
+
+  switch($msg_code) {
+    case GENERAL_MESSAGE:
+      if ($msg_title == '')
+        $msg_title = T_('Information');
+      break;
+
+    case CRITICAL_MESSAGE:
+      if ($msg_title == '')
+        $msg_title = T_('Critical Information');
+      break;
+
+    case GENERAL_ERROR:
+      if ($msg_text == '')
+        $msg_text = T_('An error occured');
+
+      if ($msg_title == '')
+        $msg_title = T_('General Error');
+      break;
+
+    case CRITICAL_ERROR:
+      // Critical errors mean we cannot rely on _ANY_ DB information being
+      // available so we're going to dump out a simple echo'd statement
+
+      if ($msg_text == '')
+        $msg_text = T_('An critical error occured');
+
+      if ($msg_title == '')
+        $msg_title = T_('Critical Error');
+      break;
+  }
+
+  // Add on DEBUG info if we've enabled debug mode and this is an error. This
+  // prevents debug info being output for general messages should DEBUG be
+  // set TRUE by accident (preventing confusion for the end user!)
+  if (DEBUG && ($msg_code == GENERAL_ERROR || $msg_code == CRITICAL_ERROR)) {
+    if ($debug_text != '')
+      $msg_text = $msg_text . '<br /><br /><strong>'. T_('DEBUG MODE') .'</strong>'. $debug_text;
+  }
+
+  echo "<html>\n<body>\n". $msg_title ."\n<br /><br />\n". $msg_text ."</body>\n</html>";
+  exit;
 }
index 1002aab5c2f640d274a51a93fc695df332d0ada8..d3c6ed898927f26e7cc5d5e6d4e7f57c13a94daa 100644 (file)
@@ -1,8 +1,4 @@
 <?php
-ini_set('display_errors', '1');
-ini_set('mysql.trace_mode', '0');
-
-error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);
 session_start();
 
 require_once dirname(__FILE__) .'/services/servicefactory.php';
@@ -11,24 +7,34 @@ require_once dirname(__FILE__) .'/functions.inc.php';
 
 // Determine the base URL
 if (!isset($root)) {
-    $pieces = explode('/', $_SERVER['SCRIPT_NAME']);
-    $root   = '/';
-    foreach ($pieces as $piece) {
-        if ($piece != '' && !strstr($piece, '.php')) {
-            $root .= $piece .'/';
-        }
-    }
-    if (($root != '/') && (substr($root, -1, 1) != '/')) {
-        $root .= '/';
+  $pieces = explode('/', $_SERVER['SCRIPT_NAME']);
+  $root   = '/';
+  foreach ($pieces as $piece) {
+    if ($piece != '' && !strstr($piece, '.php')) {
+      $root .= $piece .'/';
     }
-    $path = $root;
+  }
+  if (($root != '/') && (substr($root, -1, 1) != '/')) {
+    $root .= '/';
+  }
+  $path = $root;
 
-    $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
-    $root     = $protocol .'://'. $_SERVER['HTTP_HOST'] . $root;
+  $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
+  $root     = $protocol .'://'. $_SERVER['HTTP_HOST'] . $root;
 }
 
 define('GENERAL_MESSAGE',  200);
 define('GENERAL_ERROR',    202);
 define('CRITICAL_MESSAGE', 203);
 define('CRITICAL_ERROR',   204);
-define('DEBUG',            TRUE);
+
+if (defined('SCUTTLE_DEBUG') && SCUTTLE_DEBUG) {
+  ini_set('display_errors',   '1');
+  ini_set('mysql.trace_mode', '1');
+  error_reporting(E_ALL);
+}
+else {
+  ini_set('display_errors',   '0');
+  ini_set('mysql.trace_mode', '0');
+  error_reporting(E_ALL);
+}
\ No newline at end of file
index e9fec46f0a392777256b568370a0e2c0f31096c7..93fa85bd7ab906982b7c13077237311e4cfa1050 100644 (file)
@@ -51,7 +51,7 @@ function getTitle(input) {
 
 /* Page load */
 $(function() {
-  /* Insert Flash player for MP3 links */
+  // Insert Flash player for MP3 links
   if ($("#bookmarks").length > 0) {
     $("a[href$=.mp3].taggedlink").each(function() {
       var url  = this.href;
index fba23face40720cad3f8d111fd2183798562c04a..58a703b74d8496090d2b3ee6d705c75b5ebe2621 100644 (file)
@@ -1,4 +1,4 @@
-Scuttle 0.8.0
+Scuttle 0.9.0
 http://scuttle.org/
 
 Copyright (C) 2004 - 2010 Marcus Campbell
diff --git a/rss.php b/rss.php
index cf10478fa0c946e7eab6d3e04411532e7828b756..533bf4cd3185b94d760881fde96a017b47494d7d 100644 (file)
--- a/rss.php
+++ b/rss.php
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
-Copyright (C) 2004 - 2006 Marcus Campbell
+Copyright (C) 2004 - 2010 Marcus Campbell
 http://scuttle.org/
 
 This program is free software; you can redistribute it and/or modify
@@ -19,87 +19,99 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 ***************************************************************************/
 
 require_once 'header.inc.php';
+
 $bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
-$cacheservice =& ServiceFactory::getServiceInstance('CacheService');
+$cacheservice    =& ServiceFactory::getServiceInstance('CacheService');
 $templateservice =& ServiceFactory::getServiceInstance('TemplateService');
-$userservice =& ServiceFactory::getServiceInstance('UserService');
+$userservice     =& ServiceFactory::getServiceInstance('UserService');
 
 $tplVars = array();
 header('Content-Type: application/xml');
 list($url, $user, $cat) = explode('/', $_SERVER['PATH_INFO']);
 
 if ($usecache) {
-    // Generate hash for caching on
-    $hashtext = $_SERVER['REQUEST_URI'];
-    if ($userservice->isLoggedOn()) {
-        $hashtext .= $userservice->getCurrentUserID();
-        $currentUser = $userservice->getCurrentUser();
-        $currentUsername = $currentUser[$userservice->getFieldName('username')];
-        if ($currentUsername == $user) {
-            $hashtext .= $user;
-        }
+  // Generate hash for caching on
+  $hashtext = $_SERVER['REQUEST_URI'];
+  if ($userservice->isLoggedOn()) {
+    $hashtext .= $userservice->getCurrentUserID();
+    $currentUser = $userservice->getCurrentUser();
+    $currentUsername = $currentUser[$userservice->getFieldName('username')];
+    if ($currentUsername == $user) {
+      $hashtext .= $user;
     }
-    $hash = md5($hashtext);
+  }
+  $hash = md5($hashtext);
 
-    // Cache for an hour
-    $cacheservice->Start($hash, 3600);
+  // Cache for an hour
+  $cacheservice->Start($hash, 3600);
 }
 
-$watchlist = null;
+$watchlist = NULL;
 if ($user && $user != 'all') {
-    if ($user == 'watchlist') {
-        $user = $cat;
-        $cat = null;
-        $watchlist = true;
-    }
-    if (is_int($user)) {
-        $userid = intval($user);
+  if ($user == 'watchlist') {
+    $user = $cat;
+    $cat = NULL;
+    $watchlist = TRUE;
+  }
+  if (is_int($user)) {
+    $userid = intval($user);
+  } else {
+    if ($userinfo = $userservice->getUserByUsername($user)) {
+      $userid =& $userinfo[$userservice->getFieldName('primary')];
     } else {
-        if ($userinfo = $userservice->getUserByUsername($user)) {
-            $userid =& $userinfo[$userservice->getFieldName('primary')];
-        } else {
-            $tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
-            $templateservice->loadTemplate('error.404.tpl', $tplVars);
-            //throw a 404 error
-            exit();
-        }
+      $tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
+      $templateservice->loadTemplate('error.404.tpl', $tplVars);
+      //throw a 404 error
+      exit();
     }
-    $pagetitle .= ": ". $user;
+  }
+  $pagetitle .= ": ". $user;
 } else {
-    $userid = NULL;
+  $userid = NULL;
 }
 
 if ($cat) {
-    $pagetitle .= ": ". str_replace('+', ' + ', $cat);
+  $pagetitle .= ": ". str_replace('+', ' + ', $cat);
 }
 
 $tplVars['feedtitle'] = filter($GLOBALS['sitename'] . (isset($pagetitle) ? $pagetitle : ''));
 $tplVars['feedlink'] = $GLOBALS['root'];
 $tplVars['feeddescription'] = sprintf(T_('Recent bookmarks posted to %s'), $GLOBALS['sitename']);
 
-$bookmarks =& $bookmarkservice->getBookmarks(0, 15, $userid, $cat, NULL, getSortOrder(), $watchlist);
+$bookmarks     =& $bookmarkservice->getBookmarks(0, 15, $userid, $cat, NULL, getSortOrder(), $watchlist);
 $bookmarks_tmp =& filter($bookmarks['bookmarks']);
 
 $bookmarks_tpl = array();
 foreach(array_keys($bookmarks_tmp) as $key) {
-    $row =& $bookmarks_tmp[$key];
-
-    $_link = $row['bAddress'];
-    // Redirection option
-    if ($GLOBALS['useredir']) {
-        $_link = $GLOBALS['url_redir'] . $_link;
-    }
-    $_pubdate = date("r", strtotime($row['bDatetime']));
-    // array_walk($row['tags'], 'filter');
-
-    $bookmarks_tpl[] = array(
-        'title' => $row['bTitle'],
-        'link'  => $_link,
-        'description' => $row['bDescription'],
-        'creator' => $row['username'],
-        'pubdate' => $_pubdate,
-        'tags' => $row['tags']
-    );
+  $row =& $bookmarks_tmp[$key];
+
+  $_link = $row['bAddress'];
+  // Redirection option
+  if ($GLOBALS['useredir']) {
+    $_link = $GLOBALS['url_redir'] . $_link;
+  }
+  $_pubdate = date("r", strtotime($row['bDatetime']));
+
+  $uriparts  = explode('.', $_link);
+  $extension = end($uriparts);
+  unset($uriparts);
+
+  $enclosure = array();
+  if ($keys = multi_array_search($extension, $GLOBALS['filetypes'])) {
+    $enclosure['mime']   = file_get_mimetype($_link);
+    $enclosure['length'] = file_get_filesize($_link);
+  }
+
+  $bookmarks_tpl[] = array(
+    'title'            => $row['bTitle'],
+    'link'             => $_link,
+    'description'      => $row['bDescription'],
+    'creator'          => $row['username'],
+    'pubdate'          => $_pubdate,
+    'tags'             => $row['tags'],
+    'enclosure_mime'   => $enclosure['mime'],
+    'enclosure_length' => $enclosure['length']
+  );
 }
 unset($bookmarks_tmp);
 unset($bookmarks);
@@ -108,7 +120,6 @@ $tplVars['bookmarks'] =& $bookmarks_tpl;
 $templateservice->loadTemplate('rss.tpl', $tplVars);
 
 if ($usecache) {
-    // Cache output if existing copy has expired
-    $cacheservice->End($hash);
+  // Cache output if existing copy has expired
+  $cacheservice->End($hash);
 }
-?>
index c94341c801d11faaf11ce5985d6dabeba2613717..fba69334dfe08a46b5a4c341e4d286110978ff3d 100644 (file)
@@ -19,23 +19,30 @@ body {
   margin: 0;
   padding: 0;
 }
-input[type=text],
-input[type=password],
-select,
-textarea {
-  border: 1px solid #AAA;
-  padding: .1em;
+input[type=submit] {
+  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#FFF), to(#DDD));
+  border: 1px solid #CCC;
+  border-radius: 5px;
+  font-size: 13px;
+  padding: 4px 12px;
+  text-shadow: #FFF 1px 1px 0px;
+  -moz-border-radius: 5px;
+}
+input[type=submit]:active {
+  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#DDD), to(#FFF));
+}
+input[type=submit]:hover {
+  border-color: #666;
 }
 input[type=text],
 input[type=password],
+select,
 textarea {
-  padding: .2em;
-}
-input[type=text]:focus,
-input[type=password]:focus,
-select:focus,
-textarea:focus {
-  border-color: #666;
+  border: 1px solid #CCC;
+  border-radius: 3px;
+  font-size: 13px;
+  padding: 4px 5px;
+  -moz-border-radius: 3px;
 }
 p.error,
 p.success {
index 43481161b19bc6ca41e429507d19b1ea9f8ef273..f7a62ac1acc2562750802198f671b0842e4cf7a6 100644 (file)
@@ -6,7 +6,7 @@
 <table>
 <tr>
   <th align="left"><label for="username"><?php echo T_('Username'); ?></label></th>
-  <td><input type="text" id="username" name="username" size="20" class="required" /></td>
+  <td><input type="text" id="username" name="username" size="20" maxlength="25" class="required" /></td>
   <td id="availability"></td>
 </tr>
 <tr>
@@ -21,7 +21,7 @@
 </tr>
 <tr>
   <th align="left"><label for="email"><?php echo T_('E-mail'); ?></label></th>
-  <td><input type="text" id="email" name="email" size="40" class="required" /></td>
+  <td><input type="text" id="email" name="email" size="40" maxlength="50" class="required" /></td>
   <td></td>
 </tr>
 <tr>
index 0f03c06b9fc29fae16232ffb394e66ee46d0964b..5ef487780ddc0b03c1e74db9bc46ca3a059fa38b 100644 (file)
@@ -1,28 +1,24 @@
-<?php
-echo '<?xml version="1.0" encoding="UTF-8" ?'.">\n";
-?>
-
+<?php echo '<?xml version="1.0" encoding="UTF-8" ?'.">\n"; ?>
 <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
 <channel>
-    <title><?php echo $feedtitle; ?></title> 
-    <link><?php echo $feedlink; ?></link> 
-    <description><?php echo $feeddescription; ?></description>
-    <ttl>60</ttl>
-
-<?php foreach($bookmarks as $bookmark): ?>
+  <title><?php echo $feedtitle; ?></title> 
+  <link><?php echo $feedlink; ?></link> 
+  <description><?php echo $feeddescription; ?></description>
+  <ttl>60</ttl>
+  <?php foreach($bookmarks as $bookmark): ?>
     <item>
-        <title><?php echo $bookmark['title']; ?></title>
-        <link><?php echo $bookmark['link']; ?></link>
-        <description><?php echo $bookmark['description']; ?></description>
-        <dc:creator><?php echo $bookmark['creator']; ?></dc:creator>
-        <pubDate><?php echo $bookmark['pubdate']; ?></pubDate>
-
-    <?php foreach($bookmark['tags'] as $tag): ?>
+      <title><?php echo $bookmark['title']; ?></title>
+      <link><?php echo $bookmark['link']; ?></link>
+      <description><?php echo $bookmark['description']; ?></description>
+      <dc:creator><?php echo $bookmark['creator']; ?></dc:creator>
+      <pubDate><?php echo $bookmark['pubdate']; ?></pubDate>
+      <?php foreach($bookmark['tags'] as $tag): ?>
         <category><?php echo $tag; ?></category>
-    <?php endforeach; ?>
-
+      <?php endforeach; ?>
+      <?php if ($bookmark['enclosure_mime']): ?>
+        <enclosure url="<?php echo $bookmark['link']; ?>" length="<?php echo $bookmark['enclosure_length']; ?>" type="<?php echo $bookmark['enclosure_mime']; ?>" />
+      <?php endif; ?>
     </item>
-<?php endforeach; ?>
-
+  <?php endforeach; ?>
 </channel>
 </rss>
\ No newline at end of file
index 87f9f26589d5572069f86636ecc1f696b2a6dcc7..85c965d6d37f5baf4e8499e71c49cd9ec2ac897f 100644 (file)
@@ -21,7 +21,7 @@
 
 <?php
 $headerstyle = '';
-if(isset($_GET['popup'])) {
+if (isset($_GET['popup'])) {
     $headerstyle = ' class="popup"';
 }
 ?>
@@ -29,7 +29,7 @@ if(isset($_GET['popup'])) {
 <div id="header"<?php echo $headerstyle; ?>>
     <h1><a href="<?php echo $GLOBALS['root']; ?>"><?php echo $GLOBALS['sitename']; ?></a></h1>
     <?php
-    if(!isset($_GET['popup'])) {
+    if (!isset($_GET['popup'])) {
         $this->includeTemplate('toolbar.inc');
     }
     ?>

Benjamin Mako Hill || Want to submit a patch?