From 2837c44fe8aaf6a8a2b0fb2d3f9be0c93f999e17 Mon Sep 17 00:00:00 2001 From: Afterster Date: Fri, 1 May 2015 07:39:08 +0200 Subject: [PATCH] Add new display_user_field plugin type ; Paypal and Flattr user donation plugin --- bin/channel_run.inc | 2 +- docs/PLUGINS | 3 +- lib/javascript/dynamicpage.js | 4 +- locale/fr_FR/LC_MESSAGES/messages.mo | Bin 114074 -> 114075 bytes locale/fr_FR/LC_MESSAGES/messages.po | 6 +- modules/plugins/Flattr.plugin.php | 105 +++++++++++++++++++++++ modules/plugins/Paypal.plugin.php | 124 +++++++++++++++++++++++++++ templates/show_user.inc.php | 19 +++- 8 files changed, 255 insertions(+), 8 deletions(-) create mode 100644 modules/plugins/Flattr.plugin.php create mode 100644 modules/plugins/Paypal.plugin.php diff --git a/bin/channel_run.inc b/bin/channel_run.inc index f2caf6a0..17284799 100644 --- a/bin/channel_run.inc +++ b/bin/channel_run.inc @@ -187,7 +187,7 @@ while(true) $genre = $channel->get_genre(); // Send Shoutcast metadata on demand if ($options['metadata']) { - fwrite($sock, "icy-notice1: " . AmpConfig::get('title') . "\r\n"); + fwrite($sock, "icy-notice1: " . AmpConfig::get('site_title') . "\r\n"); fwrite($sock, "icy-name: " . $channel->name . "\r\n"); if (!empty($genre)) { fwrite($sock, "icy-genre: " . $genre . "\r\n"); diff --git a/docs/PLUGINS b/docs/PLUGINS index 674defc5..a7168581 100644 --- a/docs/PLUGINS +++ b/docs/PLUGINS @@ -36,4 +36,5 @@ should be implemented as a public method: get_song_preview(string $track_mbid, string $artist_name, string $title) stream_song_preview(string $file) display_home() - external_share(string $url, string $text); + external_share(string $url, string $text) + display_user_field(User $user, library_item $libitem = null) \ No newline at end of file diff --git a/lib/javascript/dynamicpage.js b/lib/javascript/dynamicpage.js index 84b345fd..11bcbb93 100644 --- a/lib/javascript/dynamicpage.js +++ b/lib/javascript/dynamicpage.js @@ -86,9 +86,9 @@ $(function() { }); $("body").delegate("form", "submit", function(e) { - // We do not support ajax post with files or login form + // We do not support ajax post with files or login form, neither specific target var $file = $(this).find("input[type=file]"); - if ($(this).attr('name') !== 'login' && (!$file || !$file.val() || $file.val() === "")) { + if ($(this).attr('name') !== 'login' && (!$file || !$file.val() || $file.val() === "") && ($(this).attr('target') === undefined || $(this).attr('target') === '')) { var postData = $(this).serializeArray(); var formURL = $(this).attr("action"); diff --git a/locale/fr_FR/LC_MESSAGES/messages.mo b/locale/fr_FR/LC_MESSAGES/messages.mo index 2e4b596efd396681ec88caaf98d1d39d59fe0ea5..f0fe6119750fc5492b5dc7b5ea5f4609fd2454e9 100644 GIT binary patch delta 7417 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 delta 7416 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 to + // fill them out + private $user_id; + + /** + * Constructor + * This function does nothing... + */ + public function __construct() { + return true; + } + + /** + * install + * This is a required plugin function. It inserts our preferences + * into Ampache + */ + public function install() { + // Check and see if it's already installed + if (Preference::exists('flattr_user_id')) { return false; } + + Preference::insert('flattr_user_id','Flattr User ID','',25,'string','plugins'); + + return true; + } + + /** + * uninstall + * This is a required plugin function. It removes our preferences from + * the database returning it to its original form + */ + public function uninstall() { + Preference::delete('flattr_user_id'); + + return true; + } + + /** + * upgrade + * This is a recommended plugin function + */ + public function upgrade() { + return true; + } + + /** + * display_user_field + * This display the module in user page + */ + public function display_user_field(User $user, library_item $libitem = null) { + $name = ($libitem != null) ? $libitem->get_fullname() : (T_('User') . " `" . $user->fullname . "` " . T_('on') . " " . AmpConfig::get('site_title')); + $link = ($libitem != null && $libitem->link) ? $libitem->link : $user->link; + + echo "Flattr this"; + } + + /** + * load + * This loads up the data we need into this object, this stuff comes + * from the preferences. + */ + public function load($user) { + $user->set_preferences(); + $data = $user->prefs; + + $this->user_id = trim($data['flattr_user_id']); + if (!strlen($this->user_id)) { + debug_event($this->name,'No Flattr User ID, user field plugin skipped','3'); + return false; + } + + return true; + } +} diff --git a/modules/plugins/Paypal.plugin.php b/modules/plugins/Paypal.plugin.php new file mode 100644 index 00000000..80df1d8c --- /dev/null +++ b/modules/plugins/Paypal.plugin.php @@ -0,0 +1,124 @@ +load to + // fill them out + private $business; + private $currency_code; + + /** + * Constructor + * This function does nothing... + */ + public function __construct() { + return true; + } + + /** + * install + * This is a required plugin function. It inserts our preferences + * into Ampache + */ + public function install() { + // Check and see if it's already installed + if (Preference::exists('paypal_business')) { return false; } + + Preference::insert('paypal_business','Paypal ID','',25,'string','plugins'); + Preference::insert('paypal_currency_code','Paypal Currency Code','USD',25,'string','plugins'); + + return true; + } + + /** + * uninstall + * This is a required plugin function. It removes our preferences from + * the database returning it to its original form + */ + public function uninstall() { + Preference::delete('paypal_business'); + Preference::delete('paypal_currency_code'); + + return true; + } + + /** + * upgrade + * This is a recommended plugin function + */ + public function upgrade() { + return true; + } + + /** + * display_user_field + * This display the module in user page + */ + public function display_user_field(User $user, library_item $libitem = null) { + $name = ($libitem != null) ? $libitem->get_fullname() : (T_('User') . " `" . $user->fullname . "` " . T_('on') . " " . AmpConfig::get('site_title')); + $lang = substr(AmpConfig::get('lang'), 0, 2); + if (empty($lang)) $lang = 'US'; + + echo "
"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "
"; + } + + /** + * load + * This loads up the data we need into this object, this stuff comes + * from the preferences. + */ + public function load($user) { + $user->set_preferences(); + $data = $user->prefs; + + $this->business = trim($data['paypal_business']); + if (!strlen($this->business)) { + debug_event($this->name,'No Paypal ID, user field plugin skipped','3'); + return false; + } + + $this->currency_code = trim($data['paypal_currency_code']); + if (!strlen($this->currency_code)) { + $this->currency_code = 'USD'; + } + + return true; + } +} diff --git a/templates/show_user.inc.php b/templates/show_user.inc.php index 7ed5f0cb..f69fdef2 100644 --- a/templates/show_user.inc.php +++ b/templates/show_user.inc.php @@ -31,7 +31,24 @@ if ($client->f_avatar) { echo $client->f_avatar . "

"; } ?> -get_display_follow(); ?> +get_display_follow(); + + $plugins = Plugin::get_plugins('display_user_field'); +?> +
    +load($GLOBALS['user'])) { +?> +
  • _plugin->display_user_field($client); ?>
  • + +
+