X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FAttention.php;h=d048187db2d62116a561f869ae54ec4053e55f37;hb=3d6e25ee5f78d4fc3e00335d39724694264bbd53;hp=ef0dcb1df7dd4dc56798f087bafdcb48374506da;hpb=3a41dc4610b30f5043432c223e9c5bb29ae022b4;p=quix0rs-gnu-social.git diff --git a/classes/Attention.php b/classes/Attention.php index ef0dcb1df7..d048187db2 100644 --- a/classes/Attention.php +++ b/classes/Attention.php @@ -22,7 +22,7 @@ class Attention extends Managed_DataObject public $__table = 'attention'; // table name public $notice_id; // int(4) primary_key not_null public $profile_id; // int(4) primary_key not_null - public $reason; // varchar(255) + public $reason; // varchar(191) not 255 because utf8mb4 takes more space public $created; // datetime() not_null public $modified; // timestamp not_null default_CURRENT_TIMESTAMP @@ -33,7 +33,7 @@ class Attention extends Managed_DataObject 'fields' => array( 'notice_id' => array('type' => 'int', 'not null' => true, 'description' => 'notice_id to give attention'), 'profile_id' => array('type' => 'int', 'not null' => true, 'description' => 'profile_id for feed receiver'), - 'reason' => array('type' => 'varchar', 'length' => 255, 'description' => 'Optional reason why this was brought to the attention of profile_id'), + 'reason' => array('type' => 'varchar', 'length' => 191, 'description' => 'Optional reason why this was brought to the attention of profile_id'), 'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'), 'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'), ), @@ -49,19 +49,25 @@ class Attention extends Managed_DataObject ); } - public static function saveNew(Notice $notice, Profile $profile, $reason=null) + public static function saveNew(Notice $notice, Profile $target, $reason=null) { - $att = new Attention(); + try { + $att = Attention::getByKeys(['notice_id'=>$notice->getID(), 'profile_id'=>$target->getID()]); + throw new AlreadyFulfilledException('Attention already exists with reason: '._ve($att->reason)); + } catch (NoResultException $e) { + $att = new Attention(); - $att->notice_id = $notice->getID(); - $att->profile_id = $profile->getID(); - $att->reason = $reason; - $att->created = common_sql_now(); - $result = $att->insert(); + $att->notice_id = $notice->getID(); + $att->profile_id = $target->getID(); + $att->reason = $reason; + $att->created = common_sql_now(); + $result = $att->insert(); - if ($result === false) { - throw new Exception('Could not saveNew in Attention'); + if ($result === false) { + throw new Exception('Failed Attention::saveNew for notice id=='.$notice->getID().' target id=='.$target->getID().', reason=="'.$reason.'"'); + } } + self::blow('attention:stream:%d', $target->getID()); return $att; } }