예제 #1
0
 /**
  * Retrieve the table object from the stream item params
  *
  * @since	1.2
  * @access	public
  * @param	string
  * @return
  */
 public function getPhotoFromParams(SocialStreamItem &$item, $privacy = null)
 {
     if (count($item->contextIds) > 0 && $item->verb != 'uploadAvatar' && $item->verb != 'updateCover') {
         $photos = array();
         // We only want to get a maximum of 5 photos if we have more than 1 photo to show.
         $ids = array_reverse($item->contextIds);
         $i = 0;
         foreach ($ids as $id) {
             if ($i >= 5) {
                 break;
             }
             $photo = Foundry::table('Photo');
             $raw = isset($item->contextParams[$id]) ? $item->contextParams[$id] : '';
             if ($raw) {
                 $obj = Foundry::json()->decode($raw);
                 $photo->bind($obj);
                 if (!$photo->id) {
                     $photo->load($id);
                 }
             } else {
                 $photo->load($id);
             }
             // Determine if the user can view this photo or not.
             if (!$item->cluster_id && $privacy->validate('photos.view', $photo->id, SOCIAL_TYPE_PHOTO, $item->actor->id)) {
                 $photos[] = $photo;
             } else {
                 if ($item->cluster_id) {
                     $photos[] = $photo;
                 }
             }
             $i++;
         }
         return $photos;
     }
     // Load up the photo object
     $photo = Foundry::table('Photo');
     // Get the context id.
     $id = $item->contextId;
     $raw = isset($item->contextParams[$id]) ? $item->contextParams[$id] : '';
     if ($raw) {
         $obj = Foundry::json()->decode($raw);
         $photo->bind($obj);
         if (!$photo->id) {
             $photo->load($id);
         }
         return $photo;
     }
     $photo->load($id);
     return $photo;
 }