Merge pull request #1525 from silke/documentation

And... still more files
This commit is contained in:
Tobias Diekershoff 2015-04-19 20:08:55 +02:00
commit 604a630fdc
13 changed files with 767 additions and 576 deletions

View file

@ -6,31 +6,56 @@ Forums
Friendica also lets you create forums and/or celebrity accounts. Friendica also lets you create forums and/or celebrity accounts.
Every page in Friendica has a nickname and these must all be unique. This applies to all forums, whether they are normal profiles or forum profiles. Every page in Friendica has a nickname and these must all be unique.
This applies to all forums, whether they are normal profiles or forum profiles.
Therefore the first thing you need to do to create a new forum is to register a new account for the forum. Please note that the site administrator can restrict and/or regulate the registration of new accounts. Therefore the first thing you need to do to create a new forum is to register a new account for the forum.
Please note that the site administrator can restrict and/or regulate the registration of new accounts.
If you create a second account on a system and use the same email address or OpenID account as an existing account, you will no longer be able to use the email address (or OpenID) to login to the account. You should login using the account nickname instead. If you create a second account on a system and use the same email address or OpenID account as an existing account, you will no longer be able to use the email address (or OpenID) to log in to the account.
You should log in using the account nickname instead.
On the new account, visit the 'Settings' page. Towards the end of the page are "Advanced Account/Page Type Settings". Typically you would use "Normal Account" for a normal personal account. This is the default selection. Community Forum/Celebrity Accounts provide the ability for people to become friends/fans of the forum without requiring approval. On the new account, visit the 'Settings' page.
Towards the end of the page are "Advanced Account/Page Type Settings".
Typically you would use "Normal Account" for a normal personal account.
This is the default selection.
Community Forum/Celebrity Accounts provide the ability for people to become friends/fans of the forum without requiring approval.
The exact setting you would use depends on how you wish to interact with people who join the page. The "Soapbox" setting let's the page owner control all communications. Everything you post will go out to the forum members, but there will be no opportunity for interaction. This setting would typically be used for announcements or corporate communications. The exact setting you would use depends on how you wish to interact with people who join the page.
The "Soapbox" setting let's the page owner control all communications.
Everything you post will go out to the forum members, but there will be no opportunity for interaction.
This setting would typically be used for announcements or corporate communications.
The most common setting is the "Community Forum". This creates a forum page where all members can freely interact. The most common setting is the "Community Forum".
This creates a forum page where all members can freely interact.
The "Automatic Friend Account" is typically used for personal profile forums where you wish to automatically approve any friendship/connection requests. The "Automatic Friend Account" is typically used for personal profile forums where you wish to automatically approve any friendship/connection requests.
**Managing Multiple forums** Managing Multiple forums
---
We recommend that you create group forums with the same email address and password as your normal account. If you do this, you will find a new "Manage" tab on the menu bar which lets you toggle identities easily and manage your forums. You are not required to do this, but the alternative is to logout and log back into the other account to manage alternate forums - and this could get cumbersome if you manage several different forums/identities. We recommend that you create group forums with the same email address and password as your normal account.
If you do this, you will find a new "Manage" tab on the menu bar which lets you toggle identities easily and manage your forums.
You are not required to do this, but the alternative is to log out and log back into the other account to manage alternate forums.
This could get cumbersome if you manage several different forums/identities.
You may also appoint a delegate to manage your forum. Do this by visiting the [Delegation Setup Page](delegate). This will provide you with a list of contacts on this system under "Potential Delegates". Selecting one or more persons will give them access to manage your forum. They will be able to edit contacts, profiles, and all content for this account/page. Please use this facility wisely. Delegated managers will not be able to alter basic account settings such as passwords or page types and/or remove the account. You may also appoint a delegate to manage your forum.
Do this by visiting the [Delegation Setup Page](delegate).
This will provide you with a list of contacts on this system under "Potential Delegates".
Selecting one or more persons will give them access to manage your forum.
They will be able to edit contacts, profiles, and all content for this account/page.
Please use this facility wisely.
Delegated managers will not be able to alter basic account settings such as passwords or page types and/or remove the account.
**Posting to Community forums** Posting to Community forums
---
If you are a member of a community forum, you may post to the forum by including an @-tag in the post mentioning the forum. For example @bicycle would send my post to all members of the group "bicycle" in addition to the normal recipients. If your post is private you must also explicitly include the group in the post permissions (to allow the forum "contact" to see the post) **and** mention it in a tag (which redistributes the post to the forum members). If you are a member of a community forum, you may post to the forum by including an @-tag in the post mentioning the forum.
For example @bicycle would send my post to all members of the group "bicycle" in addition to the normal recipients.
If your post is private you must also explicitly include the group in the post permissions (to allow the forum "contact" to see the post) **and** mention it in a tag (which redistributes the post to the forum members).
You may also post to a community forum by posting a "wall-to-wall" post using secure cross-site authentication. You may also post to a community forum by posting a "wall-to-wall" post using secure cross-site authentication.
Comments which are relayed to community forums will be relayed back to the original post creator. Mentioning the forum with an @-tag in a comment does not relay the message, as distribution is controlled entirely by the original post creator. Comments which are relayed to community forums will be relayed back to the original post creator.
Mentioning the forum with an @-tag in a comment does not relay the message, as distribution is controlled entirely by the original post creator.

View file

@ -27,7 +27,6 @@ Friendica Documentation and Resources
* [Install](help/Install) * [Install](help/Install)
* [Settings](help/Settings) * [Settings](help/Settings)
* [Plugins](help/Plugins)
* [Installing Connectors (Facebook/Twitter/StatusNet)](help/Installing-Connectors) * [Installing Connectors (Facebook/Twitter/StatusNet)](help/Installing-Connectors)
* [Message Flow](help/Message-Flow) * [Message Flow](help/Message-Flow)
* [Using SSL with Friendica](help/SSL) * [Using SSL with Friendica](help/SSL)
@ -40,6 +39,7 @@ Friendica Documentation and Resources
* [Help on Vagrant](help/Vagrant) * [Help on Vagrant](help/Vagrant)
* [How to translate Friendica](help/translations) * [How to translate Friendica](help/translations)
* [Bugs and Issues](help/Bugs-and-Issues) * [Bugs and Issues](help/Bugs-and-Issues)
* [Plugin Development](help/Plugins)
* [Smarty 3 Templates](help/smarty3-templates) * [Smarty 3 Templates](help/smarty3-templates)
**External Resources** **External Resources**

View file

