private $parent = null;
private $conversation = null;
private $redirect_url = null;
+ private $owner_url = '';
+ private $owner_photo = '';
+ private $owner_name = '';
+ private $wall_to_wall = false;
public function __construct($data) {
$a = $this->get_app();
$commentww = '';
$sparkle = '';
- $owner_url = $owner_photo = $owner_name = '';
$buttons = '';
$dropping = false;
$star = false;
$like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : '');
$dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : '');
+ /*
+ * We should avoid doing this all the time, but it depends on the conversation mode
+ * And the conv mode may change when we change the conv, or it changes its mode
+ * Maybe we should establish a way to be notified about conversation changes
+ */
+ $this->check_wall_to_wall();
+ if($this->is_wall_to_wall() && ($this->get_owner_url() == $this->get_redirect_url()))
+ $osparkle = ' sparkle';
+
if($this->is_toplevel()) {
- if((! $item['self']) && ($conv->get_mode() !== 'profile')) {
- if($item['wall']) {
-
- // On the network page, I am the owner. On the display page it will be the profile owner.
- // This will have been stored in $a->page_contact by our calling page.
- // Put this person as the wall owner of the wall-to-wall notice.
-
- $owner_url = zrl($a->page_contact['url']);
- $owner_photo = $a->page_contact['thumb'];
- $owner_name = $a->page_contact['name'];
- $this->set_template('wall2wall');
- $commentww = 'ww';
- }
- }
- else if($item['owner-link']) {
-
- $owner_linkmatch = (($item['owner-link']) && link_compare($item['owner-link'],$item['author-link']));
- $alias_linkmatch = (($item['alias']) && link_compare($item['alias'],$item['author-link']));
- $owner_namematch = (($item['owner-name']) && $item['owner-name'] == $item['author-name']);
- if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) {
-
- // The author url doesn't match the owner (typically the contact)
- // and also doesn't match the contact alias.
- // The name match is a hack to catch several weird cases where URLs are
- // all over the park. It can be tricked, but this prevents you from
- // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn
- // well that it's the same Bob Smith.
-
- // But it could be somebody else with the same name. It just isn't highly likely.
-
-
- $owner_url = $item['owner-link'];
- $owner_photo = $item['owner-avatar'];
- $owner_name = $item['owner-name'];
- $this->set_template('wall2wall');
- $commentww = 'ww';
- // If it is our contact, use a friendly redirect link
- if((link_compare($item['owner-link'],$item['url']))
- && ($item['network'] === NETWORK_DFRN)) {
- $owner_url = $this->get_redirect_url();
- $osparkle = ' sparkle';
- }
- else
- $owner_url = zrl($owner_url);
- }
- }
if($conv->get_profile_owner() == local_user()) {
$isstarred = (($item['starred']) ? "starred" : "unstarred");
'text' => strip_tags(template_escape($body)),
'id' => $this->get_id(),
'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])),
- 'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $owner_name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])),
+ 'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $this->get_owner_name(), ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])),
'to' => t('to'),
'wall' => t('Wall-to-Wall'),
'vwall' => t('via Wall-To-Wall:'),
'lock' => $lock,
'location' => template_escape($location),
'indent' => $indent,
- 'owner_url' => $owner_url,
- 'owner_photo' => $owner_photo,
- 'owner_name' => template_escape($owner_name),
+ 'owner_url' => $this->get_owner_url(),
+ 'owner_photo' => $this->get_owner_photo(),
+ 'owner_name' => template_escape($this->get_owner_name()),
'plink' => get_plink($item),
'edpost' => $edpost,
'isstarred' => $isstarred,
* set conversation
*/
public function set_conversation($conv) {
+ $previous_mode = ($this->conversation ? $this->conversation->get_mode() : '');
+
$this->conversation = $conv;
// Set it on our children too
$comment_box = '';
$conv = $this->get_conversation();
$template = get_markup_template($this->get_comment_box_template());
+ $ww = '';
+ if( ($conv->get_mode() === 'network') && $this->is_wall_to_wall() )
+ $ww = 'ww';
if($conv->is_writeable() && $this->is_writeable()) {
$a = $this->get_app();
private function get_redirect_url() {
return $this->redirect_url;
}
+
+ /**
+ * Check if we are a wall to wall item and set the relevant properties
+ */
+ protected function check_wall_to_wall() {
+ $a = $this->get_app();
+ $conv = $this->get_conversation();
+ $this->wall_to_wall = false;
+
+ if($this->is_toplevel()) {
+ if( (! $this->get_data_value('self')) && ($conv->get_mode() !== 'profile')) {
+ if($this->get_data_value('wall')) {
+
+ // On the network page, I am the owner. On the display page it will be the profile owner.
+ // This will have been stored in $a->page_contact by our calling page.
+ // Put this person as the wall owner of the wall-to-wall notice.
+
+ $this->owner_url = zrl($a->page_contact['url']);
+ $this->owner_photo = $a->page_contact['thumb'];
+ $this->owner_name = $a->page_contact['name'];
+ $this->set_template('wall2wall');
+ $this->wall_to_wall = true;
+ }
+ }
+ else if($this->get_data_value('owner-link')) {
+
+ $owner_linkmatch = (($this->get_data_value('owner-link')) && link_compare($this->get_data_value('owner-link'),$this->get_data_value('author-link')));
+ $alias_linkmatch = (($this->get_data_value('alias')) && link_compare($this->get_data_value('alias'),$this->get_data_value('author-link')));
+ $owner_namematch = (($this->get_data_value('owner-name')) && $this->get_data_value('owner-name') == $this->get_data_value('author-name'));
+ if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) {
+
+ // The author url doesn't match the owner (typically the contact)
+ // and also doesn't match the contact alias.
+ // The name match is a hack to catch several weird cases where URLs are
+ // all over the park. It can be tricked, but this prevents you from
+ // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn
+ // well that it's the same Bob Smith.
+
+ // But it could be somebody else with the same name. It just isn't highly likely.
+
+
+ $this->owner_photo = $this->get_data_value('owner-avatar');
+ $this->owner_name = $this->get_data_value('owner-name');
+ $this->set_template('wall2wall');
+ $this->wall_to_wall = true;
+ // If it is our contact, use a friendly redirect link
+ if((link_compare($this->get_data_value('owner-link'),$this->get_data_value('url')))
+ && ($this->get_data_value('network') === NETWORK_DFRN)) {
+ $this->owner_url = $this->get_redirect_url();
+ }
+ else
+ $this->owner_url = zrl($this->get_data_value('owner-link'));
+ }
+ }
+ }
+
+ if(!$this->wall_to_wall) {
+ $this->set_template('wall');
+ $this->owner_url = '';
+ $this->owner_photo = '';
+ $this->owner_name = '';
+ }
+ }
+
+ private function is_wall_to_wall() {
+ return $this->wall_to_wall;
+ }
+
+ private function get_owner_url() {
+ return $this->owner_url;
+ }
+
+ private function get_owner_photo() {
+ return $this->owner_photo;
+ }
+
+ private function get_owner_name() {
+ return $this->owner_name;
+ }
}
?>