From a5eb5e9901c46a112d23f8d6d2f26737ba20cc3a Mon Sep 17 00:00:00 2001 From: drigato Date: Tue, 29 Apr 2014 16:06:25 -0400 Subject: [PATCH] CC-5806: Airtime Analyzer: Please implement "remove all files" --- .../application/modules/rest/Bootstrap.php | 12 ++++++- .../rest/controllers/MediaController.php | 36 +++++++++++++++++++ .../rest/views/scripts/media/clear.phtml | 0 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 airtime_mvc/application/modules/rest/views/scripts/media/clear.phtml diff --git a/airtime_mvc/application/modules/rest/Bootstrap.php b/airtime_mvc/application/modules/rest/Bootstrap.php index e7017ba16..31691ca96 100644 --- a/airtime_mvc/application/modules/rest/Bootstrap.php +++ b/airtime_mvc/application/modules/rest/Bootstrap.php @@ -23,5 +23,15 @@ class Rest_Bootstrap extends Zend_Application_Module_Bootstrap ) ); $router->addRoute('download', $downloadRoute); + + $clearLibraryRoute = new Zend_Controller_Router_Route( + 'rest/media/clear', + array( + 'controller' => 'media', + 'action' => 'clear', + 'module' => 'rest' + ) + ); + $router->addRoute('clear', $clearLibraryRoute); } -} \ No newline at end of file +} diff --git a/airtime_mvc/application/modules/rest/controllers/MediaController.php b/airtime_mvc/application/modules/rest/controllers/MediaController.php index ba116af0f..65f30b7e9 100644 --- a/airtime_mvc/application/modules/rest/controllers/MediaController.php +++ b/airtime_mvc/application/modules/rest/controllers/MediaController.php @@ -80,6 +80,42 @@ class Rest_MediaController extends Zend_Rest_Controller $this->fileNotFoundResponse(); } } + + public function clearAction() + { + //TODO:: make this not accessible via public api?? + if (!$this->verifyAuth(true, true)) + { + return; + } + + //set file_exists flag to false for every file + $con = Propel::getConnection(CcFilesPeer::DATABASE_NAME); + $selectCriteria = new Criteria(); + $selectCriteria->add(CcFilesPeer::FILE_EXISTS, true); + $updateCriteria = new Criteria(); + $updateCriteria->add(CcFilesPeer::FILE_EXISTS, false); + BasePeer::doUpdate($selectCriteria, $updateCriteria, $con); + + $path = isset($_SERVER['AIRTIME_BASE']) ? $_SERVER['AIRTIME_BASE']."/srv/airtime/stor/imported/*" : "/srv/airtime/stor/imported/*"; + exec("rm -rf $path"); + + //update disk_usage value in cc_pref + $musicDir = CcMusicDirsQuery::create() + ->filterByType('stor') + ->filterByExists(true) + ->findOne(); + $storPath = $musicDir->getDirectory(); + + $freeSpace = disk_free_space($storPath); + $totalSpace = disk_total_space($storPath); + + Application_Model_Preference::setDiskUsage($totalSpace - $freeSpace); + + $this->getResponse() + ->setHttpResponseCode(200) + ->appendBody("Library has been cleared"); + } public function getAction() { diff --git a/airtime_mvc/application/modules/rest/views/scripts/media/clear.phtml b/airtime_mvc/application/modules/rest/views/scripts/media/clear.phtml new file mode 100644 index 000000000..e69de29bb