X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FFile_to_post.php;h=bf201756f493b8630a4a7f702bad96451f4339fe;hb=be0c10e8f6f9c60b1cb840cda9ac6f42c8289738;hp=1a887a7c1833af38accc486374c5d86a82461e9b;hpb=8c710ad2c1b80544acccb515f7b601aadff2de16;p=quix0rs-gnu-social.git diff --git a/classes/File_to_post.php b/classes/File_to_post.php index 1a887a7c18..bf201756f4 100644 --- a/classes/File_to_post.php +++ b/classes/File_to_post.php @@ -17,9 +17,7 @@ * along with this program. If not, see . */ -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - -require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; +if (!defined('GNUSOCIAL')) { exit(1); } /** * Table Definition for file_to_post @@ -35,9 +33,6 @@ class File_to_post extends Managed_DataObject public $post_id; // int(4) primary_key not_null public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP - /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('File_to_post',$k,$v); } - /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -55,49 +50,65 @@ class File_to_post extends Managed_DataObject 'file_to_post_post_id_fkey' => array('notice', array('post_id' => 'id')), ), 'indexes' => array( + 'file_id_idx' => array('file_id'), 'post_id_idx' => array('post_id'), ), ); } - function processNew($file_id, $notice_id) { + static function processNew(File $file, Notice $notice) { static $seen = array(); - if (empty($seen[$notice_id]) || !in_array($file_id, $seen[$notice_id])) { - $f2p = File_to_post::pkeyGet(array('post_id' => $notice_id, - 'file_id' => $file_id)); - if (empty($f2p)) { + $file_id = $file->getID(); + $notice_id = $notice->getID(); + if (!array_key_exists($notice_id, $seen)) { + $seen[$notice_id] = array(); + } + + if (empty($seen[$notice_id]) || !in_array($file_id, $seen[$notice_id])) { + try { + $f2p = File_to_post::getByPK(array('post_id' => $notice_id, + 'file_id' => $file_id)); + } catch (NoResultException $e) { $f2p = new File_to_post; $f2p->file_id = $file_id; $f2p->post_id = $notice_id; $f2p->insert(); - $f = File::staticGet($file_id); - - if (!empty($f)) { - $f->blowCache(); - } + $file->blowCache(); } - if (empty($seen[$notice_id])) { - $seen[$notice_id] = array($file_id); - } else { - $seen[$notice_id][] = $file_id; - } + $seen[$notice_id][] = $file_id; } } - function pkeyGet($kv) + static function getNoticeIDsByFile(File $file) { - return Memcached_DataObject::pkeyGet('File_to_post', $kv); + $f2p = new File_to_post(); + + $f2p->selectAdd(); + $f2p->selectAdd('post_id'); + + $f2p->file_id = $file->getID(); + + $ids = array(); + + if (!$f2p->find()) { + throw new NoResultException($f2p); + } + + return $f2p->fetchAll('post_id'); } - function delete() + function delete($useWhere=false) { - $f = File::staticGet('id', $this->file_id); - if (!empty($f)) { + try { + $f = File::getByID($this->file_id); $f->blowCache(); + } catch (NoResultException $e) { + // ...alright, that's weird, but no File to delete anyway. } - return parent::delete(); + + return parent::delete($useWhere); } }