diff --git a/airtime_mvc/application/configs/conf.php b/airtime_mvc/application/configs/conf.php
index 00af3e337..503880256 100644
--- a/airtime_mvc/application/configs/conf.php
+++ b/airtime_mvc/application/configs/conf.php
@@ -96,6 +96,12 @@ class Config {
$CC_CONFIG['soundcloud-client-id'] = $globalAirtimeConfigValues['soundcloud']['soundcloud_client_id'];
$CC_CONFIG['soundcloud-client-secret'] = $globalAirtimeConfigValues['soundcloud']['soundcloud_client_secret'];
$CC_CONFIG['soundcloud-redirect-uri'] = $globalAirtimeConfigValues['soundcloud']['soundcloud_redirect_uri'];
+ if (isset($globalAirtimeConfigValues['facebook']['facebook_app_id'])) {
+ $CC_CONFIG['facebook-app-id'] = $globalAirtimeConfigValues['facebook']['facebook_app_id'];
+ $CC_CONFIG['facebook-app-url'] = $globalAirtimeConfigValues['facebook']['facebook_app_url'];
+ $CC_CONFIG['facebook-app-api-key'] = $globalAirtimeConfigValues['facebook']['facebook_app_api_key'];
+ }
+
if(isset($values['demo']['demo'])){
$CC_CONFIG['demo'] = $values['demo']['demo'];
diff --git a/airtime_mvc/application/configs/navigation.php b/airtime_mvc/application/configs/navigation.php
index e61ad2986..aba3630e3 100644
--- a/airtime_mvc/application/configs/navigation.php
+++ b/airtime_mvc/application/configs/navigation.php
@@ -41,6 +41,12 @@ $pages = array(
'module' => 'default',
'controller' => 'embeddablewidgets',
'action' => 'schedule',
+ ),
+ array(
+ 'label' => _('Facebook'),
+ 'module' => 'default',
+ 'controller' => 'embeddablewidgets',
+ 'action' => 'facebook',
)
)
),
diff --git a/airtime_mvc/application/controllers/EmbeddablewidgetsController.php b/airtime_mvc/application/controllers/EmbeddablewidgetsController.php
index 210edb969..98158fa7f 100644
--- a/airtime_mvc/application/controllers/EmbeddablewidgetsController.php
+++ b/airtime_mvc/application/controllers/EmbeddablewidgetsController.php
@@ -26,8 +26,8 @@ class EmbeddableWidgetsController extends Zend_Controller_Action
$this->view->player_form = $form;
} else {
$this->view->player_error_msg = _("To configure and use the embeddable player you must:
- 1. Enable at least one MP3, AAC, or OGG stream under System -> Streams
- 2. Enable the Public Airtime API under System -> Preferences");
+ 1. Enable at least one MP3, AAC, or OGG stream under Settings -> Streams
+ 2. Enable the Public Airtime API under Settings -> Preferences");
}
}
@@ -39,8 +39,83 @@ class EmbeddableWidgetsController extends Zend_Controller_Action
if (!$apiEnabled) {
$this->view->weekly_schedule_error_msg = _("To use the embeddable weekly schedule widget you must:
- Enable the Public Airtime API under System -> Preferences");
+ Enable the Public Airtime API under Settings -> Preferences");
}
}
+
+ public function facebookAction()
+ {
+ Zend_Layout::getMvcInstance()->assign('parent_page', 'Widgets');
+
+ $apiEnabled = Application_Model_Preference::GetAllow3rdPartyApi();
+
+ if (!$apiEnabled) {
+ $this->view->facebook_error_msg = _("To add the Radio Tab to your Facebook Page, you must first:
+ Enable the Public Airtime API under Settings -> Preferences");
+ }
+
+ $CC_CONFIG = Config::getConfig();
+ $baseUrl = Application_Common_OsPath::getBaseDir();
+
+ $facebookAppId = $CC_CONFIG['facebook-app-id'];
+ $this->view->headScript()->appendScript("var FACEBOOK_APP_ID = " . json_encode($facebookAppId) . ";");
+ $this->view->headScript()->appendFile($baseUrl . 'js/airtime/common/facebook.js?' . $CC_CONFIG['airtime_version'], 'text/javascript');
+ }
+
+ /** Airtime makes an AJAX POST here after it successfully adds a tab to your Facebook page. */
+ public function facebookTabSuccessAction()
+ {
+ // disable the view and the layout
+ $this->view->layout()->disableLayout();
+ $this->_helper->viewRenderer->setNoRender(true);
+
+ //TODO: Get list of page IDs (deserialize)
+
+ $request = $this->getRequest();
+ if (!$request->isPost()) {
+ return;
+ }
+
+ $values = $request->getPost();
+ $facebookPageIds = json_decode($values["pages"]);
+
+ $CC_CONFIG = Config::getConfig();
+ $facebookMicroserviceUrl = $CC_CONFIG['facebook-app-url'];
+ $facebookMicroserviceApiKey = $CC_CONFIG['facebook-app-api-key'];
+
+ //Post the page tab ID and station subdomain to the social microservice so that mapping can be saved
+ //in a database.
+ foreach ($facebookPageIds as $facebookPageId)
+ {
+ $postfields = array();
+ $postfields["facebookPageId"] = $facebookPageId;
+ $postfields["stationId"] = $CC_CONFIG['stationId'];
+
+ $query_string = "";
+ foreach ($postfields as $k => $v) $query_string .= "$k=".urlencode($v)."&";
+
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $facebookMicroserviceUrl);
+ curl_setopt($ch, CURLOPT_POST, 1);
+ curl_setopt($ch, CURLOPT_TIMEOUT, 30);
+ curl_setopt($ch, CURLOPT_FAILONERROR, 1);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
+ curl_setopt($ch, CURLOPT_USERPWD, ":$facebookMicroserviceApiKey");
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
+
+ $jsondata = curl_exec($ch);
+ if (curl_error($ch)) {
+ throw new Exception("Failed to reach server in " . __FUNCTION__ . ": "
+ . curl_errno($ch) . ' - ' . curl_error($ch) . ' - ' . curl_getinfo($ch, CURLINFO_EFFECTIVE_URL));
+ }
+ curl_close($ch);
+
+ }
+
+ //$arr = json_decode($jsondata, true); # Decode JSON String
+
+ }
}
diff --git a/airtime_mvc/application/layouts/scripts/layout.phtml b/airtime_mvc/application/layouts/scripts/layout.phtml
index ec2c64088..32df4aad7 100644
--- a/airtime_mvc/application/layouts/scripts/layout.phtml
+++ b/airtime_mvc/application/layouts/scripts/layout.phtml
@@ -219,6 +219,9 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
}
?>
+