* @brief Retrieve the App structure
*
* Useful in functions which require it but don't get it passed to them
+ *
+ * @return App
*/
function get_app()
{
*/
function killme()
{
- global $session_exists;
-
if (!get_app()->is_backend()) {
- if (!$session_exists) {
- session_abort();
- } else {
- session_write_close();
- }
+ session_write_close();
}
exit();
"ostatus",\r
"diaspora"\r
],\r
- "licence": "GNU-Affero",\r
+ "license": "AGPL-3.0+",
"support": {\r
"issues": "https://github.com/friendica/friendica/issues"\r
},\r
* [Using Composer](help/Composer)
* [How To Move Classes to `src`](help/Developer-How-To-Move-Classes-to-src)
-###Coding standards
+### Coding standards
For the sake of consistency between contribution and general code readability, Friendica follows the widespread [PSR-2 coding standards](http://www.php-fig.org/psr/psr-2/) to the exception of a few rules.
Here's a few primers if you are new to Friendica or to the PSR-2 coding standards:
For documentation we use the standard of *one sentence per line* for the `md` files in the `/doc` and `/doc/$lng` subdirectories.
-####Check with [PHP Code Sniffer](https://github.com/squizlabs/PHP_CodeSniffer)
+#### Check with [PHP Code Sniffer](https://github.com/squizlabs/PHP_CodeSniffer)
This tool checks your files against a variety of coding standards, including PSR-2, and ouputs a report of all the standard violations.
You can simply install it through PEAR: `pear install PHP_CodeSniffer`
The output is a list of all the coding standards violations that you should fix before committing your work.
Additionally, `phpcs` integrates with a few IDEs (Eclipse, Netbeans, PHPStorm...) so that you don't have to fiddle with the command line.
-####Fix with PHP Code Beautifier and Fixer (phpbcf) included in PHP Code Sniffer
+#### Fix with PHP Code Beautifier and Fixer (phpbcf) included in PHP Code Sniffer
If you're getting a massive list of standards violations when running `phpcs`, it can be annoying to fix all the violations by hand.
Thankfully, PHP Code Sniffer is shipped with an automatic code fixer that can take care of the tedious task for you.
If the command-line tools `diff` and `patch` are unavailabe for you, `phpcbf` can use slightly slower PHP equivalents by using the `--no-patch` argument.
-###Code documentation
+### Code documentation
If you are interested in having the documentation of the Friendica code outside of the code files, you can use [Doxygen](http://doxygen.org) to generate it.
The configuration file for Doxygen is located in the `util` directory of the project sources.
If you find missing documentation, don't hesitate to contact us and write it down to enhance the code documentation.
-###Issues
+### Issues
Have a look at our [issue tracker](https://github.com/friendica/friendica) on github!
* There is a *Junior Job* label for issues we think might be a good point to start with.
But you don't have to limit yourself to those issues.
-###Web interface
+### Web interface
The thing many people want most is a better interface, preferably a responsive Friendica theme.
This is a piece of work!
* Let us know about your plans [in the dev forum](https://forum.friendi.ca/profile/developers) or the [theme developer forum](https://friendica.eu/profile/ftdevs).
Do not worry about cross-posting.
-###Client software
+### Client software
As Friendica is using a [Twitter/GNU Social compatible API](help/api) any of the clients for those platforms should work with Friendica as well.
Furthermore there are several client projects, especially for use with Friendica.
* include_entities: "true" shows entities for pictures and links (Default: false)
+---
+### blocks/list (*; AUTH)
+
+#### Parameters
+
+* include_entities: "true" shows entities for pictures and links (Default: false)
+* count: Items per page (default: 20).
+* page: page number
+
+#### Unsupported parameters
+* cursor
+* skip_status
+
---
### statuses/friends_timeline (*; AUTH)
#### Parameters
Friendica doesn't allow showing followers of other users.
+---
+### search (*; AUTH)
+#### Parameters
+* q: search query
+* page: the page number (starting at 1) to return
+* rpp: the number of statuses to return per page
+* count: alias for the rpp parameter
+* since_id: returns statuses with ids greater than the given id
+* max_id: returns statuses with ids lower or equal to the given id
+
+#### Unsupported parameters
+* geocode
+* lang
+* locale
+* result_type
+* until
+* include_entities
+
---
### users/search (*)
#### Parameters
* account/update_delivery_device
* account/update_profile
* account/update_profile_background_image
-* blocks/list
* blocks/ids
* users/lookup
* users/show
/// @TODO move to top of file or somewhere better
api_register_func('api/users/search', 'api_users_search');
+/**
+ * Returns statuses that match a specified query.
+ *
+ * @see https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets
+ *
+ * @param string $type Return format: json, xml, atom, rss
+ *
+ * @return array|string
+ * @throws UnauthorizedException
+ * @throws BadRequestException
+ */
+function api_search($type)
+{
+ $data = array();
+
+ if (!x($_REQUEST, 'q')) {
+ throw new BadRequestException("q parameter is required.");
+ }
+
+ if (x($_REQUEST, 'rpp')) {
+ $count = $_REQUEST['rpp'];
+ } elseif (x($_REQUEST, 'count')) {
+ $count = $_REQUEST['count'];
+ } else {
+ $count = 15;
+ }
+
+ $since_id = (x($_REQUEST, 'since_id') ? $_REQUEST['since_id'] : 0);
+ $max_id = (x($_REQUEST, 'max_id') ? $_REQUEST['max_id'] : 0);
+ $page = (x($_REQUEST, 'page') ? $_REQUEST['page'] - 1 : 0);
+
+ $start = $page * $count;
+
+ if ($max_id > 0) {
+ $sql_extra .= ' AND `item`.`id` <= ' . intval($max_id);
+ }
+
+ $r = dba::p(
+ "SELECT ".item_fieldlists()."
+ FROM `item` ".item_joins()."
+ WHERE ".item_condition()." AND (`item`.`uid` = 0 OR (`item`.`uid` = ? AND NOT `item`.`global`))
+ AND `item`.`body` LIKE CONCAT('%',?,'%')
+ $sql_extra
+ AND `item`.`id`>?
+ ORDER BY `item`.`id` DESC LIMIT ".intval($start)." ,".intval($count)." ",
+ api_user(),
+ $_REQUEST['q'],
+ $since_id
+ );
+
+ $data['status'] = api_format_items(dba::inArray($r), api_get_user(get_app()));
+
+ return api_format_data("statuses", $type, $data);
+}
+
+/// @TODO move to top of file or somewhere better
+api_register_func('api/search/tweets', 'api_search', true);
+api_register_func('api/search', 'api_search', true);
+
/**
*
* http://developer.twitter.com/doc/get/statuses/home_timeline
$sql_extra = " AND false ";
}
+ if ($qtype == 'blocks') {
+ $sql_blocked = 'AND `blocked`';
+ } else {
+ $sql_blocked = 'AND NOT `blocked`';
+ }
+
$r = q(
"SELECT `nurl`
FROM `contact`
WHERE `uid` = %d
AND NOT `self`
- AND (NOT `blocked` OR `pending`)
+ $sql_blocked
+ AND NOT `pending`
$sql_extra
ORDER BY `nick`
LIMIT %d, %d",
api_register_func('api/statuses/friends', 'api_statuses_friends', true);
api_register_func('api/statuses/followers', 'api_statuses_followers', true);
+/**
+ * Returns the list of blocked users
+ *
+ * @see https://developer.twitter.com/en/docs/accounts-and-users/mute-block-report-users/api-reference/get-blocks-list
+ *
+ * @param string $type Either "json" or "xml"
+ *
+ * @return boolean|string|array
+ * @throws UnauthorizedException
+ */
+function api_blocks_list($type)
+{
+ $data = api_statuses_f('blocks');
+ if ($data === false) {
+ return false;
+ }
+ return api_format_data("users", $type, $data);
+}
+
+/// @TODO move to top of file or somewhere better
+api_register_func('api/blocks/list', 'api_blocks_list', true);
+
function api_statusnet_config($type)
{
$a = get_app();
{
global $session_exists, $session_expire;
- if (!$id || !$data) {
+ if (!$id) {
return false;
}
+ if (!$data) {
+ return true;
+ }
+
$expire = time() + $session_expire;
$default_expire = time() + 300;
/**
- * transorm link href and img src from relative to absolute
+ * transform link href and img src from relative to absolute
*
* @param string $text
* @param string $base base url
use Exception;
+require_once 'boot.php';
+require_once 'include/dba.php';
+
/**
*
* class: App
*
* @return string
*/
- public static function get_basepath() {
- if (isset($this)) {
- $basepath = $this->basepath;
- }
+ public function get_basepath() {
+ $basepath = $this->basepath;
if (! $basepath) {
$basepath = Config::get('system', 'basepath');
* If $name is not defined, return engine defined by theme,
* or default
*
- * @param strin $name Template engine name
+ * @param string $name Template engine name
* @return object Template Engine instance
*/
function template_engine($name = '') {
use Friendica\Database\DBM;
use dba;
+require_once 'include/dba.php';
+
/**
* @brief This class handles methods related to the forum functionality
*/
$contacts = self::getList($uid, $lastitem, false, false);
$total_shown = 0;
-
+ $forumlist = '';
foreach ($contacts as $contact) {
$forumlist .= micropro($contact, false, 'forumlist-profile-advanced');
$total_shown ++;
use Friendica\Database\DBM;
use dba;
+require_once 'include/dba.php';
+
/**
* @brief Class for storing data for a short time
*/
$memcache_host = Config::get('system', 'memcache_host', '127.0.0.1');
$memcache_port = Config::get('system', 'memcache_port', 11211);
- $memcache = new Memcache;
+ $memcache = new \Memcache;
if (!$memcache->connect($memcache_host, $memcache_port)) {
return false;
}
// Frequently clear cache
- self::clear($duration);
+ self::clear();
$r = dba::select('cache', array('v'), array('k' => $key), array('limit' => 1));
use Friendica\Database\DBM;
use dba;
+require_once 'include/dba.php';
+
/**
* @brief Arbitrary sytem configuration storage
*
*/
namespace Friendica\Core;
-use Friendica\Core\Pconfig;
+use Friendica\Core\PConfig;
use Friendica\Core\System;
use Friendica\Database\DBM;
use Friendica\Model\Contact;
+require_once 'include/dba.php';
require_once 'include/html2plain.php';
require_once 'include/datetime.php';
require_once 'include/bbcode.php';
public function introNotifs($all = false, $start = 0, $limit = 80)
{
$ident = 'introductions';
- $total = $this->introTotal($seen);
+ $total = $this->introTotal($all);
$notifs = array();
$sql_extra = "";
use Friendica\Database\DBM;
use dba;
+require_once 'include/dba.php';
+
/**
* @file include/Core/PConfig.php
* @brief contains the class with methods for the management
// manage array value
$dbvalue = (is_array($value) ? serialize($value) : $dbvalue);
- dba::update('pconfig', array('v' => $dbvalue), array('uid' => $uid, 'cat' => $family, 'k' => $key), true);
+ $ret = dba::update('pconfig', array('v' => $dbvalue), array('uid' => $uid, 'cat' => $family, 'k' => $key), true);
if ($ret) {
self::$in_db[$uid][$family][$key] = true;
use dba;
+require_once 'include/dba.php';
+
/**
* @file src/Core/Worker.php
*
use dba;
+require_once 'include/dba.php';
+
/**
* @brief This class contain functions for the database management
*
use dba;
require_once "boot.php";
+require_once 'include/dba.php';
+require_once 'include/enotify.php';
require_once "include/text.php";
/**
private static function createIndex($indexname, $fieldnames, $method = "ADD") {
$method = strtoupper(trim($method));
if ($method!="" && $method!="ADD") {
- throw new Exception("Invalid parameter 'method' in self::createIndex(): '$method'");
+ throw new \Exception("Invalid parameter 'method' in self::createIndex(): '$method'");
}
if ($fieldnames[0] == "UNIQUE") {
use dba;
require_once 'boot.php';
+require_once 'include/dba.php';
require_once 'include/text.php';
/**
* up or some other transient event and that there's a possibility we could recover from it.
*
* @param array $contact contact to mark for archival
- * @return type
+ * @return null
*/
public static function markForArchival(array $contact)
{
use Exception;
require_once 'include/datetime.php';
+require_once 'include/dba.php';
require_once 'include/network.php';
require_once 'include/html2bbcode.php';
/**
* @brief Replace alternate OStatus user format with the primary one
*
- * @param arr $contact contact array (called by reference)
+ * @param array $contact contact array (called by reference)
* @return void
*/
public static function fixAlternateContactAddress(&$contact)
/**
* @brief Fetch the gcontact id, add an entry if not existed
*
- * @param arr $contact contact array
+ * @param array $contact contact array
*
* @return bool|int Returns false if not found, integer if contact was found
*/
/**
* @brief Updates the gcontact table from a given array
*
- * @param arr $contact contact array
+ * @param array $contact contact array
*
* @return bool|int Returns false if not found, integer if contact was found
*/
/**
* @brief Updates the gcontact entry from probe
*
- * @param str $url profile link
+ * @param string $url profile link
* @return void
*/
public static function updateFromProbe($url)
*
* If the "Statistics" plugin is enabled (See http://gstools.org/ for details) we query user data with this.
*
- * @param str $server Server address
+ * @param string $server Server address
* @return void
*/
public static function fetchGsUsers($server)
use dba;
require_once 'boot.php';
+require_once 'include/dba.php';
require_once 'include/text.php';
/**
/**
* @brief Mark a group as deleted
*
- * @param type $gid
+ * @param int $gid
* @return boolean
*/
public static function remove($gid) {
return false;
}
+ $group = dba::select('group', ['uid'], ['gid' => $gid], ['limit' => 1]);
+ if (!DBM::is_result($group)) {
+ return false;
+ }
+
// remove group from default posting lists
- $user = dba::select('user', ['def_gid', 'allow_gid', 'deny_gid'], ['uid' => $uid], ['limit' => 1]);
+ $user = dba::select('user', ['def_gid', 'allow_gid', 'deny_gid'], ['uid' => $group['uid']], ['limit' => 1]);
if (DBM::is_result($user)) {
$change = false;
}
if ($change) {
- dba::update('user', $user, ['uid' => $uid]);
+ dba::update('user', $user, ['uid' => $group['uid']]);
}
}
*
* @deprecated Use Group::remove instead
*
- * @param type $uid
- * @param type $name
- * @return type
+ * @param int $uid
+ * @param string $name
+ * @return bool
*/
public static function removeByName($uid, $name) {
$return = false;
use Friendica\Object\Image;
use dba;
+require_once 'include/dba.php';
require_once "include/photos.php";
+
/**
* Class to handle photo dabatase table
*/
require_once 'boot.php';
require_once 'include/crypto.php';
+require_once 'include/dba.php';
require_once 'include/enotify.php';
require_once 'include/network.php';
require_once 'library/openid.php';
*/
class User
{
+ /**
+ * @brief Get owner data by user id
+ *
+ * @param int $uid
+ * @return boolean|array
+ */
+ public static function getOwnerDataById($uid) {
+ $r = dba::fetch_first("SELECT
+ `contact`.*,
+ `user`.`prvkey` AS `uprvkey`,
+ `user`.`timezone`,
+ `user`.`nickname`,
+ `user`.`sprvkey`,
+ `user`.`spubkey`,
+ `user`.`page-flags`,
+ `user`.`account-type`,
+ `user`.`prvnets`
+ FROM `contact`
+ INNER JOIN `user`
+ ON `user`.`uid` = `contact`.`uid`
+ WHERE `contact`.`uid` = ?
+ AND `contact`.`self`
+ LIMIT 1",
+ $uid
+ );
+ if (!DBM::is_result($r)) {
+ return false;
+ }
+ return $r;
+ }
+
/**
* @brief Returns the default group for a given user and network
*
$_SESSION['register'] = 1;
$_SESSION['openid'] = $openid_url;
- $openid = new LightOpenID;
+ $openid = new \LightOpenID;
$openid->identity = $openid_url;
$openid->returnUrl = System::baseUrl() . '/openid';
$openid->required = array('namePerson/friendly', 'contact/email', 'namePerson');
<?php
+
/**
* @file src/Protocol/FKOAuthDataStore.php
* OAuth server
* Based on oauth2-php <http://code.google.com/p/oauth2-php/>
*
*/
+
namespace Friendica\Network;
use Friendica\App;
define('REQUEST_TOKEN_DURATION', 300);
define('ACCESS_TOKEN_DURATION', 31536000);
+require_once 'include/dba.php';
+
require_once "library/OAuth1.php";
require_once "library/oauth2-php/lib/OAuth2.inc";
*/
public function lookup_consumer($consumer_key)
{
- logger(__function__.":".$consumer_key);
-
+ logger(__function__ . ":" . $consumer_key);
+
$s = dba::select('clients', array('client_id', 'pw', 'redirect_uri'), array('client_id' => $consumer_key));
- $r = dba::inArray($r);
+ $r = dba::inArray($s);
if (DBM::is_result($r)) {
- return new OAuthConsumer($r[0]['client_id'], $r[0]['pw'], $r[0]['redirect_uri']);
+ return new \OAuthConsumer($r[0]['client_id'], $r[0]['pw'], $r[0]['redirect_uri']);
}
return null;
*/
public function lookup_token($consumer, $token_type, $token)
{
- logger(__function__.":".$consumer.", ". $token_type.", ".$token);
-
+ logger(__function__ . ":" . $consumer . ", " . $token_type . ", " . $token);
+
$s = dba::select('tokens', array('id', 'secret', 'scope', 'expires', 'uid'), array('client_id' => $consumer->key, 'scope' => $token_type, 'id' => $token));
$r = dba::inArray($s);
if (DBM::is_result($r)) {
- $ot=new OAuthToken($r[0]['id'], $r[0]['secret']);
+ $ot = new \OAuthToken($r[0]['id'], $r[0]['secret']);
$ot->scope = $r[0]['scope'];
$ot->expires = $r[0]['expires'];
$ot->uid = $r[0]['uid'];
public function lookup_nonce($consumer, $token, $nonce, $timestamp)
{
$r = dba::select('tokens', ['id', 'secret'], ['client_id' => $consumer->key, 'id' => $nonce, 'expires' => $timestamp], ['limit' => 1]);
-
+
if (DBM::is_result($r)) {
- return new OAuthToken($r['id'], $r['secret']);
+ return new \OAuthToken($r['id'], $r['secret']);
}
return null;
*/
public function new_request_token($consumer, $callback = null)
{
- logger(__function__.":".$consumer.", ". $callback);
+ logger(__function__ . ":" . $consumer . ", " . $callback);
$key = self::genToken();
$sec = self::genToken();
'secret' => $sec,
'client_id' => $k,
'scope' => 'request',
- 'expires' => UNIX_TIMESTAMP() + REQUEST_TOKEN_DURATION)
+ 'expires' => time() + REQUEST_TOKEN_DURATION)
);
if (!$r) {
return null;
}
- return new OAuthToken($key, $sec);
+ return new \OAuthToken($key, $sec);
}
/**
*/
public function new_access_token($token, $consumer, $verifier = null)
{
- logger(__function__.":".$token.", ". $consumer.", ". $verifier);
+ logger(__function__ . ":" . $token . ", " . $consumer . ", " . $verifier);
// return a new access token attached to this consumer
// for the user associated with this token if the request token
// get user for this verifier
$uverifier = Config::get("oauth", $verifier);
- logger(__function__.":".$verifier.",".$uverifier);
+ logger(__function__ . ":" . $verifier . "," . $uverifier);
- if (is_null($verifier) || ($uverifier!==false)) {
+ if (is_null($verifier) || ($uverifier !== false)) {
$key = self::genToken();
$sec = self::genToken();
$r = dba::insert(
'secret' => $sec,
'client_id' => $consumer->key,
'scope' => 'access',
- 'expires' => UNIX_TIMESTAMP() + ACCESS_TOKEN_DURATION,
+ 'expires' => time() + ACCESS_TOKEN_DURATION,
'uid' => $uverifier)
);
if ($r) {
- $ret = new OAuthToken($key, $sec);
+ $ret = new \OAuthToken($key, $sec);
}
}
-
dba::delete('tokens', array('id' => $token->key));
-
if (!is_null($ret) && !is_null($uverifier)) {
Config::delete("oauth", $verifier);
}
use Friendica\Util\XML;
use dba;
-use DomXPath;
+use DOMXPath;
use DOMDocument;
+require_once 'include/dba.php';
require_once 'include/network.php';
require_once "include/crypto.php";
/**
* @brief Maps Mime types to Imagick formats
- * @return arr With with image formats (mime type as key)
+ * @return array With with image formats (mime type as key)
*/
public static function getFormatsMap()
{
* Setup the image to the format it will be saved to
*/
$map = self::getFormatsMap();
- $format = $map[$type];
+ $format = $map[$this->type];
$this->image->setFormat($format);
// Always coalesce, if it is not a multi-frame image it won't hurt anyway
}
}
-
- if ($this->isImagick()) {
- /*
- * If it is not animated, there will be only one iteration here,
- * so don't bother checking
- */
- // Don't forget to go back to the first frame
- $this->image->setFirstIterator();
- do {
- // FIXME - implement horizantal bias for scaling as in followin GD functions
- // to allow very tall images to be constrained only horizontally.
-
- $this->image->scaleImage($dest_width, $dest_height);
- } while ($this->image->nextImage());
-
- // These may not be necessary any more
- $this->width = $this->image->getImageWidth();
- $this->height = $this->image->getImageHeight();
-
- return;
- }
-
-
- $dest = imagecreatetruecolor($dest_width, $dest_height);
- imagealphablending($dest, false);
- imagesavealpha($dest, true);
- if ($this->type=='image/png') {
- imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
- }
- imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height);
- if ($this->image) {
- imagedestroy($this->image);
- }
- $this->image = $dest;
- $this->width = imagesx($this->image);
- $this->height = imagesy($this->image);
+ return $this->scale($dest_width, $dest_height);
}
/**
}
}
- if ($this->isImagick()) {
- return $this->scaleDown($dest_width, $dest_height);
- }
-
- $dest = imagecreatetruecolor($dest_width, $dest_height);
- imagealphablending($dest, false);
- imagesavealpha($dest, true);
- if ($this->type=='image/png') {
- imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
- }
- imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height);
- if ($this->image) {
- imagedestroy($this->image);
- }
- $this->image = $dest;
- $this->width = imagesx($this->image);
- $this->height = imagesy($this->image);
+ return $this->scale($dest_width, $dest_height);
}
/**
return false;
}
+ return $this->scale($dim, $dim);
+ }
+
+ /**
+ * @brief Scale image to target dimensions
+ *
+ * @param int $dest_width
+ * @param int $dest_height
+ * @return boolean
+ */
+ private function scale($dest_width, $dest_height)
+ {
+ if (!$this->isValid()) {
+ return false;
+ }
+
if ($this->isImagick()) {
+ /*
+ * If it is not animated, there will be only one iteration here,
+ * so don't bother checking
+ */
+ // Don't forget to go back to the first frame
$this->image->setFirstIterator();
do {
- $this->image->scaleImage($dim, $dim);
+ // FIXME - implement horizontal bias for scaling as in following GD functions
+ // to allow very tall images to be constrained only horizontally.
+ $this->image->scaleImage($dest_width, $dest_height);
} while ($this->image->nextImage());
- return;
- }
- $dest = imagecreatetruecolor($dim, $dim);
- imagealphablending($dest, false);
- imagesavealpha($dest, true);
- if ($this->type=='image/png') {
- imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
- }
- imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dim, $dim, $this->width, $this->height);
- if ($this->image) {
- imagedestroy($this->image);
+ // These may not be necessary anymore
+ $this->width = $this->image->getImageWidth();
+ $this->height = $this->image->getImageHeight();
+ } else {
+ $dest = imagecreatetruecolor($dest_width, $dest_height);
+ imagealphablending($dest, false);
+ imagesavealpha($dest, true);
+
+ if ($this->type=='image/png') {
+ imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
+ }
+
+ imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $this->width, $this->height);
+
+ if ($this->image) {
+ imagedestroy($this->image);
+ }
+
+ $this->image = $dest;
+ $this->width = imagesx($this->image);
+ $this->height = imagesy($this->image);
}
- $this->image = $dest;
- $this->width = imagesx($this->image);
- $this->height = imagesy($this->image);
+
+ return true;
}
/**
use Friendica\Model\Contact;
use dba;
+require_once 'include/dba.php';
require_once 'include/text.php';
require_once 'boot.php';
require_once 'include/conversation.php';
use Friendica\Util\XML;
use dba;
-use DomXPath;
+use DOMXPath;
use DOMDocument;
+require_once 'include/dba.php';
require_once "include/network.php";
require_once "include/oembed.php";
/**
* @brief Search for chached embeddable data of an url otherwise fetch it
*
- * @param type $url The url of the page which should be scraped
- * @param type $no_guessing If true the parse doens't search for
+ * @param string $url The url of the page which should be scraped
+ * @param bool $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()
+ * @param bool $do_oembed The false option is used by the function fetch_oembed()
* to avoid endless loops
*
* @return array which contains needed data for embedding
* like \<title\>Awesome Title\</title\> or
* \<meta name="description" content="An awesome description"\>
*
- * @param type $url The url of the page which should be scraped
- * @param type $no_guessing If true the parse doens't search for
+ * @param string $url The url of the page which should be scraped
+ * @param bool $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()
+ * @param bool $do_oembed The false option is used by the function fetch_oembed()
* to avoid endless loops
- * @param type $count Internal counter to avoid endless loops
+ * @param int $count Internal counter to avoid endless loops
*
* @return array which contains needed data for embedding
* string 'url' => The url of the parsed page
XML::deleteNode($doc, "ol");
XML::deleteNode($doc, "ul");
- $xpath = new DomXPath($doc);
+ $xpath = new DOMXPath($doc);
$list = $xpath->query("//meta[@content]");
foreach ($list as $node) {
*/
namespace Friendica\Protocol;
-use Friendica\App;
use Friendica\Core\Config;
use Friendica\Core\System;
use Friendica\Core\Worker;
use dba;
use DOMDocument;
-use DomXPath;
+use DOMXPath;
+require_once 'boot.php';
+require_once 'include/dba.php';
require_once "include/enotify.php";
require_once "include/threads.php";
require_once "include/items.php";
case 2:
// RINO 2 based on php-encryption
try {
- $key = \Crypto::createNewRandomKey();
+ $key = \Crypto::CreateNewRandomKey();
} catch (\CryptoTestFailedException $ex) {
logger('Cannot safely create a key');
return -4;
return -5;
}
try {
- $data = \Crypto::encrypt($postvars['data'], $key);
+ $data = \Crypto::Encrypt($postvars['data'], $key);
} catch (\CryptoTestFailedException $ex) {
logger('Cannot safely perform encryption');
return -6;
* @param bool $onlyfetch Should the data only be fetched or should it update the contact record as well
* @param string $xml optional, default empty
*
- * @return Returns an array with relevant data of the author
+ * @return array Relevant data of the author
* @todo Find good type-hints for all parameter
*/
private static function fetchauthor($xpath, $context, $importer, $element, $onlyfetch, $xml = "")
*
* @param object $xpath XPath object
* @param object $activity Activity object
- * @param text $element element name
+ * @param string $element element name
*
* @return string XML string
* @todo Find good type-hints for all parameter
/// @todo Do we really need this check for HTML elements? (It was copied from the old function)
if ((strpos($item['body'], '<') !== false) && (strpos($item['body'], '>') !== false)) {
+ $base_url = get_app()->get_baseurl();
$item['body'] = reltoabs($item['body'], $base_url);
$item['body'] = html2bb_video($item['body']);
$item['body'] = oembed_html2bbcode($item['body']);
- $config = HTMLPurifier_Config::createDefault();
+ $config = \HTMLPurifier_Config::createDefault();
$config->set('Cache.DefinitionImpl', null);
// we shouldn't need a whitelist, because the bbcode converter
// will strip out any unsupported tags.
- $purifier = new HTMLPurifier($config);
+ $purifier = new \HTMLPurifier($config);
$item['body'] = $purifier->purify($item['body']);
$item['body'] = @html2bbcode($item['body']);
/**
* @brief Imports a DFRN message
*
- * @param text $xml The DFRN message
- * @param array $importer Record of the importer user mixed with contact of the content
- * @param bool $sort_by_date Is used when feeds are polled
+ * @param string $xml The DFRN message
+ * @param array $importer Record of the importer user mixed with contact of the content
+ * @param bool $sort_by_date Is used when feeds are polled
* @return integer Import status
* @todo set proper type-hints
*/
$doc = new DOMDocument();
@$doc->loadXML($xml);
- $xpath = new DomXPath($doc);
+ $xpath = new DOMXPath($doc);
$xpath->registerNamespace("atom", NAMESPACE_ATOM1);
$xpath->registerNamespace("thr", NAMESPACE_THREAD);
$xpath->registerNamespace("at", NAMESPACE_TOMB);
// The account type is new since 3.5.1
if ($xpath->query("/atom:feed/dfrn:account_type")->length > 0) {
- $accounttype = intval($xpath->evaluate("/atom:feed/dfrn:account_type/text()", $context)->item(0)->nodeValue);
+ $accounttype = intval($xpath->evaluate("/atom:feed/dfrn:account_type/text()")->item(0)->nodeValue);
if ($accounttype != $importer["contact-type"]) {
dba::update('contact', array('contact-type' => $accounttype), array('id' => $importer["id"]));
// is it a public forum? Private forums aren't supported with this method
// This is deprecated since 3.5.1
- $forum = intval($xpath->evaluate("/atom:feed/dfrn:community/text()", $context)->item(0)->nodeValue);
+ $forum = intval($xpath->evaluate("/atom:feed/dfrn:community/text()")->item(0)->nodeValue);
if ($forum != $importer["forum"]) {
$condition = array('`forum` != ? AND `id` = ?', $forum, $importer["id"]);
use dba;
use SimpleXMLElement;
+require_once 'include/dba.php';
require_once 'include/items.php';
require_once 'include/bb2diaspora.php';
require_once 'include/datetime.php';
} elseif (!in_array($fieldname, array("author_signature", "parent_author_signature", "target_author_signature"))) {
if ($signed_data != "") {
$signed_data .= ";";
- $signed_data_parent .= ";";
}
$signed_data .= $entry;
/**
* @brief Get a contact id for a given handle
*
+ * @todo Move to Friendica\Model\Contact
+ *
* @param int $uid The user id
* @param string $handle The handle in the format user@domain.tld
*
- * @return The contact id
+ * @return int Contact id
*/
private static function contactByHandle($uid, $handle)
{
preg_replace_callback(
$expression,
function ($match) use ($item) {
- return self::fetchGuidSub($match, $item);
+ self::fetchGuidSub($match, $item);
},
$item["body"]
);
preg_replace_callback(
"&\[url=/posts/([^\[\]]*)\](.*)\[\/url\]&Usi",
function ($match) use ($item) {
- return self::fetchGuidSub($match, $item);
+ self::fetchGuidSub($match, $item);
},
$item["body"]
);
* @param string $body The item body to replace links from
* @param string $author_link The author link for missing local contact fallback
*
- * @return the replaced string
+ * @return string the replaced string
*/
public static function replacePeopleGuid($body, $author_link)
{
$A = "[url=".$self[0]["url"]."]".$self[0]["name"]."[/url]";
$B = "[url=".$contact["url"]."]".$contact["name"]."[/url]";
$BPhoto = "[url=".$contact["url"]."][img]".$contact["thumb"]."[/img][/url]";
- $arr["body"] = sprintf(t("%1$s is now friends with %2$s"), $A, $B)."\n\n\n".$Bphoto;
+ $arr["body"] = sprintf(t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$BPhoto;
$arr["object"] = self::constructNewFriendObject($contact);
$arr["last-child"] = 1;
- $arr["allow_cid"] = $user[0]["allow_cid"];
- $arr["allow_gid"] = $user[0]["allow_gid"];
- $arr["deny_cid"] = $user[0]["deny_cid"];
- $arr["deny_gid"] = $user[0]["deny_gid"];
+ $user = dba::select('user', ['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid'], ['uid' => $importer["uid"]], ['limit' => 1]);
+
+ $arr["allow_cid"] = $user["allow_cid"];
+ $arr["allow_gid"] = $user["allow_gid"];
+ $arr["deny_cid"] = $user["deny_cid"];
+ $arr["deny_gid"] = $user["deny_gid"];
$i = item_store($arr);
if ($i) {
$return_code = self::transmit($owner, $contact, $envelope, $public_batch, false, $guid);
}
- logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG);
+ logger("guid: ".$guid." result ".$return_code, LOGGER_DEBUG);
return $return_code;
}
return;
}
+ $owner = User::getOwnerDataById($uid);
+ if (!$owner) {
+ return;
+ }
+
if (!$recips) {
$recips = q(
"SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s'
foreach ($recips as $recip) {
logger("Send updated profile data for user ".$uid." to contact ".$recip["id"], LOGGER_DEBUG);
- self::buildAndTransmit($profile, $recip, "profile", $message, false, "", true);
+ self::buildAndTransmit($owner, $recip, "profile", $message, false, "", true);
}
}
use Friendica\Core\System;
use dba;
use DOMDocument;
-use DomXPath;
+use DOMXPath;
-require_once("include/html2bbcode.php");
-require_once("include/items.php");
+require_once 'include/dba.php';
+require_once 'include/html2bbcode.php';
+require_once 'include/items.php';
/**
* @brief This class contain functions to import feeds
*
* @return array In simulation mode it returns the header and the first item
*/
- function import($xml, $importer, &$contact, &$hub, $simulate = false) {
+ public static function import($xml, $importer, &$contact, &$hub, $simulate = false) {
$a = get_app();
$doc = new DOMDocument();
@$doc->loadXML(trim($xml));
- $xpath = new DomXPath($doc);
+ $xpath = new DOMXPath($doc);
$xpath->registerNamespace('atom', NAMESPACE_ATOM1);
$xpath->registerNamespace('dc', "http://purl.org/dc/elements/1.1/");
$xpath->registerNamespace('content', "http://purl.org/rss/1.0/modules/content/");
if ($value != "") {
$author["author-nick"] = $value;
}
- $value = $xpath->evaluate('atom:author/poco:address/poco:formatted/text()', $context)->item(0)->nodeValue;
+ $value = $xpath->evaluate('atom:author/poco:address/poco:formatted/text()')->item(0)->nodeValue;
if ($value != "") {
$author["author-location"] = $value;
}
if ($creator != "") {
$item["author-name"] = $creator;
}
- if ($pubDate != "") {
- $item["edited"] = $item["created"] = $pubDate;
- }
$creator = $xpath->query('dc:creator/text()', $entry)->item(0)->nodeValue;
if ($creator != "") {
use Friendica\Util\XML;
use dba;
use DOMDocument;
-use DomXPath;
+use DOMXPath;
+require_once 'include/dba.php';
require_once 'include/threads.php';
require_once 'include/html2bbcode.php';
require_once 'include/bbcode.php';
$doc = new DOMDocument();
@$doc->loadXML($xml);
- $xpath = new DomXPath($doc);
+ $xpath = new DOMXPath($doc);
$xpath->registerNamespace('atom', NAMESPACE_ATOM1);
$xpath->registerNamespace('thr', NAMESPACE_THREAD);
$xpath->registerNamespace('georss', NAMESPACE_GEORSS);
$doc = new DOMDocument();
@$doc->loadXML($xml);
- $xpath = new DomXPath($doc);
+ $xpath = new DOMXPath($doc);
$xpath->registerNamespace('atom', NAMESPACE_ATOM1);
$xpath->registerNamespace('thr', NAMESPACE_THREAD);
$xpath->registerNamespace('georss', NAMESPACE_GEORSS);
if (!@$doc->loadHTML($conversation_data['body'])) {
return;
}
- $xpath = new DomXPath($doc);
+ $xpath = new DOMXPath($doc);
$links = $xpath->query('//link');
if ($links) {
$doc = new DOMDocument();
@$doc->loadXML($xml);
- $xpath = new DomXPath($doc);
+ $xpath = new DOMXPath($doc);
$xpath->registerNamespace('atom', NAMESPACE_ATOM1);
$xpath->registerNamespace('thr', NAMESPACE_THREAD);
$xpath->registerNamespace('ostatus', NAMESPACE_OSTATUS);
if (!@$doc->loadHTML($related_data['body'])) {
return;
}
- $xpath = new DomXPath($doc);
+ $xpath = new DOMXPath($doc);
$atom_file = '';
$orig_created = $xpath->query('atom:published/text()', $activityobjects)->item(0)->nodeValue;
$orig_edited = $xpath->query('atom:updated/text()', $activityobjects)->item(0)->nodeValue;
- $orig_contact = $contact;
- $orig_author = self::fetchAuthor($xpath, $activityobjects, $importer, $orig_contact, false);
+ $orig_author = self::fetchAuthor($xpath, $activityobjects, $importer, $dummy, false);
$item["author-name"] = $orig_author["author-name"];
$item["author-link"] = $orig_author["author-link"];
use Friendica\Network\Probe;
use dba;
use DOMDocument;
-use DomXPath;
+use DOMXPath;
use Exception;
+require_once 'include/dba.php';
require_once 'include/datetime.php';
require_once 'include/network.php';
require_once 'include/html2bbcode.php';
$doc = new DOMDocument();
@$doc->loadXML($feedret["body"]);
- $xpath = new DomXPath($doc);
+ $xpath = new DOMXPath($doc);
$xpath->registerNamespace('atom', "http://www.w3.org/2005/Atom");
$entries = $xpath->query('/atom:feed/atom:entry');
$doc = new DOMDocument();
@$doc->loadHTML($body);
- $xpath = new DomXPath($doc);
+ $xpath = new DOMXPath($doc);
$list = $xpath->query("//meta[@name]");
return false;
}
- $server["site_name"] = $xpath->evaluate($element."//head/title/text()", $context)->item(0)->nodeValue;
+ $server["site_name"] = $xpath->evaluate("//head/title/text()")->item(0)->nodeValue;
return $server;
}
use Friendica\Model\User;
use dba;
+require_once 'include/dba.php';
require_once 'include/dba.php';
class ExAuth
}
$file = $lockpath . DIRECTORY_SEPARATOR . $host;
- if (Pidfile::isRunningProcess($file)) {
+ if (PidFile::isRunningProcess($file)) {
if (PidFile::killProcess($file)) {
$this->writeLog(LOG_INFO, 'Old process was successfully killed');
} else {
}
// Now it is safe to create the pid file
- Pidfile::create($file);
+ PidFile::create($file);
}
/**
use Memcache;
use dba;
+require_once 'include/dba.php';
+
/**
* @brief This class contain Functions for preventing parallel execution of functions
*/
$file = $temp.'/'.$fn_name.'.sem';
if (!file_exists($file)) {
- file_put_contents($file, $function);
+ file_put_contents($file, $fn_name);
}
return ftok($file, 'f');
/**
* @brief Pidfile class
*/
-class Pidfile
+class PidFile
{
/**
* @brief Read the pid from a given pid file
*/
namespace Friendica\Util;
-use DomXPath;
+use DOMXPath;
use SimpleXMLElement;
/**
* @param integer $recursion_depth recursion counter for internal use - default 0
* internal use, recursion counter
*
- * @return array | sring The array from the xml element or the string
+ * @return array | string The array from the xml element or the string
*/
public static function elementToArray($xml_element, &$recursion_depth = 0)
{
// Go through the tags.
$repeated_tag_index = array(); // Multiple tags with same name will be turned into an array
foreach ($xml_values as $data) {
- unset($attributes, $value); // Remove existing values, or there will be trouble
-
- // This command will extract these variables into the foreach scope
- // tag(string), type(string), level(int), attributes(array).
- extract($data); // We could use the array by itself, but this cooler.
+ $tag = $data['tag'];
+ $type = $data['type'];
+ $level = $data['level'];
+ $attributes = isset($data['attributes']) ? $data['attributes'] : null;
+ $value = isset($data['value']) ? $data['value'] : null;
$result = array();
$attributes_data = array();
*/
public static function deleteNode(&$doc, $node)
{
- $xpath = new DomXPath($doc);
+ $xpath = new DOMXPath($doc);
$list = $xpath->query("//".$node);
foreach ($list as $child) {
$child->parentNode->removeChild($child);
use Friendica\Database\DBM;
use dba;
+require_once 'include/dba.php';
+
Class Cron {
public static function execute($parameter = '', $generation = 0) {
global $a;
foreach ($a->hooks["cron"] as $single_hook) {
if ($single_hook[1] == $hook) {
logger("Calling cron hook '" . $hook . "'", LOGGER_DEBUG);
- call_single_hook($a, $name, $single_hook, $data);
+ call_single_hook($a, $hook, $single_hook);
}
}
return;
use Friendica\Protocol\PortableContact;
use dba;
+require_once 'include/dba.php';
+require_once 'include/post_update.php';
+require_once 'mod/nodeinfo.php';
+
class CronJobs
{
public static function execute($command = '')
use Friendica\Core\Worker;
use dba;
+require_once 'include/dba.php';
+
class DBClean {
public static function execute($stage = 0) {
use Friendica\Core\Config;
use Friendica\Database\DBM;
use Friendica\Model\Contact;
+use Friendica\Model\User;
use Friendica\Protocol\Diaspora;
use Friendica\Protocol\DFRN;
use Friendica\Protocol\Email;
}
}
- $r = q("SELECT `contact`.*, `user`.`prvkey` AS `uprvkey`,
- `user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`,
- `user`.`page-flags`, `user`.`account-type`, `user`.`prvnets`
- FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid`
- WHERE `contact`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
- intval($uid)
- );
-
- if (!DBM::is_result($r)) {
+ $owner = User::getOwnerDataById($uid);
+ if (!$owner) {
return;
}
- $owner = $r[0];
-
$walltowall = (($top_level && ($owner['id'] != $items[0]['contact-id'])) ? true : false);
$public_message = true;
$dir .= "/submit";
- $arr = array('url' => $argv[1]);
+ $arr = array('url' => $url);
call_hooks('globaldir_update', $arr);
/**
* @brief Search for GNU Social user with gstools.org
*
- * @param str $search User name
+ * @param string $search User name
*/
private static function gsSearchUser($search) {
use Friendica\Database\DBM;
use dba;
+require_once 'include/dba.php';
+
class Expire {
public static function execute($param = '', $hook_name = '') {
global $a;
foreach ($a->hooks["expire"] as $hook) {
if ($hook[1] == $hook_name) {
logger("Calling expire hook '" . $hook[1] . "'", LOGGER_DEBUG);
- call_single_hook($a, $name, $hook, $data);
+ call_single_hook($a, $hook_name, $hook, $data);
}
}
return;
use Friendica\Protocol\Salmon;
use dba;
+require_once 'include/dba.php';
require_once 'include/queue_fn.php';
require_once 'include/html2plain.php';
require_once 'include/datetime.php';
use Friendica\Protocol\PortableContact;
use dba;
+require_once 'include/dba.php';
require_once 'include/follow.php';
Class OnePoll
// Diaspora users, archived users and followers are only checked if they still exist.
if ($contact['archive'] || ($contact["network"] == NETWORK_DIASPORA) || ($contact["rel"] == CONTACT_IS_FOLLOWER)) {
- $last_updated = PortableContact::lastUpdated($contact["url"]);
+ $last_updated = PortableContact::lastUpdated($contact["url"], true);
$updated = datetime_convert();
if ($last_updated) {
logger('Contact '.$contact['id'].' had last update on '.$last_updated, LOGGER_DEBUG);
dba::update('gcontact', array('last_failure' => $updated), array('nurl' => $contact['nurl']));
Contact::markForArchival($contact);
} else {
+ $updated = datetime_convert();
dba::update('contact', array('last-update' => $updated), array('id' => $contact['id']));
}
use Friendica\Protocol\Salmon;
use dba;
+require_once 'include/dba.php';
require_once 'include/queue_fn.php';
require_once 'include/datetime.php';
require_once 'include/items.php';
*/
$r = q("SELECT `id` FROM `queue` WHERE ((`created` > UTC_TIMESTAMP() - INTERVAL 12 HOUR AND `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE) OR (`last` < UTC_TIMESTAMP() - INTERVAL 1 HOUR)) ORDER BY `cid`, `created`");
- call_hooks('queue_predeliver', $a, $r);
+ call_hooks('queue_predeliver', $r);
if (DBM::is_result($r)) {
foreach ($r as $q_item) {
default:
$params = array('owner' => $owner, 'contact' => $contact, 'queue' => $q_item, 'result' => false);
- call_hooks('queue_deliver', $a, $params);
+ call_hooks('queue_deliver', $params);
if ($params['result']) {
remove_queue_item($q_item['id']);
use Friendica\Core\Config;
use dba;
+require_once 'include/dba.php';
+
class RemoveContact {
public static function execute($id) {
'Console_Getopt' => $vendorDir . '/pear-pear.php.net/Console_Getopt/Console/Getopt.php',
'Detection\\MobileDetect' => $vendorDir . '/mobiledetect/mobiledetectlib/namespaced/Detection/MobileDetect.php',
'Friendica\\App' => $baseDir . '/src/App.php',
- 'Friendica\\BaseModule' => $baseDir . '/src/BaseModule.php',
'Friendica\\BaseObject' => $baseDir . '/src/BaseObject.php',
'Friendica\\Content\\Feature' => $baseDir . '/src/Content/Feature.php',
'Friendica\\Content\\ForumManager' => $baseDir . '/src/Content/ForumManager.php',
'Friendica\\Model\\Photo' => $baseDir . '/src/Model/Photo.php',
'Friendica\\Model\\Profile' => $baseDir . '/src/Model/Profile.php',
'Friendica\\Model\\User' => $baseDir . '/src/Model/User.php',
- 'Friendica\\Module\\Login' => $baseDir . '/src/Module/Login.php',
'Friendica\\Network\\FKOAuth1' => $baseDir . '/src/Network/FKOAuth1.php',
'Friendica\\Network\\FKOAuthDataStore' => $baseDir . '/src/Network/FKOAuthDataStore.php',
'Friendica\\Network\\HTTPException' => $baseDir . '/src/Network/HTTPException.php',
'Friendica\\Util\\ExAuth' => $baseDir . '/src/Util/ExAuth.php',
'Friendica\\Util\\Lock' => $baseDir . '/src/Util/Lock.php',
'Friendica\\Util\\Map' => $baseDir . '/src/Util/Map.php',
- 'Friendica\\Util\\Pidfile' => $baseDir . '/src/Util/Pidfile.php',
+ 'Friendica\\Util\\PidFile' => $baseDir . '/src/Util/Pidfile.php',
'Friendica\\Util\\XML' => $baseDir . '/src/Util/XML.php',
'Friendica\\Worker\\CheckVersion' => $baseDir . '/src/Worker/CheckVersion.php',
'Friendica\\Worker\\CreateShadowEntry' => $baseDir . '/src/Worker/CreateShadowEntry.php',
'Console_Getopt' => __DIR__ . '/..' . '/pear-pear.php.net/Console_Getopt/Console/Getopt.php',
'Detection\\MobileDetect' => __DIR__ . '/..' . '/mobiledetect/mobiledetectlib/namespaced/Detection/MobileDetect.php',
'Friendica\\App' => __DIR__ . '/../..' . '/src/App.php',
- 'Friendica\\BaseModule' => __DIR__ . '/../..' . '/src/BaseModule.php',
'Friendica\\BaseObject' => __DIR__ . '/../..' . '/src/BaseObject.php',
'Friendica\\Content\\Feature' => __DIR__ . '/../..' . '/src/Content/Feature.php',
'Friendica\\Content\\ForumManager' => __DIR__ . '/../..' . '/src/Content/ForumManager.php',
'Friendica\\Model\\Photo' => __DIR__ . '/../..' . '/src/Model/Photo.php',
'Friendica\\Model\\Profile' => __DIR__ . '/../..' . '/src/Model/Profile.php',
'Friendica\\Model\\User' => __DIR__ . '/../..' . '/src/Model/User.php',
- 'Friendica\\Module\\Login' => __DIR__ . '/../..' . '/src/Module/Login.php',
'Friendica\\Network\\FKOAuth1' => __DIR__ . '/../..' . '/src/Network/FKOAuth1.php',
'Friendica\\Network\\FKOAuthDataStore' => __DIR__ . '/../..' . '/src/Network/FKOAuthDataStore.php',
'Friendica\\Network\\HTTPException' => __DIR__ . '/../..' . '/src/Network/HTTPException.php',
'Friendica\\Util\\ExAuth' => __DIR__ . '/../..' . '/src/Util/ExAuth.php',
'Friendica\\Util\\Lock' => __DIR__ . '/../..' . '/src/Util/Lock.php',
'Friendica\\Util\\Map' => __DIR__ . '/../..' . '/src/Util/Map.php',
- 'Friendica\\Util\\Pidfile' => __DIR__ . '/../..' . '/src/Util/Pidfile.php',
+ 'Friendica\\Util\\PidFile' => __DIR__ . '/../..' . '/src/Util/Pidfile.php',
'Friendica\\Util\\XML' => __DIR__ . '/../..' . '/src/Util/XML.php',
'Friendica\\Worker\\CheckVersion' => __DIR__ . '/../..' . '/src/Worker/CheckVersion.php',
'Friendica\\Worker\\CreateShadowEntry' => __DIR__ . '/../..' . '/src/Worker/CreateShadowEntry.php',