Coding Standards
Guess who got phpcs configured. Updated phpcs.xml based on Developer_Intro document.
This commit is contained in:
parent
ca5d5acb7e
commit
d7dc51ecc1
7 changed files with 1404 additions and 1008 deletions
|
@ -1,16 +1,16 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* System Configuration Class
|
||||||
|
*
|
||||||
|
* @file include/Core/Config.php
|
||||||
|
*
|
||||||
|
* @brief Contains the class with methods for system configuration
|
||||||
|
*/
|
||||||
namespace Friendica\Core;
|
namespace Friendica\Core;
|
||||||
|
|
||||||
use Friendica\Database\DBM;
|
use Friendica\Database\DBM;
|
||||||
use dba;
|
use dba;
|
||||||
|
|
||||||
/**
|
|
||||||
* @file include/Core/Config.php
|
|
||||||
*
|
|
||||||
* @brief Contains the class with methods for system configuration
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Arbitrary sytem configuration storage
|
* @brief Arbitrary sytem configuration storage
|
||||||
* Note:
|
* Note:
|
||||||
|
@ -87,7 +87,6 @@ class Config {
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
|
|
||||||
if (!$refresh) {
|
if (!$refresh) {
|
||||||
|
|
||||||
// Do we have the cached value? Then return it
|
// Do we have the cached value? Then return it
|
||||||
if (isset(self::$cache[$family][$key])) {
|
if (isset(self::$cache[$family][$key])) {
|
||||||
if (self::$cache[$family][$key] === '!<unset>!') {
|
if (self::$cache[$family][$key] === '!<unset>!') {
|
||||||
|
@ -108,7 +107,6 @@ class Config {
|
||||||
self::$in_db[$family][$key] = true;
|
self::$in_db[$family][$key] = true;
|
||||||
return $val;
|
return $val;
|
||||||
} elseif (isset($a->config[$family][$key])) {
|
} elseif (isset($a->config[$family][$key])) {
|
||||||
|
|
||||||
// Assign the value (mostly) from the .htconfig.php to the cache
|
// Assign the value (mostly) from the .htconfig.php to the cache
|
||||||
self::$cache[$family][$key] = $a->config[$family][$key];
|
self::$cache[$family][$key] = $a->config[$family][$key];
|
||||||
self::$in_db[$family][$key] = false;
|
self::$in_db[$family][$key] = false;
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
namespace Friendica\Core;
|
|
||||||
/**
|
/**
|
||||||
* @file src/Core/NotificationsManager.php
|
* @file src/Core/NotificationsManager.php
|
||||||
* @brief Methods for read and write notifications from/to database
|
* @brief Methods for read and write notifications from/to database
|
||||||
* or for formatting notifications
|
* or for formatting notifications
|
||||||
*/
|
*/
|
||||||
|
namespace Friendica\Core;
|
||||||
|
|
||||||
use Friendica\Core\Pconfig;
|
use Friendica\Core\Pconfig;
|
||||||
use Friendica\Core\System;
|
use Friendica\Core\System;
|
||||||
|
@ -19,10 +19,15 @@ require_once 'include/Contact.php';
|
||||||
* @brief Methods for read and write notifications from/to database
|
* @brief Methods for read and write notifications from/to database
|
||||||
* or for formatting notifications
|
* or for formatting notifications
|
||||||
*/
|
*/
|
||||||
class NotificationsManager {
|
class NotificationsManager
|
||||||
|
{
|
||||||
private $a;
|
private $a;
|
||||||
|
|
||||||
public function __construct() {
|
/**
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
$this->a = get_app();
|
$this->a = get_app();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,14 +43,15 @@ class NotificationsManager {
|
||||||
* - msg_html: message as html string
|
* - msg_html: message as html string
|
||||||
* - msg_plain: message as plain text string
|
* - msg_plain: message as plain text string
|
||||||
*/
|
*/
|
||||||
private function _set_extra($notes) {
|
private function _set_extra($notes)
|
||||||
|
{
|
||||||
$rets = array();
|
$rets = array();
|
||||||
foreach($notes as $n) {
|
foreach ($notes as $n) {
|
||||||
$local_time = datetime_convert('UTC',date_default_timezone_get(),$n['date']);
|
$local_time = datetime_convert('UTC', date_default_timezone_get(), $n['date']);
|
||||||
$n['timestamp'] = strtotime($local_time);
|
$n['timestamp'] = strtotime($local_time);
|
||||||
$n['date_rel'] = relative_date($n['date']);
|
$n['date_rel'] = relative_date($n['date']);
|
||||||
$n['msg_html'] = bbcode($n['msg'], false, false, false, false);
|
$n['msg_html'] = bbcode($n['msg'], false, false, false, false);
|
||||||
$n['msg_plain'] = explode("\n",trim(html2plain($n['msg_html'], 0)))[0];
|
$n['msg_plain'] = explode("\n", trim(html2plain($n['msg_html'], 0)))[0];
|
||||||
|
|
||||||
$rets[] = $n;
|
$rets[] = $n;
|
||||||
}
|
}
|
||||||
|
@ -56,16 +62,18 @@ class NotificationsManager {
|
||||||
/**
|
/**
|
||||||
* @brief Get all notifications for local_user()
|
* @brief Get all notifications for local_user()
|
||||||
*
|
*
|
||||||
* @param array $filter optional Array "column name"=>value: filter query by columns values
|
* @param array $filter optional Array "column name"=>value: filter query by columns values
|
||||||
* @param string $order optional Space separated list of column to sort by. prepend name with "+" to sort ASC, "-" to sort DESC. Default to "-date"
|
* @param string $order optional Space separated list of column to sort by.
|
||||||
* @param string $limit optional Query limits
|
* Prepend name with "+" to sort ASC, "-" to sort DESC. Default to "-date"
|
||||||
|
* @param string $limit optional Query limits
|
||||||
*
|
*
|
||||||
* @return array of results or false on errors
|
* @return array of results or false on errors
|
||||||
*/
|
*/
|
||||||
public function getAll($filter = array(), $order="-date", $limit="") {
|
public function getAll($filter = array(), $order = "-date", $limit = "")
|
||||||
|
{
|
||||||
$filter_str = array();
|
$filter_str = array();
|
||||||
$filter_sql = "";
|
$filter_sql = "";
|
||||||
foreach($filter as $column => $value) {
|
foreach ($filter as $column => $value) {
|
||||||
$filter_str[] = sprintf("`%s` = '%s'", $column, dbesc($value));
|
$filter_str[] = sprintf("`%s` = '%s'", $column, dbesc($value));
|
||||||
}
|
}
|
||||||
if (count($filter_str)>0) {
|
if (count($filter_str)>0) {
|
||||||
|
@ -74,29 +82,31 @@ class NotificationsManager {
|
||||||
|
|
||||||
$aOrder = explode(" ", $order);
|
$aOrder = explode(" ", $order);
|
||||||
$asOrder = array();
|
$asOrder = array();
|
||||||
foreach($aOrder as $o) {
|
foreach ($aOrder as $o) {
|
||||||
$dir = "asc";
|
$dir = "asc";
|
||||||
if ($o[0]==="-") {
|
if ($o[0]==="-") {
|
||||||
$dir = "desc";
|
$dir = "desc";
|
||||||
$o = substr($o,1);
|
$o = substr($o, 1);
|
||||||
}
|
}
|
||||||
if ($o[0]==="+") {
|
if ($o[0]==="+") {
|
||||||
$dir = "asc";
|
$dir = "asc";
|
||||||
$o = substr($o,1);
|
$o = substr($o, 1);
|
||||||
}
|
}
|
||||||
$asOrder[] = "$o $dir";
|
$asOrder[] = "$o $dir";
|
||||||
}
|
}
|
||||||
$order_sql = implode(", ", $asOrder);
|
$order_sql = implode(", ", $asOrder);
|
||||||
|
|
||||||
if($limit!="")
|
if ($limit != "") {
|
||||||
$limit = " LIMIT ".$limit;
|
$limit = " LIMIT ".$limit;
|
||||||
|
}
|
||||||
$r = q("SELECT * FROM `notify` WHERE `uid` = %d $filter_sql ORDER BY $order_sql $limit",
|
$r = q(
|
||||||
|
"SELECT * FROM `notify` WHERE `uid` = %d $filter_sql ORDER BY $order_sql $limit",
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBM::is_result($r))
|
if (DBM::is_result($r)) {
|
||||||
return $this->_set_extra($r);
|
return $this->_set_extra($r);
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -104,11 +114,13 @@ class NotificationsManager {
|
||||||
/**
|
/**
|
||||||
* @brief Get one note for local_user() by $id value
|
* @brief Get one note for local_user() by $id value
|
||||||
*
|
*
|
||||||
* @param int $id
|
* @param int $id identity
|
||||||
* @return array note values or null if not found
|
* @return array note values or null if not found
|
||||||
*/
|
*/
|
||||||
public function getByID($id) {
|
public function getByID($id)
|
||||||
$r = q("SELECT * FROM `notify` WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
{
|
||||||
|
$r = q(
|
||||||
|
"SELECT * FROM `notify` WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||||
intval($id),
|
intval($id),
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
);
|
);
|
||||||
|
@ -121,12 +133,14 @@ class NotificationsManager {
|
||||||
/**
|
/**
|
||||||
* @brief set seen state of $note of local_user()
|
* @brief set seen state of $note of local_user()
|
||||||
*
|
*
|
||||||
* @param array $note
|
* @param array $note note array
|
||||||
* @param bool $seen optional true or false, default true
|
* @param bool $seen optional true or false, default true
|
||||||
* @return bool true on success, false on errors
|
* @return bool true on success, false on errors
|
||||||
*/
|
*/
|
||||||
public function setSeen($note, $seen = true) {
|
public function setSeen($note, $seen = true)
|
||||||
return q("UPDATE `notify` SET `seen` = %d WHERE ( `link` = '%s' OR ( `parent` != 0 AND `parent` = %d AND `otype` = '%s' )) AND `uid` = %d",
|
{
|
||||||
|
return q(
|
||||||
|
"UPDATE `notify` SET `seen` = %d WHERE ( `link` = '%s' OR ( `parent` != 0 AND `parent` = %d AND `otype` = '%s' )) AND `uid` = %d",
|
||||||
intval($seen),
|
intval($seen),
|
||||||
dbesc($note['link']),
|
dbesc($note['link']),
|
||||||
intval($note['parent']),
|
intval($note['parent']),
|
||||||
|
@ -141,8 +155,10 @@ class NotificationsManager {
|
||||||
* @param bool $seen optional true or false. default true
|
* @param bool $seen optional true or false. default true
|
||||||
* @return bool true on success, false on error
|
* @return bool true on success, false on error
|
||||||
*/
|
*/
|
||||||
public function setAllSeen($seen = true) {
|
public function setAllSeen($seen = true)
|
||||||
return q("UPDATE `notify` SET `seen` = %d WHERE `uid` = %d",
|
{
|
||||||
|
return q(
|
||||||
|
"UPDATE `notify` SET `seen` = %d WHERE `uid` = %d",
|
||||||
intval($seen),
|
intval($seen),
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
);
|
);
|
||||||
|
@ -153,7 +169,8 @@ class NotificationsManager {
|
||||||
*
|
*
|
||||||
* @return array with with notifications TabBar data
|
* @return array with with notifications TabBar data
|
||||||
*/
|
*/
|
||||||
public function getTabs() {
|
public function getTabs()
|
||||||
|
{
|
||||||
$tabs = array(
|
$tabs = array(
|
||||||
array(
|
array(
|
||||||
'label' => t('System'),
|
'label' => t('System'),
|
||||||
|
@ -198,8 +215,8 @@ class NotificationsManager {
|
||||||
/**
|
/**
|
||||||
* @brief Format the notification query in an usable array
|
* @brief Format the notification query in an usable array
|
||||||
*
|
*
|
||||||
* @param array $notifs The array from the db query
|
* @param array $notifs The array from the db query
|
||||||
* @param string $ident The notifications identifier (e.g. network)
|
* @param string $ident The notifications identifier (e.g. network)
|
||||||
* @return array
|
* @return array
|
||||||
* string 'label' => The type of the notification
|
* string 'label' => The type of the notification
|
||||||
* string 'link' => URL to the source
|
* string 'link' => URL to the source
|
||||||
|
@ -210,13 +227,12 @@ class NotificationsManager {
|
||||||
* string 'ago' => T relative date of the notification
|
* string 'ago' => T relative date of the notification
|
||||||
* bool 'seen' => Is the notification marked as "seen"
|
* bool 'seen' => Is the notification marked as "seen"
|
||||||
*/
|
*/
|
||||||
private function formatNotifs($notifs, $ident = "") {
|
private function formatNotifs($notifs, $ident = "")
|
||||||
|
{
|
||||||
$notif = array();
|
$notif = array();
|
||||||
$arr = array();
|
$arr = array();
|
||||||
|
|
||||||
if (DBM::is_result($notifs)) {
|
if (DBM::is_result($notifs)) {
|
||||||
|
|
||||||
foreach ($notifs as $it) {
|
foreach ($notifs as $it) {
|
||||||
// Because we use different db tables for the notification query
|
// Because we use different db tables for the notification query
|
||||||
// we have sometimes $it['unseen'] and sometimes $it['seen].
|
// we have sometimes $it['unseen'] and sometimes $it['seen].
|
||||||
|
@ -257,11 +273,10 @@ class NotificationsManager {
|
||||||
: sprintf(t("%s commented on %s's post"), $it['author-name'], $it['pname']));
|
: sprintf(t("%s commented on %s's post"), $it['author-name'], $it['pname']));
|
||||||
$default_item_when = datetime_convert('UTC', date_default_timezone_get(), $it['created'], 'r');
|
$default_item_when = datetime_convert('UTC', date_default_timezone_get(), $it['created'], 'r');
|
||||||
$default_item_ago = relative_date($it['created']);
|
$default_item_ago = relative_date($it['created']);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Transform the different types of notification in an usable array
|
// Transform the different types of notification in an usable array
|
||||||
switch ($it['verb']){
|
switch ($it['verb']) {
|
||||||
case ACTIVITY_LIKE:
|
case ACTIVITY_LIKE:
|
||||||
$notif = array(
|
$notif = array(
|
||||||
'label' => 'like',
|
'label' => 'like',
|
||||||
|
@ -362,7 +377,6 @@ class NotificationsManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
return $arr;
|
return $arr;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -372,13 +386,16 @@ class NotificationsManager {
|
||||||
* which aren't marked as "seen"
|
* which aren't marked as "seen"
|
||||||
* @return int Number of network notifications
|
* @return int Number of network notifications
|
||||||
*/
|
*/
|
||||||
private function networkTotal($seen = 0) {
|
private function networkTotal($seen = 0)
|
||||||
|
{
|
||||||
$sql_seen = "";
|
$sql_seen = "";
|
||||||
|
|
||||||
if($seen === 0)
|
if ($seen === 0) {
|
||||||
$sql_seen = " AND `item`.`unseen` = 1 ";
|
$sql_seen = " AND `item`.`unseen` = 1 ";
|
||||||
|
}
|
||||||
|
|
||||||
$r = q("SELECT COUNT(*) AS `total`
|
$r = q(
|
||||||
|
"SELECT COUNT(*) AS `total`
|
||||||
FROM `item` INNER JOIN `item` AS `pitem` ON `pitem`.`id`=`item`.`parent`
|
FROM `item` INNER JOIN `item` AS `pitem` ON `pitem`.`id`=`item`.`parent`
|
||||||
WHERE `item`.`visible` = 1 AND `pitem`.`parent` != 0 AND
|
WHERE `item`.`visible` = 1 AND `pitem`.`parent` != 0 AND
|
||||||
`item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0
|
`item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0
|
||||||
|
@ -386,8 +403,9 @@ class NotificationsManager {
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBM::is_result($r))
|
if (DBM::is_result($r)) {
|
||||||
return $r[0]['total'];
|
return $r[0]['total'];
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -398,25 +416,28 @@ class NotificationsManager {
|
||||||
* @param int|string $seen
|
* @param int|string $seen
|
||||||
* If 0 only include notifications into the query
|
* If 0 only include notifications into the query
|
||||||
* which aren't marked as "seen"
|
* which aren't marked as "seen"
|
||||||
* @param int $start Start the query at this point
|
* @param int $start Start the query at this point
|
||||||
* @param int $limit Maximum number of query results
|
* @param int $limit Maximum number of query results
|
||||||
*
|
*
|
||||||
* @return array with
|
* @return array with
|
||||||
* string 'ident' => Notification identifier
|
* string 'ident' => Notification identifier
|
||||||
* int 'total' => Total number of available network notifications
|
* int 'total' => Total number of available network notifications
|
||||||
* array 'notifications' => Network notifications
|
* array 'notifications' => Network notifications
|
||||||
*/
|
*/
|
||||||
public function networkNotifs($seen = 0, $start = 0, $limit = 80) {
|
public function networkNotifs($seen = 0, $start = 0, $limit = 80)
|
||||||
|
{
|
||||||
$ident = 'network';
|
$ident = 'network';
|
||||||
$total = $this->networkTotal($seen);
|
$total = $this->networkTotal($seen);
|
||||||
$notifs = array();
|
$notifs = array();
|
||||||
$sql_seen = "";
|
$sql_seen = "";
|
||||||
|
|
||||||
if($seen === 0)
|
if ($seen === 0) {
|
||||||
$sql_seen = " AND `item`.`unseen` = 1 ";
|
$sql_seen = " AND `item`.`unseen` = 1 ";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, `item`.`unseen`,
|
$r = q(
|
||||||
|
"SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, `item`.`unseen`,
|
||||||
`item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object` AS `object`,
|
`item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object` AS `object`,
|
||||||
`pitem`.`author-name` AS `pname`, `pitem`.`author-link` AS `plink`, `pitem`.`guid` AS `pguid`
|
`pitem`.`author-name` AS `pname`, `pitem`.`author-link` AS `plink`, `pitem`.`guid` AS `pguid`
|
||||||
FROM `item` INNER JOIN `item` AS `pitem` ON `pitem`.`id`=`item`.`parent`
|
FROM `item` INNER JOIN `item` AS `pitem` ON `pitem`.`id`=`item`.`parent`
|
||||||
|
@ -424,13 +445,14 @@ class NotificationsManager {
|
||||||
`item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0
|
`item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0
|
||||||
$sql_seen
|
$sql_seen
|
||||||
ORDER BY `item`.`created` DESC LIMIT %d, %d ",
|
ORDER BY `item`.`created` DESC LIMIT %d, %d ",
|
||||||
intval(local_user()),
|
intval(local_user()),
|
||||||
intval($start),
|
intval($start),
|
||||||
intval($limit)
|
intval($limit)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBM::is_result($r))
|
if (DBM::is_result($r)) {
|
||||||
$notifs = $this->formatNotifs($r, $ident);
|
$notifs = $this->formatNotifs($r, $ident);
|
||||||
|
}
|
||||||
|
|
||||||
$arr = array (
|
$arr = array (
|
||||||
'notifications' => $notifs,
|
'notifications' => $notifs,
|
||||||
|
@ -448,18 +470,22 @@ class NotificationsManager {
|
||||||
* which aren't marked as "seen"
|
* which aren't marked as "seen"
|
||||||
* @return int Number of system notifications
|
* @return int Number of system notifications
|
||||||
*/
|
*/
|
||||||
private function systemTotal($seen = 0) {
|
private function systemTotal($seen = 0)
|
||||||
|
{
|
||||||
$sql_seen = "";
|
$sql_seen = "";
|
||||||
|
|
||||||
if($seen === 0)
|
if ($seen === 0) {
|
||||||
$sql_seen = " AND `seen` = 0 ";
|
$sql_seen = " AND `seen` = 0 ";
|
||||||
|
}
|
||||||
|
|
||||||
$r = q("SELECT COUNT(*) AS `total` FROM `notify` WHERE `uid` = %d $sql_seen",
|
$r = q(
|
||||||
|
"SELECT COUNT(*) AS `total` FROM `notify` WHERE `uid` = %d $sql_seen",
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBM::is_result($r))
|
if (DBM::is_result($r)) {
|
||||||
return $r[0]['total'];
|
return $r[0]['total'];
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -470,32 +496,36 @@ class NotificationsManager {
|
||||||
* @param int|string $seen
|
* @param int|string $seen
|
||||||
* If 0 only include notifications into the query
|
* If 0 only include notifications into the query
|
||||||
* which aren't marked as "seen"
|
* which aren't marked as "seen"
|
||||||
* @param int $start Start the query at this point
|
* @param int $start Start the query at this point
|
||||||
* @param int $limit Maximum number of query results
|
* @param int $limit Maximum number of query results
|
||||||
*
|
*
|
||||||
* @return array with
|
* @return array with
|
||||||
* string 'ident' => Notification identifier
|
* string 'ident' => Notification identifier
|
||||||
* int 'total' => Total number of available system notifications
|
* int 'total' => Total number of available system notifications
|
||||||
* array 'notifications' => System notifications
|
* array 'notifications' => System notifications
|
||||||
*/
|
*/
|
||||||
public function systemNotifs($seen = 0, $start = 0, $limit = 80) {
|
public function systemNotifs($seen = 0, $start = 0, $limit = 80)
|
||||||
|
{
|
||||||
$ident = 'system';
|
$ident = 'system';
|
||||||
$total = $this->systemTotal($seen);
|
$total = $this->systemTotal($seen);
|
||||||
$notifs = array();
|
$notifs = array();
|
||||||
$sql_seen = "";
|
$sql_seen = "";
|
||||||
|
|
||||||
if($seen === 0)
|
if ($seen === 0) {
|
||||||
$sql_seen = " AND `seen` = 0 ";
|
$sql_seen = " AND `seen` = 0 ";
|
||||||
|
}
|
||||||
|
|
||||||
$r = q("SELECT `id`, `url`, `photo`, `msg`, `date`, `seen` FROM `notify`
|
$r = q(
|
||||||
|
"SELECT `id`, `url`, `photo`, `msg`, `date`, `seen` FROM `notify`
|
||||||
WHERE `uid` = %d $sql_seen ORDER BY `date` DESC LIMIT %d, %d ",
|
WHERE `uid` = %d $sql_seen ORDER BY `date` DESC LIMIT %d, %d ",
|
||||||
intval(local_user()),
|
intval(local_user()),
|
||||||
intval($start),
|
intval($start),
|
||||||
intval($limit)
|
intval($limit)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBM::is_result($r))
|
if (DBM::is_result($r)) {
|
||||||
$notifs = $this->formatNotifs($r, $ident);
|
$notifs = $this->formatNotifs($r, $ident);
|
||||||
|
}
|
||||||
|
|
||||||
$arr = array (
|
$arr = array (
|
||||||
'notifications' => $notifs,
|
'notifications' => $notifs,
|
||||||
|
@ -511,12 +541,14 @@ class NotificationsManager {
|
||||||
*
|
*
|
||||||
* @return string The additional sql query
|
* @return string The additional sql query
|
||||||
*/
|
*/
|
||||||
private function _personal_sql_extra() {
|
private function _personal_sql_extra()
|
||||||
|
{
|
||||||
$myurl = System::baseUrl(true) . '/profile/'. $this->a->user['nickname'];
|
$myurl = System::baseUrl(true) . '/profile/'. $this->a->user['nickname'];
|
||||||
$myurl = substr($myurl,strpos($myurl,'://')+3);
|
$myurl = substr($myurl, strpos($myurl, '://') + 3);
|
||||||
$myurl = str_replace(array('www.','.'),array('','\\.'),$myurl);
|
$myurl = str_replace(array('www.','.'), array('','\\.'), $myurl);
|
||||||
$diasp_url = str_replace('/profile/','/u/',$myurl);
|
$diasp_url = str_replace('/profile/', '/u/', $myurl);
|
||||||
$sql_extra = sprintf(" AND ( `item`.`author-link` regexp '%s' OR `item`.`tag` regexp '%s' OR `item`.`tag` regexp '%s' ) ",
|
$sql_extra = sprintf(
|
||||||
|
" AND ( `item`.`author-link` regexp '%s' OR `item`.`tag` regexp '%s' OR `item`.`tag` regexp '%s' ) ",
|
||||||
dbesc($myurl . '$'),
|
dbesc($myurl . '$'),
|
||||||
dbesc($myurl . '\\]'),
|
dbesc($myurl . '\\]'),
|
||||||
dbesc($diasp_url . '\\]')
|
dbesc($diasp_url . '\\]')
|
||||||
|
@ -532,14 +564,17 @@ class NotificationsManager {
|
||||||
* which aren't marked as "seen"
|
* which aren't marked as "seen"
|
||||||
* @return int Number of personal notifications
|
* @return int Number of personal notifications
|
||||||
*/
|
*/
|
||||||
private function personalTotal($seen = 0) {
|
private function personalTotal($seen = 0)
|
||||||
|
{
|
||||||
$sql_seen = "";
|
$sql_seen = "";
|
||||||
$sql_extra = $this->_personal_sql_extra();
|
$sql_extra = $this->_personal_sql_extra();
|
||||||
|
|
||||||
if($seen === 0)
|
if ($seen === 0) {
|
||||||
$sql_seen = " AND `item`.`unseen` = 1 ";
|
$sql_seen = " AND `item`.`unseen` = 1 ";
|
||||||
|
}
|
||||||
|
|
||||||
$r = q("SELECT COUNT(*) AS `total`
|
$r = q(
|
||||||
|
"SELECT COUNT(*) AS `total`
|
||||||
FROM `item` INNER JOIN `item` AS `pitem` ON `pitem`.`id`=`item`.`parent`
|
FROM `item` INNER JOIN `item` AS `pitem` ON `pitem`.`id`=`item`.`parent`
|
||||||
WHERE `item`.`visible` = 1
|
WHERE `item`.`visible` = 1
|
||||||
$sql_extra
|
$sql_extra
|
||||||
|
@ -548,8 +583,9 @@ class NotificationsManager {
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBM::is_result($r))
|
if (DBM::is_result($r)) {
|
||||||
return $r[0]['total'];
|
return $r[0]['total'];
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -560,25 +596,28 @@ class NotificationsManager {
|
||||||
* @param int|string $seen
|
* @param int|string $seen
|
||||||
* If 0 only include notifications into the query
|
* If 0 only include notifications into the query
|
||||||
* which aren't marked as "seen"
|
* which aren't marked as "seen"
|
||||||
* @param int $start Start the query at this point
|
* @param int $start Start the query at this point
|
||||||
* @param int $limit Maximum number of query results
|
* @param int $limit Maximum number of query results
|
||||||
*
|
*
|
||||||
* @return array with
|
* @return array with
|
||||||
* string 'ident' => Notification identifier
|
* string 'ident' => Notification identifier
|
||||||
* int 'total' => Total number of available personal notifications
|
* int 'total' => Total number of available personal notifications
|
||||||
* array 'notifications' => Personal notifications
|
* array 'notifications' => Personal notifications
|
||||||
*/
|
*/
|
||||||
public function personalNotifs($seen = 0, $start = 0, $limit = 80) {
|
public function personalNotifs($seen = 0, $start = 0, $limit = 80)
|
||||||
|
{
|
||||||
$ident = 'personal';
|
$ident = 'personal';
|
||||||
$total = $this->personalTotal($seen);
|
$total = $this->personalTotal($seen);
|
||||||
$sql_extra = $this->_personal_sql_extra();
|
$sql_extra = $this->_personal_sql_extra();
|
||||||
$notifs = array();
|
$notifs = array();
|
||||||
$sql_seen = "";
|
$sql_seen = "";
|
||||||
|
|
||||||
if($seen === 0)
|
if ($seen === 0) {
|
||||||
$sql_seen = " AND `item`.`unseen` = 1 ";
|
$sql_seen = " AND `item`.`unseen` = 1 ";
|
||||||
|
}
|
||||||
|
|
||||||
$r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, `item`.`unseen`,
|
$r = q(
|
||||||
|
"SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, `item`.`unseen`,
|
||||||
`item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object` AS `object`,
|
`item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object` AS `object`,
|
||||||
`pitem`.`author-name` AS `pname`, `pitem`.`author-link` AS `plink`, `pitem`.`guid` AS `pguid`
|
`pitem`.`author-name` AS `pname`, `pitem`.`author-link` AS `plink`, `pitem`.`guid` AS `pguid`
|
||||||
FROM `item` INNER JOIN `item` AS `pitem` ON `pitem`.`id`=`item`.`parent`
|
FROM `item` INNER JOIN `item` AS `pitem` ON `pitem`.`id`=`item`.`parent`
|
||||||
|
@ -586,14 +625,15 @@ class NotificationsManager {
|
||||||
$sql_extra
|
$sql_extra
|
||||||
$sql_seen
|
$sql_seen
|
||||||
AND `item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0
|
AND `item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0
|
||||||
ORDER BY `item`.`created` DESC LIMIT %d, %d " ,
|
ORDER BY `item`.`created` DESC LIMIT %d, %d ",
|
||||||
intval(local_user()),
|
intval(local_user()),
|
||||||
intval($start),
|
intval($start),
|
||||||
intval($limit)
|
intval($limit)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBM::is_result($r))
|
if (DBM::is_result($r)) {
|
||||||
$notifs = $this->formatNotifs($r, $ident);
|
$notifs = $this->formatNotifs($r, $ident);
|
||||||
|
}
|
||||||
|
|
||||||
$arr = array (
|
$arr = array (
|
||||||
'notifications' => $notifs,
|
'notifications' => $notifs,
|
||||||
|
@ -611,21 +651,25 @@ class NotificationsManager {
|
||||||
* which aren't marked as "seen"
|
* which aren't marked as "seen"
|
||||||
* @return int Number of home notifications
|
* @return int Number of home notifications
|
||||||
*/
|
*/
|
||||||
private function homeTotal($seen = 0) {
|
private function homeTotal($seen = 0)
|
||||||
|
{
|
||||||
$sql_seen = "";
|
$sql_seen = "";
|
||||||
|
|
||||||
if($seen === 0)
|
if ($seen === 0) {
|
||||||
$sql_seen = " AND `item`.`unseen` = 1 ";
|
$sql_seen = " AND `item`.`unseen` = 1 ";
|
||||||
|
}
|
||||||
|
|
||||||
$r = q("SELECT COUNT(*) AS `total` FROM `item`
|
$r = q(
|
||||||
|
"SELECT COUNT(*) AS `total` FROM `item`
|
||||||
WHERE `item`.`visible` = 1 AND
|
WHERE `item`.`visible` = 1 AND
|
||||||
`item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 1
|
`item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 1
|
||||||
$sql_seen",
|
$sql_seen",
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBM::is_result($r))
|
if (DBM::is_result($r)) {
|
||||||
return $r[0]['total'];
|
return $r[0]['total'];
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -636,24 +680,27 @@ class NotificationsManager {
|
||||||
* @param int|string $seen
|
* @param int|string $seen
|
||||||
* If 0 only include notifications into the query
|
* If 0 only include notifications into the query
|
||||||
* which aren't marked as "seen"
|
* which aren't marked as "seen"
|
||||||
* @param int $start Start the query at this point
|
* @param int $start Start the query at this point
|
||||||
* @param int $limit Maximum number of query results
|
* @param int $limit Maximum number of query results
|
||||||
*
|
*
|
||||||
* @return array with
|
* @return array with
|
||||||
* string 'ident' => Notification identifier
|
* string 'ident' => Notification identifier
|
||||||
* int 'total' => Total number of available home notifications
|
* int 'total' => Total number of available home notifications
|
||||||
* array 'notifications' => Home notifications
|
* array 'notifications' => Home notifications
|
||||||
*/
|
*/
|
||||||
public function homeNotifs($seen = 0, $start = 0, $limit = 80) {
|
public function homeNotifs($seen = 0, $start = 0, $limit = 80)
|
||||||
|
{
|
||||||
$ident = 'home';
|
$ident = 'home';
|
||||||
$total = $this->homeTotal($seen);
|
$total = $this->homeTotal($seen);
|
||||||
$notifs = array();
|
$notifs = array();
|
||||||
$sql_seen = "";
|
$sql_seen = "";
|
||||||
|
|
||||||
if($seen === 0)
|
if ($seen === 0) {
|
||||||
$sql_seen = " AND `item`.`unseen` = 1 ";
|
$sql_seen = " AND `item`.`unseen` = 1 ";
|
||||||
|
}
|
||||||
|
|
||||||
$r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, `item`.`unseen`,
|
$r = q(
|
||||||
|
"SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, `item`.`unseen`,
|
||||||
`item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object` AS `object`,
|
`item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object` AS `object`,
|
||||||
`pitem`.`author-name` AS `pname`, `pitem`.`author-link` AS `plink`, `pitem`.`guid` AS `pguid`
|
`pitem`.`author-name` AS `pname`, `pitem`.`author-link` AS `plink`, `pitem`.`guid` AS `pguid`
|
||||||
FROM `item` INNER JOIN `item` AS `pitem` ON `pitem`.`id`=`item`.`parent`
|
FROM `item` INNER JOIN `item` AS `pitem` ON `pitem`.`id`=`item`.`parent`
|
||||||
|
@ -661,13 +708,14 @@ class NotificationsManager {
|
||||||
`item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 1
|
`item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 1
|
||||||
$sql_seen
|
$sql_seen
|
||||||
ORDER BY `item`.`created` DESC LIMIT %d, %d ",
|
ORDER BY `item`.`created` DESC LIMIT %d, %d ",
|
||||||
intval(local_user()),
|
intval(local_user()),
|
||||||
intval($start),
|
intval($start),
|
||||||
intval($limit)
|
intval($limit)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBM::is_result($r))
|
if (DBM::is_result($r)) {
|
||||||
$notifs = $this->formatNotifs($r, $ident);
|
$notifs = $this->formatNotifs($r, $ident);
|
||||||
|
}
|
||||||
|
|
||||||
$arr = array (
|
$arr = array (
|
||||||
'notifications' => $notifs,
|
'notifications' => $notifs,
|
||||||
|
@ -685,19 +733,23 @@ class NotificationsManager {
|
||||||
* which aren't marked as ignored
|
* which aren't marked as ignored
|
||||||
* @return int Number of introductions
|
* @return int Number of introductions
|
||||||
*/
|
*/
|
||||||
private function introTotal($all = false) {
|
private function introTotal($all = false)
|
||||||
|
{
|
||||||
$sql_extra = "";
|
$sql_extra = "";
|
||||||
|
|
||||||
if(!$all)
|
if (!$all) {
|
||||||
$sql_extra = " AND `ignore` = 0 ";
|
$sql_extra = " AND `ignore` = 0 ";
|
||||||
|
}
|
||||||
|
|
||||||
$r = q("SELECT COUNT(*) AS `total` FROM `intro`
|
$r = q(
|
||||||
|
"SELECT COUNT(*) AS `total` FROM `intro`
|
||||||
WHERE `intro`.`uid` = %d $sql_extra AND `intro`.`blocked` = 0 ",
|
WHERE `intro`.`uid` = %d $sql_extra AND `intro`.`blocked` = 0 ",
|
||||||
intval($_SESSION['uid'])
|
intval($_SESSION['uid'])
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBM::is_result($r))
|
if (DBM::is_result($r)) {
|
||||||
return $r[0]['total'];
|
return $r[0]['total'];
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -722,11 +774,13 @@ class NotificationsManager {
|
||||||
$notifs = array();
|
$notifs = array();
|
||||||
$sql_extra = "";
|
$sql_extra = "";
|
||||||
|
|
||||||
if(!$all)
|
if (!$all) {
|
||||||
$sql_extra = " AND `ignore` = 0 ";
|
$sql_extra = " AND `ignore` = 0 ";
|
||||||
|
}
|
||||||
|
|
||||||
/// @todo Fetch contact details by "get_contact_details_by_url" instead of queries to contact, fcontact and gcontact
|
/// @todo Fetch contact details by "get_contact_details_by_url" instead of queries to contact, fcontact and gcontact
|
||||||
$r = q("SELECT `intro`.`id` AS `intro_id`, `intro`.*, `contact`.*,
|
$r = q(
|
||||||
|
"SELECT `intro`.`id` AS `intro_id`, `intro`.*, `contact`.*,
|
||||||
`fcontact`.`name` AS `fname`, `fcontact`.`url` AS `furl`,
|
`fcontact`.`name` AS `fname`, `fcontact`.`url` AS `furl`,
|
||||||
`fcontact`.`photo` AS `fphoto`, `fcontact`.`request` AS `frequest`,
|
`fcontact`.`photo` AS `fphoto`, `fcontact`.`request` AS `frequest`,
|
||||||
`gcontact`.`location` AS `glocation`, `gcontact`.`about` AS `gabout`,
|
`gcontact`.`location` AS `glocation`, `gcontact`.`about` AS `gabout`,
|
||||||
|
@ -738,13 +792,14 @@ class NotificationsManager {
|
||||||
LEFT JOIN `fcontact` ON `intro`.`fid` = `fcontact`.`id`
|
LEFT JOIN `fcontact` ON `intro`.`fid` = `fcontact`.`id`
|
||||||
WHERE `intro`.`uid` = %d $sql_extra AND `intro`.`blocked` = 0
|
WHERE `intro`.`uid` = %d $sql_extra AND `intro`.`blocked` = 0
|
||||||
LIMIT %d, %d",
|
LIMIT %d, %d",
|
||||||
intval($_SESSION['uid']),
|
intval($_SESSION['uid']),
|
||||||
intval($start),
|
intval($start),
|
||||||
intval($limit)
|
intval($limit)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (DBM::is_result($r))
|
if (DBM::is_result($r)) {
|
||||||
$notifs = $this->formatIntros($r);
|
$notifs = $this->formatIntros($r);
|
||||||
|
}
|
||||||
|
|
||||||
$arr = array (
|
$arr = array (
|
||||||
'ident' => $ident,
|
'ident' => $ident,
|
||||||
|
@ -761,16 +816,16 @@ class NotificationsManager {
|
||||||
* @param array $intros The array from the db query
|
* @param array $intros The array from the db query
|
||||||
* @return array with the introductions
|
* @return array with the introductions
|
||||||
*/
|
*/
|
||||||
private function formatIntros($intros) {
|
private function formatIntros($intros)
|
||||||
|
{
|
||||||
$knowyou = '';
|
$knowyou = '';
|
||||||
|
|
||||||
foreach($intros as $it) {
|
foreach ($intros as $it) {
|
||||||
// There are two kind of introduction. Contacts suggested by other contacts and normal connection requests.
|
// There are two kind of introduction. Contacts suggested by other contacts and normal connection requests.
|
||||||
// We have to distinguish between these two because they use different data.
|
// We have to distinguish between these two because they use different data.
|
||||||
|
|
||||||
// Contact suggestions
|
// Contact suggestions
|
||||||
if($it['fid']) {
|
if ($it['fid']) {
|
||||||
|
|
||||||
$return_addr = bin2hex($this->a->user['nickname'] . '@' . $this->a->get_hostname() . (($this->a->path) ? '/' . $this->a->path : ''));
|
$return_addr = bin2hex($this->a->user['nickname'] . '@' . $this->a->get_hostname() . (($this->a->path) ? '/' . $this->a->path : ''));
|
||||||
|
|
||||||
$intro = array(
|
$intro = array(
|
||||||
|
@ -779,25 +834,23 @@ class NotificationsManager {
|
||||||
'intro_id' => $it['intro_id'],
|
'intro_id' => $it['intro_id'],
|
||||||
'madeby' => $it['name'],
|
'madeby' => $it['name'],
|
||||||
'contact_id' => $it['contact-id'],
|
'contact_id' => $it['contact-id'],
|
||||||
'photo' => ((x($it,'fphoto')) ? proxy_url($it['fphoto'], false, PROXY_SIZE_SMALL) : "images/person-175.jpg"),
|
'photo' => ((x($it, 'fphoto')) ? proxy_url($it['fphoto'], false, PROXY_SIZE_SMALL) : "images/person-175.jpg"),
|
||||||
'name' => $it['fname'],
|
'name' => $it['fname'],
|
||||||
'url' => zrl($it['furl']),
|
'url' => zrl($it['furl']),
|
||||||
'hidden' => $it['hidden'] == 1,
|
'hidden' => $it['hidden'] == 1,
|
||||||
'post_newfriend' => (intval(PConfig::get(local_user(),'system','post_newfriend')) ? '1' : 0),
|
'post_newfriend' => (intval(PConfig::get(local_user(), 'system', 'post_newfriend')) ? '1' : 0),
|
||||||
|
|
||||||
'knowyou' => $knowyou,
|
'knowyou' => $knowyou,
|
||||||
'note' => $it['note'],
|
'note' => $it['note'],
|
||||||
'request' => $it['frequest'] . '?addr=' . $return_addr,
|
'request' => $it['frequest'] . '?addr=' . $return_addr,
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// Normal connection requests
|
// Normal connection requests
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$it = $this->getMissingIntroData($it);
|
$it = $this->getMissingIntroData($it);
|
||||||
|
|
||||||
// Don't show these data until you are connected. Diaspora is doing the same.
|
// Don't show these data until you are connected. Diaspora is doing the same.
|
||||||
if($it['gnetwork'] === NETWORK_DIASPORA) {
|
if ($it['gnetwork'] === NETWORK_DIASPORA) {
|
||||||
$it['glocation'] = "";
|
$it['glocation'] = "";
|
||||||
$it['gabout'] = "";
|
$it['gabout'] = "";
|
||||||
$it['ggender'] = "";
|
$it['ggender'] = "";
|
||||||
|
@ -809,14 +862,14 @@ class NotificationsManager {
|
||||||
'uid' => $_SESSION['uid'],
|
'uid' => $_SESSION['uid'],
|
||||||
'intro_id' => $it['intro_id'],
|
'intro_id' => $it['intro_id'],
|
||||||
'contact_id' => $it['contact-id'],
|
'contact_id' => $it['contact-id'],
|
||||||
'photo' => ((x($it,'photo')) ? proxy_url($it['photo'], false, PROXY_SIZE_SMALL) : "images/person-175.jpg"),
|
'photo' => ((x($it, 'photo')) ? proxy_url($it['photo'], false, PROXY_SIZE_SMALL) : "images/person-175.jpg"),
|
||||||
'name' => $it['name'],
|
'name' => $it['name'],
|
||||||
'location' => bbcode($it['glocation'], false, false),
|
'location' => bbcode($it['glocation'], false, false),
|
||||||
'about' => bbcode($it['gabout'], false, false),
|
'about' => bbcode($it['gabout'], false, false),
|
||||||
'keywords' => $it['gkeywords'],
|
'keywords' => $it['gkeywords'],
|
||||||
'gender' => $it['ggender'],
|
'gender' => $it['ggender'],
|
||||||
'hidden' => $it['hidden'] == 1,
|
'hidden' => $it['hidden'] == 1,
|
||||||
'post_newfriend' => (intval(PConfig::get(local_user(),'system','post_newfriend')) ? '1' : 0),
|
'post_newfriend' => (intval(PConfig::get(local_user(), 'system', 'post_newfriend')) ? '1' : 0),
|
||||||
'url' => $it['url'],
|
'url' => $it['url'],
|
||||||
'zrl' => zrl($it['url']),
|
'zrl' => zrl($it['url']),
|
||||||
'addr' => $it['gaddr'],
|
'addr' => $it['gaddr'],
|
||||||
|
@ -840,7 +893,8 @@ class NotificationsManager {
|
||||||
*
|
*
|
||||||
* @return array The array with the intro data
|
* @return array The array with the intro data
|
||||||
*/
|
*/
|
||||||
private function getMissingIntroData($arr) {
|
private function getMissingIntroData($arr)
|
||||||
|
{
|
||||||
// If the network and the addr isn't available from the gcontact
|
// If the network and the addr isn't available from the gcontact
|
||||||
// table entry, take the one of the contact table entry
|
// table entry, take the one of the contact table entry
|
||||||
if ($arr['gnetwork'] == "") {
|
if ($arr['gnetwork'] == "") {
|
||||||
|
|
|
@ -1,13 +1,18 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* @file src/Database/DBM.php
|
||||||
|
*/
|
||||||
namespace Friendica\Database;
|
namespace Friendica\Database;
|
||||||
|
|
||||||
use dba;
|
use dba;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This class contain functions for the database management
|
* @brief This class contain functions for the database management
|
||||||
*
|
*
|
||||||
* This class contains functions that doesn't need to know if pdo, mysqli or whatever is used.
|
* This class contains functions that doesn't need to know if pdo, mysqli or whatever is used.
|
||||||
*/
|
*/
|
||||||
class DBM {
|
class DBM
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* @brief Return a list of database processes
|
* @brief Return a list of database processes
|
||||||
*
|
*
|
||||||
|
@ -15,7 +20,8 @@ class DBM {
|
||||||
* 'list' => List of processes, separated in their different states
|
* 'list' => List of processes, separated in their different states
|
||||||
* 'amount' => Number of concurrent database processes
|
* 'amount' => Number of concurrent database processes
|
||||||
*/
|
*/
|
||||||
public static function processlist() {
|
public static function processlist()
|
||||||
|
{
|
||||||
$r = q("SHOW PROCESSLIST");
|
$r = q("SHOW PROCESSLIST");
|
||||||
$s = array();
|
$s = array();
|
||||||
|
|
||||||
|
@ -33,8 +39,9 @@ class DBM {
|
||||||
|
|
||||||
$statelist = "";
|
$statelist = "";
|
||||||
foreach ($states AS $state => $usage) {
|
foreach ($states AS $state => $usage) {
|
||||||
if ($statelist != "")
|
if ($statelist != "") {
|
||||||
$statelist .= ", ";
|
$statelist .= ", ";
|
||||||
|
}
|
||||||
$statelist .= $state.": ".$usage;
|
$statelist .= $state.": ".$usage;
|
||||||
}
|
}
|
||||||
return(array("list" => $statelist, "amount" => $processes));
|
return(array("list" => $statelist, "amount" => $processes));
|
||||||
|
@ -43,10 +50,12 @@ class DBM {
|
||||||
/**
|
/**
|
||||||
* Checks if $array is a filled array with at least one entry.
|
* Checks if $array is a filled array with at least one entry.
|
||||||
*
|
*
|
||||||
* @param $array mixed A filled array with at least one entry
|
* @param mixed $array A filled array with at least one entry
|
||||||
* @return Whether $array is a filled array or an object with rows
|
*
|
||||||
|
* @return boolean Whether $array is a filled array or an object with rows
|
||||||
*/
|
*/
|
||||||
public static function is_result($array) {
|
public static function is_result($array)
|
||||||
|
{
|
||||||
// It could be a return value from an update statement
|
// It could be a return value from an update statement
|
||||||
if (is_bool($array)) {
|
if (is_bool($array)) {
|
||||||
return $array;
|
return $array;
|
||||||
|
@ -62,12 +71,12 @@ class DBM {
|
||||||
/**
|
/**
|
||||||
* @brief Callback function for "esc_array"
|
* @brief Callback function for "esc_array"
|
||||||
*
|
*
|
||||||
* @param mixed $value Array value
|
* @param mixed $value Array value
|
||||||
* @param string $key Array key
|
* @param string $key Array key
|
||||||
* @param boolean $add_quotation add quotation marks for string values
|
* @param boolean $add_quotation add quotation marks for string values
|
||||||
*/
|
*/
|
||||||
private static function esc_array_callback(&$value, $key, $add_quotation) {
|
private static function esc_array_callback(&$value, $key, $add_quotation)
|
||||||
|
{
|
||||||
if (!$add_quotation) {
|
if (!$add_quotation) {
|
||||||
if (is_bool($value)) {
|
if (is_bool($value)) {
|
||||||
$value = ($value ? '1' : '0');
|
$value = ($value ? '1' : '0');
|
||||||
|
@ -89,10 +98,11 @@ class DBM {
|
||||||
/**
|
/**
|
||||||
* @brief Escapes a whole array
|
* @brief Escapes a whole array
|
||||||
*
|
*
|
||||||
* @param mixed $arr Array with values to be escaped
|
* @param mixed $arr Array with values to be escaped
|
||||||
* @param boolean $add_quotation add quotation marks for string values
|
* @param boolean $add_quotation add quotation marks for string values
|
||||||
*/
|
*/
|
||||||
public static function esc_array(&$arr, $add_quotation = false) {
|
public static function esc_array(&$arr, $add_quotation = false)
|
||||||
|
{
|
||||||
array_walk($arr, 'self::esc_array_callback', $add_quotation);
|
array_walk($arr, 'self::esc_array_callback', $add_quotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,9 +110,11 @@ class DBM {
|
||||||
* Checks Converts any date string into a SQL compatible date string
|
* Checks Converts any date string into a SQL compatible date string
|
||||||
*
|
*
|
||||||
* @param string $date a date string in any format
|
* @param string $date a date string in any format
|
||||||
|
*
|
||||||
* @return string SQL style date string
|
* @return string SQL style date string
|
||||||
*/
|
*/
|
||||||
public static function date($date = 'now') {
|
public static function date($date = 'now')
|
||||||
|
{
|
||||||
$timestamp = strtotime($date);
|
$timestamp = strtotime($date);
|
||||||
|
|
||||||
// Don't allow lower date strings as '0001-01-01 00:00:00'
|
// Don't allow lower date strings as '0001-01-01 00:00:00'
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file include/ParseUrl.php
|
* @file include/ParseUrl.php
|
||||||
* @brief Get informations about a given URL
|
* @brief Get informations about a given URL
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Friendica;
|
namespace Friendica;
|
||||||
|
|
||||||
use Friendica\Core\Config;
|
use Friendica\Core\Config;
|
||||||
|
@ -15,24 +13,23 @@ use dba;
|
||||||
use DomXPath;
|
use DomXPath;
|
||||||
use DOMDocument;
|
use DOMDocument;
|
||||||
|
|
||||||
require_once("include/network.php");
|
require_once "include/network.php";
|
||||||
require_once("include/Photo.php");
|
require_once "include/Photo.php";
|
||||||
require_once("include/oembed.php");
|
require_once "include/oembed.php";
|
||||||
require_once("include/xml.php");
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Class with methods for extracting certain content from an url
|
* @brief Class with methods for extracting certain content from an url
|
||||||
*/
|
*/
|
||||||
class ParseUrl {
|
class ParseUrl
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* @brief Search for chached embeddable data of an url otherwise fetch it
|
* @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 $url The url of the page which should be scraped
|
||||||
* @param type $no_guessing If true the parse doens't search for
|
* @param type $no_guessing If true the parse doens't search for
|
||||||
* preview pictures
|
* preview pictures
|
||||||
* @param type $do_oembed The false option is used by the function fetch_oembed()
|
* @param type $do_oembed The false option is used by the function fetch_oembed()
|
||||||
* to avoid endless loops
|
* to avoid endless loops
|
||||||
*
|
*
|
||||||
* @return array which contains needed data for embedding
|
* @return array which contains needed data for embedding
|
||||||
* string 'url' => The url of the parsed page
|
* string 'url' => The url of the parsed page
|
||||||
|
@ -47,14 +44,18 @@ class ParseUrl {
|
||||||
* @see ParseUrl::getSiteinfo() for more information about scraping
|
* @see ParseUrl::getSiteinfo() for more information about scraping
|
||||||
* embeddable content
|
* embeddable content
|
||||||
*/
|
*/
|
||||||
public static function getSiteinfoCached($url, $no_guessing = false, $do_oembed = true) {
|
public static function getSiteinfoCached($url, $no_guessing = false, $do_oembed = true)
|
||||||
|
{
|
||||||
if ($url == "") {
|
if ($url == "") {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$r = q("SELECT * FROM `parsed_url` WHERE `url` = '%s' AND `guessing` = %d AND `oembed` = %d",
|
$r = q(
|
||||||
dbesc(normalise_link($url)), intval(!$no_guessing), intval($do_oembed));
|
"SELECT * FROM `parsed_url` WHERE `url` = '%s' AND `guessing` = %d AND `oembed` = %d",
|
||||||
|
dbesc(normalise_link($url)),
|
||||||
|
intval(!$no_guessing),
|
||||||
|
intval($do_oembed)
|
||||||
|
);
|
||||||
|
|
||||||
if ($r) {
|
if ($r) {
|
||||||
$data = $r[0]["content"];
|
$data = $r[0]["content"];
|
||||||
|
@ -67,9 +68,14 @@ class ParseUrl {
|
||||||
|
|
||||||
$data = self::getSiteinfo($url, $no_guessing, $do_oembed);
|
$data = self::getSiteinfo($url, $no_guessing, $do_oembed);
|
||||||
|
|
||||||
dba::insert('parsed_url', array('url' => normalise_link($url), 'guessing' => !$no_guessing,
|
dba::insert(
|
||||||
|
'parsed_url',
|
||||||
|
array(
|
||||||
|
'url' => normalise_link($url), 'guessing' => !$no_guessing,
|
||||||
'oembed' => $do_oembed, 'content' => serialize($data),
|
'oembed' => $do_oembed, 'content' => serialize($data),
|
||||||
'created' => datetime_convert()), true);
|
'created' => datetime_convert()),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
@ -83,12 +89,12 @@ class ParseUrl {
|
||||||
* like \<title\>Awesome Title\</title\> or
|
* like \<title\>Awesome Title\</title\> or
|
||||||
* \<meta name="description" content="An awesome description"\>
|
* \<meta name="description" content="An awesome description"\>
|
||||||
*
|
*
|
||||||
* @param type $url The url of the page which should be scraped
|
* @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 type $no_guessing If true the parse doens't search for
|
||||||
* preview pictures
|
* preview pictures
|
||||||
* @param type $do_oembed The false option is used by the function fetch_oembed()
|
* @param type $do_oembed The false option is used by the function fetch_oembed()
|
||||||
* to avoid endless loops
|
* to avoid endless loops
|
||||||
* @param type $count Internal counter to avoid endless loops
|
* @param type $count Internal counter to avoid endless loops
|
||||||
*
|
*
|
||||||
* @return array which contains needed data for embedding
|
* @return array which contains needed data for embedding
|
||||||
* string 'url' => The url of the parsed page
|
* string 'url' => The url of the parsed page
|
||||||
|
@ -113,8 +119,8 @@ class ParseUrl {
|
||||||
* </body>
|
* </body>
|
||||||
* @endverbatim
|
* @endverbatim
|
||||||
*/
|
*/
|
||||||
public static function getSiteinfo($url, $no_guessing = false, $do_oembed = true, $count = 1) {
|
public static function getSiteinfo($url, $no_guessing = false, $do_oembed = true, $count = 1)
|
||||||
|
{
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
|
|
||||||
$siteinfo = array();
|
$siteinfo = array();
|
||||||
|
@ -158,7 +164,6 @@ class ParseUrl {
|
||||||
$body = $data["body"];
|
$body = $data["body"];
|
||||||
|
|
||||||
if ($do_oembed) {
|
if ($do_oembed) {
|
||||||
|
|
||||||
$oembed_data = oembed_fetch_url($url);
|
$oembed_data = oembed_fetch_url($url);
|
||||||
|
|
||||||
if (!in_array($oembed_data->type, array("error", "rich", ""))) {
|
if (!in_array($oembed_data->type, array("error", "rich", ""))) {
|
||||||
|
@ -364,8 +369,7 @@ class ParseUrl {
|
||||||
"width" => $photodata[0],
|
"width" => $photodata[0],
|
||||||
"height" => $photodata[1]);
|
"height" => $photodata[1]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
} elseif ($siteinfo["image"] != "") {
|
} elseif ($siteinfo["image"] != "") {
|
||||||
$src = self::completeUrl($siteinfo["image"], $url);
|
$src = self::completeUrl($siteinfo["image"], $url);
|
||||||
|
|
||||||
|
@ -433,7 +437,8 @@ class ParseUrl {
|
||||||
* @param string $string Tags
|
* @param string $string Tags
|
||||||
* @return array with formatted Hashtags
|
* @return array with formatted Hashtags
|
||||||
*/
|
*/
|
||||||
public static function convertTagsToArray($string) {
|
public static function convertTagsToArray($string)
|
||||||
|
{
|
||||||
$arr_tags = str_getcsv($string);
|
$arr_tags = str_getcsv($string);
|
||||||
if (count($arr_tags)) {
|
if (count($arr_tags)) {
|
||||||
// add the # sign to every tag
|
// add the # sign to every tag
|
||||||
|
@ -449,9 +454,10 @@ class ParseUrl {
|
||||||
* This method is used as callback function
|
* This method is used as callback function
|
||||||
*
|
*
|
||||||
* @param string $tag The pure tag name
|
* @param string $tag The pure tag name
|
||||||
* @param int $k Counter for internal use
|
* @param int $k Counter for internal use
|
||||||
*/
|
*/
|
||||||
private static function arrAddHashes(&$tag, $k) {
|
private static function arrAddHashes(&$tag, $k)
|
||||||
|
{
|
||||||
$tag = "#" . $tag;
|
$tag = "#" . $tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,14 +468,15 @@ class ParseUrl {
|
||||||
* can miss the scheme so we need to add the correct
|
* can miss the scheme so we need to add the correct
|
||||||
* scheme
|
* scheme
|
||||||
*
|
*
|
||||||
* @param string $url The url which possibly does have
|
* @param string $url The url which possibly does have
|
||||||
* a missing scheme (a link to an image)
|
* a missing scheme (a link to an image)
|
||||||
* @param string $scheme The url with a correct scheme
|
* @param string $scheme The url with a correct scheme
|
||||||
* (e.g. the url from the webpage which does contain the image)
|
* (e.g. the url from the webpage which does contain the image)
|
||||||
*
|
*
|
||||||
* @return string The url with a scheme
|
* @return string The url with a scheme
|
||||||
*/
|
*/
|
||||||
private static function completeUrl($url, $scheme) {
|
private static function completeUrl($url, $scheme)
|
||||||
|
{
|
||||||
$urlarr = parse_url($url);
|
$urlarr = parse_url($url);
|
||||||
|
|
||||||
// If the url does allready have an scheme
|
// If the url does allready have an scheme
|
||||||
|
@ -486,7 +493,7 @@ class ParseUrl {
|
||||||
$complete .= ":".$schemearr["port"];
|
$complete .= ":".$schemearr["port"];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strpos($urlarr["path"],"/") !== 0) {
|
if (strpos($urlarr["path"], "/") !== 0) {
|
||||||
$complete .= "/";
|
$complete .= "/";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
17
vendor/pear/text_languagedetect/phpcs.xml
vendored
17
vendor/pear/text_languagedetect/phpcs.xml
vendored
|
@ -4,5 +4,22 @@
|
||||||
<!-- we keep the old php4-style variable names for now -->
|
<!-- we keep the old php4-style variable names for now -->
|
||||||
<exclude name="PEAR.NamingConventions.ValidFunctionName.PublicUnderscore"/>
|
<exclude name="PEAR.NamingConventions.ValidFunctionName.PublicUnderscore"/>
|
||||||
<exclude name="PEAR.NamingConventions.ValidVariableName.PublicUnderscore"/>
|
<exclude name="PEAR.NamingConventions.ValidVariableName.PublicUnderscore"/>
|
||||||
|
<exclude name="PEAR.NamingConventions.ValidVariableName.PrivateNoUnderscore"/>
|
||||||
|
<exclude name="PEAR.NamingConventions.ValidFunctionName.PrivateNoUnderscore"/>
|
||||||
|
<exclude name="PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps"/>
|
||||||
|
<exclude name="PSR1.Methods.CamelCapsMethodName.NotCamelCaps"/>
|
||||||
|
</rule>
|
||||||
|
<description>PSR2 with tabs instead of spaces.</description>
|
||||||
|
<arg name="tab-width" value="4"/>
|
||||||
|
<rule ref="PSR2">
|
||||||
|
<exclude name="Generic.WhiteSpace.DisallowTabIndent"/>
|
||||||
|
<exclude name="Generic.Commenting.DocComment.MissingShort"/>
|
||||||
|
</rule>
|
||||||
|
<rule ref="Generic.WhiteSpace.DisallowSpaceIndent"/>
|
||||||
|
<rule ref="Generic.WhiteSpace.ScopeIndent">
|
||||||
|
<properties>
|
||||||
|
<property name="indent" value="4"/>
|
||||||
|
<property name="tabIndent" value="true"/>
|
||||||
|
</properties>
|
||||||
</rule>
|
</rule>
|
||||||
</ruleset>
|
</ruleset>
|
||||||
|
|
Loading…
Reference in a new issue