-<?php
-/**
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
- * Copyright (C) 2002-2004 The Nucleus Group
- *
- * 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.
- * (see nucleus/documentation/index.html#license for more info)
- *
- * Media classes for nucleus
- *
- * $Id: MEDIA.php,v 1.1.1.1 2005-02-28 07:14:50 kimitake Exp $
- */
-
-
-/**
- * Represents the media objects for a certain member
- */
-class MEDIA {
-
- /**
- * Gets the list of collections available to the currently logged
- * in member
- *
- * @returns array of dirname => display name
- */
- function getCollectionList() {
- global $member, $DIR_MEDIA;
-
- $collections = array();
-
- // add private directory for member
- $collections[$member->getID()] = 'Private Collection';
-
- // add global collections
- if (!is_dir($DIR_MEDIA)) return $collections;
-
- $dirhandle = opendir($DIR_MEDIA);
- while ($dirname = readdir($dirhandle)) {
- // only add non-numeric (numeric=private) dirs
- if (@is_dir($DIR_MEDIA . $dirname) && ($dirname != '.') && ($dirname != '..') && ($dirname != 'CVS') && (!is_numeric($dirname))) {
- $collections[$dirname] = $dirname;
- }
- }
- closedir($dirhandle);
-
- return $collections;
-
- }
-
- /**
- * Returns an array of MEDIAOBJECT objects for a certain collection
- *
- * @param $collection
- * name of the collection
- * @param $filter
- * filter on filename (defaults to none)
- */
- function getMediaListByCollection($collection, $filter = '') {
- global $DIR_MEDIA;
-
- $filelist = array();
-
- // 1. go through all objects and add them to the filelist
-
- $mediadir = $DIR_MEDIA . $collection . '/';
-
- // return if dir does not exist
- if (!is_dir($mediadir)) return $filelist;
-
- $dirhandle = opendir($mediadir);
- while ($filename = readdir($dirhandle)) {
- // only add files that match the filter
- if (!@is_dir($filename) && MEDIA::checkFilter($filename, $filter))
- array_push($filelist, new MEDIAOBJECT($collection, $filename, filemtime($mediadir . $filename)));
- }
- closedir($dirhandle);
-
- // sort array so newer files are shown first
- usort($filelist, 'sort_media');
-
- return $filelist;
- }
-
- function checkFilter($strText, $strFilter) {
- if ($strFilter == '')
- return 1;
- else
- return is_integer(strpos(strtolower($strText), strtolower($strFilter)));
- }
-
- /**
- * checks if a collection exists with the given name, and if it's
- * allowed for the currently logged in member to upload files to it
- */
- function isValidCollection($collectionName) {
- global $member, $DIR_MEDIA;
-
- // private collections only accept uploads from their owners
- if (is_numeric($collectionName))
- return ($member->getID() == $collectionName);
-
- // other collections should exists and be writable
- $collectionDir = $DIR_MEDIA . $collectionName;
- return (@is_dir($collectionDir) || @is_writable($collectionDir));
- }
-
- /**
- * Adds an uploaded file to the media archive
- *
- * @param collection
- * collection
- * @param uploadfile
- * the postFileInfo(..) array
- * @param filename
- * the filename that should be used to save the file as
- * (date prefix should be already added here)
- */
- function addMediaObject($collection, $uploadfile, $filename) {
- global $DIR_MEDIA;
-
- // don't allow uploads to unknown or forbidden collections
- if (!MEDIA::isValidCollection($collection))
- return _ERROR_DISALLOWED;
-
- // check dir permissions (try to create dir if it does not exist)
- $mediadir = $DIR_MEDIA . $collection;
-
- // try to create new private media directories if needed
- if (!@is_dir($mediadir) && is_numeric($collection)) {
- $oldumask = umask(0000);
- if (!@mkdir($mediadir, 0777))
- return _ERROR_BADPERMISSIONS;
- umask($oldumask);
- }
-
- // if dir still not exists, the action is disallowed
- if (!@is_dir($mediadir))
- return _ERROR_DISALLOWED;
-
- if (!is_writeable($mediadir))
- return _ERROR_BADPERMISSIONS;
-
- // add trailing slash (don't add it earlier since it causes mkdir to fail on some systems)
- $mediadir .= '/';
-
- if (file_exists($mediadir . $filename))
- return _ERROR_UPLOADDUPLICATE;
-
- // move file to directory
- if (is_uploaded_file($uploadfile)) {
- if (!@move_uploaded_file($uploadfile, $mediadir . $filename))
- return _ERROR_UPLOADMOVE;
- } else {
- if (!copy($uploadfile, $mediadir . $filename))
- return _ERROR_UPLOADCOPY ;
- }
-
- // chmod uploaded file
- $oldumask = umask(0000);
- @chmod($mediadir . $filename, 0644);
- umask($oldumask);
-
- return '';
-
- }
-
- /**
- * Adds an uploaded file to the media dir.
- *
- * @param $collection
- * collection to use
- * @param $filename
- * the filename that should be used to save the file as
- * (date prefix should be already added here)
- * @param &$data
- * File data (binary)
- *
- * NOTE: does not check if $collection is valid.
- */
- function addMediaObjectRaw($collection, $filename, &$data) {
- global $DIR_MEDIA;
-
- // check dir permissions (try to create dir if it does not exist)
- $mediadir = $DIR_MEDIA . $collection;
-
- // try to create new private media directories if needed
- if (!@is_dir($mediadir) && is_numeric($collection)) {
- $oldumask = umask(0000);
- if (!@mkdir($mediadir, 0777))
- return _ERROR_BADPERMISSIONS;
- umask($oldumask);
- }
-
- // if dir still not exists, the action is disallowed
- if (!@is_dir($mediadir))
- return _ERROR_DISALLOWED;
-
- if (!is_writeable($mediadir))
- return _ERROR_BADPERMISSIONS;
-
- // add trailing slash (don't add it earlier since it causes mkdir to fail on some systems)
- $mediadir .= '/';
-
- if (file_exists($mediadir . $filename))
- return _ERROR_UPLOADDUPLICATE;
-
- // create file
- $fh = @fopen($mediadir . $filename, 'wb');
- if (!$fh)
- return _ERROR_UPLOADFAILED;
- $ok = @fwrite($fh, $data);
- @fclose($fh);
- if (!$ok)
- return _ERROR_UPLOADFAILED;
-
- // chmod uploaded file
- $oldumask = umask(0000);
- @chmod($mediadir . $filename, 0644);
- umask($oldumask);
-
- return '';
-
- }
-
-}
-
-/**
- * Represents the characteristics of one single media-object
- *
- * Description of properties:
- * - filename: filename, without paths
- * - timestamp: last modification (unix timestamp)
- * - collection: collection to which the file belongs (can also be a owner ID, for private collections)
- * - private: true if the media belongs to a private member collection
- */
-class MEDIAOBJECT {
-
- var $private;
- var $collection;
- var $filename;
- var $timestamp;
-
- function MEDIAOBJECT($collection, $filename, $timestamp) {
- $this->private = is_numeric($collection);
- $this->collection = $collection;
- $this->filename = $filename;
- $this->timestamp = $timestamp;
- }
-
-}
-
-/**
- * User-defined sort method to sort an array of MEDIAOBJECTS
- */
-function sort_media($a, $b) {
- if ($a->timestamp == $b->timestamp) return 0;
- return ($a->timestamp > $b->timestamp) ? -1 : 1;
-}
-
+<?php\r
+/**\r
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/) \r
+ * Copyright (C) 2002-2004 The Nucleus Group\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * (see nucleus/documentation/index.html#license for more info)\r
+ *\r
+ * Media classes for nucleus\r
+ */\r
+\r
+\r
+/**\r
+ * Represents the media objects for a certain member\r
+ */\r
+class MEDIA {\r
+ \r
+ /**\r
+ * Gets the list of collections available to the currently logged\r
+ * in member \r
+ *\r
+ * @returns array of dirname => display name\r
+ */\r
+ function getCollectionList() {\r
+ global $member, $DIR_MEDIA;\r
+ \r
+ $collections = array();\r
+ \r
+ // add private directory for member\r
+ $collections[$member->getID()] = 'Private Collection';\r
+ \r
+ // add global collections\r
+ if (!is_dir($DIR_MEDIA)) return $collections;\r
+ \r
+ $dirhandle = opendir($DIR_MEDIA);\r
+ while ($dirname = readdir($dirhandle)) {\r
+ // only add non-numeric (numeric=private) dirs\r
+ if (@is_dir($DIR_MEDIA . $dirname) && ($dirname != '.') && ($dirname != '..') && ($dirname != 'CVS') && (!is_numeric($dirname))) {\r
+ $collections[$dirname] = $dirname;\r
+ }\r
+ }\r
+ closedir($dirhandle);\r
+ \r
+ return $collections;\r
+ \r
+ }\r
+\r
+ /**\r
+ * Returns an array of MEDIAOBJECT objects for a certain collection\r
+ *\r
+ * @param $collection\r
+ * name of the collection\r
+ * @param $filter\r
+ * filter on filename (defaults to none) \r
+ */\r
+ function getMediaListByCollection($collection, $filter = '') {\r
+ global $DIR_MEDIA;\r
+\r
+ $filelist = array(); \r
+ \r
+ // 1. go through all objects and add them to the filelist\r
+\r
+ $mediadir = $DIR_MEDIA . $collection . '/';\r
+ \r
+ // return if dir does not exist\r
+ if (!is_dir($mediadir)) return $filelist;\r
+ \r
+ $dirhandle = opendir($mediadir);\r
+ while ($filename = readdir($dirhandle)) {\r
+ // only add files that match the filter\r
+ if (!@is_dir($filename) && MEDIA::checkFilter($filename, $filter))\r
+ array_push($filelist, new MEDIAOBJECT($collection, $filename, filemtime($mediadir . $filename)));\r
+ }\r
+ closedir($dirhandle);\r
+\r
+ // sort array so newer files are shown first\r
+ usort($filelist, 'sort_media');\r
+ \r
+ return $filelist;\r
+ }\r
+ \r
+ function checkFilter($strText, $strFilter) {\r
+ if ($strFilter == '')\r
+ return 1;\r
+ else \r
+ return is_integer(strpos(strtolower($strText), strtolower($strFilter)));\r
+ }\r
+\r
+ /**\r
+ * checks if a collection exists with the given name, and if it's \r
+ * allowed for the currently logged in member to upload files to it\r
+ */ \r
+ function isValidCollection($collectionName) {\r
+ global $member, $DIR_MEDIA;\r
+ \r
+ // private collections only accept uploads from their owners\r
+ if (is_numeric($collectionName))\r
+ return ($member->getID() == $collectionName);\r
+ \r
+ // other collections should exists and be writable\r
+ $collectionDir = $DIR_MEDIA . $collectionName;\r
+ return (@is_dir($collectionDir) || @is_writable($collectionDir));\r
+ }\r
+\r
+ /**\r
+ * Adds an uploaded file to the media archive\r
+ *\r
+ * @param collection\r
+ * collection\r
+ * @param uploadfile\r
+ * the postFileInfo(..) array \r
+ * @param filename\r
+ * the filename that should be used to save the file as\r
+ * (date prefix should be already added here)\r
+ */\r
+ function addMediaObject($collection, $uploadfile, $filename) {\r
+ global $DIR_MEDIA;\r
+ \r
+ // don't allow uploads to unknown or forbidden collections\r
+ if (!MEDIA::isValidCollection($collection))\r
+ return _ERROR_DISALLOWED;\r
+\r
+ // check dir permissions (try to create dir if it does not exist)\r
+ $mediadir = $DIR_MEDIA . $collection;\r
+\r
+ // try to create new private media directories if needed\r
+ if (!@is_dir($mediadir) && is_numeric($collection)) {\r
+ $oldumask = umask(0000);\r
+ if (!@mkdir($mediadir, 0777))\r
+ return _ERROR_BADPERMISSIONS;\r
+ umask($oldumask); \r
+ } \r
+ \r
+ // if dir still not exists, the action is disallowed\r
+ if (!@is_dir($mediadir))\r
+ return _ERROR_DISALLOWED;\r
+ \r
+ if (!is_writeable($mediadir))\r
+ return _ERROR_BADPERMISSIONS;\r
+ \r
+ // add trailing slash (don't add it earlier since it causes mkdir to fail on some systems)\r
+ $mediadir .= '/';\r
+ \r
+ if (file_exists($mediadir . $filename))\r
+ return _ERROR_UPLOADDUPLICATE;\r
+\r
+ // move file to directory\r
+ if (is_uploaded_file($uploadfile)) {\r
+ if (!@move_uploaded_file($uploadfile, $mediadir . $filename))\r
+ return _ERROR_UPLOADMOVE;\r
+ } else {\r
+ if (!copy($uploadfile, $mediadir . $filename))\r
+ return _ERROR_UPLOADCOPY ;\r
+ }\r
+ \r
+ // chmod uploaded file\r
+ $oldumask = umask(0000);\r
+ @chmod($mediadir . $filename, 0644); \r
+ umask($oldumask); \r
+ \r
+ return '';\r
+ \r
+ }\r
+ \r
+ /**\r
+ * Adds an uploaded file to the media dir. \r
+ *\r
+ * @param $collection\r
+ * collection to use\r
+ * @param $filename\r
+ * the filename that should be used to save the file as\r
+ * (date prefix should be already added here)\r
+ * @param &$data\r
+ * File data (binary)\r
+ *\r
+ * NOTE: does not check if $collection is valid.\r
+ */\r
+ function addMediaObjectRaw($collection, $filename, &$data) {\r
+ global $DIR_MEDIA;\r
+ \r
+ // check dir permissions (try to create dir if it does not exist)\r
+ $mediadir = $DIR_MEDIA . $collection;\r
+\r
+ // try to create new private media directories if needed\r
+ if (!@is_dir($mediadir) && is_numeric($collection)) {\r
+ $oldumask = umask(0000);\r
+ if (!@mkdir($mediadir, 0777))\r
+ return _ERROR_BADPERMISSIONS;\r
+ umask($oldumask); \r
+ } \r
+ \r
+ // if dir still not exists, the action is disallowed\r
+ if (!@is_dir($mediadir))\r
+ return _ERROR_DISALLOWED;\r
+ \r
+ if (!is_writeable($mediadir))\r
+ return _ERROR_BADPERMISSIONS;\r
+ \r
+ // add trailing slash (don't add it earlier since it causes mkdir to fail on some systems)\r
+ $mediadir .= '/';\r
+ \r
+ if (file_exists($mediadir . $filename))\r
+ return _ERROR_UPLOADDUPLICATE;\r
+\r
+ // create file\r
+ $fh = @fopen($mediadir . $filename, 'wb');\r
+ if (!$fh) \r
+ return _ERROR_UPLOADFAILED;\r
+ $ok = @fwrite($fh, $data);\r
+ @fclose($fh);\r
+ if (!$ok)\r
+ return _ERROR_UPLOADFAILED;\r
+ \r
+ // chmod uploaded file\r
+ $oldumask = umask(0000);\r
+ @chmod($mediadir . $filename, 0644); \r
+ umask($oldumask); \r
+ \r
+ return '';\r
+ \r
+ }\r
+\r
+}\r
+\r
+/**\r
+ * Represents the characteristics of one single media-object\r
+ *\r
+ * Description of properties:\r
+ * - filename: filename, without paths\r
+ * - timestamp: last modification (unix timestamp)\r
+ * - collection: collection to which the file belongs (can also be a owner ID, for private collections)\r
+ * - private: true if the media belongs to a private member collection\r
+ */\r
+class MEDIAOBJECT {\r
+\r
+ var $private;\r
+ var $collection;\r
+ var $filename;\r
+ var $timestamp;\r
+\r
+ function MEDIAOBJECT($collection, $filename, $timestamp) {\r
+ $this->private = is_numeric($collection);\r
+ $this->collection = $collection;\r
+ $this->filename = $filename;\r
+ $this->timestamp = $timestamp;\r
+ }\r
+ \r
+}\r
+\r
+/**\r
+ * User-defined sort method to sort an array of MEDIAOBJECTS\r
+ */\r
+function sort_media($a, $b) {\r
+ if ($a->timestamp == $b->timestamp) return 0;\r
+ return ($a->timestamp > $b->timestamp) ? -1 : 1;\r
+}\r
+\r
?>
\ No newline at end of file