Merge pull request #1265 from Quix0r/rewrites/double-quotes-single

Rewrites/double quotes single
This commit is contained in:
Hypolite Petovan 2022-06-24 18:49:05 -04:00 committed by GitHub
commit 3c5d0dc0cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
83 changed files with 1422 additions and 1272 deletions

View File

@ -64,7 +64,7 @@ function advancedcontentfilter_install(App $a)
Hook::add('dbstructure_definition' , __FILE__, 'advancedcontentfilter_dbstructure_definition'); Hook::add('dbstructure_definition' , __FILE__, 'advancedcontentfilter_dbstructure_definition');
DBStructure::performUpdate(); DBStructure::performUpdate();
Logger::notice("installed advancedcontentfilter"); Logger::notice('installed advancedcontentfilter');
} }
/* /*
@ -73,20 +73,20 @@ function advancedcontentfilter_install(App $a)
function advancedcontentfilter_dbstructure_definition(App $a, &$database) function advancedcontentfilter_dbstructure_definition(App $a, &$database)
{ {
$database["advancedcontentfilter_rules"] = [ $database['advancedcontentfilter_rules'] = [
"comment" => "Advancedcontentfilter addon rules", 'comment' => 'Advancedcontentfilter addon rules',
"fields" => [ 'fields' => [
"id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "Auto incremented rule id"], 'id' => ['type' => 'int unsigned', 'not null' => '1', 'extra' => 'auto_increment', 'primary' => '1', 'comment' => 'Auto incremented rule id'],
"uid" => ["type" => "int unsigned", "not null" => "1", "comment" => "Owner user id"], 'uid' => ['type' => 'int unsigned', 'not null' => '1', 'comment' => 'Owner user id'],
"name" => ["type" => "varchar(255)", "not null" => "1", "comment" => "Rule name"], 'name' => ['type' => 'varchar(255)', 'not null' => '1', 'comment' => 'Rule name'],
"expression" => ["type" => "mediumtext" , "not null" => "1", "comment" => "Expression text"], 'expression' => ['type' => 'mediumtext' , 'not null' => '1', 'comment' => 'Expression text'],
"serialized" => ["type" => "mediumtext" , "not null" => "1", "comment" => "Serialized parsed expression"], 'serialized' => ['type' => 'mediumtext' , 'not null' => '1', 'comment' => 'Serialized parsed expression'],
"active" => ["type" => "boolean" , "not null" => "1", "default" => "1", "comment" => "Whether the rule is active or not"], 'active' => ['type' => 'boolean' , 'not null' => '1', 'default' => '1', 'comment' => 'Whether the rule is active or not'],
"created" => ["type" => "datetime" , "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Creation date"], 'created' => ['type' => 'datetime' , 'not null' => '1', 'default' => DBA::NULL_DATETIME, 'comment' => 'Creation date'],
], ],
"indexes" => [ 'indexes' => [
"PRIMARY" => ["id"], 'PRIMARY' => ['id'],
"uid_active" => ["uid", "active"], 'uid_active' => ['uid', 'active'],
] ]
]; ];
} }
@ -180,6 +180,11 @@ function advancedcontentfilter_addon_settings(App $a, array &$data)
* Module * Module
*/ */
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function advancedcontentfilter_module() {} function advancedcontentfilter_module() {}
function advancedcontentfilter_init(App $a) function advancedcontentfilter_init(App $a)

View File

