Beispiel #1
0
    /**
     * Returns the best fit, depending on name, chronology and size, for a new
     * TV episode.
     *
     * @param string $episodeName The full episode name: ShowName - SSEXX - Title
     * @param string $freeSpaceTreshold minimal available space for a disk  to be available
     *
     * @todo Make the treshold depend on the episode Index, maybe even based on previous seasons and episode size
     *
     * @return array string a disk name (HDEXT-1, ARTHAS...)
     **/
    public static function BestTVEpisodeFit( $episodeName, $targetFilesize )
    {
        $return = array();
        $basePath = '/media/aggregateshares/TV Shows';

        $targetEpisodeInfo = self::parseEpisode( $episodeName );
        $showAggregatePath = "{$basePath}/{$targetEpisodeInfo['show']}";

        if ( !file_exists( $showAggregatePath ) )
        {
            $return['bestfit'] = 'none';
        }
        else
        {
            $iterator = new FilesystemIterator( $showAggregatePath );
            $iterator->setFlags( FilesystemIterator::KEY_AS_FILENAME | FilesystemIterator::CURRENT_AS_PATHNAME );
            $maxEpisodeNumber = 0;
            foreach( $iterator as $file => $path )
            {
                $episodeInfo = self::parseEpisode( $file );
                if ( $episodeInfo === false )
                    continue;

                $path = realpath( $path );

                // broken link => ignore
                if ( $path == false )
                    continue;

                // 100 episodes per season really should do it, right ?
                $absoluteEpisodeNumber = ( $episodeInfo['season'] * 100 ) + $episodeInfo['episode'];
                if ( $absoluteEpisodeNumber > $maxEpisodeNumber )
                {
                    $maxEpisodeNumber = $absoluteEpisodeNumber;
                    $latestEpisodePath = $path;
                }
            }
            if ( !isset( $latestEpisodePath ) )
            {
                $return['bestfit'] = 'none';
            }
            else
            {
                $return['LatestEpisode'] = $latestEpisodePath;
                list( , , , $return['RecommendedDisk'] ) = explode( '/', $latestEpisodePath );
                $lastEpisodeDiskFreespace = diskfreespace( $latestEpisodePath );

                $return['RecommendedDiskHasFreeSpace'] = ( $targetFilesize  > $lastEpisodeDiskFreespace ) ? 'false' : 'true';
            }
        }

        return $return;
    }
Beispiel #2
0
<?php

$sample_dir = __DIR__ . '/../../sample_dir';
$iterator = new FilesystemIterator($sample_dir, FilesystemIterator::KEY_AS_PATHNAME);
echo "Key as Pathname:\n";
$ret = array();
foreach ($iterator as $key => $fileinfo) {
    $ret[] = $key;
}
asort($ret);
var_dump(array_values($ret));
$iterator->setFlags(FilesystemIterator::KEY_AS_FILENAME);
echo "\nKey as Filename:\n";
$ret = array();
foreach ($iterator as $key => $fileinfo) {
    $ret[] = $key;
}
asort($ret);
var_dump(array_values($ret));
 $fedoraMember->setAttributeNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'rdf:resource', 'info:fedora/' . $collection);
 $fedoraModel = $dom->getElementsByTagNameNS('info:fedora/fedora-system:def/model#', 'hasModel')->item(0);
 $fedoraModel->setAttributeNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'rdf:resource', 'info:fedora/' . $model);
 $headers = array("Content-type: text/xml");
 // Create fedora object via curl function.
 $response = run_curl($url, $username, $pass, $headers, $dom->saveXML());
 if ($response['httpcode'] == 201) {
     $log_msg .= date('Y-m-d H:i:s') . " " . $pid . " is created and ingested successfully\r\n";
     $pid = $resXML->pid;
 } else {
     $log_msg .= date('Y-m-d H:i:s') . " Failed to create new object " . $pid . " ... exit the script!\r\n";
     echo "Failed to create object " . $pid . " ... exit the script!<br>\r\n";
     exit;
 }
 $files = new FilesystemIterator($dir->getPathname());
 $files->setFlags(FilesystemIterator::UNIX_PATHS | FilesystemIterator::KEY_AS_FILENAME);
 foreach ($files as $file) {
     if ($file->isFile()) {
         // Process each file based on their extension or filename
         if (strtolower($file->getExtension()) == 'mov') {
             $url = $base_url . '/fedora/objects/' . $pid . '/datastreams/OBJ?controlGroup=M&dsLabel=OBJ&mimeType=video/quicktime';
             if (function_exists('curl_file_create')) {
                 // PHP 5.5+
                 $request = array('file' => curl_file_create($file->getPathname(), 'video/quicktime', $file->getFilename()));
             } else {
                 $request = array('file' => '@' . $file->getPathname());
             }
             $response = run_curl($url, $username, $pass, NULL, $request);
             if ($response['httpcode'] == 201) {
                 $log_msg .= date('Y-m-d H:i:s') . " " . $pid . " OBJ datastream is created and ingested successfully\r\n";
                 $pid = $resXML->pid;
Beispiel #4
0
<!DOCTYPE HTML>
<html>
<head>
<meta  charset="utf-8">
<title>Using FilesystemIterator</title>
</head>

<body>
<pre>
<?php 
$files = new FilesystemIterator('../images');
$files->setFlags(FilesystemIterator::UNIX_PATHS);
foreach ($files as $file) {
    echo $file . '<br>';
}
?>
</pre>
</body>
</html>