/** * 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; }