@ -1,13 +1,9 @@
How to: improve performance How to improve the performance of a Friendica site
============== ==============
* [Home](help) * [Home](help)
A little guide to increase the performance of a Friendica site Feel free to ask in the [Friendica support forum](https://helpers.pyxis.uberspace.de/profile/helpers) if you need some clarification about the following instructions or if you need help in any other way.
**At first**
Feel free to ask at Friendica support at https://helpers.pyxis.uberspace.de/profile/helpers if you need some clarification about the following instructions or if you need help in any other way.
System configuration System configuration
-------- --------
@ -26,9 +22,11 @@ If you have many OStatus contacts then completing of conversations can be very t
Lock files help avoid the possibility of several background processes running at the same time. Lock files help avoid the possibility of several background processes running at the same time.
For example: It can happen that the poller.php takes longer than expected. When there is no lock file, it is possible for several instances of poller.php to run at the same time - which would slow down the system and affect the maximum numbers of processes and database connections. For example: It can happen that the poller.php takes longer than expected.
When there is no lock file, it is possible for several instances of poller.php to run at the same time - which would slow down the system and affect the maximum numbers of processes and database connections.
Please define a full file path that is writeable by the web server process. If your site is located at "/var/www/sitename/htdocs/" you could maybe create a folder "/var/www/sitename/temp/". Please define a full file path that is writeable by the web server process.
If your site is located at "/var/www/sitename/htdocs/" you could maybe create a folder "/var/www/sitename/temp/".
Enable "Use MySQL full text engine" Enable "Use MySQL full text engine"
@ -36,20 +34,17 @@ When using MyISAM (default) this speeds up search.
Set "Path to item cache" to an empty value outside your web root. Set "Path to item cache" to an empty value outside your web root.
Parsed BBCode and some external images will be put there. Parsing BBCode is a time wasting process that also makes heave use of the CPU. Parsed BBCode and some external images will be put there.
Parsing BBCode is a time wasting process that also makes heave use of the CPU.
You can use the same folder you used for the lock file. You can use the same folder you used for the lock file.
**Warning!** **Warning!**
The folder for item cache is cleaned up regularly. Every file that exceeds the cache duration is deleted. **If you accidentally point the cache path to your web root then you will delete your web root!** The folder for item cache is cleaned up regularly.
Every file that exceeds the cache duration is deleted. **If you accidentally point the cache path to your web root then you will delete your web root!**
So double check that the folder only contains temporary content that can be deleted at any time. So double check that the folder only contains temporary content that can be deleted at any time.
You have been warned. You have been warned.
P.S. It happened to me :)
Plugins Plugins
-------- --------
@ -61,20 +56,18 @@ Active the following plugins:
###Alternate Pagination ###Alternate Pagination
This plugin reduces the database load massively.
**Description** Downside: You can't see the total number of pages available at each module, and have this replaced with "older" and "newer" links.
This plugin reduces the database load massively. Downside: You can't see the total number of pages available at each module, and have this replaced with "older" and "newer" links.
**Administration**
Go to the admin settings of "altpager" and set it to "global". Go to the admin settings of "altpager" and set it to "global".
###rendertime ###rendertime
This plugin doesn't speed up your system. It helps analyzing your bottlenecks. This plugin doesn't speed up your system.
It helps to analyze your bottlenecks.
When enabled you see some values like the following at the bottom of every page: When enabled you see some values at the bottom of every page.
They show your performance problems.
Performance: Database: 0.244, Network: 0.002, Rendering: 0.044, Parser: 0.001, I/O: 0.021, Other: 0.237, Total: 0.548 Performance: Database: 0.244, Network: 0.002, Rendering: 0.044, Parser: 0.001, I/O: 0.021, Other: 0.237, Total: 0.548
@ -86,50 +79,47 @@ When enabled you see some values like the following at the bottom of every page:
Others: Everything else :) Others: Everything else :)
Total: The sum of all above values Total: The sum of all above values
These values show your performance problems. Apache Webserver
Webserver
-------- --------
If you are using Apache please enable the following modules. The following Apache modules are recommended:
**Cache-Control** ###Cache-Control
This module tells the client to cache the content of static files so that they aren't fetched with every request. This module tells the client to cache the content of static files so that they aren't fetched with every request.
Enable the module "mod_expires" by typing in "a2enmod expires" as root. Enable the module "mod_expires" by typing in "a2enmod expires" as root.
Please add the following lines to your site configuration in the "directory" context. Please add the following lines to your site configuration in the "directory" context.
ExpiresActive on ExpiresDefault "access plus 1 week" ExpiresActive on ExpiresDefault "access plus 1 week"
See also: http://httpd.apache.org/docs/2.2/mod/mod_expires.html Also see the Apache [2.2](http://httpd.apache.org/docs/2.2/mod/mod_expires.html) / [2.4](https://httpd.apache.org/docs/2.4/mod/mod_expires.html) documentation.
**Compress content** ###Compress content
This module compresses the traffic between the web server and the client. This module compresses the traffic between the web server and the client.
Enable the module "mod_deflate" by typing in "a2enmod deflate" as root. Enable the module "mod_deflate" by typing in "a2enmod deflate" as root.
See also: http://httpd.apache.org/docs/2.2/mod/mod_deflate.html Also see the Apache [2.2](http://httpd.apache.org/docs/2.2/mod/mod_deflate.html) / [2.4](https://httpd.apache.org/docs/2.4/mod/mod_deflate.html) documentation.
PHP PHP
-------- --------
**FCGI** ###FCGI
When using apache think about using FCGI. When using a Debian based distribution you will need the packages named "php5-cgi" and "libapache2-mod-fcgid". When using Apache think about using FCGI.
In a Debian-based distribution you will need to install the packages named "php5-cgi" and "libapache2-mod-fcgid".
Please refer to external documentations for a more detailed explanation how to set up a system based upon FCGI. Please refer to external documentation for a more detailed explanation how to set up a system based upon FCGI.
**APC** ###APC
APC is an opcode cache. It speeds up the processing of PHP code. APC is an opcode cache.
It speeds up the processing of PHP code.
When APC is enabled, Friendica uses it to store configuration data between different requests.
This helps speeding up the page creation time.
When APC is enabled, Friendica uses it to store configuration data between different requests. This helps speeding up the page creation time. ###Database
**Database** There are scripts like [tuning-primer.sh](http://www.day32.com/MySQL/) and [mysqltuner.pl](http://mysqltuner.pl) that analyze your database server and give hints on values that could be changed.
There are scripts like [tuning-primer.sh](http://www.day32.com/MySQL/) and [mysqltuner.pl](http://mysqltuner.pl) that analyzes your database server and give hints on values that could be changed. Please enable the slow query log. This helps to find performance problems.
Please enable the slow query log. This helps being aware of performance problems.

View file

@ -1,118 +1,126 @@
Friendica Installation Friendica Installation
=============== ===============
We've tried very hard to ensure that Friendica will run on commodity hosting platforms - such as those used to host Wordpress blogs and Drupal websites. But be aware that Friendica is more than a simple web application. It is a complex communications system which more closely resembles an email server than a web server. For reliability and performance, messages are delivered in the background and are queued for later delivery when sites are down. This kind of functionality requires a bit more of the host system than the typical blog. Not every PHP/MySQL hosting provider will be able to support Friendica. Many will. But **please** review the requirements and confirm these with your hosting provider prior to installation. We've tried very hard to ensure that Friendica will run on commodity hosting platforms - such as those used to host Wordpress blogs and Drupal websites.
But be aware that Friendica is more than a simple web application.
It is a complex communications system which more closely resembles an email server than a web server.
For reliability and performance, messages are delivered in the background and are queued for later delivery when sites are down.
This kind of functionality requires a bit more of the host system than the typical blog.
Not every PHP/MySQL hosting provider will be able to support Friendica.
Many will.
But **please** review the requirements and confirm these with your hosting provider prior to installation.
Also if you encounter installation issues, please let us know via the forums at http://groups.google.com/group/friendica or file an issue at http://bugs.friendica.com . Please be as clear as you can about your operating environment and provide as much detail as possible about any error messages you may see, so that we can prevent it from happening in the future. Due to the large variety of operating systems and PHP platforms in existence we may have only limited ability to debug your PHP installation or acquire any missing modules - but we will do our best to solve any general code issues. Also if you encounter installation issues, please let us know via the [helper]() or the [developer]() forum or [file an issue](https://github.com/friendica/friendica/issues).
Please be as clear as you can about your operating environment and provide as much detail as possible about any error messages you may see, so that we can prevent it from happening in the future.
Due to the large variety of operating systems and PHP platforms in existence we may have only limited ability to debug your PHP installation or acquire any missing modules - but we will do our best to solve any general code issues.
Before you begin: Choose a domain name or subdomain name for your server. Put some thought into this - because changing it after installation is currently not-supported. Things will break, and some of your friends may have difficulty communicating with you. We plan to address this limitation in a future release. Before you begin: Choose a domain name or subdomain name for your server.
Put some thought into this. Changing it after installation is currently not supported.
Things will break, and some of your friends may have difficulty communicating with you.
We plan to address this limitation in a future release.
1. Requirements Requirements
- Apache with mod-rewrite enabled and "Options All" so you can use a ---
local .htaccess file
- PHP 5.2+. The later the better. You'll need 5.3 for encryption of key exchange conversations. On a Windows environment, 5.2+ might not work as the function dns_get_record() is only available with version 5.3. * Apache with mod-rewrite enabled and "Options All" so you can use a local .htaccess file
- PHP *command line* access with register_argc_argv set to true in the * PHP 5.2+. The later the better. You'll need 5.3 for encryption of key exchange conversations. On a Windows environment, 5.2+ might not work as the function dns_get_record() is only available with version 5.3.
php.ini file * PHP *command line* access with register_argc_argv set to true in the php.ini file
- curl, gd, mysql, hash and openssl extensions * curl, gd, mysql, hash and openssl extensions
- some form of email server or email gateway such that PHP mail() works * some form of email server or email gateway such that PHP mail() works
- mcrypt (optional; used for server-to-server message encryption) * mcrypt (optional; used for server-to-server message encryption)
* Mysql 5.x
* the ability to schedule jobs with cron (Linux/Mac) or Scheduled Tasks (Windows) (Note: other options are presented in Section 7 of this document.)
* Installation into a top-level domain or sub-domain (without a directory/path component in the URL) is preferred. Directory paths will not be as convenient to use and have not been thoroughly tested.
* If your hosting provider doesn't allow Unix shell access, you might have trouble getting everything to work.
- Mysql 5.x Installation procedure
---
- ability to schedule jobs with cron (Linux/Mac) or Scheduled Tasks ###Get Friendica
(Windows) [Note: other options are presented in Section 7 of this document]
- Installation into a top-level domain or sub-domain (without a Unpack the Friendica files into the root of your web server document area.
directory/path component in the URL) is preferred. Directory paths will If you are able to do so, we recommend using git to clone the source repository rather than to use a packaged tar or zip file.
not be as convenient to use and have not been thoroughly tested. This makes the software much easier to update.
The Linux command to clone the repository into a directory "mywebsite" would be
git clone https://github.com/friendica/friendica.git mywebsite
[Dreamhost.com offers all of the necessary hosting features at a Make sure the folder *view/smarty3* exists and is writable by the webserver user
reasonable price. If your hosting provider doesn't allow Unix shell access,
you might have trouble getting everything to work.]
2. Unpack the Friendica files into the root of your web server document area. mkdir view/smarty3
chmod 777 view/smarty3
- If you are able to do so, we recommend using git to clone the source repository rather than to use a packaged tar or zip file. This makes the software much easier to update. The Linux command to clone the repository into a directory "mywebsite" would be Get the addons by going into your website folder.
`git clone https://github.com/friendica/friendica.git mywebsite` cd mywebsite
- and then you can pick up the latest changes at any time with Clone the addon repository (separately):
`git pull` git clone https://github.com/friendica/friendica-addons.git addon
- make sure folder *view/smarty3* exists and is writable by webserver If you copy the directory tree to your webserver, make sure that you also copy .htaccess - as "dot" files are often hidden and aren't normally copied.
`mkdir view/smarty3` ###Create a database
`chmod 777 view/smarty3` Create an empty database and note the access details (hostname, username, password, database name).
- For installing addons ###Run the installer
- First you should be **on** your website folder Point your web browser to the new site and follow the instructions.
Please note any error messages and correct these before continuing.
`cd mywebsite` *If* the automated installation fails for any reason, check the following:
- Then you should clone the addon repository (separtely) * Does ".htconfig.php" exist? If not, edit htconfig.php and change the system settings. Rename to .htconfig.php
* Is the database is populated? If not, import the contents of "database.sql" with phpmyadmin or mysql command line.
`git clone https://github.com/friendica/friendica-addons.git addon` At this point visit your website again, and register your personal account.
- For keeping the addon tree updated, you should be on you addon tree and issue a git pull
`cd mywebsite/addon`
`git pull`
- If you copy the directory tree to your webserver, make sure
that you also copy .htaccess - as "dot" files are often hidden
and aren't normally copied.
3. Create an empty database and note the access details (hostname, username, password, database name).
4. Visit your website with a web browser and follow the instructions. Please note any error messages and correct these before continuing.
5. *If* the automated installation fails for any reason, check the following:
- ".htconfig.php" exists ... If not, edit htconfig.php and change system settings. Rename
to .htconfig.php
- Database is populated. ... If not, import the contents of "database.sql" with phpmyadmin
or mysql command line
6. At this point visit your website again, and register your personal account.
Registration errors should all be recoverable automatically. Registration errors should all be recoverable automatically.
If you get any *critical* failure at this point, it generally indicates the If you get any *critical* failure at this point, it generally indicates the database was not installed correctly.
database was not installed correctly. You might wish to move/rename You might wish to move/rename .htconfig.php to another name and empty (called 'dropping') the database tables, so that you can start fresh.
.htconfig.php to another name and empty (called 'dropping') the database
tables, so that you can start fresh.
7. Set up a cron job or scheduled task to run the poller once every 5-10 ###Set up the poller
minutes in order to perform background processing. Example:
`cd /base/directory; /path/to/php include/poller.php` Set up a cron job or scheduled task to run the poller once every 5-10 minutes in order to perform background processing.
Example:
cd /base/directory; /path/to/php include/poller.php
Change "/base/directory", and "/path/to/php" as appropriate for your situation. Change "/base/directory", and "/path/to/php" as appropriate for your situation.
If you are using a Linux server, run "crontab -e" and add a line like the If you are using a Linux server, run "crontab -e" and add a line like the
one shown, substituting for your unique paths and settings: one shown, substituting for your unique paths and settings:
`*/10 * * * * cd /home/myname/mywebsite; /usr/bin/php include/poller.php` */10 * * * * cd /home/myname/mywebsite; /usr/bin/php include/poller.php
You can generally find the location of PHP by executing "which php". If you You can generally find the location of PHP by executing "which php".
have troubles with this section please contact your hosting provider for If you run into trouble with this section please contact your hosting provider for assistance.
assistance. Friendica will not work correctly if you cannot perform this step. Friendica will not work correctly if you cannot perform this step.
Alternative: You may be able to use the 'poormancron' plugin to perform this step Alternative: You may be able to use the 'poormancron' plugin to perform this step.
if you are using a recent Friendica release. To do this, edit the file ".htconfig.php" To do this, edit the file ".htconfig.php" and look for a line describing your plugins.
and look for a line describing your plugins. On a fresh installation, it will look like On a fresh installation, it will look like this:
`$a->config['system']['addon'] = 'js_upload';` $a->config['system']['addon'] = 'js_upload';
This indicates the "js_upload" addon module is enabled. You may add additional It indicates the "js_upload" addon module is enabled.
addons/plugins using this same line in the configuration file. Change it to read You may add additional addons/plugins using this same line in the configuration file.
Change it to read
`$a->config['system']['addon'] = 'js_upload,poormancron';` $a->config['system']['addon'] = 'js_upload,poormancron';
and save your changes. and save your changes.
Updating your installation with git
---
You can get the latest changes at any time with
cd mywebsite
git pull
The addon tree has to be updated separately like so:
cd mywebsite/addon
git pull

View file

@ -6,56 +6,59 @@ Installing Connectors (Facebook/Twitter/StatusNet)
Friendica uses plugins to provide connectivity to some networks, such as Facebook and Twitter. Friendica uses plugins to provide connectivity to some networks, such as Facebook and Twitter.
There is also a plugin to post through to an existing account on a Status.Net service. You do not require this to communicate with Status.Net members from Friendica - only if you wish to post to an existing account. There is also a plugin to post through to an existing account on a StatusNet service.
You only need this to post to an already existing StatusNet account, but not to communicate with StatusNet members in general.
All three of these plugins require an account on the target network. In addition you (or typically the server administrator) will need to obtain an API key to provide authenticated access to your Friendica server. All three plugins require an account on the target network.
In addition you (or typically the server administrator) will need to obtain an API key to provide authenticated access to your Friendica server.
**Site Configuration** Site Configuration
---
Plugins must be installed by the site administrator before they can be used. This is accomplished through the site administration panel. Plugins must be installed by the site administrator before they can be used.
This is accomplished through the site administration panel.
Each of the connectors also requires an "API key" from the service you wish to connect with.
Some plugins allow you to enter this information in the site administration pages, while others may require you to edit your configuration file (.htconfig.php).
The ways to obtain these keys vary between the services, but they all require an existing account on the target service.
Once installed, these API keys can usually be shared by all site members.
Each of the connectors also requires an "API key" from the service you wish to connect with. Some plugins allow you to enter this information in the site administration pages, while others may require you to edit your configuration file (.htconfig.php). The method for obtaining these keys varies greatly - but almost always requires an existing account on the target service. Once installed, these API keys can usually be shared by all site members. The details of configuring each service follow (much of this information comes directly from the plugin source files):
Twitter Plugin for Friendica
The details of configuring each service follows (much of this information comes directly from the plugin source files): ---
**Twitter Plugin for Friendica**
* Author: Tobias Diekershoff * Author: Tobias Diekershoff
* tobias.diekershoff@gmx.net * tobias.diekershoff@gmx.net
* License: 3-clause BSD license
* License:3-clause BSD license ###Configuration
To use this plugin you need a OAuth Consumer key pair (key & secret).
Configuration: You can get it from [Twitter](https://twitter.com/apps).
To use this plugin you need a OAuth Consumer key pair (key & secret)
you can get it from Twitter at https://twitter.com/apps
Register your Friendica site as "Client" application with "Read & Write" access. Register your Friendica site as "Client" application with "Read & Write" access.
We do not need "Twitter as login". When you've registered the app you get the We do not need "Twitter as login".
OAuth Consumer key and secret pair for your application/site. When you've registered the app you get a key pair with an OAuth Consumer key and a secret key for your application/site.
Add this key pair to your global .htconfig.php:
Add this key pair to your global .htconfig.php $a->config['twitter']['consumerkey'] = 'your consumer_key here';
$a->config['twitter']['consumersecret'] = 'your consumer_secret here';
``` After this, your users can configure their Twitter account settings from "Settings -> Connector Settings".
$a->config['twitter']['consumerkey'] = 'your consumer_key here';
$a->config['twitter']['consumersecret'] = 'your consumer_secret here';
```
After this, your user can configure their Twitter account settings ###More documentation
from "Settings -> Connector Settings".
Documentation: http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/Twitter_Plugin Find the author's documentation here: [http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/Twitter_Plugin](http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/Twitter_Plugin)
**StatusNet Plugin for Friendica** StatusNet Plugin for Friendica
---
* Author: Tobias Diekershoff * Author: Tobias Diekershoff
* tobias.diekershoff@gmx.net * tobias.diekershoff@gmx.net
* License: 3-clause BSD license
* License:3-clause BSD license ###Configuration
Configuration
When the addon is activated the user has to aquire the following in order to connect to the StatusNet account of choice. When the addon is activated the user has to aquire the following in order to connect to the StatusNet account of choice.
@ -64,8 +67,8 @@ When the addon is activated the user has to aquire the following in order to con
To get the OAuth Consumer key pair the user has to To get the OAuth Consumer key pair the user has to
(a) ask her Friendica admin if a pair already exists or 1 ask her Friendica admin if a pair already exists or
(b) has to register the Friendica server as a client application on the StatusNet server. 2 has to register the Friendica server as a client application on the StatusNet server.
This can be done from the account settings under "Settings -> Connections -> Register an OAuth client application -> Register a new application" on the StatusNet server. This can be done from the account settings under "Settings -> Connections -> Register an OAuth client application -> Register a new application" on the StatusNet server.
@ -77,56 +80,57 @@ During the registration of the OAuth client remember the following:
* with read & write access * with read & write access
* the Source URL should be the URL of your Friendica server * the Source URL should be the URL of your Friendica server
After the required credentials for the application are stored in the configuration you have to actually connect your Friendica account with StatusNet. This is done from the Settings -> Connector Settings page. Follow the Sign in with StatusNet button, allow access and then copy the security code into the box provided. Friendica will then try to acquire the final OAuth credentials from the API. After the required credentials for the application are stored in the configuration you have to actually connect your Friendica account with StatusNet.
This is done from the Settings -> Connector Settings page.
Follow the Sign in with StatusNet button, allow access and then copy the security code into the box provided.
Friendica will then try to acquire the final OAuth credentials from the API.
If successful the addon settings will allow you to select to post your public messages to your StatusNet account (have a look behind the little lock symbol beneath the status "editor" on your Home or Network pages). If successful, the addon settings will allow you to select to post your public messages to your StatusNet account (have a look behind the little lock symbol beneath the status "editor" on your Home or Network pages).
Documentation: http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/StatusNet_Plugin ###More documentation
Find the author's documentation here: [http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/StatusNet_Plugin](http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/StatusNet_Plugin)
The Friendica/Facebook connector
---
**Installing the Friendica/Facebook connector** ###Configuration
* register an API key for your site from developer.facebook.com
First, register an API key for your site on [Facebook](developer.facebook.com).
This requires a Facebook account, and may require additional authentication in the form of credit card or mobile phone verification. This requires a Facebook account, and may require additional authentication in the form of credit card or mobile phone verification.
a. We'd be very happy if you include "Friendica" in the application name We'd be very happy if you include "Friendica" in the application name to increase name recognition.
to increase name recognition. The Friendica icons are also present The Friendica icons are also present in the images directory and may be uploaded as a Facebook app icon.
in the images directory and may be uploaded as a Facebook app icon. Use images/friendica-16.jpg for the Icon and images/friendica-128.jpg for the logo.
Use images/friendica-16.jpg for the Icon and images/friendica-128.jpg for the Logo.
b. The url should be your site URL with a trailing slash. The url should be your site URL with a trailing slash.
You **may** be required to provide a privacy and/or terms of service URL. You **may** be required to provide a privacy and/or terms of service URL.
c. Navigate to Set Web->Site URL & Domain -> Website Settings. Set Site URL Navigate to Set Web->Site URL & Domain -> Website Settings.
to yoursubdomain.yourdomain.com. Set Site Domain to your yourdomain.com. Set Site URL to yoursubdomain.yourdomain.com.
Set Site Domain to your yourdomain.com.
d. Install the Facebook plugin on your Friendica site at 'admin/plugins'. You should then see a link for Facebook under 'Plugin Features' on the sidebar of the admin panel. Select that. Install the Facebook plugin on your Friendica site at 'admin/plugins'.
You should then see a link for Facebook under 'Plugin Features' on the sidebar of the admin panel.
e. Enter the App-ID and App Secret that Facebook gave you. Change any other settings as desired. Select it.
Enter the App-ID and App Secret that Facebook gave you.
Change any other settings as desired.
On Friendica, each member who wishes to use the Facebook connector should visit the Facebook Settings section of their "Settings->Connector Settings" page, and click 'Install Facebook Connector'. On Friendica, each member who wishes to use the Facebook connector should visit the Facebook Settings section of their "Settings->Connector Settings" page, and click 'Install Facebook Connector'.
Choose the appropriate settings for your usage and privacy requirements. Choose the appropriate settings for your usage and privacy requirements.
This will ask you to login to Facebook and grant permission to the This will ask you to log into Facebook and grant permission to the plugin to do its stuff.
plugin to do its stuff. Allow it to do so. Allow it to do so.
You're done. To turn it off visit the Connector Settings page again and
'Remove Facebook posting'.
Videos and embeds will not be posted if there is no other content. Links
and images will be converted to a format suitable for the Facebook API and
long posts truncated - with a link to view the full post.
Facebook contacts will also not be able to view "private" photos, as they are not able to authenticate to your site to establish identity. We will address this in a future release.
You're done.
To turn it off visit the Connector Settings page again and 'Remove Facebook posting'.
Videos and embeds will not be posted if there is no other content.
Links and images will be converted to a format suitable for the Facebook API and long posts truncated - with a link to view the full post.
Facebook contacts will also not be able to view "private" photos, as they are not able to authenticate to your site.
We will address this in a future release.

View file

@ -3,55 +3,104 @@ Making Friends
* [Home](help) * [Home](help)
Friendship in Friendica can take on a great many different meanings. But let's keep it simple, you want to be friends with somebody. How do you do it? Friendship in Friendica can take on a great many different meanings.
But let's keep it simple, you want to be friends with somebody.
How do you do it?
The first thing you can do is look at the Directory. The directory is split up into two parts. If you click the directory button, you will be presented with a list of all members (who chose to be listed) on your server. You'll also see a link to the Global Directory. If you click through to the global directory, you will be presented with a list of everybody who chose to be listed across all instances of Friendica. You will also see a "Show Community Forums" link, which will direct you to Groups, Forums and Fanpages. You connect to people, groups and forums in the same way, except groups and forums will automatically accept your introduction request, whereas a human will approve you manually. The Directories
---
Friendica has two different kinds of "addressbook":
The directory of the Friendica server you are registered on and the global directory that collects account information across all Friendica instances.
To connect with other Friendica users: The first thing you can do is look at the **Directory**.
The directory is split up into two parts.
If you click the directory button, you will be presented with a list of all members (who chose to be listed) on your server.
Visit their profile. Just beneath their profile picture will be the word 'Connect' (we're assuming this is an English language profile). You'll also see a link to the **Global Directory**.
If you click through to the global directory, you will be presented with a list of everybody who chose to be listed across all instances of Friendica.
You will also see a "Show Community Forums" link, which will direct you to Groups, Forums and Fanpages.
You connect to people, groups and forums in the same way, except groups and forums will automatically accept your introduction request, whereas a human will approve you manually.
Click that. It will take you to a "Connect" form. Connect to other Friendica users
---
This is going to ask you for your Identity Address. This is necessary so that this person's website can find yours. Visit their profile.
Just beneath their profile picture will be the word 'Connect' (we're assuming this is an English language profile).
Click that 'Connect' button.
It will take you to a 'Connect' form.
The form is going to ask you for your Identity Address.
This is necessary so that this person's website can find yours.
What do you put in the box? What do you put in the box?
If your Friendica site is called "demo.friendica.com" and your username/nickname on that site is "bob", you would put in "bob@demo.friendica.com". If your Friendica site is called "demo.friendica.com" and your username/nickname on that site is "bob", you would put in "bob@demo.friendica.com".
Notice this looks just like an email address. It was meant to be that way. It's easy for people to remember. Notice this looks just like an email address.
It was meant to be that way.
It's easy for people to remember.
You *could* also put in the URL of your "home" page, such as "http://demo.friendica.com/profile/bob", but the email-style address is certainly easier. You *could* also put in the URL of your "home" page, such as "http://demo.friendica.com/profile/bob", but the email-style address is certainly easier.
When you've submitted the connection page, it will take you back to your own site where you must then login (if necessary) and verify the connection request on *your* site. Once you've done this, the two websites can communicate with each other to complete the process (after your new friend has approved the request). When you've submitted the connection page, it will take you back to your own site where you must then login (if necessary) and verify the connection request on *your* site.
Once you've done this, the two websites can communicate with each other to complete the process (after your new friend has approved the request).
If you already know somebody's Identity Address, you can enter it in the "connect" box on your "Contacts" page. This will take you through a similar process. If you already know somebody's Identity Address, you can enter it in the "connect" box on your "Contacts" page.
This will take you through a similar process.
**Alternate Networks** Connect to users of alternate networks
---
###StatusNet/GNUSocial, Google Plus, Twitter, Diaspora
You can also use your Identity Address or other people's Identity Addresses to become friends across networks.
The list of possible networks is growing all the time.
If you know (for instance) "bob" on identi.ca (a StatusNet site) you could put bob@identi.ca into your Contact page and become friends across networks.
(Or you can put in the URL to Bob's identi.ca page if you wish).
You can also use your Identity Address or other people's Identity Addresses to become friends across networks. The list of possible networks is growing all the time. If you know (for instance) "bob" on identi.ca (a Status.Net site) you could put bob@identi.ca into your Contact page and become friends across networks. (Or you can put in the URL to Bob's identi.ca page if you wish). You can also be "partial" friends with somebody on Google Buzz by putting in their gmail address. Google Buzz does not yet support all the protocols we need for direct messaging, but you should be able to follow status updates from within Friendica. You can do the same for Twitter accounts and Diaspora accounts. In fact you can "follow" most anybody or any website that produces a syndication feed (RSS/Atom,etc.). If we can find an information stream and a name to attach to the contact, we'll try to connect with them. You can also be "partial" friends with somebody on Google Plus by putting in their gmail address.
Google Plus does not yet support all the protocols we need for direct messaging, but you should be able to follow status updates from within Friendica.
If you have supplied your mailbox connection information on your Settings page, you can enter the email address of anybody that has sent you a message recently and have their email messages show up in your social stream. You can also reply to them from within Friendica. You can do the same for Twitter accounts and Diaspora accounts.
People can also become friends with you from other networks. If a friend of yours has an identi.ca account, they can become friends with you by putting your Friendica Identity Address into their identi.ca subscription dialog box. A similar mechanism is available for Diaspora members, by putting your iendtity address into their search bar. In fact, you can "follow" almost anybody or any website that produces a syndication feed (RSS/Atom,etc.).
If we can find an information stream and a name to attach to the contact, we'll try to connect with them.
###Email
If you have supplied your mailbox connection information on your Settings page, you can enter the email address of anybody that has sent you a message recently and have their email messages show up in your social stream.
You can also reply to them from within Friendica.
People can also become friends with you from other networks.
If a friend of yours has an identi.ca account, they can become friends with you by putting your Friendica Identity Address into their identi.ca subscription dialog box.
A similar mechanism is available for Diaspora members, by putting your identity address into their search bar.
Note: Some versions of StatusNet software may require the full URL to your profile and may not work with the identity address. Note: Some versions of StatusNet software may require the full URL to your profile and may not work with the identity address.
When somebody requests friendship you will receive a notification. You will need to approve this before the friendship is complete. Notification
---
When somebody requests friendship you will receive a notification.
You will need to approve this before the friendship is complete.
Some networks allow people to send you messages without being friends and without your approval. Friendica does not allow this by default, as it would open a gateway for spam. Approval
---
Some networks allow people to send you messages without being friends and without your approval.
Friendica does not allow this by default, as it would open a gateway for spam.
When you receive a friendship notification from another Friendica member, you will have the option of allowing them as a "fan" or as a "friend". If they are a fan, they can see what you have to say, including private communications that you send to them, but not vice versa. As a friend, you can both communicate with each other. Unilateral or bilateral friendships
---
Diaspora uses a different terminology, and you are given the option of allowing them to "share with you", or being full friends. When you receive a friendship notification from another Friendica member, you will have the option of allowing them as a "fan" or as a "friend".
If they are a fan, they can see what you have to say, including private communications that you send to them, but not vice versa.
Once you have become friends, if you find the person constantly sends you spam or worthless information, you can "Ignore" them - without breaking off the friendship or even alerting them to the fact that you aren't interested in anything they are saying. In many ways they are like a "fan" - but they don't know this. They think they are a friend. As a friend, you can both communicate with each other.
You can also "block" a person. This completely blocks communications with that person. They may still be able to see your public posts, as can anybody in the world, but they cannot communicate with you directly.
You can also delete a friend no matter what the friendship status - which complete removes everything relating to that person from your website.
Diaspora uses a different terminology, and you are given the option of allowing them to "share with you", or being full friends.
Ignoring, blocking and deleting contacts
---
Once you have become friends, if you find the person constantly sends you spam or worthless information, you can "Ignore" them - without breaking off the friendship or even alerting them to the fact that you aren't interested in anything they are saying.
In many ways they are like a "fan" - but they don't know this.
They think they are a friend.
You can also "block" a person.
This completely blocks communications with that person.
They may still be able to see your public posts, as can anybody in the world, but they cannot communicate with you directly.
You can also delete a friend no matter what the friendship status - which completely removes everything relating to that person from your website.

View file

@ -1,13 +1,15 @@
Friendica Message Flow Friendica Message Flow
===
This page attempts to document some of the details of how messages get from one person to another in the Friendica network. There are multiple paths, using multiple protocols and message formats. This page documents some of the details of how messages get from one person to another in the Friendica network.
There are multiple paths, using multiple protocols and message formats.
Those attempting to understand these message flows should become familiar with (at the minimum) the DFRN protocol document (http://dfrn.org/dfrn.pdf) and the message passing elements of the OStatus stack (salmon and Pubsubhubbub).
Those attempting to understand these message flows should become familiar with (at the minimum) the [DFRN protocol document](http://dfrn.org/dfrn.pdf) and the message passing elements of the OStatus stack (salmon and Pubsubhubbub).
Most message passing involves the file include/items.php, which has functions for several feed-related import/export activities. Most message passing involves the file include/items.php, which has functions for several feed-related import/export activities.
When a message is posted, all immediate deliveries to all networks are made using include/notifier.php, which chooses how (and to whom) to deliver the message. This file also invokes the local side of all deliveries including DFRN-notify. When a message is posted, all immediate deliveries to all networks are made using include/notifier.php, which chooses how (and to whom) to deliver the message.
This file also invokes the local side of all deliveries including DFRN-notify.
mod/dfrn_notify.php handles the remote side of DFRN-notify. mod/dfrn_notify.php handles the remote side of DFRN-notify.
@ -19,36 +21,42 @@ Push (pubsubhubbub) feeds arrive via mod/pubsub.php
DFRN-poll feed imports arrive via include/poller.php as a scheduled task, this implements the local side of the DFRN-poll protocol. DFRN-poll feed imports arrive via include/poller.php as a scheduled task, this implements the local side of the DFRN-poll protocol.
Scenario #1. Bob posts a public status message Scenario #1. Bob posts a public status message
---
This is a public message with no conversation members so no private transport is used. There are two paths it can take - as a bbcode path to DFRN clients, and converted to HTML with the server's PuSH (pubsubhubbub) hubs notified. When a PuSH hub is operational, dfrn-poll clients prefer to receive their information through the PuSH channel. They will fall back on a daily poll in case the hub has delivery issues (this is quite common when using the default Google reference hub). If there is no specified hub or hubs, DFRN clients will poll at a configurable (per-contact) rate at up to 5-minute intervals. Feeds retrieved via dfrn-poll are bbcode and may also contain private conversations which the poller has permissions to see. This is a public message with no conversation members so no private transport is used.
There are two paths it can take - as a bbcode path to DFRN clients, and converted to HTML with the server's PuSH (pubsubhubbub) hubs notified.
When a PuSH hub is operational, dfrn-poll clients prefer to receive their information through the PuSH channel.
They will fall back on a daily poll in case the hub has delivery issues (this is quite common when using the default Google reference hub).
If there is no specified hub or hubs, DFRN clients will poll at a configurable (per-contact) rate at up to 5-minute intervals.
Feeds retrieved via dfrn-poll are bbcode and may also contain private conversations which the poller has permissions to see.
Scenario #2. Jack replies to Bob's public message. Jack is on the Friendica/DFRN network. Scenario #2. Jack replies to Bob's public message. Jack is on the Friendica/DFRN network.
---
Jack uses dfrn-notify to send a direct reply to Bob. Bob then creates a feed of the conversation and sends it to everybody involved in the conversation using dfrn-notify. PuSH hubs are notified that new content is available. The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks). Jack uses dfrn-notify to send a direct reply to Bob.
Bob then creates a feed of the conversation and sends it to everybody involved in the conversation using dfrn-notify.
PuSH hubs are notified that new content is available.
The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks).
Scenario #3. Mary replies to Bob's public message. Mary is on the Friendica/DFRN network. Scenario #3. Mary replies to Bob's public message. Mary is on the Friendica/DFRN network.
---
Mary uses dfrn-notify to send a direct reply to Bob. Bob then creates a feed of the conversation and sends it to everybody involved in the conversation (excluding himself, the conversation is now sent to both Jack and Mary). Messages are sent using dfrn-notify. Push hubs are also notified that new content is available. The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks). Mary uses dfrn-notify to send a direct reply to Bob.
Bob then creates a feed of the conversation and sends it to everybody involved in the conversation (excluding himself, the conversation is now sent to both Jack and Mary).
Messages are sent using dfrn-notify.
Push hubs are also notified that new content is available.
The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks).
Scenario #4. William replies to Bob's public message. William is on the OStatus network. Scenario #4. William replies to Bob's public message. William is on the OStatus network.
---
William uses salmon to notify Bob of the reply. Content is html embedded in salmon magic envelope. Bob then creates a feed of the conversation and sends it to all Friendica participants involved in the conversation using dfrn-notify (excluding himself, the conversation is sent to both Jack and Mary). Push hubs are notified that new content is available. The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks). William uses salmon to notify Bob of the reply.
Content is html embedded in salmon magic envelope.
Bob then creates a feed of the conversation and sends it to all Friendica participants involved in the conversation using dfrn-notify (excluding himself, the conversation is sent to both Jack and Mary).
Push hubs are notified that new content is available.
The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks).
Scenario #5. Bob posts a private message to Mary and Jack. Scenario #5. Bob posts a private message to Mary and Jack.
---
Message is delivered immediately to Mary and Jack using dfrn_notify. Public hubs are not notified. Requeueing is attempted in case of timeout. Replies follow the same flow as the public replies except that hubs are not notified and message is never made available in the public feed. The entire conversation is also made available to Mary and Jack (and nobody else) through their dfrn-poll personalised feed. Message is delivered immediately to Mary and Jack using dfrn_notify.
Public hubs are not notified.
Requeueing is attempted in case of timeout.
Replies follow the same flow as the public replies except that hubs are not notified and message is never made available in the public feed.
The entire conversation is also made available to Mary and Jack (and nobody else) through their dfrn-poll personalised feed.

View file

@ -1,35 +1,27 @@
Move Account How to move your account between servers
============ ============
* [Home](help) * [Home](help)
! **this is an experimental feature** ! **This is an experimental feature**
** How to move an account between servers ** * Go to "Settings" -> "[Export personal data](uexport)"
* Click on "Export account" to save your account data.
* **Save the file in a secure place!** It contains your details, your contacts, groups, and personal settings. It also contains your secret keys to authenticate yourself to your contacts.
* Go to your new server, and open *http://newserver.com/uimport* (there is not a direct link to this page at the moment).
* Do NOT create a new account prior to importing your old settings - uimport should be used *instead* of register.
* Load your saved account file and click "Import".
* After the move, the account on the old server will not work reliably anymore, and should be not used.
Go to "Settings" -> "[Export personal data](uexport)"
Click on "Export account" to save your account data.
This file contains your details, your contacts, groups, and personal settings.
It also contains your secret keys to authenticate yourself to your contacts:
**save this file in a secure place**!
Go to your new server, and open *http://newserver.com/uimport* (there is not a
direct link to this page at the moment).
Do NOT create a new account prior to importing your old settings - uimport should be used *instead* of register.
Load your saved account file and click "Import".
Friendica contacts
---
Friendica will recreate your account on the new server, with your contacts and groups. Friendica will recreate your account on the new server, with your contacts and groups.
A message is sent to Friendica contacts, to inform them about your move: if your A message is sent to Friendica contacts, to inform them about your move:
contacts are runnning on an updated server, your details on their If your contacts are runnning on an updated server, your details on their side will be automatically updated.
side will be automatically updated.
Contacts on Statusnet/Identi.ca or Diaspora will be archived, as we can't inform
them about your move.
You should ask them to remove your contact from their lists and re-add you, and you
should do the same with their contact.
After the move, the account on the old server will not work reliably anymore, and
should be not used.
StatusNet/GNUSocial/Diaspora contacts
---
Contacts on Statusnet/Identi.ca or Diaspora will be archived, as we can't inform them about your move.
You should ask them to remove your contact from their lists and re-add you, and you should do the same with their contact.

