示例#1
0
 /** This is executed when searched for related tracks and metadata */
 public function executeRelatedtrack(sfWebRequest $request)
 {
     $this->getContext()->getConfiguration()->loadHelpers('Url');
     $empty_metadatafilteredquery = false;
     $distances = NULL;
     $files = NULL;
     // get request parameters
     $metadataquery = $request->getParameter('metadataquery');
     $tracknr = $request->getParameter('tracknr');
     $limit = $request->getParameter('limit', $this->getContext()->getConfiguration()->getSmintMaxQueryResults());
     $offset = $request->getParameter('offset', 0);
     $id_prefix = $request->getParameter('id_prefix', '') . smintTools::generateHtmlId($tracknr) . "_";
     $omit_empty_metadataquery = $request->getParameter('omit_empty_metadataquery', false);
     $distancetypeid = sfConfig::get('app_defaults_distancetypeid', 0);
     $featurevectortypeid = sfConfig::get('app_defaults_featurevectortypeid', 0);
     mysfLog::logRequest($this, $request);
     //get file via external key
     $file = FilePeer::getFileByExternalKey($tracknr);
     //only if the file was found in the smafestore db
     if ($file) {
         // run query
         $fileTrackId = $file->getTrackid();
         $relatedCriteria = $this->buildRelatedQuery($fileTrackId, $featurevectortypeid, $distancetypeid, $limit, $offset, $metadataquery);
         $related = FilePeer::doSelect($relatedCriteria);
         // if omit empty metadataquery is true
         if ($omit_empty_metadataquery) {
             if (count($related) > 0) {
                 // if the query returned results
                 $distances = DistancePeer::doSelect($relatedCriteria);
             } else {
                 // if the query returned no results -> retry without metadata
                 $empty_metadatafilteredquery = true;
                 $relatedCriteria = $this->buildRelatedQuery($fileTrackId, $featurevectortypeid, $distancetypeid, $limit, $offset);
                 $related = FilePeer::doSelect($relatedCriteria);
                 $distances = DistancePeer::doSelect($relatedCriteria);
             }
         } else {
             $distances = DistancePeer::doSelect($relatedCriteria);
         }
     }
     $files = FiledescPeer::doSelect($relatedCriteria);
     // add duration
     //		$fileDownloadURL = url_for("getAudioFile/download") . "?tracknr=" . rawurlencode($tracknr);
     $queryFileMetadata = FiledescPeer::retrieveByPk($tracknr);
     $fileInfoName = $queryFileMetadata->getTitle() . " - " . $queryFileMetadata->getPerformers();
     $uploadedFilePHPUrl_incomplete = url_for("getAudioFile/download", true) . "?tracknr=" . rawurlencode($tracknr);
     $uploadedFileURL = smintUploadFileHelper::getDirectFileUrl($file->getUri());
     return $this->renderPartial('search/result', array('render' => 'related', 'uploadedFilePHPUrl_incomplete' => $uploadedFilePHPUrl_incomplete, 'uploadedFileURL' => $uploadedFileURL, 'seedLabel' => $fileInfoName, 'id_prefix' => $id_prefix, 'tracknr' => $tracknr, 'files' => $files, 'distances' => $distances, 'limit' => $limit, 'offset' => $offset, 'metadataquery' => $metadataquery, 'empty_metadatafilteredquery' => $empty_metadatafilteredquery, 'aSegmSearch' => $aSegmSearch));
 }
