SAAS-1083 - work on publish dialog
This commit is contained in:
parent
05f51a9a2d
commit
e97aa199bd
8 changed files with 198 additions and 41 deletions
105
airtime_mvc/application/services/PublishService.php
Normal file
105
airtime_mvc/application/services/PublishService.php
Normal file
|
@ -0,0 +1,105 @@
|
|||
<?php
|
||||
|
||||
class Application_Service_PublishService {
|
||||
|
||||
/**
|
||||
* @var array map of arbitrary source names to descriptive labels
|
||||
*/
|
||||
private static $SOURCES = array(
|
||||
"soundcloud" => SOUNDCLOUD,
|
||||
"station_podcast" => "My Station Podcast"
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array map of arbitrary source names to functions that return
|
||||
* their publication state (true = published)
|
||||
*/
|
||||
private static $SOURCE_FUNCTIONS = array(
|
||||
"soundcloud" => "getSoundCloudPublishStatus",
|
||||
"station_podcast" => "getStationPodcastPublishStatus"
|
||||
);
|
||||
|
||||
/**
|
||||
* Publish or remove the file with the given file ID from the services
|
||||
* specified in the request data (ie. SoundCloud, the station podcast)
|
||||
*
|
||||
* @param int $fileId ID of the file to be published
|
||||
* @param array $data request data containing what services to publish to
|
||||
*/
|
||||
public static function publish($fileId, $data) {
|
||||
foreach ($data as $k => $v) {
|
||||
$service = PublishServiceFactory::getService($k);
|
||||
if ($v) $service->publish($fileId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* For the file with the given ID, check external sources and generate
|
||||
* an array of source states and labels.
|
||||
*
|
||||
* Sources to which the file has been published should be passed back in a
|
||||
* "published" array, while sources to which the file has not been published
|
||||
* should be passed back in a "toPublish" array.
|
||||
*
|
||||
* @param int $fileId the ID of the file to check
|
||||
*
|
||||
* @return array array containing published and toPublish arrays. Has the form
|
||||
* [
|
||||
* "toPublish" => [
|
||||
* "source" => "label",
|
||||
* ...
|
||||
* ]
|
||||
* "published" => [
|
||||
* "source" => "label",
|
||||
* ...
|
||||
* ]
|
||||
* ]
|
||||
*/
|
||||
public static function getSourceLists($fileId) {
|
||||
$publishSources = $publishedSources = array();
|
||||
foreach (self::$SOURCES as $source => $label) {
|
||||
$fn = self::$SOURCE_FUNCTIONS[$source];
|
||||
// Should be in a ternary but PHP doesn't play nice
|
||||
if (self::$fn($fileId)) {
|
||||
$publishedSources[$source] = _($label);
|
||||
} else {
|
||||
$publishSources[$source] = _($label);
|
||||
}
|
||||
}
|
||||
|
||||
return array(
|
||||
"toPublish" => $publishSources,
|
||||
"published" => $publishedSources
|
||||
);
|
||||
}
|
||||
|
||||
/** @noinspection PhpUnusedPrivateMethodInspection
|
||||
* Reflective accessor for SoundCloud publication status for the
|
||||
* file with the given ID
|
||||
*
|
||||
* @param int $fileId the ID of the file to check
|
||||
*
|
||||
* @return bool true if the file has been published to SoundCloud,
|
||||
* otherwise false
|
||||
*/
|
||||
private static function getSoundCloudPublishStatus($fileId) {
|
||||
$soundcloudService = new Application_Service_SoundcloudService();
|
||||
return ($soundcloudService->getServiceId($fileId) != 0);
|
||||
}
|
||||
|
||||
/** @noinspection PhpUnusedPrivateMethodInspection
|
||||
* Reflective accessor for Station podcast publication status for the
|
||||
* file with the given ID
|
||||
*
|
||||
* @param int $fileId the ID of the file to check
|
||||
*
|
||||
* @return bool true if the file has been published to the Station podcast,
|
||||
* otherwise false
|
||||
*/
|
||||
private static function getStationPodcastPublishStatus($fileId) {
|
||||
$stationPodcast = StationPodcastQuery::create()
|
||||
->findOneByDbPodcastId(Application_Model_Preference::getStationPodcastId());
|
||||
return $stationPodcast->hasEpisodeForFile($fileId);
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue