function search($query)
 {
     $files = OC_Filesystem::search($query);
     $results = array();
     foreach ($files as $file) {
         if (OC_Filesystem::is_dir($file)) {
             $results[] = new OC_Search_Result(basename($file), '', OC_Helper::linkTo('files', 'index.php?dir=' . $file), 'Files');
         } else {
             $mime = OC_Filesystem::getMimeType($file);
             $mimeBase = substr($mime, 0, strpos($mime, '/'));
             switch ($mimeBase) {
                 case 'audio':
                     break;
                 case 'text':
                     $results[] = new OC_Search_Result(basename($file), '', OC_Helper::linkTo('files', 'download.php?file=' . $file), 'Text');
                     break;
                 case 'image':
                     $results[] = new OC_Search_Result(basename($file), '', OC_Helper::linkTo('files', 'download.php?file=' . $file), 'Images');
                     break;
                 default:
                     if ($mime == 'application/xml') {
                         $results[] = new OC_Search_Result(basename($file), '', OC_Helper::linkTo('files', 'download.php?file=' . $file), 'Text');
                     } else {
                         $results[] = new OC_Search_Result(basename($file), '', OC_Helper::linkTo('files', 'download.php?file=' . $file), 'Files');
                     }
             }
         }
     }
     return $results;
 }
Ejemplo n.º 2
0
 /**
  * try to detect the mime type of a file
  *
  * @param  string  path
  * @return string  guessed mime type
  */
 static function getMimeType($path)
 {
     return OC_Filesystem::getMimeType($path);
 }
 public static function play($params)
 {
     $username = !self::checkAuth($params);
     if ($username) {
         echo "<root>\n\t<error code='400'>Invalid login</error>\n</root>";
         return;
     }
     if ($song = OC_MEDIA_COLLECTION::getSong($params['song'])) {
         OC_Util::setupFS($song["song_user"]);
         header('Content-type: ' . OC_Filesystem::getMimeType($song['song_path']));
         header('Content-Length: ' . $song['song_size']);
         OC_Filesystem::readfile($song['song_path']);
     }
 }
Ejemplo n.º 4
0
 /**
  * Returns the mime-type for a file
  *
  * If null is returned, we'll assume application/octet-stream
  *
  * @return mixed
  */
 public function getContentType()
 {
     return OC_Filesystem::getMimeType($this->path);
 }
Ejemplo n.º 5
0
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library 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 AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
*
*/
// Init owncloud
// Check if we are a user
OCP\User::checkLoggedIn();
$filename = $_GET["file"];
if (!OC_Filesystem::file_exists($filename)) {
    header("HTTP/1.0 404 Not Found");
    $tmpl = new OCP\Template('', '404', 'guest');
    $tmpl->assign('file', $filename);
    $tmpl->printPage();
    exit;
}
$ftype = OC_Filesystem::getMimeType($filename);
header('Content-Type:' . $ftype);
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
OCP\Response::disableCaching();
header('Content-Length: ' . OC_Filesystem::filesize($filename));
@ob_end_clean();
OC_Filesystem::readfile($filename);
Ejemplo n.º 6
0
             $tmpl->assign('dir', basename($dir));
             $tmpl->assign('filename', basename($path));
             $tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
             $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
             if (isset($_GET['path'])) {
                 $getPath = $_GET['path'];
             } else {
                 $getPath = '';
             }
             $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . '&download&dir=' . $_GET['dir'] . '&path=' . $getPath);
         } else {
             // Show file preview if viewer is available
             $tmpl->assign('uidOwner', $uidOwner);
             $tmpl->assign('dir', dirname($path));
             $tmpl->assign('filename', basename($path));
             $tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
             if ($type == 'file') {
                 $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . '&file=' . $_GET['file'] . '&download');
             } else {
                 if (isset($_GET['path'])) {
                     $getPath = $_GET['path'];
                 } else {
                     $getPath = '';
                 }
                 $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . '&download&dir=' . $_GET['dir'] . '&path=' . $getPath);
             }
         }
         $tmpl->printPage();
     }
     exit;
 }
        OC_JSON::error(array("data" => array("message" => $errors[$error])));
        exit;
    }
}
$files = $_FILES['files'];
$dir = $_POST['dir'];
$dir .= '/';
$error = '';
$totalSize = 0;
foreach ($files['size'] as $size) {
    $totalSize += $size;
}
if ($totalSize > OC_Filesystem::free_space('/')) {
    OC_JSON::error(array("data" => array("message" => "Not enough space available")));
    exit;
}
$result = array();
if (strpos($dir, '..') === false) {
    $fileCount = count($files['name']);
    for ($i = 0; $i < $fileCount; $i++) {
        $target = stripslashes($dir) . $files['name'][$i];
        if (OC_Filesystem::fromUploadedFile($files['tmp_name'][$i], $target)) {
            $result[] = array("status" => "success", 'mime' => OC_Filesystem::getMimeType($target), 'size' => OC_Filesystem::filesize($target), 'name' => $files['name'][$i]);
        }
    }
    OC_JSON::encodedPrint($result);
    exit;
} else {
    $error = 'invalid dir';
}
OC_JSON::error(array('data' => array('error' => $error, "file" => $fileName)));
Ejemplo n.º 8
0
 public function play($params)
 {
     if (!$this->checkAuth($params)) {
         $this->error(400, 'Invalid Login');
     }
     if ($song = $this->collection->getSong($params['song'])) {
         \OC_Util::setupFS($song["song_user"]);
         header('Content-type: ' . \OC_Filesystem::getMimeType($song['song_path']));
         \OC_Filesystem::readfile($song['song_path']);
     }
 }
