forked from GNUsocial/gnu-social
		
	Don't cache user-specific information for Notice atom entries
This commit is contained in:
		| @@ -1234,7 +1234,7 @@ class Notice extends Memcached_DataObject | ||||
|      * @return Activity activity object representing this Notice. | ||||
|      */ | ||||
|  | ||||
|     function asActivity($cur = null, $source = false) | ||||
|     function asActivity() | ||||
|     { | ||||
|         $act = self::cacheGet(Cache::codeKey('notice:as-activity:'.$this->id)); | ||||
|  | ||||
| @@ -1332,37 +1332,7 @@ class Notice extends Memcached_DataObject | ||||
| 	     | ||||
|             $act->context = $ctx; | ||||
|  | ||||
|             $noticeInfoAttr = array('local_id' => $this->id); // local notice ID (useful to clients for ordering) | ||||
|  | ||||
|             $ns = $this->getSource(); | ||||
|  | ||||
|             if (!empty($ns)) { | ||||
|                 $noticeInfoAttr['source'] =  $ns->code; | ||||
|                 if (!empty($ns->url)) { | ||||
|                     $noticeInfoAttr['source_link'] = $ns->url; | ||||
|                     if (!empty($ns->name)) { | ||||
|                         $noticeInfoAttr['source'] =  '<a href="' | ||||
|                             . htmlspecialchars($ns->url) | ||||
|                             . '" rel="nofollow">' | ||||
|                             . htmlspecialchars($ns->name) | ||||
|                             . '</a>'; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (!empty($cur)) { | ||||
|                 $noticeInfoAttr['favorite'] = ($cur->hasFave($this)) ? "true" : "false"; | ||||
|                 $cp = $cur->getProfile(); | ||||
|                 $noticeInfoAttr['repeated'] = ($cp->hasRepeated($this->id)) ? "true" : "false"; | ||||
|             } | ||||
|  | ||||
|             if (!empty($this->repeat_of)) { | ||||
|                 $noticeInfoAttr['repeat_of'] = $this->repeat_of; | ||||
|             } | ||||
|  | ||||
|             $act->extra[] = array('statusnet:notice_info', $noticeInfoAttr, null); | ||||
|  | ||||
|             if ($source) { | ||||
|             // Source | ||||
|  | ||||
|             $atom_feed = $profile->getAtomFeed(); | ||||
|  | ||||
| @@ -1395,7 +1365,6 @@ class Notice extends Memcached_DataObject | ||||
|                     $act->source->links['license'] = common_config('license', 'url'); | ||||
|                 } | ||||
|             } | ||||
|             } | ||||
|  | ||||
|             if ($this->isLocal()) { | ||||
|                 $act->selfLink = common_local_url('ApiStatusesShow', array('id' => $this->id, | ||||
| @@ -1414,12 +1383,65 @@ class Notice extends Memcached_DataObject | ||||
|     // This has gotten way too long. Needs to be sliced up into functional bits | ||||
|     // or ideally exported to a utility class. | ||||
|  | ||||
|     function asAtomEntry($namespace=false, $source=false, $author=true, $cur=null) | ||||
|     function asAtomEntry($namespace=false, | ||||
|                          $source=false, | ||||
|                          $author=true,  | ||||
|                          $cur=null) | ||||
|     { | ||||
|         $act = $this->asActivity($cur, $source); | ||||
|         return $act->asString($namespace, $author); | ||||
|         $act = $this->asActivity(); | ||||
|         $act->extra[] = $this->noticeInfo($cur); | ||||
|         return $act->asString($namespace, $author, $source); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Extra notice info for atom entries | ||||
|      *  | ||||
|      * Clients use some extra notice info in the atom stream. | ||||
|      * This gives it to them. | ||||
|      * | ||||
|      * @param User $cur Current user | ||||
|      * | ||||
|      * @return array representation of <statusnet:notice_info> element | ||||
|      */ | ||||
|  | ||||
|     function noticeInfo($cur) | ||||
|     { | ||||
|         // local notice ID (useful to clients for ordering) | ||||
|  | ||||
|         $noticeInfoAttr = array('local_id' => $this->id); | ||||
|  | ||||
|         // notice source | ||||
|  | ||||
|         $ns = $this->getSource(); | ||||
|  | ||||
|         if (!empty($ns)) { | ||||
|             $noticeInfoAttr['source'] =  $ns->code; | ||||
|             if (!empty($ns->url)) { | ||||
|                 $noticeInfoAttr['source_link'] = $ns->url; | ||||
|                 if (!empty($ns->name)) { | ||||
|                     $noticeInfoAttr['source'] =  '<a href="' | ||||
|                         . htmlspecialchars($ns->url) | ||||
|                         . '" rel="nofollow">' | ||||
|                         . htmlspecialchars($ns->name) | ||||
|                         . '</a>'; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         // favorite and repeated | ||||
|  | ||||
|         if (!empty($cur)) { | ||||
|             $noticeInfoAttr['favorite'] = ($cur->hasFave($this)) ? "true" : "false"; | ||||
|             $cp = $cur->getProfile(); | ||||
|             $noticeInfoAttr['repeated'] = ($cp->hasRepeated($this->id)) ? "true" : "false"; | ||||
|         } | ||||
|  | ||||
|         if (!empty($this->repeat_of)) { | ||||
|             $noticeInfoAttr['repeat_of'] = $this->repeat_of; | ||||
|         } | ||||
|  | ||||
|         return array('statusnet:notice_info', $noticeInfoAttr, null); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns an XML string fragment with a reference to a notice as an | ||||
|   | ||||
| @@ -327,16 +327,8 @@ class Activity | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     function asString($namespace=false, $author=true) | ||||
|     function asString($namespace=false, $author=true, $source=false) | ||||
|     { | ||||
|         $c = Cache::instance(); | ||||
|  | ||||
|         $str = $c->get(Cache::codeKey('activity:as-string:'.$this->id)); | ||||
|  | ||||
|         if (!empty($str)) { | ||||
|             return $str; | ||||
|         } | ||||
|  | ||||
|         $xs = new XMLStringer(true); | ||||
|  | ||||
|         if ($namespace) { | ||||
| @@ -502,7 +494,7 @@ class Activity | ||||
|  | ||||
|         // Info on the source feed | ||||
|  | ||||
|         if (!empty($this->source)) { | ||||
|         if ($source && !empty($this->source)) { | ||||
|             $xs->elementStart('source'); | ||||
| 	     | ||||
|             $xs->element('id', null, $this->source->id); | ||||
| @@ -559,8 +551,6 @@ class Activity | ||||
|  | ||||
|         $str = $xs->getString(); | ||||
| 	 | ||||
|         $c->set(Cache::codeKey('activity:as-string:'.$this->id), $str); | ||||
| 	 | ||||
|         return $str; | ||||
|     } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user