From d8f16442a1ca7d0be18dedd52c0f4eb339ba19b6 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 4 Feb 2014 00:52:34 -0800 Subject: bookmark permissions --- include/permissions.php | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/permissions.php b/include/permissions.php index 1b11dfb87..060ed841c 100644 --- a/include/permissions.php +++ b/include/permissions.php @@ -29,6 +29,7 @@ function get_perms() { 'write_pages' => array('channel_w_pages', intval(PERMS_W_PAGES), false, t('Can edit my "public" pages'), ''), 'republish' => array('channel_a_republish', intval(PERMS_A_REPUBLISH), false, t('Can source my "public" posts in derived channels'), t('Somewhat advanced - very useful in open communities')), + 'bookmark' => array('channel_a_bookmark', intval(PERMS_A_BOOKMARK), false, t('Can send me bookmarks'), ''), 'delegate' => array('channel_a_delegate', intval(PERMS_A_DELEGATE), false, t('Can administer my channel resources'), t('Extremely advanced. Leave this alone unless you know what you are doing')), ); $ret = array('global_permissions' => $global_perms); -- cgit v1.2.3 From 46b9352a84a684d3e419604824f99105bea1272f Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 4 Feb 2014 01:42:43 -0800 Subject: fix the search for system bookmarks --- include/menu.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/menu.php b/include/menu.php index be9831951..7522f69a3 100644 --- a/include/menu.php +++ b/include/menu.php @@ -75,7 +75,6 @@ function menu_create($arr) { $r = q("select * from menu where menu_name = '%s' and menu_channel_id = %d limit 1", dbesc($menu_name), intval($menu_channel_id), - intval($menu_flags) ); if($r) @@ -101,9 +100,15 @@ function menu_create($arr) { } +/** + * If $flags is present, check that all the bits in $flags are set + * so that MENU_SYSTEM|MENU_BOOKMARK will return entries with both + * bits set. We will use this to find system generated bookmarks. + */ + function menu_list($channel_id, $flags = 0) { - $sel_options = (($flags) ? " and ( menu_flags & " . intval($flags) . " ) " : ''); + $sel_options = (($flags) ? " and ( menu_flags & " . intval($flags) . " ) = " . intval($flags) . " " : ''); $r = q("select * from menu where menu_channel_id = %d $sel_options order by menu_name", intval($channel_id) @@ -204,7 +209,8 @@ function menu_add_item($menu_id, $uid, $arr) { $channel = get_app()->get_channel(); } - if ((! $arr['contact_allow']) + if (($channel) + && (! $arr['contact_allow']) && (! $arr['group_allow']) && (! $arr['contact_deny']) && (! $arr['group_deny'])) { -- cgit v1.2.3 From 3665bc38ef15137c7d36a12aa13a44c4d0304547 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 4 Feb 2014 16:06:56 -0800 Subject: bookmarking --- include/bookmarks.php | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ include/items.php | 15 ++++++++++++++ include/menu.php | 27 ++++++++++++++----------- include/permissions.php | 2 +- 4 files changed, 84 insertions(+), 13 deletions(-) create mode 100644 include/bookmarks.php (limited to 'include') diff --git a/include/bookmarks.php b/include/bookmarks.php new file mode 100644 index 000000000..62ec9fcab --- /dev/null +++ b/include/bookmarks.php @@ -0,0 +1,53 @@ + $menu['menu'], @@ -74,7 +75,7 @@ function menu_create($arr) { $r = q("select * from menu where menu_name = '%s' and menu_channel_id = %d limit 1", dbesc($menu_name), - intval($menu_channel_id), + intval($menu_channel_id) ); if($r) @@ -106,9 +107,11 @@ function menu_create($arr) { * bits set. We will use this to find system generated bookmarks. */ -function menu_list($channel_id, $flags = 0) { +function menu_list($channel_id, $name = '', $flags = 0) { - $sel_options = (($flags) ? " and ( menu_flags & " . intval($flags) . " ) = " . intval($flags) . " " : ''); + $sel_options = ''; + $sel_options .= (($name) ? " and name = '" . protect_sprintf(dbesc($name)) . "' " : ''); + $sel_options .= (($flags) ? " and menu_flags = " . intval($flags) . " " : ''); $r = q("select * from menu where menu_channel_id = %d $sel_options order by menu_name", intval($channel_id) @@ -229,11 +232,11 @@ function menu_add_item($menu_id, $uid, $arr) { $str_contact_deny = perms2str($arr['contact_deny']); } - - $allow_cid = perms2str($arr['allow_cid']); - $allow_gid = perms2str($arr['allow_gid']); - $deny_cid = perms2str($arr['deny_cid']); - $deny_gid = perms2str($arr['deny_gid']); +// unused +// $allow_cid = perms2str($arr['allow_cid']); +// $allow_gid = perms2str($arr['allow_gid']); +// $deny_cid = perms2str($arr['deny_cid']); +// $deny_gid = perms2str($arr['deny_gid']); $r = q("insert into menu_item ( mitem_link, mitem_desc, mitem_flags, allow_cid, allow_gid, deny_cid, deny_gid, mitem_channel_id, mitem_menu_id, mitem_order ) values ( '%s', '%s', %d, '%s', '%s', '%s', '%s', %d, %d, %d ) ", dbesc($mitem_link), diff --git a/include/permissions.php b/include/permissions.php index 060ed841c..420591c54 100644 --- a/include/permissions.php +++ b/include/permissions.php @@ -29,7 +29,7 @@ function get_perms() { 'write_pages' => array('channel_w_pages', intval(PERMS_W_PAGES), false, t('Can edit my "public" pages'), ''), 'republish' => array('channel_a_republish', intval(PERMS_A_REPUBLISH), false, t('Can source my "public" posts in derived channels'), t('Somewhat advanced - very useful in open communities')), - 'bookmark' => array('channel_a_bookmark', intval(PERMS_A_BOOKMARK), false, t('Can send me bookmarks'), ''), + 'bookmark' => array('channel_a_bookmark', intval(PERMS_A_BOOKMARK), false, t('Can send me bookmarks'), 'Bookmarks from this person will automatically be saved'), 'delegate' => array('channel_a_delegate', intval(PERMS_A_DELEGATE), false, t('Can administer my channel resources'), t('Extremely advanced. Leave this alone unless you know what you are doing')), ); $ret = array('global_permissions' => $global_perms); -- cgit v1.2.3 From aede006970fb9124161b4732b9f44002a35d17ef Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 4 Feb 2014 17:12:13 -0800 Subject: bookmarks - mop up and go home --- include/ItemObject.php | 10 ++++++++++ include/bookmarks.php | 2 +- include/conversation.php | 8 ++++++++ include/menu.php | 2 +- 4 files changed, 20 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/ItemObject.php b/include/ItemObject.php index e9a0b65c0..9b1a6fbcd 100644 --- a/include/ItemObject.php +++ b/include/ItemObject.php @@ -171,6 +171,15 @@ class Item extends BaseObject { ); } + $has_bookmarks = false; + if(is_array($item['term'])) { + foreach($item['term'] as $t) { + if($t['type'] == TERM_BOOKMARK) + $has_bookmarks = true; + } + } + + if($this->is_commentable()) { $like = array( t("I like this \x28toggle\x29"), t("like")); $dislike = array( t("I don't like this \x28toggle\x29"), t("dislike")); @@ -237,6 +246,7 @@ class Item extends BaseObject { 'star' => ((feature_enabled($conv->get_profile_owner(),'star_posts')) ? $star : ''), 'tagger' => ((feature_enabled($conv->get_profile_owner(),'commtag')) ? $tagger : ''), 'filer' => ((feature_enabled($conv->get_profile_owner(),'filing')) ? $filer : ''), + 'bookmark' => (($conv->get_profile_owner() == local_user() && $has_bookmarks) ? t('Bookmark Links') : ''), 'drop' => $drop, 'multidrop' => ((feature_enabled($conv->get_profile_owner(),'multi_delete')) ? $multidrop : ''), // end toolbar buttons diff --git a/include/bookmarks.php b/include/bookmarks.php index 62ec9fcab..3ca8ee1c1 100644 --- a/include/bookmarks.php +++ b/include/bookmarks.php @@ -29,7 +29,7 @@ function bookmark_add($channel,$sender,$taxonomy,$private) { $arr = array(); $arr['menu_name'] = substr($sender['xchan_hash'],0,16) . ' ' . $sender['xchan_name']; $arr['menu_desc'] = sprintf( t('%1$s\'s bookmarks'), $sender['xchan_name']); - $arr['menu_flags'] = MENU_SYSTEM|MENU_BOOKMARK; + $arr['menu_flags'] = (($sender['xchan_hash'] === $channel['channel_hash']) ? MENU_BOOKMARK : MENU_SYSTEM|MENU_BOOKMARK); $arr['menu_channel_id'] = $channel_id; $x = menu_list($arr['menu_channel_id'],$arr['menu_name'],$arr['menu_flags']); diff --git a/include/conversation.php b/include/conversation.php index 316bc1612..633435871 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1496,6 +1496,14 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){ 'title' => t('Events and Calendar'), 'id' => 'events-tab', ); + + $tabs[] = array( + 'label' => t('Bookmarks'), + 'url' => $a->get_baseurl() . '/bookmarks', + 'sel' => ((argv(0) == 'bookmarks') ? 'active' : ''), + 'title' => t('Saved Bookmarks'), + 'id' => 'bookmarks-tab', + ); } if($is_owner && feature_enabled($a->profile['profile_uid'],'webpages')) { diff --git a/include/menu.php b/include/menu.php index e5bd4a680..105e4216b 100644 --- a/include/menu.php +++ b/include/menu.php @@ -110,7 +110,7 @@ function menu_create($arr) { function menu_list($channel_id, $name = '', $flags = 0) { $sel_options = ''; - $sel_options .= (($name) ? " and name = '" . protect_sprintf(dbesc($name)) . "' " : ''); + $sel_options .= (($name) ? " and menu_name = '" . protect_sprintf(dbesc($name)) . "' " : ''); $sel_options .= (($flags) ? " and menu_flags = " . intval($flags) . " " : ''); $r = q("select * from menu where menu_channel_id = %d $sel_options order by menu_name", -- cgit v1.2.3 From 8a11c2941395bdd325ac076bd22ad011fe41f3c7 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 4 Feb 2014 19:39:56 -0800 Subject: make links in comments bookmark-able --- include/bookmarks.php | 4 ++++ include/text.php | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/bookmarks.php b/include/bookmarks.php index 3ca8ee1c1..3a4c5c5d6 100644 --- a/include/bookmarks.php +++ b/include/bookmarks.php @@ -7,6 +7,10 @@ function bookmark_add($channel,$sender,$taxonomy,$private) { $iarr = array(); $channel_id = $channel['channel_id']; + + + + if($private) $iarr['contact_allow'] = array($channel['channel_hash']); $iarr['mitem_link'] = $taxonomy['url']; diff --git a/include/text.php b/include/text.php index dc7d94b6d..266d8952b 100755 --- a/include/text.php +++ b/include/text.php @@ -604,7 +604,7 @@ function get_tags($s) { // bookmarks - if(preg_match_all('/#\^\[(url|zrl)=(.*?)\](.*?)\[\/(url|zrl)\]/',$s,$match,PREG_SET_ORDER)) { + if(preg_match_all('/#\^\[(url|zrl)(.*?)\](.*?)\[\/(url|zrl)\]/',$s,$match,PREG_SET_ORDER)) { foreach($match as $mtch) { $ret[] = $mtch[0]; } -- cgit v1.2.3 From f30a39f9df5dc0cc70a9cb9befe87a8723c75721 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 5 Feb 2014 03:15:10 -0800 Subject: bookmark debug logging --- include/bookmarks.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/bookmarks.php b/include/bookmarks.php index 3a4c5c5d6..7a9f40697 100644 --- a/include/bookmarks.php +++ b/include/bookmarks.php @@ -7,10 +7,6 @@ function bookmark_add($channel,$sender,$taxonomy,$private) { $iarr = array(); $channel_id = $channel['channel_id']; - - - - if($private) $iarr['contact_allow'] = array($channel['channel_hash']); $iarr['mitem_link'] = $taxonomy['url']; @@ -45,12 +41,14 @@ function bookmark_add($channel,$sender,$taxonomy,$private) { logger('bookmark_add: unable to create menu ' . $arr['menu_name']); return; } - + logger('add_bookmark: menu_id ' . $menu_id); $r = q("select * from menu_item where mitem_link = '%s' and mitem_menu_id = %d and mitem_channel_id = %d limit 1", dbesc($iarr['mitem_link']), intval($menu_id), intval($channel_id) ); + if($r) + logger('duplicate menu entry'); if(! $r) $r = menu_add_item($menu_id,$channel_id,$iarr); return $r; -- cgit v1.2.3 From 24f32e55c88311867218c1d93c808cd842453078 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 5 Feb 2014 03:29:02 -0800 Subject: bookmarking bugfix --- include/bookmarks.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/bookmarks.php b/include/bookmarks.php index 7a9f40697..99cb60e64 100644 --- a/include/bookmarks.php +++ b/include/bookmarks.php @@ -48,7 +48,7 @@ function bookmark_add($channel,$sender,$taxonomy,$private) { intval($channel_id) ); if($r) - logger('duplicate menu entry'); + logger('add_bookmark: duplicate menu entry', LOGGER_DEBUG); if(! $r) $r = menu_add_item($menu_id,$channel_id,$iarr); return $r; -- cgit v1.2.3