]> git.mxchange.org Git - friendica.git/blob - mod/display.php
2c9243a217b48211cbcbf00c015b2406bf2d0a3d
[friendica.git] / mod / display.php
1 <?php
2
3
4 function display_init(&$a) {
5
6         if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
7                 return;
8         }
9
10         $nick = (($a->argc > 1) ? $a->argv[1] : '');
11         profile_load($a,$nick);
12
13 }
14
15
16 function display_content(&$a, $update = 0) {
17
18         if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
19                 notice( t('Public access denied.') . EOL);
20                 return;
21         }
22
23         require_once("include/bbcode.php");
24         require_once('include/security.php');
25         require_once('include/conversation.php');
26         require_once('include/acl_selectors.php');
27
28
29         $o = '';
30
31         $a->page['htmlhead'] .= replace_macros(get_markup_template('display-head.tpl'), array());
32
33
34         if($update) {
35                 $nick = $_REQUEST['nick'];
36         }
37         else {
38                 $nick = (($a->argc > 1) ? $a->argv[1] : '');
39         }
40
41         if($update) {
42                 $item_id = $_REQUEST['item_id'];
43                 $a->profile = array('uid' => intval($update), 'profile_uid' => intval($update));
44         }
45         else {
46                 $item_id = (($a->argc > 2) ? intval($a->argv[2]) : 0);
47         }
48
49         if(! $item_id) {
50                 $a->error = 404;
51                 notice( t('Item not found.') . EOL);
52                 return;
53         }
54
55         $groups = array();
56
57         $contact = null;
58         $remote_contact = false;
59
60         $contact_id = 0;
61
62         if(is_array($_SESSION['remote'])) {
63                 foreach($_SESSION['remote'] as $v) {
64                         if($v['uid'] == $a->profile['uid']) {
65                                 $contact_id = $v['cid'];
66                                 break;
67                         }
68                 }
69         }
70
71         if($contact_id) {
72                 $groups = init_groups_visitor($contact_id);
73                 $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
74                         intval($contact_id),
75                         intval($a->profile['uid'])
76                 );
77                 if(count($r)) {
78                         $contact = $r[0];
79                         $remote_contact = true;
80                 }
81         }
82
83         if(! $remote_contact) {
84                 if(local_user()) {
85                         $contact_id = $_SESSION['cid'];
86                         $contact = $a->contact;
87                 }
88         }
89
90         $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
91                 intval($a->profile['uid'])
92         );
93         if(count($r))
94                 $a->page_contact = $r[0];
95
96         $is_owner = ((local_user()) && (local_user() == $a->profile['profile_uid']) ? true : false);
97
98         if($a->profile['hidewall'] && (! $is_owner) && (! $remote_contact)) {
99                 notice( t('Access to this profile has been restricted.') . EOL);
100                 return;
101         }
102         
103         if ($is_owner) {
104                 $celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false);
105
106                 $x = array(
107                         'is_owner' => true,
108                         'allow_location' => $a->user['allow_location'],
109                         'default_location' => $a->user['default-location'],
110                         'nickname' => $a->user['nickname'],
111                         'lockstate' => ( (is_array($a->user)) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))) ? 'lock' : 'unlock'),
112                         'acl' => populate_acl($a->user, $celeb),
113                         'bang' => '',
114                         'visitor' => 'block',
115                         'profile_uid' => local_user(),
116                         'acl_data' => construct_acl_data($a, $a->user), // For non-Javascript ACL selector
117                 );
118                 $o .= status_editor($a,$x,0,true);
119         }
120
121         $sql_extra = item_permissions_sql($a->profile['uid'],$remote_contact,$groups);
122
123         if($update) {
124
125 dbg(1);
126                 $r = q("SELECT id FROM item WHERE item.uid = %d
127                         AND `item`.`parent` = ( SELECT `parent` FROM `item` WHERE ( `id` = '%s' OR `uri` = '%s' ))
128                         $sql_extra AND unseen = 1",
129                         intval($a->profile['uid']),
130                         dbesc($item_id),
131                         dbesc($item_id) 
132                 );
133 dbg(0);
134                 if(!$r)
135                         return '';
136         }
137
138         $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, 
139                 `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
140                 `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, 
141                 `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
142                 FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
143                 WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
144                 and `item`.`moderated` = 0
145                 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
146                 AND `item`.`parent` = ( SELECT `parent` FROM `item` WHERE ( `id` = '%s' OR `uri` = '%s' ))
147                 $sql_extra
148                 ORDER BY `parent` DESC, `gravity` ASC, `id` ASC ",
149                 intval($a->profile['uid']),
150                 dbesc($item_id),
151                 dbesc($item_id)
152         );
153
154
155         if(count($r)) {
156
157                 if((local_user()) && (local_user() == $a->profile['uid'])) {
158                         q("UPDATE `item` SET `unseen` = 0 
159                                 WHERE `parent` = %d AND `unseen` = 1",
160                                 intval($r[0]['parent'])
161                         );
162                 }
163
164                 $items = conv_sort($r,"`commented`");
165
166                 if(!$update)
167                         $o .= "<script> var netargs = '?f=&nick=" . $nick . "&item_id=" . $item_id . "'; </script>";
168                 $o .= conversation($a,$items,'display', $update);
169
170         }
171         else {
172                 $r = q("SELECT `id`,`deleted` FROM `item` WHERE `id` = '%s' OR `uri` = '%s' LIMIT 1",
173                         dbesc($item_id),
174                         dbesc($item_id)
175                 );
176                 if(count($r)) {
177                         if($r[0]['deleted']) {
178                                 notice( t('Item has been removed.') . EOL );
179                         }
180                         else {  
181                                 notice( t('Permission denied.') . EOL ); 
182                         }
183                 }
184                 else {
185                         notice( t('Item not found.') . EOL );
186                 }
187
188         }
189
190         return $o;
191 }
192