View file

@ -1,10 +1,19 @@
Friendica Addon/Plugin development Friendica Addon/Plugin development
========================== ==========================
Please see the sample addon 'randplace' for a working example of using some of these features. The facebook addon provides an example of integrating both "addon" and "module" functionality. Addons work by intercepting event hooks - which must be registered. Modules work by intercepting specific page requests (by URL path). Please see the sample addon 'randplace' for a working example of using some of these features.
The facebook addon provides an example of integrating both "addon" and "module" functionality.
Addons work by intercepting event hooks - which must be registered.
Modules work by intercepting specific page requests (by URL path).
Plugin names cannot contain spaces or other punctuation and are used as filenames and function names.
Plugin names cannot contain spaces or other punctuation and are used as filenames and function names. You may supply a "friendly" name within the comment block. Each addon must contain both an install and an uninstall function based on the addon/plugin name. For instance "plugin1name_install()". These two functions take no arguments and are usually responsible for registering (and unregistering) event hooks that your plugin will require. The install and uninstall functions will also be called (i.e. re-installed) if the plugin changes after installation - therefore your uninstall should not destroy data and install should consider that data may already exist. Future extensions may provide for "setup" amd "remove". You may supply a "friendly" name within the comment block.
Each addon must contain both an install and an uninstall function based on the addon/plugin name.
For instance "plugin1name_install()".
These two functions take no arguments and are usually responsible for registering (and unregistering) event hooks that your plugin will require.
The install and uninstall functions will also be called (i.e. re-installed) if the plugin changes after installation.
Therefore your uninstall should not destroy data and install should consider that data may already exist.
Future extensions may provide for "setup" amd "remove".
Plugins should contain a comment block with the four following parameters: Plugins should contain a comment block with the four following parameters:
@ -15,63 +24,71 @@ Plugins should contain a comment block with the four following parameters:
* Author: John Q. Public <john@myfriendicasite.com> * Author: John Q. Public <john@myfriendicasite.com>
*/ */
Register your plugin hooks during installation. Register your plugin hooks during installation.
register_hook($hookname, $file, $function); register_hook($hookname, $file, $function);
$hookname is a string and corresponds to a known Friendica hook. $hookname is a string and corresponds to a known Friendica hook.
$file is a pathname relative to the top-level Friendica directory. This *should* be 'addon/plugin_name/plugin_name.php' in most cases. $file is a pathname relative to the top-level Friendica directory.
This *should* be 'addon/plugin_name/plugin_name.php' in most cases.
$function is a string and is the name of the function which will be executed when the hook is called. $function is a string and is the name of the function which will be executed when the hook is called.
Arguments
---
Your hook callback functions will be called with at least one and possibly two arguments Your hook callback functions will be called with at least one and possibly two arguments
function myhook_function(&$a, &$b) { function myhook_function(&$a, &$b) {
} }
If you wish to make changes to the calling data, you must declare them as If you wish to make changes to the calling data, you must declare them as reference variables (with '&') during function declaration.
reference variables (with '&') during function declaration.
$a is the Friendica 'App' class - which contains a wealth of information ###$a
about the current state of Friendica, such as which module has been called, $a is the Friendica 'App' class.
configuration info, the page contents at the point the hook was invoked, profile It contains a wealth of information about the current state of Friendica:
and user information, etc. It is recommeded you call this '$a' to match its usage
elsewhere.
$b can be called anything you like. This is information which is specific to the hook * which module has been called,
currently being processed, and generally contains information that is being immediately * configuration information,
processed or acted on that you can use, display, or alter. Remember to declare it with * the page contents at the point the hook was invoked,
'&' if you wish to alter it. * profile and user information, etc.
It is recommeded you call this '$a' to match its usage elsewhere.
###$b
$b can be called anything you like.
This is information specific to the hook currently being processed, and generally contains information that is being immediately processed or acted on that you can use, display, or alter.
Remember to declare it with '&' if you wish to alter it.
Modules Modules
-------- --------
Plugins/addons may also act as "modules" and intercept all page requests for a given URL path. In order for a plugin to act as a module it needs to define a function "plugin_name_module()" which takes no arguments and need not do anything. Plugins/addons may also act as "modules" and intercept all page requests for a given URL path.
In order for a plugin to act as a module it needs to define a function "plugin_name_module()" which takes no arguments and needs not do anything.
If this function exists, you will now receive all page requests for "http://my.web.site/plugin_name" - with any number of URL components as additional arguments.
These are parsed into an array $a->argv, with a corresponding $a->argc indicating the number of URL components.
So http://my.web.site/plugin/arg1/arg2 would look for a module named "plugin" and pass its module functions the $a App structure (which is available to many components).
This will include:
If this function exists, you will now receive all page requests for "http://my.web.site/plugin_name" - with any number of URL components as additional arguments. These are parsed into an array $a->argv, with a corresponding $a->argc indicating the number of URL components. So http://my.web.site/plugin/arg1/arg2 would look for a module named "plugin" and pass its module functions the $a App structure (which is available to many components). This will include:
$a->argc = 3 $a->argc = 3
$a->argv = array(0 => 'plugin', 1 => 'arg1', 2 => 'arg2'); $a->argv = array(0 => 'plugin', 1 => 'arg1', 2 => 'arg2');
Your module functions will often contain the function plugin_name_content(&$a), which defines and returns the page body content. They may also contain plugin_name_post(&$a) which is called before the _content function and typically handles the results of POST forms. You may also have plugin_name_init(&$a) which is called very early on and often does module initialisation. Your module functions will often contain the function plugin_name_content(&$a), which defines and returns the page body content.
They may also contain plugin_name_post(&$a) which is called before the _content function and typically handles the results of POST forms.
You may also have plugin_name_init(&$a) which is called very early on and often does module initialisation.
Templates Templates
---------- ----------
If your plugin need some template, you can use Friendica template system. Friendica use [smarty3](http://www.smarty.net/) as template engine. If your plugin needs some template, you can use the Friendica template system.
Friendica uses [smarty3](http://www.smarty.net/) as a template engine.
Put your tpl files in *templates/* subfolder of your plugin. Put your tpl files in the *templates/* subfolder of your plugin.
In your code, like in function plugin_name_content(), load template file and execute it passing needed values: In your code, like in the function plugin_name_content(), load the template file and execute it passing needed values:
# load template file. first argument is the template name, # load template file. first argument is the template name,
# second is the plugin path relative to friendica top folder # second is the plugin path relative to friendica top folder
@ -80,143 +97,181 @@ In your code, like in function plugin_name_content(), load template file and exe
# apply template. first argument is the loaded template, # apply template. first argument is the loaded template,
# second an array of 'name'=>'values' to pass to template # second an array of 'name'=>'values' to pass to template
$output = replace_macros($tpl,array( $output = replace_macros($tpl,array(
'title' => 'My beautifull plugin', 'title' => 'My beautiful plugin',
)); ));
See also wiki page [Quick Template Guide](https://github.com/friendica/friendica/wiki/Quick-Template-Guide) See also the wiki page [Quick Template Guide](https://github.com/friendica/friendica/wiki/Quick-Template-Guide).
Current hooks: Current hooks
-------------- -------------
**'authenticate'** - called when a user attempts to login. ###'authenticate'
$b is an array 'authenticate' is called when a user attempts to login.
'username' => the supplied username $b is an array containing:
'password' => the supplied password
'authenticated' => set this to non-zero to authenticate the user.
'user_record' => successful authentication must also return a valid user record from the database
**'logged_in'** - called after a user has successfully logged in. 'username' => the supplied username
$b contains the $a->user array 'password' => the supplied password
'authenticated' => set this to non-zero to authenticate the user.
'user_record' => successful authentication must also return a valid user record from the database
###'logged_in'
'logged_in' is called after a user has successfully logged in.
$b contains the $a->user array.
**'display_item'** - called when formatting a post for display. ###'display_item'
$b is an array 'display_item' is called when formatting a post for display.
'item' => The item (array) details pulled from the database $b is an array:
'output' => the (string) HTML representation of this item prior to adding it to the page
**'post_local'** - called when a status post or comment is entered on the local system 'item' => The item (array) details pulled from the database
$b is the item array of the information to be stored in the database 'output' => the (string) HTML representation of this item prior to adding it to the page
{Please note: body contents are bbcode - not HTML)
**'post_local_end'** - called when a local status post or comment has been stored on the local system ###'post_local'
$b is the item array of the information which has just been stored in the database * called when a status post or comment is entered on the local system
{Please note: body contents are bbcode - not HTML) * $b is the item array of the information to be stored in the database
* Please note: body contents are bbcode - not HTML
**'post_remote'** - called when receiving a post from another source. This may also be used to post local activity or system generated messages. ###'post_local_end'
$b is the item array of information to be stored in the database and the item * called when a local status post or comment has been stored on the local system
body is bbcode. * $b is the item array of the information which has just been stored in the database
* Please note: body contents are bbcode - not HTML
**'settings_form'** - called when generating the HTML for the user Settings page ###'post_remote'
$b is the (string) HTML of the settings page before the final '</form>' tag. * called when receiving a post from another source. This may also be used to post local activity or system generated messages.
* $b is the item array of information to be stored in the database and the item body is bbcode.
**'settings_post'** - called when the Settings pages are submitted. ###'settings_form'
$b is the $_POST array * called when generating the HTML for the user Settings page
* $b is the (string) HTML of the settings page before the final '</form>' tag.
**'plugin_settings'** - called when generating the HTML for the addon settings page ###'settings_post'
$b is the (string) HTML of the addon settings page before the final '</form>' tag. * called when the Settings pages are submitted
* $b is the $_POST array
**'plugin_settings_post'** - called when the Addon Settings pages are submitted. ###'plugin_settings'
$b is the $_POST array * called when generating the HTML for the addon settings page
* $b is the (string) HTML of the addon settings page before the final '</form>' tag.
**'profile_post'** - called when posting a profile page. ###'plugin_settings_post'
$b is the $_POST array * called when the Addon Settings pages are submitted
* $b is the $_POST array
**'profile_edit'** - called prior to output of profile edit page ###'profile_post'
$b is array * called when posting a profile page
'profile' => profile (array) record from the database * $b is the $_POST array
'entry' => the (string) HTML of the generated entry
###'profile_edit'
'profile_edit' is called prior to output of profile edit page.
$b is an array containing:
**'profile_advanced'** - called when the HTML is generated for the 'Advanced profile', corresponding to the 'Profile' tab within a person's profile page. 'profile' => profile (array) record from the database
$b is the (string) HTML representation of the generated profile 'entry' => the (string) HTML of the generated entry
(The profile array details are in $a->profile)
**'directory_item'** - called from the Directory page when formatting an item for display ###'profile_advanced'
$b is an array * called when the HTML is generated for the 'Advanced profile', corresponding to the 'Profile' tab within a person's profile page
'contact' => contact (array) record for the person from the database * $b is the (string) HTML representation of the generated profile
'entry' => the (string) HTML of the generated entry * The profile array details are in $a->profile.
**'profile_sidebar_enter'** - called prior to generating the sidebar "short" profile for a page ###'directory_item'
$b is (array) the person's profile array 'directory_item' is called from the Directory page when formatting an item for display.
$b is an array:
**'profile_sidebar'** - called when generating the sidebar "short" profile for a page 'contact' => contact (array) record for the person from the database
$b is an array 'entry' => the (string) HTML of the generated entry
'profile' => profile (array) record for the person from the database
'entry' => the (string) HTML of the generated entry
**'contact_block_end'** - called when formatting the block of contacts/friends on a profile sidebar has completed ###'profile_sidebar_enter'
$b is an array * called prior to generating the sidebar "short" profile for a page
'contacts' => array of contacts * $b is the person's profile array
'output' => the (string) generated HTML of the contact block
**'bbcode'** - called during conversion of bbcode to html ###'profile_sidebar'
$b is (string) converted text 'profile_sidebar is called when generating the sidebar "short" profile for a page.
$b is an array:
**'html2bbcode'** - called during conversion of html to bbcode (e.g. remote message posting) 'profile' => profile (array) record for the person from the database
$b is (string) converted text 'entry' => the (string) HTML of the generated entry
**'page_header'** - called after building the page navigation section ###'contact_block_end'
$b is (string) HTML of nav region is called when formatting the block of contacts/friends on a profile sidebar has completed.
$b is an array:
**'personal_xrd'** - called prior to output of personal XRD file. 'contacts' => array of contacts
$b is an array 'output' => the (string) generated HTML of the contact block
'user' => the user record for the person
'xml' => the complete XML to be output
**'home_content'** - called prior to output home page content, shown to unlogged users ###'bbcode'
$b is (string) HTML of section region * called during conversion of bbcode to html
* $b is a string converted text
**'contact_edit'** - called when editing contact details on an individual from the Contacts page ###'html2bbcode'
$b is (array) * called during conversion of html to bbcode (e.g. remote message posting)
'contact' => contact record (array) of target contact * $b is a string converted text
'output' => the (string) generated HTML of the contact edit page
**'contact_edit_post'** - called when posting the contact edit page ###'page_header'
$b is the $_POST array * called after building the page navigation section
* $b is a string HTML of nav region
**'init_1'** - called just after DB has been opened and before session start ###'personal_xrd'
$b is not used or passed 'personal_xrd' is called prior to output of personal XRD file.
$b is an array:
**'page_end'** - called after HTML content functions have completed 'user' => the user record for the person
$b is (string) HTML of content div 'xml' => the complete XML to be output
**'avatar_lookup'** - called when looking up the avatar ###'home_content'
$b is (array) * called prior to output home page content, shown to unlogged users
'size' => the size of the avatar that will be looked up * $b is (string) HTML of section region
'email' => email to look up the avatar for
'url' => the (string) generated URL of the avatar
**'emailer_send_prepare'** - called from Emailer::send() before building the mime message ###'contact_edit'
$b is (array) , params to Emailer::send() is called when editing contact details on an individual from the Contacts page.
'fromName' => name of the sender $b is an array:
'fromEmail' => email fo the sender
'replyTo' => replyTo address to direct responses
'toEmail' => destination email address
'messageSubject' => subject of the message
'htmlVersion' => html version of the message
'textVersion' => text only version of the message
'additionalMailHeader' => additions to the smtp mail header
**'emailer_send'** - called before calling PHP's mail() 'contact' => contact record (array) of target contact
$b is (array) , params to mail() 'output' => the (string) generated HTML of the contact edit page
'to'
'subject'
'body'
'headers'
###'contact_edit_post'
* called when posting the contact edit page.
* $b is the $_POST array
A complete list of all hook callbacks with file locations (generated 14-Feb-2012): Please see the source for details of any hooks not documented above. ###'init_1'
* called just after DB has been opened and before session start
* $b is not used or passed
###'page_end'
* called after HTML content functions have completed
* $b is (string) HTML of content div
###'avatar_lookup'
'avatar_lookup' is called when looking up the avatar.
$b is an array:
'size' => the size of the avatar that will be looked up
'email' => email to look up the avatar for
'url' => the (string) generated URL of the avatar
###'emailer_send_prepare'
'emailer_send_prepare' called from Emailer::send() before building the mime message.
$b is an array, params to Emailer::send()
'fromName' => name of the sender
'fromEmail' => email fo the sender
'replyTo' => replyTo address to direct responses
'toEmail' => destination email address
'messageSubject' => subject of the message
'htmlVersion' => html version of the message
'textVersion' => text only version of the message
'additionalMailHeader' => additions to the smtp mail header
###'emailer_send'
is called before calling PHP's mail().
$b is an array, params to mail()
'to'
'subject'
'body'
'headers'
Complete list of hook callbacks
---
Here is a complete list of all hook callbacks with file locations (as of 14-Feb-2012). Please see the source for details of any hooks not documented above.
boot.php: call_hooks('login_hook',$o); boot.php: call_hooks('login_hook',$o);

View file

@ -3,49 +3,83 @@ Profiles
* [Home](help) * [Home](help)
Friendica has unlimited profiles. You may use different profiles to show different "sides of yourself" to different audiences. Friendica has unlimited profiles.
You may use different profiles to show different "sides of yourself" to different audiences.
You always have a profile known as your "default" or "public" profile. This profile is always available to the general public and cannot be hidden (there may be rare exceptions on privately run or disconnected sites). You may, and probably should restrict the information you make available on your public profile. Default / public profile
---
You always have a profile known as your "default" or "public" profile.
This profile is always available to the general public and cannot be hidden (there may be rare exceptions on privately run or disconnected sites).
You may, and probably should restrict the information you make available on your public profile.
That said, if you want other friends to be able to find you, it helps to have the following information in your public profile... That said, if you want other friends to be able to find you, it helps to have the following information in your public profile:
* Your real name * Your real name
* A photo of **you** * A photo of **you**
* Your location on the planet, at least to a country level. * Your location on the planet, at least to a country level.
Without this basic information, you could get very lonely here. Most people (even your best friends) will not try and connect with somebody that has a fake name or doesn't contain a real photo. Without this basic information, you could get very lonely here.
Most people (even your best friends) will not try and connect with somebody that has a fake name or doesn't contain a real photo.
In addition, if you'd like to meet people that share some general interests with you, please take a moment and add some "Public Keywords" to your profile. Such as "music, linux, photography" or whatever. You can add as many keywords as you like. In addition, if you'd like to meet people that share some general interests with you, please take a moment and add some "Public Keywords" to your profile.
Such as "music, linux, photography" or whatever.
You can add as many keywords as you like.
Your default or public profile is also shown to contacts on other networks, since they do not have the ability to view your private profiles.
Only members of the Friendica network can see alternate/private profiles.
Your default or public profile is also shown to contacts on other networks, since they do not have the ability to view your private profiles. Only members of the Friendica network can see alternate/private profiles. Alternate profiles
---
To create an alternate profile, select "Profiles" from the menu of your Friendica site.
You may edit an existing profile, change the profile photo, or create a new profile.
You may also create a "clone" of an existing profile if you only wish to change a few items but don't wish to enter all the information again.
To assign a profile to specific persons, select the person from your "Contacts" page and click the pencil "Edit" icon.
You will find a dropdown box listing the various profiles available.
If this box is not selectable, the person is not in a supported network and cannot be assigned a specific profile.
To create an alternate profile, select "Profiles" from the menu of your Friendica site. You may edit an existing profile, change the profile photo, or create a new profile. You may also create a "clone" of an existing profile if you only wish to change a few items but don't wish to enter all the information again. Once a profile has been selected, when the person views your profile from one of the "magic profile links" on their site, they will see the private profile you have assigned.
If they are not logged into their site or view your profile from elsewhere, they will see your public profile.
To assign a profile to specific persons, select the person from your "Contacts" page and click the pencil "Edit" icon. You will find a dropdown box listing the various profiles available. If this box is not selectable, the person is not in a supported network and cannot be assigned a specific profile. A magic profile link is indicated by a special cursor when hovering over a contact's name or photo.
Currently this cursor is a hand next to a small padlock.
These magic cursors indicate that by following the link, you are able to access special areas of the other person's pages which are only available to friends and may not be available to the general public.
Once a profile has been selected, when the person views your profile from one of the "magic profile links" on their site, they will see the private profile you have assigned. If they are not logged into their site or view your profile from elsewhere, they will see your public profile. You may also discover that (assuming you have the proper permissions) you may be able to post directly on the other person's profile (often called a "wall-to-wall" post).
You may also be able to comment directly on posts from while visiting the other person's profile page.
A magic profile link is indicated by a special cursor when hovering over a contact's name or photo. Currently this cursor is a hand next to a small padlock. These magic cursors indicate that by following the link, you are able to access special areas of the other person's pages which are only available to friends and may not be available to the general public. There are two settings which allow you to publish your profile to a directory and ensure that it can be found by others.
You can change these through settings on the "Settings" page.
You may also discover that (assuming you have the proper permissions) you may be able to post directly on the other person's profile (often called a "wall-to-wall" post). You may also be able to comment directly on posts from while visiting the other person's profile page. One setting allows you to publish your profile in the site directory of this Friendica server.
Another option (this may have been disabled by the site creator) allows you to publish your profile in the "Global Directory".
There are two settings which allow you to publish your profile to a directory and ensure that it can be found by others. You can change these through settings on the "Settings" page. One setting allows you to publish your profile in the site directory of this Friendica server. Another option (this may have been disabled by the site creator) allows you to publish your profile in the "Global Directory". This is a mega directory which contains people from many other Friendica installations world-wide. This is a mega directory which contains people from many other Friendica installations world-wide.
If you do not wish to be visible to any of these sites, you may leave your profile unpublished. If you do not wish to be visible to any of these sites, you may leave your profile unpublished.
Although you may have multiple profiles, you only have one profile photo. This is intentional. In early tests we experimented with different photos for each profile and found it was very confusing for people. They might see a different picture depending on what website they visited or what conversation they were in, and often alerted them to the fact that other people might be able to see different profiles of you than they could see. Although you may have multiple profiles, you only have one profile photo.
This is intentional.
In early tests we experimented with different photos for each profile and found it was very confusing for people.
They might see a different picture depending on what website they visited or what conversation they were in, and often alerted them to the fact that other people might be able to see different profiles of you than they could see.
(But you can use the rich-text information boxes within a profile such as "Tell us about yourself" and link other photos onto the page.) (But you can use the rich-text information boxes within a profile such as "Tell us about yourself" and link other photos onto the page.)
**Keywords and Directory Search** Keywords and Directory Search
---
On the site Directory page, you may search for people with published profiles who are on this site. The search is typically for your nickname or part of your full name. However this search will also match against other profile fields - such as gender, location, "about", work, and education. You may also include "Keywords" in your default profile - which may be used to search for common interests with other members. You have two sets of keywords available - public and private. Private keywords are *not* visible to anybody. You could use these keywords to locate people who share membership in secret societies, or that share a love of fishing (for example) - without making this information visible on your public profile. Public keywords are used in the friend suggestion tool and although they aren't readily visible, they may be seen by viewing the HTML of your profile page. On the site Directory page, you may search for people with published profiles who are on this site.
The search is typically for your nickname or part of your full name.
Directory searches are also able to use "boolean" logic so that you can search for "+lesbian +Florida" and find those who's sexual preference (or keywords) contain the world "lesbian" and that live in Florida. See the section on "Topical Tags" on the [Tags-and-Mentions](help/Tags-and-Mentions) page for more information on performing boolean searches. However this search will also match against other profile fields - such as gender, location, "about", work, and education.
You may also include "Keywords" in your default profile - which may be used to search for common interests with other members.
On your Contacts page is a link to "Find People with Shared Interests" (unless your site administrator has disabled the global directory). This will combine both your public and private keywords, and find people in the global directory who have matching and/or similar keywords. (Your private keywords are not identified or stored on the global directory). The more keywords you provide, the more relevant the search results that are returned. These are sorted by relevance. You may discover that you are the first person on the list - because you are very likely the most relevant match for your keywords in the directory. You have two sets of keywords available - public and private.
Private keywords are *not* visible to anybody.
You could use these keywords to locate people who share membership in secret societies, or that share a love of fishing (for example) - without making this information visible on your public profile.
Public keywords are used in the friend suggestion tool and although they aren't readily visible, they may be seen by viewing the HTML of your profile page.
Directory searches are also able to use "boolean" logic so that you can search for "+lesbian +Florida" and find those who's sexual preference (or keywords) contain the world "lesbian" and that live in Florida.
See the section on "Topical Tags" on the [Tags-and-Mentions](help/Tags-and-Mentions) page for more information on performing boolean searches.
On your Contacts page is a link to "Find People with Shared Interests" (unless your site administrator has disabled the global directory).
This will combine both your public and private keywords, and find people in the global directory who have matching and/or similar keywords.
(Your private keywords are not identified or stored on the global directory).
The more keywords you provide, the more relevant the search results that are returned.
These are sorted by relevance.
You may discover that you are the first person on the list - because you are very likely the most relevant match for your keywords in the directory.

View file

@ -7,8 +7,16 @@ We don't like to see people leave Friendica, but if you need to remove your acco
http://sitename/removeme http://sitename/removeme
with your web browser. You will need to be logged in at the time. with your web browser.
You will need to be logged in at the time.
You will be asked for your password to confirm the request. If this matches your stored password, your account will immediately be blocked to all probing. Unlike some social networks we do **not** hold onto it for a grace period in case you change your mind. All your content and user data, etc is instantly removed. For all intents and purposes, the account is gone in moments. You will be asked for your password to confirm the request.
If this matches your stored password, your account will immediately be blocked to all probing.
Unlike some social networks we do **not** hold onto it for a grace period in case you change your mind.
All your content and user data, etc is instantly removed. For all intents and purposes, the account is gone in moments.
We then send out an "unfriend" signal to all of your contacts. This signal deletes all content on those networks. Unfortunately, due to limitations of the other networks, this only works well with Friendica contacts. We allow four days for this, in case some servers were down and the unfriend signal was queued. After this, we finish off deleting the account. We then send out an "unfriend" signal to all of your contacts.
This signal deletes all content on those networks.
Unfortunately, due to limitations of the other networks, this only works well with Friendica contacts.
We allow four days for this, in case some servers were down and the unfriend signal was queued.
After this, we finish off deleting the account.

View file

@ -1,227 +1,240 @@
Here are some of the built-in features which don't have an exposed interface or are otherwise undocumented. Configuration settings are stored in the file ".htconfig.php". Edit this file with a text editor to make the desired changes. Several system settings are already documented in that file and will not be covered here. Settings
===
Here are some of the built-in features which don't have an exposed interface or are otherwise undocumented.
Configuration settings are stored in the file ".htconfig.php".
Edit this file with a text editor to make the desired changes.
Several system settings are already documented in that file and will not be covered here.
**Hot Keys** Hot Keys
---
Friendica traps the following keyboard events: Friendica traps the following keyboard events:
* [Pause] - Pauses "Ajax" update activity. This is the process that provides updates without reloading the page. You may wish to pause it to reduce network usage and/or as a debugging aid for javascript developers. A pause indicator will appear at the lower right hand corner of the page. Hit the [pause] key once again to resume. * [Pause] - Pauses "Ajax" update activity. This is the process that provides updates without reloading the page. You may wish to pause it to reduce network usage and/or as a debugging aid for javascript developers. A pause indicator will appear at the lower right hand corner of the page. Hit the [pause] key once again to resume.
* [F8] - Displays a language selector * [F8] - Displays a language selector
**Birthday Notifications** Birthday Notifications
---
Birthday events are published on your Home page for any friends having a birthday in the coming 6 days. In order for your birthday to be discoverable by all of your friends, you must set your birthday (at least the month and day) in your default profile. You are not required to provide the year. Birthday events are published on your Home page for any friends having a birthday in the coming 6 days.
In order for your birthday to be discoverable by all of your friends, you must set your birthday (at least the month and day) in your default profile.
You are not required to provide the year.
**Configuration settings** System settings
---
###Language
**Language**
System Setting
Please see util/README for information on creating language translations. Please see util/README for information on creating language translations.
Config: Config:
```
$a->config['system']['language'] = 'name';
```
$a->config['system']['language'] = 'name';
**System Theme** ###System Theme
System Setting Choose a theme to be the default system theme. This can be over-ridden by user profiles.
Default theme is "default".
Choose a named theme to be the default system theme (which may be over-ridden by user profiles). Default theme is "default".
Config: Config:
```
$a->config['system']['theme'] = 'theme-name';
```
$a->config['system']['theme'] = 'theme-name';
**Verify SSL Certitificates** ###Proxy Configuration Settings
Security setting If your site uses a proxy to connect to the internet, you may use these settings to communicate with the outside world.
The outside world still needs to be able to see your website, or this will not be very useful.
By default Friendica allows SSL communication between websites that have "self-signed" SSL certificates. For the widest compatibility with browsers and other networks we do not recommend using self-signed certificates, but we will not prevent you from using them. SSL encrypts all the data transmitted between sites (and to your browser) and this allows you to have completely encrypted communications, and also protect your login session from hijacking. Self-signed certificates can be generated for free, without paying top-dollar for a website SSL certificate - however these aren't looked upon favourably in the security community because they can be subject to so-called "man-in-the-middle" attacks. If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites.
Config: Config:
```
$a->config['system']['verifyssl'] = true;
```
$a->config['system']['proxy'] = "http://proxyserver.domain:port";
$a->config['system']['proxyuser'] = "username:password";
**Allowed Friend Domains** ###Network Timeout
Corporate/Edu enhancement How long to wait on a network communication before timing out.
Value is in seconds.
Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. (Wildcard support on Windows platforms requires PHP5.3). By default, any (valid) domain may establish friendships with this site. Default is 60 seconds.
Set to 0 for unlimited (not recommended).
Config: Config:
```
$a->config['system']['allowed_sites'] = "sitea.com, *siteb.com";
```
$a->config['system']['curl_timeout'] = 60;
**Allowed Email Domains** ###Banner/Logo
Corporate/Edu enhancement Set the content for the site banner.
The default logo is the Friendica logo and name.
Comma separated list of domains which are allowed in email addresses for registrations to this site. This can lockout those who are not part of this organisation from registering here. Wildcards are accepted. (Wildcard support on Windows platforms requires PHP5.3). By default, any (valid) email address is allowed in registrations. You may wish to provide HTML/CSS to style and/or position this content, as it may not be themed by default.
Config: Config:
```
$a->config['system']['allowed_email'] = "sitea.com, *siteb.com";
```
**Block Public** $a->config['system']['banner'] = '<span id="logo-text">My Great Website</span>';
Corporate/Edu enhancement ###Maximum Image Size
Set to true to block public access to all otherwise public personal pages on this site unless you are currently logged in. This blocks the viewing of profiles, friends, photos, the site directory and search pages to unauthorised persons. A side effect is that entries from this site will not appear in the global directory. We recommend specifically disabling that also (setting is described elsewhere on this page). Note: this is specifically for sites that desire to be "standalone" and do not wish to be connected to any other Friendica sites. Unauthorised persons will also not be able to request friendship with site members. Default is false. Available in version 2.2 or greater. Maximum size in bytes of uploaded images.
The default is set to 0, which means no limits.
Config: Config:
```
$a->config['system']['block_public'] = true;
```
$a->config['system']['maximagesize'] = 1000000;
**Force Publish** ###UTF-8 Regular Expressions
Corporate/Edu enhancement During registrations, full names are checked using UTF-8 regular expressions.
This requires PHP to have been compiled with a special setting to allow UTF-8 expressions.
By default, each user can choose on their Settings page whether or not to have their profile published in the site directory. This setting forces all If you are completely unable to register accounts, set no_utf to true.
profiles on this site to be listed in the site directory and there is no option provided to the user to change it. Default is false. The default is set to false (meaning UTF8 regular expressions are supported and working).
Config: Config:
```
$a->config['system']['publish_all'] = true;
```
$a->config['system']['no_utf'] = true;
**Global Directory** ###Check Full Names
Corporate/Edu enhancement You may find a lot of spammers trying to register on your site.
During testing we discovered that since these registrations were automatic, the "Full Name" field was often set to just an account name with no space between first and last name.
This configures the URL to update the global directory, and is supplied in the default configuration. The undocumented part is that if this is not set, the global directory is completely unavailable to the application. This allows a private community to be completely isolated from the global mistpark network. If you would like to support people with only one name as their full name, you may change this setting to true.
Default is false.
```
$a->config['system']['directory_submit_url'] = 'http://dir.friendica.com/submit';
```
**Proxy Configuration Settings**
If your site uses a proxy to connect to the internet, you may use these settings to communicate with the outside world (the outside world still needs to be able to see your website, or this will not be very useful).
Config: Config:
```
$a->config['system']['proxy'] = "http://proxyserver.domain:port";
$a->config['system']['proxyuser'] = "username:password";
```
$a->config['system']['no_regfullname'] = true;
**Network Timeout** ###OpenID
How long to wait on a network communication before timing out. Value is in seconds. Default is 60 seconds. Set to 0 for unlimited (not recommended). By default, OpenID may be used for both registration and logins.
If you do not wish to make OpenID facilities available on your system (at all), set 'no_openid' to true.
Default is false.
Config: Config:
```
$a->config['system']['curl_timeout'] = 60;
```
$a->config['system']['no_openid'] = true;
**Banner/Logo** ###Multiple Registrations
Set the content for the site banner. Default is the Friendica logo and name. You may wish to provide HTML/CSS to style and/or position this content, as it may not be themed by default. The ability to create "Pages" requires a person to register more than once.
Your site configuration can block registration (or require approval to register).
By default, logged in users can register additional accounts for use as pages.
These will still require approval if REGISTER_APPROVE is selected.
You may prohibit logged in users from creating additional accounts by setting 'block_extended_register' to true.
Default is false.
Config: Config:
```
$a->config['system']['banner'] = '<span id="logo-text">My Great Website</span>';
```
$a->config['system']['block_extended_register'] = true;
**Maximum Image Size** Security settings
---
Maximum size in bytes of uploaded images. Default is 0, which means no limits. ###Verify SSL Certitificates
By default Friendica allows SSL communication between websites that have "self-signed" SSL certificates.
For the widest compatibility with browsers and other networks we do not recommend using self-signed certificates, but we will not prevent you from using them.
SSL encrypts all the data transmitted between sites (and to your browser). This allows you to have completely encrypted communications, and also protect your login session from hijacking.
Self-signed certificates can be generated for free, without paying top-dollar for a website SSL certificate.
However these aren't looked upon favourably in the security community because they can be subject to so-called "man-in-the-middle" attacks.
If you wish, you can turn on strict certificate checking.
This will mean you cannot connect (at all) to self-signed SSL sites.
Config: Config:
```
$a->config['system']['maximagesize'] = 1000000;
```
$a->config['system']['verifyssl'] = true;
**UTF-8 Regular Expressions** Corporate/Edu enhancements
---
During registrations, full names are checked using UTF-8 regular expressions. This requires PHP to have been compiled with a special setting to allow UTF-8 expressions. If you are completely unable to register accounts, set no_utf to true. Default is false (meaning UTF8 regular expressions are supported and working). ###Allowed Friend Domains
Comma separated list of domains which are allowed to establish friendships with this site.
Wildcards are accepted.
(Wildcard support on Windows platforms requires PHP5.3).
By default, any (valid) domain may establish friendships with this site.
Config: Config:
```
$a->config['system']['no_utf'] = true;
```
$a->config['system']['allowed_sites'] = "sitea.com, *siteb.com";
**Check Full Names** ###Allowed Email Domains
You may find a lot of spammers trying to register on your site. During testing we discovered that since these registrations were automatic, the "Full Name" field was often set to just an account name with no space between first and last name. If you would like to support people with only one name as their full name, you may change this setting to true. Default is false. Comma separated list of domains which are allowed in email addresses for registrations to this site.
This can lockout those who are not part of this organisation from registering here.
Wildcards are accepted.
(Wildcard support on Windows platforms requires PHP5.3).
By default, any (valid) email address is allowed in registrations.
Config: Config:
```
$a->config['system']['no_regfullname'] = true;
```
$a->config['system']['allowed_email'] = "sitea.com, *siteb.com";
**OpenID** ###Block Public
By default, OpenID may be used for both registration and logins. If you do not wish to make OpenID facilities available on your system (at all), set 'no_openid' to true. Default is false. Set to true to block public access to all otherwise public personal pages on this site unless you are currently logged in.
This blocks the viewing of profiles, friends, photos, the site directory and search pages to unauthorised persons.
A side effect is that entries from this site will not appear in the global directory.
We recommend specifically disabling that also (setting is described elsewhere on this page).
Note: this is specifically for sites that desire to be "standalone" and do not wish to be connected to any other Friendica sites.
Unauthorised persons will also not be able to request friendship with site members.
Default is false.
Available in version 2.2 or greater.
Config: Config:
```
$a->config['system']['no_openid'] = true;
```
$a->config['system']['block_public'] = true;
**Multiple Registrations** ###Force Publish
The ability to create "Pages" requires a person to register more than once. Your site configuration can block registration (or require approval to register). By default logged in users can register additional accounts for use as pages. These will still require approval if REGISTER_APPROVE is selected. You may prohibit logged in users from creating additional accounts by setting 'block_extended_register' to true. Default is false. By default, each user can choose on their Settings page whether or not to have their profile published in the site directory.
This setting forces all profiles on this site to be listed in the site directory and there is no option provided to the user to change it.
Default is false.
Config: Config:
```
$a->config['system']['block_extended_register'] = true;
```
$a->config['system']['publish_all'] = true;
**Developer Settings** ###Global Directory
This configures the URL to update the global directory, and is supplied in the default configuration.
The undocumented part is that if this is not set, the global directory is completely unavailable to the application.
This allows a private community to be completely isolated from the global mistpark network.
$a->config['system']['directory_submit_url'] = 'http://dir.friendica.com/submit';
Developer Settings
---
### Debugging
Most useful when debugging protocol exchanges and tracking down other communications issues. Most useful when debugging protocol exchanges and tracking down other communications issues.
Config: Config:
``` $a->config['system']['debugging'] = true;
$a->config['system']['debugging'] = true; $a->config['system']['logfile'] = 'logfile.out';
$a->config['system']['logfile'] = 'logfile.out'; $a->config['system']['loglevel'] = LOGGER_DEBUG;
$a->config['system']['loglevel'] = LOGGER_DEBUG;
``` Turns on detailed debugging logs which will be stored in 'logfile.out' (which must be writeable by the webserver).
Turns on detailed debugging logs which will be stored in 'logfile.out' (which must be writeable by the webserver). LOGGER_DEBUG will show a good deal of information about system activity but will not include detailed data. You may also select LOGGER_ALL but due to the volume of information we recommend only enabling this when you are tracking down a specific problem. Other log levels are possible but are not being used at the present time. LOGGER_DEBUG will show a good deal of information about system activity but will not include detailed data.
You may also select LOGGER_ALL but due to the volume of information we recommend only enabling this when you are tracking down a specific problem.
Other log levels are possible but are not being used at the present time.
**PHP error logging** ###PHP error logging
Use the following settings to redirect PHP errors to a file. Use the following settings to redirect PHP errors to a file.
Config: Config:
``` error_reporting(E_ERROR | E_WARNING | E_PARSE );
error_reporting(E_ERROR | E_WARNING | E_PARSE ); ini_set('error_log','php.out');
ini_set('error_log','php.out'); ini_set('log_errors','1');
ini_set('log_errors','1'); ini_set('display_errors', '0');
ini_set('display_errors', '0');
```
This will put all PHP errors in the file php.out (which must be writeable by the webserver). Undeclared variables are occasionally referenced in the program and therefore we do not recommend using E_NOTICE or E_ALL. The vast majority of issues reported at these levels are completely harmless. Please report to the developers any errors you encounter in the logs using the recommended settings above. They generally indicate issues which need to be resolved. This will put all PHP errors in the file php.out (which must be writeable by the webserver).
Undeclared variables are occasionally referenced in the program and therefore we do not recommend using E_NOTICE or E_ALL.
The vast majority of issues reported at these levels are completely harmless.
Please report to the developers any errors you encounter in the logs using the recommended settings above.
They generally indicate issues which need to be resolved.
If you encounter a blank (white) page when using the application, view the PHP logs - as this almost always indicates an error has occurred. If you encounter a blank (white) page when using the application, view the PHP logs - as this almost always indicates an error has occurred.

View file

@ -1,6 +1,11 @@
This is your Network Tab. If you get lost, you can <a href="help/network">click this link</a> to bring yourself back here. This is your Network Tab.
If you get lost, you can <a href="help/network">click this link</a> to bring yourself back here.
This is a bit like the Newsfeed at Facebook or the Stream at Diaspora. It's where all the posts from your contacts, groups, and feeds will appear. If you're new, you won't see anything in this page, unless you posted your status in the last step. If you've already added a few friends, you'll be able to see their posts. Here, you can comment, like, or dislike posts, or click on somebody's name to visit their profile page where you can write on their wall. This is a bit like the Newsfeed at Facebook or the Stream at Diaspora.
It's where all the posts from your contacts, groups, and feeds will appear.
If you're new, you won't see anything in this page, unless you posted your status in the last step.
If you've already added a few friends, you'll be able to see their posts.
Here, you can comment, like, or dislike posts, or click on somebody's name to visit their profile page where you can write on their wall.
Now we need to fill it up, the first step, is to <a href="help/makingnewfriends"> make some new friends</a>. Now we need to fill it up, the first step, is to <a href="help/makingnewfriends"> make some new friends</a>.