示例#2
0
文件: mp3Handler.php 项目: EQ4/smint
 /** Returns appropriate JS code for mp3 player config.
  * @param $files Array of Filedesc instances
  * @param $aSegmSearch Array with segmentation information
  *
  */
 public static function getMp3PlayerConfig($files = array(), $aSegmSearch = array())
 {
     //needed for javascript_tag
     use_helper('JavascriptBase');
     $player = sfConfig::get('app_mp3player_defaultplayer', 'worldpress');
     switch ($player) {
         case 'flash-mp3-player':
             return '';
             break;
         case 'worldpress':
             $playerConfig = sfConfig::get('app_mp3player_worldpress');
             $autostart = isset($playerConfig['autostart']) ? $playerConfig['autostart'] : 'yes';
             $width = isset($playerConfig['width']) ? $playerConfig['width'] : '200';
             $skin = $playerConfig['skin'];
             return javascript_tag("AudioPlayer.setup('" . public_path('audio-player/player.swf') . "', \n                  {\n                    width: '{$width}', \n                    autostart: '{$autostart}', \n                    animation: 'no', \n                    {$skin},\n                  });");
             break;
         case 'smintplayer':
         default:
             // get configuration
             $playerConfig = sfConfig::get('app_mp3player_smintplayer');
             // build options array of array. First dimension is list of files, second is assoc array with values for the player
             $options = array();
             if (!isset($aSegmSearch['enabled'])) {
                 $aSegmSearch['enabled'] = false;
             }
             foreach ($files as $i => $filedesc) {
                 $filerec = FilePeer::getFileByExternalKey($filedesc->getTracknr());
                 if (!isset($filerec)) {
                     // no recrod returned - maybe no metadata in the db?
                     $tmparray = array('text' => "(No metadata available)", 'audiofile_mp3' => url_for("getAudioFile/download", true) . "?fileid=" . rawurlencode($filedesc->getTracknr()) . "&format=mp3", 'audiofile_ogg' => url_for("getAudioFile/download", true) . "?tracknr=" . rawurlencode($filedesc->getTracknr()) . "&format=ogg", 'waveformfile' => url_for("getAudioFile/download", true) . "?tracknr=" . rawurlencode($filedesc->getTracknr()) . "&format=waveform", 'duration' => isset($iDurationMs) ? $iDurationMs : 0, 'segments' => $aSegmSearch['enabled'] ? $aSegmSearch['resultsegments'][$i] : array(), 'searchsimilarfunc' => 'smint_' . smintTools::generateHtmlId($filedesc->getTracknr()) . '()', 'backlinktext' => "License track from gettyimages music", 'backlinkurl' => url_for("search/redirect") . "?url=" . rawurlencode("http://www.gettyimages.at/music/download-songs/" . $filedesc->getTracknr() . "?ref=spec"));
                 } else {
                     $iBitrate = $filerec->getBitrate();
                     $sUri = $filerec->getUri();
                     // estimate duration
                     if (file_exists($sUri)) {
                         $iSize = filesize($sUri);
                         if ($iSize) {
                             // file size divided by bytes per second, times 1000 to get ms.
                             // bitrate is k bits per second, so multiply by 1024 to get bits, and divide by 8 to get bytes
                             $iDurationMs = intval($iSize / ($iBitrate * 1024 / 8) * 1000);
                         } else {
                             mysfLog::log($this, "DEBUG Could not read file size: {$sUri}");
                             $iDurationMs = 0;
                         }
                     } else {
                         mysfLog::log($this, "WARNING File does not exist: {$sUri}");
                         $iDurationMs = 0;
                     }
                     $tmparray = array('text' => $filedesc->getTitle() . ' | ' . $filedesc->getPerformers() . ' | ' . $filedesc->getGenre(), 'audiofile_mp3' => smintUploadFileHelper::getDirectFileUrl($filerec->getUri()), 'audiofile_ogg' => url_for("getAudioFile/download", true) . "?tracknr=" . rawurlencode($filedesc->getTracknr()) . "&format=ogg", 'waveformfile' => url_for("getAudioFile/download", true) . "?tracknr=" . rawurlencode($filedesc->getTracknr()) . "&format=waveform", 'duration' => isset($iDurationMs) ? $iDurationMs : 0, 'segments' => $aSegmSearch['enabled'] ? $aSegmSearch['resultsegments'][$i] : array(), 'searchsimilarfunc' => 'smint_' . smintTools::generateHtmlId($filedesc->getTracknr()) . '()', 'backlinktext' => "License track from gettyimages music", 'backlinkurl' => url_for("search/redirect") . "?url=" . rawurlencode("http://www.gettyimages.at/music/download-songs/" . $filedesc->getTracknr() . "?ref=spec"));
                 }
                 $options[] = $tmparray;
             }
             // we cannot put all these fields into one array since the output format must be like
             // , A: XXXX, B: XXX
             // and not
             //, {A: XXXX, B: XXX}
             return ", playlist: " . smintTools::my_options_for_javascript($options) . ", waveform_resolution: " . intval(sfConfig::get('app_defaults_waveform_resolution')) . ', waveform_factor: ' . doubleval(sfConfig::get('app_defaults_waveform_factor'));
             break;
     }
 }