Ejemplo n.º 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));
 }