Refactored RecallByX

This commit is contained in:
Rudi Grinberg 2012-09-11 18:22:46 -04:00
parent 975830ff90
commit faa04a2f5c
1 changed files with 70 additions and 52 deletions

View File

@ -84,6 +84,12 @@ class Application_Model_StoredFile
$this->_file->save(); $this->_file->save();
} }
public static function createWithFile($f) {
$storedFile = new Application_Model_StoredFile();
$storedFile->_file = $f;
return $storedFile;
}
/** /**
* Set multiple metadata values using defined metadata constants. * Set multiple metadata values using defined metadata constants.
* *
@ -534,60 +540,61 @@ SQL;
return $storedFile; return $storedFile;
} }
/** //public static function Recall2($p_id=null, $p_gunid=null, $p_md5sum=null, $p_filepath=null, $exist=false)
* Fetch instance of StoreFile object.<br> //{
* Should be supplied with only ONE parameter, all the rest should //if (isset($p_id)) {
* be NULL. //$file = CcFilesQuery::create()->findPK(intval($p_id));
* //} elseif (isset($p_md5sum)) {
* @param int $p_id //if ($exist) {
* local id //$file = CcFilesQuery::create()
* @param string $p_gunid - TODO: Remove this! //->filterByDbMd5($p_md5sum)
* global unique id of file //->filterByDbFileExists(true)
* @param string $p_md5sum //->findOne();
* MD5 sum of the file //} else {
* @param boolean $exist //$file = CcFilesQuery::create()
* When this is true, it check against only files with file_exist is 'true' //->filterByDbMd5($p_md5sum)
* @return Application_Model_StoredFile|NULL //->findOne();
* Return NULL if the object doesnt exist in the DB. //}
*/ //} elseif (isset($p_filepath)) {
public static function Recall($p_id=null, $p_gunid=null, $p_md5sum=null, $p_filepath=null, $exist=false) //$path_info = Application_Model_MusicDir::splitFilePath($p_filepath);
{
if (isset($p_id)) {
$file = CcFilesQuery::create()->findPK(intval($p_id));
} elseif (isset($p_md5sum)) {
if ($exist) {
$file = CcFilesQuery::create()
->filterByDbMd5($p_md5sum)
->filterByDbFileExists(true)
->findOne();
} else {
$file = CcFilesQuery::create()
->filterByDbMd5($p_md5sum)
->findOne();
}
} elseif (isset($p_filepath)) {
$path_info = Application_Model_MusicDir::splitFilePath($p_filepath);
if (is_null($path_info)) { //if (is_null($path_info)) {
return null; //return null;
} //}
$music_dir = Application_Model_MusicDir::getDirByPath($path_info[0]); //$music_dir = Application_Model_MusicDir::getDirByPath($path_info[0]);
$file = CcFilesQuery::create() //$file = CcFilesQuery::create()
->filterByDbDirectory($music_dir->getId()) //->filterByDbDirectory($music_dir->getId())
->filterByDbFilepath($path_info[1]) //->filterByDbFilepath($path_info[1])
->findOne(); //->findOne();
//} else {
//return null;
//}
//if (isset($file)) {
//$storedFile = new Application_Model_StoredFile();
//$storedFile->_file = $file;
//return $storedFile;
//} else {
//return null;
//}
//}
public static function Recall($p_id=null, $p_gunid=null, $p_md5sum=null,
$p_filepath=null) {
if( isset($p_id ) ) {
$f = CcFilesQuery::create()->findPK(intval($p_id));
return is_null($f) ? null : self::createWithFile($f);
} elseif ( isset($p_gunid) ) {
throw new Exception("You should never use gunid ($gunid) anymore");
} elseif ( isset($p_md5sum) ) {
throw new Exception("Searching by md5($p_md5sum) is disabled");
} elseif ( isset($p_filepath) ) {
return is_null($f) ? null : self::createWithFile(
Application_Model_StoredFile::RecallByFilepath($p_filepath));
} else { } else {
return null; throw new Exception("No arguments passsed to Recall");
}
if (isset($file)) {
$storedFile = new Application_Model_StoredFile();
$storedFile->_file = $file;
return $storedFile;
} else {
return null;
} }
} }
@ -616,7 +623,18 @@ SQL;
*/ */
public static function RecallByFilepath($p_filepath) public static function RecallByFilepath($p_filepath)
{ {
return Application_Model_StoredFile::Recall(null, null, null, $p_filepath); $path_info = Application_Model_MusicDir::splitFilePath($p_filepath);
if (is_null($path_info)) {
return null;
}
$music_dir = Application_Model_MusicDir::getDirByPath($path_info[0]);
$file = CcFilesQuery::create()
->filterByDbDirectory($music_dir->getId())
->filterByDbFilepath($path_info[1])
->findOne();
return is_null($file) ? null : self::createWithFile($file);
} }
public static function RecallByPartialFilepath($partial_path) public static function RecallByPartialFilepath($partial_path)