aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Macgirvin <mike@macgirvin.com>2010-07-11 23:10:52 -0700
committerMike Macgirvin <mike@macgirvin.com>2010-07-11 23:10:52 -0700
commit4e40156607aede8d1ed9bd63b18bc6c83ea572d7 (patch)
tree25e2cd83b9a2394de49cfe673fb164e149cc65c2
parent8e22178b8a135ccc315de1c9f305e81d97556709 (diff)
downloadvolse-hubzilla-4e40156607aede8d1ed9bd63b18bc6c83ea572d7.tar.gz
volse-hubzilla-4e40156607aede8d1ed9bd63b18bc6c83ea572d7.tar.bz2
volse-hubzilla-4e40156607aede8d1ed9bd63b18bc6c83ea572d7.zip
sort out some permissions, comments, fetch
-rw-r--r--mod/profile.php112
-rw-r--r--update.sql2
-rw-r--r--view/comment_item.tpl2
-rw-r--r--view/style.css4
-rw-r--r--view/wall_item.tpl4
5 files changed, 90 insertions, 34 deletions
diff --git a/mod/profile.php b/mod/profile.php
index 0e9bb6ff6..832618c91 100644
--- a/mod/profile.php
+++ b/mod/profile.php
@@ -84,6 +84,7 @@ function item_display(&$a, $item,$template,$comment) {
'$thumb' => $thumb,
'$body' => bbcode($item['body']),
'$ago' => relative_date($item['created']),
+ '$indent' => (($item['parent'] != $item['item_id']) ? 'comment-' : ''),
'$comment' => $comment
));
@@ -92,12 +93,13 @@ function item_display(&$a, $item,$template,$comment) {
}
-
function profile_content(&$a) {
require_once("include/bbcode.php");
require_once('include/security.php');
+ $groups = array();
+
$tab = 'posts';
if(x($_GET,'tab'))
@@ -110,8 +112,10 @@ function profile_content(&$a) {
));
- if(remote_user())
+ if(remote_user()) {
$contact_id = $_SESSION['visitor_id'];
+ $groups = init_groups_visitor($contact_id);
+ }
if(local_user()) {
$r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
$_SESSION['uid']
@@ -139,50 +143,96 @@ function profile_content(&$a) {
}
- if($a->profile['is-default']) {
+dbg(2);
+
+ // TODO
+ // Alter registration and settings
+ // and profile to update contact table when names and photos change.
+ // work on item_display and can_write_wall
+
+ // Add comments.
+
+ // default - anonymous user
+
+ $sql_extra = " AND `allow_cid` = '' AND `allow_gid` = '' AND `deny_cid` = '' AND `deny_gid` = '' ";
+
+ // Profile owner - everything is visible
- // TODO left join with contact which will carry names and photos. (done)Store local users in contact as well as user.(done)
- // Alter registration and settings
- // and profile to update contact table when names and photos change.
- // work on item_display and can_write_wall
+ if(local_user() && ($_SESSION['uid'] == $a->profile['profile_uid']))
+ $sql_extra = '';
- // Add comments.
+ // authenticated visitor - here lie dragons
- $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, `contact`.`id` AS `cid`,
- `contact`.`uid` AS `contact-uid`
- FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
- WHERE `item`.`uid` = %d AND `item`.`visible` = 1
- AND `contact`.`blocked` = 0
- AND `allow_uid` = '' AND `allow_gid` = '' AND `deny_uid` = '' AND `deny_gid` = ''
- GROUP BY `item`.`parent`, `item`.`id`
- ORDER BY `created` DESC LIMIT 0,30 ",
- intval($a->profile['uid'])
+ elseif(remote_user()) {
+ $gs = '<<>>'; // should be impossible to match
+ if(count($groups)) {
+ foreach($groups as $g)
+ $gs .= '|<' . dbesc($g) . '>';
+ }
+ $sql_extra = sprintf(
+ " AND ( `allow_cid` = '' OR `allow_cid` REGEXP '<%d>' )
+ AND ( `deny_cid` = '' OR NOT `deny_cid` REGEXP '<%d>' )
+ AND ( `allow_gid` = '' OR `allow_gid` REGEXP '%s' )
+ AND ( `deny_gid` = '' OR NOT `deny_gid` REGEXP '%s') ",
+
+ intval($visitor_id),
+ intval($visitor_id),
+ $gs,
+ $gs
);
+ }
- $template = file_get_contents('view/comment_item.tpl');
+ $r = q("SELECT COUNT(*) AS `total`
+ FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+ WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
+ AND `contact`.`blocked` = 0
+ $sql_extra ",
+ intval($a->profile['uid'])
+ );
+ if(count($r))
+ $a->set_pager_total($r[0]['total']);
- $tpl = file_get_contents('view/wall_item.tpl');
+ $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
+ `contact`.`name`, `contact`.`photo`, `contact`.`url`,
+ `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
+ `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
+ FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+ WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
+ AND `contact`.`blocked` = 0
+ $sql_extra
+ ORDER BY `parent` DESC, `id` ASC LIMIT %d ,%d ",
+ intval($a->profile['uid']),
+ intval($a->pager['start']),
+ intval($a->pager['itemspage'])
+
+ );
- if(count($r)) {
- foreach($r as $rr) {
- if(can_write_wall($a,$a->profile['profile_uid'])) {
- $comment = replace_macros($template,array(
- '$id' => $rr['item_id'],
- '$profile_uid' => $a->profile['profile_uid']
- ));
- }
- else {
- $comment = '';
- }
- $o .= item_display($a,$rr,$tpl,$comment);
+ $template = file_get_contents('view/comment_item.tpl');
+
+
+ $tpl = file_get_contents('view/wall_item.tpl');
+ if(count($r)) {
+ foreach($r as $rr) {
+ if(can_write_wall($a,$a->profile['profile_uid'])) {
+ $comment = replace_macros($template,array(
+ '$id' => $rr['item_id'],
+ '$parent' => $rr['parent'],
+ '$profile_uid' => $a->profile['profile_uid']
+ ));
}
+ else {
+ $comment = '';
+ }
+ $o .= item_display($a,$rr,$tpl,$comment);
}
}
+ $o .= paginate($a);
+
return $o;
diff --git a/update.sql b/update.sql
new file mode 100644
index 000000000..9b5a881d7
--- /dev/null
+++ b/update.sql
@@ -0,0 +1,2 @@
+ ALTER TABLE `item` CHANGE `allow_uid` `allow_cid` MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
+CHANGE `deny_uid` `deny_cid` MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;
diff --git a/view/comment_item.tpl b/view/comment_item.tpl
index ed788ad08..3ca190ba5 100644
--- a/view/comment_item.tpl
+++ b/view/comment_item.tpl
@@ -4,7 +4,7 @@
<form class="comment-edit-form" id="comment-edit-form-$id" action="item" method="post" >
<input type="hidden" name="type" value="jot" />
<input type="hidden" name="profile_uid" value="$profile_uid" />
- <input type="hidden" name="parent" value="$id" />
+ <input type="hidden" name="parent" value="$parent" />
<textarea rows="3" cols="40" id="comment-edit-text-$id" name="body" ></textarea>
diff --git a/view/style.css b/view/style.css
index ccf58c72f..a2089aab2 100644
--- a/view/style.css
+++ b/view/style.css
@@ -416,6 +416,10 @@ input#dfrn-url {
clear: both;
}
+.wall-item-comment-outside-wrapper {
+ margin-left: 50px;
+}
+
.wall-item-photo-wrapper {
margin-top: 20px;
width: 100px;
diff --git a/view/wall_item.tpl b/view/wall_item.tpl
index ece149c1f..e483d74db 100644
--- a/view/wall_item.tpl
+++ b/view/wall_item.tpl
@@ -1,4 +1,4 @@
-<div class="wall-item-outside-wrapper" id="wall-item-outside-wrapper-$id" >
+<div class="wall-item-$indentoutside-wrapper" id="wall-item-outside-wrapper-$id" >
<div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id" >
<a href="$profile_url" title="View $name's profile" class="wall-item-photo-link" id="wall-item-photo-link-$id">
<img src="$thumb" class="wall-item-photo" id="wall-item-photo-$id" height="80" width="80" alt="$name" /></a>
@@ -13,5 +13,5 @@ $comment
</div>
<div class="wall-item-wrapper-end"></div>
</div>
-<div class="wall-item-outside-wrapper-end" ></div>
+<div class="wall-item-$indentoutside-wrapper-end" ></div>