]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Attention.php
Don't trust local HTML either
[quix0rs-gnu-social.git] / classes / Attention.php
index d152ff892aa053878c58d17019822d637732c665..5299a095aedfff50c4c9cae08f555a1cca154b96 100644 (file)
@@ -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,17 +49,23 @@ 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: '.var_export($att->reason,true));
+        } catch (NoResultException $e) {
+            $att = new Attention();
         
-        $att->notice_id = $notice->getID();
-        $att->profile_id = $profile->getID();
-        $att->reason = $reason;
-        $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.'"');
+            }
         }
         return $att;
     }