@ -117,7 +117,7 @@ function birdavatar_addon_settings_post(App $a, &$s)
* @param $a array * @param $a array
* @param &$b array * @param &$b array
*/ */
function birdavatar_lookup(App $a, &$b) function birdavatar_lookup(App $a, array &$b)
{ {
$user = DBA::selectFirst('user', ['uid'], ['email' => $b['email']]); $user = DBA::selectFirst('user', ['uid'], ['email' => $b['email']]);
if (DBA::isResult($user)) { if (DBA::isResult($user)) {
@ -136,9 +136,12 @@ function birdavatar_lookup(App $a, &$b)
$b['success'] = true; $b['success'] = true;
} }
function birdavatar_module() /**
{ * This is a statement rather than an actual function definition. The simple
} * existence of this method is checked to figure out if the addon offers a
* module.
*/
function birdavatar_module() {}
/** /**
* Returns image for user id * Returns image for user id

View File

@ -44,6 +44,7 @@
* THE SOFTWARE. * THE SOFTWARE.
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
@ -54,7 +55,8 @@ function blackout_install() {
Hook::register('page_header', 'addon/blackout/blackout.php', 'blackout_redirect'); Hook::register('page_header', 'addon/blackout/blackout.php', 'blackout_redirect');
} }
function blackout_redirect ($a, $b) { function blackout_redirect (App $a, $b)
{
// if we have a logged in user, don't throw her out // if we have a logged in user, don't throw her out
if (local_user()) { if (local_user()) {
return true; return true;
@ -67,32 +69,33 @@ function blackout_redirect ($a, $b) {
$now = time(); $now = time();
$date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart); $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart);
$date2 = DateTime::createFromFormat('Y-m-d G:i', $myend); $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend);
if ( $date1 && $date2 ) { if ($date1 && $date2) {
$date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart)->format('U'); $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart)->format('U');
$date2 = DateTime::createFromFormat('Y-m-d G:i', $myend)->format('U'); $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend)->format('U');
} else { } else {
$date1 = 0; $date1 = 0;
$date2 = 0; $date2 = 0;
} }
if (( $date1 <= $now ) && ( $now <= $date2 )) { if (( $date1 <= $now ) && ( $now <= $date2 )) {
Logger::notice('redirecting user to blackout page'); Logger::notice('redirecting user to blackout page');
System::externalRedirect($myurl); System::externalRedirect($myurl);
} }
} }
function blackout_addon_admin(&$a, &$o) { function blackout_addon_admin(App $a, &$o) {
$mystart = DI::config()->get('blackout','begindate'); $mystart = DI::config()->get('blackout','begindate');
if (! is_string($mystart)) { $mystart = "YYYY-MM-DD hh:mm"; } if (! is_string($mystart)) { $mystart = 'YYYY-MM-DD hh:mm'; }
$myend = DI::config()->get('blackout','enddate'); $myend = DI::config()->get('blackout','enddate');
if (! is_string($myend)) { $myend = "YYYY-MM-DD hh:mm"; } if (! is_string($myend)) { $myend = 'YYYY-MM-DD hh:mm'; }
$myurl = DI::config()->get('blackout','url'); $myurl = DI::config()->get('blackout','url');
if (! is_string($myurl)) { $myurl = "https://www.example.com"; } if (! is_string($myurl)) { $myurl = 'https://www.example.com'; }
$t = Renderer::getMarkupTemplate( "admin.tpl", "addon/blackout/" ); $t = Renderer::getMarkupTemplate( 'admin.tpl', 'addon/blackout/' );
$date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart); $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart);
$date2 = DateTime::createFromFormat('Y-m-d G:i', $myend); $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend);
// a note for the admin // a note for the admin
$adminnote = ""; $adminnote = '';
if ($date2 < $date1) { if ($date2 < $date1) {
$adminnote = DI::l10n()->t("The end-date is prior to the start-date of the blackout, you should fix this."); $adminnote = DI::l10n()->t("The end-date is prior to the start-date of the blackout, you should fix this.");
} else { } else {
@ -100,14 +103,14 @@ function blackout_addon_admin(&$a, &$o) {
} }
$o = Renderer::replaceMacros($t, [ $o = Renderer::replaceMacros($t, [
'$submit' => DI::l10n()->t('Save Settings'), '$submit' => DI::l10n()->t('Save Settings'),
'$rurl' => ["rurl", DI::l10n()->t("Redirect URL"), $myurl, DI::l10n()->t("All your visitors from the web will be redirected to this URL."), "", "", "url"], '$rurl' => ['rurl', DI::l10n()->t("Redirect URL"), $myurl, DI::l10n()->t("All your visitors from the web will be redirected to this URL."), '', '', 'url'],
'$startdate' => ["startdate", DI::l10n()->t("Begin of the Blackout"), $mystart, DI::l10n()->t("Format is <tt>YYYY-MM-DD hh:mm</tt>; <em>YYYY</em> year, <em>MM</em> month, <em>DD</em> day, <em>hh</em> hour and <em>mm</em> minute.")], '$startdate' => ['startdate', DI::l10n()->t("Begin of the Blackout"), $mystart, DI::l10n()->t("Format is <tt>YYYY-MM-DD hh:mm</tt>; <em>YYYY</em> year, <em>MM</em> month, <em>DD</em> day, <em>hh</em> hour and <em>mm</em> minute.")],
'$enddate' => ["enddate", DI::l10n()->t("End of the Blackout"), $myend, ""], '$enddate' => ['enddate', DI::l10n()->t("End of the Blackout"), $myend, ''],
'$adminnote' => $adminnote, '$adminnote' => $adminnote,
'$aboutredirect' => DI::l10n()->t("<strong>Note</strong>: The redirect will be active from the moment you press the submit button. Users currently logged in will <strong>not</strong> be thrown out but can't login again after logging out while the blackout is still in place."), '$aboutredirect' => DI::l10n()->t("<strong>Note</strong>: The redirect will be active from the moment you press the submit button. Users currently logged in will <strong>not</strong> be thrown out but can't login again after logging out while the blackout is still in place."),
]); ]);
} }
function blackout_addon_admin_post (&$a) { function blackout_addon_admin_post (App $a) {
$begindate = trim($_POST['startdate']); $begindate = trim($_POST['startdate']);
$enddate = trim($_POST['enddate']); $enddate = trim($_POST['enddate']);
$url = trim($_POST['rurl']); $url = trim($_POST['rurl']);

View File

@ -19,12 +19,14 @@ use Friendica\Network\HTTPException\ForbiddenException;
require_once __DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php'; require_once __DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
function blockbot_install() { function blockbot_install()
{
Hook::register('init_1', __FILE__, 'blockbot_init_1'); Hook::register('init_1', __FILE__, 'blockbot_init_1');
} }
function blockbot_addon_admin(&$a, &$o) { function blockbot_addon_admin(App $a, &$o)
$t = Renderer::getMarkupTemplate("admin.tpl", "addon/blockbot/"); {
$t = Renderer::getMarkupTemplate('admin.tpl', 'addon/blockbot/');
$o = Renderer::replaceMacros($t, [ $o = Renderer::replaceMacros($t, [
'$submit' => DI::l10n()->t('Save Settings'), '$submit' => DI::l10n()->t('Save Settings'),
@ -34,13 +36,15 @@ function blockbot_addon_admin(&$a, &$o) {
]); ]);
} }
function blockbot_addon_admin_post(&$a) { function blockbot_addon_admin_post(App $a)
{
DI::config()->set('blockbot', 'good_crawlers', $_POST['good_crawlers'] ?? false); DI::config()->set('blockbot', 'good_crawlers', $_POST['good_crawlers'] ?? false);
DI::config()->set('blockbot', 'block_gab', $_POST['block_gab'] ?? false); DI::config()->set('blockbot', 'block_gab', $_POST['block_gab'] ?? false);
DI::config()->set('blockbot', 'training', $_POST['training'] ?? false); DI::config()->set('blockbot', 'training', $_POST['training'] ?? false);
} }
function blockbot_init_1(App $a) { function blockbot_init_1(App $a)
{
if (empty($_SERVER['HTTP_USER_AGENT'])) { if (empty($_SERVER['HTTP_USER_AGENT'])) {
return; return;
} }

View File

@ -186,9 +186,12 @@ function blockem_item_photo_menu(App $a, array &$b)
} }
} }
function blockem_module() /**
{ * This is a statement rather than an actual function definition. The simple
} * existence of this method is checked to figure out if the addon offers a
* module.
*/
function blockem_module() {}
function blockem_init(App $a) function blockem_init(App $a)
{ {

View File

@ -15,7 +15,7 @@ function buglink_install()
Hook::register('page_end', 'addon/buglink/buglink.php', 'buglink_active'); Hook::register('page_end', 'addon/buglink/buglink.php', 'buglink_active');
} }
function buglink_active(App $a, &$b) function buglink_active(App $a, string &$b)
{ {
$b .= '<div id="buglink_wrapper" style="position: fixed; bottom: 5px; left: 5px;"><a href="https://github.com/friendica/friendica/issues" target="_blank" rel="noopener noreferrer" title="' . DI::l10n()->t('Report Bug') . '"><img src="addon/buglink/bug-x.gif" alt="' . DI::l10n()->t('Report Bug') . '" /></a></div>'; $b .= '<div id="buglink_wrapper" style="position: fixed; bottom: 5px; left: 5px;"><a href="https://github.com/friendica/friendica/issues" target="_blank" rel="noopener noreferrer" title="' . DI::l10n()->t('Report Bug') . '"><img src="addon/buglink/bug-x.gif" alt="' . DI::l10n()->t('Report Bug') . '" /></a></div>';
} }

View File

@ -5,6 +5,8 @@
* Version: 1.0 * Version: 1.0
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike> * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
@ -12,19 +14,21 @@ function calc_install() {
Hook::register('app_menu', 'addon/calc/calc.php', 'calc_app_menu'); Hook::register('app_menu', 'addon/calc/calc.php', 'calc_app_menu');
} }
function calc_app_menu($a,&$b) { function calc_app_menu(App $a, array &$b)
{
$b['app_menu'][] = '<div class="app-title"><a href="calc">Calculator</a></div>'; $b['app_menu'][] = '<div class="app-title"><a href="calc">Calculator</a></div>';
} }
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function calc_module() {} function calc_module() {}
function calc_init(App $a)
{
$x = <<< EOT
function calc_init($a) {
$x = <<< EOT
<script language="JavaScript"> <script language="JavaScript">
/************************************** /**************************************
@ -354,6 +358,5 @@ $o .= <<< EOT
</td></tr></tbody></table> </td></tr></tbody></table>
EOT; EOT;
return $o; return $o;
} }

View File

@ -118,7 +118,7 @@ function catavatar_addon_settings_post(App $a, &$s)
* @param $a array * @param $a array
* @param &$b array * @param &$b array
*/ */
function catavatar_lookup(App $a, &$b) function catavatar_lookup(App $a, array &$b)
{ {
$user = DBA::selectFirst('user', ['uid'], ['email' => $b['email']]); $user = DBA::selectFirst('user', ['uid'], ['email' => $b['email']]);
if (DBA::isResult($user)) { if (DBA::isResult($user)) {
@ -137,6 +137,11 @@ function catavatar_lookup(App $a, &$b)
$b['success'] = true; $b['success'] = true;
} }
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function catavatar_module() {} function catavatar_module() {}
/** /**

View File

@ -5,212 +5,207 @@
* Version: 1.0 * Version: 1.0
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike> * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
function convert_install() { function convert_install() {
Hook::register('app_menu', 'addon/convert/convert.php', 'convert_app_menu'); Hook::register('app_menu', 'addon/convert/convert.php', 'convert_app_menu');
} }
function convert_app_menu($a,&$b) { function convert_app_menu(App $a, array &$b)
{
$b['app_menu'][] = '<div class="app-title"><a href="convert">Units Conversion</a></div>'; $b['app_menu'][] = '<div class="app-title"><a href="convert">Units Conversion</a></div>';
} }
function convert_module() {} function convert_module() {}
function convert_content(App $a) {
// @TODO UnitConverter uses a deprecated constructor with the class' name
// @TODO Let's one day rewrite this to a modern composer package
include 'UnitConvertor.php';
class TP_Converter extends UnitConvertor
function convert_content($app) {
include("UnitConvertor.php");
class TP_Converter extends UnitConvertor {
function TP_Converter($lang = "en")
{ {
if ($lang != 'en' ) { public function __construct(string $lang = 'en')
$dec_point = '.'; $thousand_sep = "'"; {
} else { if ($lang == 'en' ) {
$dec_point = '.'; $thousand_sep = ","; $dec_point = '.';
$thousand_sep = ',';
} else {
$dec_point = '.';
$thousand_sep = "'";
}
parent::UnitConvertor($dec_point, $thousand_sep );
} }
$this->UnitConvertor($dec_point , $thousand_sep ); private function findBaseUnit($from, $to)
{
} // end func UnitConvertor while (list($skey, $sval) = each($this->bases)) {
if ($skey == $from || $to == $skey || in_array($to, $sval) || in_array($from, $sval)) {
function find_base_unit($from,$to) {
while (list($skey,$sval) = each($this->bases)) {
if ($skey == $from || $to == $skey || in_array($to,$sval) || in_array($from,$sval)) {
return $skey; return $skey;
} }
}
return false;
} }
return false;
}
function getTable($value, $from_unit, $to_unit, $precision) { public function getTable(int $value, $from_unit, $to_unit, $precision): string
{
$string = '';
if ($base_unit = $this->find_base_unit($from_unit,$to_unit)) { if ($base_unit = $this->findBaseUnit($from_unit, $to_unit)) {
// A baseunit was found now lets convert from -> $base_unit
// A baseunit was found now lets convert from -> $base_unit $cell ['value'] = $this->convert($value, $from_unit, $base_unit, $precision) . ' ' . $base_unit;
$cell ['class'] = ($base_unit == $from_unit || $base_unit == $to_unit) ? 'framedred' : '';
$cell ['value'] = $this->convert($value, $from_unit, $base_unit, $precision)." ".$base_unit;
$cell ['class'] = ($base_unit == $from_unit || $base_unit == $to_unit) ? "framedred": "";
$cells[] = $cell; $cells[] = $cell;
// We now have the base unit and value now lets produce the table;
while (list($key,$val) = each($this->bases[$base_unit])) {
$cell ['value'] = $this->convert($value, $from_unit, $val, $precision)." ".$val;
$cell ['class'] = ($val == $from_unit || $val == $to_unit) ? "framedred": "";
$cells[] = $cell;
}
$cc = count($cells); // We now have the base unit and value now lets produce the table;
$string = "<table class=\"framed grayish\" border=\"1\" cellpadding=\"5\" width=\"80%\" align=\"center\"><tr>"; while (list($key, $val) = each($this->bases[$base_unit])) {
$string .= "<td rowspan=\"$cc\" align=\"center\">$value $from_unit</td>"; $cell ['value'] = $this->convert($value, $from_unit, $val, $precision) . ' ' . $val;
$i=0; $cell ['class'] = ($val == $from_unit || $val == $to_unit) ? 'framedred' : '';
foreach ($cells as $cell) { $cells[] = $cell;
if ($i==0) {
$string .= "<td class=\"".$cell['class']."\">".$cell['value']."</td>";
$i++;
} else {
$string .= "</tr><tr><td class=\"".$cell['class']."\">".$cell['value']."</td>";
} }
$cc = count($cells);
$string = "<table class=\"framed grayish\" border=\"1\" cellpadding=\"5\" width=\"80%\" align=\"center\"><tr>";
$string .= "<td rowspan=\"$cc\" align=\"center\">$value $from_unit</td>";
$i = 0;
foreach ($cells as $cell) {
if ($i == 0) {
$string .= "<td class=\"" . $cell['class'] . "\">" . $cell['value'] . "</td>";
$i++;
} else {
$string .= "</tr><tr><td class=\"" . $cell['class'] . "\">" . $cell['value'] . "</td>";
}
}
$string .= "</tr></table>";
} }
$string .= "</tr></table>";
return $string; return $string;
} }
} }
}
$conv = new TP_Converter('en');
$conv = new TP_Converter('en'); $conversions = [
'Temperature' => ['base' => 'Celsius',
'conv' => [
'Fahrenheit' => ['ratio' => 1.8, 'offset' => 32],
'Kelvin' => ['ratio' => 1, 'offset' => 273],
'Reaumur' => 0.8
]
],
'Weight' => ['base' => 'kg',
'conv' => [
'g' => 1000,
'mg' => 1000000,
't' => 0.001,
'grain' => 15432,
'oz' => 35.274,
'lb' => 2.2046,
'cwt(UK)' => 0.019684,
'cwt(US)' => 0.022046,
'ton (US)' => 0.0011023,
'ton (UK)' => 0.0009842
]
],
'Distance' => ['base' => 'km',
'conv' => [
'm' => 1000,
'dm' => 10000,
'cm' => 100000,
'mm' => 1000000,
'mile' => 0.62137,
'naut.mile' => 0.53996,
'inch(es)' => 39370,
'ft' => 3280.8,
'yd' => 1093.6,
'furlong' => 4.970969537898672,
'fathom' => 546.8066491688539
]
],
'Area' => ['base' => 'km 2',
'conv' => [
'ha' => 100,
'acre' => 247.105,
'm 2' => pow(1000,2),
'dm 2' => pow(10000,2),
'cm 2' => pow(100000,2),
'mm 2' => pow(1000000,2),
'mile 2' => pow(0.62137,2),
'naut.miles 2' => pow(0.53996,2),
'in 2' => pow(39370,2),
'ft 2' => pow(3280.8,2),
'yd 2' => pow(1093.6,2),
]
],
'Volume' => ['base' => 'm 3',
'conv' => [
'in 3' => 61023.6,
'ft 3' => 35.315,
'cm 3' => pow(10,6),
'dm 3' => 1000,
'litre' => 1000,
'hl' => 10,
'yd 3' => 1.30795,
'gal(US)' => 264.172,
'gal(UK)' => 219.969,
'pint' => 2113.376,
'quart' => 1056.688,
'cup' => 4266.753,
'fl oz' => 33814.02,
'tablespoon' => 67628.04,
'teaspoon' => 202884.1,
'pt (UK)' => 1000/0.56826,
'barrel petroleum' => 1000/158.99,
'Register Tons' => 2.832,
'Ocean Tons' => 1.1327
]
],
'Speed' => ['base' => 'kmph',
'conv' => [
'mps' => 0.0001726031,
'milesph' => 0.62137,
'knots' => 0.53996,
'mach STP' => 0.0008380431,
'c (warp)' => 9.265669e-10
]
]
];
while (list($key, $val) = each($conversions)) {
$conversions = [ $conv->addConversion($val['base'], $val['conv']);
'Temperature'=>['base' =>'Celsius', $list[$key][] = $val['base'];
'conv'=>[ while (list($ukey, $uval) = each($val['conv'])) {
'Fahrenheit'=>['ratio'=>1.8, 'offset'=>32], $list[$key][] = $ukey;
'Kelvin'=>['ratio'=>1, 'offset'=>273], }
'Reaumur'=>0.8
]
],
'Weight' => ['base' =>'kg',
'conv'=>[
'g'=>1000,
'mg'=>1000000,
't'=>0.001,
'grain'=>15432,
'oz'=>35.274,
'lb'=>2.2046,
'cwt(UK)' => 0.019684,
'cwt(US)' => 0.022046,
'ton (US)' => 0.0011023,
'ton (UK)' => 0.0009842
]
],
'Distance' => ['base' =>'km',
'conv'=>[
'm'=>1000,
'dm'=>10000,
'cm'=>100000,
'mm'=>1000000,
'mile'=>0.62137,
'naut.mile'=>0.53996,
'inch(es)'=>39370,
'ft'=>3280.8,
'yd'=>1093.6,
'furlong'=>4.970969537898672,
'fathom'=>546.8066491688539
]
],
'Area' => ['base' =>'km 2',
'conv'=>[
'ha'=>100,
'acre'=>247.105,
'm 2'=>pow(1000,2),
'dm 2'=>pow(10000,2),
'cm 2'=>pow(100000,2),
'mm 2'=>pow(1000000,2),
'mile 2'=>pow(0.62137,2),
'naut.miles 2'=>pow(0.53996,2),
'in 2'=>pow(39370,2),
'ft 2'=>pow(3280.8,2),
'yd 2'=>pow(1093.6,2),
]
],
'Volume' => ['base' =>'m 3',
'conv'=>[
'in 3'=>61023.6,
'ft 3'=>35.315,
'cm 3'=>pow(10,6),
'dm 3'=>1000,
'litre'=>1000,
'hl'=>10,
'yd 3'=>1.30795,
'gal(US)'=>264.172,
'gal(UK)'=>219.969,
'pint' => 2113.376,
'quart' => 1056.688,
'cup' => 4266.753,
'fl oz' => 33814.02,
'tablespoon' => 67628.04,
'teaspoon' => 202884.1,
'pt (UK)'=>1000/0.56826,
'barrel petroleum'=>1000/158.99,
'Register Tons'=>2.832,
'Ocean Tons'=>1.1327
]
],
'Speed' =>['base' =>'kmph',
'conv'=>[
'mps'=>0.0001726031,
'milesph'=>0.62137,
'knots'=>0.53996,
'mach STP'=>0.0008380431,
'c (warp)'=>9.265669e-10
]
]
];
while (list($key,$val) = each($conversions)) {
$conv->addConversion($val['base'], $val['conv']);
$list[$key][] = $val['base'];
while (list($ukey,$uval) = each($val['conv'])) {
$list[$key][] = $ukey;
} }
}
$o .= '<h3>Unit Conversions</h3>';
$o .= '<h3>Unit Conversions</h3>';
if (isset($_POST['from_unit']) && isset($_POST['value'])) { if (isset($_POST['from_unit']) && isset($_POST['value'])) {
$_POST['value'] = $_POST['value'] + 0; $o .= ($conv->getTable(intval($_POST['value']), $_POST['from_unit'], $_POST['to_unit'], 5)) . '</p>';
$o .= ($conv->getTable($_POST['value'], $_POST['from_unit'], $_POST['to_unit'], 5))."</p>";
} else { } else {
$o .= "<p>Select:</p>"; $o .= '<p>Select:</p>';
} }
if(isset($_POST['value'])) if (isset($_POST['value'])) {
$value = $_POST['value']; $value = $_POST['value'];
else } else {
$value = ''; $value = '';
}
$o .= '<form action="convert" method="post" name="conversion">'; $o .= '<form action="convert" method="post" name="conversion">';
$o .= '<input name="value" type="text" id="value" value="' . $value . '" size="10" maxlength="10" />'; $o .= '<input name="value" type="text" id="value" value="' . $value . '" size="10" maxlength="10" />';
$o .= '<select name="from_unit" size="12">'; $o .= '<select name="from_unit" size="12">';
reset($list); reset($list);
while(list($key,$val) = each($list)) { while(list($key, $val) = each($list)) {
$o .= "\n\t<optgroup label=\"$key\">"; $o .= "\n\t<optgroup label=\"$key\">";
while(list($ukey,$uval) = each($val)) { while(list($ukey, $uval) = each($val)) {
$selected = (($uval == $_POST['from_unit']) ? ' selected="selected" ' : ''); $selected = (($uval == $_POST['from_unit']) ? ' selected="selected" ' : '');
$o .= "\n\t\t<option value=\"$uval\" $selected >$uval</option>"; $o .= "\n\t\t<option value=\"$uval\" $selected >$uval</option>";
} }
@ -218,8 +213,7 @@ while (list($key,$val) = each($conversions)) {
} }
$o .= '</select>'; $o .= '</select>';
$o .= '<input type="submit" name="Submit" value="Submit" /></form>';
$o .= '<input type="submit" name="Submit" value="Submit" /></form>';
return $o; return $o;
} }

View File

@ -83,7 +83,7 @@ function cookienotice_addon_admin_post(App $a)
* *
* @return void * @return void
*/ */
function cookienotice_page_content_top(App $a, &$b) function cookienotice_page_content_top(App $a, array &$b)
{ {
DI::page()->registerStylesheet(__DIR__ . '/cookienotice.css'); DI::page()->registerStylesheet(__DIR__ . '/cookienotice.css');
DI::page()->registerFooterScript(__DIR__ . '/cookienotice.js'); DI::page()->registerFooterScript(__DIR__ . '/cookienotice.js');
@ -99,7 +99,7 @@ function cookienotice_page_content_top(App $a, &$b)
* *
* @return void * @return void
*/ */
function cookienotice_page_end(App $a, &$b) function cookienotice_page_end(App $a, array &$b)
{ {
$text = (string)DI::config()->get('cookienotice', 'text', DI::l10n()->t('This website uses cookies to recognize revisiting and logged in users. You accept the usage of these cookies by continue browsing this website.')); $text = (string)DI::config()->get('cookienotice', 'text', DI::l10n()->t('This website uses cookies to recognize revisiting and logged in users. You accept the usage of these cookies by continue browsing this website.'));
$oktext = (string)DI::config()->get('cookienotice', 'oktext', DI::l10n()->t('OK')); $oktext = (string)DI::config()->get('cookienotice', 'oktext', DI::l10n()->t('OK'));

View File

@ -87,7 +87,7 @@ function getWeather($loc, $units = 'metric', $lang = 'en', $appid = '', $cacheti
return $r; return $r;
} }
function curweather_network_mod_init(App $a, &$b) function curweather_network_mod_init(App $a, string &$body)
{ {
if (!intval(DI::pConfig()->get(local_user(), 'curweather', 'curweather_enable'))) { if (!intval(DI::pConfig()->get(local_user(), 'curweather', 'curweather_enable'))) {
return; return;
@ -112,7 +112,7 @@ function curweather_network_mod_init(App $a, &$b)
$appid = DI::config()->get('curweather', 'appid'); $appid = DI::config()->get('curweather', 'appid');
$cachetime = intval(DI::config()->get('curweather', 'cachetime')); $cachetime = intval(DI::config()->get('curweather', 'cachetime'));
if ($units === "") { if ($units === '') {
$units = 'metric'; $units = 'metric';
} }
@ -221,7 +221,7 @@ function curweather_addon_admin(App $a, &$o)
$appid = DI::config()->get('curweather', 'appid'); $appid = DI::config()->get('curweather', 'appid');
$cachetime = DI::config()->get('curweather', 'cachetime'); $cachetime = DI::config()->get('curweather', 'cachetime');
$t = Renderer::getMarkupTemplate("admin.tpl", "addon/curweather/" ); $t = Renderer::getMarkupTemplate('admin.tpl', 'addon/curweather/' );
$o = Renderer::replaceMacros($t, [ $o = Renderer::replaceMacros($t, [
'$submit' => DI::l10n()->t('Save Settings'), '$submit' => DI::l10n()->t('Save Settings'),

View File

@ -110,4 +110,3 @@ class Diasphp {
return true; return true;
} }
} }
?>

View File

@ -118,7 +118,7 @@ function diaspora_settings(App $a, array &$data)
} }
function diaspora_settings_post(App $a, &$b) function diaspora_settings_post(App $a, array &$b)
{ {
if (!empty($_POST['diaspora-submit'])) { if (!empty($_POST['diaspora-submit'])) {
DI::pConfig()->set(local_user(),'diaspora', 'post' , intval($_POST['enabled'])); DI::pConfig()->set(local_user(),'diaspora', 'post' , intval($_POST['enabled']));
@ -137,7 +137,7 @@ function diaspora_settings_post(App $a, &$b)
} }
} }
function diaspora_hook_fork(&$a, &$b) function diaspora_hook_fork(App $a, array &$b)
{ {
if ($b['name'] != 'notifier_normal') { if ($b['name'] != 'notifier_normal') {
return; return;

View File

@ -25,10 +25,17 @@ function forumdirectory_install()
Hook::register('app_menu', 'addon/forumdirectory/forumdirectory.php', 'forumdirectory_app_menu'); Hook::register('app_menu', 'addon/forumdirectory/forumdirectory.php', 'forumdirectory_app_menu');
} }
function forumdirectory_module() /**
{ * This is a statement rather than an actual function definition. The simple
return; * existence of this method is checked to figure out if the addon offers a
} * module.
*/
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function forumdirectory_module() {}
function forumdirectory_app_menu(App $a, array &$b) function forumdirectory_app_menu(App $a, array &$b)
{ {

View File

@ -21,7 +21,7 @@ function fromapp_install()
Logger::notice("installed fromapp"); Logger::notice("installed fromapp");
} }
function fromapp_settings_post($a, $post) function fromapp_settings_post(App $a, $post)
{ {
if (!local_user() || empty($_POST['fromapp-submit'])) { if (!local_user() || empty($_POST['fromapp-submit'])) {
return; return;
@ -53,9 +53,9 @@ function fromapp_settings(App &$a, array &$data)
]; ];
} }
function fromapp_post_hook(&$a, &$item) function fromapp_post_hook(App $a, &$item)
{ {
if (! local_user()) { if (!local_user()) {
return; return;
} }

View File

@ -6,6 +6,7 @@
* Author: Michael Vogel <https://pirati.ca/profile/heluecht> * Author: Michael Vogel <https://pirati.ca/profile/heluecht>
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
@ -71,12 +72,12 @@ function geocoordinates_resolve_item(&$item)
DI::cache()->set("geocoordinates:".$language.":".$coords[0]."-".$coords[1], $item["location"]); DI::cache()->set("geocoordinates:".$language.":".$coords[0]."-".$coords[1], $item["location"]);
} }
function geocoordinates_post_hook($a, &$item) function geocoordinates_post_hook(App $a, &$item)
{ {
geocoordinates_resolve_item($item); geocoordinates_resolve_item($item);
} }
function geocoordinates_addon_admin(&$a, &$o) function geocoordinates_addon_admin(App $a, &$o)
{ {
$t = Renderer::getMarkupTemplate("admin.tpl", "addon/geocoordinates/"); $t = Renderer::getMarkupTemplate("admin.tpl", "addon/geocoordinates/");
@ -88,7 +89,7 @@ function geocoordinates_addon_admin(&$a, &$o)
]); ]);
} }
function geocoordinates_addon_admin_post(&$a) function geocoordinates_addon_admin_post(App $a)
{ {
$api_key = trim($_POST['api_key'] ?? ''); $api_key = trim($_POST['api_key'] ?? '');
DI::config()->set('geocoordinates', 'api_key', $api_key); DI::config()->set('geocoordinates', 'api_key', $api_key);

View File

@ -15,8 +15,8 @@ use Friendica\Core\Renderer;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\Notification; use Friendica\Model\Notification;
function gnot_install() { function gnot_install()
{
Hook::register('addon_settings', 'addon/gnot/gnot.php', 'gnot_settings'); Hook::register('addon_settings', 'addon/gnot/gnot.php', 'gnot_settings');
Hook::register('addon_settings_post', 'addon/gnot/gnot.php', 'gnot_settings_post'); Hook::register('addon_settings_post', 'addon/gnot/gnot.php', 'gnot_settings_post');
Hook::register('enotify_mail', 'addon/gnot/gnot.php', 'gnot_enotify_mail'); Hook::register('enotify_mail', 'addon/gnot/gnot.php', 'gnot_enotify_mail');
@ -25,31 +25,22 @@ function gnot_install() {
} }
/** /**
*
* Callback from the settings post function. * Callback from the settings post function.
* $post contains the $_POST array. * $post contains the $_POST array.
* We will make sure we've got a valid user account * We will make sure we've got a valid user account
* and if so set our configuration setting for this person. * and if so set our configuration setting for this person.
*
*/ */
function gnot_settings_post(App $a, $post) {
function gnot_settings_post($a,$post) {
if(! local_user() || empty($_POST['gnot-submit'])) if(! local_user() || empty($_POST['gnot-submit']))
return; return;
DI::pConfig()->set(local_user(),'gnot','enable',intval($_POST['gnot'])); DI::pConfig()->set(local_user(),'gnot','enable',intval($_POST['gnot']));
} }
/** /**
*
* Called from the Addon Setting form. * Called from the Addon Setting form.
* Add our own settings info to the page. * Add our own settings info to the page.
*
*/ */
function gnot_settings(App &$a, array &$data) function gnot_settings(App &$a, array &$data)
{ {
if (!local_user()) { if (!local_user()) {
@ -71,10 +62,13 @@ function gnot_settings(App &$a, array &$data)
]; ];
} }
function gnot_enotify_mail(App $a, array &$b)
function gnot_enotify_mail(&$a,&$b) { {
if((! $b['uid']) || (! intval(DI::pConfig()->get($b['uid'], 'gnot','enable')))) if ((!$b['uid']) || (! intval(DI::pConfig()->get($b['uid'], 'gnot','enable')))) {
return; return;
if($b['type'] == Notification\Type::COMMENT) }
if ($b['type'] == Notification\Type::COMMENT) {
$b['subject'] = DI::l10n()->t('[Friendica:Notify] Comment to conversation #%d', $b['parent']); $b['subject'] = DI::l10n()->t('[Friendica:Notify] Comment to conversation #%d', $b['parent']);
}
} }

View File

@ -6,6 +6,8 @@
* Author: Michael Vogel <https://pirati.ca/profile/heluecht> * Author: Michael Vogel <https://pirati.ca/profile/heluecht>
* *
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
@ -13,27 +15,26 @@ function googlemaps_install()
{ {
Hook::register('render_location', 'addon/googlemaps/googlemaps.php', 'googlemaps_location'); Hook::register('render_location', 'addon/googlemaps/googlemaps.php', 'googlemaps_location');
Logger::notice("installed googlemaps"); Logger::notice('installed googlemaps');
} }
function googlemaps_location($a, &$item) function googlemaps_location(App $a, &$item)
{ {
if (!(strlen($item['location']) || strlen($item['coord']))) {
if(! (strlen($item['location']) || strlen($item['coord']))) {
return; return;
} }
if ($item['coord'] != ""){ if ($item['coord'] != '') {
$target = "http://maps.google.com/?q=".urlencode($item['coord']); $target = 'http://maps.google.com/?q=' . urlencode($item['coord']);
} else { } else {
$target = "http://maps.google.com/?q=".urlencode($item['location']); $target = 'http://maps.google.com/?q=' . urlencode($item['location']);
} }
if ($item['location'] != "") { if ($item['location'] != '') {
$title = $item['location']; $title = $item['location'];
} else { } else {
$title = $item['coord']; $title = $item['coord'];
} }
$item['html'] = '<a target="map" title="'.$title.'" href= "'.$target.'">'.$title.'</a>'; $item['html'] = '<a target="map" title="' . $title . '" href= "' . $target . '">' . $title . '</a>';
} }

View File

@ -37,7 +37,8 @@ function gravatar_load_config(App $a, ConfigFileLoader $loader)
* @param $a array * @param $a array
* @param &$b array * @param &$b array
*/ */
function gravatar_lookup($a, &$b) { function gravatar_lookup(App $a, array &$b)
{
$default_avatar = DI::config()->get('gravatar', 'default_avatar'); $default_avatar = DI::config()->get('gravatar', 'default_avatar');
$rating = DI::config()->get('gravatar', 'rating'); $rating = DI::config()->get('gravatar', 'rating');
@ -61,17 +62,20 @@ function gravatar_lookup($a, &$b) {
/** /**
* Display admin settings for this addon * Display admin settings for this addon
*/ */
function gravatar_addon_admin (&$a, &$o) { function gravatar_addon_admin (App $a, &$o)
{
$t = Renderer::getMarkupTemplate( "admin.tpl", "addon/gravatar/" ); $t = Renderer::getMarkupTemplate( "admin.tpl", "addon/gravatar/" );
$default_avatar = DI::config()->get('gravatar', 'default_avatar'); $default_avatar = DI::config()->get('gravatar', 'default_avatar');
$rating = DI::config()->get('gravatar', 'rating'); $rating = DI::config()->get('gravatar', 'rating');
// set default values for first configuration // set default values for first configuration
if(! $default_avatar) if (!$default_avatar) {
$default_avatar = 'identicon'; // pseudo-random geometric pattern based on email hash $default_avatar = 'identicon'; // pseudo-random geometric pattern based on email hash
if(! $rating) }
if (!$rating) {
$rating = 'g'; // suitable for display on all websites with any audience type $rating = 'g'; // suitable for display on all websites with any audience type
}
// Available options for the select boxes // Available options for the select boxes
$default_avatars = [ $default_avatars = [
@ -105,7 +109,8 @@ function gravatar_addon_admin (&$a, &$o) {
/** /**
* Save admin settings * Save admin settings
*/ */
function gravatar_addon_admin_post (&$a) { function gravatar_addon_admin_post (App $a)
{
BaseModule::checkFormSecurityToken('gravatarsave'); BaseModule::checkFormSecurityToken('gravatarsave');
$default_avatar = trim($_POST['avatar'] ?? 'identicon'); $default_avatar = trim($_POST['avatar'] ?? 'identicon');

View File

@ -29,7 +29,7 @@ function group_text_install() {
* *
*/ */
function group_text_settings_post($a,$post) { function group_text_settings_post(App $a, $post) {
if(! local_user() || empty($_POST['group_text-submit'])) if(! local_user() || empty($_POST['group_text-submit']))
return; return;
DI::pConfig()->set(local_user(),'system','groupedit_image_limit',intval($_POST['group_text'])); DI::pConfig()->set(local_user(),'system','groupedit_image_limit',intval($_POST['group_text']));

View File

@ -16,7 +16,7 @@ function highlightjs_install()
Hook::register('footer', __FILE__, 'highlightjs_footer'); Hook::register('footer', __FILE__, 'highlightjs_footer');
} }
function highlightjs_head(App $a, &$b) function highlightjs_head(App $a, string &$str)
{ {
if ($a->getCurrentTheme() == 'frio') { if ($a->getCurrentTheme() == 'frio') {
$style = 'bootstrap'; $style = 'bootstrap';
@ -27,7 +27,7 @@ function highlightjs_head(App $a, &$b)
DI::page()->registerStylesheet(__DIR__ . '/asset/styles/' . $style . '.css'); DI::page()->registerStylesheet(__DIR__ . '/asset/styles/' . $style . '.css');
} }
function highlightjs_footer(App $a, &$b) function highlightjs_footer(App $a, string &$str)
{ {
DI::page()->registerFooterScript(__DIR__ . '/asset/highlight.pack.js'); DI::page()->registerFooterScript(__DIR__ . '/asset/highlight.pack.js');
DI::page()->registerFooterScript(__DIR__ . '/highlightjs.js'); DI::page()->registerFooterScript(__DIR__ . '/highlightjs.js');

View File

@ -24,15 +24,14 @@ function ifttt_install()
Hook::register('connector_settings_post', 'addon/ifttt/ifttt.php', 'ifttt_settings_post'); Hook::register('connector_settings_post', 'addon/ifttt/ifttt.php', 'ifttt_settings_post');
} }
function ifttt_module() /**
{ * This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function ifttt_module() {}
} function ifttt_content() {}
function ifttt_content()
{
}
function ifttt_settings(App $a, array &$data) function ifttt_settings(App $a, array &$data)
{ {

View File

@ -73,7 +73,7 @@ function ijpost_settings(App &$a, array &$data)
]; ];
} }
function ijpost_settings_post(&$a, &$b) function ijpost_settings_post(App $a, array &$b)
{ {
if (!empty($_POST['ijpost-submit'])) { if (!empty($_POST['ijpost-submit'])) {
DI::pConfig()->set(local_user(), 'ijpost', 'post', intval($_POST['ijpost'])); DI::pConfig()->set(local_user(), 'ijpost', 'post', intval($_POST['ijpost']));
@ -83,7 +83,7 @@ function ijpost_settings_post(&$a, &$b)
} }
} }
function ijpost_post_local(&$a, &$b) function ijpost_post_local(App $a, array &$b)
{ {
// This can probably be changed to allow editing by pointing to a different API endpoint // This can probably be changed to allow editing by pointing to a different API endpoint
@ -118,7 +118,7 @@ function ijpost_post_local(&$a, &$b)
$b['postopts'] .= 'ijpost'; $b['postopts'] .= 'ijpost';
} }
function ijpost_send(&$a, &$b) function ijpost_send(App $a, array &$b)
{ {
if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) { if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) {
return; return;

View File

@ -7,6 +7,7 @@
* License: 3-clause BSD license * License: 3-clause BSD license
*/ */
use Friendica\App;
use Friendica\Content\Text\BBCode; use Friendica\Content\Text\BBCode;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
@ -15,91 +16,110 @@ use Friendica\DI;
use Friendica\Core\Config\Util\ConfigFileLoader; use Friendica\Core\Config\Util\ConfigFileLoader;
use Friendica\Util\Proxy as ProxyUtils; use Friendica\Util\Proxy as ProxyUtils;
function impressum_install() { function impressum_install()
{
Hook::register('load_config', 'addon/impressum/impressum.php', 'impressum_load_config'); Hook::register('load_config', 'addon/impressum/impressum.php', 'impressum_load_config');
Hook::register('about_hook', 'addon/impressum/impressum.php', 'impressum_show'); Hook::register('about_hook', 'addon/impressum/impressum.php', 'impressum_show');
Hook::register('page_end', 'addon/impressum/impressum.php', 'impressum_footer'); Hook::register('page_end', 'addon/impressum/impressum.php', 'impressum_footer');
Logger::notice("installed impressum Addon"); Logger::notice("installed impressum Addon");
} }
function impressum_module() { /**
} * This is a statement rather than an actual function definition. The simple
function impressum_content() { * existence of this method is checked to figure out if the addon offers a
DI::baseUrl()->redirect('friendica/'); * module.
*/
function impressum_module() {}
function impressum_content()
{
DI::baseUrl()->redirect('friendica/');
} }
function obfuscate_email ($s) { function obfuscate_email (string $s): string
$s = str_replace('@','(at)',$s); {
$s = str_replace('.','(dot)',$s); $s = str_replace('@', '(at)', $s);
return $s; $s = str_replace('.', '(dot)', $s);
} return $s;
function impressum_footer($a, &$b) {
$text = ProxyUtils::proxifyHtml(BBCode::convert(DI::config()->get('impressum','footer_text')));
if (! $text == '') {
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="'.DI::baseUrl()->get().'/addon/impressum/impressum.css" media="all" />';
$b .= '<div class="clear"></div>';
$b .= '<div id="impressum_footer">'.$text.'</div>';
}
} }
function impressum_load_config(\Friendica\App $a, ConfigFileLoader $loader) function impressum_footer(App $a, string &$body)
{
$text = ProxyUtils::proxifyHtml(BBCode::convert(DI::config()->get('impressum','footer_text')));
if ($text != '') {
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . DI::baseUrl()->get() . '/addon/impressum/impressum.css" media="all" />';
$body .= '<div class="clear"></div>';
$body .= '<div id="impressum_footer">' . $text . '</div>';
}
}
function impressum_load_config(App $a, ConfigFileLoader $loader)
{ {
$a->getConfigCache()->load($loader->loadAddonConfig('impressum')); $a->getConfigCache()->load($loader->loadAddonConfig('impressum'));
} }
function impressum_show($a,&$b) { function impressum_show(App $a, string &$body)
$b .= '<h3>'.DI::l10n()->t('Impressum').'</h3>'; {
$owner = DI::config()->get('impressum', 'owner'); $body .= '<h3>' . DI::l10n()->t('Impressum') . '</h3>';
$owner_profile = DI::config()->get('impressum','ownerprofile'); $owner = DI::config()->get('impressum', 'owner');
$postal = ProxyUtils::proxifyHtml(BBCode::convert(DI::config()->get('impressum', 'postal'))); $owner_profile = DI::config()->get('impressum', 'ownerprofile');
$notes = ProxyUtils::proxifyHtml(BBCode::convert(DI::config()->get('impressum', 'notes'))); $postal = ProxyUtils::proxifyHtml(BBCode::convert(DI::config()->get('impressum', 'postal')));
$email = obfuscate_email( DI::config()->get('impressum','email') ); $notes = ProxyUtils::proxifyHtml(BBCode::convert(DI::config()->get('impressum', 'notes')));
if (strlen($owner)) { $email = obfuscate_email( DI::config()->get('impressum', 'email') );
if (strlen($owner_profile)) {
$tmp = '<a href="'.$owner_profile.'">'.$owner.'</a>'; if (strlen($owner)) {
} else { if (strlen($owner_profile)) {
$tmp = $owner; $tmp = '<a href="' . $owner_profile . '">' . $owner . '</a>';
} } else {
if (strlen($email)) { $tmp = $owner;
$b .= '<p><strong>'.DI::l10n()->t('Site Owner').'</strong>: '. $tmp .'<br /><strong>'.DI::l10n()->t('Email Address').'</strong>: '.$email.'</p>'; }
} else {
$b .= '<p><strong>'.DI::l10n()->t('Site Owner').'</strong>: '. $tmp .'</p>'; if (strlen($email)) {
} $body .= '<p><strong>' . DI::l10n()->t('Site Owner').'</strong>: ' . $tmp .'<br /><strong>' . DI::l10n()->t('Email Address') . '</strong>: ' . $email . '</p>';
if (strlen($postal)) { } else {
$b .= '<p><strong>'.DI::l10n()->t('Postal Address').'</strong><br />'. $postal .'</p>'; $body .= '<p><strong>' . DI::l10n()->t('Site Owner').'</strong>: ' . $tmp .'</p>';
} }
if (strlen($notes)) {
$b .= '<p>'.$notes.'</p>'; if (strlen($postal)) {
} $body .= '<p><strong>' . DI::l10n()->t('Postal Address') . '</strong><br />' . $postal . '</p>';
} else { }
$b .= '<p>'.DI::l10n()->t('The impressum addon needs to be configured!<br />Please add at least the <tt>owner</tt> variable to your config file. For other variables please refer to the README file of the addon.').'</p>';
} if (strlen($notes)) {
$body .= '<p>' . $notes . '</p>';
}
} else {
$body .= '<p>' . DI::l10n()->t('The impressum addon needs to be configured!<br />Please add at least the <tt>owner</tt> variable to your config file. For other variables please refer to the README file of the addon.') . '</p>';
}
} }
function impressum_addon_admin_post (&$a) { function impressum_addon_admin_post (App $a)
$owner = trim($_POST['owner'] ?? ''); {
$ownerprofile = trim($_POST['ownerprofile'] ?? ''); $owner = trim($_POST['owner'] ?? '');
$postal = trim($_POST['postal'] ?? ''); $ownerprofile = trim($_POST['ownerprofile'] ?? '');
$notes = trim($_POST['notes'] ?? ''); $postal = trim($_POST['postal'] ?? '');
$email = trim($_POST['email'] ?? ''); $notes = trim($_POST['notes'] ?? '');
$footer_text = trim($_POST['footer_text'] ?? ''); $email = trim($_POST['email'] ?? '');
DI::config()->set('impressum','owner',strip_tags($owner)); $footer_text = trim($_POST['footer_text'] ?? '');
DI::config()->set('impressum','ownerprofile',strip_tags($ownerprofile));
DI::config()->set('impressum','postal',strip_tags($postal)); DI::config()->set('impressum', 'owner', strip_tags($owner));
DI::config()->set('impressum','email',strip_tags($email)); DI::config()->set('impressum', 'ownerprofile', strip_tags($ownerprofile));
DI::config()->set('impressum','notes',strip_tags($notes)); DI::config()->set('impressum', 'postal', strip_tags($postal));
DI::config()->set('impressum','footer_text',strip_tags($footer_text)); DI::config()->set('impressum', 'email', strip_tags($email));
DI::config()->set('impressum', 'notes', strip_tags($notes));
DI::config()->set('impressum', 'footer_text', strip_tags($footer_text));
} }
function impressum_addon_admin (&$a, &$o) {
$t = Renderer::getMarkupTemplate( "admin.tpl", "addon/impressum/" ); function impressum_addon_admin (App $a, &$o)
$o = Renderer::replaceMacros($t, [ {
'$submit' => DI::l10n()->t('Save Settings'), $t = Renderer::getMarkupTemplate('admin.tpl', 'addon/impressum/' );
'$owner' => ['owner', DI::l10n()->t('Site Owner'), DI::config()->get('impressum','owner'), DI::l10n()->t('The page operators name.')], $o = Renderer::replaceMacros($t, [
'$ownerprofile' => ['ownerprofile', DI::l10n()->t('Site Owners Profile'), DI::config()->get('impressum','ownerprofile'), DI::l10n()->t('Profile address of the operator.')], '$submit' => DI::l10n()->t('Save Settings'),
'$postal' => ['postal', DI::l10n()->t('Postal Address'), DI::config()->get('impressum','postal'), DI::l10n()->t('How to contact the operator via snail mail. You can use BBCode here.')], '$owner' => ['owner', DI::l10n()->t('Site Owner'), DI::config()->get('impressum','owner'), DI::l10n()->t('The page operators name.')],
'$notes' => ['notes', DI::l10n()->t('Notes'), DI::config()->get('impressum','notes'), DI::l10n()->t('Additional notes that are displayed beneath the contact information. You can use BBCode here.')], '$ownerprofile' => ['ownerprofile', DI::l10n()->t('Site Owners Profile'), DI::config()->get('impressum','ownerprofile'), DI::l10n()->t('Profile address of the operator.')],
'$email' => ['email', DI::l10n()->t('Email Address'), DI::config()->get('impressum','email'), DI::l10n()->t('How to contact the operator via email. (will be displayed obfuscated)')], '$postal' => ['postal', DI::l10n()->t('Postal Address'), DI::config()->get('impressum','postal'), DI::l10n()->t('How to contact the operator via snail mail. You can use BBCode here.')],
'$footer_text' => ['footer_text', DI::l10n()->t('Footer note'), DI::config()->get('impressum','footer_text'), DI::l10n()->t('Text for the footer. You can use BBCode here.')], '$notes' => ['notes', DI::l10n()->t('Notes'), DI::config()->get('impressum','notes'), DI::l10n()->t('Additional notes that are displayed beneath the contact information. You can use BBCode here.')],
]); '$email' => ['email', DI::l10n()->t('Email Address'), DI::config()->get('impressum','email'), DI::l10n()->t('How to contact the operator via email. (will be displayed obfuscated)')],
'$footer_text' => ['footer_text', DI::l10n()->t('Footer note'), DI::config()->get('impressum','footer_text'), DI::l10n()->t('Text for the footer. You can use BBCode here.')],
]);
} }

View File

@ -5,6 +5,8 @@
* Version: 1.0 * Version: 1.0
* Author: Thomas Willingham <https://kakste.com/profile/beardyunixer> * Author: Thomas Willingham <https://kakste.com/profile/beardyunixer>
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
@ -13,19 +15,20 @@ function infiniteimprobabilitydrive_install()
Hook::register('app_menu', 'addon/infiniteimprobabilitydrive/infiniteimprobabilitydrive.php', 'infiniteimprobabilitydrive_app_menu'); Hook::register('app_menu', 'addon/infiniteimprobabilitydrive/infiniteimprobabilitydrive.php', 'infiniteimprobabilitydrive_app_menu');
} }
function infiniteimprobabilitydrive_app_menu($a, &$b) function infiniteimprobabilitydrive_app_menu(App $a, array &$b)
{ {
$b['app_menu'][] = '<div class="app-title"><a href="infiniteimprobabilitydrive">' . DI::l10n()->t('Infinite Improbability Drive') . '</a></div>'; $b['app_menu'][] = '<div class="app-title"><a href="infiniteimprobabilitydrive">' . DI::l10n()->t('Infinite Improbability Drive') . '</a></div>';
} }
/**
function infiniteimprobabilitydrive_module() * This is a statement rather than an actual function definition. The simple
{ * existence of this method is checked to figure out if the addon offers a
return; * module.
} */
function infiniteimprobabilitydrive_module() {}
function infiniteimprobabilitydrive_content(&$a) function infiniteimprobabilitydrive_content(App $a)
{ {
$baseurl = DI::baseUrl()->get() . '/addon/infiniteimprobabilitydrive'; $baseurl = DI::baseUrl()->get() . '/addon/infiniteimprobabilitydrive';
$o = ''; $o = '';

View File

@ -12,7 +12,8 @@ use Friendica\Core\Hook;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\DI; use Friendica\DI;
function irc_install() { function irc_install()
{
Hook::register('app_menu', 'addon/irc/irc.php', 'irc_app_menu'); Hook::register('app_menu', 'addon/irc/irc.php', 'irc_app_menu');
Hook::register('addon_settings', 'addon/irc/irc.php', 'irc_addon_settings'); Hook::register('addon_settings', 'addon/irc/irc.php', 'irc_addon_settings');
Hook::register('addon_settings_post', 'addon/irc/irc.php', 'irc_addon_settings_post'); Hook::register('addon_settings_post', 'addon/irc/irc.php', 'irc_addon_settings_post');
@ -41,11 +42,13 @@ function irc_addon_settings(App &$a, array &$data)
]; ];
} }
function irc_addon_settings_post(&$a, &$b) { function irc_addon_settings_post(App $a, array &$b)
if(!local_user()) {
if (!local_user()) {
return; return;
}
if(!empty($_POST['irc-submit'])) { if (!empty($_POST['irc-submit'])) {
if (isset($_POST['autochans'])) { if (isset($_POST['autochans'])) {
DI::pConfig()->set(local_user(), 'irc', 'autochans', trim(($_POST['autochans']))); DI::pConfig()->set(local_user(), 'irc', 'autochans', trim(($_POST['autochans'])));
} }
@ -56,37 +59,42 @@ function irc_addon_settings_post(&$a, &$b) {
} }
} }
function irc_app_menu($a,&$b) { function irc_app_menu(App $a, array &$b)
{
$b['app_menu'][] = '<div class="app-title"><a href="irc">' . DI::l10n()->t('IRC Chatroom') . '</a></div>'; $b['app_menu'][] = '<div class="app-title"><a href="irc">' . DI::l10n()->t('IRC Chatroom') . '</a></div>';
} }
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function irc_module() {}
function irc_module() { function irc_content(App $a)
return; {
}
function irc_content(&$a) {
$baseurl = DI::baseUrl()->get() . '/addon/irc'; $baseurl = DI::baseUrl()->get() . '/addon/irc';
$o = ''; $o = '';
/* set the list of popular channels */ /* set the list of popular channels */
if (local_user()) { if (local_user()) {
$sitechats = DI::pConfig()->get( local_user(), 'irc', 'sitechats'); $sitechats = DI::pConfig()->get( local_user(), 'irc', 'sitechats');
if (!$sitechats) if (!$sitechats) {
$sitechats = DI::config()->get('irc', 'sitechats'); $sitechats = DI::config()->get('irc', 'sitechats');
}
} else { } else {
$sitechats = DI::config()->get('irc','sitechats'); $sitechats = DI::config()->get('irc','sitechats');
} }
if($sitechats)
if ($sitechats) {
$chats = explode(',',$sitechats); $chats = explode(',',$sitechats);
else } else {
$chats = ['friendica','chat','chatback','hottub','ircbar','dateroom','debian']; $chats = ['friendica','chat','chatback','hottub','ircbar','dateroom','debian'];
}
DI::page()['aside'] .= '<div class="widget"><h3>' . DI::l10n()->t('Popular Channels') . '</h3><ul>'; DI::page()['aside'] .= '<div class="widget"><h3>' . DI::l10n()->t('Popular Channels') . '</h3><ul>';
foreach($chats as $chat) { foreach ($chats as $chat) {
DI::page()['aside'] .= '<li><a href="' . DI::baseUrl()->get() . '/irc?channels=' . $chat . '" >' . '#' . $chat . '</a></li>'; DI::page()['aside'] .= '<li><a href="' . DI::baseUrl()->get() . '/irc?channels=' . $chat . '" >' . '#' . $chat . '</a></li>';
} }
DI::page()['aside'] .= '</ul></div>'; DI::page()['aside'] .= '</ul></div>';
@ -99,10 +107,12 @@ function irc_content(&$a) {
} else { } else {
$autochans = DI::config()->get('irc','autochans'); $autochans = DI::config()->get('irc','autochans');
} }
if($autochans)
if ($autochans) {
$channels = $autochans; $channels = $autochans;
else } else {
$channels = ($_GET['channels'] ?? '') ?: 'friendica'; $channels = ($_GET['channels'] ?? '') ?: 'friendica';
}
/* add the chatroom frame and some html */ /* add the chatroom frame and some html */
$o .= <<< EOT $o .= <<< EOT
@ -111,23 +121,24 @@ function irc_content(&$a) {
<iframe src="//web.libera.chat?channels=$channels" style="width:100%; max-width:900px; height: 600px;"></iframe> <iframe src="//web.libera.chat?channels=$channels" style="width:100%; max-width:900px; height: 600px;"></iframe>
EOT; EOT;
return $o; return $o;
} }
function irc_addon_admin_post (&$a) { function irc_addon_admin_post (App $a)
if(!$a->isSiteAdmin()) {
if (!$a->isSiteAdmin()) {
return; return;
}
if($_POST['irc-submit']) { if ($_POST['irc-submit']) {
DI::config()->set('irc','autochans',trim($_POST['autochans'])); DI::config()->set('irc', 'autochans', trim($_POST['autochans']));
DI::config()->set('irc','sitechats',trim($_POST['sitechats'])); DI::config()->set('irc', 'sitechats', trim($_POST['sitechats']));
} }
} }
function irc_addon_admin (&$a, &$o) { function irc_addon_admin (App $a, &$o) {
$sitechats = DI::config()->get('irc','sitechats'); /* popular channels */ $sitechats = DI::config()->get('irc', 'sitechats'); /* popular channels */
$autochans = DI::config()->get('irc','autochans'); /* auto connect chans */ $autochans = DI::config()->get('irc', 'autochans'); /* auto connect chans */
$t = Renderer::getMarkupTemplate( "admin.tpl", "addon/irc/" ); $t = Renderer::getMarkupTemplate('admin.tpl', 'addon/irc/' );
$o = Renderer::replaceMacros($t, [ $o = Renderer::replaceMacros($t, [
'$submit' => DI::l10n()->t('Save Settings'), '$submit' => DI::l10n()->t('Save Settings'),
'$autochans' => [ 'autochans', DI::l10n()->t('Channel(s) to auto connect (comma separated)'), $autochans, DI::l10n()->t('List of channels that shall automatically connected to when the app is launched.')], '$autochans' => [ 'autochans', DI::l10n()->t('Channel(s) to auto connect (comma separated)'), $autochans, DI::l10n()->t('List of channels that shall automatically connected to when the app is launched.')],

View File

@ -4,155 +4,170 @@
* Handle file uploads via XMLHttpRequest * Handle file uploads via XMLHttpRequest
*/ */
class qqUploadedFileXhr { class qqUploadedFileXhr {
/** /**
* Save the file to the specified path * Save the file to the specified path
* @return boolean TRUE on success * @return boolean TRUE on success
*/ */
function save($path) { public function save(string $path): bool
$input = fopen("php://input", "r"); {
$temp = tmpfile(); $input = fopen('php://input', 'r');
$realSize = stream_copy_to_stream($input, $temp); $temp = tmpfile();
fclose($input); $realSize = stream_copy_to_stream($input, $temp);
fclose($input);
if ($realSize != $this->getSize()){
return false; if ($realSize != $this->getSize()) {
} return false;
}
$target = fopen($path, "w");
fseek($temp, 0, SEEK_SET); $target = fopen($path, 'w');
stream_copy_to_stream($temp, $target); fseek($temp, 0, SEEK_SET);
fclose($target); stream_copy_to_stream($temp, $target);
fclose($target);
return true;
} return true;
function getName() { }
return $_GET['qqfile'];
} public function getName(): string
function getSize() { {
if (isset($_SERVER["CONTENT_LENGTH"])){ return $_GET['qqfile'];
return (int)$_SERVER["CONTENT_LENGTH"]; }
} else {
throw new Exception('Getting content length is not supported.'); public function getSize(): int
} {
} if (isset($_SERVER['CONTENT_LENGTH'])) {
return (int)$_SERVER['CONTENT_LENGTH'];
} else {
throw new Exception('Getting content length is not supported.');
}
}
} }
/** /**
* Handle file uploads via regular form post (uses the $_FILES array) * Handle file uploads via regular form post (uses the $_FILES array)
*/ */
class qqUploadedFileForm { class qqUploadedFileForm {
/** /**
* Save the file to the specified path * Save the file to the specified path
* @return boolean TRUE on success * @return boolean TRUE on success
*/ */
function save($path) { public function save(string $path): bool
if(!move_uploaded_file($_FILES['qqfile']['tmp_name'], $path)){ {
return false; if(!move_uploaded_file($_FILES['qqfile']['tmp_name'], $path)) {
} return false;
return true; }
} return true;
function getName() { }
return $_FILES['qqfile']['name'];
} public function getName(): string
function getSize() { {
return $_FILES['qqfile']['size']; return $_FILES['qqfile']['name'];
} }
public function getSize(): int
{
return $_FILES['qqfile']['size'];
}
} }
class qqFileUploader { class qqFileUploader {
private $allowedExtensions = array(); private $allowedExtensions = [];
private $sizeLimit = 10485760; private $sizeLimit = 10485760;
private $file; private $file;
function __construct(array $allowedExtensions = array(), $sizeLimit = 10485760){ public function __construct(array $allowedExtensions = [], $sizeLimit = 10485760)
$allowedExtensions = array_map("strtolower", $allowedExtensions); {
$allowedExtensions = array_map('strtolower', $allowedExtensions);
$this->allowedExtensions = $allowedExtensions;
$this->sizeLimit = $sizeLimit; $this->allowedExtensions = $allowedExtensions;
$this->sizeLimit = $sizeLimit;
$this->checkServerSettings();
$this->checkServerSettings();
if (isset($_GET['qqfile'])) { if (isset($_GET['qqfile'])) {
$this->file = new qqUploadedFileXhr(); $this->file = new qqUploadedFileXhr();
} elseif (isset($_FILES['qqfile'])) { } elseif (isset($_FILES['qqfile'])) {
$this->file = new qqUploadedFileForm(); $this->file = new qqUploadedFileForm();
} else { } else {
$this->file = false; $this->file = false;
} }
} }
private function checkServerSettings(){
$postSize = $this->toBytes(ini_get('post_max_size'));
$uploadSize = $this->toBytes(ini_get('upload_max_filesize'));
if ($postSize < $this->sizeLimit || $uploadSize < $this->sizeLimit){
$size = max(1, $this->sizeLimit / 1024 / 1024) . 'M';
die("{'error':'increase post_max_size and upload_max_filesize to $size'}");
}
}
private function toBytes($str){
$val = trim($str);
$last = strtolower($str[strlen($str)-1]);
switch($last) {
case 'g': $val *= 1024;
case 'm': $val *= 1024;
case 'k': $val *= 1024;
}
return $val;
}
/**
* Returns array('success'=>true) or array('error'=>'error message')
*/
function handleUpload($uploadDirectory, $replaceOldFile = FALSE){
if (!is_writable($uploadDirectory)){
return array('error' => "Server error. Upload directory isn't writable.");
}
if (!$this->file){
return array('error' => 'No files were uploaded.');
}
$size = $this->file->getSize();
if ($size == 0) {
return array('error' => 'File is empty');
}
if ($size > $this->sizeLimit) {
return array('error' => 'File is too large');
}
$pathinfo = pathinfo($this->file->getName());
$filename = $pathinfo['filename'];
//$filename = md5(uniqid());
$ext = $pathinfo['extension'];
if($this->allowedExtensions && !in_array(strtolower($ext), $this->allowedExtensions)){ private function checkServerSettings()
$these = implode(', ', $this->allowedExtensions); {
return array('error' => 'File has an invalid extension, it should be one of '. $these . '.'); $postSize = $this->toBytes(ini_get('post_max_size'));
} $uploadSize = $this->toBytes(ini_get('upload_max_filesize'));
if(!$replaceOldFile){ if ($postSize < $this->sizeLimit || $uploadSize < $this->sizeLimit) {
/// don't overwrite previous files that were uploaded $size = max(1, $this->sizeLimit / 1024 / 1024) . 'M';
while (file_exists($uploadDirectory . $filename . '.' . $ext)) { die("{'error':'increase post_max_size and upload_max_filesize to $size'}");
$filename .= rand(10, 99); }
} }
}
private function toBytes(string $str): int
if ($this->file->save($uploadDirectory . $filename . '.' . $ext)){ {
return array('success'=>true); $val = trim($str);
} else { $last = strtolower($str[strlen($str) - 1]);
return array('error'=> 'Could not save uploaded file.' .
'The upload was cancelled, or server error encountered'); switch($last) {
} case 'g': $val *= 1024;
case 'm': $val *= 1024;
} case 'k': $val *= 1024;
}
return $val;
}
/**
* Returns array('success'=>true) or array('error'=>'error message')
*/
public function handleUpload(string $uploadDirectory, bool $replaceOldFile = false): array
{
if (!is_writable($uploadDirectory)) {
return ['error' => "Server error. Upload directory isn't writable."];
}
if (!$this->file) {
return ['error' => 'No files were uploaded.'];
}
$size = $this->file->getSize();
if ($size == 0) {
return ['error' => 'File is empty'];
}
if ($size > $this->sizeLimit) {
return ['error' => 'File is too large'];
}
$pathinfo = pathinfo($this->file->getName());
$filename = $pathinfo['filename'];
//$filename = md5(uniqid());
$ext = $pathinfo['extension'];
if($this->allowedExtensions && !in_array(strtolower($ext), $this->allowedExtensions)) {
$these = implode(', ', $this->allowedExtensions);
return ['error' => 'File has an invalid extension, it should be one of '. $these . '.'];
}
if(!$replaceOldFile) {
/// don't overwrite previous files that were uploaded
while (file_exists($uploadDirectory . $filename . '.' . $ext)) {
$filename .= rand(10, 99);
}
}
if ($this->file->save($uploadDirectory . $filename . '.' . $ext)) {
return ['success' => true];
} else {
return ['error'=> 'Could not save uploaded file. The upload was cancelled, or server error encountered'];
}
}
} }
// list of valid extensions, ex. array("jpeg", "xml", "bmp") // list of valid extensions, ex. array("jpeg", "xml", "bmp")
$allowedExtensions = array(); $allowedExtensions = [];
// max file size in bytes // max file size in bytes
$sizeLimit = 10 * 1024 * 1024; $sizeLimit = 10 * 1024 * 1024;

View File

@ -43,7 +43,7 @@ function js_upload_form(App $a, array &$b)
]); ]);
} }
function js_upload_post_init(App $a, &$b) function js_upload_post_init(App $a, array &$b)
{ {
global $js_upload_result, $js_upload_jsonresponse; global $js_upload_result, $js_upload_jsonresponse;
@ -69,7 +69,7 @@ function js_upload_post_init(App $a, &$b)
$js_upload_result = $result; $js_upload_result = $result;
} }
function js_upload_post_file(App $a, &$b) function js_upload_post_file(App $a, array &$b)
{ {
global $js_upload_result; global $js_upload_result;
@ -81,7 +81,7 @@ function js_upload_post_file(App $a, &$b)
} }
function js_upload_post_end(App $a, &$b) function js_upload_post_end(App $a, array &$b)
{ {
global $js_upload_jsonresponse; global $js_upload_jsonresponse;

View File

@ -45,7 +45,7 @@ function keycloakpassword_request($client_id, $secret, $url, $params = [])
return $res; return $res;
} }
function keycloakpassword_authenticate($a, &$b) function keycloakpassword_authenticate(App $a, array &$b)
{ {
if (empty($b['password'])) { if (empty($b['password'])) {
return; return;
@ -110,7 +110,7 @@ function keycloakpassword_admin_input($key, $label, $description)
]; ];
} }
function keycloakpassword_addon_admin(&$a, &$o) function keycloakpassword_addon_admin(App $a, &$o)
{ {
$form = $form =
keycloakpassword_admin_input( keycloakpassword_admin_input(
@ -140,7 +140,7 @@ function keycloakpassword_addon_admin(&$a, &$o)
$o = Renderer::replaceMacros($t, $form); $o = Renderer::replaceMacros($t, $form);
} }
function keycloakpassword_addon_admin_post(&$a) function keycloakpassword_addon_admin_post(App $a)
{ {
if (!local_user()) { if (!local_user()) {
return; return;

View File

@ -16,57 +16,54 @@ use Friendica\Core\Logger;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\DI; use Friendica\DI;
function krynn_install() { function krynn_install()
{
/** /**
*
* Our demo addon will attach in three places. * Our demo addon will attach in three places.
* The first is just prior to storing a local post. * The first is just prior to storing a local post.
*
*/ */
Hook::register('post_local', 'addon/krynn/krynn.php', 'krynn_post_hook'); Hook::register('post_local', 'addon/krynn/krynn.php', 'krynn_post_hook');
/** /**
*
* Then we'll attach into the addon settings page, and also the * Then we'll attach into the addon settings page, and also the
* settings post hook so that we can create and update * settings post hook so that we can create and update
* user preferences. * user preferences.
*
*/ */
Hook::register('addon_settings', 'addon/krynn/krynn.php', 'krynn_settings'); Hook::register('addon_settings', 'addon/krynn/krynn.php', 'krynn_settings');
Hook::register('addon_settings_post', 'addon/krynn/krynn.php', 'krynn_settings_post'); Hook::register('addon_settings_post', 'addon/krynn/krynn.php', 'krynn_settings_post');
Logger::notice("installed krynn"); Logger::notice("installed krynn");
} }
function krynn_post_hook($a, &$item) { function krynn_post_hook(App $a, &$item)
{
/** /**
*
* An item was posted on the local system. * An item was posted on the local system.
* We are going to look for specific items: * We are going to look for specific items:
* - A status post by a profile owner * - A status post by a profile owner
* - The profile owner must have allowed our addon * - The profile owner must have allowed our addon
*
*/ */
if (!local_user()) {
if(! local_user()) /* non-zero if this is a logged in user of this system */ /* non-zero if this is a logged in user of this system */
return; return;
}
if(local_user() != $item['uid']) /* Does this person own the post? */ if (local_user() != $item['uid']) {
/* Does this person own the post? */
return; return;
}
if($item['parent']) /* If the item has a parent, this is a comment or something else, not a status post. */ if ($item['parent']) {
/* If the item has a parent, this is a comment or something else, not a status post. */
return; return;
}
/* Retrieve our personal config setting */ /* Retrieve our personal config setting */
$active = DI::pConfig()->get(local_user(), 'krynn', 'enable'); $active = DI::pConfig()->get(local_user(), 'krynn', 'enable');
if(! $active) if (!$active) {
return; return;
}
/** /**
* *
@ -85,38 +82,30 @@ function krynn_post_hook($a, &$item) {
return; return;
} }
/** /**
*
* Callback from the settings post function. * Callback from the settings post function.
* $post contains the $_POST array. * $post contains the $_POST array.
* We will make sure we've got a valid user account * We will make sure we've got a valid user account
* and if so set our configuration setting for this person. * and if so set our configuration setting for this person.
*
*/ */
function krynn_settings_post(App $a, $post)
function krynn_settings_post($a,$post) { {
if(! local_user()) if (!local_user()) {
return; return;
if($_POST['krynn-submit']) }
if ($_POST['krynn-submit']) {
DI::pConfig()->set(local_user(),'krynn','enable',intval($_POST['krynn'])); DI::pConfig()->set(local_user(),'krynn','enable',intval($_POST['krynn']));
}
} }
/** /**
*
* Called from the addon Setting form. * Called from the addon Setting form.
* Add our own settings info to the page. * Add our own settings info to the page.
*
*/ */
function krynn_settings(App &$a, array &$data) function krynn_settings(App &$a, array &$data)
{ {
if(! local_user()) { if (!local_user()) {
return; return;
} }

View File

@ -67,7 +67,7 @@ function langfilter_addon_settings(App $a, array &$data)
* 3rd save the settings to the DB for later usage * 3rd save the settings to the DB for later usage
*/ */
function langfilter_addon_settings_post(App $a, &$b) function langfilter_addon_settings_post(App $a, array &$b)
{ {
if (!local_user()) { if (!local_user()) {
return; return;

View File

@ -54,6 +54,7 @@
* ...etc. * ...etc.
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Database\DBA; use Friendica\Database\DBA;
@ -67,12 +68,12 @@ function ldapauth_install()
Hook::register('authenticate', 'addon/ldapauth/ldapauth.php', 'ldapauth_hook_authenticate'); Hook::register('authenticate', 'addon/ldapauth/ldapauth.php', 'ldapauth_hook_authenticate');
} }
function ldapauth_load_config(\Friendica\App $a, ConfigFileLoader $loader) function ldapauth_load_config(App $a, ConfigFileLoader $loader)
{ {
$a->getConfigCache()->load($loader->loadAddonConfig('ldapauth')); $a->getConfigCache()->load($loader->loadAddonConfig('ldapauth'));
} }
function ldapauth_hook_authenticate($a, &$b) function ldapauth_hook_authenticate(App $a, array &$b)
{ {
$user = ldapauth_authenticate($b['username'], $b['password']); $user = ldapauth_authenticate($b['username'], $b['password']);
if (!empty($user['uid'])) { if (!empty($user['uid'])) {

View File

@ -6,61 +6,66 @@
* Author: Michael Vogel <https://pirati.ca/profile/heluecht> * Author: Michael Vogel <https://pirati.ca/profile/heluecht>
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\DI; use Friendica\DI;
function leistungsschutzrecht_install() { function leistungsschutzrecht_install()
{
Hook::register('cron', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_cron'); Hook::register('cron', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_cron');
Hook::register('getsiteinfo', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo'); Hook::register('getsiteinfo', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo');
Hook::register('page_info_data', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo'); Hook::register('page_info_data', 'addon/leistungsschutzrecht/leistungsschutzrecht.php', 'leistungsschutzrecht_getsiteinfo');
} }
function leistungsschutzrecht_getsiteinfo($a, &$siteinfo) { function leistungsschutzrecht_getsiteinfo(App $a, array &$siteinfo) {
if (!isset($siteinfo["url"]) || empty($siteinfo['type'])) { if (!isset($siteinfo['url']) || empty($siteinfo['type'])) {
return; return;
} }
// Avoid any third party pictures, to avoid copyright issues // Avoid any third party pictures, to avoid copyright issues
if (!in_array($siteinfo['type'], ['photo', 'video']) && DI::config()->get('leistungsschutzrecht', 'suppress_photos', false)) { if (!in_array($siteinfo['type'], ['photo', 'video']) && DI::config()->get('leistungsschutzrecht', 'suppress_photos', false)) {
unset($siteinfo["image"]); unset($siteinfo['image']);
unset($siteinfo["images"]); unset($siteinfo['images']);
} }
if (!leistungsschutzrecht_is_member_site($siteinfo["url"])) { if (!leistungsschutzrecht_is_member_site($siteinfo['url'])) {
return; return;
} }
if (!empty($siteinfo["text"])) { if (!empty($siteinfo['text'])) {
$siteinfo["text"] = leistungsschutzrecht_cuttext($siteinfo["text"]); $siteinfo['text'] = leistungsschutzrecht_cuttext($siteinfo['text']);
} }
unset($siteinfo["keywords"]); unset($siteinfo['keywords']);
} }
function leistungsschutzrecht_cuttext($text) { function leistungsschutzrecht_cuttext(string $text): string
$text = str_replace(["\r", "\n"], [" ", " "], $text); {
$text = str_replace(["\r", "\n"], [' ', ' '], $text);
do { do {
$oldtext = $text; $oldtext = $text;
$text = str_replace(" ", " ", $text); $text = str_replace(' ', ' ', $text);
} while ($oldtext != $text); } while ($oldtext != $text);
$words = explode(" ", $text); $words = explode(' ', $text);
$text = ""; $text = '';
$count = 0; $count = 0;
$limit = 7; $limit = 7;
foreach ($words as $word) { foreach ($words as $word) {
if ($text != "") if ($text != '') {
$text .= " "; $text .= ' ';
}
$text .= $word; $text .= $word;
if (++$count >= $limit) { if (++$count >= $limit) {
if (sizeof($words) > $limit) if (sizeof($words) > $limit) {
$text .= " ..."; $text .= ' ...';
}
break; break;
} }
@ -71,7 +76,7 @@ function leistungsschutzrecht_cuttext($text) {
function leistungsschutzrecht_fetchsites() function leistungsschutzrecht_fetchsites()
{ {
// This list works - but question is how current it is // This list works - but question is how current it is
$url = "http://leistungsschutzrecht-stoppen.d-64.org/blacklist.txt"; $url = 'https://leistungsschutzrecht-stoppen.d-64.org/blacklist.txt';
$sitelist = DI::httpClient()->fetch($url); $sitelist = DI::httpClient()->fetch($url);
$siteurls = explode(',', $sitelist); $siteurls = explode(',', $sitelist);
@ -119,27 +124,31 @@ function leistungsschutzrecht_fetchsites()
*/ */
if (sizeof($sites)) { if (sizeof($sites)) {
DI::config()->set('leistungsschutzrecht','sites',$sites); DI::config()->set('leistungsschutzrecht', 'sites',$sites);
} }
} }
function leistungsschutzrecht_is_member_site($url) { function leistungsschutzrecht_is_member_site(string $url): bool
$sites = DI::config()->get('leistungsschutzrecht','sites'); {
$sites = DI::config()->get('leistungsschutzrecht', 'sites');
if ($sites == "") if ($sites == '') {
return(false); return false;
}
if (sizeof($sites) == 0) if (sizeof($sites) == 0) {
return(false); return false;
}
$urldata = parse_url($url); $urldata = parse_url($url);
if (!isset($urldata["host"])) if (!isset($urldata['host'])) {
return(false); return false;
}
$cleanedurlpart = explode("%", $urldata["host"]); $cleanedurlpart = explode('%', $urldata['host']);
$hostname = explode(".", $cleanedurlpart[0]); $hostname = explode('.', $cleanedurlpart[0]);
if (empty($hostname)) { if (empty($hostname)) {
return false; return false;
} }
@ -148,22 +157,22 @@ function leistungsschutzrecht_is_member_site($url) {
return false; return false;
} }
$site = $hostname[sizeof($hostname) - 2].".".$hostname[sizeof($hostname) - 1]; $site = $hostname[sizeof($hostname) - 2] . '.' . $hostname[sizeof($hostname) - 1];
return (isset($sites[$site])); return isset($sites[$site]);
} }
function leistungsschutzrecht_cron($a,$b) { function leistungsschutzrecht_cron(App $a, $b)
$last = DI::config()->get('leistungsschutzrecht','last_poll'); {
$last = DI::config()->get('leistungsschutzrecht', 'last_poll');
if($last) { if ($last) {
$next = $last + 86400; $next = $last + 86400;
if($next > time()) { if ($next > time()) {
Logger::notice('poll intervall not reached'); Logger::notice('poll intervall not reached');
return; return;
} }
} }
leistungsschutzrecht_fetchsites(); leistungsschutzrecht_fetchsites();
DI::config()->set('leistungsschutzrecht','last_poll', time()); DI::config()->set('leistungsschutzrecht', 'last_poll', time());
} }
?>

View File

@ -27,9 +27,9 @@ function libertree_install()
function libertree_jot_nets(App &$a, array &$jotnets_fields) function libertree_jot_nets(App &$a, array &$jotnets_fields)
{ {
if(! local_user()) { if (!local_user()) {
return; return;
} }
if (DI::pConfig()->get(local_user(), 'libertree', 'post')) { if (DI::pConfig()->get(local_user(), 'libertree', 'post')) {
$jotnets_fields[] = [ $jotnets_fields[] = [
@ -37,13 +37,12 @@ function libertree_jot_nets(App &$a, array &$jotnets_fields)
'field' => [ 'field' => [
'libertree_enable', 'libertree_enable',
DI::l10n()->t('Post to libertree'), DI::l10n()->t('Post to libertree'),
DI::pConfig()->get(local_user(), 'libertree', 'post_by_default') DI::pConfig()->get(local_user(), 'libertree', 'post_by_default'),
] ],
]; ];
} }
} }
function libertree_settings(App $a, array &$data) function libertree_settings(App $a, array &$data)
{ {
if (!local_user()) { if (!local_user()) {
@ -72,11 +71,9 @@ function libertree_settings(App $a, array &$data)
]; ];
} }
function libertree_settings_post(App $a, array &$b)
function libertree_settings_post(&$a,&$b) { {
if (!empty($_POST['libertree-submit'])) {
if(!empty($_POST['libertree-submit'])) {
DI::pConfig()->set(local_user(),'libertree','post',intval($_POST['libertree'])); DI::pConfig()->set(local_user(),'libertree','post',intval($_POST['libertree']));
DI::pConfig()->set(local_user(),'libertree','post_by_default',intval($_POST['libertree_bydefault'])); DI::pConfig()->set(local_user(),'libertree','post_by_default',intval($_POST['libertree_bydefault']));
DI::pConfig()->set(local_user(),'libertree','libertree_api_token',trim($_POST['libertree_api_token'])); DI::pConfig()->set(local_user(),'libertree','libertree_api_token',trim($_POST['libertree_api_token']));
@ -101,7 +98,8 @@ function libertree_hook_fork(App &$a, array &$b)
} }
} }
function libertree_post_local(&$a,&$b) { function libertree_post_local(App $a, array &$b)
{
// This can probably be changed to allow editing by pointing to a different API endpoint // This can probably be changed to allow editing by pointing to a different API endpoint
@ -109,7 +107,7 @@ function libertree_post_local(&$a,&$b) {
return; return;
} }
if ((! local_user()) || (local_user() != $b['uid'])) { if ((!local_user()) || (local_user() != $b['uid'])) {
return; return;
} }
@ -136,11 +134,8 @@ function libertree_post_local(&$a,&$b) {
$b['postopts'] .= 'libertree'; $b['postopts'] .= 'libertree';
} }
function libertree_send(App $a, array &$b)
{
function libertree_send(&$a,&$b) {
Logger::notice('libertree_send: invoked'); Logger::notice('libertree_send: invoked');
if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) { if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) {
@ -188,15 +183,16 @@ function libertree_send(&$a,&$b) {
// remove multiple newlines // remove multiple newlines
do { do {
$oldbody = $body; $oldbody = $body;
$body = str_replace("\n\n\n", "\n\n", $body); $body = str_replace("\n\n\n", "\n\n", $body);
} while ($oldbody != $body); } while ($oldbody != $body);
// convert to markdown // convert to markdown
$body = BBCode::toMarkdown($body, false); $body = BBCode::toMarkdown($body, false);
// Adding the title // Adding the title
if(strlen($title)) if (strlen($title)) {
$body = "## ".html_entity_decode($title)."\n\n".$body; $body = '## ' . html_entity_decode($title) . "\n\n" . $body;
}
$params = [ $params = [

View File

@ -667,5 +667,3 @@ class Services_Libravatar
* c-hanging-comment-ender-p: nil * c-hanging-comment-ender-p: nil
* End: * End:
*/ */
?>

View File

@ -35,7 +35,7 @@ function libravatar_load_config(App $a, ConfigFileLoader $loader)
* @param $a array * @param $a array
* @param &$b array * @param &$b array
*/ */
function libravatar_lookup($a, &$b) function libravatar_lookup(array $a, array &$b)
{ {
$default_avatar = DI::config()->get('libravatar', 'default_avatar'); $default_avatar = DI::config()->get('libravatar', 'default_avatar');
if (empty($default_avatar)) { if (empty($default_avatar)) {
@ -44,6 +44,7 @@ function libravatar_lookup($a, &$b)
} }
require_once 'Services/Libravatar.php'; require_once 'Services/Libravatar.php';
$libravatar = new Services_Libravatar(); $libravatar = new Services_Libravatar();
$libravatar->setSize($b['size']); $libravatar->setSize($b['size']);
$libravatar->setDefault($default_avatar); $libravatar->setDefault($default_avatar);
@ -56,7 +57,7 @@ function libravatar_lookup($a, &$b)
/** /**
* Display admin settings for this addon * Display admin settings for this addon
*/ */
function libravatar_addon_admin(&$a, &$o) function libravatar_addon_admin(App $a, &$o)
{ {
$t = Renderer::getMarkupTemplate("admin.tpl", "addon/libravatar"); $t = Renderer::getMarkupTemplate("admin.tpl", "addon/libravatar");
@ -87,7 +88,7 @@ function libravatar_addon_admin(&$a, &$o)
/** /**
* Save admin settings * Save admin settings
*/ */
function libravatar_addon_admin_post(&$a) function libravatar_addon_admin_post(App $a)
{ {
$default_avatar = trim($_POST['avatar'] ?? 'identicon'); $default_avatar = trim($_POST['avatar'] ?? 'identicon');
DI::config()->set('libravatar', 'default_avatar', $default_avatar); DI::config()->set('libravatar', 'default_avatar', $default_avatar);

View File

@ -20,45 +20,44 @@ use Friendica\Model\User;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
use Friendica\Util\XML; use Friendica\Util\XML;
function ljpost_install() { function ljpost_install()
Hook::register('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); {
Hook::register('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); Hook::register('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local');
Hook::register('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); Hook::register('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send');
Hook::register('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); Hook::register('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets');
Hook::register('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); Hook::register('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings');
Hook::register('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post');
} }
function ljpost_jot_nets(App &$a, array &$jotnets_fields) function ljpost_jot_nets(App &$a, array &$jotnets_fields)
{ {
if(! local_user()) { if (!local_user()) {
return; return;
} }
if (DI::pConfig()->get(local_user(),'ljpost','post')) { if (DI::pConfig()->get(local_user(),'ljpost','post')) {
$jotnets_fields[] = [ $jotnets_fields[] = [
'type' => 'checkbox', 'type' => 'checkbox',
'field' => [ 'field' => [
'ljpost_enable', 'ljpost_enable',
DI::l10n()->t('Post to LiveJournal'), DI::l10n()->t('Post to LiveJournal'),
DI::pConfig()->get(local_user(),'ljpost','post_by_default') DI::pConfig()->get(local_user(), 'ljpost', 'post_by_default'),
] ],
]; ];
} }
} }
function ljpost_settings(App &$a, array &$data) function ljpost_settings(App &$a, array &$data)
{ {
if (!local_user()) { if (!local_user()) {
return; return;
} }
$enabled = DI::pConfig()->get(local_user(), 'ljpost', 'post', false); $enabled = DI::pConfig()->get(local_user(), 'ljpost', 'post', false);
$ij_username = DI::pConfig()->get(local_user(), 'ljpost', 'ij_username'); $ij_username = DI::pConfig()->get(local_user(), 'ljpost', 'ij_username');
$def_enabled = DI::pConfig()->get(local_user(), 'ljpost', 'post_by_default'); $def_enabled = DI::pConfig()->get(local_user(), 'ljpost', 'post_by_default');
$t = Renderer::getMarkupTemplate('connector_settings.tpl', 'addon/ljpost/'); $t= Renderer::getMarkupTemplate('connector_settings.tpl', 'addon/ljpost/');
$html = Renderer::replaceMacros($t, [ $html = Renderer::replaceMacros($t, [
'$enabled' => ['ljpost', DI::l10n()->t('Enable LiveJournal Post Addon'), $enabled], '$enabled' => ['ljpost', DI::l10n()->t('Enable LiveJournal Post Addon'), $enabled],
'$username' => ['ij_username', DI::l10n()->t('LiveJournal username'), $ij_username], '$username' => ['ij_username', DI::l10n()->t('LiveJournal username'), $ij_username],
@ -68,68 +67,68 @@ function ljpost_settings(App &$a, array &$data)
$data = [ $data = [
'connector' => 'ljpost', 'connector' => 'ljpost',
'title' => DI::l10n()->t('LiveJournal Export'), 'title' => DI::l10n()->t('LiveJournal Export'),
'image' => 'addon/ljpost/livejournal.png', 'image' => 'addon/ljpost/livejournal.png',
'enabled' => $enabled, 'enabled' => $enabled,
'html' => $html, 'html' => $html,
]; ];
} }
function ljpost_settings_post(App $a, array &$b)
{
if (!empty($_POST['ljpost-submit'])) {
DI::pConfig()->set(local_user(), 'ljpost', 'post', intval($_POST['ljpost']));
DI::pConfig()->set(local_user(), 'ljpost', 'post_by_default', intval($_POST['lj_bydefault']));
DI::pConfig()->set(local_user(), 'ljpost', 'lj_username', trim($_POST['lj_username']));
DI::pConfig()->set(local_user(), 'ljpost', 'lj_password', trim($_POST['lj_password']));
}
}
function ljpost_settings_post(&$a,&$b) { function ljpost_post_local(App $a, array &$b)
{
if(!empty($_POST['ljpost-submit'])) { // This can probably be changed to allow editing by pointing to a different API endpoint
if ($b['edit']) {
DI::pConfig()->set(local_user(),'ljpost','post',intval($_POST['ljpost'])); return;
DI::pConfig()->set(local_user(),'ljpost','post_by_default',intval($_POST['lj_bydefault']));
DI::pConfig()->set(local_user(),'ljpost','lj_username',trim($_POST['lj_username']));
DI::pConfig()->set(local_user(),'ljpost','lj_password',trim($_POST['lj_password']));
} }
} if ((!local_user()) || (local_user() != $b['uid'])) {
function ljpost_post_local(&$a,&$b) {
// This can probably be changed to allow editing by pointing to a different API endpoint
if($b['edit'])
return; return;
}
if((! local_user()) || (local_user() != $b['uid'])) if ($b['private'] || $b['parent']) {
return; return;
}
if($b['private'] || $b['parent']) $lj_post = intval(DI::pConfig()->get(local_user(),'ljpost','post'));
return;
$lj_post = intval(DI::pConfig()->get(local_user(),'ljpost','post'));
$lj_enable = (($lj_post && !empty($_REQUEST['ljpost_enable'])) ? intval($_REQUEST['ljpost_enable']) : 0); $lj_enable = (($lj_post && !empty($_REQUEST['ljpost_enable'])) ? intval($_REQUEST['ljpost_enable']) : 0);
if($b['api_source'] && intval(DI::pConfig()->get(local_user(),'ljpost','post_by_default'))) if ($b['api_source'] && intval(DI::pConfig()->get(local_user(), 'ljpost', 'post_by_default'))) {
$lj_enable = 1; $lj_enable = 1;
}
if(! $lj_enable) if (!$lj_enable) {
return; return;
}
if(strlen($b['postopts'])) if (strlen($b['postopts'])) {
$b['postopts'] .= ','; $b['postopts'] .= ',';
$b['postopts'] .= 'ljpost'; }
$b['postopts'] .= 'ljpost';
} }
function ljpost_send(App $a, array &$b)
{
if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) {
return;
}
if (!strstr($b['postopts'],'ljpost')) {
return;
}
if ($b['parent'] != $b['id']) {
function ljpost_send(&$a,&$b) { return;
}
if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
return;
if(! strstr($b['postopts'],'ljpost'))
return;
if($b['parent'] != $b['id'])
return;
$b['body'] = Post\Media::addAttachmentsToBody($b['uri-id'], $b['body']); $b['body'] = Post\Media::addAttachmentsToBody($b['uri-id'], $b['body']);
@ -147,10 +146,11 @@ function ljpost_send(&$a,&$b) {
// $lj_journal = $lj_username; // $lj_journal = $lj_username;
$lj_blog = XML::escape(DI::pConfig()->get($b['uid'],'ljpost','lj_blog')); $lj_blog = XML::escape(DI::pConfig()->get($b['uid'],'ljpost','lj_blog'));
if(! strlen($lj_blog)) if (!strlen($lj_blog)) {
$lj_blog = XML::escape('http://www.livejournal.com/interface/xmlrpc'); $lj_blog = XML::escape('http://www.livejournal.com/interface/xmlrpc');
}
if($lj_username && $lj_password && $lj_blog) { if ($lj_username && $lj_password && $lj_blog) {
$title = XML::escape($b['title']); $title = XML::escape($b['title']);
$post = BBCode::convertForUriId($b['uri-id'], $b['body'], BBCode::CONNECTORS); $post = BBCode::convertForUriId($b['uri-id'], $b['body'], BBCode::CONNECTORS);
$post = XML::escape($post); $post = XML::escape($post);
@ -166,41 +166,42 @@ function ljpost_send(&$a,&$b) {
$xml = <<< EOT $xml = <<< EOT
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<methodCall> <methodCall>
<methodName>LJ.XMLRPC.postevent</methodName> <methodName>LJ.XMLRPC.postevent</methodName>
<params> <params>
<param><value> <param>
<struct>
<member><name>username</name><value><string>$lj_username</string></value></member>
<member><name>password</name><value><string>$lj_password</string></value></member>
<member><name>event</name><value><string>$post</string></value></member>
<member><name>subject</name><value><string>$title</string></value></member>
<member><name>lineendings</name><value><string>unix</string></value></member>
<member><name>year</name><value><int>$year</int></value></member>
<member><name>mon</name><value><int>$mon</int></value></member>
<member><name>day</name><value><int>$day</int></value></member>
<member><name>hour</name><value><int>$hour</int></value></member>
<member><name>min</name><value><int>$min</int></value></member>
<member><name>usejournal</name><value><string>$lj_username</string></value></member>
<member>
<name>props</name>
<value> <value>
<struct> <struct>
<member><name>username</name><value><string>$lj_username</string></value></member>
<member><name>password</name><value><string>$lj_password</string></value></member>
<member><name>event</name><value><string>$post</string></value></member>
<member><name>subject</name><value><string>$title</string></value></member>
<member><name>lineendings</name><value><string>unix</string></value></member>
<member><name>year</name><value><int>$year</int></value></member>
<member><name>mon</name><value><int>$mon</int></value></member>
<member><name>day</name><value><int>$day</int></value></member>
<member><name>hour</name><value><int>$hour</int></value></member>
<member><name>min</name><value><int>$min</int></value></member>
<member><name>usejournal</name><value><string>$lj_username</string></value></member>
<member> <member>
<name>useragent</name> <name>props</name>
<value><string>Friendica</string></value> <value>
</member> <struct>
<member> <member>
<name>taglist</name> <name>useragent</name>
<value><string>$tags</string></value> <value><string>Friendica</string></value>
</member>
<member>
<name>taglist</name>
<value><string>$tags</string></value>
</member>
</struct>
</value>
</member> </member>
</struct> </struct>
</value> </value>
</member> </param>
</struct> </params>
</value></param>
</params>
</methodCall> </methodCall>
EOT; EOT;
Logger::debug('ljpost: data: ' . $xml); Logger::debug('ljpost: data: ' . $xml);
@ -208,6 +209,7 @@ EOT;
if ($lj_blog !== 'test') { if ($lj_blog !== 'test') {
$x = DI::httpClient()->post($lj_blog, $xml, ['Content-Type' => 'text/xml'])->getBody(); $x = DI::httpClient()->post($lj_blog, $xml, ['Content-Type' => 'text/xml'])->getBody();
} }
Logger::info('posted to livejournal: ' . ($x) ? $x : ''); Logger::info('posted to livejournal: ' . ($x) ? $x : '');
} }
} }

View File

@ -58,19 +58,19 @@ function mailstream_check_version()
} }
/** /**
* This function indicates a module that can be wrapped in the LegacyModule class * This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/ */
function mailstream_module() function mailstream_module() {}
{
}
/** /**
* Adds an item in "addon features" in the admin menu of the site * Adds an item in "addon features" in the admin menu of the site
* *
* @param Friendica\App $a App object (unused) * @param App $a App object (unused)
* @param string $o HTML form data * @param string $o HTML form data
*/ */
function mailstream_addon_admin(&$a, &$o) function mailstream_addon_admin(App $a, string &$o)
{ {
$frommail = DI::config()->get('mailstream', 'frommail'); $frommail = DI::config()->get('mailstream', 'frommail');
$template = Renderer::getMarkupTemplate('admin.tpl', 'addon/mailstream/'); $template = Renderer::getMarkupTemplate('admin.tpl', 'addon/mailstream/');
@ -110,7 +110,7 @@ function mailstream_generate_id($uri)
return $message_id; return $message_id;
} }
function mailstream_send_hook(&$a, $data) function mailstream_send_hook(App $a, $data)
{ {
$criteria = array('uid' => $data['uid'], 'contact-id' => $data['contact-id'], 'uri' => $data['uri']); $criteria = array('uid' => $data['uid'], 'contact-id' => $data['contact-id'], 'uri' => $data['uri']);
$item = Post::selectFirst([], $criteria); $item = Post::selectFirst([], $criteria);
@ -138,10 +138,10 @@ function mailstream_send_hook(&$a, $data)
* mailstream is enabled and the necessary data is available, forks a * mailstream is enabled and the necessary data is available, forks a
* workerqueue item to send the email. * workerqueue item to send the email.
* *
* @param Friendica\App $a App object (unused) * @param App $a App object (unused)
* @param array $item content of the item (may or may not already be stored in the item table) * @param array $item content of the item (may or may not already be stored in the item table)
*/ */
function mailstream_post_hook(&$a, &$item) function mailstream_post_hook(App $a, &$item)
{ {
mailstream_check_version(); mailstream_check_version();

View File

@ -37,7 +37,7 @@ function markdown_addon_settings(App $a, array &$data)
]; ];
} }
function markdown_addon_settings_post(App $a, &$b) function markdown_addon_settings_post(App $a, array &$b)
{ {
if (!local_user() || empty($_POST['markdown-submit'])) { if (!local_user() || empty($_POST['markdown-submit'])) {
return; return;

View File

@ -20,7 +20,7 @@ function mathjax_install()
Hook::register('addon_settings_post', __FILE__, 'mathjax_settings_post'); Hook::register('addon_settings_post', __FILE__, 'mathjax_settings_post');
} }
function mathjax_settings_post($a) function mathjax_settings_post(App $a)
{ {
if (!local_user() || empty($_POST['mathjax-submit'])) { if (!local_user() || empty($_POST['mathjax-submit'])) {
return; return;
@ -50,7 +50,7 @@ function mathjax_settings(App $a, array &$data)
]; ];
} }
function mathjax_footer(App $a, &$b) function mathjax_footer(App $a, array &$b)
{ {
// if the visitor of the page is not a local_user, use MathJax // if the visitor of the page is not a local_user, use MathJax
// otherwise check the users settings. // otherwise check the users settings.

View File

@ -7,6 +7,7 @@
* Status: Unsupported * Status: Unsupported
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
@ -16,7 +17,7 @@ function membersince_install()
Hook::register('profile_advanced', 'addon/membersince/membersince.php', 'membersince_display'); Hook::register('profile_advanced', 'addon/membersince/membersince.php', 'membersince_display');
} }
function membersince_display(Friendica\App $a, &$b) function membersince_display(App $a, array &$b)
{ {
if ($a->getCurrentTheme() == 'frio') { if ($a->getCurrentTheme() == 'frio') {
// Works in Frio. // Works in Frio.

View File

@ -8,6 +8,7 @@
* Status: Deprecated * Status: Deprecated
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
@ -18,7 +19,7 @@ function morechoice_install() {
Hook::register('marital_selector', 'addon/morechoice/morechoice.php', 'morechoice_marital_selector'); Hook::register('marital_selector', 'addon/morechoice/morechoice.php', 'morechoice_marital_selector');
} }
function morechoice_gender_selector($a,&$b) { function morechoice_gender_selector(App $a, array &$b) {
$b['Androgyne'] = DI::l10n()->t('Androgyne'); $b['Androgyne'] = DI::l10n()->t('Androgyne');
$b['Bear'] = DI::l10n()->t('Bear'); $b['Bear'] = DI::l10n()->t('Bear');
$b['Bigender'] = DI::l10n()->t('Bigender'); $b['Bigender'] = DI::l10n()->t('Bigender');
@ -44,7 +45,7 @@ function morechoice_gender_selector($a,&$b) {
$b['Hard to tell these days'] = DI::l10n()->t('Hard to tell these days'); $b['Hard to tell these days'] = DI::l10n()->t('Hard to tell these days');
} }
function morechoice_sexpref_selector($a,&$b) { function morechoice_sexpref_selector(App $a, array &$b) {
$b['Girls with big tits'] = DI::l10n()->t('Girls with big tits'); $b['Girls with big tits'] = DI::l10n()->t('Girls with big tits');
$b['Millionaires'] = DI::l10n()->t('Millionaires'); $b['Millionaires'] = DI::l10n()->t('Millionaires');
$b['Guys with big schlongs'] = DI::l10n()->t('Guys with big schlongs'); $b['Guys with big schlongs'] = DI::l10n()->t('Guys with big schlongs');
@ -97,7 +98,7 @@ function morechoice_sexpref_selector($a,&$b) {
$b['I\'d rather just have some chocolate'] = DI::l10n()->t('I\'d rather just have some chocolate'); $b['I\'d rather just have some chocolate'] = DI::l10n()->t('I\'d rather just have some chocolate');
} }
function morechoice_marital_selector($a,&$b) { function morechoice_marital_selector(App $a, array &$b) {
$b['Married to my job'] = DI::l10n()->t('Married to my job'); $b['Married to my job'] = DI::l10n()->t('Married to my job');
$b['Polygamist'] = DI::l10n()->t('Polygamist'); $b['Polygamist'] = DI::l10n()->t('Polygamist');
$b['Half married'] = DI::l10n()->t('Half married'); $b['Half married'] = DI::l10n()->t('Half married');

View File

@ -6,6 +6,8 @@
* Author: Thomas Willingham <https://kakste.com/profile/beardyunixer> * Author: Thomas Willingham <https://kakste.com/profile/beardyunixer>
* *
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
@ -14,7 +16,7 @@ function morepokes_install()
Hook::register('poke_verbs', 'addon/morepokes/morepokes.php', 'morepokes_poke_verbs'); Hook::register('poke_verbs', 'addon/morepokes/morepokes.php', 'morepokes_poke_verbs');
} }
function morepokes_poke_verbs($a, &$b) function morepokes_poke_verbs(App $a, array &$b)
{ {
$b['bitchslap'] = ['bitchslapped', DI::l10n()->t('bitchslap'), DI::l10n()->t('bitchslapped')]; $b['bitchslap'] = ['bitchslapped', DI::l10n()->t('bitchslap'), DI::l10n()->t('bitchslapped')];
$b['shag'] = ['shag', DI::l10n()->t('shag'), DI::l10n()->t('shagged')]; $b['shag'] = ['shag', DI::l10n()->t('shag'), DI::l10n()->t('shagged')];

View File

@ -7,27 +7,36 @@
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike> * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
* Status: Unsupported * Status: Unsupported
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
function namethingy_install() { function namethingy_install()
Hook::register('app_menu', 'addon/namethingy/namethingy.php', 'namethingy_app_menu'); {
Hook::register('app_menu', 'addon/namethingy/namethingy.php', 'namethingy_app_menu');
} }
function namethingy_app_menu($a,&$b) { function namethingy_app_menu(App $a, array &$b)
$b['app_menu'][] = '<div class="app-title"><a href="namethingy">NameThingy</a></div>'; {
$b['app_menu'][] = '<div class="app-title"><a href="namethingy">NameThingy</a></div>';
} }
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function namethingy_module() {} function namethingy_module() {}
function namethingy_content(&$a) { function namethingy_content(App $a)
{
$baseurl = DI::baseUrl()->get() . '/addon/namethingy';
$baseurl = DI::baseUrl()->get() . '/addon/namethingy'; $o .= <<< EOT
$o .= <<< EOT
<iframe src="http://namethingy.com" width="900" height="700" /> <iframe src="http://namethingy.com" width="900" height="700" />
EOT; EOT;
return $o; return $o;
} }

View File

@ -6,6 +6,7 @@
* Author: Tobias Diekershoff <https://f.diekershoff.de/profile/tobias> * Author: Tobias Diekershoff <https://f.diekershoff.de/profile/tobias>
***/ ***/
use Friendica\App;
use Friendica\Content\Text\BBCode; use Friendica\Content\Text\BBCode;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
@ -18,7 +19,7 @@ function newmemberwidget_install()
Logger::notice('newmemberwidget installed'); Logger::notice('newmemberwidget installed');
} }
function newmemberwidget_network_mod_init ($a, $b) function newmemberwidget_network_mod_init (App $a, $b)
{ {
if (empty($_SESSION['new_member'])) { if (empty($_SESSION['new_member'])) {
return; return;
@ -45,7 +46,7 @@ function newmemberwidget_network_mod_init ($a, $b)
DI::page()['aside'] = $t . DI::page()['aside']; DI::page()['aside'] = $t . DI::page()['aside'];
} }
function newmemberwidget_addon_admin_post(&$a) function newmemberwidget_addon_admin_post(App $a)
{ {
$ft = (!empty($_POST['freetext']) ? trim($_POST['freetext']) : ""); $ft = (!empty($_POST['freetext']) ? trim($_POST['freetext']) : "");
$lsn = trim($_POST['localsupportname'] ?? ''); $lsn = trim($_POST['localsupportname'] ?? '');
@ -57,7 +58,7 @@ function newmemberwidget_addon_admin_post(&$a)
DI::config()->set('newmemberwidget', 'localsupport', trim($lsn)); DI::config()->set('newmemberwidget', 'localsupport', trim($lsn));
} }
function newmemberwidget_addon_admin(&$a, &$o) function newmemberwidget_addon_admin(App $a, &$o)
{ {
$t = Renderer::getMarkupTemplate('admin.tpl', 'addon/newmemberwidget'); $t = Renderer::getMarkupTemplate('admin.tpl', 'addon/newmemberwidget');
$o = Renderer::replaceMacros($t, [ $o = Renderer::replaceMacros($t, [

View File

@ -58,7 +58,7 @@ function nitter_addon_admin(App $a, &$o)
/* /*
* replace "twitter.com" with "nitter.net" * replace "twitter.com" with "nitter.net"
*/ */
function nitter_render(&$a, &$o) function nitter_render(App $a, &$o)
{ {
// this needs to be a system setting // this needs to be a system setting
$replaced = false; $replaced = false;

View File

@ -6,6 +6,7 @@
* Author: Michael Vogel <https://pirati.ca/profile/heluecht> * Author: Michael Vogel <https://pirati.ca/profile/heluecht>
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
@ -64,12 +65,12 @@ function nominatim_resolve_item(&$item)
} }
} }
function nominatim_post_hook($a, &$item) function nominatim_post_hook(App $a, &$item)
{ {
nominatim_resolve_item($item); nominatim_resolve_item($item);
} }
function nominatim_addon_admin(&$a, &$o) function nominatim_addon_admin(App $a, &$o)
{ {
$t = Renderer::getMarkupTemplate('admin.tpl', 'addon/nominatim/'); $t = Renderer::getMarkupTemplate('admin.tpl', 'addon/nominatim/');
@ -80,7 +81,7 @@ function nominatim_addon_admin(&$a, &$o)
]); ]);
} }
function nominatim_addon_admin_post(&$a) function nominatim_addon_admin_post(App $a)
{ {
$language = !empty($_POST['language']) ? trim($_POST['language']) : ''; $language = !empty($_POST['language']) ? trim($_POST['language']) : '';
DI::config()->set('nominatim', 'language', $language); DI::config()->set('nominatim', 'language', $language);

View File

@ -15,6 +15,11 @@ use Friendica\Core\Logger;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\DI; use Friendica\DI;
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function notifyall_module() {} function notifyall_module() {}
function notifyall_addon_admin(App $a, &$o) function notifyall_addon_admin(App $a, &$o)
@ -60,7 +65,7 @@ function notifyall_post(App $a)
DI::baseUrl()->redirect('admin'); DI::baseUrl()->redirect('admin');
} }
function notifyall_content(&$a) function notifyall_content(App $a)
{ {
if (!$a->isSiteAdmin()) { if (!$a->isSiteAdmin()) {
return ''; return '';

View File

@ -74,7 +74,7 @@ function nsfw_addon_settings(App &$a, array &$data)
]; ];
} }
function nsfw_addon_settings_post(&$a, &$b) function nsfw_addon_settings_post(App $a, array &$b)
{ {
if (!local_user()) { if (!local_user()) {
return; return;

View File

@ -28,11 +28,12 @@ function numfriends_install() {
* and if so set our configuration setting for this person. * and if so set our configuration setting for this person.
* *
*/ */
function numfriends_settings_post($a,$post) { function numfriends_settings_post(App $a, $post) {
if(! local_user() || empty($_POST['numfriends-submit'])) if (! local_user() || empty($_POST['numfriends-submit'])) {
return; return;
}
DI::pConfig()->set(local_user(),'system','display_friend_count',intval($_POST['numfriends'])); DI::pConfig()->set(local_user(), 'system', 'display_friend_count', intval($_POST['numfriends']));
} }
@ -44,7 +45,7 @@ function numfriends_settings_post($a,$post) {
*/ */
function numfriends_settings(App &$a, array &$data) function numfriends_settings(App &$a, array &$data)
{ {
if (! local_user()) { if (!local_user()) {
return; return;
} }

View File

@ -9,6 +9,7 @@
* *
*/ */
use Friendica\App;
use Friendica\Core\Cache\Enum\Duration; use Friendica\Core\Cache\Enum\Duration;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
@ -34,12 +35,12 @@ function openstreetmap_install()
Logger::notice("installed openstreetmap"); Logger::notice("installed openstreetmap");
} }
function openstreetmap_load_config(\Friendica\App $a, ConfigFileLoader $loader) function openstreetmap_load_config(App $a, ConfigFileLoader $loader)
{ {
$a->getConfigCache()->load($loader->loadAddonConfig('openstreetmap')); $a->getConfigCache()->load($loader->loadAddonConfig('openstreetmap'));
} }
function openstreetmap_alterheader($a, &$navHtml) function openstreetmap_alterheader(App $a, &$navHtml)
{ {
$addScriptTag = '<script type="text/javascript" src="' . DI::baseUrl()->get() . '/addon/openstreetmap/openstreetmap.js"></script>' . "\r\n"; $addScriptTag = '<script type="text/javascript" src="' . DI::baseUrl()->get() . '/addon/openstreetmap/openstreetmap.js"></script>' . "\r\n";
DI::page()['htmlhead'] .= $addScriptTag; DI::page()['htmlhead'] .= $addScriptTag;
@ -54,7 +55,7 @@ function openstreetmap_alterheader($a, &$navHtml)
* @param mixed $a * @param mixed $a
* @param array& $item * @param array& $item
*/ */
function openstreetmap_location($a, &$item) function openstreetmap_location(App $a, &$item)
{ {
if (!(strlen($item['location']) || strlen($item['coord']))) { if (!(strlen($item['location']) || strlen($item['coord']))) {
return; return;
@ -104,7 +105,7 @@ function openstreetmap_location($a, &$item)
$item['html'] = '<a target="map" title="'.$title.'" href= "'.$target.'">'.$title.'</a>'; $item['html'] = '<a target="map" title="'.$title.'" href= "'.$target.'">'.$title.'</a>';
} }
function openstreetmap_get_coordinates($a, &$b) function openstreetmap_get_coordinates(App $a, array &$b)
{ {
$nomserver = DI::config()->get('openstreetmap', 'nomserver', OSM_NOM); $nomserver = DI::config()->get('openstreetmap', 'nomserver', OSM_NOM);
@ -132,7 +133,7 @@ function openstreetmap_get_coordinates($a, &$b)
} }
} }
function openstreetmap_generate_named_map(&$a, &$b) function openstreetmap_generate_named_map(App $a, array &$b)
{ {
openstreetmap_get_coordinates($a, $b); openstreetmap_get_coordinates($a, $b);
@ -141,7 +142,7 @@ function openstreetmap_generate_named_map(&$a, &$b)
} }
} }
function openstreetmap_generate_map(&$a, &$b) function openstreetmap_generate_map(App $a, array &$b)
{ {
$tmsserver = DI::config()->get('openstreetmap', 'tmsserver', OSM_TMS); $tmsserver = DI::config()->get('openstreetmap', 'tmsserver', OSM_TMS);
@ -177,7 +178,7 @@ function openstreetmap_generate_map(&$a, &$b)
Logger::debug('generate_map: ' . $b['html']); Logger::debug('generate_map: ' . $b['html']);
} }
function openstreetmap_addon_admin(&$a, &$o) function openstreetmap_addon_admin(App $a, &$o)
{ {
$t = Renderer::getMarkupTemplate("admin.tpl", "addon/openstreetmap/"); $t = Renderer::getMarkupTemplate("admin.tpl", "addon/openstreetmap/");
$tmsserver = DI::config()->get('openstreetmap', 'tmsserver', OSM_TMS); $tmsserver = DI::config()->get('openstreetmap', 'tmsserver', OSM_TMS);
@ -199,7 +200,7 @@ function openstreetmap_addon_admin(&$a, &$o)
]); ]);
} }
function openstreetmap_addon_admin_post(&$a) function openstreetmap_addon_admin_post(App $a)
{ {
$urltms = ($_POST['tmsserver'] ?? '') ?: OSM_TMS; $urltms = ($_POST['tmsserver'] ?? '') ?: OSM_TMS;
$urlnom = ($_POST['nomserver'] ?? '') ?: OSM_NOM; $urlnom = ($_POST['nomserver'] ?? '') ?: OSM_NOM;

View File

@ -82,10 +82,11 @@ function opmlexport_addon_settings(App $a, array &$data)
} }
function opmlexport_addon_settings_post(App $a, &$b) function opmlexport_addon_settings_post(App $a, array &$b)
{ {
if (!local_user() || empty($_POST['opmlexport-submit'])) { if (!local_user() || empty($_POST['opmlexport-submit'])) {
return; return;
} }
opmlexport($a); opmlexport($a);
} }

View File

@ -52,7 +52,7 @@ function pageheader_addon_admin_post(App $a)
} }
} }
function pageheader_fetch(App $a, &$b) function pageheader_fetch(App $a, array &$b)
{ {
if(file_exists('pageheader.html')){ if(file_exists('pageheader.html')){
$s = file_get_contents('pageheader.html'); $s = file_get_contents('pageheader.html');

View File

@ -31,6 +31,7 @@
* setting. * setting.
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
@ -44,13 +45,13 @@ function piwik_install() {
Logger::notice("installed piwik addon"); Logger::notice("installed piwik addon");
} }
function piwik_load_config(\Friendica\App $a, ConfigFileLoader $loader) function piwik_load_config(App $a, ConfigFileLoader $loader)
{ {
$a->getConfigCache()->load($loader->loadAddonConfig('piwik')); $a->getConfigCache()->load($loader->loadAddonConfig('piwik'));
} }
function piwik_analytics($a,&$b) { function piwik_analytics(App $a, array &$b)
{
/* /*
* styling of every HTML block added by this addon is done in the * styling of every HTML block added by this addon is done in the
* associated CSS file. We just have to tell Friendica to get it * associated CSS file. We just have to tell Friendica to get it
@ -90,7 +91,7 @@ function piwik_analytics($a,&$b) {
$b .= "</div>"; $b .= "</div>";
} }
} }
function piwik_addon_admin (&$a, &$o) { function piwik_addon_admin (App $a, &$o) {
$t = Renderer::getMarkupTemplate( "admin.tpl", "addon/piwik/" ); $t = Renderer::getMarkupTemplate( "admin.tpl", "addon/piwik/" );
$o = Renderer::replaceMacros( $t, [ $o = Renderer::replaceMacros( $t, [
'$submit' => DI::l10n()->t('Save Settings'), '$submit' => DI::l10n()->t('Save Settings'),
@ -100,7 +101,7 @@ function piwik_addon_admin (&$a, &$o) {
'$async' => ['async', DI::l10n()->t('Asynchronous tracking'), DI::config()->get('piwik','async' ), ''], '$async' => ['async', DI::l10n()->t('Asynchronous tracking'), DI::config()->get('piwik','async' ), ''],
]); ]);
} }
function piwik_addon_admin_post (&$a) { function piwik_addon_admin_post (App $a) {
$url = trim($_POST['baseurl'] ?? ''); $url = trim($_POST['baseurl'] ?? '');
$id = trim($_POST['siteid'] ?? ''); $id = trim($_POST['siteid'] ?? '');
$optout = trim($_POST['optout'] ?? ''); $optout = trim($_POST['optout'] ?? '');

View File

@ -13,59 +13,56 @@ use Friendica\Core\Logger;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\DI; use Friendica\DI;
function planets_install() { function planets_install()
{
/** /**
*
* Our demo addon will attach in three places. * Our demo addon will attach in three places.
* The first is just prior to storing a local post. * The first is just prior to storing a local post.
*
*/ */
Hook::register('post_local', 'addon/planets/planets.php', 'planets_post_hook'); Hook::register('post_local', 'addon/planets/planets.php', 'planets_post_hook');
/** /**
*
* Then we'll attach into the addon settings page, and also the * Then we'll attach into the addon settings page, and also the
* settings post hook so that we can create and update * settings post hook so that we can create and update
* user preferences. * user preferences.
*
*/ */
Hook::register('addon_settings', 'addon/planets/planets.php', 'planets_settings'); Hook::register('addon_settings', 'addon/planets/planets.php', 'planets_settings');
Hook::register('addon_settings_post', 'addon/planets/planets.php', 'planets_settings_post'); Hook::register('addon_settings_post', 'addon/planets/planets.php', 'planets_settings_post');
Logger::notice("installed planets"); Logger::notice("installed planets");
} }
function planets_post_hook($a, &$item) { /**
* An item was posted on the local system.
/** * We are going to look for specific items:
* * - A status post by a profile owner
* An item was posted on the local system. * - The profile owner must have allowed our addon
* We are going to look for specific items: */
* - A status post by a profile owner function planets_post_hook(App $a, &$item)
* - The profile owner must have allowed our addon {
*
*/
Logger::notice('planets invoked'); Logger::notice('planets invoked');
if(! local_user()) /* non-zero if this is a logged in user of this system */ if (!local_user()) {
/* non-zero if this is a logged in user of this system */
return; return;
}
if(local_user() != $item['uid']) /* Does this person own the post? */ if (local_user() != $item['uid']) {
/* Does this person own the post? */
return; return;
}
if($item['parent']) /* If the item has a parent, this is a comment or something else, not a status post. */ if ($item['parent']) {
/* If the item has a parent, this is a comment or something else, not a status post. */
return; return;
}
/* Retrieve our personal config setting */ /* Retrieve our personal config setting */
$active = DI::pConfig()->get(local_user(), 'planets', 'enable'); $active = DI::pConfig()->get(local_user(), 'planets', 'enable');
if(! $active) if (!$active) {
return; return;
}
/** /**
* *
@ -96,11 +93,14 @@ function planets_post_hook($a, &$item) {
* *
*/ */
function planets_settings_post($a,$post) { function planets_settings_post(App $a, $post)
if(! local_user()) {
if (!local_user()) {
return; return;
if($_POST['planets-submit']) }
DI::pConfig()->set(local_user(),'planets','enable',intval($_POST['planets'])); if ($_POST['planets-submit']) {
DI::pConfig()->set(local_user(), 'planets', 'enable' ,intval($_POST['planets']));
}
} }
@ -115,7 +115,7 @@ function planets_settings_post($a,$post) {
function planets_settings(App &$a, array &$data) function planets_settings(App &$a, array &$data)
{ {
if(! local_user()) { if(!local_user()) {
return; return;
} }

View File

@ -32,7 +32,7 @@ function public_server_load_config(App $a, ConfigFileLoader $loader)
$a->getConfigCache()->load($loader->loadAddonConfig('public_server')); $a->getConfigCache()->load($loader->loadAddonConfig('public_server'));
} }
function public_server_register_account($a, $b) function public_server_register_account(App $a, $b)
{ {
$uid = $b; $uid = $b;
@ -46,7 +46,7 @@ function public_server_register_account($a, $b)
DBA::update('user', $fields, ['uid' => $uid]); DBA::update('user', $fields, ['uid' => $uid]);
} }
function public_server_cron($a, $b) function public_server_cron(App $a, $b)
{ {
Logger::notice("public_server: cron start"); Logger::notice("public_server: cron start");
@ -99,7 +99,7 @@ function public_server_cron($a, $b)
Logger::notice("public_server: cron end"); Logger::notice("public_server: cron end");
} }
function public_server_enotify(&$a, &$b) function public_server_enotify(App $a, array &$b)
{ {
if (!empty($b['params']) && $b['params']['type'] == Notification\Type::SYSTEM if (!empty($b['params']) && $b['params']['type'] == Notification\Type::SYSTEM
&& !empty($b['params']['system_type']) && $b['params']['system_type'] === 'public_server_expire') { && !empty($b['params']['system_type']) && $b['params']['system_type'] === 'public_server_expire') {
@ -110,7 +110,7 @@ function public_server_enotify(&$a, &$b)
} }
} }
function public_server_login($a, $b) function public_server_login(App $a, $b)
{ {
$days = DI::config()->get('public_server', 'expiredays'); $days = DI::config()->get('public_server', 'expiredays');
if (!$days) { if (!$days) {
@ -122,7 +122,7 @@ function public_server_login($a, $b)
DBA::update('user', $fields, $condition); DBA::update('user', $fields, $condition);
} }
function public_server_addon_admin_post(&$a) function public_server_addon_admin_post(App $a)
{ {
BaseModule::checkFormSecurityTokenRedirectOnError('/admin/addons/publicserver', 'publicserver'); BaseModule::checkFormSecurityTokenRedirectOnError('/admin/addons/publicserver', 'publicserver');
$expiredays = trim($_POST['expiredays'] ?? ''); $expiredays = trim($_POST['expiredays'] ?? '');
@ -139,7 +139,7 @@ function public_server_addon_admin_post(&$a)
DI::config()->set('public_server', 'flagpostsexpire', $flagpostsexpire); DI::config()->set('public_server', 'flagpostsexpire', $flagpostsexpire);
} }
function public_server_addon_admin(&$a, &$o) function public_server_addon_admin(App $a, &$o)
{ {
$token = BaseModule::getFormSecurityToken("publicserver"); $token = BaseModule::getFormSecurityToken("publicserver");
$t = Renderer::getMarkupTemplate("admin.tpl", "addon/public_server"); $t = Renderer::getMarkupTemplate("admin.tpl", "addon/public_server");

File diff suppressed because it is too large Load Diff

View File

@ -2,10 +2,10 @@
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\DI; use Friendica\DI;
function pumpio_sync_run($argv, $argc) { function pumpio_sync_run(array $argv, int $argc) {
$a = Friendica\DI::app(); $a = Friendica\DI::app();
require_once("addon/pumpio/pumpio.php"); require_once 'addon/pumpio/pumpio.php';
if (function_exists('sys_getloadavg')) { if (function_exists('sys_getloadavg')) {
$load = sys_getloadavg(); $load = sys_getloadavg();

View File

@ -31,7 +31,7 @@ function qcomment_install()
Hook::register('footer' , __FILE__, 'qcomment_footer'); Hook::register('footer' , __FILE__, 'qcomment_footer');
} }
function qcomment_footer(App $a, &$b) function qcomment_footer(App $a, array &$b)
{ {
DI::page()->registerFooterScript('addon/qcomment/qcomment.js'); DI::page()->registerFooterScript('addon/qcomment/qcomment.js');
} }
@ -57,9 +57,9 @@ function qcomment_addon_settings(App &$a, array &$data)
]; ];
} }
function qcomment_addon_settings_post(&$a, &$b) function qcomment_addon_settings_post(App $a, array &$b)
{ {
if (! local_user()) { if (!local_user()) {
return; return;
} }

View File

@ -25,75 +25,67 @@ use Friendica\Core\Logger;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\DI; use Friendica\DI;
function randplace_install() { function randplace_install()
{
/** /*
*
* Our demo addon will attach in three places. * Our demo addon will attach in three places.
* The first is just prior to storing a local post. * The first is just prior to storing a local post.
*
*/ */
Hook::register('post_local', 'addon/randplace/randplace.php', 'randplace_post_hook'); Hook::register('post_local', 'addon/randplace/randplace.php', 'randplace_post_hook');
/** /*
*
* Then we'll attach into the addon settings page, and also the * Then we'll attach into the addon settings page, and also the
* settings post hook so that we can create and update * settings post hook so that we can create and update
* user preferences. * user preferences.
*
*/ */
Hook::register('addon_settings', 'addon/randplace/randplace.php', 'randplace_settings'); Hook::register('addon_settings', 'addon/randplace/randplace.php', 'randplace_settings');
Hook::register('addon_settings_post', 'addon/randplace/randplace.php', 'randplace_settings_post'); Hook::register('addon_settings_post', 'addon/randplace/randplace.php', 'randplace_settings_post');
Logger::notice("installed randplace"); Logger::notice("installed randplace");
} }
function randplace_uninstall()
function randplace_uninstall() { {
/*
/**
*
* This function should undo anything that was done in name_install() * This function should undo anything that was done in name_install()
* *
* Except hooks, they are all unregistered automatically and don't need to be unregistered manually. * Except hooks, they are all unregistered automatically and don't need to be unregistered manually.
*
*/ */
Logger::notice("removed randplace"); Logger::notice("removed randplace");
} }
function randplace_post_hook(App $a, &$item)
{
function randplace_post_hook($a, &$item) { /*
/**
*
* An item was posted on the local system. * An item was posted on the local system.
* We are going to look for specific items: * We are going to look for specific items:
* - A status post by a profile owner * - A status post by a profile owner
* - The profile owner must have allowed our addon * - The profile owner must have allowed our addon
*
*/ */
Logger::notice('randplace invoked'); Logger::notice('randplace invoked');
if(! local_user()) /* non-zero if this is a logged in user of this system */ if (!local_user()) {
/* non-zero if this is a logged in user of this system */
return; return;
}
if(local_user() != $item['uid']) /* Does this person own the post? */ if (local_user() != $item['uid']) {
/* Does this person own the post? */
return; return;
}
if($item['parent']) /* If the item has a parent, this is a comment or something else, not a status post. */ if ($item['parent']) {
/* If the item has a parent, this is a comment or something else, not a status post. */
return; return;
}
/* Retrieve our personal config setting */ /* Retrieve our personal config setting */
$active = DI::pConfig()->get(local_user(), 'randplace', 'enable'); $active = DI::pConfig()->get(local_user(), 'randplace', 'enable');
if(! $active) if (!$active) {
return; return;
}
/** /**
* *
@ -107,50 +99,46 @@ function randplace_post_hook($a, &$item) {
$cities = []; $cities = [];
$zones = timezone_identifiers_list(); $zones = timezone_identifiers_list();
foreach($zones as $zone) { foreach($zones as $zone) {
if((strpos($zone,'/')) && (! stristr($zone,'US/')) && (! stristr($zone,'Etc/'))) if ((strpos($zone, '/')) && (! stristr($zone, 'US/')) && (! stristr($zone, 'Etc/'))) {
$cities[] = str_replace('_', ' ',substr($zone,strpos($zone,'/') + 1)); $cities[] = str_replace('_', ' ',substr($zone, strpos($zone, '/') + 1));
}
} }
if(! count($cities)) if (!count($cities)) {
return; return;
}
$city = array_rand($cities,1); $city = array_rand($cities,1);
$item['location'] = $cities[$city]; $item['location'] = $cities[$city];
return; return;
} }
/** /**
*
* Callback from the settings post function. * Callback from the settings post function.
* $post contains the $_POST array. * $post contains the $_POST array.
* We will make sure we've got a valid user account * We will make sure we've got a valid user account
* and if so set our configuration setting for this person. * and if so set our configuration setting for this person.
*
*/ */
function randplace_settings_post(App $a, $post)
function randplace_settings_post($a,$post) { {
if(! local_user()) if (!local_user()) {
return; return;
if($_POST['randplace-submit']) }
DI::pConfig()->set(local_user(),'randplace','enable',intval($_POST['randplace']));
if ($_POST['randplace-submit']) {
DI::pConfig()->set(local_user(), 'randplace', 'enable', intval($_POST['randplace']));
}
} }
/** /**
*
* Called from the Addon Setting form. * Called from the Addon Setting form.
* Add our own settings info to the page. * Add our own settings info to the page.
*
*/ */
function randplace_settings(App &$a, array &$data) function randplace_settings(App &$a, array &$data)
{ {
if(! local_user()) { if(!local_user()) {
return; return;
} }

View File

@ -7,6 +7,7 @@
* *
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\DI; use Friendica\DI;
@ -16,14 +17,17 @@ function rendertime_install() {
DI::config()->set('system', 'profiler', true); DI::config()->set('system', 'profiler', true);
} }
function rendertime_uninstall() { function rendertime_uninstall()
{
DI::config()->delete('system', 'profiler'); DI::config()->delete('system', 'profiler');
} }
function rendertime_init_1(&$a) { function rendertime_init_1(App $a)
{
} }
function rendertime_addon_admin(&$a, &$o) { function rendertime_addon_admin(App $a, &$o)
{
$t = Renderer::getMarkupTemplate("admin.tpl", "addon/rendertime/"); $t = Renderer::getMarkupTemplate("admin.tpl", "addon/rendertime/");
$o = Renderer::replaceMacros($t, [ $o = Renderer::replaceMacros($t, [
@ -33,16 +37,17 @@ function rendertime_addon_admin(&$a, &$o) {
]); ]);
} }
function rendertime_addon_admin_post(&$a) { function rendertime_addon_admin_post(App $a)
{
DI::config()->set('rendertime', 'callstack', $_POST['callstack'] ?? false); DI::config()->set('rendertime', 'callstack', $_POST['callstack'] ?? false);
DI::config()->set('rendertime', 'minimal_time', $_POST['minimal_time'] ?? 0); DI::config()->set('rendertime', 'minimal_time', $_POST['minimal_time'] ?? 0);
} }
/** /**
* @param Friendica\App $a * @param App $a
* @param string $o * @param string $o
*/ */
function rendertime_page_end(Friendica\App $a, &$o) function rendertime_page_end(App $a, &$o)
{ {
$profiler = DI::profiler(); $profiler = DI::profiler();

View File

@ -14,7 +14,7 @@ use Friendica\DI;
require_once __DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php'; require_once __DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
function s3_storage_install($a) function s3_storage_install(App $a)
{ {
Hook::register('storage_instance' , __FILE__, 's3_storage_instance'); Hook::register('storage_instance' , __FILE__, 's3_storage_instance');
Hook::register('storage_config' , __FILE__, 's3_storage_config'); Hook::register('storage_config' , __FILE__, 's3_storage_config');

View File

@ -5,6 +5,8 @@
* Version: 1.0 * Version: 1.0
* Author: Ryan <https://friendica.verya.pe/profile/ryan> * Author: Ryan <https://friendica.verya.pe/profile/ryan>
*/ */
use Friendica\App;
use Friendica\Content\Text\BBCode; use Friendica\Content\Text\BBCode;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
@ -14,6 +16,7 @@ use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Util\Strings; use Friendica\Util\Strings;
use OneLogin\Saml2\Utils;
require_once(__DIR__ . '/vendor/autoload.php'); require_once(__DIR__ . '/vendor/autoload.php');
@ -77,12 +80,12 @@ function saml_install()
Hook::register('footer', __FILE__, 'saml_footer'); Hook::register('footer', __FILE__, 'saml_footer');
} }
function saml_head(&$a, &$b) function saml_head(App $a, array &$b)
{ {
DI::page()->registerStylesheet(__DIR__ . '/saml.css'); DI::page()->registerStylesheet(__DIR__ . '/saml.css');
} }
function saml_footer(&$a, &$b) function saml_footer(App $a, array &$b)
{ {
$fragment = addslashes(BBCode::convert(DI::config()->get('saml', 'settings_statement'))); $fragment = addslashes(BBCode::convert(DI::config()->get('saml', 'settings_statement')));
$b .= <<<EOL $b .= <<<EOL
@ -106,7 +109,7 @@ function saml_is_configured()
DI::config()->get('saml', 'idp_cert'); DI::config()->get('saml', 'idp_cert');
} }
function saml_sso_initiate(&$a, &$b) function saml_sso_initiate(App $a, array &$b)
{ {
if (!saml_is_configured()) { if (!saml_is_configured()) {
Logger::warning('SAML SSO tried to trigger, but the SAML addon is not configured yet!'); Logger::warning('SAML SSO tried to trigger, but the SAML addon is not configured yet!');
@ -166,13 +169,12 @@ function saml_sso_reply($a)
DI::auth()->setForUser($a, $user); DI::auth()->setForUser($a, $user);
} }
if (isset($_POST['RelayState']) if (isset($_POST['RelayState']) && Utils::getSelfURL() != $_POST['RelayState']) {
&& \OneLogin\Saml2\Utils::getSelfURL() != $_POST['RelayState']) {
$auth->redirectTo($_POST['RelayState']); $auth->redirectTo($_POST['RelayState']);
} }
} }
function saml_slo_initiate(&$a, &$b) function saml_slo_initiate(App $a, array &$b)
{ {
if (!saml_is_configured()) { if (!saml_is_configured()) {
Logger::warning('SAML SLO tried to trigger, but the SAML addon is not configured yet!'); Logger::warning('SAML SLO tried to trigger, but the SAML addon is not configured yet!');
@ -223,7 +225,7 @@ function saml_input($key, $label, $description)
]; ];
} }
function saml_addon_admin(&$a, &$o) function saml_addon_admin(App $a, &$o)
{ {
$form = $form =
saml_input( saml_input(
@ -279,7 +281,7 @@ function saml_addon_admin(&$a, &$o)
$o = Renderer::replaceMacros($t, $form); $o = Renderer::replaceMacros($t, $form);
} }
function saml_addon_admin_post(&$a) function saml_addon_admin_post(App $a)
{ {
$set = function ($key) { $set = function ($key) {
$val = (!empty($_POST[$key]) ? trim($_POST[$key]) : ''); $val = (!empty($_POST[$key]) ? trim($_POST[$key]) : '');

View File

@ -45,7 +45,7 @@ function showmore_addon_settings(App &$a, array &$data)
]; ];
} }
function showmore_addon_settings_post(&$a, &$b) function showmore_addon_settings_post(App $a, array &$b)
{ {
if (!local_user()) { if (!local_user()) {
return; return;

View File

@ -24,12 +24,12 @@ function showmore_dyn_install()
Hook::register('addon_settings_post', __FILE__, 'showmore_dyn_settings_post'); Hook::register('addon_settings_post', __FILE__, 'showmore_dyn_settings_post');
} }
function showmore_dyn_head(App $a, &$b) function showmore_dyn_head(App $a, array &$b)
{ {
DI::page()->registerStylesheet(__DIR__ . '/showmore_dyn.css'); DI::page()->registerStylesheet(__DIR__ . '/showmore_dyn.css');
} }
function showmore_dyn_footer(App $a, &$b) function showmore_dyn_footer(App $a, array &$b)
{ {
DI::page()->registerFooterScript(__DIR__ . '/showmore_dyn.js'); DI::page()->registerFooterScript(__DIR__ . '/showmore_dyn.js');
} }

View File

@ -6,6 +6,8 @@
* Author: Thomas Willingham (based on Mike Macgirvin's Adult Smile template) * Author: Thomas Willingham (based on Mike Macgirvin's Adult Smile template)
* All smileys from sites offering them as Public Domain * All smileys from sites offering them as Public Domain
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
@ -13,7 +15,7 @@ function smiley_pack_es_install() {
Hook::register('smilie', 'addon/smiley_pack_es/smiley_pack_es.php', 'smiley_pack_smilies_es'); Hook::register('smilie', 'addon/smiley_pack_es/smiley_pack_es.php', 'smiley_pack_smilies_es');
} }
function smiley_pack_smilies_es(&$a,&$b) { function smiley_pack_smilies_es(App $a, array &$b) {
#Smileys are split into various directories by the intended range of emotions. This is in case we get too big and need to modularise things. We can then cut and paste the right lines, move the right directory, and just change the name of the addon to happy_smilies or whatever. #Smileys are split into various directories by the intended range of emotions. This is in case we get too big and need to modularise things. We can then cut and paste the right lines, move the right directory, and just change the name of the addon to happy_smilies or whatever.

View File

@ -3,19 +3,23 @@
* Name: Smiley Pack (Français) * Name: Smiley Pack (Français)
* Description: Pack of smileys that make master too AOLish. * Description: Pack of smileys that make master too AOLish.
* Version: 1.01 * Version: 1.01
* Author: Thomas Willingham (based on Mike Macgirvin's Adult Smile template) * Author: Thomas Willingham (based on Mike Macgirvin's Adult Smile template)
* All smileys from sites offering them as Public Domain * All smileys from sites offering them as Public Domain
* *
* *
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
function smiley_pack_fr_install() { function smiley_pack_fr_install()
{
Hook::register('smilie', 'addon/smiley_pack_fr/smiley_pack_fr.php', 'smiley_pack_fr_smilies'); Hook::register('smilie', 'addon/smiley_pack_fr/smiley_pack_fr.php', 'smiley_pack_fr_smilies');
} }
function smiley_pack_fr_smilies(&$a,&$b) { function smiley_pack_fr_smilies(App $a, array &$b)
{
#Smileys are split into various directories by the intended range of emotions. This is in case we get too big and need to modularise things. We can then cut and paste the right lines, move the right directory, and just change the name of the addon to happy_smilies or whatever. #Smileys are split into various directories by the intended range of emotions. This is in case we get too big and need to modularise things. We can then cut and paste the right lines, move the right directory, and just change the name of the addon to happy_smilies or whatever.
@ -392,7 +396,7 @@ function smiley_pack_fr_smilies(&$a,&$b) {
$b['texts'][] = ':cognetête'; $b['texts'][] = ':cognetête';
$b['icons'][] = '<img src="' . DI::baseUrl()->get() . '/addon/smiley_pack/icons/oldcore/headbang.gif' . '" alt="' . ':cognetête' . '" />'; $b['icons'][] = '<img src="' . DI::baseUrl()->get() . '/addon/smiley_pack/icons/oldcore/headbang.gif' . '" alt="' . ':cognetête' . '" />';
$b['texts'][] = ':barbu'; $b['texts'][] = ':barbu';
$b['icons'][] = '<img src="' . DI::baseUrl()->get() . '/addon/smiley_pack/icons/oldcore/beard.png' . '" alt="' . ':barbu' . '" />'; $b['icons'][] = '<img src="' . DI::baseUrl()->get() . '/addon/smiley_pack/icons/oldcore/beard.png' . '" alt="' . ':barbu' . '" />';
$b['texts'][] = ':barbeblanche'; $b['texts'][] = ':barbeblanche';
@ -400,5 +404,4 @@ function smiley_pack_fr_smilies(&$a,&$b) {
$b['texts'][] = ':tête'; $b['texts'][] = ':tête';
$b['icons'][] = '<img src="' . DI::baseUrl()->get() . '/addon/smiley_pack/icons/oldcore/headbang.gif' . '" alt="' . ':tête' . '" />'; $b['icons'][] = '<img src="' . DI::baseUrl()->get() . '/addon/smiley_pack/icons/oldcore/headbang.gif' . '" alt="' . ':tête' . '" />';
} }

View File

@ -8,6 +8,7 @@
* All smileys from sites offering them as Public Domain * All smileys from sites offering them as Public Domain
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
@ -15,8 +16,8 @@ function smiley_pack_install() {
Hook::register('smilie', 'addon/smiley_pack/smiley_pack.php', 'smiley_pack_smilies'); Hook::register('smilie', 'addon/smiley_pack/smiley_pack.php', 'smiley_pack_smilies');
} }
function smiley_pack_smilies(&$a,&$b) { function smiley_pack_smilies(App $a, array &$b)
{
#Smileys are split into various directories by the intended range of emotions. This is in case we get too big and need to modularise things. We can then cut and paste the right lines, move the right directory, and just change the name of the addon to happy_smilies or whatever. #Smileys are split into various directories by the intended range of emotions. This is in case we get too big and need to modularise things. We can then cut and paste the right lines, move the right directory, and just change the name of the addon to happy_smilies or whatever.
#Be careful with invocation strings. If you have a smiley called foo, and another called foobar, typing :foobar will call foo. Avoid this with clever naming, using ~ instead of : #Be careful with invocation strings. If you have a smiley called foo, and another called foobar, typing :foobar will call foo. Avoid this with clever naming, using ~ instead of :
@ -538,5 +539,4 @@ function smiley_pack_smilies(&$a,&$b) {
$b['texts'][] = ':twitch:'; $b['texts'][] = ':twitch:';
$b['icons'][] = '<img class="smiley" src="' . DI::baseUrl()->get() . '/addon/smiley_pack/icons/commercial/twitch.gif' . '" alt="' . ':twitch:' . '" />'; $b['icons'][] = '<img class="smiley" src="' . DI::baseUrl()->get() . '/addon/smiley_pack/icons/commercial/twitch.gif' . '" alt="' . ':twitch:' . '" />';
} }

View File

@ -7,6 +7,7 @@
* Maintainer: Hypolite Petovan <https://friendica.mrpetovan.com/profile/hypolite> * Maintainer: Hypolite Petovan <https://friendica.mrpetovan.com/profile/hypolite>
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
@ -16,7 +17,7 @@ function smileybutton_install()
Hook::register('jot_tool', 'addon/smileybutton/smileybutton.php', 'smileybutton_jot_tool'); Hook::register('jot_tool', 'addon/smileybutton/smileybutton.php', 'smileybutton_jot_tool');
} }
function smileybutton_jot_tool(Friendica\App $a, &$b) function smileybutton_jot_tool(App $a, string &$body)
{ {
// Disable if theme is quattro // Disable if theme is quattro
// TODO add style for quattro // TODO add style for quattro
@ -113,7 +114,7 @@ function smileybutton_jot_tool(Friendica\App $a, &$b)
$image_url = DI::baseUrl()->get() . '/' . $image; $image_url = DI::baseUrl()->get() . '/' . $image;
//Add the hmtl and script to the page //Add the hmtl and script to the page
$b = <<< EOT $body = <<< EOT
<div id="profile-smiley-wrapper"> <div id="profile-smiley-wrapper">
<button type="button" class="btn btn-link smiley_button" onclick="toggle_smileybutton()"><img src="$image_url" alt="smiley"></button> <button type="button" class="btn btn-link smiley_button" onclick="toggle_smileybutton()"><img src="$image_url" alt="smiley"></button>
<div id="smileybutton"> <div id="smileybutton">

View File

@ -8,6 +8,8 @@
* This is a template for how to extend the "smily" code. * This is a template for how to extend the "smily" code.
* *
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
@ -15,8 +17,8 @@ function smilies_adult_install() {
Hook::register('smilie', 'addon/smilies_adult/smilies_adult.php', 'smilies_adult_smilies'); Hook::register('smilie', 'addon/smilies_adult/smilies_adult.php', 'smilies_adult_smilies');
} }
function smilies_adult_smilies(&$a,&$b) { function smilies_adult_smilies(App $a, array &$b)
{
$b['texts'][] = '(o)(o)'; $b['texts'][] = '(o)(o)';
$b['icons'][] = '<img class="smiley" src="' . DI::baseUrl()->get() . '/addon/smilies_adult/icons/tits.gif' . '" alt="' . '(o)(o)' . '" />'; $b['icons'][] = '<img class="smiley" src="' . DI::baseUrl()->get() . '/addon/smilies_adult/icons/tits.gif' . '" alt="' . '(o)(o)' . '" />';
@ -34,5 +36,4 @@ function smilies_adult_smilies(&$a,&$b) {
$b['texts'][] = ':finger'; $b['texts'][] = ':finger';
$b['icons'][] = '<img class="smiley" src="' . DI::baseUrl()->get() . '/addon/smilies_adult/icons/finger.gif' . '" alt="' . ':finger' . '" />'; $b['icons'][] = '<img class="smiley" src="' . DI::baseUrl()->get() . '/addon/smilies_adult/icons/finger.gif' . '" alt="' . ':finger' . '" />';
}
}

View File

@ -18,7 +18,7 @@ function startpage_install() {
Hook::register('addon_settings_post', 'addon/startpage/startpage.php', 'startpage_settings_post'); Hook::register('addon_settings_post', 'addon/startpage/startpage.php', 'startpage_settings_post');
} }
function startpage_home_init($a, $b) function startpage_home_init(App $a, $b)
{ {
if (!local_user()) { if (!local_user()) {
return; return;
@ -40,7 +40,7 @@ function startpage_home_init($a, $b)
* *
*/ */
function startpage_settings_post($a, $post) function startpage_settings_post(App $a, $post)
{ {
if (!local_user()) { if (!local_user()) {
return; return;

View File

@ -1055,5 +1055,3 @@ class CodebirdSN
return $parsed; return $parsed;
} }
} }
?>

View File

@ -373,7 +373,7 @@ function statusnet_hook_fork(App $a, array &$b)
} }
} }
function statusnet_post_local(App $a, &$b) function statusnet_post_local(App $a, array &$b)
{ {
if ($b['edit']) { if ($b['edit']) {
return; return;
@ -430,7 +430,7 @@ function statusnet_action(App $a, $uid, $pid, $action)
Logger::info('statusnet_action "' . $action . '" send, result: ' . print_r($result, true)); Logger::info('statusnet_action "' . $action . '" send, result: ' . print_r($result, true));
} }
function statusnet_post_hook(App $a, &$b) function statusnet_post_hook(App $a, array &$b)
{ {
/** /**
* Post to GNU Social * Post to GNU Social
@ -661,7 +661,7 @@ function statusnet_addon_admin(App $a, &$o)
]); ]);
} }
function statusnet_prepare_body(App $a, &$b) function statusnet_prepare_body(App $a, array &$b)
{ {
if ($b['item']['network'] != Protocol::STATUSNET) { if ($b['item']['network'] != Protocol::STATUSNET) {
return; return;
@ -753,7 +753,7 @@ function statusnet_cron(App $a, $b)
DI::config()->set('statusnet', 'last_poll', time()); DI::config()->set('statusnet', 'last_poll', time());
} }
function statusnet_fetchtimeline(App $a, $uid) function statusnet_fetchtimeline(App $a, int $uid)
{ {
$ckey = DI::pConfig()->get($uid, 'statusnet', 'consumerkey'); $ckey = DI::pConfig()->get($uid, 'statusnet', 'consumerkey');
$csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret'); $csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret');
@ -1011,7 +1011,7 @@ function statusnet_fetchuser(App $a, $uid, $screen_name = '', $user_id = '')
return $contact_id; return $contact_id;
} }
function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_existing_contact) function statusnet_createpost(App $a, int $uid, $post, $self, $create_user, bool $only_existing_contact)
{ {
Logger::info('statusnet_createpost: start'); Logger::info('statusnet_createpost: start');
@ -1415,7 +1415,7 @@ function statusnet_convertmsg(App $a, $body)
return $body; return $body;
} }
function statusnet_fetch_own_contact(App $a, $uid) function statusnet_fetch_own_contact(App $a, int $uid)
{ {
$ckey = DI::pConfig()->get($uid, 'statusnet', 'consumerkey'); $ckey = DI::pConfig()->get($uid, 'statusnet', 'consumerkey');
$csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret'); $csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret');
@ -1450,7 +1450,7 @@ function statusnet_fetch_own_contact(App $a, $uid)
return $contact_id; return $contact_id;
} }
function statusnet_is_retweet(App $a, $uid, $body) function statusnet_is_retweet(App $a, int $uid, string $body)
{ {
$body = trim($body); $body = trim($body);

View File

@ -42,7 +42,7 @@ function superblock_addon_settings(App &$a, array &$data)
]; ];
} }
function superblock_addon_settings_post(&$a, &$b) function superblock_addon_settings_post(App $a, array &$b)
{ {
if (!local_user()) { if (!local_user()) {
return; return;
@ -53,7 +53,8 @@ function superblock_addon_settings_post(&$a, &$b)
} }
} }
function superblock_enotify_store(&$a,&$b) { function superblock_enotify_store(App $a, array &$b)
{
if (empty($b['uid'])) { if (empty($b['uid'])) {
return; return;
} }
@ -78,6 +79,7 @@ function superblock_enotify_store(&$a,&$b) {
} }
} }
} }
if ($found) { if ($found) {
// Empty out the fields // Empty out the fields
$b = []; $b = [];
@ -85,7 +87,7 @@ function superblock_enotify_store(&$a,&$b) {
} }
function superblock_conversation_start(&$a, &$b) function superblock_conversation_start(App $a, array &$b)
{ {
if (!local_user()) { if (!local_user()) {
return; return;
@ -95,8 +97,8 @@ function superblock_conversation_start(&$a, &$b)
if ($words) { if ($words) {
$a->data['superblock'] = explode(',', $words); $a->data['superblock'] = explode(',', $words);
} }
DI::page()['htmlhead'] .= <<< EOT
DI::page()['htmlhead'] .= <<< EOT
<script> <script>
function superblockBlock(author) { function superblockBlock(author) {
$.get('superblock?block=' +author, function(data) { $.get('superblock?block=' +author, function(data) {
@ -104,12 +106,11 @@ function superblockBlock(author) {
}); });
} }
</script> </script>
EOT; EOT;
} }
function superblock_item_photo_menu(&$a, &$b) function superblock_item_photo_menu(App $a, array &$b)
{ {
if (!local_user() || $b['item']['self']) { if (!local_user() || $b['item']['self']) {
return; return;
@ -129,10 +130,14 @@ function superblock_item_photo_menu(&$a, &$b)
$b['menu'][DI::l10n()->t('Block Completely')] = 'javascript:superblockBlock(\'' . $author . '\'); return false;'; $b['menu'][DI::l10n()->t('Block Completely')] = 'javascript:superblockBlock(\'' . $author . '\'); return false;';
} }
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function superblock_module() {} function superblock_module() {}
function superblock_init(App $a)
function superblock_init(&$a)
{ {
if (!local_user()) { if (!local_user()) {
return; return;

View File

@ -16,14 +16,13 @@ use Friendica\Model\User;
use Friendica\Core\Config\Util\ConfigFileLoader; use Friendica\Core\Config\Util\ConfigFileLoader;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
function testdrive_install() { function testdrive_install()
{
Hook::register('load_config', 'addon/testdrive/testdrive.php', 'testdrive_load_config'); Hook::register('load_config', 'addon/testdrive/testdrive.php', 'testdrive_load_config');
Hook::register('register_account', 'addon/testdrive/testdrive.php', 'testdrive_register_account'); Hook::register('register_account', 'addon/testdrive/testdrive.php', 'testdrive_register_account');
Hook::register('cron', 'addon/testdrive/testdrive.php', 'testdrive_cron'); Hook::register('cron', 'addon/testdrive/testdrive.php', 'testdrive_cron');
Hook::register('enotify','addon/testdrive/testdrive.php', 'testdrive_enotify'); Hook::register('enotify','addon/testdrive/testdrive.php', 'testdrive_enotify');
Hook::register('globaldir_update','addon/testdrive/testdrive.php', 'testdrive_globaldir_update'); Hook::register('globaldir_update','addon/testdrive/testdrive.php', 'testdrive_globaldir_update');
} }
function testdrive_load_config(App $a, ConfigFileLoader $loader) function testdrive_load_config(App $a, ConfigFileLoader $loader)
@ -31,26 +30,30 @@ function testdrive_load_config(App $a, ConfigFileLoader $loader)
$a->getConfigCache()->load($loader->loadAddonConfig('testdrive')); $a->getConfigCache()->load($loader->loadAddonConfig('testdrive'));
} }
function testdrive_globaldir_update($a,&$b) { function testdrive_globaldir_update(App $a, array &$b)
{
$b['url'] = ''; $b['url'] = '';
} }
function testdrive_register_account($a,$b) { function testdrive_register_account(App $a, $b)
{
$uid = $b; $uid = $b;
$days = DI::config()->get('testdrive','expiredays'); $days = DI::config()->get('testdrive','expiredays');
if(! $days) if (!$days) {
return; return;
}
DBA::update('user', ['account_expires_on' => DateTimeFormat::convert('now +' . $days . ' days')], ['uid' => $uid]); DBA::update('user', ['account_expires_on' => DateTimeFormat::convert('now +' . $days . ' days')], ['uid' => $uid]);
}; }
function testdrive_cron($a,$b) { function testdrive_cron(App $a, $b)
{
$users = DBA::selectToArray('user', [], ["`account_expires_on` < ? AND `expire_notification_sent` <= ?", $users = DBA::selectToArray('user', [], ["`account_expires_on` < ? AND `expire_notification_sent` <= ?",
DateTimeFormat::utc('now + 5 days'), DBA::NULL_DATETIME]); DateTimeFormat::utc('now + 5 days'), DBA::NULL_DATETIME]);
foreach($users as $rr) {
foreach ($users as $rr) {
DI::notify()->createFromArray([ DI::notify()->createFromArray([
'type' => Notification\Type::SYSTEM, 'type' => Notification\Type::SYSTEM,
'uid' => $rr['uid'], 'uid' => $rr['uid'],
@ -69,12 +72,13 @@ function testdrive_cron($a,$b) {
} }
} }
function testdrive_enotify(&$a, &$b) { function testdrive_enotify(App $a, array &$b)
if (!empty($b['params']) && $b['params']['type'] == Notification\Type::SYSTEM {
if (!empty($b['params']) && $b['params']['type'] == Notification\Type::SYSTEM
&& !empty($b['params']['system_type']) && $b['params']['system_type'] === 'testdrive_expire') { && !empty($b['params']['system_type']) && $b['params']['system_type'] === 'testdrive_expire') {
$b['itemlink'] = DI::baseUrl()->get(); $b['itemlink'] = DI::baseUrl()->get();
$b['epreamble'] = $b['preamble'] = DI::l10n()->t('Your account on %s will expire in a few days.', DI::config()->get('system', 'sitename')); $b['epreamble'] = $b['preamble'] = DI::l10n()->t('Your account on %s will expire in a few days.', DI::config()->get('system', 'sitename'));
$b['subject'] = DI::l10n()->t('Your Friendica test account is about to expire.'); $b['subject'] = DI::l10n()->t('Your Friendica test account is about to expire.');
$b['body'] = DI::l10n()->t("Hi %1\$s,\n\nYour test account on %2\$s will expire in less than five days. We hope you enjoyed this test drive and use this opportunity to find a permanent Friendica website for your integrated social communications. A list of public sites is available at %s/siteinfo - and for more information on setting up your own Friendica server please see the Friendica project website at https://friendi.ca.", $b['params']['to_name'], "[url=".DI::config()->get('system', 'url')."]".DI::config()->get('config', 'sitename')."[/url]", Search::getGlobalDirectory()); $b['body'] = DI::l10n()->t("Hi %1\$s,\n\nYour test account on %2\$s will expire in less than five days. We hope you enjoyed this test drive and use this opportunity to find a permanent Friendica website for your integrated social communications. A list of public sites is available at %s/siteinfo - and for more information on setting up your own Friendica server please see the Friendica project website at https://friendi.ca.", $b['params']['to_name'], "[url=".DI::config()->get('system', 'url')."]".DI::config()->get('config', 'sitename')."[/url]", Search::getGlobalDirectory());
} }
} }

View File

@ -5,27 +5,29 @@
* Version: 1.0 * Version: 1.0
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike> * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
function tictac_install() { function tictac_install()
{
Hook::register('app_menu', 'addon/tictac/tictac.php', 'tictac_app_menu'); Hook::register('app_menu', 'addon/tictac/tictac.php', 'tictac_app_menu');
} }
function tictac_app_menu($a,&$b) { function tictac_app_menu(App $a, array &$b)
{
$b['app_menu'][] = '<div class="app-title"><a href="tictac">' . DI::l10n()->t('Three Dimensional Tic-Tac-Toe') . '</a></div>'; $b['app_menu'][] = '<div class="app-title"><a href="tictac">' . DI::l10n()->t('Three Dimensional Tic-Tac-Toe') . '</a></div>';
} }
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function tictac_module() {}
function tictac_module() { function tictac_content(App $a) {
return;
}
function tictac_content(&$a) {
$o = ''; $o = '';

View File

@ -29,13 +29,16 @@ function tumblr_install()
Hook::register('connector_settings_post', 'addon/tumblr/tumblr.php', 'tumblr_settings_post'); Hook::register('connector_settings_post', 'addon/tumblr/tumblr.php', 'tumblr_settings_post');
} }
function tumblr_module() /**
{ * This is a statement rather than an actual function definition. The simple
} * existence of this method is checked to figure out if the addon offers a
* module.
*/
function tumblr_module() {}
function tumblr_content(App $a) function tumblr_content(App $a)
{ {
if (! local_user()) { if (!local_user()) {
notice(DI::l10n()->t('Permission denied.') . EOL); notice(DI::l10n()->t('Permission denied.') . EOL);
return ''; return '';
} }
@ -182,7 +185,7 @@ function tumblr_callback(App $a)
function tumblr_jot_nets(App $a, array &$jotnets_fields) function tumblr_jot_nets(App $a, array &$jotnets_fields)
{ {
if (! local_user()) { if (!local_user()) {
return; return;
} }
@ -257,7 +260,7 @@ function tumblr_settings_post(App $a, array &$b)
} }
} }
function tumblr_hook_fork(&$a, &$b) function tumblr_hook_fork(App $a, array &$b)
{ {
if ($b['name'] != 'notifier_normal') { if ($b['name'] != 'notifier_normal') {
return; return;

View File

@ -1149,7 +1149,7 @@ function twitter_parse_link(App $a, array &$b)
* *
* @return array item data to be posted * @return array item data to be posted
*/ */
function twitter_do_mirrorpost(App $a, $uid, $post) function twitter_do_mirrorpost(App $a, int $uid, $post)
{ {
$datarray['uid'] = $uid; $datarray['uid'] = $uid;
$datarray['extid'] = 'twitter::' . $post->id; $datarray['extid'] = 'twitter::' . $post->id;
@ -1196,7 +1196,7 @@ function twitter_do_mirrorpost(App $a, $uid, $post)
return $datarray; return $datarray;
} }
function twitter_fetchtimeline(App $a, $uid) function twitter_fetchtimeline(App $a, int $uid)
{ {
$ckey = DI::config()->get('twitter', 'consumerkey'); $ckey = DI::config()->get('twitter', 'consumerkey');
$csecret = DI::config()->get('twitter', 'consumersecret'); $csecret = DI::config()->get('twitter', 'consumersecret');
@ -1592,16 +1592,16 @@ function twitter_expand_entities($body, stdClass $status)
/** /**
* Store entity attachments * Store entity attachments
* *
* @param integer $uriid * @param integer $uriId
* @param object $post Twitter object with the post * @param object $post Twitter object with the post
*/ */
function twitter_store_attachments(int $uriid, $post) function twitter_store_attachments(int $uriId, $post)
{ {
if (!empty($post->extended_entities->media)) { if (!empty($post->extended_entities->media)) {
foreach ($post->extended_entities->media AS $medium) { foreach ($post->extended_entities->media AS $medium) {
switch ($medium->type) { switch ($medium->type) {
case 'photo': case 'photo':
$attachment = ['uri-id' => $uriid, 'type' => Post\Media::IMAGE]; $attachment = ['uri-id' => $uriId, 'type' => Post\Media::IMAGE];
$attachment['url'] = $medium->media_url_https . '?name=large'; $attachment['url'] = $medium->media_url_https . '?name=large';
$attachment['width'] = $medium->sizes->large->w; $attachment['width'] = $medium->sizes->large->w;
@ -1620,7 +1620,7 @@ function twitter_store_attachments(int $uriid, $post)
break; break;
case 'video': case 'video':
case 'animated_gif': case 'animated_gif':
$attachment = ['uri-id' => $uriid, 'type' => Post\Media::VIDEO]; $attachment = ['uri-id' => $uriId, 'type' => Post\Media::VIDEO];
if (is_array($medium->video_info->variants)) { if (is_array($medium->video_info->variants)) {
$bitrate = 0; $bitrate = 0;
// We take the video with the highest bitrate // We take the video with the highest bitrate
@ -1648,7 +1648,7 @@ function twitter_store_attachments(int $uriid, $post)
if (!empty($post->entities->urls)) { if (!empty($post->entities->urls)) {
foreach ($post->entities->urls as $url) { foreach ($post->entities->urls as $url) {
$attachment = ['uri-id' => $uriid, 'type' => Post\Media::UNKNOWN, 'url' => $url->expanded_url, 'name' => $url->display_url]; $attachment = ['uri-id' => $uriId, 'type' => Post\Media::UNKNOWN, 'url' => $url->expanded_url, 'name' => $url->display_url];
Logger::debug('Attached link', ['attachment' => $attachment]); Logger::debug('Attached link', ['attachment' => $attachment]);
Post\Media::insert($attachment); Post\Media::insert($attachment);
} }
@ -1660,9 +1660,9 @@ function twitter_store_attachments(int $uriid, $post)
* *
* @param object $post Twitter object with the post * @param object $post Twitter object with the post
* @param array $postarray Array of the item that is about to be posted * @param array $postarray Array of the item that is about to be posted
* @param integer $uriid URI Id used to store tags. -1 = don't store tags for this post. * @param integer $uriId URI Id used to store tags. -1 = don't store tags for this post.
*/ */
function twitter_media_entities($post, array &$postarray, int $uriid = -1) function twitter_media_entities($post, array &$postarray, int $uriId = -1)
{ {
// There are no media entities? So we quit. // There are no media entities? So we quit.
if (empty($post->extended_entities->media)) { if (empty($post->extended_entities->media)) {
@ -1714,7 +1714,7 @@ function twitter_media_entities($post, array &$postarray, int $uriid = -1)
} }
} }
if ($uriid != -1) { if ($uriId != -1) {
foreach ($media AS $key => $value) { foreach ($media AS $key => $value) {
$postarray['body'] = str_replace($key, '', $postarray['body']); $postarray['body'] = str_replace($key, '', $postarray['body']);
} }
@ -1737,10 +1737,10 @@ function twitter_media_entities($post, array &$postarray, int $uriid = -1)
* @param bool $create_user Should users be created? * @param bool $create_user Should users be created?
* @param bool $only_existing_contact Only import existing contacts if set to "true" * @param bool $only_existing_contact Only import existing contacts if set to "true"
* @param bool $noquote * @param bool $noquote
* @param integer $uriid URI Id used to store tags. 0 = create a new one; -1 = don't store tags for this post. * @param integer $uriId URI Id used to store tags. 0 = create a new one; -1 = don't store tags for this post.
* @return array item array * @return array item array
*/ */
function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $only_existing_contact, $noquote, int $uriid = 0) function twitter_createpost(App $a, int $uid, $post, array $self, $create_user, bool $only_existing_contact, bool $noquote, int $uriId = 0): array
{ {
$postarray = []; $postarray = [];
$postarray['network'] = Protocol::TWITTER; $postarray['network'] = Protocol::TWITTER;
@ -1751,8 +1751,8 @@ function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $onl
$postarray['source'] = json_encode($post); $postarray['source'] = json_encode($post);
$postarray['direction'] = Conversation::PULL; $postarray['direction'] = Conversation::PULL;
if (empty($uriid)) { if (empty($uriId)) {
$uriid = $postarray['uri-id'] = ItemURI::insert(['uri' => $postarray['uri']]); $uriId = $postarray['uri-id'] = ItemURI::insert(['uri' => $postarray['uri']]);
} }
// Don't import our own comments // Don't import our own comments
@ -1845,7 +1845,7 @@ function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $onl
} }
// Search for media links // Search for media links
twitter_media_entities($post, $postarray, $uriid); twitter_media_entities($post, $postarray, $uriId);
$converted = twitter_expand_entities($postarray['body'], $post); $converted = twitter_expand_entities($postarray['body'], $post);
@ -1858,9 +1858,9 @@ function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $onl
$postarray['created'] = DateTimeFormat::utc($post->created_at); $postarray['created'] = DateTimeFormat::utc($post->created_at);
$postarray['edited'] = DateTimeFormat::utc($post->created_at); $postarray['edited'] = DateTimeFormat::utc($post->created_at);
if ($uriid > 0) { if ($uriId > 0) {
twitter_store_tags($uriid, $converted['taglist']); twitter_store_tags($uriId, $converted['taglist']);
twitter_store_attachments($uriid, $post); twitter_store_attachments($uriId, $post);
} }
if (!empty($post->place->name)) { if (!empty($post->place->name)) {
@ -1916,7 +1916,7 @@ function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $onl
if (!empty($quoted['body'])) { if (!empty($quoted['body'])) {
Item::insert($quoted); Item::insert($quoted);
$post = Post::selectFirst(['guid', 'uri-id'], ['uri' => $quoted['uri'], 'uid' => 0]); $post = Post::selectFirst(['guid', 'uri-id'], ['uri' => $quoted['uri'], 'uid' => 0]);
Logger::info('Stored quoted post', ['uid' => $uid, 'uri-id' => $uriid, 'post' => $post]); Logger::info('Stored quoted post', ['uid' => $uid, 'uri-id' => $uriId, 'post' => $post]);
$postarray['body'] .= "\n" . BBCode::getShareOpeningTag( $postarray['body'] .= "\n" . BBCode::getShareOpeningTag(
$quoted['author-name'], $quoted['author-name'],
@ -1941,17 +1941,18 @@ function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $onl
/** /**
* Store tags and mentions * Store tags and mentions
* *
* @param integer $uriid * @param integer $uriId
* @param array $taglist * @param array $taglist
* @return void
*/ */
function twitter_store_tags(int $uriid, array $taglist) function twitter_store_tags(int $uriId, array $taglist)
{ {
foreach ($taglist as $tag) { foreach ($taglist as $tag) {
Tag::storeByHash($uriid, $tag[0], $tag[1], $tag[2]); Tag::storeByHash($uriId, $tag[0], $tag[1], $tag[2]);
} }
} }
function twitter_fetchparentposts(App $a, $uid, $post, TwitterOAuth $connection, array $self) function twitter_fetchparentposts(App $a, int $uid, $post, TwitterOAuth $connection, array $self)
{ {
Logger::info('Fetching parent posts', ['user' => $uid, 'post' => $post->id_str]); Logger::info('Fetching parent posts', ['user' => $uid, 'post' => $post->id_str]);
@ -2003,7 +2004,7 @@ function twitter_fetchparentposts(App $a, $uid, $post, TwitterOAuth $connection,
} }
} }
function twitter_fetchhometimeline(App $a, $uid) function twitter_fetchhometimeline(App $a, int $uid)
{ {
$ckey = DI::config()->get('twitter', 'consumerkey'); $ckey = DI::config()->get('twitter', 'consumerkey');
$csecret = DI::config()->get('twitter', 'consumersecret'); $csecret = DI::config()->get('twitter', 'consumersecret');
@ -2192,7 +2193,7 @@ function twitter_fetchhometimeline(App $a, $uid)
Logger::info('Last mentions ID for user ' . $uid . ' is now ' . $lastid); Logger::info('Last mentions ID for user ' . $uid . ' is now ' . $lastid);
} }
function twitter_fetch_own_contact(App $a, $uid) function twitter_fetch_own_contact(App $a, int $uid)
{ {
$ckey = DI::config()->get('twitter', 'consumerkey'); $ckey = DI::config()->get('twitter', 'consumerkey');
$csecret = DI::config()->get('twitter', 'consumersecret'); $csecret = DI::config()->get('twitter', 'consumersecret');
@ -2228,7 +2229,7 @@ function twitter_fetch_own_contact(App $a, $uid)
return $contact_id; return $contact_id;
} }
function twitter_is_retweet(App $a, $uid, $body) function twitter_is_retweet(App $a, int $uid, string $body): bool
{ {
$body = trim($body); $body = trim($body);
@ -2267,7 +2268,7 @@ function twitter_is_retweet(App $a, $uid, $body)
return twitter_retweet($uid, $id); return twitter_retweet($uid, $id);
} }
function twitter_retweet(int $uid, int $id, int $item_id = 0) function twitter_retweet(int $uid, int $id, int $item_id = 0): bool
{ {
Logger::info('Retweeting', ['user' => $uid, 'id' => $id]); Logger::info('Retweeting', ['user' => $uid, 'id' => $id]);
@ -2283,7 +2284,7 @@ function twitter_retweet(int $uid, int $id, int $item_id = 0)
return !isset($result->errors); return !isset($result->errors);
} }
function twitter_update_mentions($body) function twitter_update_mentions(string $body): string
{ {
$URLSearchString = '^\[\]'; $URLSearchString = '^\[\]';
$return = preg_replace_callback( $return = preg_replace_callback(
@ -2303,7 +2304,7 @@ function twitter_update_mentions($body)
return $return; return $return;
} }
function twitter_convert_share(array $attributes, array $author_contact, $content, $is_quote_share) function twitter_convert_share(array $attributes, array $author_contact, string $content, bool $is_quote_share): string
{ {
if (empty($author_contact)) { if (empty($author_contact)) {
return $content . "\n\n" . $attributes['link']; return $content . "\n\n" . $attributes['link'];

View File

@ -6,6 +6,8 @@
* Author: Michael Vogel <http://pirati.ca/profile/heluecht> * Author: Michael Vogel <http://pirati.ca/profile/heluecht>
* Author: Matthias Ebers <https://loma.ml/profile/one> * Author: Matthias Ebers <https://loma.ml/profile/one>
*/ */
use Friendica\App;
use Friendica\Content\Smilies; use Friendica\Content\Smilies;
use Friendica\Core\Hook; use Friendica\Core\Hook;
@ -13,7 +15,8 @@ function unicode_smilies_install() {
Hook::register('smilie', 'addon/unicode_smilies/unicode_smilies.php', 'unicode_smilies_smilies'); Hook::register('smilie', 'addon/unicode_smilies/unicode_smilies.php', 'unicode_smilies_smilies');
} }
function unicode_smilies_smilies(&$a,&$b) { function unicode_smilies_smilies(App $a, array &$b)
{
Smilies::add($b, ':-)', '&#x1F600;'); Smilies::add($b, ':-)', '&#x1F600;');
Smilies::add($b, ':)', '&#x1F600;'); Smilies::add($b, ':)', '&#x1F600;');
Smilies::add($b, ':-(', '&#x1F641;'); Smilies::add($b, ':-(', '&#x1F641;');

View File

@ -6,6 +6,8 @@
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike> * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
* *
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\DI; use Friendica\DI;
@ -14,7 +16,7 @@ function viewsrc_install() {
Hook::register('page_end', 'addon/viewsrc/viewsrc.php', 'viewsrc_page_end'); Hook::register('page_end', 'addon/viewsrc/viewsrc.php', 'viewsrc_page_end');
} }
function viewsrc_page_end(&$a, &$o){ function viewsrc_page_end(App $a, &$o){
DI::page()['htmlhead'] .= <<< EOS DI::page()['htmlhead'] .= <<< EOS
<script> <script>
$(function(){ $(function(){
@ -26,7 +28,7 @@ function viewsrc_page_end(&$a, &$o){
EOS; EOS;
} }
function viewsrc_item_photo_menu(&$a, &$b) function viewsrc_item_photo_menu(App $a, array &$b)
{ {
if (!local_user()) { if (!local_user()) {
return; return;

View File

@ -6,50 +6,58 @@
* Author: Stephen Mahood <https://friends.mayfirst.org/profile/marxistvegan> * Author: Stephen Mahood <https://friends.mayfirst.org/profile/marxistvegan>
* Author: Tobias Diekershoff <https://f.diekershoff.de/profile/tobias> * Author: Tobias Diekershoff <https://f.diekershoff.de/profile/tobias>
*/ */
use Friendica\App;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\DI; use Friendica\DI;
function webrtc_install() { function webrtc_install() {
Hook::register('app_menu', 'addon/webrtc/webrtc.php', 'webrtc_app_menu'); Hook::register('app_menu', 'addon/webrtc/webrtc.php', 'webrtc_app_menu');
} }
function webrtc_app_menu($a,&$b) { function webrtc_app_menu(App $a, array &$b)
{
$b['app_menu'][] = '<div class="app-title"><a href="webrtc">' . DI::l10n()->t('WebRTC Videochat') . '</a></div>'; $b['app_menu'][] = '<div class="app-title"><a href="webrtc">' . DI::l10n()->t('WebRTC Videochat') . '</a></div>';
} }
function webrtc_addon_admin (&$a, &$o) { function webrtc_addon_admin (App $a, &$o)
$t = Renderer::getMarkupTemplate( "admin.tpl", "addon/webrtc/" ); {
$t = Renderer::getMarkupTemplate( "admin.tpl", "addon/webrtc/" );
$o = Renderer::replaceMacros( $t, [ $o = Renderer::replaceMacros( $t, [
'$submit' => DI::l10n()->t('Save Settings'), '$submit' => DI::l10n()->t('Save Settings'),
'$webrtcurl' => ['webrtcurl', DI::l10n()->t('WebRTC Base URL'), DI::config()->get('webrtc','webrtcurl' ), DI::l10n()->t('Page your users will create a WebRTC chat room on. For example you could use https://live.mayfirst.org .')], '$webrtcurl' => ['webrtcurl', DI::l10n()->t('WebRTC Base URL'), DI::config()->get('webrtc','webrtcurl' ), DI::l10n()->t('Page your users will create a WebRTC chat room on. For example you could use https://live.mayfirst.org .')],
]); ]);
} }
function webrtc_addon_admin_post (&$a) {
$url = trim($_POST['webrtcurl'] ?? ''); function webrtc_addon_admin_post (App $a)
DI::config()->set('webrtc', 'webrtcurl', $url); {
$url = trim($_POST['webrtcurl'] ?? '');
DI::config()->set('webrtc', 'webrtcurl', $url);
} }
function webrtc_module() { /**
return; * This is a statement rather than an actual function definition. The simple
} * existence of this method is checked to figure out if the addon offers a
* module.
*/
function webrtc_module() {}
function webrtc_content(&$a) { function webrtc_content(App $a)
$o = ''; {
$o = '';
/* landingpage to create chatrooms */ /* landingpage to create chatrooms */
$webrtcurl = DI::config()->get('webrtc','webrtcurl'); $webrtcurl = DI::config()->get('webrtc','webrtcurl');
/* embedd the landing page in an iframe */ /* embedd the landing page in an iframe */
$o .= '<h2>'.DI::l10n()->t('Video Chat').'</h2>'; $o .= '<h2>'.DI::l10n()->t('Video Chat').'</h2>';
$o .= '<p>'.DI::l10n()->t('WebRTC is a video and audio conferencing tool that works in all modern browsers. Just create a new chat room and send the link to someone you want to chat with.').'</p>'; $o .= '<p>'.DI::l10n()->t('WebRTC is a video and audio conferencing tool that works in all modern browsers. Just create a new chat room and send the link to someone you want to chat with.').'</p>';
if ($webrtcurl == '') { if ($webrtcurl == '') {
$o .= '<p>'.DI::l10n()->t('Please contact your friendica admin and send a reminder to configure the WebRTC addon.').'</p>'; $o .= '<p>'.DI::l10n()->t('Please contact your friendica admin and send a reminder to configure the WebRTC addon.').'</p>';
} else { } else {
$o .= '<iframe src="'.$webrtcurl.'" width="600px" height="600px"></iframe>'; $o .= '<iframe src="'.$webrtcurl.'" width="600px" height="600px"></iframe>';
} }
return $o;
return $o;
} }
?>

View File

@ -60,17 +60,19 @@ function windowsphonepush_install()
} }
/* declare the windowsphonepush function so that /windowsphonepush url requests will land here */ /* declare the windowsphonepush function so that /windowsphonepush url requests will land here */
function windowsphonepush_module() /**
{ * This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
} * module.
*/
function windowsphonepush_module() {}
/* Callback from the settings post function. /* Callback from the settings post function.
* $post contains the $_POST array. * $post contains the $_POST array.
* We will make sure we've got a valid user account * We will make sure we've got a valid user account
* and if so set our configuration setting for this person. * and if so set our configuration setting for this person.
*/ */
function windowsphonepush_settings_post($a, $post) function windowsphonepush_settings_post(App $a, $post)
{ {
if (!local_user() || empty($_POST['windowsphonepush-submit'])) { if (!local_user() || empty($_POST['windowsphonepush-submit'])) {
return; return;

View File

@ -82,7 +82,7 @@ function wppost_settings(App &$a, array &$data)
} }
function wppost_settings_post(&$a, &$b) function wppost_settings_post(App $a, array &$b)
{ {
if(!empty($_POST['wppost-submit'])) { if(!empty($_POST['wppost-submit'])) {
DI::pConfig()->set(local_user(), 'wppost', 'post' , intval($_POST['wppost'])); DI::pConfig()->set(local_user(), 'wppost', 'post' , intval($_POST['wppost']));
@ -98,7 +98,7 @@ function wppost_settings_post(&$a, &$b)
} }
} }
function wppost_hook_fork(&$a, &$b) function wppost_hook_fork(App $a, array &$b)
{ {
if ($b['name'] != 'notifier_normal') { if ($b['name'] != 'notifier_normal') {
return; return;
@ -113,7 +113,7 @@ function wppost_hook_fork(&$a, &$b)
} }
} }
function wppost_post_local(&$a, &$b) { function wppost_post_local(App $a, array &$b) {
// This can probably be changed to allow editing by pointing to a different API endpoint // This can probably be changed to allow editing by pointing to a different API endpoint
@ -151,7 +151,7 @@ function wppost_post_local(&$a, &$b) {
function wppost_send(&$a, &$b) function wppost_send(App $a, array &$b)
{ {
if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) { if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) {
return; return;