]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/NotificationsManager.php
Avoid memory issue in exception
[friendica.git] / src / Core / NotificationsManager.php
index fb77605730b1069501c751c382a4f2ee46448cfe..d582f21596688c16145ee28ee9cc3ec5c2a79de6 100644 (file)
@@ -9,7 +9,6 @@ namespace Friendica\Core;
 use Friendica\BaseObject;
 use Friendica\Content\Text\BBCode;
 use Friendica\Content\Text\HTML;
-use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
 use Friendica\Model\Item;
@@ -18,8 +17,6 @@ use Friendica\Util\Proxy as ProxyUtils;
 use Friendica\Util\Temporal;
 use Friendica\Util\XML;
 
-require_once 'include/dba.php';
-
 /**
  * @brief Methods for read and write notifications from/to database
  *  or for formatting notifications
@@ -37,6 +34,7 @@ class NotificationsManager extends BaseObject
         *  - date_rel : relative date string
         *  - msg_html: message as html string
         *  - msg_plain: message as plain text string
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        private function _set_extra($notes)
        {
@@ -62,6 +60,7 @@ class NotificationsManager extends BaseObject
         * @param string $limit  optional Query limits
         *
         * @return array of results or false on errors
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public function getAll($filter = [], $order = "-date", $limit = "")
        {
@@ -110,6 +109,7 @@ class NotificationsManager extends BaseObject
         *
         * @param int $id identity
         * @return array note values or null if not found
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public function getByID($id)
        {
@@ -130,6 +130,7 @@ class NotificationsManager extends BaseObject
         * @param array $note note array
         * @param bool  $seen optional true or false, default true
         * @return bool true on success, false on errors
+        * @throws \Exception
         */
        public function setSeen($note, $seen = true)
        {
@@ -148,6 +149,7 @@ class NotificationsManager extends BaseObject
         *
         * @param bool $seen optional true or false. default true
         * @return bool true on success, false on error
+        * @throws \Exception
         */
        public function setAllSeen($seen = true)
        {
@@ -162,6 +164,7 @@ class NotificationsManager extends BaseObject
         * @brief List of pages for the Notifications TabBar
         *
         * @return array with with notifications TabBar data
+        * @throws \Exception
         */
        public function getTabs()
        {
@@ -214,18 +217,18 @@ class NotificationsManager extends BaseObject
         * @param array  $notifs The array from the db query
         * @param string $ident  The notifications identifier (e.g. network)
         * @return array
-        *      string 'label' => The type of the notification
-        *      string 'link' => URL to the source
-        *      string 'image' => The avatar image
-        *      string 'url' => The profile url of the contact
-        *      string 'text' => The notification text
-        *      string 'when' => The date of the notification
-        *      string 'ago' => T relative date of the notification
-        *      bool 'seen' => Is the notification marked as "seen"
+        *                       string 'label' => The type of the notification
+        *                       string 'link' => URL to the source
+        *                       string 'image' => The avatar image
+        *                       string 'url' => The profile url of the contact
+        *                       string 'text' => The notification text
+        *                       string 'when' => The date of the notification
+        *                       string 'ago' => T relative date of the notification
+        *                       bool 'seen' => Is the notification marked as "seen"
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        private function formatNotifs(array $notifs, $ident = "")
        {
-               $notif = [];
                $arr = [];
 
                if (DBA::isResult($notifs)) {
@@ -358,7 +361,7 @@ class NotificationsManager extends BaseObject
                                                        break;
                                                }
                                                /// @todo Check if this part here is used at all
-                                               logger('Complete data: ' . json_encode($it) . ' - ' . System::callstack(20), LOGGER_DEBUG);
+                                               Logger::log('Complete data: ' . json_encode($it) . ' - ' . System::callstack(20), Logger::DEBUG);
 
                                                $xmlhead = "<" . "?xml version='1.0' encoding='UTF-8' ?" . ">";
                                                $obj = XML::parseString($xmlhead . $it['object']);
@@ -399,14 +402,15 @@ class NotificationsManager extends BaseObject
        /**
         * @brief Get network notifications
         *
-        * @param int|string $seen  If 0 only include notifications into the query
-        *                              which aren't marked as "seen"
-        * @param int        $start Start the query at this point
-        * @param int        $limit Maximum number of query results
+        * @param int|string $seen    If 0 only include notifications into the query
+        *                            which aren't marked as "seen"
+        * @param int        $start   Start the query at this point
+        * @param int        $limit   Maximum number of query results
         *
         * @return array with
-        *      string 'ident' => Notification identifier
-        *      array 'notifications' => Network notifications
+        *    string 'ident' => Notification identifier
+        *    array 'notifications' => Network notifications
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public function networkNotifs($seen = 0, $start = 0, $limit = 80)
        {
@@ -440,14 +444,15 @@ class NotificationsManager extends BaseObject
        /**
         * @brief Get system notifications
         *
-        * @param int|string $seen  If 0 only include notifications into the query
-        *                              which aren't marked as "seen"
-        * @param int        $start Start the query at this point
-        * @param int        $limit Maximum number of query results
+        * @param int|string $seen    If 0 only include notifications into the query
+        *                            which aren't marked as "seen"
+        * @param int        $start   Start the query at this point
+        * @param int        $limit   Maximum number of query results
         *
         * @return array with
-        *      string 'ident' => Notification identifier
-        *      array 'notifications' => System notifications
+        *    string 'ident' => Notification identifier
+        *    array 'notifications' => System notifications
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public function systemNotifs($seen = 0, $start = 0, $limit = 80)
        {
@@ -482,14 +487,15 @@ class NotificationsManager extends BaseObject
        /**
         * @brief Get personal notifications
         *
-        * @param int|string $seen  If 0 only include notifications into the query
-        *                              which aren't marked as "seen"
-        * @param int        $start Start the query at this point
-        * @param int        $limit Maximum number of query results
+        * @param int|string $seen    If 0 only include notifications into the query
+        *                            which aren't marked as "seen"
+        * @param int        $start   Start the query at this point
+        * @param int        $limit   Maximum number of query results
         *
         * @return array with
-        *      string 'ident' => Notification identifier
-        *      array 'notifications' => Personal notifications
+        *    string 'ident' => Notification identifier
+        *    array 'notifications' => Personal notifications
+        * @throws \Exception
         */
        public function personalNotifs($seen = 0, $start = 0, $limit = 80)
        {
@@ -527,14 +533,15 @@ class NotificationsManager extends BaseObject
        /**
         * @brief Get home notifications
         *
-        * @param int|string $seen  If 0 only include notifications into the query
-        *                              which aren't marked as "seen"
-        * @param int        $start Start the query at this point
-        * @param int        $limit Maximum number of query results
+        * @param int|string $seen    If 0 only include notifications into the query
+        *                            which aren't marked as "seen"
+        * @param int        $start   Start the query at this point
+        * @param int        $limit   Maximum number of query results
         *
         * @return array with
-        *      string 'ident' => Notification identifier
-        *      array 'notifications' => Home notifications
+        *    string 'ident' => Notification identifier
+        *    array 'notifications' => Home notifications
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public function homeNotifs($seen = 0, $start = 0, $limit = 80)
        {
@@ -567,14 +574,16 @@ class NotificationsManager extends BaseObject
        /**
         * @brief Get introductions
         *
-        * @param bool $all   If false only include introductions into the query
-        *                        which aren't marked as ignored
-        * @param int  $start Start the query at this point
-        * @param int  $limit Maximum number of query results
+        * @param bool $all     If false only include introductions into the query
+        *                      which aren't marked as ignored
+        * @param int  $start   Start the query at this point
+        * @param int  $limit   Maximum number of query results
         *
         * @return array with
-        *      string 'ident' => Notification identifier
-        *      array 'notifications' => Introductions
+        *    string 'ident' => Notification identifier
+        *    array 'notifications' => Introductions
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
         */
        public function introNotifs($all = false, $start = 0, $limit = 80)
        {
@@ -621,11 +630,15 @@ class NotificationsManager extends BaseObject
         *
         * @param array $intros The array from the db query
         * @return array with the introductions
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
         */
        private function formatIntros($intros)
        {
                $knowyou = '';
 
+               $arr = [];
+
                foreach ($intros as $it) {
                        // 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.
@@ -642,7 +655,7 @@ class NotificationsManager extends BaseObject
                                        'madeby_zrl' => Contact::magicLink($it['url']),
                                        'madeby_addr' => $it['addr'],
                                        'contact_id' => $it['contact-id'],
-                                       'photo' => ((x($it, 'fphoto')) ? ProxyUtils::proxifyUrl($it['fphoto'], false, ProxyUtils::SIZE_SMALL) : "images/person-175.jpg"),
+                                       'photo' => (!empty($it['fphoto']) ? ProxyUtils::proxifyUrl($it['fphoto'], false, ProxyUtils::SIZE_SMALL) : "images/person-300.jpg"),
                                        'name' => $it['fname'],
                                        'url' => $it['furl'],
                                        'zrl' => Contact::magicLink($it['furl']),
@@ -674,7 +687,7 @@ class NotificationsManager extends BaseObject
                                        'uid' => $_SESSION['uid'],
                                        'intro_id' => $it['intro_id'],
                                        'contact_id' => $it['contact-id'],
-                                       'photo' => ((x($it, 'photo')) ? ProxyUtils::proxifyUrl($it['photo'], false, ProxyUtils::SIZE_SMALL) : "images/person-175.jpg"),
+                                       'photo' => (!empty($it['photo']) ? ProxyUtils::proxifyUrl($it['photo'], false, ProxyUtils::SIZE_SMALL) : "images/person-300.jpg"),
                                        'name' => $it['name'],
                                        'location' => BBCode::convert($it['glocation'], false),
                                        'about' => BBCode::convert($it['gabout'], false),
@@ -704,6 +717,7 @@ class NotificationsManager extends BaseObject
         * @param array $arr The input array with the intro data
         *
         * @return array The array with the intro data
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        private function getMissingIntroData($arr)
        {