Ejemplo n.º 9
0
 /**
  * Returns the mime-type for a file
  *
  * If null is returned, we'll assume application/octet-stream
  *
  * @return mixed
  */
 public function getContentType()
 {
     if (isset($this->fileinfo_cache['mimetype'])) {
         return $this->fileinfo_cache['mimetype'];
     }
     return OC_Filesystem::getMimeType($this->path);
 }
        $breadcrumbNav = new OC_Template("files", "part.breadcrumb", "");
        $breadcrumbNav->assign("breadcrumb", $breadcrumb);
        $breadcrumbNav->assign("baseURL", OC_Helper::linkTo("files_sharing", "get.php") . "?token=" . $token . "&path=");
        $list = new OC_Template("files", "part.list", "");
        $list->assign("files", $files);
        $list->assign("baseURL", OC_Helper::linkTo("files_sharing", "get.php") . "?token=" . $token . "&path=");
        $list->assign("downloadURL", OC_Helper::linkTo("files_sharing", "get.php") . "?token=" . $token . "&path=");
        $list->assign("readonly", true);
        $tmpl = new OC_Template("files", "index", "user");
        $tmpl->assign("fileList", $list->fetchPage());
        $tmpl->assign("breadcrumb", $breadcrumbNav->fetchPage());
        $tmpl->assign("readonly", true);
        $tmpl->printPage();
    } else {
        //get time mimetype and set the headers
        $mimetype = OC_Filesystem::getMimeType($source);
        header("Content-Transfer-Encoding: binary");
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Pragma: public");
        header('Content-Disposition: filename="' . basename($source) . '"');
        header("Content-Type: " . $mimetype);
        header("Content-Length: " . OC_Filesystem::filesize($source));
        //download the file
        @ob_clean();
        OC_Filesystem::readfile($source);
    }
} else {
    header("HTTP/1.0 404 Not Found");
    $tmpl = new OC_Template("", "404", "guest");
    $tmpl->printPage();
         $songId = OC_MEDIA_COLLECTION::getSongByPath($arguments['path']);
         if ($songId == 0) {
             unset($_SESSION['collection']);
             $songId = OC_MEDIA_SCANNER::scanFile($arguments['path']);
         }
         if ($songId > 0) {
             $song = OC_MEDIA_COLLECTION::getSong($songId);
             $song['artist'] = OC_MEDIA_COLLECTION::getArtistName($song['song_artist']);
             $song['album'] = OC_MEDIA_COLLECTION::getAlbumName($song['song_album']);
             OC_JSON::encodedPrint($song);
         }
     }
     break;
 case 'play':
     ob_end_clean();
     $ftype = OC_Filesystem::getMimeType($arguments['path']);
     $songId = OC_MEDIA_COLLECTION::getSongByPath($arguments['path']);
     OC_MEDIA_COLLECTION::registerPlay($songId);
     header('Content-Type:' . $ftype);
     // calc an offset of 24 hours
     $offset = 3600 * 24;
     // calc the string in GMT not localtime and add the offset
     $expire = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
     //output the HTTP header
     header($expire);
     header('Cache-Control: max-age=3600, must-revalidate');
     header('Pragma: public');
     header('Accept-Ranges: bytes');
     header('Content-Length: ' . OC_Filesystem::filesize($arguments['path']));
     $gmt_mtime = gmdate('D, d M Y H:i:s', OC_Filesystem::filemtime($arguments['path'])) . ' GMT';
     header("Last-Modified: " . $gmt_mtime);
if (OC_User::checkPassword($user, $pass)) {
    OC_Util::setupFS($user);
    OC_MEDIA_COLLECTION::$uid = $user;
} else {
    exit;
}
if (isset($_POST['play']) and $_POST['play'] == 'true') {
    if (!isset($_POST['song'])) {
        exit;
    }
    $song = OC_MEDIA_COLLECTION::getSong($_POST['song']);
    $ftype = OC_Filesystem::getMimeType($song['song_path']);
    header('Content-Type:' . $ftype);
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . OC_Filesystem::filesize($song['song_path']));
    OC_Filesystem::readfile($song['song_path']);
}
$artist = isset($_POST['artist']) ? '%' . $_POST['artist'] . '%' : '';
$album = isset($_POST['album']) ? '%' . $_POST['album'] . '%' : '';
$song = isset($_POST['song']) ? $_POST['song'] : '';
$artist = OC_MEDIA_COLLECTION::getArtistId($artist);
$album = OC_MEDIA_COLLECTION::getAlbumId($album, $artist);
$songs = OC_MEDIA_COLLECTION::getSongs($artist, $album, $song);
$baseUrl = OC_Util::getServerURL() . OC_Helper::linkTo('media', 'tomahawk.php');
$results = array();
foreach ($songs as $song) {
    $results[] = (object) array('artist' => OC_MEDIA_COLLECTION::getArtistName($song['song_artist']), 'album' => OC_MEDIA_COLLECTION::getAlbumName($song['song_album']), 'track' => $song['song_name'], 'source' => 'ownCloud', 'mimetype' => OC_Filesystem::getMimeType($song['song_path']), 'extension' => substr($song['song_path'], strrpos($song['song_path'], '.')), 'url' => $baseUrl . '?play=true&song=' . $song['song_id'], 'bitrate' => round($song['song_id'] / $song['song_length'], 0), 'duration' => round($song['song_length'], 0), 'size' => $song['song_size'], 'score' => (double) 1.0);
}
OC_JSON::encodedPrint($results);