diff --git a/addon/randplace/randplace.php b/addon/randplace/randplace.php index e14ae74c7c..2e1bd33ac2 100644 --- a/addon/randplace/randplace.php +++ b/addon/randplace/randplace.php @@ -36,13 +36,13 @@ function randplace_install() { /** * - * Then we'll attach into the settings page, on both the - * form and post hooks so that we can create and update + * Then we'll attach into the plugin settings page, and also the + * settings post hook so that we can create and update * user preferences. * */ - register_hook('settings_form', 'addon/randplace/randplace.php', 'randplace_settings'); + register_hook('plugin_settings', 'addon/randplace/randplace.php', 'randplace_settings'); register_hook('settings_post', 'addon/randplace/randplace.php', 'randplace_settings_post'); logger("installed randplace"); @@ -60,7 +60,7 @@ function randplace_uninstall() { */ unregister_hook('post_local', 'addon/randplace/randplace.php', 'randplace_post_hook'); - unregister_hook('settings_form', 'addon/randplace/randplace.php', 'randplace_settings'); + unregister_hook('plugin_settings', 'addon/randplace/randplace.php', 'randplace_settings'); unregister_hook('settings_post', 'addon/randplace/randplace.php', 'randplace_settings_post'); @@ -142,7 +142,8 @@ function randplace_settings_post($a,$post) { /** - * Called from the end of the settings form. + * + * Called from the Plugin Setting form. * Add our own settings info to the page. * */ @@ -154,7 +155,7 @@ function randplace_settings(&$a,&$s) { if(! local_user()) return; - /* Add our stylesheet so we can match the page layout */ + /* Add our stylesheet to the page so we can make our settings look nice */ $a->page['htmlhead'] .= '' . "\r\n"; @@ -164,7 +165,7 @@ function randplace_settings(&$a,&$s) { $checked = (($enabled) ? ' checked="checked" ' : ''); - /* Add some HTML to the form */ + /* Add some HTML to the existing form */ $s .= '

' . t('Randplace Settings') . '

'; $s .= '
'; @@ -172,7 +173,7 @@ function randplace_settings(&$a,&$s) { $s .= ''; $s .= '
'; - /* provide another submit button */ + /* provide a submit button */ $s .= '
'; diff --git a/boot.php b/boot.php index c340028093..7b7adba828 100644 --- a/boot.php +++ b/boot.php @@ -2047,7 +2047,7 @@ function profile_sidebar($profile) { if(! function_exists('register_hook')) { function register_hook($hook,$file,$function) { - $r = q("SELECT FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s' LIMIT 1", + $r = q("SELECT * FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s' LIMIT 1", dbesc($hook), dbesc($file), dbesc($function) diff --git a/include/auth.php b/include/auth.php index fe09ef1604..bc77e5dbc0 100644 --- a/include/auth.php +++ b/include/auth.php @@ -132,17 +132,38 @@ else { } if((x($_POST,'auth-params')) && $_POST['auth-params'] === 'login') { - // process login request - $r = q("SELECT * FROM `user` - WHERE ( `email` = '%s' OR `nickname` = '%s' ) AND `password` = '%s' AND `blocked` = 0 AND `verified` = 1 LIMIT 1", - dbesc(trim($_POST['openid_url'])), - dbesc(trim($_POST['openid_url'])), - dbesc($encrypted)); - if(($r === false) || (! count($r))) { - notice( t('Login failed.') . EOL ); - goaway($a->get_baseurl()); - } + $addon_auth = array( + 'name' => trim($_POST['openid_url']), + 'password' => trim($_POST['password']), + 'authenticated' => 0 + ); + + /** + * + * A plugin indicates successful login by setting 'authenticated' to non-zero value + * Plugins should never set 'authenticated' except to indicate success - as hooks may be chained + * and later plugins should not interfere with an earlier one that succeeded. + * + */ + + call_hooks('authenticate', $addon_auth); + + if(! $addon_auth['authenticated']) { + // process login request + + $r = q("SELECT * FROM `user` WHERE ( `email` = '%s' OR `nickname` = '%s' ) + AND `password` = '%s' AND `blocked` = 0 AND `verified` = 1 LIMIT 1", + dbesc(trim($_POST['openid_url'])), + dbesc(trim($_POST['openid_url'])), + dbesc($encrypted) + ); + if(($r === false) || (! count($r))) { + notice( t('Login failed.') . EOL ); + goaway($a->get_baseurl()); + } + } + $_SESSION['uid'] = $r[0]['uid']; $_SESSION['theme'] = $r[0]['theme']; $_SESSION['authenticated'] = 1; @@ -167,6 +188,8 @@ else { intval($_SESSION['uid']) ); + call_hooks('logged_in', $a->user); + header('X-Account-Management-Status: active; name="' . $a->user['username'] . '"; id="' . $a->user['nickname'] .'"'); if(($a->module !== 'home') && isset($_SESSION['return_url'])) goaway($a->get_baseurl() . '/' . $_SESSION['return_url']); diff --git a/include/items.php b/include/items.php index 75445ee495..c00ec93ae3 100644 --- a/include/items.php +++ b/include/items.php @@ -158,7 +158,12 @@ function get_feed_for(&$a, $dfrn_id, $owner_id, $last_update, $direction = 0) { )); + call_hooks('atom_feed', $atom); + if(! count($items)) { + + call_hooks('atom_feed_end', $atom); + $atom .= '' . "\r\n"; return $atom; } @@ -177,7 +182,10 @@ function get_feed_for(&$a, $dfrn_id, $owner_id, $last_update, $direction = 0) { $atom .= atom_entry($item,$type,null,$owner,true); } + call_hooks('atom_feed_end', $atom); + $atom .= '' . "\r\n"; + return $atom; } @@ -491,6 +499,8 @@ function get_atom_elements($feed,$item) { $res['target'] .= '' . "\n"; } +// call_hooks('parse_atom', array('feed' => $feed, 'item' => $item, 'result' => $res)); + return $res; } @@ -1231,6 +1241,9 @@ function atom_author($tag,$name,$uri,$h,$w,$photo) { $o .= "$uri\r\n"; $o .= '' . "\r\n"; $o .= '' . "\r\n"; + + call_hooks('atom_author', $o); + $o .= "\r\n"; return $o; } @@ -1287,6 +1300,8 @@ function atom_entry($item,$type,$author,$owner,$comment = false) { if($mentioned) $o .= $mentioned; + call_hooks('atom_entry', $o); + $o .= '' . "\r\n"; return $o; diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php index a8c27efc17..22d2ee40fb 100644 --- a/mod/dfrn_poll.php +++ b/mod/dfrn_poll.php @@ -1,11 +1,14 @@ Creative Commons Attribution 3.0 license.'); + + $o = load_view_file("view/register.tpl"); $o = replace_macros($o, array( '$oidhtml' => $oidhtml, @@ -377,6 +380,7 @@ function register_content(&$a) { '$username' => $username, '$email' => $email, '$nickname' => $nickname, + '$license' => $license, '$sitename' => $a->get_hostname() )); return $o; diff --git a/mod/settings.php b/mod/settings.php index b10f9e3fc0..000258db91 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -17,6 +17,9 @@ function settings_post(&$a) { call_hooks('settings_post', $_POST); + if(($a->argc > 1) && ($a->argv[1] == 'addon')) + return; + if(count($a->user) && x($a->user,'uid') && $a->user['uid'] != local_user()) { notice( t('Permission denied.') . EOL); return; @@ -182,6 +185,21 @@ function settings_content(&$a) { return; } + if(($a->argc > 1) && ($a->argv[1] === 'addon')) { + $o .= '

' . t('Plugin Settings') . '

'; + $o .= ''; + + $o .= '
'; + + $r = q("SELECT * FROM `hook` WHERE `hook` = 'plugin_settings' "); + if(! count($r)) + notice('No Plugin settings configured'); + + call_hooks('plugin_settings', $o); + $o .= '
'; + return $o; + } + require_once('include/acl_selectors.php'); $p = q("SELECT * FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1", diff --git a/util/strings.php b/util/strings.php index 6e6c4b27cb..f42449690d 100644 --- a/util/strings.php +++ b/util/strings.php @@ -4,7 +4,6 @@ $a->strings['Page not found.' ] = 'Page not found.' ; $a->strings['Permission denied'] = 'Permission denied'; $a->strings['Permission denied.'] = 'Permission denied.'; $a->strings['Nickname or Email address: '] = 'Nickname or Email address: '; -$a->strings['Welcome to '] = 'Welcome to '; $a->strings['Password: '] = 'Password: '; $a->strings['Login'] = 'Login'; $a->strings['Nickname/Email/OpenID: '] = 'Nickname/Email/OpenID: '; @@ -84,6 +83,7 @@ $a->strings['Remote site reported: '] = 'Remote site reported: '; $a->strings["Temporary failure. Please wait and try again."] = "Temporary failure. Please wait and try again."; $a->strings["Introduction failed or was revoked."] = "Introduction failed or was revoked."; $a->strings['Unable to set contact photo.'] = 'Unable to set contact photo.'; +$a->strings['is now friends with'] = 'is now friends with'; $a->strings['No user record found for '] = 'No user record found for '; $a->strings['Our site encryption key is apparently messed up.'] = 'Our site encryption key is apparently messed up.'; $a->strings['Empty site URL was provided or URL could not be decrypted by us.'] = 'Empty site URL was provided or URL could not be decrypted by us.'; @@ -108,6 +108,9 @@ $a->strings["not found at the given location."] = "not found at the given locati $a->strings["Introduction complete."] = "Introduction complete."; $a->strings['Unrecoverable protocol error.'] = 'Unrecoverable protocol error.'; $a->strings['Profile unavailable.'] = 'Profile unavailable.'; +$a->strings[' has received too many connection requests today.'] = ' has received too many connection requests today.'; +$a->strings['Spam protection measures have been invoked.'] = 'Spam protection measures have been invoked.'; +$a->strings['Friends are advised to please try again in 24 hours.'] = 'Friends are advised to please try again in 24 hours.'; $a->strings["Invalid locator"] = "Invalid locator"; $a->strings["Unable to resolve your name at the provided location."] = "Unable to resolve your name at the provided location."; $a->strings['You have already introduced yourself here.'] = 'You have already introduced yourself here.'; @@ -149,11 +152,12 @@ $a->strings['Membership list updated.'] = 'Membership list updated.'; $a->strings['Group removed.'] = 'Group removed.'; $a->strings['Unable to remove group.'] = 'Unable to remove group.'; $a->strings['Delete'] = 'Delete'; +$a->strings["Welcome to "] = "Welcome to "; $a->strings['Could not create/connect to database.'] = 'Could not create/connect to database.'; $a->strings['Connected to database.'] = 'Connected to database.'; $a->strings['Database import succeeded.'] = 'Database import succeeded.'; $a->strings['IMPORTANT: You will need to [manually] setup a scheduled task for the poller.'] = 'IMPORTANT: You will need to [manually] setup a scheduled task for the poller.'; -$a->strings['Please see the file INSTALL.'] = 'Please see the file INSTALL.'; +$a->strings['Please see the file "INSTALL.txt".'] = 'Please see the file "INSTALL.txt".'; $a->strings['Database import failed.'] = 'Database import failed.'; $a->strings['You may need to import the file "database.sql" manually using phpmyadmin or mysql.'] = 'You may need to import the file "database.sql" manually using phpmyadmin or mysql.'; $a->strings['Welcome to Friendika.'] = 'Welcome to Friendika.'; @@ -163,16 +167,16 @@ $a->strings['This is required. Please adjust the configuration file .htconfig.ph $a->strings['The command line version of PHP on your system does not have "register_argc_argv" enabled.'] = 'The command line version of PHP on your system does not have "register_argc_argv" enabled.'; $a->strings['This is required for message delivery to work.'] = 'This is required for message delivery to work.'; $a->strings['Error: the "openssl_pkey_new" function on this system is not able to generate encryption keys'] = 'Error: the "openssl_pkey_new" function on this system is not able to generate encryption keys'; +$a->strings['If running under Windows, please see "http://www.php.net/manual/en/openssl.installation.php".'] = 'If running under Windows, please see "http://www.php.net/manual/en/openssl.installation.php".'; $a->strings['Error: Apache webserver mod-rewrite module is required but not installed.'] = 'Error: Apache webserver mod-rewrite module is required but not installed.'; $a->strings['Error: libCURL PHP module required but not installed.'] = 'Error: libCURL PHP module required but not installed.'; $a->strings['Error: GD graphics PHP module with JPEG support required but not installed.'] = 'Error: GD graphics PHP module with JPEG support required but not installed.'; $a->strings['Error: openssl PHP module required but not installed.'] = 'Error: openssl PHP module required but not installed.'; $a->strings['Error: mysqli PHP module required but not installed.'] = 'Error: mysqli PHP module required but not installed.'; -$a->strings['Please see the file "INSTALL".'] = 'Please see the file "INSTALL".'; $a->strings['The web installer needs to be able to create a file called ".htconfig.php" in the top folder of your web server and it is unable to do so.'] = 'The web installer needs to be able to create a file called ".htconfig.php" in the top folder of your web server and it is unable to do so.'; $a->strings['This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can.'] = 'This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can.'; $a->strings['Please check with your site documentation or support people to see if this situation can be corrected.'] = 'Please check with your site documentation or support people to see if this situation can be corrected.'; -$a->strings['If not, you may be required to perform a manual installation. Please see the file "INSTALL" for instructions.'] = 'If not, you may be required to perform a manual installation. Please see the file "INSTALL" for instructions.'; +$a->strings['If not, you may be required to perform a manual installation. Please see the file "INSTALL.txt" for instructions.'] = 'If not, you may be required to perform a manual installation. Please see the file "INSTALL.txt" for instructions.'; $a->strings['The database configuration file ".htconfig.php" could not be written. Please use the enclosed text to create a configuration file in your web server root.'] = 'The database configuration file ".htconfig.php" could not be written. Please use the enclosed text to create a configuration file in your web server root.'; $a->strings['Errors encountered creating database tables.'] = 'Errors encountered creating database tables.'; $a->strings[' : '] = ' : '; @@ -305,6 +309,7 @@ $a->strings['Your registration is pending approval by the site owner.'] = 'Your $a->strings["You may \x28optionally\x29 fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "You may \x28optionally\x29 fill in this form via OpenID by supplying your OpenID and clicking 'Register'."; $a->strings['If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'] = 'If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'; $a->strings["Your OpenID \x28optional\x29: "] = "Your OpenID \x28optional\x29: "; +$a->strings['Shared content is covered by the Creative Commons Attribution 3.0 license.'] = 'Shared content is covered by the Creative Commons Attribution 3.0 license.'; $a->strings['Registration'] = 'Registration'; $a->strings['Your Full Name ' . "\x28" . 'e.g. Joe Smith' . "\x29" . ': '] = 'Your Full Name ' . "\x28" . 'e.g. Joe Smith' . "\x29" . ': '; $a->strings['Your Email Address: '] = 'Your Email Address: '; @@ -323,6 +328,8 @@ $a->strings[' Please use a shorter name.'] = ' Please use a shorter name.'; $a->strings[' Name too short.'] = ' Name too short.'; $a->strings[' Not valid email.'] = ' Not valid email.'; $a->strings['Settings updated.'] = 'Settings updated.'; +$a->strings['Plugin Settings'] = 'Plugin Settings'; +$a->strings['Account Settings'] = 'Account Settings'; $a->strings['OpenID: '] = 'OpenID: '; $a->strings[" \x28Optional\x29 Allow this OpenID to login to this account."] = " \x28Optional\x29 Allow this OpenID to login to this account."; $a->strings['Profile is not published.'] = 'Profile is not published.'; diff --git a/view/en/settings.tpl b/view/en/settings.tpl index 594ce73fc4..5e1bfabf4c 100644 --- a/view/en/settings.tpl +++ b/view/en/settings.tpl @@ -1,5 +1,7 @@

Account Settings

+ + $nickname_block diff --git a/view/it/settings.tpl b/view/it/settings.tpl index 364fd6ba2f..365e5cb709 100644 --- a/view/it/settings.tpl +++ b/view/it/settings.tpl @@ -1,5 +1,8 @@

Impostazioni account

+ + + $nickname_block diff --git a/view/it/strings.php b/view/it/strings.php index 08eb5063ce..3640997d94 100644 --- a/view/it/strings.php +++ b/view/it/strings.php @@ -153,7 +153,7 @@ $a->strings['Could not create/connect to database.'] = 'Impossibile creare/colle $a->strings['Connected to database.'] = 'Collegato al database.'; $a->strings['Database import succeeded.'] = 'Importazione database completata.'; $a->strings['IMPORTANT: You will need to [manually] setup a scheduled task for the poller.'] = 'IMPORTANTE: Devi impostare manualmente un operazione pianificata per il poller'; -$a->strings['Please see the file INSTALL.'] = 'Guarda il file INSTALL.'; +$a->strings['Please see the file "INSTALL.txt".'] = 'Guarda il file "INSTALL.txt".'; $a->strings['Database import failed.'] = 'Importazione database fallita.'; $a->strings['You may need to import the file "database.sql" manually using phpmyadmin or mysql.'] = 'Potresti dover importare il file "database.sql" manualmente con phpmyadmin o mysql'; $a->strings['Welcome to Friendika.'] = 'Benvenuto su Friendika.'; @@ -168,11 +168,11 @@ $a->strings['Error: libCURL PHP module required but not installed.'] = 'Errore: $a->strings['Error: GD graphics PHP module with JPEG support required but not installed.'] = 'Errore: Il modulo GD graphics di PHP con supporto a JPEG è richiesto ma non installato.'; $a->strings['Error: openssl PHP module required but not installed.'] = 'Errore: il modulo openssl di PHP è richiesto ma non installato.'; $a->strings['Error: mysqli PHP module required but not installed.'] = 'Errore: il modulo mysqli di PHP è richiesto ma non installato'; -$a->strings['Please see the file "INSTALL".'] = 'Guarda il file "INSTALL".'; +$a->strings['Please see the file "INSTALL.txt".'] = 'Guarda il file "INSTALL.txt".'; $a->strings['The web installer needs to be able to create a file called ".htconfig.php" in the top folder of your web server and it is unable to do so.'] = 'L\'installazione web deve poter creare un file chiamato ".htconfig.php" nella cartella principale del tuo web server ma non è in grado di farlo.'; $a->strings['This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can.'] = 'Ció è dovuto spesso a impostazioni di permessi, dato che il web server puo\' scrivere il file nella tua cartella, anche se tu puoi.'; $a->strings['Please check with your site documentation or support people to see if this situation can be corrected.'] = 'Controlla la documentazione del tuo sito o con il personale di suporto se la situazione puo\' essere corretta.'; -$a->strings['If not, you may be required to perform a manual installation. Please see the file "INSTALL" for instructions.'] = 'Altrimenti dovrai procedere con l\'installazione manuale. Guarda il file "INSTALL" per istuzioni'; +$a->strings['If not, you may be required to perform a manual installation. Please see the file "INSTALL.txt" for instructions.'] = 'Altrimenti dovrai procedere con l\'installazione manuale. Guarda il file "INSTALL.txt" per istuzioni'; $a->strings['The database configuration file ".htconfig.php" could not be written. Please use the enclosed text to create a configuration file in your web server root.'] = 'Il file di configurazione del database ".htconfig.php" non puo\' essere scritto. Usa il testo qui di seguito per creare un file di configurazione nella cartella principale del tuo sito.'; $a->strings['Errors encountered creating database tables.'] = 'Errori creando le tabelle nel database.'; $a->strings[' : '] = ' : '; @@ -305,6 +305,7 @@ $a->strings['Your registration is pending approval by the site owner.'] = 'La tu $a->strings["You may \x28optionally\x29 fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Puoi \x28opzionalmento\x29 riempire questa maschera via OpenID inserendo il tuo OpenID e cliccando 'Registra'."; $a->strings['If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'] = 'Se non hai famigliarità con OpenID, lascia quel campo in bianco e riempi il resto della maschera.'; $a->strings["Your OpenID \x28optional\x29: "] = "Il tuo OpenID \x28opzionale\x29: "; +$a->strings['Shared content is covered by the Creative Commons Attribution 3.0 license.'] = 'Contenuto in comune h coperto da licenza Creative Commons Attribution 3.0.'; $a->strings['Registration'] = 'Registrazione'; $a->strings['Your Full Name ' . "\x28" . 'e.g. Joe Smith' . "\x29" . ': '] = 'Il tuo Nome Completo ' . "\x28" . 'p.e. Mario Rossi' . "\x29" . ': '; $a->strings['Your Email Address: '] = 'Il tuo Indirizzo Email: '; @@ -323,6 +324,8 @@ $a->strings[' Please use a shorter name.'] = ' Usa un nome più corto.'; $a->strings[' Name too short.'] = ' Nome troppo corto.'; $a->strings[' Not valid email.'] = ' Email non valida.'; $a->strings['Settings updated.'] = 'Impostazioni aggiornate.'; +$a->strings['Plugin Settings'] = 'Impostazioni Plugin'; +$a->strings['Account Settings'= = 'Impostazioni Account'; $a->strings['OpenID: '] = 'OpenID: '; $a->strings[" \x28Optional\x29 Allow this OpenID to login to this account."] = " \x28Opzionale\x29 Permetti a questo OpenID di accedere a questo account."; $a->strings['Profile is not published.'] = 'Il profilo non è pubblicato.'; diff --git a/view/register.tpl b/view/register.tpl index 08da5112db..ed528bb33c 100644 --- a/view/register.tpl +++ b/view/register.tpl @@ -44,3 +44,6 @@
+ +
$license
+ diff --git a/view/theme/default/style.css b/view/theme/default/style.css index e3cddc3557..240ace8960 100644 --- a/view/theme/default/style.css +++ b/view/theme/default/style.css @@ -1946,4 +1946,14 @@ a.mail-list-link { .clear { clear: both; -} \ No newline at end of file +} + +.cc-license { + margin-top: 50px; + font-size: 70%; +} + + +#plugin-settings-link, #account-settings-link { + margin-bottom: 25px; +}