add('name', PLUGIN_SIDEBAR_MOTM_NAME);
$propbag->add('description', PLUGIN_SIDEBAR_MOTM_DESC);
$propbag->add('stackable', false);
$propbag->add('author', 'Tys von Gaza');
$propbag->add('version', '1.5');
$propbag->add('requirements', array(
'serendipity' => '0.8',
'php' => '4.1.0'
));
$propbag->add('event_hooks', array(
'external_plugin' => true,
'css' => true,
'backend_sidebar_entries' => true,
'backend_sidebar_admin' => true,
'backend_sidebar_entries_event_display_motm' => true
));
$propbag->add('groups', array('FRONTEND_EXTERNAL_SERVICES'));
$propbag->add('configuration', array('note0','note1','note2','title', 'title_url', 'secret_key', 'css_track', 'css_slider', 'amazon_assoc', 'amazon_dev', 'show_where', 'song_info','streams'));
}
function introspect_config_item($name, &$propbag)
{
global $serendipity;
switch($name) {
case 'note0':
$propbag->add('type', 'content');
$propbag->add('default', ' - ' .PLUGIN_SIDEBAR_MOTM_NOTE_EXTRA);
break;
case 'note1':
$propbag->add('type', 'content');
$propbag->add('default', ' - ' .PLUGIN_SIDEBAR_MOTM_NOTE_WRAP);
break;
case 'note2':
$propbag->add('type', 'content');
$secret_key = $this->get_config('secret_key',FALSE);
if (!$secret_key)
$secret_key = PLUGIN_SIDEBAR_MOTM_KEY_KEY;
$propbag->add('default', ' - ' .sprintf(PLUGIN_SIDEBAR_MOTM_NOTE_KEY,$serendipity['baseURL'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/motm-update&track=%t&artist=%a&album=%b&genre=%g&tracktime=%y&secret_key=' . $secret_key));
break;
case 'title':
$propbag->add('type', 'string');
$propbag->add('name', TITLE);
$propbag->add('description', PLUGIN_SIDEBAR_MOTM_TITLE_DESC);
$propbag->add('default', PLUGIN_SIDEBAR_MOTM_NAME);
break;
case 'title_url':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_SIDEBAR_MOTM_TITLE_URL);
$propbag->add('description', PLUGIN_SIDEBAR_MOTM_TITLE_URL_DESC);
$propbag->add('default', '');
break;
case 'secret_key':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_SIDEBAR_MOTM_KEY);
$propbag->add('description', PLUGIN_SIDEBAR_MOTM_KEY_DESC);
$propbag->add('default', '');
break;
case 'css_track':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_SIDEBAR_MOTM_TRACK);
$propbag->add('description', PLUGIN_SIDEBAR_MOTM_TRACK_DESC);
$propbag->add('default','border: 1px solid black;padding: 0;background-color: white;');
break;
case 'css_slider':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_SIDEBAR_MOTM_SLIDER);
$propbag->add('description', PLUGIN_SIDEBAR_MOTM_SLIDER_DESC);
$propbag->add('default','color: white;background-color: black;margin: 0;text-align: right;padding: .1em;white-space: nowrap;');
break;
case 'amazon_assoc':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_SIDEBAR_MOTM_AMAZON_ASSOC);
$propbag->add('description', PLUGIN_SIDEBAR_MOTM_AMAZON_ASSOC_DESC);
$propbag->add('default','tysvongazca-20');
break;
case 'amazon_dev':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_SIDEBAR_MOTM_AMAZON_DEV);
$propbag->add('description', PLUGIN_SIDEBAR_MOTM_AMAZON_DEV_DESC);
$propbag->add('default','D37FFQXOC3MRYZ');
break;
case 'show_where':
$select = array('extended' => PLUGIN_ITEM_DISPLAY_EXTENDED, 'overview' => PLUGIN_ITEM_DISPLAY_OVERVIEW, 'both' => PLUGIN_ITEM_DISPLAY_BOTH);
$propbag->add('type', 'select');
$propbag->add('select_values', $select);
$propbag->add('name', PLUGIN_ITEM_DISPLAY);
$propbag->add('description', '');
$propbag->add('default', 'both');
break;
default:
return false;
}
return true;
}
function event_hook($event, &$bag, &$eventData, $addData = null)
{
global $serendipity, $motm_server_temp;
$hooks = &$bag->get('event_hooks');
if (isset($hooks[$event]))
{
switch($event)
{
case 'backend_sidebar_entries':
if ($serendipity['version'][0] == '1') {
echo '
';
}
return true;
break;
case 'backend_sidebar_admin':
echo ''.PLUGIN_SIDEBAR_MOTM_ADMIN_LINK.'';
return true;
break;
case 'backend_sidebar_entries_event_display_motm':
$this->admin();
return true;
break;
case 'css':
if (!strpos($eventData,'.clearfix'))
{
ob_start();
?>
.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {display: inline-table;}
/* Hides from IE-mac \*/
* html .clearfix {height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */
get_config('css_track')."}\n";
if (!strpos($eventData, '#serendipity_motm_slider'))
echo '#serendipity_motm_slider { '.$this->get_config('css_slider')."}\n";
break;
case 'external_plugin':
$uri_parts = explode('?', str_replace('&', '&', $eventData));
$parts = explode('/&', $uri_parts[0]);
switch($parts[0]) {
case 'motm.js':
include dirname(__FILE__) . '/motm.js';
break;
case 'motm-iframe':
$motm_server_temp['song_info'] = $this->get_config('song_info');
$motm_server_temp['streams'] = $this->get_config('streams');
include dirname(__FILE__) . '/motm_iframe.php';
break;
case 'motm-update':
if ($_REQUEST['secret_key'] == $this->get_config('secret_key', 'secret'))
{
$motm_server_temp['amazon_assoc'] = $this->get_config('amazon_assoc');
$motm_server_temp['amazon_dev'] = $this->get_config('amazon_dev');
// Start buffering
ob_start();
include dirname(__FILE__) . '/motm_update.php';
$contents = ob_get_contents();
// Stop buffering
ob_end_clean();
echo $contents;
$this->set_config('song_info', $contents);
$this->set_config('song_url', $_SERVER['REQUEST_URI']);
}
else
{
echo PLUGIN_SIDEBAR_MOTM_UPDATE_ERROR_KEY;
$this->set_config('song_info', PLUGIN_SIDEBAR_MOTM_UPDATE_ERROR_KEY);
}
break;
default:
return true;
break;
}
return true;
break;
default:
return true;
break;
}
} else {
return false;
}
}
function generate_content(&$title)
{
global $serendipity, $motm_server_temp;
$iframe_url = $serendipity['baseURL'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/motm-iframe';
$title = $this->get_config('title', $title);
$title_url = $this->get_config('title_url');
if ($title_url)
$title = ''.$title.'';
$show_where = $this->get_config('show_where', 'both');
if ($show_where == 'extended' && (!isset($serendipity['GET']['id']) || !is_numeric($serendipity['GET']['id']))) {
return false;
} else if ($show_where == 'overview' && isset($serendipity['GET']['id']) && is_numeric($serendipity['GET']['id'])) {
return false;
}
// include the content!
echo "\n\n";
echo '\n";
echo '' . "\n";
echo "\n";
}
function admin()
{
echo "".PLUGIN_SIDEBAR_MOTM_ADMIN_LINK."
\n";
switch($_REQUEST['motm_action'])
{
case 'add_commit':
$this->admin_add_commit(); $this->admin_display(); break;
case 'edit':
$this->admin_edit(); break;
case 'edit_commit':
$this->admin_edit_commit(); $this->admin_display(); break;
case 'delete':
$this->admin_delete(); break;
case 'delete_commit':
$this->admin_delete_commit(); $this->admin_display(); break;
default:
$this->admin_display(); break;
}
}
function admin_display()
{
echo "\n";
echo "\n";
$streams = $this->get_config('streams');
if ($streams && count($streams = unserialize($streams)))
{
echo "
".PLUGIN_SIDEBAR_MOTM_ADMIN_DISPLAY."\n";
echo "
\n";
}
echo "
\n";
}
function admin_add_commit()
{
$streams = $this->get_config('streams');
if ($streams)
{
$streams = unserialize($streams);
if (!is_array($streams))
$streams = array();
}
else
$streams = array();
$i = count($streams);
$streams[$i] = array('motm_match' => $_REQUEST['motm_match'], 'motm_name' => $_REQUEST['motm_name'], 'motm_url' => $_REQUEST['motm_url'], 'motm_web_name' => $_REQUEST['motm_web_name'], 'motm_web_url' => $_REQUEST['motm_web_url']);
$this->set_config('streams',serialize($streams));
echo '' . sprintf(SETTINGS_SAVED_AT, serendipity_strftime('%T')) . '
\n
';
}
function admin_edit()
{
$streams = unserialize($this->get_config('streams'));
$id = $_REQUEST['motm_id'];
echo "\n";
}
function admin_edit_commit()
{
$streams = unserialize($this->get_config('streams'));
$id = $_REQUEST['motm_id'];
$streams[$id] = array('motm_match' => $_REQUEST['motm_match'], 'motm_name' => $_REQUEST['motm_name'], 'motm_url' => $_REQUEST['motm_url'], 'motm_web_name' => $_REQUEST['motm_web_name'], 'motm_web_url' => $_REQUEST['motm_web_url']);
$this->set_config('streams',serialize($streams));
echo '' . sprintf(SETTINGS_SAVED_AT, serendipity_strftime('%T')) . '
\n
';
}
function admin_delete()
{
$streams = unserialize($this->get_config('streams'));
$id = $_REQUEST['motm_id'];
echo PLUGIN_SIDEBAR_MOTM_ADMIN_DELETE." ". $streams[$id]['motm_match'] ."?
\n";
echo "\n";
}
function admin_delete_commit()
{
$streams = unserialize($this->get_config('streams'));
$id = $_REQUEST['motm_id'];
array_splice($streams, $id, 1);
$this->set_config('streams',serialize($streams));
echo '' . sprintf(SETTINGS_SAVED_AT, serendipity_strftime('%T')) . '
\n
';
}
}
?>