Friendica Communications Server
-Copyright (c) 2010-2016 the Friendica Project
+Copyright (c) 2010-2017 the Friendica Project
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
* Sets the base url for use in cmdline programs which don't have
* $_SERVER variables
*/
-function check_url(App &$a) {
+function check_url(App $a) {
$url = get_config('system','url');
/**
* @brief Automatic database updates
*/
-function update_db(App &$a) {
+function update_db(App $a) {
$build = get_config('system','build');
if(! x($build))
$build = set_config('system','build',DB_UPDATE_VERSION);
* @param App $a
*
*/
-function check_plugins(App &$a) {
+function check_plugins(App $a) {
$r = q("SELECT * FROM `addon` WHERE `installed` = 1");
if (dbm::is_result($r))
}
/// @deprecated
-function set_template_engine(App &$a, $engine = 'internal') {
+function set_template_engine(App $a, $engine = 'internal') {
/// @note This function is no longer necessary, but keep it as a wrapper to the class method
/// to avoid breaking themes again unnecessarily
---
Your hook callback functions will be called with at least one and possibly two arguments
- function myhook_function(&$a, &$b) {
+ function myhook_function(App $a, &$b) {
}
$a->argc = 3
$a->argv = array(0 => 'plugin', 1 => 'arg1', 2 => 'arg2');
-Your module functions will often contain the function plugin_name_content(App &$a), which defines and returns the page body content.
-They may also contain plugin_name_post(App &$a) which is called before the _content function and typically handles the results of POST forms.
-You may also have plugin_name_init(App &$a) which is called very early on and often does module initialisation.
+Your module functions will often contain the function plugin_name_content(App $a), which defines and returns the page body content.
+They may also contain plugin_name_post(App $a) which is called before the _content function and typically handles the results of POST forms.
+You may also have plugin_name_init(App $a) which is called very early on and often does module initialisation.
Templates
---
is called after the other queries have passed.
The registered function can add, change or remove the acl_lookup() variables.
- 'results' => array of the acl_lookup() vars
+ 'results' => array of the acl_lookup() vars
Complete list of hook callbacks
file: include/ItemsManager.php\r
<?php\r
namespace \Friendica;\r
- \r
+\r
class ItemsManager {\r
public function getAll() { ... }\r
public function getByID($id) { ... }\r
```\r
file: mod/network.php\r
<?php\r
- \r
- function network_content(App &$a) {\r
+\r
+ function network_content(App $a) {\r
$itemsmanager = new \Friendica\ItemsManager();\r
$items = $itemsmanager->getAll();\r
- \r
+\r
// pass $items to template\r
// return result\r
}\r
file: include/BaseManager.php\r
<?php\r
namespace \Friendica;\r
- \r
+\r
class BaseManager {\r
public function thatFunctionEveryManagerUses() { ... }\r
}\r
file: include/ItemsManager.php\r
<?php\r
namespace \Friendica;\r
- \r
+\r
class ItemsManager extends BaseManager {\r
public function getAll() { ... }\r
public function getByID($id) { ... }\r
\r
```\r
file: include/dfrn.php\r
- <?php \r
+ <?php\r
namespace \Friendica;\r
- \r
+\r
class dfrn {\r
public static function mail($item, $owner) { ... }\r
}\r
```\r
file: mod/mail.php\r
<?php\r
- \r
+\r
mail_post($a){\r
...\r
\Friendica\dfrn::mail($item, $owner);\r
```\r
file: include/delivery.php\r
<?php\r
- \r
+\r
namespace \Friendica;\r
- \r
- // this is the same content of current include/delivery.php, \r
+\r
+ // this is the same content of current include/delivery.php,\r
// but has been declared to be in "Friendica" namespace\r
- \r
+\r
[...]\r
switch($contact['network']) {\r
- \r
+\r
case NETWORK_DFRN:\r
if ($mail) {\r
$item['body'] = ...\r
\r
```\r
<?php\r
- namespace \Frienidca;\r
- \r
+ namespace \Friendica;\r
+\r
class Diaspora {\r
public function md2bbcode() {\r
- $html = \Michelf\MarkdownExtra::defaultTransform($text); \r
+ $html = \Michelf\MarkdownExtra::defaultTransform($text);\r
}\r
}\r
```\r
\r
```\r
<?php\r
- namespace \Frienidca;\r
- \r
+ namespace \Friendica;\r
+\r
use \Michelf\MarkdownExtra;\r
- \r
+\r
class Diaspora {\r
public function md2bbcode() {\r
- $html = MarkdownExtra::defaultTransform($text); \r
+ $html = MarkdownExtra::defaultTransform($text);\r
}\r
}\r
```\r
```\r
<?php\r
namespace \Friendica\Network;\r
- \r
+\r
class DFRN {\r
}\r
```\r
```\r
<?php\r
namespace \Friendica\DBA;\r
- \r
+\r
class MySQL {\r
}\r
```\r
Deine Hook-Callback-Funktion wird mit mindestens einem und bis zu zwei Argumenten aufgerufen
- function myhook_function(&$a, &$b) {
+ function myhook_function(App $a, &$b) {
}
$a->argc = 3
$a->argv = array(0 => 'plugin', 1 => 'arg1', 2 => 'arg2');
-Deine Modulfunktionen umfassen oft die Funktion plugin_name_content(App &$a), welche den Seiteninhalt definiert und zurückgibt.
-Sie können auch plugin_name_post(App &$a) umfassen, welches vor der content-Funktion aufgerufen wird und normalerweise die Resultate der POST-Formulare handhabt.
-Du kannst ebenso plugin_name_init(App &$a) nutzen, was oft frühzeitig aufgerufen wird und das Modul initialisert.
+Deine Modulfunktionen umfassen oft die Funktion plugin_name_content(App $a), welche den Seiteninhalt definiert und zurückgibt.
+Sie können auch plugin_name_post(App $a) umfassen, welches vor der content-Funktion aufgerufen wird und normalerweise die Resultate der POST-Formulare handhabt.
+Du kannst ebenso plugin_name_init(App $a) nutzen, was oft frühzeitig aufgerufen wird und das Modul initialisert.
Derzeitige Hooks
mod/photos.php: call_hooks('photo_upload_form',$ret);
-mod/friendica.php: call_hooks('about_hook', $o);
+mod/friendica.php: call_hooks('about_hook', $o);
mod/editpost.php: call_hooks('jot_tool', $jotplugins);
Calling the t() function with the common name makes the string translateable.
The selected 1st part will be saved in the database by the theme_post function.
- function theme_post(App &$a){
+ function theme_post(App $a){
// non local users shall not pass
if (! local_user()) {
return;
<?php
/* meta informations for the theme, see below */
- function duepuntozero_lr_init(App &$a) {
+ function duepuntozero_lr_init(App $a) {
$a-> theme_info = array(
'extends' => 'duepuntozero'.
);
The name of the function is <theme-name>_init.
So in the case of quattro it is
- function quattro_init(App &$a) {
+ function quattro_init(App $a) {
$a->theme_info = array();
set_template_engine($a, 'smarty3');
}
*
* @return string posts in HTML
*/
-function posts_from_gcontact($a, $gcontact_id) {
+function posts_from_gcontact(App $a, $gcontact_id) {
require_once('include/conversation.php');
*
* @return string posts in HTML
*/
-function posts_from_contact_url($a, $contact_url) {
+function posts_from_contact_url(App $a, $contact_url) {
require_once('include/conversation.php');
do {
// FIXME - implement horizantal bias for scaling as in followin GD functions
- // to allow very tall images to be constrained only horizontally.
+ // to allow very tall images to be constrained only horizontally.
$this->image->scaleImage($dest_width, $dest_height);
} while ($this->image->nextImage());
return array("width" => $dest_width, "height" => $dest_height);
}
-function store_photo($a, $uid, $imagedata = "", $url = "") {
+function store_photo(App $a, $uid, $imagedata = "", $url = "") {
$r = q("SELECT `user`.`nickname`, `user`.`page-flags`, `contact`.`id` FROM `user` INNER JOIN `contact` on `user`.`uid` = `contact`.`uid`
WHERE `user`.`uid` = %d AND `user`.`blocked` = 0 AND `contact`.`self` = 1 LIMIT 1",
intval($uid));
}
-function construct_acl_data(&$a, $user) {
+function construct_acl_data(App $a, $user) {
// Get group and contact information for html ACL selector
$acl_data = acl_lookup($a, 'html');
}
-function acl_lookup(&$a, $out_type = 'json') {
+function acl_lookup(App $a, $out_type = 'json') {
if (!local_user()) {
return '';
}
/**
* @brief Searching for global contacts for autocompletion
- *
+ *
* @param App $a
* @return array with the search results
*/
-function navbar_complete(App &$a) {
+function navbar_complete(App $a) {
// logger('navbar_complete');
* @hook 'logged_in'
* array $user logged user record
*/
- function api_login(App &$a){
+ function api_login(App $a){
// login with oauth
try{
$oauth = new FKOAuth1();
* @param App $a
* @return string API call result
*/
- function api_call(App &$a){
+ function api_call(App $a){
global $API, $called_api;
$type="json";
* @param array $user_info
* @return array
*/
- function api_rss_extra(&$a, $arr, $user_info){
+ function api_rss_extra(App $a, $arr, $user_info){
if (is_null($user_info)) $user_info = api_get_user($a);
$arr['$user'] = $user_info;
$arr['$rss'] = array(
* @param int|string $contact_id Contact ID or URL
* @param string $type Return type (for errors)
*/
- function api_get_user(&$a, $contact_id = Null, $type = "json"){
+ function api_get_user(App $a, $contact_id = Null, $type = "json"){
global $called_api;
$user = null;
$extra_query = "";
* @param array $item : item from db
* @return array(array:author, array:owner)
*/
- function api_item_get_user(&$a, $item) {
+ function api_item_get_user(App $a, $item) {
$status_user = api_get_user($a, $item["author-link"]);
'homepage' => $profile['homepage'],
'users' => null);
return $profile;
- }
+ }
}
/**
// BadRequestException if no id specified (for clients using Twitter API)
if ($id == 0) throw new BadRequestException('Message id not specified');
- // add parent-uri to sql command if specified by calling app
+ // add parent-uri to sql command if specified by calling app
$sql_extra = ($parenturi != "" ? " AND `parent-uri` = '" . dbesc($parenturi) . "'" : "");
// get data of the specified message id
$r = q("SELECT `id` FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra,
- intval($uid),
+ intval($uid),
intval($id));
-
+
// error message if specified id is not in database
if (!dbm::is_result($r)) {
if ($verbose == "true") {
}
// delete message
- $result = q("DELETE FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra,
- intval($uid),
+ $result = q("DELETE FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra,
+ intval($uid),
intval($id));
if ($verbose == "true") {
// get data of the specified message id
$r = q("SELECT `id` FROM `mail` WHERE `id` = %d AND `uid` = %d",
- intval($id),
+ intval($id),
intval($uid));
// error message if specified id is not in database
if (!dbm::is_result($r)) {
}
// update seen indicator
- $result = q("UPDATE `mail` SET `seen` = 1 WHERE `id` = %d AND `uid` = %d",
- intval($id),
+ $result = q("UPDATE `mail` SET `seen` = 1 WHERE `id` = %d AND `uid` = %d",
+ intval($id),
intval($uid));
if ($result) {
// message if nothing was found
if (!dbm::is_result($r))
$success = array('success' => false, 'search_results' => 'problem with query');
- else if (count($r) == 0)
+ else if (count($r) == 0)
$success = array('success' => false, 'search_results' => 'nothing found');
else {
$ret = Array();
*/
if(!function_exists('conversation')) {
-function conversation(&$a, $items, $mode, $update, $preview = false) {
+function conversation(App $a, $items, $mode, $update, $preview = false) {
require_once('include/bbcode.php');
require_once('include/Contact.php');
intval($c['id'])
);
- if (dbm::is_result($res))
+ if (!dbm::is_result($res)) {
continue;
+ }
foreach($res as $contact) {
*
* @param App $a
*/
-function cron_clear_cache(App &$a) {
+function cron_clear_cache(App $a) {
$last = get_config('system','cache_last_cleared');
*
* @param App $a
*/
-function cron_repair_diaspora(App &$a) {
+function cron_repair_diaspora(App $a) {
$r = q("SELECT `id`, `url` FROM `contact`
WHERE `network` = '%s' AND (`batch` = '' OR `notify` = '' OR `poll` = '' OR pubkey = '')
ORDER BY RAND() LIMIT 50", dbesc(NETWORK_DIASPORA));
function delivery_run(&$argv, &$argc){
global $a, $db;
- if (is_null($a)){
+ if (is_null($a)) {
$a = new App;
}
load_hooks();
- if ($argc < 3)
+ if ($argc < 3) {
return;
+ }
$a->set_baseurl(get_config('system','url'));
$cmd = $argv[1];
$item_id = intval($argv[2]);
- for($x = 3; $x < $argc; $x ++) {
+ for ($x = 3; $x < $argc; $x ++) {
$contact_id = intval($argv[$x]);
+ /// @todo When switching completely to the worker we won't need this anymore
// Some other process may have delivered this item already.
$r = q("SELECT * FROM `deliverq` WHERE `cmd` = '%s' AND `item` = %d AND `contact` = %d LIMIT 1",
continue;
}
- if ($a->maxload_reached())
+ if ($a->maxload_reached()) {
return;
+ }
// It's ours to deliver. Remove it from the queue.
dbesc($contact_id)
);
- if (!$item_id || !$contact_id)
+ if (!$item_id || !$contact_id) {
continue;
+ }
$expire = false;
$mail = false;
$message = q("SELECT * FROM `mail` WHERE `id` = %d LIMIT 1",
intval($item_id)
);
- if (!count($message)){
+ if (!count($message)) {
return;
}
$uid = $message[0]['uid'];
$recipients[] = $message[0]['contact-id'];
$item = $message[0];
- }
- elseif ($cmd === 'expire') {
+ } elseif ($cmd === 'expire') {
$normal_mode = false;
$expire = true;
$items = q("SELECT * FROM `item` WHERE `uid` = %d AND `wall` = 1
);
$uid = $item_id;
$item_id = 0;
- if (!count($items))
+ if (!count($items)) {
continue;
- }
- elseif ($cmd === 'suggest') {
+ }
+ } elseif ($cmd === 'suggest') {
$normal_mode = false;
$fsuggest = true;
$suggest = q("SELECT * FROM `fsuggest` WHERE `id` = %d LIMIT 1",
intval($item_id)
);
- if (!count($suggest))
+ if (!count($suggest)) {
return;
+ }
$uid = $suggest[0]['uid'];
$recipients[] = $suggest[0]['cid'];
$item = $suggest[0];
$icontacts = null;
$contacts_arr = array();
- foreach($items as $item)
- if (!in_array($item['contact-id'],$contacts_arr))
+ foreach ($items as $item) {
+ if (!in_array($item['contact-id'],$contacts_arr)) {
$contacts_arr[] = intval($item['contact-id']);
+ }
+ }
if (count($contacts_arr)) {
$str_contacts = implode(',',$contacts_arr);
$icontacts = q("SELECT * FROM `contact`
WHERE `id` IN ( $str_contacts ) "
);
}
- if ( !($icontacts && count($icontacts)))
+ if ( !($icontacts && count($icontacts))) {
continue;
+ }
// avoid race condition with deleting entries
if ($items[0]['deleted']) {
- foreach($items as $item)
+ foreach ($items as $item) {
$item['deleted'] = 1;
+ }
}
- if ((count($items) == 1) && ($items[0]['uri'] === $items[0]['parent-uri'])) {
+ // When commenting too fast after delivery, a post wasn't recognized as top level post.
+ // The count then showed more than one entry. The additional check should help.
+ // The check for the "count" should be superfluous, but I'm not totally sure by now, so we keep it.
+ if ((($items[0]['id'] == $item_id) || (count($items) == 1)) && ($items[0]['uri'] === $items[0]['parent-uri'])) {
logger('delivery: top level post');
$top_level = true;
}
intval($uid)
);
- if (!dbm::is_result($r))
+ if (!dbm::is_result($r)) {
continue;
+ }
$owner = $r[0];
$localhost = $a->get_hostname();
- if (strpos($localhost,':'))
+ if (strpos($localhost,':')) {
$localhost = substr($localhost,0,strpos($localhost,':'));
-
+ }
/**
*
* Be VERY CAREFUL if you make any changes to the following line. Seemingly innocuous changes
intval($contact_id)
);
- if (dbm::is_result($r))
+ if (dbm::is_result($r)) {
$contact = $r[0];
-
- if ($contact['self'])
+ }
+ if ($contact['self']) {
continue;
-
+ }
$deliver_status = 0;
logger("main delivery by delivery: followup=$followup mail=$mail fsuggest=$fsuggest relocate=$relocate - network ".$contact['network']);
} elseif ($fsuggest) {
$atom = dfrn::fsuggest($item, $owner);
q("DELETE FROM `fsuggest` WHERE `id` = %d LIMIT 1", intval($item['id']));
- } elseif ($relocate)
+ } elseif ($relocate) {
$atom = dfrn::relocate($owner, $uid);
- elseif ($followup) {
+ } elseif ($followup) {
$msgitems = array();
- foreach($items as $item) { // there is only one item
- if (!$item['parent'])
+ foreach ($items as $item) { // there is only one item
+ if (!$item['parent']) {
continue;
+ }
if ($item['id'] == $item_id) {
logger('followup: item: '. print_r($item,true), LOGGER_DATA);
$msgitems[] = $item;
$atom = dfrn::entries($msgitems,$owner);
} else {
$msgitems = array();
- foreach($items as $item) {
- if (!$item['parent'])
+ foreach ($items as $item) {
+ if (!$item['parent']) {
continue;
+ }
// private emails may be in included in public conversations. Filter them.
- if ($public_message && $item['private'])
+ if ($public_message && $item['private']) {
continue;
+ }
$item_contact = get_item_contact($item,$icontacts);
- if (!$item_contact)
+ if (!$item_contact) {
continue;
+ }
if ($normal_mode) {
if ($item_id == $item['id'] || $item['id'] == $item['parent']) {
if (link_compare($basepath,App::get_baseurl())) {
$nickname = basename($contact['url']);
- if ($contact['issued-id'])
+ if ($contact['issued-id']) {
$sql_extra = sprintf(" AND `dfrn-id` = '%s' ", dbesc($contact['issued-id']));
- else
+ } else {
$sql_extra = sprintf(" AND `issued-id` = '%s' ", dbesc($contact['dfrn-id']));
+ }
$x = q("SELECT `contact`.*, `contact`.`uid` AS `importer_uid`,
`contact`.`pubkey` AS `cpubkey`,
// If we are setup as a soapbox we aren't accepting top level posts from this person
- if (($x[0]['page-flags'] == PAGE_SOAPBOX) AND $top_level)
+ if (($x[0]['page-flags'] == PAGE_SOAPBOX) AND $top_level) {
break;
-
+ }
logger('mod-delivery: local delivery');
dfrn::import($atom, $x[0]);
break;
}
}
- if (!was_recently_delayed($contact['id']))
+ if (!was_recently_delayed($contact['id'])) {
$deliver_status = dfrn::deliver($owner,$contact,$atom);
- else
+ } else {
$deliver_status = (-1);
+ }
logger('notifier: dfrn_delivery to '.$contact["url"].' with guid '.$target_item["guid"].' returns '.$deliver_status);
case NETWORK_OSTATUS:
// Do not send to otatus if we are not configured to send to public networks
- if ($owner['prvnets'])
+ if ($owner['prvnets']) {
break;
- if (get_config('system','ostatus_disabled') || get_config('system','dfrn_only'))
+ }
+ if (get_config('system','ostatus_disabled') || get_config('system','dfrn_only')) {
break;
+ }
// There is currently no code here to distribute anything to OStatus.
// This is done in "notifier.php" (See "url_recipients" and "push_notify")
case NETWORK_MAIL:
case NETWORK_MAIL2:
- if (get_config('system','dfrn_only'))
+ if (get_config('system','dfrn_only')) {
break;
+ }
// WARNING: does not currently convert to RFC2047 header encodings, etc.
$addr = $contact['addr'];
- if (!strlen($addr))
+ if (!strlen($addr)) {
break;
+ }
if ($cmd === 'wall-new' || $cmd === 'comment-new') {
$it = null;
- if ($cmd === 'wall-new')
+ if ($cmd === 'wall-new') {
$it = $items[0];
- else {
+ } else {
$r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($argv[2]),
intval($uid)
if ($reply_to) {
$headers = 'From: '.email_header_encode($local_user[0]['username'],'UTF-8').' <'.$reply_to.'>'."\n";
$headers .= 'Sender: '.$local_user[0]['email']."\n";
- } else
+ } else {
$headers = 'From: '.email_header_encode($local_user[0]['username'],'UTF-8').' <'.$local_user[0]['email'].'>'."\n";
- } else
+ }
+ } else {
$headers = 'From: '. email_header_encode($local_user[0]['username'],'UTF-8') .' <'. t('noreply') .'@'.$a->get_hostname() .'>'. "\n";
+ }
//if ($reply_to)
// $headers .= 'Reply-to: '.$reply_to . "\n";
dbesc($it['parent-uri']),
intval($uid));
- if (dbm::is_result($r) AND ($r[0]['title'] != ''))
+ if (dbm::is_result($r) AND ($r[0]['title'] != '')) {
$subject = $r[0]['title'];
- else {
+ } else {
$r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d LIMIT 1",
dbesc($it['parent-uri']),
intval($uid));
logger("delivering to: ".$rr["username"]);
self::dispatch($rr,$msg);
}
- } else
- logger("No subscribers for ".$msg["author"]." ".print_r($msg, true));
+ } else {
+ logger("No subscribers for ".$msg["author"]." ".print_r($msg, true), LOGGER_DEBUG);
+ }
return $message_id;
}
}
-function sort_by_date(App &$a) {
+function sort_by_date(App $a) {
usort($a,'ev_compare');
return $a;
/**
* @brief Get an event by its event ID
- *
+ *
* @param type $owner_uid The User ID of the owner of the event
* @param type $event_params An assoziative array with
* int 'event_id' => The ID of the event in the event table
/**
* @brief Get all events in a specific timeframe
- *
+ *
* @param int $owner_uid The User ID of the owner of the events
* @param array $event_params An assoziative array with
- * int 'ignored' =>
+ * int 'ignored' =>
* string 'start' => Start time of the timeframe
* string 'finish' => Finish time of the timeframe
- * string 'adjust_start' =>
* string 'adjust_start' =>
- *
+ * string 'adjust_start' =>
+ *
* @param string $sql_extra Additional sql conditions (e.g. permission request)
* @return array Query results
*/
/**
* @brief Convert an array query results in an arry which could be used by the events template
- *
+ *
* @param array $arr Event query array
* @return array Event array for the template
*/
/**
* @brief Format event to export format (ical/csv)
- *
+ *
* @param array $events Query result for events
* @param string $format The output format (ical/csv)
* @param string $timezone The timezone of the user (not implemented yet)
- *
+ *
* @return string Content according to selected export format
*/
function event_format_export ($events, $format = 'ical', $timezone) {
$o = '"Subject", "Start Date", "Start Time", "Description", "End Date", "End Time", "Location"' . PHP_EOL;
foreach ($events as $event) {
- /// @todo the time / date entries don't include any information about the
+ /// @todo the time / date entries don't include any information about the
// timezone the event is scheduled in :-/
$tmp1 = strtotime($event['start']);
$tmp2 = strtotime($event['finish']);
$o .= '"'.$event['summary'].'", "'.strftime($date_format, $tmp1) .
'", "'.strftime($time_format, $tmp1).'", "'.$event['desc'] .
'", "'.strftime($date_format, $tmp2) .
- '", "'.strftime($time_format, $tmp2) .
+ '", "'.strftime($time_format, $tmp2) .
'", "'.$event['location'].'"' . PHP_EOL;
}
break;
foreach ($events as $event) {
if ($event['adjust'] == 1) {
$UTC = 'Z';
- } else {
+ } else {
$UTC = '';
}
$o .= 'BEGIN:VEVENT' . PHP_EOL;
/**
* @brief Get all events for a user ID
- *
+ *
* The query for events is done permission sensitive
* If the user is the owner of the calendar he/she
* will get all of his/her available events.
* If the user is only a visitor only the public events will
* be available
- *
+ *
* @param int $uid The user ID
* @param int $sql_extra Additional sql conditions for permission
- *
+ *
* @return array Query results
*/
function events_by_uid($uid = 0, $sql_extra = '') {
if($sql_extra == '')
$sql_extra = " AND `allow_cid` = '' AND `allow_gid` = '' ";
- // does the user who requests happen to be the owner of the events
- // requested? then show all of your events, otherwise only those that
+ // does the user who requests happen to be the owner of the events
+ // requested? then show all of your events, otherwise only those that
// don't have limitations set in allow_cid and allow_gid
if (local_user() == $uid) {
$r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location`, `nofinish`
}
/**
- *
+ *
* @param int $uid The user ID
* @param string $format Output format (ical/csv)
* @return array With the results
* string 'format' => The output format
* string 'extension' => The file extension of the output format
* string 'content' => The formatted output content
- *
+ *
* @todo Respect authenticated users with events_by_uid()
*/
function event_export($uid, $format = 'ical') {
/**
* @brief Get the events widget
- *
+ *
* @return string Formated html of the evens widget
*/
function widget_events() {
// Cal logged in user (test permission at foreign profile page)
// If the $owner uid is available we know it is part of one of the profile pages (like /cal)
- // So we have to test if if it's the own profile page of the logged in user
+ // So we have to test if if it's the own profile page of the logged in user
// or a foreign one. For foreign profile pages we need to check if the feature
// for exporting the cal is enabled (otherwise the widget would appear for logged in users
// on foreigen profile pages even if the widget is disabled)
- if(intval($owner_uid) && local_user() !== $owner_uid && ! feature_enabled($owner_uid, "export_calendar"))
+ if(intval($owner_uid) && local_user() !== $owner_uid && ! feature_enabled($owner_uid, "export_calendar"))
return;
// If it's a kind of profile page (intval($owner_uid)) return if the user not logged in and
* @param int $profile
* @param array $profiledata
*/
-function profile_load(&$a, $nickname, $profile = 0, $profiledata = array()) {
+function profile_load(App $a, $nickname, $profile = 0, $profiledata = array()) {
$user = q("SELECT `uid` FROM `user` WHERE `nickname` = '%s' LIMIT 1",
dbesc($nickname)
/**
* @brief Get all profil data of a local user
- *
+ *
* If the viewer is an authenticated remote viewer, the profile displayed is the
* one that has been configured for his/her viewing in the Contact manager.
* Passing a non-zero profile ID can also allow a preview of a selected profile
* by the owner
- *
+ *
* @param string $nickname
* @param int $uid
* @param int $profile
/**
* @brief Formats a profile for display in the sidebar.
- *
+ *
* It is very difficult to templatise the HTML completely
* because of all the conditional logic.
- *
+ *
* @param array $profile
* @param int $block
- *
+ *
* @return HTML string stuitable for sidebar inclusion
- *
+ *
* @note Returns empty string if passed $profile is wrong type or not populated
- *
+ *
* @hooks 'profile_sidebar_enter'
* array $profile - profile data
* @hooks 'profile_sidebar'
));
}
-function advanced_profile(App &$a) {
+function advanced_profile(App $a) {
$o = '';
$uid = $a->profile['uid'];
array(
'label'=>t('Status'),
'url' => $url,
- 'sel' => ((!isset($tab)&&$a->argv[0]=='profile')?'active':''),
+ 'sel' => ((!isset($tab) && $a->argv[0]=='profile')?'active':''),
'title' => t('Status Messages and Posts'),
'id' => 'status-tab',
'accesskey' => 'm',
array(
'label' => t('Photos'),
'url' => App::get_baseurl() . '/photos/' . $nickname,
- 'sel' => ((!isset($tab)&&$a->argv[0]=='photos')?'active':''),
+ 'sel' => ((!isset($tab) && $a->argv[0]=='photos')?'active':''),
'title' => t('Photo Albums'),
'id' => 'photo-tab',
'accesskey' => 'h',
array(
'label' => t('Videos'),
'url' => App::get_baseurl() . '/videos/' . $nickname,
- 'sel' => ((!isset($tab)&&$a->argv[0]=='videos')?'active':''),
+ 'sel' => ((!isset($tab) && $a->argv[0]=='videos')?'active':''),
'title' => t('Videos'),
'id' => 'video-tab',
'accesskey' => 'v',
$tabs[] = array(
'label' => t('Events'),
'url' => App::get_baseurl() . '/events',
- 'sel' =>((!isset($tab)&&$a->argv[0]=='events')?'active':''),
+ 'sel' =>((!isset($tab) && $a->argv[0]=='events')?'active':''),
'title' => t('Events and Calendar'),
'id' => 'events-tab',
'accesskey' => 'e',
$tabs[] = array(
'label' => t('Events'),
'url' => App::get_baseurl() . '/cal/' . $nickname,
- 'sel' =>((!isset($tab)&&$a->argv[0]=='cal')?'active':''),
+ 'sel' =>((!isset($tab) && $a->argv[0]=='cal')?'active':''),
'title' => t('Events and Calendar'),
'id' => 'events-tab',
'accesskey' => 'e',
$tabs[] = array(
'label' => t('Personal Notes'),
'url' => App::get_baseurl() . '/notes',
- 'sel' =>((!isset($tab)&&$a->argv[0]=='notes')?'active':''),
+ 'sel' =>((!isset($tab) && $a->argv[0]=='notes')?'active':''),
'title' => t('Only You Can See This'),
'id' => 'notes-tab',
'accesskey' => 't',
$tabs[] = array(
'label' => t('Contacts'),
'url' => App::get_baseurl() . '/viewcontacts/' . $nickname,
- 'sel' => ((!isset($tab)&&$a->argv[0]=='viewcontacts')?'active':''),
+ 'sel' => ((!isset($tab) && $a->argv[0]=='viewcontacts')?'active':''),
'title' => t('Contacts'),
'id' => 'viewcontacts-tab',
'accesskey' => 'k',
return false;
}
-function zrl_init(App &$a) {
+function zrl_init(App $a) {
$tmp_str = get_my_url();
if(validate_url($tmp_str)) {
* settings except their own while on this site.
*
* @return int user ID
- *
+ *
* @note Returns local_user instead of user ID if "always_my_theme"
* is set to true
*/
<?php
-function nav(App &$a) {
+function nav(App $a) {
/*
*
*/
use \Friendica\Core\Config;
-use \Friendica\Core\PConfig;
require_once("include/xml.php");
require_once('include/Probe.php');
function notifier_run(&$argv, &$argc){
global $a, $db;
- if(is_null($a)){
+ if (is_null($a)) {
$a = new App;
}
- if(is_null($db)) {
+ if (is_null($db)) {
@include(".htconfig.php");
require_once("include/dba.php");
$db = new dba($db_host, $db_user, $db_pass, $db_data);
load_hooks();
- if($argc < 3)
+ if ($argc < 3) {
return;
+ }
$a->set_baseurl(get_config('system','url'));
case 'mail':
default:
$item_id = intval($argv[2]);
- if(! $item_id){
+ if (! $item_id) {
return;
}
break;
$normal_mode = true;
- if($cmd === 'mail') {
+ if ($cmd === 'mail') {
$normal_mode = false;
$mail = true;
$message = q("SELECT * FROM `mail` WHERE `id` = %d LIMIT 1",
intval($item_id)
);
- if(! count($message)){
+ if (! count($message)) {
return;
}
$uid = $message[0]['uid'];
$recipients[] = $message[0]['contact-id'];
$item = $message[0];
- }
- elseif($cmd === 'expire') {
+ } elseif ($cmd === 'expire') {
$normal_mode = false;
$expire = true;
$items = q("SELECT * FROM `item` WHERE `uid` = %d AND `wall` = 1
);
$uid = $item_id;
$item_id = 0;
- if(! count($items))
+ if (! count($items)) {
return;
- }
- elseif($cmd === 'suggest') {
+ }
+ } elseif ($cmd === 'suggest') {
$normal_mode = false;
$fsuggest = true;
$suggest = q("SELECT * FROM `fsuggest` WHERE `id` = %d LIMIT 1",
intval($item_id)
);
- if(! count($suggest))
+ if (! count($suggest)) {
return;
+ }
$uid = $suggest[0]['uid'];
$recipients[] = $suggest[0]['cid'];
$item = $suggest[0];
- } elseif($cmd === 'removeme') {
+ } elseif ($cmd === 'removeme') {
$r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`,
`user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`,
`user`.`page-flags`, `user`.`prvnets`, `user`.`account-type`, `user`.`guid`
$self = $r[0];
$r = q("SELECT * FROM `contact` WHERE NOT `self` AND `uid` = %d", intval($item_id));
- if(!$r)
+ if (!$r) {
return;
-
+ }
require_once('include/Contact.php');
- foreach($r as $contact) {
+ foreach ($r as $contact) {
terminate_friendship($user, $self, $contact);
}
return;
- } elseif($cmd === 'relocate') {
+ } elseif ($cmd === 'relocate') {
$normal_mode = false;
$relocate = true;
$uid = $item_id;
intval($item_id)
);
- if((! dbm::is_result($r)) || (! intval($r[0]['parent']))) {
+ if ((! dbm::is_result($r)) || (! intval($r[0]['parent']))) {
return;
}
intval($parent_id)
);
- if(! count($items)) {
+ if (! count($items)) {
return;
}
// avoid race condition with deleting entries
- if($items[0]['deleted']) {
- foreach($items as $item)
+ if ($items[0]['deleted']) {
+ foreach ($items as $item) {
$item['deleted'] = 1;
+ }
}
- if((count($items) == 1) && ($items[0]['id'] === $target_item['id']) && ($items[0]['uri'] === $items[0]['parent-uri'])) {
+ if ((count($items) == 1) && ($items[0]['id'] === $target_item['id']) && ($items[0]['uri'] === $items[0]['parent-uri'])) {
logger('notifier: top level post');
$top_level = true;
}
$hub = get_config('system','huburl');
+ // Should the post be transmitted to Diaspora?
+ $diaspora_delivery = true;
+
// If this is a public conversation, notify the feed hub
$public_message = true;
// fill this in with a single salmon slap if applicable
$slap = '';
- if(! ($mail || $fsuggest || $relocate)) {
+ if (! ($mail || $fsuggest || $relocate)) {
$slap = ostatus::salmon($target_item,$owner);
$thr_parent = q("SELECT `network`, `author-link`, `owner-link` FROM `item` WHERE `uri` = '%s' AND `uid` = %d",
dbesc($target_item["thr-parent"]), intval($target_item["uid"]));
- logger('Parent is '.$parent['network'].'. Thread parent is '.$thr_parent[0]['network'], LOGGER_DEBUG);
+ logger('GUID: '.$target_item["guid"].': Parent is '.$parent['network'].'. Thread parent is '.$thr_parent[0]['network'], LOGGER_DEBUG);
// This is IMPORTANT!!!!
$localhost = str_replace('www.','',$a->get_hostname());
- if(strpos($localhost,':'))
+ if (strpos($localhost,':')) {
$localhost = substr($localhost,0,strpos($localhost,':'));
-
+ }
/**
*
* Be VERY CAREFUL if you make any changes to the following several lines. Seemingly innocuous changes
$relay_to_owner = false;
- if(!$top_level && ($parent['wall'] == 0) && !$expire && (stristr($target_item['uri'],$localhost))) {
+ if (!$top_level && ($parent['wall'] == 0) && !$expire && (stristr($target_item['uri'],$localhost))) {
$relay_to_owner = true;
}
- if(($cmd === 'uplink') && (intval($parent['forum_mode']) == 1) && !$top_level) {
+ if (($cmd === 'uplink') && (intval($parent['forum_mode']) == 1) && !$top_level) {
$relay_to_owner = true;
}
// we will just use it as a fallback test
// later we will be able to use it as the primary test of whether or not to relay.
- if(! $target_item['origin'])
+ if (! $target_item['origin']) {
$relay_to_owner = false;
-
- if($parent['origin'])
+ }
+ if ($parent['origin']) {
$relay_to_owner = false;
-
- if($relay_to_owner) {
+ }
+ if ($relay_to_owner) {
logger('notifier: followup '.$target_item["guid"], LOGGER_DEBUG);
// local followup to remote post
$followup = true;
intval($uid),
dbesc(NETWORK_DFRN)
);
- if (dbm::is_result($r))
- foreach($r as $rr)
+ if (dbm::is_result($r)) {
+ foreach ($r as $rr) {
$recipients_followup[] = $rr['id'];
+ }
+ }
}
}
logger("Notify ".$target_item["guid"]." via PuSH: ".($push_notify?"Yes":"No"), LOGGER_DEBUG);
// don't send deletions onward for other people's stuff
- if($target_item['deleted'] && (! intval($target_item['wall']))) {
+ if ($target_item['deleted'] && (! intval($target_item['wall']))) {
logger('notifier: ignoring delete notification for non-wall item');
return;
}
- if((strlen($parent['allow_cid']))
+ if ((strlen($parent['allow_cid']))
|| (strlen($parent['allow_gid']))
|| (strlen($parent['deny_cid']))
|| (strlen($parent['deny_gid']))) {
// if our parent is a public forum (forum_mode == 1), uplink to the origional author causing
// a delivery fork. private groups (forum_mode == 2) do not uplink
- if((intval($parent['forum_mode']) == 1) && (! $top_level) && ($cmd !== 'uplink')) {
+ if ((intval($parent['forum_mode']) == 1) && (! $top_level) && ($cmd !== 'uplink')) {
proc_run(PRIORITY_HIGH,'include/notifier.php','uplink',$item_id);
}
$conversants = array();
- foreach($items as $item) {
+ foreach ($items as $item) {
$recipients[] = $item['contact-id'];
$conversants[] = $item['contact-id'];
// pull out additional tagged people to notify (if public message)
- if($public_message && strlen($item['inform'])) {
+ if ($public_message && strlen($item['inform'])) {
$people = explode(',',$item['inform']);
- foreach($people as $person) {
- if(substr($person,0,4) === 'cid:') {
+ foreach ($people as $person) {
+ if (substr($person,0,4) === 'cid:') {
$recipients[] = intval(substr($person,4));
$conversants[] = intval(substr($person,4));
- }
- else {
+ } else {
$url_recipients[] = substr($person,4);
}
}
// We have not only to look at the parent, since it could be a Friendica thread.
if (($thr_parent AND ($thr_parent[0]['network'] == NETWORK_OSTATUS)) OR ($parent['network'] == NETWORK_OSTATUS)) {
+ $diaspora_delivery = false;
+
logger('Some parent is OStatus for '.$target_item["guid"]." - Author: ".$thr_parent[0]['author-link']." - Owner: ".$thr_parent[0]['owner-link'], LOGGER_DEBUG);
// Send a salmon to the parent author
- $r = q("SELECT `notify` FROM `contact` WHERE `nurl`='%s' AND `uid` IN (0, %d) AND `notify` != ''",
+ $r = q("SELECT `url`, `notify` FROM `contact` WHERE `nurl`='%s' AND `uid` IN (0, %d) AND `notify` != ''",
dbesc(normalise_link($thr_parent[0]['author-link'])),
intval($uid));
- if ($r)
+ if (dbm::is_result($r)) {
$probed_contact = $r[0];
- else
+ } else {
$probed_contact = probe_url($thr_parent[0]['author-link']);
+ }
if ($probed_contact["notify"] != "") {
logger('Notify parent author '.$probed_contact["url"].': '.$probed_contact["notify"]);
}
// Send a salmon to the parent owner
- $r = q("SELECT `notify` FROM `contact` WHERE `nurl`='%s' AND `uid` IN (0, %d) AND `notify` != ''",
+ $r = q("SELECT `url`, `notify` FROM `contact` WHERE `nurl`='%s' AND `uid` IN (0, %d) AND `notify` != ''",
dbesc(normalise_link($thr_parent[0]['owner-link'])),
intval($uid));
- if ($r)
+ if (dbm::is_result($r)) {
$probed_contact = $r[0];
- else
+ } else {
$probed_contact = probe_url($thr_parent[0]['owner-link']);
+ }
+
if ($probed_contact["notify"] != "") {
logger('Notify parent owner '.$probed_contact["url"].': '.$probed_contact["notify"]);
$url_recipients[$probed_contact["notify"]] = $probed_contact["notify"];
// Send a salmon notification to every person we mentioned in the post
$arr = explode(',',$target_item['tag']);
- foreach($arr as $x) {
+ foreach ($arr as $x) {
//logger('Checking tag '.$x, LOGGER_DEBUG);
$matches = null;
- if(preg_match('/@\[url=([^\]]*)\]/',$x,$matches)) {
+ if (preg_match('/@\[url=([^\]]*)\]/',$x,$matches)) {
$probed_contact = probe_url($matches[1]);
if ($probed_contact["notify"] != "") {
logger('Notify mentioned user '.$probed_contact["url"].': '.$probed_contact["notify"]);
// It only makes sense to distribute answers to OStatus messages to Friendica and OStatus - but not Diaspora
$sql_extra = " AND `network` IN ('".NETWORK_OSTATUS."', '".NETWORK_DFRN."')";
- } else
+ } else {
$sql_extra = " AND `network` IN ('".NETWORK_OSTATUS."', '".NETWORK_DFRN."', '".NETWORK_DIASPORA."', '".NETWORK_MAIL."', '".NETWORK_MAIL2."')";
-
- $r = q("SELECT * FROM `contact` WHERE `id` IN ($conversant_str) AND NOT `blocked` AND NOT `pending` AND NOT `archive`".$sql_extra);
-
- if (dbm::is_result($r))
- $contacts = $r;
-
- } else
+ }
+ } else {
$public_message = false;
+ }
// If this is a public message and pubmail is set on the parent, include all your email contacts
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
- if(! $mail_disabled) {
- if((! strlen($target_item['allow_cid'])) && (! strlen($target_item['allow_gid']))
+ if (! $mail_disabled) {
+ if ((! strlen($target_item['allow_cid'])) && (! strlen($target_item['allow_gid']))
&& (! strlen($target_item['deny_cid'])) && (! strlen($target_item['deny_gid']))
&& (intval($target_item['pubmail']))) {
$r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `network` = '%s'",
dbesc(NETWORK_MAIL)
);
if (dbm::is_result($r)) {
- foreach($r as $rr)
+ foreach ($r as $rr) {
$recipients[] = $rr['id'];
+ }
}
}
}
- if($followup)
+ if ($followup) {
$recip_str = implode(', ', $recipients_followup);
- else
+ } else {
$recip_str = implode(', ', $recipients);
-
- if ($relocate)
+ }
+ if ($relocate) {
$r = $recipients_relocate;
- else
- $r = q("SELECT * FROM `contact` WHERE `id` IN (%s) AND NOT `blocked` AND NOT `pending` AND NOT `archive`",
+ } else {
+ $r = q("SELECT * FROM `contact` WHERE `id` IN (%s) AND NOT `blocked` AND NOT `pending` AND NOT `archive`".$sql_extra,
dbesc($recip_str)
);
-
+ }
$interval = ((get_config('system','delivery_interval') === false) ? 2 : intval(get_config('system','delivery_interval')));
// If we are using the worker we don't need a delivery interval
- if (get_config("system", "worker"))
+ if (get_config("system", "worker")) {
$interval = false;
-
+ }
// delivery loop
if (dbm::is_result($r)) {
-
- foreach($r as $contact) {
- if(!$contact['self']) {
- if(($contact['network'] === NETWORK_DIASPORA) && ($public_message))
+ foreach ($r as $contact) {
+ if (!$contact['self']) {
+ if (($contact['network'] === NETWORK_DIASPORA) && ($public_message)) {
continue;
+ }
q("INSERT INTO `deliverq` (`cmd`,`item`,`contact`) VALUES ('%s', %d, %d)",
dbesc($cmd),
intval($item_id),
// When using the workerqueue, we don't need this functionality.
$deliveries_per_process = intval(get_config('system','delivery_batch_count'));
- if (($deliveries_per_process <= 0) OR get_config("system", "worker"))
+ if (($deliveries_per_process <= 0) OR get_config("system", "worker")) {
$deliveries_per_process = 1;
+ }
$this_batch = array();
- for($x = 0; $x < count($r); $x ++) {
+ for ($x = 0; $x < count($r); $x ++) {
$contact = $r[$x];
- if($contact['self'])
+ if ($contact['self']) {
continue;
-
+ }
logger("Deliver ".$target_item["guid"]." to ".$contact['url']." via network ".$contact['network'], LOGGER_DEBUG);
// potentially more than one recipient. Start a new process and space them out a bit.
$this_batch[] = $contact['id'];
- if(count($this_batch) >= $deliveries_per_process) {
+ if (count($this_batch) >= $deliveries_per_process) {
proc_run(PRIORITY_HIGH,'include/delivery.php',$cmd,$item_id,$this_batch);
$this_batch = array();
- if($interval)
+ if ($interval) {
@time_sleep_until(microtime(true) + (float) $interval);
+ }
}
continue;
}
// be sure to pick up any stragglers
- if(count($this_batch))
+ if (count($this_batch)) {
proc_run(PRIORITY_HIGH,'include/delivery.php',$cmd,$item_id,$this_batch);
+ }
}
// send salmon slaps to mentioned remote tags (@foo@example.com) in OStatus posts
// They are especially used for notifications to OStatus users that don't follow us.
- if($slap && count($url_recipients) && ($public_message || $push_notify) && $normal_mode) {
- if(!get_config('system','dfrn_only')) {
- foreach($url_recipients as $url) {
+ if ($slap && count($url_recipients) && ($public_message || $push_notify) && $normal_mode) {
+ if (!get_config('system','dfrn_only')) {
+ foreach ($url_recipients as $url) {
if ($url) {
logger('notifier: urldelivery: ' . $url);
$deliver_status = slapper($owner,$url,$slap);
}
- if($public_message) {
+ if ($public_message) {
- if (!$followup)
- $r0 = Diaspora::relay_list();
- else
- $r0 = array();
+ $r0 = array();
+ $r1 = array();
- $r1 = q("SELECT DISTINCT(`batch`), `id`, `name`,`network` FROM `contact` WHERE `network` = '%s'
- AND `uid` = %d AND `rel` != %d AND NOT `blocked` AND NOT `pending` AND NOT `archive` GROUP BY `batch` ORDER BY rand()",
- dbesc(NETWORK_DIASPORA),
- intval($owner['uid']),
- intval(CONTACT_IS_SHARING)
- );
+ if ($diaspora_delivery) {
+ if (!$followup) {
+ $r0 = Diaspora::relay_list();
+ }
+
+ $r1 = q("SELECT DISTINCT(`batch`), `id`, `name`,`network` FROM `contact` WHERE `network` = '%s'
+ AND `uid` = %d AND `rel` != %d AND NOT `blocked` AND NOT `pending` AND NOT `archive` GROUP BY `batch` ORDER BY rand()",
+ dbesc(NETWORK_DIASPORA),
+ intval($owner['uid']),
+ intval(CONTACT_IS_SHARING)
+ );
+ }
$r2 = q("SELECT `id`, `name`,`network` FROM `contact`
WHERE `network` in ( '%s', '%s') AND `uid` = %d AND NOT `blocked` AND NOT `pending` AND NOT `archive`
// throw everything into the queue in case we get killed
foreach ($r as $rr) {
- if((! $mail) && (! $fsuggest) && (! $followup)) {
+ if ((! $mail) && (! $fsuggest) && (! $followup)) {
q("INSERT INTO `deliverq` (`cmd`,`item`,`contact`) VALUES ('%s', %d, %d)
ON DUPLICATE KEY UPDATE `cmd` = '%s', `item` = %d, `contact` = %d",
dbesc($cmd), intval($item_id), intval($rr['id']),
// except for Diaspora batch jobs
// Don't deliver to folks who have already been delivered to
- if(($rr['network'] !== NETWORK_DIASPORA) && (in_array($rr['id'],$conversants))) {
+ if (($rr['network'] !== NETWORK_DIASPORA) && (in_array($rr['id'],$conversants))) {
logger('notifier: already delivered id=' . $rr['id']);
continue;
}
- if((! $mail) && (! $fsuggest) && (! $followup)) {
+ if ((! $mail) && (! $fsuggest) && (! $followup)) {
logger('notifier: delivery agent: '.$rr['name'].' '.$rr['id'].' '.$rr['network'].' '.$target_item["guid"]);
proc_run(PRIORITY_HIGH,'include/delivery.php',$cmd,$item_id,$rr['id']);
- if($interval)
+ if ($interval) {
@time_sleep_until(microtime(true) + (float) $interval);
+ }
}
}
}
}
// Notify PuSH subscribers (Used for OStatus distribution of regular posts)
- if($push_notify AND strlen($hub)) {
+ if ($push_notify AND strlen($hub)) {
$hubs = explode(',', $hub);
- if(count($hubs)) {
- foreach($hubs as $h) {
+ if (count($hubs)) {
+ foreach ($hubs as $h) {
$h = trim($h);
- if(! strlen($h))
+ if (! strlen($h)) {
continue;
+ }
if ($h === '[internal]') {
// Set push flag for PuSH subscribers to this topic,
post_url($h,$params);
logger('publish for item '.$item_id.' ' . $h . ' ' . $params . ' returned ' . $a->get_curl_code());
}
- if(count($hubs) > 1)
+ if (count($hubs) > 1) {
sleep(7); // try and avoid multiple hubs responding at precisely the same time
+ }
}
}
logger('notifier: calling hooks', LOGGER_DEBUG);
- if($normal_mode)
+ if ($normal_mode) {
call_hooks('notifier_normal',$target_item);
+ }
call_hooks('notifier_end',$target_item);
*
* @return string XML feed
*/
- public static function feed(&$a, $owner_nick, $last_update) {
+ public static function feed(App $a, $owner_nick, $last_update) {
$r = q("SELECT `contact`.*, `user`.`nickname`, `user`.`timezone`, `user`.`page-flags`
FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid`
*
* @return string The converted message
*/
-function plaintext($a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2, $target_network = "") {
+function plaintext(App $a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2, $target_network = "") {
// Remove the hash tags
$URLSearchString = "^\[\]";
<?php
-function auto_redir(&$a, $contact_nick) {
+function auto_redir(App $a, $contact_nick) {
// prevent looping
if(strlen($dfrn_id) < 3)
return;
-
+
$sec = random_string();
q("INSERT INTO `profile_check` ( `uid`, `cid`, `dfrn_id`, `sec`, `expire`)
$url = curPageURL();
- logger('auto_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG);
+ logger('auto_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG);
$dest = (($url) ? '&destination_url=' . $url : '');
- goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id
+ goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest );
}
-function can_write_wall(&$a,$owner) {
+function can_write_wall(App $a, $owner) {
static $verified = 0;
return false;
}
- $r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` INNER JOIN `user` on `user`.`uid` = `contact`.`uid`
- WHERE `contact`.`uid` = %d AND `contact`.`id` = %d AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+ $r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` INNER JOIN `user` on `user`.`uid` = `contact`.`uid`
+ WHERE `contact`.`uid` = %d AND `contact`.`id` = %d AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
AND `user`.`blockwall` = 0 AND `readonly` = 0 AND ( `contact`.`rel` IN ( %d , %d ) OR `user`.`page-flags` = %d ) LIMIT 1",
intval($owner),
intval($cid),
* default permissions - anonymous user
*/
- $sql = " AND allow_cid = ''
- AND allow_gid = ''
- AND deny_cid = ''
- AND deny_gid = ''
+ $sql = " AND allow_cid = ''
+ AND allow_gid = ''
+ AND deny_cid = ''
+ AND deny_gid = ''
";
/**
*/
if(($local_user) && ($local_user == $owner_id)) {
- $sql = '';
+ $sql = '';
}
/**
- * Authenticated visitor. Unless pre-verified,
+ * Authenticated visitor. Unless pre-verified,
* check that the contact belongs to this $owner_id
* and load the groups the visitor belongs to.
* If pre-verified, the caller is expected to have already
if(is_array($groups) && count($groups)) {
foreach($groups as $g)
$gs .= '|<' . intval($g) . '>';
- }
+ }
/*$sql = sprintf(
- " AND ( allow_cid = '' OR allow_cid REGEXP '<%d>' )
- AND ( deny_cid = '' OR NOT deny_cid REGEXP '<%d>' )
+ " AND ( allow_cid = '' OR allow_cid REGEXP '<%d>' )
+ AND ( deny_cid = '' OR NOT deny_cid REGEXP '<%d>' )
AND ( allow_gid = '' OR allow_gid REGEXP '%s' )
AND ( deny_gid = '' OR NOT deny_gid REGEXP '%s')
",
}
/**
- * Authenticated visitor. Unless pre-verified,
+ * Authenticated visitor. Unless pre-verified,
* check that the contact belongs to this $owner_id
* and load the groups the visitor belongs to.
* If pre-verified, the caller is expected to have already
if(is_array($groups) && count($groups)) {
foreach($groups as $g)
$gs .= '|<' . intval($g) . '>';
- }
+ }
$sql = sprintf(
- /*" AND ( private = 0 OR ( private in (1,2) AND wall = 1 AND ( allow_cid = '' OR allow_cid REGEXP '<%d>' )
- AND ( deny_cid = '' OR NOT deny_cid REGEXP '<%d>' )
+ /*" AND ( private = 0 OR ( private in (1,2) AND wall = 1 AND ( allow_cid = '' OR allow_cid REGEXP '<%d>' )
+ AND ( deny_cid = '' OR NOT deny_cid REGEXP '<%d>' )
AND ( allow_gid = '' OR allow_gid REGEXP '%s' )
- AND ( deny_gid = '' OR NOT deny_gid REGEXP '%s')))
+ AND ( deny_gid = '' OR NOT deny_gid REGEXP '%s')))
",
intval($remote_user),
intval($remote_user),
* If the new page contains by any chance external elements, then the used security token is exposed by the referrer.
* Actually, important actions should not be triggered by Links / GET-Requests at all, but somethimes they still are,
* so this mechanism brings in some damage control (the attacker would be able to forge a request to a form of this type, but not to forms of other types).
- */
+ */
function get_form_security_token($typename = '') {
$a = get_app();
-
+
$timestamp = time();
$sec_hash = hash('whirlpool', $a->user['guid'] . $a->user['prvkey'] . session_id() . $timestamp . $typename);
-
+
return $timestamp . '.' . $sec_hash;
}
function check_form_security_token($typename = '', $formname = 'form_security_token') {
if (!x($_REQUEST, $formname)) return false;
$hash = $_REQUEST[$formname];
-
+
$max_livetime = 10800; // 3 hours
-
+
$a = get_app();
-
+
$x = explode('.', $hash);
if (time() > (IntVal($x[0]) + $max_livetime)) return false;
-
+
$sec_hash = hash('whirlpool', $a->user['guid'] . $a->user['prvkey'] . session_id() . $x[0] . $typename);
-
+
return ($sec_hash == $x[1]);
}
// Returns an array of group id's this contact is a member of.
// This array will only contain group id's related to the uid of this
-// DFRN contact. They are *not* neccessarily unique across the entire site.
+// DFRN contact. They are *not* neccessarily unique across the entire site.
if(! function_exists('init_groups_visitor')) {
function init_groups_visitor($contact_id) {
$groups = array();
- $r = q("SELECT `gid` FROM `group_member`
+ $r = q("SELECT `gid` FROM `group_member`
WHERE `contact-id` = %d ",
intval($contact_id)
);
* @param int $count [optional] item count (used with alt pager)
* @return Array data for pagination template
*/
-function paginate_data(&$a, $count=null) {
+function paginate_data(App $a, $count=null) {
$stripped = preg_replace('/([&?]page=[0-9]*)/','',$a->query_string);
$stripped = str_replace('q=','',$stripped);
* @param App $a App instance
* @return string html for pagination #FIXME remove html
*/
-function paginate(App &$a) {
+function paginate(App $a) {
$data = paginate_data($a);
$tpl = get_markup_template("paginate.tpl");
* @param int $i
* @return string html for pagination #FIXME remove html
*/
-function alt_pager(&$a, $i) {
+function alt_pager(App $a, $i) {
$data = paginate_data($a, $i);
$tpl = get_markup_template("paginate.tpl");
q("DELETE FROM `pconfig` WHERE uid = %d", $newuid);\r
}\r
\r
-function import_account(&$a, $file) {\r
+function import_account(App $a, $file) {\r
logger("Start user import from " . $file['tmp_name']);\r
/*\r
STEPS\r
require_once("mod/hostxrd.php");\r
require_once("mod/nodeinfo.php");\r
\r
-function _well_known_init(App &$a){\r
+function _well_known_init(App $a) {\r
if ($a->argc > 1) {\r
switch($a->argv[1]) {\r
case "host-meta":\r
killme();\r
}\r
\r
-function wk_social_relay(App &$a) {\r
+function wk_social_relay(App $a) {\r
\r
define('SR_SCOPE_ALL', 'all');\r
define('SR_SCOPE_TAGS', 'tags');\r
require_once('include/Scrape.php');
-function acctlink_init(App &$a) {
+function acctlink_init(App $a) {
if(x($_GET,'addr')) {
$addr = trim($_GET['addr']);
require_once("include/acl_selectors.php");
-function acl_init(App &$a){
+function acl_init(App $a) {
acl_lookup($a);
}
/**
* @file mod/admin.php
- *
+ *
* @brief Friendica admin
*/
* @param App $a
*
*/
-function admin_post(App &$a){
+function admin_post(App $a) {
if(!is_site_admin()) {
$theme = $a->argv[2];
if(is_file("view/theme/$theme/config.php")){
- function __call_theme_admin_post(&$a, $theme) {
+ function __call_theme_admin_post(App $a, $theme) {
$orig_theme = $a->theme;
$orig_page = $a->page;
$orig_session_theme = $_SESSION['theme'];
* @param App $a
* @return string
*/
-function admin_content(App &$a) {
+function admin_content(App $a) {
if(!is_site_admin()) {
return login(false);
* @param App $a
* @return string
*/
-function admin_page_federation(App &$a) {
+function admin_page_federation(App $a) {
// get counts on active friendica, diaspora, redmatrix, hubzilla, gnu
// social and statusnet nodes this node is knowing
//
$newVC = $vv['total'];
$newVV = $vv['version'];
$posDash = strpos($newVV, '-');
- if($posDash)
+ if($posDash)
$newVV = substr($newVV, 0, $posDash);
if(isset($newV[$newVV]))
- $newV[$newVV] += $newVC;
+ $newV[$newVV] += $newVC;
else
- $newV[$newVV] = $newVC;
+ $newV[$newVV] = $newVC;
}
foreach ($newV as $key => $value) {
array_push($newVv, array('total'=>$value, 'version'=>$key));
* @param App $a
* @return string
*/
-function admin_page_queue(App &$a) {
+function admin_page_queue(App $a) {
// get content from the queue table
$r = q("SELECT `c`.`name`, `c`.`nurl`, `q`.`id`, `q`.`network`, `q`.`created`, `q`.`last`
FROM `queue` AS `q`, `contact` AS `c`
* @param App $a
* @return string
*/
-function admin_page_summary(App &$a) {
+function admin_page_summary(App $a) {
global $db;
// are there MyISAM tables in the DB? If so, trigger a warning message
$r = q("SELECT `engine` FROM `information_schema`.`tables` WHERE `engine` = 'myisam' AND `table_schema` = '%s' LIMIT 1",
/**
* @brief Process send data from Admin Site Page
- *
+ *
* @param App $a
*/
-function admin_page_site_post(App &$a) {
+function admin_page_site_post(App $a) {
if(!x($_POST,"page_site")) {
return;
}
* @param App $a
* @return string
*/
-function admin_page_site(App &$a) {
+function admin_page_site(App $a) {
/* Installed langs */
$lang_choices = get_available_languages();
* @param App $a
* @return string
**/
-function admin_page_dbsync(App &$a) {
+function admin_page_dbsync(App $a) {
$o = '';
/**
* @brief Process data send by Users admin page
- *
+ *
* @param App $a
*/
-function admin_page_users_post(App &$a){
+function admin_page_users_post(App $a) {
$pending = (x($_POST, 'pending') ? $_POST['pending'] : array());
$users = (x($_POST, 'user') ? $_POST['user'] : array());
$nu_name = (x($_POST, 'new_user_name') ? $_POST['new_user_name'] : '');
if (!($nu_name==="") && !($nu_email==="") && !($nu_nickname==="")) {
require_once('include/user.php');
- $result = create_user(array('username'=>$nu_name, 'email'=>$nu_email,
+ $result = create_user(array('username'=>$nu_name, 'email'=>$nu_email,
'nickname'=>$nu_nickname, 'verified'=>1, 'language'=>$nu_language));
if (! $result['success']) {
notice($result['message']);
* @param App $a
* @return string
*/
-function admin_page_users(App &$a){
+function admin_page_users(App $a) {
if($a->argc>2) {
$uid = $a->argv[3];
$user = q("SELECT `username`, `blocked` FROM `user` WHERE `uid` = %d", intval($uid));
array(t('Name'), t('Email'), t('Register date'), t('Last login'), t('Last item'), t('Account')),
$valid_orders
);
-
+
$t = get_markup_template("admin_users.tpl");
$o = replace_macros($t, array(
// strings //
* @param App $a
* @return string
*/
-function admin_page_plugins(App &$a){
+function admin_page_plugins(App $a) {
/*
* Single plugin
'$baseurl' => App::get_baseurl(true),
'$function' => 'plugins',
'$plugins' => $plugins,
- '$pcount' => count($plugins),
+ '$pcount' => count($plugins),
'$noplugshint' => sprintf(t('There are currently no plugins available on your node. You can find the official plugin repository at %1$s and might find other interesting plugins in the open plugin registry at %2$s'), 'https://github.com/friendica/friendica-addons', 'http://addons.friendi.ca'),
'$form_security_token' => get_form_security_token("admin_themes"),
));
* @param App $a
* @return string
*/
-function admin_page_themes(App &$a){
+function admin_page_themes(App $a) {
$allowed_themes_str = get_config('system','allowed_themes');
$allowed_themes_raw = explode(',',$allowed_themes_str);
$admin_form="";
if(is_file("view/theme/$theme/config.php")) {
- function __get_theme_admin_form(&$a, $theme) {
+ function __get_theme_admin_form(App $a, $theme) {
$orig_theme = $a->theme;
$orig_page = $a->page;
$orig_session_theme = $_SESSION['theme'];
/**
* @brief Prosesses data send by Logs admin page
- *
+ *
* @param App $a
*/
-function admin_page_logs_post(App &$a) {
+function admin_page_logs_post(App $a) {
if (x($_POST,"page_logs")) {
check_form_security_token_redirectOnErr('/admin/logs', 'admin_logs');
* @param App $a
* @return string
*/
-function admin_page_logs(App &$a){
+function admin_page_logs(App $a) {
$log_choices = array(
LOGGER_NORMAL => 'Normal',
LOGGER_DATA => 'Data',
LOGGER_ALL => 'All'
);
-
+
if (ini_get('log_errors')) {
$phplogenabled = t('PHP log currently enabled.');
} else {
* @param App $a
* @return string
*/
-function admin_page_viewlogs(App &$a){
+function admin_page_viewlogs(App $a) {
$t = get_markup_template("admin_viewlogs.tpl");
$f = get_config('system','logfile');
$data = '';
/**
* @brief Prosesses data send by the features admin page
- *
+ *
* @param App $a
*/
-function admin_page_features_post(App &$a) {
+function admin_page_features_post(App $a) {
check_form_security_token_redirectOnErr('/admin/features', 'admin_manage_features');
/**
* @brief Subpage for global additional feature management
- *
+ *
* This functin generates the subpage 'Manage Additional Features'
* for the admin panel. At this page the admin can set preferences
- * for the user settings of the 'additional features'. If needed this
+ * for the user settings of the 'additional features'. If needed this
* preferences can be locked through the admin.
- *
+ *
* The returned string contains the HTML code of the subpage 'Manage
* Additional Features'
- *
+ *
* @param App $a
* @return string
*/
-function admin_page_features(App &$a) {
-
+function admin_page_features(App $a) {
+
if((argc() > 1) && (argv(1) === 'features')) {
$arr = array();
$features = get_features(false);
);
}
}
-
+
$tpl = get_markup_template("admin_settings_features.tpl");
$o .= replace_macros($tpl, array(
'$form_security_token' => get_form_security_token("admin_manage_features"),
require_once('include/contact_selectors.php');
require_once('mod/contacts.php');
-function allfriends_content(App &$a) {
+function allfriends_content(App $a) {
$o = '';
if (! local_user()) {
<?php
-function amcd_content(App &$a) {
+function amcd_content(App $a) {
//header("Content-type: text/json");
echo <<< EOT
{
return $r[0];
}
-function api_post(App &$a) {
+function api_post(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
}
-function api_content(App &$a) {
+function api_content(App $a) {
if ($a->cmd=='api/oauth/authorize'){
/*
* api/oauth/authorize interact with the user. return a standard page
<?php
-function apps_content(App &$a) {
+function apps_content(App $a) {
$privateaddons = get_config('config','private_addons');
if ($privateaddons === "1") {
if((! (local_user()))) {
'$apps' => $a->apps,
));
-
+
}
require_once('include/security.php');
-function attach_init(App &$a) {
+function attach_init(App $a) {
if($a->argc != 2) {
notice( t('Item not available.') . EOL);
return str_replace("\n",'<br />', $s);
}
-function babel_content(App &$a) {
+function babel_content(App $a) {
$o .= '<h1>Babel Diagnostic</h1>';
$o .= '<form action="babel" method="post">';
$o .= t('Source (bbcode) text:') . EOL . '<textarea name="text" >' . htmlspecialchars($_REQUEST['text']) .'</textarea>' . EOL;
- $o .= '<input type="submit" name="submit" value="Submit" /></form>';
+ $o .= '<input type="submit" name="submit" value="Submit" /></form>';
$o .= '<br /><br />';
$o .= '<form action="babel" method="post">';
$o .= t('Source (Diaspora) text to convert to BBcode:') . EOL . '<textarea name="d2bbtext" >' . htmlspecialchars($_REQUEST['d2bbtext']) .'</textarea>' . EOL;
- $o .= '<input type="submit" name="submit" value="Submit" /></form>';
+ $o .= '<input type="submit" name="submit" value="Submit" /></form>';
$o .= '<br /><br />';
if(x($_REQUEST,'text')) {
$text = trim($_REQUEST['text']);
- $o .= "<h2>" . t("Source input: ") . "</h2>" . EOL. EOL;
- $o .= visible_lf($text) . EOL. EOL;
+ $o .= "<h2>" . t("Source input: ") . "</h2>" . EOL. EOL;
+ $o .= visible_lf($text) . EOL. EOL;
$html = bbcode($text);
- $o .= "<h2>" . t("bb2html (raw HTML): ") . "</h2>" . EOL. EOL;
- $o .= htmlspecialchars($html). EOL. EOL;
+ $o .= "<h2>" . t("bb2html (raw HTML): ") . "</h2>" . EOL. EOL;
+ $o .= htmlspecialchars($html). EOL. EOL;
//$html = bbcode($text);
- $o .= "<h2>" . t("bb2html: ") . "</h2>" . EOL. EOL;
- $o .= $html. EOL. EOL;
+ $o .= "<h2>" . t("bb2html: ") . "</h2>" . EOL. EOL;
+ $o .= $html. EOL. EOL;
$bbcode = html2bbcode($html);
- $o .= "<h2>" . t("bb2html2bb: ") . "</h2>" . EOL. EOL;
- $o .= visible_lf($bbcode) . EOL. EOL;
+ $o .= "<h2>" . t("bb2html2bb: ") . "</h2>" . EOL. EOL;
+ $o .= visible_lf($bbcode) . EOL. EOL;
$diaspora = bb2diaspora($text);
- $o .= "<h2>" . t("bb2md: ") . "</h2>" . EOL. EOL;
- $o .= visible_lf($diaspora) . EOL. EOL;
+ $o .= "<h2>" . t("bb2md: ") . "</h2>" . EOL. EOL;
+ $o .= visible_lf($diaspora) . EOL. EOL;
$html = Markdown($diaspora);
- $o .= "<h2>" . t("bb2md2html: ") . "</h2>" . EOL. EOL;
- $o .= $html. EOL. EOL;
+ $o .= "<h2>" . t("bb2md2html: ") . "</h2>" . EOL. EOL;
+ $o .= $html. EOL. EOL;
$bbcode = diaspora2bb($diaspora);
- $o .= "<h2>" . t("bb2dia2bb: ") . "</h2>" . EOL. EOL;
- $o .= visible_lf($bbcode) . EOL. EOL;
+ $o .= "<h2>" . t("bb2dia2bb: ") . "</h2>" . EOL. EOL;
+ $o .= visible_lf($bbcode) . EOL. EOL;
$bbcode = html2bbcode($html);
- $o .= "<h2>" . t("bb2md2html2bb: ") . "</h2>" . EOL. EOL;
- $o .= visible_lf($bbcode) . EOL. EOL;
+ $o .= "<h2>" . t("bb2md2html2bb: ") . "</h2>" . EOL. EOL;
+ $o .= visible_lf($bbcode) . EOL. EOL;
if(x($_REQUEST,'d2bbtext')) {
$d2bbtext = trim($_REQUEST['d2bbtext']);
- $o .= "<h2>" . t("Source input (Diaspora format): ") . "</h2>" . EOL. EOL;
- $o .= visible_lf($d2bbtext) . EOL. EOL;
+ $o .= "<h2>" . t("Source input (Diaspora format): ") . "</h2>" . EOL. EOL;
+ $o .= visible_lf($d2bbtext) . EOL. EOL;
$bb = diaspora2bb($d2bbtext);
- $o .= "<h2>" . t("diaspora2bb: ") . "</h2>" . EOL. EOL;
- $o .= visible_lf($bb) . EOL. EOL;
+ $o .= "<h2>" . t("diaspora2bb: ") . "</h2>" . EOL. EOL;
+ $o .= visible_lf($bb) . EOL. EOL;
}
return $o;
require_once('include/conversation.php');
require_once('include/items.php');
-function bookmarklet_init(App &$a) {
+function bookmarklet_init(App $a) {
$_GET["mode"] = "minimal";
}
-function bookmarklet_content(App &$a) {
+function bookmarklet_content(App $a) {
if (!local_user()) {
$o = '<h2>'.t('Login').'</h2>';
$o .= login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true);
require_once('include/event.php');
require_once('include/redir.php');
-function cal_init(App &$a) {
+function cal_init(App $a) {
if($a->argc > 1)
auto_redir($a, $a->argv[1]);
return;
}
-function cal_content(App &$a) {
+function cal_content(App $a) {
nav_set_selected('events');
$editselect = 'none';
*/
-function cb_init(App &$a) {
+function cb_init(App $a) {
call_hooks('cb_init');
}
-function cb_post(App &$a) {
+function cb_post(App $a) {
call_hooks('cb_post', $_POST);
}
-function cb_afterpost(App &$a) {
+function cb_afterpost(App $a) {
call_hooks('cb_afterpost');
}
-function cb_content(App &$a) {
+function cb_content(App $a) {
$o = '';
call_hooks('cb_content', $o);
return $o;
require_once('include/contact_selectors.php');
require_once('mod/contacts.php');
-function common_content(App &$a) {
+function common_content(App $a) {
$o = '';
<?php
-function community_init(App &$a) {
+function community_init(App $a) {
if (! local_user()) {
unset($_SESSION['theme']);
unset($_SESSION['mobile-theme']);
}
-function community_content(&$a, $update = 0) {
+function community_content(App $a, $update = 0) {
$o = '';
require_once('include/group.php');
-function contactgroup_content(App &$a) {
+function contactgroup_content(App $a) {
if (! local_user()) {
require_once('mod/proxy.php');
require_once('include/Photo.php');
-function contacts_init(App &$a) {
+function contacts_init(App $a) {
if (! local_user()) {
return;
}
}
-function contacts_batch_actions(App &$a){
+function contacts_batch_actions(App $a) {
$contacts_id = $_POST['contact_batch'];
if (!is_array($contacts_id)) return;
}
-function contacts_post(App &$a) {
+function contacts_post(App $a) {
if (! local_user()) {
return;
}
-function contacts_content(App &$a) {
+function contacts_content(App $a) {
$sort_type = 0;
$o = '';
/**
* @brief List of pages for the Contact TabBar
- *
+ *
* Available Pages are 'Status', 'Profile', 'Contacts' and 'Common Friends'
- *
+ *
* @param app $a
* @param int $contact_id The ID of the contact
* @param int $active_tab 1 if tab should be marked as active
- *
+ *
* @return array with with contact TabBar data
*/
function contacts_tab($a, $contact_id, $active_tab) {
/**
* @brief Gives a array with actions which can performed to a given contact
- *
+ *
* This includes actions like e.g. 'block', 'hide', 'archive', 'delete' and others
- *
+ *
* @param array $contact Data about the Contact
* @return array with contact related actions
*/
$contact_actions['delete'] = array(
'label' => t('Delete'),
- 'url' => 'contacts/' . $contact['id'] . '/drop',
+ 'url' => 'contacts/' . $contact['id'] . '/drop',
'title' => t('Delete contact'),
'sel' => '',
'id' => 'delete',
// and 10-20 milliseconds to fetch all the child items.
-function content_content(&$a, $update = 0) {
+function content_content(App $a, $update = 0) {
require_once('include/conversation.php');
$o = '';
-
+
$contact_id = $a->cid;
$def_acl = array('allow_cid' => $str);
}
-
+
$sql_options = (($star) ? " and starred = 1 " : '');
$sql_options .= (($bmark) ? " and bookmark = 1 " : '');
}
elseif($cid) {
- $r = q("SELECT `id`,`name`,`network`,`writable`,`nurl` FROM `contact` WHERE `id` = %d
+ $r = q("SELECT `id`,`name`,`network`,`writable`,`nurl` FROM `contact` WHERE `id` = %d
AND `blocked` = 0 AND `pending` = 0 LIMIT 1",
intval($cid)
);
-function render_content(&$a, $items, $mode, $update, $preview = false) {
+function render_content(App $a, $items, $mode, $update, $preview = false) {
require_once('include/bbcode.php');
require_once('mod/proxy.php');
if($mode === 'network-new' || $mode === 'search' || $mode === 'community') {
- // "New Item View" on network page or search page results
+ // "New Item View" on network page or search page results
// - just loop through the items and format them minimally for display
//$tpl = get_markup_template('search_item.tpl');
|| (activity_match($item['verb'],ACTIVITY_DISLIKE))
|| activity_match($item['verb'],ACTIVITY_ATTEND)
|| activity_match($item['verb'],ACTIVITY_ATTENDNO)
- || activity_match($item['verb'],ACTIVITY_ATTENDMAYBE))
+ || activity_match($item['verb'],ACTIVITY_ATTENDMAYBE))
&& ($item['id'] != $item['parent']))
continue;
$nickname = $item['nickname'];
$drop = array(
'dropping' => $dropping,
- 'select' => t('Select'),
+ 'select' => t('Select'),
'delete' => t('Delete'),
);
$comments[$item['parent']] = 1;
else
$comments[$item['parent']] += 1;
- } elseif(! x($comments,$item['parent']))
+ } elseif(! x($comments,$item['parent']))
$comments[$item['parent']] = 0; // avoid notices later on
}
- // map all the like/dislike/attendance activities for each parent item
+ // map all the like/dislike/attendance activities for each parent item
// Store these in the $alike and $dlike arrays
foreach($items as $item) {
$redirect_url = 'redir/' . $item['cid'] ;
- $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
+ $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
|| strlen($item['deny_cid']) || strlen($item['deny_gid']))))
? t('Private Message')
: false);
// Top-level wall post not written by the wall owner (wall-to-wall)
- // First figure out who owns it.
+ // First figure out who owns it.
$osparkle = '';
if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) {
// The author url doesn't match the owner (typically the contact)
- // and also doesn't match the contact alias.
- // The name match is a hack to catch several weird cases where URLs are
+ // and also doesn't match the contact alias.
+ // The name match is a hack to catch several weird cases where URLs are
// all over the park. It can be tricked, but this prevents you from
// seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn
- // well that it's the same Bob Smith.
+ // well that it's the same Bob Smith.
- // But it could be somebody else with the same name. It just isn't highly likely.
+ // But it could be somebody else with the same name. It just isn't highly likely.
$owner_url = $item['owner-link'];
$template = $wallwall;
$commentww = 'ww';
// If it is our contact, use a friendly redirect link
- if((link_compare($item['owner-link'],$item['url']))
+ if((link_compare($item['owner-link'],$item['url']))
&& ($item['network'] === NETWORK_DFRN)) {
$owner_url = $redirect_url;
$osparkle = ' sparkle';
}
$likebuttons = '';
- $shareable = ((($profile_owner == local_user()) && ($item['private'] != 1)) ? true : false);
+ $shareable = ((($profile_owner == local_user()) && ($item['private'] != 1)) ? true : false);
if($page_writeable) {
/* if($toplevelpost) { */
if(($show_comment_box) || (($show_comment_box == false) && ($override_comment_box == false) && ($item['last-child']))) {
$comment = replace_macros($cmnt_tpl,array(
- '$return_path' => '',
+ '$return_path' => '',
'$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''),
'$type' => (($mode === 'profile') ? 'wall-comment' : 'net-comment'),
'$id' => $item['item_id'],
$drop = array(
'dropping' => $dropping,
- 'select' => t('Select'),
+ 'select' => t('Select'),
'delete' => t('Delete'),
);
* addons repository will be listed though ATM)
*/
-function credits_content (App &$a) {
+function credits_content (App $a) {
/* fill the page with credits */
$f = fopen('util/credits.txt','r');
$names = fread($f, filesize('util/credits.txt'));
require_once("include/contact_selectors.php");
require_once("mod/contacts.php");
-function crepair_init(App &$a) {
+function crepair_init(App $a) {
if (! local_user()) {
return;
}
}
}
-function crepair_post(App &$a) {
+function crepair_post(App $a) {
if (! local_user()) {
return;
}
-function crepair_content(App &$a) {
+function crepair_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
<?php
require_once('mod/settings.php');
-function delegate_init(App &$a) {
+function delegate_init(App $a) {
return settings_init($a);
}
-function delegate_content(App &$a) {
+function delegate_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
// find every contact who might be a candidate for delegation
- $r = q("select nurl from contact where substring_index(contact.nurl,'/',3) = '%s'
+ $r = q("select nurl from contact where substring_index(contact.nurl,'/',3) = '%s'
and contact.uid = %d and contact.self = 0 and network = '%s' ",
dbesc(normalise_link(App::get_baseurl())),
intval(local_user()),
dbesc(NETWORK_DFRN)
- );
+ );
if (! dbm::is_result($r)) {
notice( t('No potential page delegates located.') . EOL);
require_once('include/group.php');
require_once('include/Probe.php');
-function dfrn_confirm_post(&$a,$handsfree = null) {
+function dfrn_confirm_post(App $a, $handsfree = null) {
if(is_array($handsfree)) {
require_once('library/defuse/php-encryption-1.2.1/Crypto.php');
-function dfrn_notify_post(App &$a) {
+function dfrn_notify_post(App $a) {
logger(__function__, LOGGER_TRACE);
$dfrn_id = ((x($_POST,'dfrn_id')) ? notags(trim($_POST['dfrn_id'])) : '');
$dfrn_version = ((x($_POST,'dfrn_version')) ? (float) $_POST['dfrn_version'] : 2.0);
}
-function dfrn_notify_content(App &$a) {
+function dfrn_notify_content(App $a) {
if(x($_GET,'dfrn_id')) {
require_once('include/dfrn.php');
-function dfrn_poll_init(App &$a) {
+function dfrn_poll_init(App $a) {
$dfrn_id = ((x($_GET,'dfrn_id')) ? $_GET['dfrn_id'] : '');
if($final_dfrn_id != $orig_id) {
logger('profile_check: ' . $final_dfrn_id . ' != ' . $orig_id, LOGGER_DEBUG);
- // did not decode properly - cannot trust this site
+ // did not decode properly - cannot trust this site
xml_status(3, 'Bad decryption');
}
-function dfrn_poll_post(App &$a) {
+function dfrn_poll_post(App $a) {
$dfrn_id = ((x($_POST,'dfrn_id')) ? $_POST['dfrn_id'] : '');
$challenge = ((x($_POST,'challenge')) ? $_POST['challenge'] : '');
if($final_dfrn_id != $orig_id) {
logger('profile_check: ' . $final_dfrn_id . ' != ' . $orig_id, LOGGER_DEBUG);
- // did not decode properly - cannot trust this site
+ // did not decode properly - cannot trust this site
xml_status(3, 'Bad decryption');
}
}
}
-function dfrn_poll_content(App &$a) {
+function dfrn_poll_content(App $a) {
$dfrn_id = ((x($_GET,'dfrn_id')) ? $_GET['dfrn_id'] : '');
$type = ((x($_GET,'type')) ? $_GET['type'] : 'data');
require_once('include/Probe.php');
require_once('include/group.php');
-function dfrn_request_init(App &$a) {
+function dfrn_request_init(App $a) {
if($a->argc > 1)
$which = $a->argv[1];
* After logging in, we click 'submit' to approve the linkage.
*
*/
-function dfrn_request_post(App &$a) {
+function dfrn_request_post(App $a) {
if(($a->argc != 2) || (! count($a->profile))) {
logger('Wrong count of argc or profiles: argc=' . $a->argc . ',profile()=' . count($a->profile));
}
-function dfrn_request_content(App &$a) {
+function dfrn_request_content(App $a) {
if (($a->argc != 2) || (! count($a->profile))) {
return "";
<?php
-function directory_init(App &$a) {
+function directory_init(App $a) {
$a->set_pager_itemspage(60);
if(local_user()) {
}
-function directory_post(App &$a) {
+function directory_post(App $a) {
if(x($_POST,'search'))
$a->data['search'] = $_POST['search'];
}
-function directory_content(App &$a) {
+function directory_content(App $a) {
global $db;
require_once("mod/proxy.php");
- if((get_config('system','block_public')) && (! local_user()) && (! remote_user()) ||
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user()) ||
(get_config('system','block_local_dir')) && (! local_user()) && (! remote_user())) {
notice( t('Public access denied.') . EOL);
return;
}
// if(strlen($rr['dob'])) {
// if(($years = age($rr['dob'],$rr['timezone'],'')) != 0)
-// $details .= '<br />' . t('Age: ') . $years ;
+// $details .= '<br />' . t('Age: ') . $years ;
// }
// if(strlen($rr['gender']))
// $details .= '<br />' . t('Gender: ') . $rr['gender'];
require_once('include/contact_selectors.php');
require_once('mod/contacts.php');
-function dirfind_init(App &$a) {
+function dirfind_init(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL );
-function dirfind_content(&$a, $prefix = "") {
+function dirfind_content(App $a, $prefix = "") {
$community = false;
$discover_user = false;
<?php
-function display_init(App &$a) {
+function display_init(App $a) {
if ((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
return;
return($profiledata);
}
-function display_content(&$a, $update = 0) {
+function display_content(App $a, $update = 0) {
if ((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
notice(t('Public access denied.') . EOL);
require_once('include/acl_selectors.php');
-function editpost_content(App &$a) {
+function editpost_content(App $a) {
$o = '';
require_once('include/event.php');
require_once('include/items.php');
-function events_init(App &$a) {
+function events_init(App $a) {
if (! local_user()) {
return;
}
return;
}
-function events_post(App &$a) {
+function events_post(App $a) {
logger('post: ' . print_r($_REQUEST,true));
-function events_content(App &$a) {
+function events_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
/**
* @param App $a
*/
-function fbrowser_content(App &$a){
+function fbrowser_content(App $a) {
if (!local_user())
killme();
require_once("include/diaspora.php");
require_once("include/xml.php");
-/// @TODO You always make it like this: function foo(&$a)
-/// @TODO This means that the value of $a can be changed in anything, remove & and use App as type-hint
-function fetch_init(App &$a){
+function fetch_init(App $a) {
if (($a->argc != 3) OR (!in_array($a->argv[1], array("post", "status_message", "reshare")))) {
header($_SERVER["SERVER_PROTOCOL"].' 404 '.t('Not Found'));
require_once('include/items.php');
-function filer_content(App &$a) {
+function filer_content(App $a) {
if (! local_user()) {
killme();
'$field' => array('term', t("Save to Folder:"), '', '', $filetags, t('- select -')),
'$submit' => t('Save'),
));
-
+
echo $o;
}
killme();
<?php
-function filerm_content(App &$a) {
+function filerm_content(App $a) {
if (! local_user()) {
killme();
require_once('include/Contact.php');
require_once('include/contact_selectors.php');
-function follow_content(App &$a) {
+function follow_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
return $o;
}
-function follow_post(App &$a) {
+function follow_post(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
<?php
-function friendica_init(App &$a) {
+function friendica_init(App $a) {
if ($a->argv[1]=="json"){
$register_policy = Array('REGISTER_CLOSED', 'REGISTER_APPROVE', 'REGISTER_OPEN');
-function friendica_content(App &$a) {
+function friendica_content(App $a) {
$o = '';
$o .= '<h3>Friendica</h3>';
$o .= t('This is Friendica, version') . ' ' . FRIENDICA_VERSION . ' ';
$o .= t('running at web location') . ' ' . z_root() . '</p><p>';
- $o .= t('Please visit <a href="http://friendica.com">Friendica.com</a> to learn more about the Friendica project.') . '</p><p>';
+ $o .= t('Please visit <a href="http://friendica.com">Friendica.com</a> to learn more about the Friendica project.') . '</p><p>';
$o .= t('Bug reports and issues: please visit') . ' ' . '<a href="https://github.com/friendica/friendica/issues?state=open">'.t('the bugtracker at github').'</a></p><p>';
$o .= t('Suggestions, praise, donations, etc. - please email "Info" at Friendica - dot com') . '</p>';
else
$o .= '<p>' . t('No installed plugins/addons/apps') . '</p>';
- call_hooks('about_hook', $o);
+ call_hooks('about_hook', $o);
return $o;
<?php
-function fsuggest_post(App &$a) {
+function fsuggest_post(App $a) {
if (! local_user()) {
return;
VALUES ( %d, %d, '%s','%s','%s','%s','%s','%s')",
intval(local_user()),
intval($contact_id),
- dbesc($r[0]['name']),
- dbesc($r[0]['url']),
- dbesc($r[0]['request']),
- dbesc($r[0]['photo']),
- dbesc($hash),
+ dbesc($r[0]['name']),
+ dbesc($r[0]['url']),
+ dbesc($r[0]['request']),
+ dbesc($r[0]['photo']),
+ dbesc($hash),
dbesc(datetime_convert())
);
$r = q("SELECT `id` FROM `fsuggest` WHERE `note` = '%s' AND `uid` = %d LIMIT 1",
-function fsuggest_content(App &$a) {
+function fsuggest_content(App $a) {
require_once('include/acl_selectors.php');
$o .= '<form id="fsuggest-form" action="fsuggest/' . $contact_id . '" method="post" >';
- $o .= contact_selector('suggest','suggest-select', false,
+ $o .= contact_selector('suggest','suggest-select', false,
array('size' => 4, 'exclude' => $contact_id, 'networks' => 'DFRN_ONLY', 'single' => true));
$item = intval($item);
}
-function group_init(App &$a) {
+function group_init(App $a) {
if(local_user()) {
require_once('include/group.php');
$a->page['aside'] = group_side('contacts','group','extended',(($a->argc > 1) ? intval($a->argv[1]) : 0));
-function group_post(App &$a) {
+function group_post(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
return;
}
-function group_content(App &$a) {
+function group_content(App $a) {
$change = false;
if (! local_user()) {
<?php
-function hcard_init(App &$a) {
+function hcard_init(App $a) {
$blocked = (((get_config('system','block_public')) && (! local_user()) && (! remote_user())) ? true : false);
}
-function help_content(App &$a) {
+function help_content(App $a) {
nav_set_selected('help');
<?php
if(! function_exists('home_init')) {
-function home_init(App &$a) {
+function home_init(App $a) {
$ret = array();
call_hooks('home_init',$ret);
}}
if(! function_exists('home_content')) {
-function home_content(App &$a) {
+function home_content(App $a) {
$o = '';
require_once('include/crypto.php');
-function hostxrd_init(App &$a) {
+function hostxrd_init(App $a) {
header('Access-Control-Allow-Origin: *');
header("Content-type: text/xml");
$pubkey = get_config('system','site_pubkey');
require_once("include/socgraph.php");
require_once("include/Contact.php");
-function hovercard_init(App &$a) {
+function hovercard_init(App $a) {
// Just for testing purposes
$_GET["mode"] = "minimal";
}
/**
* @brief Get the raw content of a template file
- *
+ *
* @param string $template The name of the template
* @param string $root Directory of the template
- *
+ *
* @return string|bool Output the raw content if existent, otherwise false
*/
function get_template_content($template, $root = "") {
<?php
-function ignored_init(App &$a) {
+function ignored_init(App $a) {
$ignored = 0;
$install_wizard_pass=1;
-function install_init(App &$a){
+function install_init(App $a) {
// $baseurl/install/testrwrite to test if rewite in .htaccess is working
if ($a->argc==2 && $a->argv[1]=="testrewrite") {
}
-function install_post(App &$a) {
+function install_post(App $a) {
global $install_wizard_pass, $db;
switch($install_wizard_pass) {
}
}
-function install_content(App &$a) {
+function install_content(App $a) {
global $install_wizard_pass, $db;
$o = '';
}
}
-function manual_config(App &$a) {
+function manual_config(App $a) {
$data = htmlentities($a->data['txt'],ENT_COMPAT,'UTF-8');
$o = t('The database configuration file ".htconfig.php" could not be written. Please use the enclosed text to create a configuration file in your web server root.');
$o .= "<textarea rows=\"24\" cols=\"80\" >$data</textarea>";
require_once('include/email.php');
-function invite_post(App &$a) {
+function invite_post(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
$nmessage = $message;
}
- $res = mail($recip, email_header_encode( t('Please join us on Friendica'),'UTF-8'),
- $nmessage,
+ $res = mail($recip, email_header_encode( t('Please join us on Friendica'),'UTF-8'),
+ $nmessage,
"From: " . $a->user['email'] . "\n"
. 'Content-type: text/plain; charset=UTF-8' . "\n"
. 'Content-transfer-encoding: 8bit' );
}
-function invite_content(App &$a) {
+function invite_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
'$msg_text' => t('Your message:'),
'$default_message' => t('You are cordially invited to join me and other close friends on Friendica - and help us to create a better social web.') . "\r\n" . "\r\n"
. $linktxt
- . "\r\n" . "\r\n" . (($invonly) ? t('You will need to supply this invitation code: $invite_code') . "\r\n" . "\r\n" : '') .t('Once you have registered, please connect with me via my profile page at:')
+ . "\r\n" . "\r\n" . (($invonly) ? t('You will need to supply this invitation code: $invite_code') . "\r\n" . "\r\n" : '') .t('Once you have registered, please connect with me via my profile page at:')
. "\r\n" . "\r\n" . App::get_baseurl() . '/profile/' . $a->user['nickname']
. "\r\n" . "\r\n" . t('For more information about the Friendica project and why we feel it is important, please visit http://friendica.com') . "\r\n" . "\r\n" ,
'$submit' => t('Submit')
require_once('include/diaspora.php');
require_once('include/Contact.php');
-function item_post(App &$a) {
+function item_post(App $a) {
if((! local_user()) && (! remote_user()) && (! x($_REQUEST,'commenter')))
return;
-function item_content(App &$a) {
+function item_content(App $a) {
if ((! local_user()) && (! remote_user())) {
return;
require_once('include/items.php');
require_once('include/like.php');
-function like_content(App &$a) {
+function like_content(App $a) {
if(! local_user() && ! remote_user()) {
return false;
}
require_once('include/datetime.php');
-function localtime_post(App &$a) {
+function localtime_post(App $a) {
$t = $_REQUEST['time'];
if(! $t)
}
-function localtime_content(App &$a) {
+function localtime_content(App $a) {
$t = $_REQUEST['time'];
if(! $t)
$t = 'now';
$o .= '<form action ="' . App::get_baseurl() . '/localtime?f=&time=' . $t . '" method="post" >';
- $o .= '<p>' . t('Please select your timezone:') . '</p>';
+ $o .= '<p>' . t('Please select your timezone:') . '</p>';
$o .= select_timezone(($_REQUEST['timezone']) ? $_REQUEST['timezone'] : 'America/Los_Angeles');
<?php
-function lockview_content(App &$a) {
-
+function lockview_content(App $a) {
+
$type = (($a->argc > 1) ? $a->argv[1] : 0);
if (is_numeric($type)) {
$item_id = intval($type);
} else {
$item_id = (($a->argc > 2) ? intval($a->argv[2]) : 0);
}
-
+
if(! $item_id)
killme();
if (!in_array($type, array('item','photo','event')))
killme();
-
+
$r = q("SELECT * FROM `%s` WHERE `id` = %d LIMIT 1",
dbesc($type),
intval($item_id)
}
- if(($item['private'] == 1) && (! strlen($item['allow_cid'])) && (! strlen($item['allow_gid']))
+ if(($item['private'] == 1) && (! strlen($item['allow_cid'])) && (! strlen($item['allow_gid']))
&& (! strlen($item['deny_cid'])) && (! strlen($item['deny_gid']))) {
echo t('Remote privacy information not available.') . '<br />';
dbesc(implode(', ', $allowed_groups))
);
if (dbm::is_result($r))
- foreach($r as $rr)
+ foreach($r as $rr)
$l[] = '<b>' . $rr['name'] . '</b>';
}
if(count($allowed_users)) {
dbesc(implode(', ',$allowed_users))
);
if (dbm::is_result($r))
- foreach($r as $rr)
+ foreach($r as $rr)
$l[] = $rr['name'];
}
dbesc(implode(', ', $deny_groups))
);
if (dbm::is_result($r))
- foreach($r as $rr)
+ foreach($r as $rr)
$l[] = '<b><strike>' . $rr['name'] . '</strike></b>';
}
if(count($deny_users)) {
dbesc(implode(', ',$deny_users))
);
if (dbm::is_result($r))
- foreach($r as $rr)
+ foreach($r as $rr)
$l[] = '<strike>' . $rr['name'] . '</strike>';
}
<?php
-function login_content(App &$a) {
+function login_content(App $a) {
if(x($_SESSION,'theme'))
unset($_SESSION['theme']);
if(x($_SESSION,'mobile-theme'))
require_once('include/enotify.php');
require_once('include/text.php');
-function lostpass_post(App &$a) {
+function lostpass_post(App $a) {
$loginame = notags(trim($_POST['login-name']));
if(! $loginame)
}
-function lostpass_content(App &$a) {
+function lostpass_content(App $a) {
if(x($_GET,'verify')) {
<?php
-function maintenance_content(App &$a) {
+function maintenance_content(App $a) {
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 600');
require_once("include/text.php");
-function manage_post(App &$a) {
+function manage_post(App $a) {
if (! local_user()) {
return;
-function manage_content(App &$a) {
+function manage_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
* It takes keywords from your profile and queries the directory server for
* matching keywords from other profiles.
*
- * @param App &$a
+ * @param App $a
* @return void|string
*/
-function match_content(App &$a) {
+function match_content(App $a) {
$o = '';
if (! local_user()) {
require_once('include/message.php');
require_once('include/Smilies.php');
-function message_init(App &$a) {
+function message_init(App $a) {
$tabs = '';
}
-function message_post(App &$a) {
+function message_post(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
-function message_content(App &$a) {
+function message_content(App $a) {
$o = '';
nav_set_selected('messages');
require_once('library/asn1.php');
-function modexp_init(App &$a) {
+function modexp_init(App $a) {
if($a->argc != 2)
killme();
require_once('include/items.php');
-function mood_init(App &$a) {
+function mood_init(App $a) {
if (! local_user()) {
return;
$uri = item_new_uri($a->get_hostname(),$uid);
- $action = sprintf( t('%1$s is currently %2$s'), '[url=' . $poster['url'] . ']' . $poster['name'] . '[/url]' , $verbs[$verb]);
+ $action = sprintf( t('%1$s is currently %2$s'), '[url=' . $poster['url'] . ']' . $poster['name'] . '[/url]' , $verbs[$verb]);
$arr = array();
$arr['guid'] = get_guid(32);
-function mood_content(App &$a) {
+function mood_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
<?php
-function msearch_post(App &$a) {
+function msearch_post(App $a) {
$perpage = (($_POST['n']) ? $_POST['n'] : 80);
$page = (($_POST['p']) ? intval($_POST['p'] - 1) : 0);
if (dbm::is_result($r)) {
foreach($r as $rr)
$results[] = array(
- 'name' => $rr['name'],
- 'url' => App::get_baseurl() . '/profile/' . $rr['nickname'],
+ 'name' => $rr['name'],
+ 'url' => App::get_baseurl() . '/profile/' . $rr['nickname'],
'photo' => App::get_baseurl() . '/photo/avatar/' . $rr['uid'] . '.jpg',
'tags' => str_replace(array(',',' '),array(' ',' '),$rr['pub_keywords'])
);
require_once("include/nav.php");
-function navigation_content(App &$a) {
+function navigation_content(App $a) {
$nav_info = nav_info($a);
<?php
-function network_init(App &$a) {
+function network_init(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
return;
*
* @return Array ( $no_active, $comment_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active );
*/
-function network_query_get_sel_tab(App &$a) {
+function network_query_get_sel_tab(App $a) {
$no_active='';
$starred_active = '';
$new_active = '';
return $network;
}
-function network_query_get_sel_group(App &$a) {
+function network_query_get_sel_group(App $a) {
$group = false;
if($a->argc >= 2 && is_numeric($a->argv[1])) {
}
-function network_content(&$a, $update = 0) {
+function network_content(App $a, $update = 0) {
require_once('include/conversation.php');
intval($parents),
intval($max_comments + 1)
);
-
+
if (dbm::is_result($thread_items))
$items = array_merge($items, $thread_items);
}
/**
* @brief Get the network tabs menu
- *
+ *
* @param app $a The global App
* @return string Html of the networktab
*/
-function network_tabs(App &$a) {
+function network_tabs(App $a) {
// item filter tabs
/// @TODO fix this logic, reduce duplication
/// $a->page['content'] .= '<div class="tabs-wrapper">';
$arr = array('tabs' => $tabs);
call_hooks('network_tabs', $arr);
-
+
$tpl = get_markup_template('common_tabs.tpl');
return replace_macros($tpl, array('$tabs' => $arr['tabs']));
<?php
-function newmember_content(App &$a) {
+function newmember_content(App $a) {
$o = '<h1>' . t('Welcome to Friendica') . '</h1>';
$o .= '<ul>';
- $o .= '<li> ' . '<a target="newmember" href="help/guide">' . t('Friendica Walk-Through') . '</a><br />' . t('On your <em>Quick Start</em> page - find a brief introduction to your profile and network tabs, make some new connections, and find some groups to join.') . '</li>' . EOL;
+ $o .= '<li> ' . '<a target="newmember" href="help/guide">' . t('Friendica Walk-Through') . '</a><br />' . t('On your <em>Quick Start</em> page - find a brief introduction to your profile and network tabs, make some new connections, and find some groups to join.') . '</li>' . EOL;
$o .= '</ul>';
$o .= '<ul>';
- $o .= '<li>' . '<a target="newmember" href="settings">' . t('Go to Your Settings') . '</a><br />' . t('On your <em>Settings</em> page - change your initial password. Also make a note of your Identity Address. This looks just like an email address - and will be useful in making friends on the free social web.') . '</li>' . EOL;
+ $o .= '<li>' . '<a target="newmember" href="settings">' . t('Go to Your Settings') . '</a><br />' . t('On your <em>Settings</em> page - change your initial password. Also make a note of your Identity Address. This looks just like an email address - and will be useful in making friends on the free social web.') . '</li>' . EOL;
$o .= '<li>' . t('Review the other settings, particularly the privacy settings. An unpublished directory listing is like having an unlisted phone number. In general, you should probably publish your listing - unless all of your friends and potential friends know exactly how to find you.') . '</li>' . EOL;
$o .= '<ul>';
- $o .= '<li>' . '<a target="newmember" href="profile_photo">' . t('Upload Profile Photo') . '</a><br />' . t('Upload a profile photo if you have not done so already. Studies have shown that people with real photos of themselves are ten times more likely to make friends than people who do not.') . '</li>' . EOL;
+ $o .= '<li>' . '<a target="newmember" href="profile_photo">' . t('Upload Profile Photo') . '</a><br />' . t('Upload a profile photo if you have not done so already. Studies have shown that people with real photos of themselves are ten times more likely to make friends than people who do not.') . '</li>' . EOL;
$o .= '<li>' . '<a target="newmember" href="profiles">' . t('Edit Your Profile') . '</a><br />' . t('Edit your <strong>default</strong> profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors.') . '</li>' . EOL;
$o .= '<ul>';
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
-
+
if(! $mail_disabled)
$o .= '<li>' . '<a target="newmember" href="settings/connectors">' . t('Importing Emails') . '</a><br />' . t('Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX') . '</li>' . EOL;
<?php
/**
* @file mod/nodeinfo.php
- *
+ *
* Documentation: http://nodeinfo.diaspora.software/schema.html
*/
require_once("include/plugin.php");
-function nodeinfo_wellknown(App &$a) {
+function nodeinfo_wellknown(App $a) {
if (!get_config("system", "nodeinfo")) {
http_status_exit(404);
killme();
exit;
}
-function nodeinfo_init(App &$a){
+function nodeinfo_init(App $a) {
if (!get_config("system", "nodeinfo")) {
http_status_exit(404);
killme();
require_once('include/socgraph.php');
require_once('include/contact_selectors.php');
-function nogroup_init(App &$a) {
+function nogroup_init(App $a) {
if (! local_user()) {
return;
}
-function nogroup_content(App &$a) {
+function nogroup_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
<?php
-function noscrape_init(App &$a) {
+function noscrape_init(App $a) {
if($a->argc > 1)
$which = $a->argv[1];
<?php
-function notes_init(App &$a) {
+function notes_init(App $a) {
if (! local_user()) {
return;
}
-function notes_content(&$a,$update = false) {
+function notes_content(App $a, $update = false) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
<?php
/* identi.ca -> friendica items permanent-url compatibility */
-
- function notice_init(App &$a){
+
+ function notice_init(App $a) {
$id = $a->argv[1];
$r = q("SELECT user.nickname FROM user LEFT JOIN item ON item.uid=user.uid WHERE item.id=%d",
intval($id)
require_once("include/contact_selectors.php");
require_once("include/network.php");
-function notifications_post(App &$a) {
+function notifications_post(App $a) {
if (! local_user()) {
goaway(z_root());
}
}
-function notifications_content(App &$a) {
+function notifications_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
<?php
require_once('include/NotificationsManager.php');
-function notify_init(App &$a) {
+function notify_init(App $a) {
if (! local_user()) {
return;
}
$note = $nm->getByID($a->argv[2]);
if ($note) {
$nm->setSeen($note);
-
+
// The friendica client has problems with the GUID. this is some workaround
if ($a->is_friendica_app()) {
require_once("include/items.php");
}
-function notify_content(App &$a) {
+function notify_content(App $a) {
if (! local_user()) {
return login();
}
$nm = new NotificationsManager();
-
+
$notif_tpl = get_markup_template('notifications.tpl');
$not_tpl = get_markup_template('notify.tpl');
<?php
require_once("include/oembed.php");
-function oembed_content(App &$a){
+function oembed_content(App $a) {
// logger('mod_oembed ' . $a->query_string, LOGGER_ALL);
if ($a->argv[1]=='b2h'){
<?php
-
-function oexchange_init(App &$a) {
+function oexchange_init(App $a) {
if (($a->argc > 1) && ($a->argv[1] === 'xrd')) {
$tpl = get_markup_template('oexchange_xrd.tpl');
}
}
-function oexchange_content(App &$a) {
+function oexchange_content(App $a) {
if (! local_user()) {
$o = login(false);
require_once('library/openid.php');
-function openid_content(App &$a) {
+function openid_content(App $a) {
$noid = get_config('system','no_openid');
if($noid)
require_once('include/security.php');
authenticate_success($r[0],true,true);
- // just in case there was no return url set
+ // just in case there was no return url set
// and we fell through
goaway(z_root());
<?php
- function opensearch_content(App &$a) {
-
+ function opensearch_content(App $a) {
+
$tpl = get_markup_template('opensearch.tpl');
-
+
header("Content-type: application/opensearchdescription+xml");
-
+
$o = replace_macros($tpl, array(
'$baseurl' => App::get_baseurl(),
'$nodename' => $a->get_hostname(),
));
-
+
echo $o;
-
+
killme();
-
+
}
?>
\ No newline at end of file
require_once('include/Scrape.php');
require_once('include/follow.php');
-function ostatus_subscribe_content(App &$a) {
+function ostatus_subscribe_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
<?php
-/**
+/**
* @file mod/parse_url.php
* @brief The parse_url module
- *
+ *
* This module does parse an url for embedable content (audio, video, image files or link)
* information and does format this information to BBCode or html (this depends
* on the user settings - default is BBCode output).
* (Note: This is not always possible and in some case not useful because
* the richtext editor doesn't support all kind of html).
* Otherwise the output will be constructed BBCode.
- *
- * @see ParseUrl::getSiteinfo() for more information about scraping embeddable content
+ *
+ * @see ParseUrl::getSiteinfo() for more information about scraping embeddable content
*/
use \Friendica\ParseUrl;
require_once("include/items.php");
-function parse_url_content(App &$a) {
+function parse_url_content(App $a) {
$text = null;
$str_tags = "";
/**
* @brief Legacy function to call ParseUrl::getSiteinfoCached
- *
+ *
* Note: We have moved the function to ParseUrl.php. This function is only for
* legacy support and will be remove in the future
- *
+ *
* @param type $url The url of the page which should be scraped
* @param type $no_guessing If true the parse doens't search for
* preview pictures
* @param type $do_oembed The false option is used by the function fetch_oembed()
* to avoid endless loops
- *
+ *
* @return array which contains needed data for embedding
- *
+ *
* @see ParseUrl::getSiteinfoCached()
- *
+ *
* @todo Remove this function after all Addons has been changed to use
* ParseUrl::getSiteinfoCached
*/
require_once('include/security.php');
require_once('include/Photo.php');
-function photo_init(App &$a) {
+function photo_init(App $a) {
global $_SERVER;
$prvcachecontrol = false;
require_once('include/threads.php');
require_once('include/Probe.php');
-function photos_init(App &$a) {
+function photos_init(App $a) {
if ($a->argc > 1)
auto_redir($a, $a->argv[1]);
-function photos_post(App &$a) {
+function photos_post(App $a) {
logger('mod-photos: photos_post: begin' , LOGGER_DEBUG);
-function photos_content(App &$a) {
+function photos_content(App $a) {
// URLs:
// photos/name
}
- /**
+ /**
* Display one photo
*/
// See here for a documentation for portable contacts:
// https://web.archive.org/web/20160405005550/http://portablecontacts.net/draft-spec.html
-function poco_init(App &$a) {
+function poco_init(App $a) {
require_once("include/bbcode.php");
$system_mode = false;
*
* Poke, prod, finger, or otherwise do unspeakable things to somebody - who must be a connection in your address book
* This function can be invoked with the required arguments (verb and cid and private and possibly parent) silently via ajax or
- * other web request. You must be logged in and connected to a profile.
+ * other web request. You must be logged in and connected to a profile.
* If the required arguments aren't present, we'll display a simple form to choose a recipient and a verb.
* parent is a special argument which let's you attach this activity as a comment to an existing conversation, which
* may have started with somebody else poking (etc.) somebody, but this isn't necessary. This can be used in the more pokes
- * plugin version to have entire conversations where Alice poked Bob, Bob fingered Alice, Alice hugged Bob, etc.
+ * plugin version to have entire conversations where Alice poked Bob, Bob fingered Alice, Alice hugged Bob, etc.
*
* private creates a private conversation with the recipient. Otherwise your profile's default post privacy is used.
*
require_once('include/items.php');
-function poke_init(App &$a) {
+function poke_init(App $a) {
if (! local_user()) {
return;
-function poke_content(App &$a) {
+function poke_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
require_once('include/crypto.php');
// not yet ready for prime time
//require_once('include/zot.php');
-
-function post_post(App &$a) {
+
+function post_post(App $a) {
$bulk_delivery = false;
}
else {
$nickname = $a->argv[2];
- $r = q("SELECT * FROM `user` WHERE `nickname` = '%s'
+ $r = q("SELECT * FROM `user` WHERE `nickname` = '%s'
AND `account_expired` = 0 AND `account_removed` = 0 LIMIT 1",
dbesc($nickname)
);
<?php
-function pretheme_init(App &$a) {
-
+function pretheme_init(App $a) {
+
if($_REQUEST['theme']) {
$theme = $_REQUEST['theme'];
$info = get_theme_info($theme);
require_once('include/Scrape.php');
-function probe_content(App &$a) {
+function probe_content(App $a) {
$o .= '<h3>Probe Diagnostic</h3>';
$o .= '<form action="probe" method="get">';
$o .= 'Lookup address: <input type="text" style="width: 250px;" name="addr" value="' . $_GET['addr'] .'" />';
- $o .= '<input type="submit" name="submit" value="Submit" /></form>';
+ $o .= '<input type="submit" name="submit" value="Submit" /></form>';
$o .= '<br /><br />';
require_once('include/redir.php');
-function profile_init(App &$a) {
+function profile_init(App $a) {
if(! x($a->page,'aside'))
$a->page['aside'] = '';
}
-function profile_content(&$a, $update = 0) {
+function profile_content(App $a, $update = 0) {
$category = $datequery = $datequery2 = '';
require_once("include/Photo.php");
-function profile_photo_init(App &$a) {
+function profile_photo_init(App $a) {
if (! local_user()) {
return;
}
-function profile_photo_post(App &$a) {
+function profile_photo_post(App $a) {
if (! local_user()) {
notice ( t('Permission denied.') . EOL );
if(! function_exists('profile_photo_content')) {
-function profile_photo_content(App &$a) {
+function profile_photo_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL );
return;
}
-
+
$newuser = false;
if($a->argc == 2 && $a->argv[1] === 'new')
notice( t('Permission denied.') . EOL );
return;
};
-
+
// check_form_security_token_redirectOnErr('/profile_photo', 'profile_photo');
-
+
$resource_id = $a->argv[2];
//die(":".local_user());
$r=q("SELECT * FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' ORDER BY `scale` ASC",
if(! x($a->config,'imagecrop')) {
-
+
$tpl = get_markup_template('profile_photo.tpl');
$o .= replace_macros($tpl,array(
if(! function_exists('profile_photo_crop_ui_head')) {
-function profile_photo_crop_ui_head(&$a, $ph){
+function profile_photo_crop_ui_head(App $a, $ph) {
$max_length = get_config('system','max_image_length');
if (! $max_length) {
$max_length = MAX_IMAGE_LENGTH;
}
$hash = photo_new_resource();
-
+
$smallest = 0;
- $r = $ph->store(local_user(), 0 , $hash, $filename, t('Profile Photos'), 0 );
+ $r = $ph->store(local_user(), 0 , $hash, $filename, t('Profile Photos'), 0 );
if ($r) {
info( t('Image uploaded successfully.') . EOL );
if ($width > 640 || $height > 640) {
$ph->scaleImage(640);
- $r = $ph->store(local_user(), 0 , $hash, $filename, t('Profile Photos'), 1 );
+ $r = $ph->store(local_user(), 0 , $hash, $filename, t('Profile Photos'), 1 );
if ($r === false) {
notice( sprintf(t('Image size reduction [%s] failed.'),"640") . EOL );
require_once("include/Contact.php");
require_once('include/Probe.php');
-function profiles_init(App &$a) {
+function profiles_init(App $a) {
nav_set_selected('profiles');
return $keywords;
}
-function profiles_post(App &$a) {
+function profiles_post(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
}
-function profiles_content(App &$a) {
+function profiles_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
<?php
-function profperm_init(App &$a) {
+function profperm_init(App $a) {
if (! local_user()) {
return;
}
-function profperm_content(App &$a) {
+function profperm_content(App $a) {
if (! local_user()) {
notice( t('Permission denied') . EOL);
}
$o .= '<div id="prof-update-wrapper">';
- if($change)
+ if($change)
$o = '';
-
+
$o .= '<div id="prof-members-title">';
$o .= '<h3>' . t('Visible To') . '</h3>';
$o .= '</div>';
-function pubsub_init(App &$a) {
+function pubsub_init(App $a) {
$nick = (($a->argc > 1) ? notags(trim($a->argv[1])) : '');
$contact_id = (($a->argc > 2) ? intval($a->argv[2]) : 0 );
$sql_extra = ((strlen($hub_verify)) ? sprintf(" AND `hub-verify` = '%s' ", dbesc($hub_verify)) : '');
- $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d
+ $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d
AND `blocked` = 0 AND `pending` = 0 $sql_extra LIMIT 1",
intval($contact_id),
intval($owner['uid'])
$contact = $r[0];
- // We must initiate an unsubscribe request with a verify_token.
+ // We must initiate an unsubscribe request with a verify_token.
// Don't allow outsiders to unsubscribe us.
if($hub_mode === 'unsubscribe') {
require_once('include/security.php');
-function pubsub_post(App &$a) {
+function pubsub_post(App $a) {
$xml = file_get_contents('php://input');
return (x($_POST, $name)) ? notags(trim($_POST[$name])) : '';
}
-function pubsubhubbub_init(App &$a) {
+function pubsubhubbub_init(App $a) {
// PuSH subscription must be considered "public" so just block it
// if public access isn't enabled.
if (get_config('system', 'block_public')) {
<?php
-function qsearch_init(App &$a) {
+function qsearch_init(App $a) {
if (! local_user()) {
killme();
<?php
-function randprof_init(App &$a) {
+function randprof_init(App $a) {
require_once('include/Contact.php');
$x = random_profile();
require_once('include/diaspora.php');
-function receive_post(App &$a) {
+function receive_post(App $a) {
$enabled = intval(get_config('system','diaspora_enabled'));
<?php
-function redir_init(App &$a) {
+function redir_init(App $a) {
$url = ((x($_GET,'url')) ? $_GET['url'] : '');
$quiet = ((x($_GET,'quiet')) ? '&quiet=1' : '');
intval(time() + 45)
);
- logger('mod_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG);
+ logger('mod_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG);
$dest = (($url) ? '&destination_url=' . $url : '');
- goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id
+ goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest . $quiet );
}
require_once('include/user.php');
if(! function_exists('register_post')) {
-function register_post(App &$a) {
+function register_post(App $a) {
global $lang;
if(! function_exists('register_content')) {
-function register_content(App &$a) {
+function register_content(App $a) {
// logged in users can register others (people/pages/groups)
// even with closed registrations, unless specifically prohibited by site policy.
}
-function regmod_content(App &$a) {
+function regmod_content(App $a) {
global $lang;
<?php
-function removeme_post(App &$a) {
+function removeme_post(App $a) {
if (! local_user()) {
return;
}
-function removeme_content(App &$a) {
+function removeme_content(App $a) {
if (! local_user()) {
goaway(z_root());
require_once('include/Scrape.php');
require_once('include/follow.php');
-function repair_ostatus_content(App &$a) {
+function repair_ostatus_content(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
-function rsd_xml_content(App &$a) {
+function rsd_xml_content(App $a) {
header ("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>
<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">
}
-function salmon_post(App &$a) {
+function salmon_post(App $a) {
$xml = file_get_contents('php://input');
if(get_pconfig($importer['uid'],'system','ostatus_autofriend')) {
$result = new_contact($importer['uid'],$author_link);
if($result['success']) {
- $r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND ( `url` = '%s' OR `alias` = '%s')
+ $r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND ( `url` = '%s' OR `alias` = '%s')
AND `uid` = %d LIMIT 1",
dbesc(NETWORK_OSTATUS),
dbesc($author_link),
}
-function search_init(App &$a) {
+function search_init(App $a) {
$search = ((x($_GET,'search')) ? notags(trim(rawurldecode($_GET['search']))) : '');
-function search_post(App &$a) {
+function search_post(App $a) {
if(x($_POST,'search'))
$a->data['search'] = $_POST['search'];
}
-function search_content(App &$a) {
+function search_content(App $a) {
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
notice( t('Public access denied.') . EOL);
<?php
-function session_content(&$a) {
+function session_content(App $a) {
}
return null;
}
-function settings_init(App &$a) {
+function settings_init(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL );
}
-function settings_post(App &$a) {
+function settings_post(App $a) {
if (! local_user()) {
return;
}
-function settings_content(App &$a) {
+function settings_content(App $a) {
$o = '';
nav_set_selected('settings');
<?php
-function share_init(App &$a) {
+function share_init(App $a) {
$post_id = (($a->argc > 1) ? intval($a->argv[1]) : 0);
if((! $post_id) || (! local_user()))
killme();
- $r = q("SELECT item.*, contact.network FROM `item`
- inner join contact on `item`.`contact-id` = `contact`.`id`
+ $r = q("SELECT item.*, contact.network FROM `item`
+ inner join contact on `item`.`contact-id` = `contact`.`id`
WHERE `item`.`id` = %d AND `item`.`uid` = %d LIMIT 1",
intval($post_id),
require_once("include/Smilies.php");
-function smilies_content(App &$a) {
+function smilies_content(App $a) {
if ($a->argv[1]==="json"){
$tmp = Smilies::get_list();
$results = array();
<?php
-function starred_init(App &$a) {
+function starred_init(App $a) {
require_once("include/threads.php");
require_once("include/plugin.php");
-function statistics_json_init(App &$a) {
+function statistics_json_init(App $a) {
if (!get_config("system", "nodeinfo")) {
http_status_exit(404);
require_once('include/items.php');
-function subthread_content(App &$a) {
+function subthread_content(App $a) {
if(! local_user() && ! remote_user()) {
return;
}
}
- // this represents the post owner on this system.
+ // this represents the post owner on this system.
$r = q("SELECT `contact`.*, `user`.`nickname` FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`
WHERE `contact`.`self` = 1 AND `contact`.`uid` = %d LIMIT 1",
require_once('include/socgraph.php');
require_once('include/contact_widgets.php');
-function suggest_init(App &$a) {
+function suggest_init(App $a) {
if (! local_user()) {
return;
}
-function suggest_content(App &$a) {
+function suggest_content(App $a) {
require_once("mod/proxy.php");
require_once('include/items.php');
-function tagger_content(App &$a) {
+function tagger_content(App $a) {
if(! local_user() && ! remote_user()) {
return;
require_once('include/bbcode.php');
-function tagrm_post(App &$a) {
+function tagrm_post(App $a) {
if (! local_user()) {
goaway(App::get_baseurl() . '/' . $_SESSION['photo_return']);
info( t('Tag removed') . EOL );
goaway(App::get_baseurl() . '/' . $_SESSION['photo_return']);
-
+
// NOTREACHED
}
-function tagrm_content(App &$a) {
+function tagrm_content(App $a) {
$o = '';
<?php
-function toggle_mobile_init(App &$a) {
+function toggle_mobile_init(App $a) {
if (isset($_GET['off'])) {
$_SESSION['show-mobile'] = false;
<?php
-function uexport_init(App &$a){
+function uexport_init(App $a) {
if (! local_user()) {
killme();
}
}
/// @TODO Change space -> tab where wanted
-function uexport_content(App &$a){
+function uexport_content(App $a) {
if ($a->argc > 1) {
header("Content-type: application/json");
/**
* echoes account data and items as separated json, one per line
*/
-function uexport_all(App &$a) {
+function uexport_all(App $a) {
uexport_account($a);
echo "\n";
\r
require_once("include/uimport.php");\r
\r
-function uimport_post(App &$a) {\r
+function uimport_post(App $a) {\r
switch($a->config['register_policy']) {\r
case REGISTER_OPEN:\r
$blocked = 0;\r
}\r
}\r
\r
-function uimport_content(App &$a) {\r
+function uimport_content(App $a) {\r
\r
if ((! local_user()) && ($a->config['register_policy'] == REGISTER_CLOSED)) {\r
notice("Permission denied." . EOL);\r
require_once("mod/community.php");
-function update_community_content(App &$a) {
+function update_community_content(App $a) {
header("Content-type: text/html");
echo "<!DOCTYPE html><html><body>\r\n";
require_once("mod/display.php");
require_once("include/group.php");
-function update_display_content(App &$a) {
+function update_display_content(App $a) {
$profile_uid = intval($_GET["p"]);
require_once("mod/network.php");
require_once("include/group.php");
-function update_network_content(App &$a) {
+function update_network_content(App $a) {
$profile_uid = intval($_GET["p"]);
require_once("mod/notes.php");
-function update_notes_content(App &$a) {
+function update_notes_content(App $a) {
$profile_uid = intval($_GET["p"]);
require_once("mod/profile.php");
-function update_profile_content(App &$a) {
+function update_profile_content(App $a) {
$profile_uid = intval($_GET["p"]);
require_once('include/redir.php');
-function videos_init(App &$a) {
+function videos_init(App $a) {
if($a->argc > 1)
auto_redir($a, $a->argv[1]);
-function videos_post(App &$a) {
+function videos_post(App $a) {
$owner_uid = $a->data['user']['uid'];
-function videos_content(App &$a) {
+function videos_content(App $a) {
// URLs (most aren't currently implemented):
// videos/name
require_once('include/Contact.php');
require_once('include/contact_selectors.php');
-function viewcontacts_init(App &$a) {
+function viewcontacts_init(App $a) {
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
return;
}
-function viewcontacts_content(App &$a) {
+function viewcontacts_content(App $a) {
require_once("mod/proxy.php");
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
<?php
-function viewsrc_content(App &$a) {
+function viewsrc_content(App $a) {
if (! local_user()) {
notice( t('Access denied.') . EOL);
return;
}
- $r = q("SELECT `item`.`body` FROM `item`
+ $r = q("SELECT `item`.`body` FROM `item`
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
and `item`.`moderated` = 0
AND `item`.`id` = '%s' LIMIT 1",
require_once('include/attach.php');
require_once('include/datetime.php');
-function wall_attach_post(App &$a) {
+function wall_attach_post(App $a) {
$r_json = (x($_GET,'response') && $_GET['response']=='json');
require_once('include/Photo.php');
-function wall_upload_post(&$a, $desktopmode = true) {
+function wall_upload_post(App $a, $desktopmode = true) {
logger("wall upload: starting new upload", LOGGER_DEBUG);
require_once('include/message.php');
-function wallmessage_post(App &$a) {
+function wallmessage_post(App $a) {
$replyto = get_my_url();
if(! $replyto) {
}
-function wallmessage_content(App &$a) {
+function wallmessage_content(App $a) {
if(! get_my_url()) {
notice( t('Permission denied.') . EOL);
'$nickname' => $user['nickname'],
'$linkurl' => t('Please enter a link URL:')
));
-
-
+
+
$tpl = get_markup_template('wallmessage.tpl');
$o .= replace_macros($tpl,array(
'$header' => t('Send Private Message'),
<?php
require_once("include/Probe.php");
-function webfinger_content(App &$a) {
+function webfinger_content(App $a) {
$o .= '<h3>Webfinger Diagnostic</h3>';
require_once('include/crypto.php');
-function xrd_init(App &$a) {
+function xrd_init(App $a) {
$uri = urldecode(notags(trim($_GET['uri'])));
* Theme settings
*/
-function theme_content(App &$a){
+function theme_content(App $a) {
if (!local_user()) {
return;
}
return clean_form($a, $colorset, $user);
}
-function theme_post(App &$a){
+function theme_post(App $a) {
if (! local_user()) {
return;
}
}
}
-function theme_admin(App &$a){
+function theme_admin(App $a) {
$colorset = get_config( 'duepuntozero', 'colorset');
$user = false;
return clean_form($a, $colorset, $user);
}
-function theme_admin_post(App &$a){
+function theme_admin_post(App $a) {
if (isset($_POST['duepuntozero-settings-submit'])){
set_config('duepuntozero', 'colorset', $_POST['duepuntozero_colorset']);
}
}
/// @TODO $a is no longer used
-function clean_form(&$a, &$colorset, $user){
+function clean_form(App $a, &$colorset, $user) {
$colorset = array(
- 'default' =>t('default'),
+ 'default' =>t('default'),
'greenzero' =>t('greenzero'),
'purplezero' =>t('purplezero'),
'easterbunny' =>t('easterbunny'),
<?php
-function duepuntozero_init(App &$a) {
+function duepuntozero_init(App $a) {
set_template_engine($a, 'smarty3');
$a->page['htmlhead'] .= <<< EOT
<script>
function insertFormatting(comment,BBcode,id) {
-
+
var tmpStr = $("#comment-edit-text-" + id).val();
if(tmpStr == comment) {
tmpStr = "";
selected = document.selection.createRange();
if (BBcode == "url"){
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
- } else
+ } else
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
<?php
require_once('view/theme/frio/php/Image.php');
-function theme_content(App &$a) {
+function theme_content(App $a) {
if (!local_user()) {
return;
}
$arr["background_image"] = get_pconfig(local_user(),'frio', 'background_image' );
$arr["bg_image_option"] = get_pconfig(local_user(),'frio', 'bg_image_option' );
- return frio_form($a, $arr);
+ return frio_form($arr);
}
-function theme_post(App &$a) {
+function theme_post(App $a) {
if (!local_user()) {
return;
}
}
}
-function frio_form(&$a, $arr) {
+function frio_form($arr) {
require_once("view/theme/frio/php/schema.php");
-
+
$scheme_info = get_schema_info($arr["schema"]);
$disable = $scheme_info["overwrites"];
if (!is_array($disable)) $disable = array();
/**
* @file view/theme/frio/php/frio_boot.php
- *
+ *
* @brief This file contains functions for page contstruction
- *
+ *
*/
/**
* @brief Load page template in dependence of the template mode
- *
+ *
* @todo Check if this is really needed.
*/
-function load_page(App &$a) {
+function load_page(App $a) {
if(isset($_GET["mode"]) AND ($_GET["mode"] == "minimal")) {
require "view/theme/frio/minimal.php";
} elseif((isset($_GET["mode"]) AND ($_GET["mode"] == "none"))) {
require_once(str_replace('theme/' . current_theme() . '/', '', $template));
}
-
+
}
/**
* @brief Check if page is a modal page
- *
+ *
* This function checks if $_REQUEST['pagename'] is
* a defined in a $modalpages
- *
+ *
* @return bool
*/
function is_modal() {
$is_modal = true;
}
}
-
+
return $is_modal;
}
/**
* @brief Array with modalpages
- *
+ *
* The array contains the page names of the pages
* which should displayed as modals
- *
+ *
* @return array Pagenames as path
*/
function get_modalpage_list() {
/**
* @brief Array with standard pages
- *
+ *
* The array contains the page names of the pages
* which should displayed as standard-page
- *
+ *
* @return array Pagenames as path
*/
function get_standard_page_list() {
/**
* @brief Check if page is standard page
- *
+ *
* This function checks if $_REQUEST['pagename'] is
* a defined $standardpages
- *
+ *
* @param string $pagetitle Title of the actual page
* @return bool
*/
$is_standard_page = true;
}
}
-
+
return $is_standard_page;
}
/**
* @brief Get the typ of the page
- *
+ *
* @param type $pagetitle
* @return string
*/
* Description: Bootstrap V3 theme. The theme is currently under construction, so it is far from finished. For further information have a look at the <a href="https://github.com/friendica/friendica/tree/develop/view/theme/frio/README.md">ReadMe</a>.
* Version: V.0.7
* Author: Rabuzarus <https://friendica.kommune4.de/profile/rabuzarus>
- *
+ *
*/
$frio = "view/theme/frio";
global $frio;
-function frio_init(App &$a) {
+function frio_init(App $a) {
// disable the events module link in the profile tab
$a->theme_events_in_profile = false;
logger("uninstalled theme frio");
}
/**
- * @brief Replace friendica photo links
- *
+ * @brief Replace friendica photo links hook
+ *
* This function does replace the links to photos
* of other friendica users. Original the photos are
* linked to the photo page. Now they will linked directly
* to the photo file. This function is nessesary to use colorbox
* in the network stream
- *
- * @param App $a
+ *
+ * @param App $a Unused but required by hook definition
* @param array $body_info The item and its html output
*/
-function frio_item_photo_links(&$a, &$body_info) {
+function frio_item_photo_links(App $a, &$body_info) {
require_once('include/Photo.php');
$phototypes = Photo::supportedTypes();
}
/**
- * @brief Replace links of the item_photo_menu
- *
+ * @brief Replace links of the item_photo_menu hook
+ *
* This function replaces the original poke and the message links
* to call the addToModal javascript function so this pages can
* be loaded in a bootstrap modal
- *
- * @param app $a The app data
+ *
+ * @param App $a Unused but required by the hook definition
* @param array $arr Contains item data and the original photo_menu
*/
-function frio_item_photo_menu($a, &$arr){
+function frio_item_photo_menu(App $a, &$arr) {
foreach($arr["menu"] as $k =>$v) {
if(strpos($v,'poke/?f=&c=') === 0 || strpos($v,'message/new/') === 0) {
/**
* @brief Replace links of the contact_photo_menu
- *
+ *
* This function replaces the original poke and the message links
* to call the addToModal javascript function so this pages can
* be loaded in a bootstrap modal
* Additionally the profile, status and photo page links will be changed
* to don't open in a new tab if the contact is a friendica contact.
- *
+ *
* @param app $a The app data
* @param array $args Contains contact data and the original photo_menu
*/
-function frio_contact_photo_menu($a, &$args){
+function frio_contact_photo_menu(App $a, &$args){
$pokelink = "";
$pmlink = "";
// friendicas "magic-link" which indicates a friendica user on froreign
// friendica servers as remote user or visitor
//
- // The value for opening in a new tab is e.g. when
+ // The value for opening in a new tab is e.g. when
// $args["menu"]["status"][2] is true. If the value of the [2] key is true
// and if it's a friendica contact we set it to false
foreach($args["menu"] as $k =>$v) {
/**
* @brief Construct remote nav menu
- *
+ *
* It creates a remote baseurl form $_SESSION for remote users and friendica
- * visitors. This url will be added to some of the nav links. With this behaviour
+ * visitors. This url will be added to some of the nav links. With this behaviour
* the user will come back to her/his own pages on his/her friendica server.
* Not all possible links are available (notifications, administrator, manage,
* notes aren't available because we have no way the check remote permissions)..
* Some links will point to the local pages because the user would expect
* local page (these pages are: search, community, help, apps, directory).
- *
+ *
* @param app $a The App class
* @param array $nav The original nav menu
*/
// split up the url in it's parts (protocol,domain/directory, /profile/, nickname
// I'm not familiar with regex, so someone might find a better solutionen
- //
+ //
// E.g $homelink = 'https://friendica.domain.com/profile/mickey' should result in an array
// with 0 => 'https://friendica.domain.com/profile/mickey' 1 => 'https://',
// 2 => 'friendica.domain.com' 3 => '/profile/' 4 => 'mickey'
- //
+ //
//$server_url = preg_match('/^(https?:\/\/.*?)\/profile\//2', $homelink);
preg_match('/^(https?:\/\/)?(.*?)(\/profile\/)(.*)/', $homelink, $url_parts);
}
/**
* @brief: Search for contacts
- *
+ *
* This function search for a users contacts. The code is copied from contact search
* in /mod/contacts.php. With this function the contacts will permitted to acl_lookup()
- * and can grabbed as json. For this we use the type="r". This is usful to to let js
+ * and can grabbed as json. For this we use the type="r". This is usful to to let js
* grab the contact data.
* We use this to give the data to textcomplete and have a filter function at the
* contact page.
- *
+ *
* @param App $a The app data @TODO Unused
* @param array $results The array with the originals from acl_lookup()
*/
* Maintainer: Zach P <techcity@f.shmuz.in>
*/
-function frost_mobile_init(App &$a) {
+function frost_mobile_init(App $a) {
$a->sourcename = 'Friendica mobile web';
$a->videowidth = 250;
$a->videoheight = 200;
set_template_engine($a, 'smarty3');
}
-function frost_mobile_content_loaded(App &$a) {
+function frost_mobile_content_loaded(App $a) {
// I could do this in style.php, but by having the CSS in a file the browser will cache it,
// making pages load faster
* Maintainer: Zach P <techcity@f.shmuz.in>
*/
-function frost_init(App &$a) {
+function frost_init(App $a) {
$a->videowidth = 400;
$a->videoheight = 330;
$a->theme_thread_allow = false;
set_template_engine($a, 'smarty3');
}
-function frost_content_loaded(App &$a) {
+function frost_content_loaded(App $a) {
// I could do this in style.php, but by having the CSS in a file the browser will cache it,
// making pages load faster
logger("uninstalled theme frost");
}
-function frost_item_photo_links(&$a, &$body_info) {
+function frost_item_photo_links(App $a, &$body_info) {
require_once('include/Photo.php');
$phototypes = Photo::supportedTypes();
$body_info['html'] = str_replace($link, $newlink, $body_info['html']);
}
-
+
$p = bb_find_open_close($body_info['html'], "<a", ">", $occurence);
}
}
* Theme settings
*/
-function theme_content(App &$a){
+function theme_content(App $a) {
if (!local_user()) {
return;
}
return quattro_form($a,$align, $color, $tfs, $pfs);
}
-function theme_post(App &$a){
+function theme_post(App $a) {
if (! local_user()) {
return;
}
}
}
-function theme_admin(App &$a){
+function theme_admin(App $a) {
$align = get_config('quattro', 'align' );
$color = get_config('quattro', 'color' );
$tfs = get_config("quattro","tfs");
return quattro_form($a,$align, $color, $tfs, $pfs);
}
-function theme_admin_post(App &$a){
+function theme_admin_post(App $a) {
if (isset($_POST['quattro-settings-submit'])){
set_config('quattro', 'align', $_POST['quattro_align']);
set_config('quattro', 'color', $_POST['quattro_color']);
}
/// @TODO $a is no longer used here
-function quattro_form(App &$a, $align, $color, $tfs, $pfs){
+function quattro_form(App $a, $align, $color, $tfs, $pfs) {
$colors = array(
"dark" => "Quattro",
"lilac" => "Lilac",
* Maintainer: Tobias <https://diekershoff.homeunix.net/friendica/profile/tobias>
*/
-function quattro_init(App &$a) {
+function quattro_init(App $a) {
$a->page['htmlhead'] .= '<script src="'.App::get_baseurl().'/view/theme/quattro/tinycon.min.js"></script>';
$a->page['htmlhead'] .= '<script src="'.App::get_baseurl().'/view/theme/quattro/js/quattro.js"></script>';;
}
* Screenshot: <a href="screenshot.png">Screenshot</a>
*/
-function smoothly_init(App &$a) {
+function smoothly_init(App $a) {
set_template_engine($a, 'smarty3');
$cssFile = null;
<script>
function insertFormatting(comment,BBcode,id) {
-
+
var tmpStr = $("#comment-edit-text-" + id).val();
if(tmpStr == comment) {
tmpStr = "";
selected = document.selection.createRange();
if (BBcode == "url"){
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
- } else
+ } else
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
-function theme_content(App &$a){
+function theme_content(App $a) {
if (!local_user()) {
return;
}
$show_services, $show_friends, $show_lastusers);
}
-function theme_post(App &$a){
+function theme_post(App $a) {
if (! local_user()) {
return;
}
}
-function theme_admin(App &$a){
+function theme_admin(App $a) {
if (!function_exists('get_vier_config'))
return;
return $o;
}
-function theme_admin_post(App &$a){
+function theme_admin_post(App $a) {
if (isset($_POST['vier-settings-submit'])){
set_config('vier', 'style', $_POST['vier_style']);
set_config('vier', 'show_pages', $_POST['vier_show_pages']);
}
/// @TODO $a is no longer used
-function vier_form(&$a, $style, $show_pages, $show_profiles, $show_helpers, $show_services, $show_friends, $show_lastusers){
+function vier_form(App $a, $style, $show_pages, $show_profiles, $show_helpers, $show_services, $show_friends, $show_lastusers) {
$styles = array(
"plus"=>"Plus",
"breathe"=>"Breathe",
require_once("include/socgraph.php");
require_once("mod/proxy.php");
-function vier_init(App &$a) {
+function vier_init(App $a) {
$a->theme_events_in_profile = false;