/** * 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; }
<?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;
<!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>