Item: new methods check_wall_to_wall, is_wall_to_wall, get_owner_url, get_owner_photo, get_owner_name
This commit is contained in:
parent
c8cf87efc4
commit
b1a801fe61
152
object/Item.php
152
object/Item.php
|
@ -23,6 +23,10 @@ class Item extends BaseObject {
|
||||||
private $parent = null;
|
private $parent = null;
|
||||||
private $conversation = null;
|
private $conversation = null;
|
||||||
private $redirect_url = null;
|
private $redirect_url = null;
|
||||||
|
private $owner_url = '';
|
||||||
|
private $owner_photo = '';
|
||||||
|
private $owner_name = '';
|
||||||
|
private $wall_to_wall = false;
|
||||||
|
|
||||||
public function __construct($data) {
|
public function __construct($data) {
|
||||||
$a = $this->get_app();
|
$a = $this->get_app();
|
||||||
|
@ -60,7 +64,6 @@ class Item extends BaseObject {
|
||||||
|
|
||||||
$commentww = '';
|
$commentww = '';
|
||||||
$sparkle = '';
|
$sparkle = '';
|
||||||
$owner_url = $owner_photo = $owner_name = '';
|
|
||||||
$buttons = '';
|
$buttons = '';
|
||||||
$dropping = false;
|
$dropping = false;
|
||||||
$star = false;
|
$star = false;
|
||||||
|
@ -124,53 +127,16 @@ class Item extends BaseObject {
|
||||||
$like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : '');
|
$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']) : '');
|
$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($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()) {
|
if($conv->get_profile_owner() == local_user()) {
|
||||||
$isstarred = (($item['starred']) ? "starred" : "unstarred");
|
$isstarred = (($item['starred']) ? "starred" : "unstarred");
|
||||||
|
|
||||||
|
@ -214,7 +180,7 @@ class Item extends BaseObject {
|
||||||
'text' => strip_tags(template_escape($body)),
|
'text' => strip_tags(template_escape($body)),
|
||||||
'id' => $this->get_id(),
|
'id' => $this->get_id(),
|
||||||
'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])),
|
'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'),
|
'to' => t('to'),
|
||||||
'wall' => t('Wall-to-Wall'),
|
'wall' => t('Wall-to-Wall'),
|
||||||
'vwall' => t('via Wall-To-Wall:'),
|
'vwall' => t('via Wall-To-Wall:'),
|
||||||
|
@ -229,9 +195,9 @@ class Item extends BaseObject {
|
||||||
'lock' => $lock,
|
'lock' => $lock,
|
||||||
'location' => template_escape($location),
|
'location' => template_escape($location),
|
||||||
'indent' => $indent,
|
'indent' => $indent,
|
||||||
'owner_url' => $owner_url,
|
'owner_url' => $this->get_owner_url(),
|
||||||
'owner_photo' => $owner_photo,
|
'owner_photo' => $this->get_owner_photo(),
|
||||||
'owner_name' => template_escape($owner_name),
|
'owner_name' => template_escape($this->get_owner_name()),
|
||||||
'plink' => get_plink($item),
|
'plink' => get_plink($item),
|
||||||
'edpost' => $edpost,
|
'edpost' => $edpost,
|
||||||
'isstarred' => $isstarred,
|
'isstarred' => $isstarred,
|
||||||
|
@ -376,6 +342,8 @@ class Item extends BaseObject {
|
||||||
* set conversation
|
* set conversation
|
||||||
*/
|
*/
|
||||||
public function set_conversation($conv) {
|
public function set_conversation($conv) {
|
||||||
|
$previous_mode = ($this->conversation ? $this->conversation->get_mode() : '');
|
||||||
|
|
||||||
$this->conversation = $conv;
|
$this->conversation = $conv;
|
||||||
|
|
||||||
// Set it on our children too
|
// Set it on our children too
|
||||||
|
@ -483,6 +451,9 @@ class Item extends BaseObject {
|
||||||
$comment_box = '';
|
$comment_box = '';
|
||||||
$conv = $this->get_conversation();
|
$conv = $this->get_conversation();
|
||||||
$template = get_markup_template($this->get_comment_box_template());
|
$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()) {
|
if($conv->is_writeable() && $this->is_writeable()) {
|
||||||
$a = $this->get_app();
|
$a = $this->get_app();
|
||||||
|
@ -529,5 +500,84 @@ class Item extends BaseObject {
|
||||||
private function get_redirect_url() {
|
private function get_redirect_url() {
|
||||||
return $this->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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Reference in a new issue