X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FItemURI.php;h=020c468d23a81700bdd2c31e6db56ec2548bd3f6;hb=073695b33c5f9c5d89d91958b09259c59e12dd98;hp=a5054a803d93d4eccc93ceb6aa02e3c6714d6b87;hpb=af88c2daa34e39cb6430abf64d0648665bfeb9cd;p=friendica.git diff --git a/src/Model/ItemURI.php b/src/Model/ItemURI.php index a5054a803d..020c468d23 100644 --- a/src/Model/ItemURI.php +++ b/src/Model/ItemURI.php @@ -1,11 +1,27 @@ . + * */ namespace Friendica\Model; +use Friendica\Database\Database; use Friendica\Database\DBA; class ItemURI @@ -14,26 +30,29 @@ class ItemURI * Insert an item-uri record and return its id * * @param array $fields Item-uri fields - * - * @return integer item-uri id + * @return int|null item-uri id * @throws \Exception */ - public static function insert($fields) + public static function insert(array $fields) { // If the URI gets too long we only take the first parts and hope for best $uri = substr($fields['uri'], 0, 255); if (!DBA::exists('item-uri', ['uri' => $uri])) { - DBA::insert('item-uri', $fields, true); + DBA::insert('item-uri', $fields, Database::INSERT_UPDATE); } - $itemuri = DBA::selectFirst('item-uri', ['id'], ['uri' => $uri]); + $itemuri = DBA::selectFirst('item-uri', ['id', 'guid'], ['uri' => $uri]); if (!DBA::isResult($itemuri)) { // This shouldn't happen return null; } + if (empty($itemuri['guid']) && !empty($fields['guid'])) { + DBA::update('item-uri', ['guid' => $fields['guid']], ['id' => $itemuri['id']]); + } + return $itemuri['id']; } @@ -41,12 +60,15 @@ class ItemURI * Searched for an id of a given uri. Adds it, if not existing yet. * * @param string $uri - * * @return integer item-uri id * @throws \Exception */ - public static function getIdByURI($uri) + public static function getIdByURI(string $uri): int { + if (empty($uri)) { + return 0; + } + // If the URI gets too long we only take the first parts and hope for best $uri = substr($uri, 0, 255); @@ -56,6 +78,26 @@ class ItemURI return self::insert(['uri' => $uri]); } + return $itemuri['id']; + } + /** + * Searched for an id of a given guid. + * + * @param string $guid + * @return integer item-uri id + * @throws \Exception + */ + public static function getIdByGUID(string $guid): int + { + // If the GUID gets too long we only take the first parts and hope for best + $guid = substr($guid, 0, 255); + + $itemuri = DBA::selectFirst('item-uri', ['id'], ['guid' => $guid]); + + if (!DBA::isResult($itemuri)) { + return 0; + } + return $itemuri['id']; } }