From fd3274ff5342491e9cec4fe9c628bfccfeeaa517 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Thu, 23 Feb 2012 16:17:36 +0100 Subject: [PATCH 001/165] less html in mod/group.php, template for group members editor, quattro theme for group edit. --- mod/group.php | 82 ++++++++++++++++----------------- view/group_edit.tpl | 30 ++++++------ view/group_new.tpl | 23 --------- view/groupeditor.tpl | 16 +++++++ view/theme/quattro/colors.less | 2 + view/theme/quattro/quattro.less | 27 ++++++++++- view/theme/quattro/style.css | 33 ++++++++++++- 7 files changed, 133 insertions(+), 80 deletions(-) delete mode 100755 view/group_new.tpl create mode 100644 view/groupeditor.tpl diff --git a/mod/group.php b/mod/group.php index c896362ca2..f6f8e41733 100755 --- a/mod/group.php +++ b/mod/group.php @@ -76,14 +76,17 @@ function group_content(&$a) { if($switchtotext === false) $switchtotext = 400; + $tpl = get_markup_template('group_edit.tpl'); + $context = array('$submit' => t('Submit')); + if(($a->argc == 2) && ($a->argv[1] === 'new')) { - $tpl = get_markup_template('group_new.tpl'); - $o .= replace_macros($tpl,array( - '$desc' => t('Create a group of contacts/friends.'), - '$name' => t('Group Name: '), - '$submit' => t('Submit') - )); - return $o; + + return replace_macros($tpl, $context + array( + '$title' => t('Create a group of contacts/friends.'), + '$gname' => array('groupname',t('Group Name: '),$group['name'], ''), + )); + + } if(($a->argc == 3) && ($a->argv[1] === 'drop')) { @@ -156,66 +159,61 @@ function group_content(&$a) { $celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false); - $tpl = get_markup_template('group_edit.tpl'); - $o .= replace_macros($tpl, array( - '$gid' => $group['id'], - '$name' => $group['name'], - '$drop' => $drop_txt, - '$desc' => t('Click on a contact to add or remove.'), + + $context = $context + array( '$title' => t('Group Editor'), - '$gname' => t('Group Name: '), - '$submit' => t('Submit') - )); + '$gname' => array('groupname',t('Group Name: '),$group['name'], ''), + '$gid' => $group['id'], + '$drop' => $drop_txt, + ); } if(! isset($group)) return; - $o .= '
'; - if($change) - $o = ''; + $groupeditor = array( + 'label_members' => t('Members'), + 'members' => array(), + 'label_contacts' => t('All Contacts'), + 'contacts' => arraY(), + ); + - $o .= '

' . t('Members') . '

'; - $o .= '
'; $textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false); foreach($members as $member) { if($member['url']) { $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;'; - $o .= micropro($member,true,'mpgroup', $textmode); + $groupeditor['members'][] = micropro($member,true,'mpgroup', $textmode); } else group_rmv_member(local_user(),$group['name'],$member['id']); } - $o .= '
'; - $o .= '
'; - - $o .= '

' . t('All Contacts') . '

'; - $o .= '
'; + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0 ORDER BY `name` ASC", + intval(local_user()) + ); - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0 ORDER BY `name` ASC", - intval(local_user()) - ); - - if(count($r)) { - $textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : false); - foreach($r as $member) { - if(! in_array($member['id'],$preselected)) { - $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;'; - $o .= micropro($member,true,'mpall', $textmode); - } + if(count($r)) { + $textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : false); + foreach($r as $member) { + if(! in_array($member['id'],$preselected)) { + $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;'; + $groupeditor['contacts'][] = micropro($member,true,'mpall', $textmode); } } + } - $o .= '
'; + $context['$groupeditor'] = $groupeditor; + $context['$desc'] = t('Click on a contact to add or remove.'); if($change) { - echo $o; + $tpl = get_markup_template('groupeditor.tpl'); + echo replace_macros($tpl, $context); killme(); } - $o .= '
'; - return $o; + + return replace_macros($tpl, $context); } diff --git a/view/group_edit.tpl b/view/group_edit.tpl index 51782ab952..3689db7535 100755 --- a/view/group_edit.tpl +++ b/view/group_edit.tpl @@ -2,17 +2,21 @@
-
-
- - -
-
-$drop -
- -
-
$desc
-
-
+
+ + {{ inc field_input.tpl with $field=$gname }}{{ endinc }} + {{ if $drop }}$drop{{ endif }} +
+ +
+
+
+ + +{{ if $groupeditor }} +
+ {{ inc groupeditor.tpl }}{{ endinc }} +
+{{ endif }} +{{ if $desc }}
$desc
{{ endif }} diff --git a/view/group_new.tpl b/view/group_new.tpl deleted file mode 100755 index 735b51634d..0000000000 --- a/view/group_new.tpl +++ /dev/null @@ -1,23 +0,0 @@ - - - -
-
- -
-

-$desc - -

- - -
-
- -
- - -
-
- - \ No newline at end of file diff --git a/view/groupeditor.tpl b/view/groupeditor.tpl new file mode 100644 index 0000000000..aa3853375b --- /dev/null +++ b/view/groupeditor.tpl @@ -0,0 +1,16 @@ +
+

$groupeditor.label_members

+
+{{ for $groupeditor.contacts as $c}} $c {{ endfor }} +
+
+
+
+ +
+

$groupeditor.label_contacts

+
+{{ for $groupeditor.members as $m}} $m {{ endfor }} +
+
+
diff --git a/view/theme/quattro/colors.less b/view/theme/quattro/colors.less index 18d0fc620d..9183b2e777 100755 --- a/view/theme/quattro/colors.less +++ b/view/theme/quattro/colors.less @@ -71,6 +71,8 @@ @NoticeColor: @Grey1; @NoticeBackgroundColor: #511919; +@FieldHelpColor: @Grey3; + @ThreadBackgroundColor: #f6f7f8; @ShinyBorderColor: @Yellow1; diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less index 9d26082616..27c48f1952 100755 --- a/view/theme/quattro/quattro.less +++ b/view/theme/quattro/quattro.less @@ -890,6 +890,31 @@ ul.tabs { } +/** group editor **/ +#group-edit-desc { margin-top: 1em; color: @FieldHelpColor; } +#group-update-wrapper{ + height: auto; overflow: auto; + #group { + width:300px; + float:left; + margin-right:20px; + } + #contacts { + width:300px; + float:left; + } + #group-separator { display: none; } + .contact_list { + height: 300px; + border: 1px solid @MenuBorder; + overflow: auto; + .contact-block-div { + width: 50px; height: 50px; + float: left; + } + } +} + /** * Form fields */ @@ -913,7 +938,7 @@ ul.tabs { .field_help { display: block; margin-left: 200px; - color: #666666; + color: @FieldHelpColor; } diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css index b728023c9f..6087e4cd17 100755 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -1304,6 +1304,37 @@ ul.tabs li { ul.tabs li .active { border-bottom: 1px solid #005c94; } +/** group editor **/ +#group-edit-desc { + margin-top: 1em; + color: #999999; +} +#group-update-wrapper { + height: auto; + overflow: auto; +} +#group-update-wrapper #group { + width: 300px; + float: left; + margin-right: 20px; +} +#group-update-wrapper #contacts { + width: 300px; + float: left; +} +#group-update-wrapper #group-separator { + display: none; +} +#group-update-wrapper .contact_list { + height: 300px; + border: 1px solid #364e59; + overflow: auto; +} +#group-update-wrapper .contact_list .contact-block-div { + width: 50px; + height: 50px; + float: left; +} /** * Form fields */ @@ -1326,7 +1357,7 @@ ul.tabs li .active { .field .field_help { display: block; margin-left: 200px; - color: #666666; + color: #999999; } .field .onoff { float: left; From f5b8654818e63a0583e58caecc8a13c2d83c12d5 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Thu, 23 Feb 2012 16:21:28 +0100 Subject: [PATCH 002/165] fix visualization in groupeditor --- view/groupeditor.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/view/groupeditor.tpl b/view/groupeditor.tpl index aa3853375b..755985eb35 100644 --- a/view/groupeditor.tpl +++ b/view/groupeditor.tpl @@ -1,7 +1,7 @@

$groupeditor.label_members

-{{ for $groupeditor.contacts as $c}} $c {{ endfor }} +{{ for $groupeditor.members as $c}} $c {{ endfor }}

@@ -10,7 +10,7 @@

$groupeditor.label_contacts

-{{ for $groupeditor.members as $m}} $m {{ endfor }} +{{ for $groupeditor.contacts as $m}} $m {{ endfor }}
From d7407f8daaab14ecba59cc3cb211ff93802dd761 Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 27 Feb 2012 17:18:19 -0800 Subject: [PATCH 004/165] cleanup notify subject lines --- boot.php | 2 +- include/enotify.php | 25 +++++++++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/boot.php b/boot.php index bac7861c07..9045a94422 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1264' ); +define ( 'FRIENDICA_VERSION', '2.3.1265' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DB_UPDATE_VERSION', 1128 ); diff --git a/include/enotify.php b/include/enotify.php index 67e0011b8c..76e7eb9dcc 100755 --- a/include/enotify.php +++ b/include/enotify.php @@ -27,7 +27,7 @@ function notification($params) { if($params['type'] == NOTIFY_MAIL) { - $subject = sprintf( t('New mail received at %s'),$sitename); + $subject = sprintf( t('[Friendica:Notify] New mail received at %s'),$sitename); $preamble = sprintf( t('%s sent you a new private message at %s.'),$params['source_name'],$sitename); $epreamble = sprintf( t('%s sent you %s.'),'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('a private message') . '[/url]'); @@ -38,7 +38,7 @@ function notification($params) { } if($params['type'] == NOTIFY_COMMENT) { - logger("notification: params = " . print_r($params, true), LOGGER_DEBUG); +// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG); $parent_id = $params['parent']; @@ -46,7 +46,8 @@ function notification($params) { // So, we cannot have different subjects for notifications of the same thread. // Before this we have the name of the replier on the subject rendering // differents subjects for messages on the same thread. - $subject = sprintf( t('Someone commented on item #%d at %s'), $parent_id, $sitename); + + $subject = sprintf( t('[Friendica:Notify] Comment to conversation #%d by %s'), $parent_id, $params['source_name']); $preamble = sprintf( t('%s commented on an item/conversation you have been following.'), $params['source_name']); $epreamble = sprintf( t('%s commented in %s.'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('a watched conversation') . '[/url]'); @@ -57,7 +58,10 @@ function notification($params) { } if($params['type'] == NOTIFY_WALL) { - $preamble = $subject = sprintf( t('%s posted to your profile wall at %s') , $params['source_name'], $sitename); + $subject = sprintf( t('[Friendica:Notify] %s posted to your profile wall') , $params['source_name']); + + $preamble = sprintf( t('%s posted to your profile wall at %s') , $params['source_name'], $sitename); + $epreamble = sprintf( t('%s posted to %s') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('your profile wall.') . '[/url]'); $sitelink = t('Please visit %s to view and/or reply to the conversation.'); @@ -67,7 +71,8 @@ function notification($params) { } if($params['type'] == NOTIFY_TAGSELF) { - $preamble = $subject = sprintf( t('%s tagged you at %s') , $params['source_name'], $sitename); + $subject = sprintf( t('[Friendica:Notify] %s tagged you') , $params['source_name']); + $preamble = sprintf( t('%s tagged you at %s') , $params['source_name'], $sitename); $epreamble = sprintf( t('%s %s.') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=' . $params['link'] . ']' . t('tagged you') . '[/url]'); $sitelink = t('Please visit %s to view and/or reply to the conversation.'); @@ -77,7 +82,8 @@ function notification($params) { } if($params['type'] == NOTIFY_TAGSHARE) { - $preamble = $subject = sprintf( t('%s tagged your post at %s') , $params['source_name'], $sitename); + $subject = sprintf( t('[Friendica:Notify] %s tagged your post') , $params['source_name']); + $preamble = sprintf( t('%s tagged your post at %s') , $params['source_name'], $sitename); $epreamble = sprintf( t('%s tagged %s') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('your post') . '[/url]' ); $sitelink = t('Please visit %s to view and/or reply to the conversation.'); @@ -87,7 +93,7 @@ function notification($params) { } if($params['type'] == NOTIFY_INTRO) { - $subject = sprintf( t('Introduction received at %s'), $sitename); + $subject = sprintf( t('[Friendica:Notify] Introduction received')); $preamble = sprintf( t('You\'ve received an introduction from \'%s\' at %s'), $params['source_name'], $sitename); $epreamble = sprintf( t('You\'ve received %s from %s.'), '[url=$itemlink]' . t('an introduction') . '[/url]' , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]'); $body = sprintf( t('You may visit their profile at %s'),$params['source_link']); @@ -99,7 +105,7 @@ function notification($params) { } if($params['type'] == NOTIFY_SUGGEST) { - $subject = sprintf( t('Friend suggestion received at %s'), $sitename); + $subject = sprintf( t('[Friendica:Notify] Friend suggestion received')); $preamble = sprintf( t('You\'ve received a friend suggestion from \'%s\' at %s'), $params['source_name'], $sitename); $epreamble = sprintf( t('You\'ve received %s for %s from %s.'), '[url=$itemlink]' . t('a friend suggestion') . '[/url]', @@ -237,9 +243,12 @@ intval($params['uid']), LOGGER_DEBUG); $datarray['preamble'] = $preamble; $datarray['sitename'] = $sitename; $datarray['siteurl'] = $siteurl; + $datarray['type'] = $params['type']; + $datarray['parent'] = $params['parent']; $datarray['source_name'] = $params['source_name']; $datarray['source_link'] = $params['source_link']; $datarray['source_photo'] = $params['source_photo']; + $datarray['uid'] = $params['uid']; $datarray['username'] = $params['to_name']; $datarray['hsitelink'] = $hsitelink; $datarray['tsitelink'] = $tsitelink; From 2b730ae86d1b49edda74aa6cbb0f9ed3a008ed13 Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 27 Feb 2012 18:46:11 -0800 Subject: [PATCH 005/165] clicking contact on contacts page broken link --- mod/contacts.php | 1 + 1 file changed, 1 insertion(+) diff --git a/mod/contacts.php b/mod/contacts.php index ce352fe204..c99ac14520 100755 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -505,6 +505,7 @@ function contacts_content(&$a) { 'username' => $rr['name'], 'sparkle' => $sparkle, 'itemurl' => $rr['url'], + 'url' => $url, 'network' => network_to_name($rr['network']), ); } From 53412dacd4cb52f0c1162af7ba66aa01f71147b3 Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 27 Feb 2012 23:27:16 -0800 Subject: [PATCH 006/165] update globaldir when page-type changes, add spam date field --- boot.php | 2 +- database.sql | 1 + library/spam/b8/storage/storage_frndc.php | 54 +---------------------- mod/settings.php | 4 +- update.php | 7 ++- 5 files changed, 13 insertions(+), 55 deletions(-) diff --git a/boot.php b/boot.php index 9045a94422..c3e5c0de02 100755 --- a/boot.php +++ b/boot.php @@ -11,7 +11,7 @@ require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_VERSION', '2.3.1265' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); -define ( 'DB_UPDATE_VERSION', 1128 ); +define ( 'DB_UPDATE_VERSION', 1129 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index 349dd2a27b..8c74ecddfb 100755 --- a/database.sql +++ b/database.sql @@ -844,6 +844,7 @@ CREATE TABLE IF NOT EXISTS `spam` ( `spam` INT NOT NULL DEFAULT '0', `ham` INT NOT NULL DEFAULT '0', `term` CHAR(255) NOT NULL, +`date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', INDEX ( `uid` ), INDEX ( `spam` ), INDEX ( `ham` ), diff --git a/library/spam/b8/storage/storage_frndc.php b/library/spam/b8/storage/storage_frndc.php index cbc6fe81a9..7702c108b3 100644 --- a/library/spam/b8/storage/storage_frndc.php +++ b/library/spam/b8/storage/storage_frndc.php @@ -147,58 +147,8 @@ class b8_storage_frndc extends b8_storage_base public function connect() { - return TRUE; - - # Are we already connected? - if($this->connected === TRUE) - return TRUE; - - # Are we using an existing passed resource? - if($this->config['connection'] === FALSE) { - # ... yes we are, but the connection is not a resource, so return an error - $this->connected = FALSE; - return self::DATABASE_CONNECTION_BAD_RESOURCE; - } - - elseif($this->config['connection'] === NULL) { - - # ... no we aren't so we have to connect. - - if($this->_connection = mysql_connect($this->config['host'], $this->config['user'], $this->config['pass'])) { - if(mysql_select_db($this->config['database'], $this->_connection) === FALSE) { - $this->connected = FALSE; - return self::DATABASE_SELECT_ERROR . ": " . mysql_error(); - } - } - else { - $this->connected = FALSE; - return self::DATABASE_CONNECTION_ERROR; - } - - } - - else { - # ... yes we are - $this->_connection = $this->config['connection']; - } - - # Just in case ... - if($this->_connection === NULL) { - $this->connected = FALSE; - return self::DATABASE_CONNECTION_FAIL; - } - - # Check to see if the wordlist table exists - if(mysql_query('DESCRIBE ' . $this->config['table_name'], $this->_connection) === FALSE) { - $this->connected = FALSE; - return self::DATABASE_TABLE_ACCESS_FAIL . ": " . mysql_error(); - } - - # Everything is okay and connected $this->connected = TRUE; - - # Let's see if this is a b8 database and the version is okay - return $this->check_database(); + return TRUE; } @@ -235,7 +185,7 @@ class b8_storage_frndc extends b8_storage_base # ... and fetch the data $result = q(' - SELECT token, count + SELECT * FROM ' . $this->config['table_name'] . ' WHERE ' . $where . ' AND uid = ' . $uid ); diff --git a/mod/settings.php b/mod/settings.php index 90eb9dbd78..a9d00bc981 100755 --- a/mod/settings.php +++ b/mod/settings.php @@ -50,6 +50,8 @@ function settings_post(&$a) { return; } + $old_page_flags = $a->user['page-flags']; + if(($a->argc > 1) && ($a->argv[1] === 'oauth') && x($_POST,'remove')){ $key = $_POST['remove']; q("DELETE FROM tokens WHERE id='%s' AND uid=%d", @@ -375,7 +377,7 @@ function settings_post(&$a) { ); } - if($old_visibility != $net_publish) { + if(($old_visibility != $net_publish) || ($page_flags != $old_page_flags)) { // Update global directory in background $url = $_SESSION['my_url']; if($url && strlen(get_config('system','directory_submit_url'))) diff --git a/update.php b/update.php index 865c6175e9..8ca5ef90b0 100755 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Tue, 28 Feb 2012 19:10:27 +0100 Subject: [PATCH 007/165] fix url and network display --- mod/viewcontacts.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php index 10c980d93b..6b66f60d77 100755 --- a/mod/viewcontacts.php +++ b/mod/viewcontacts.php @@ -63,7 +63,8 @@ function viewcontacts_content(&$a) { 'username' => $rr['name'], 'url' => $url, 'sparkle' => '', - 'item' => $rr, + 'itemurl' => $rr['url'], + 'network' => network_to_name($rr['network']), ); } From 4dd4a2258235cfafc0d5a4f87d116755ebe52ead Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 28 Feb 2012 14:52:23 -0800 Subject: [PATCH 008/165] From Tobias H - catch some irregularities caused by cut/paste code --- boot.php | 2 +- include/items.php | 2 +- mod/display.php | 8 ++++---- mod/network.php | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/boot.php b/boot.php index c3e5c0de02..e1dc7e5373 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1265' ); +define ( 'FRIENDICA_VERSION', '2.3.1266' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DB_UPDATE_VERSION', 1129 ); diff --git a/include/items.php b/include/items.php index 7d52571c25..250d023cec 100755 --- a/include/items.php +++ b/include/items.php @@ -2424,7 +2424,7 @@ function local_delivery($importer,$data) { // This is my contact on another system, but it's really me. // Turn this into a wall post. - if($contact['remote_self']) + if($importer['remote_self']) $datarray['wall'] = 1; $datarray['parent-uri'] = $item_id; diff --git a/mod/display.php b/mod/display.php index d96be4333b..f510f793df 100755 --- a/mod/display.php +++ b/mod/display.php @@ -74,11 +74,11 @@ function display_content(&$a) { $x = array( 'is_owner' => true, 'allow_location' => $a->user['allow_location'], - 'default_location' => $a->user['default_location'], + 'default_location' => $a->user['default-location'], 'nickname' => $a->user['nickname'], - 'lockstate' => ((($group) || (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'), - 'acl' => populate_acl((($group || $cid) ? $def_acl : $a->user), $celeb), - 'bang' => (($group || $cid) ? '!' : ''), + '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'), + 'acl' => populate_acl($a->user, $celeb), + 'bang' => '', 'visitor' => 'block', 'profile_uid' => local_user() ); diff --git a/mod/network.php b/mod/network.php index 03a671b615..894ac48ed6 100755 --- a/mod/network.php +++ b/mod/network.php @@ -263,7 +263,7 @@ function network_content(&$a, $update = 0) { $x = array( 'is_owner' => true, 'allow_location' => $a->user['allow_location'], - 'default_location' => $a->user['default_location'], + 'default_location' => $a->user['default-location'], 'nickname' => $a->user['nickname'], 'lockstate' => ((($group) || (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'), 'acl' => populate_acl((($group || $cid) ? $def_acl : $a->user), $celeb), From 21803e0cd33d51cd634d0147409f0a6529441c8e Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 28 Feb 2012 14:54:17 -0800 Subject: [PATCH 009/165] call time pass by reference deprecated --- include/html2bbcode.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/html2bbcode.php b/include/html2bbcode.php index 65920380b5..51d6299407 100755 --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -10,7 +10,7 @@ Originally made for the syncom project: http://wiki.piratenpartei.de/Syncom function node2bbcode(&$doc, $oldnode, $attributes, $startbb, $endbb) { do { - $done = node2bbcodesub(&$doc, $oldnode, $attributes, $startbb, $endbb); + $done = node2bbcodesub($doc, $oldnode, $attributes, $startbb, $endbb); } while ($done); } From 60ae0d8974ce9f0406978130e4feac84a332509b Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 28 Feb 2012 17:32:44 -0800 Subject: [PATCH 010/165] cleaned up mess created when both people request friendship and one approves as duplex --- mod/dfrn_confirm.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 5a24f00893..0bc3ea7df5 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -107,7 +107,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { * */ - $r = q("SELECT * FROM `contact` WHERE ( ( `issued-id` != '' AND `issued-id` = '%s' ) OR ( `id` = %d AND `id` != 0 ) ) AND `uid` = %d LIMIT 1", + $r = q("SELECT * FROM `contact` WHERE ( ( `issued-id` != '' AND `issued-id` = '%s' ) OR ( `id` = %d AND `id` != 0 ) ) AND `uid` = %d AND `duplex` = 0 LIMIT 1", dbesc($dfrn_id), intval($cid), intval($uid) @@ -116,6 +116,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { if(! count($r)) { logger('dfrn_confirm: Contact not found in DB.'); notice( t('Contact not found.') . EOL ); + notice( t('This may occasionally happen if contact was requested by both persons and it has already been approved.') . EOL ); return; } @@ -631,6 +632,15 @@ function dfrn_confirm_post(&$a,$handsfree = null) { xml_status(3,$message); } + // It's possible that the other person also requested friendship. + // If it is a duplex relationship, ditch the issued-id if one exists. + + if($duplex) { + $r = q("UPDATE `contact` SET `issued-id` = '' WHERE `id` = %d LIMIT 1", + intval($dfrn_record) + ); + } + // We're good but now we have to scrape the profile photo and send notifications. From aedb7c5f6961e02733c1df6547cde4bb7d7da8c4 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 29 Feb 2012 21:07:33 +1100 Subject: [PATCH 011/165] Update README --- README | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README b/README index e69de29bb2..152d481eac 100644 --- a/README +++ b/README @@ -0,0 +1,4 @@ +Friendica Social Communications Server +====================================== + +Welcome to the free social web. From fb33b4f2bcd18e63d311e6dba3aaa2ea5efdec3b Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 29 Feb 2012 21:09:20 +1100 Subject: [PATCH 012/165] Update LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 65ec68b9c2..15c3e825b6 100755 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2010, 2011 the Friendica Project +Copyright (c) 2010-2012 the Friendica Project All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy From 84d5f495e6e6edd7114b7e72711035e96479e39a Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 29 Feb 2012 16:26:07 -0800 Subject: [PATCH 013/165] better handling of multiple notifications for same item, and old notifications --- boot.php | 2 +- mod/notify.php | 4 ++-- mod/ping.php | 23 +++++++++++++++++++++-- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/boot.php b/boot.php index e1dc7e5373..31e8cb05ff 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1266' ); +define ( 'FRIENDICA_VERSION', '2.3.1267' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DB_UPDATE_VERSION', 1129 ); diff --git a/mod/notify.php b/mod/notify.php index e6a7a88596..16b87b76f5 100644 --- a/mod/notify.php +++ b/mod/notify.php @@ -11,8 +11,8 @@ function notify_init(&$a) { intval(local_user()) ); if(count($r)) { - q("update notify set seen = 1 where id = %d and uid = %d limit 1", - intval($a->argv[2]), + q("update notify set seen = 1 where link = '%s' and uid = %d", + dbesc($r[0]['link']), intval(local_user()) ); goaway($r[0]['link']); diff --git a/mod/ping.php b/mod/ping.php index 7380ff7d05..1562254b17 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -14,10 +14,29 @@ function ping_init(&$a) { $firehose = intval(get_pconfig(local_user(),'system','notify_full')); - $z = q("select * from notify where uid = %d - order by seen asc, date desc limit 0, 50", + $t = q("select count(*) as total from notify where uid = %d and seen = 0", intval(local_user()) ); + if($t && intval($t[0]['total']) > 49) { + $z = q("select * from notify where uid = %d + and seen = 0 order by date desc limit 0, 50", + intval(local_user()) + ); + } + else { + $z1 = q("select * from notify where uid = %d + and seen = 0 order by date desc limit 0, 50", + intval(local_user()) + ); + + $z2 = q("select * from notify where uid = %d + and seen = 1 order by date desc limit 0, %d", + intval(local_user()), + intval(50 - intval($t[0]['total'])) + ); + $z = array_merge($z1,$z2); + } + $tags = array(); From bbebb4c2a050f22e9aa51cb123359b169bcb3b3c Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 29 Feb 2012 18:19:08 -0800 Subject: [PATCH 014/165] notification enhancements --- boot.php | 2 +- database.sql | 6 +++++- include/enotify.php | 33 ++++++++++++++++++++++++++++++--- mod/notify.php | 4 +++- update.php | 5 ++++- 5 files changed, 43 insertions(+), 7 deletions(-) diff --git a/boot.php b/boot.php index 31e8cb05ff..aee236de33 100755 --- a/boot.php +++ b/boot.php @@ -11,7 +11,7 @@ require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_VERSION', '2.3.1267' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); -define ( 'DB_UPDATE_VERSION', 1129 ); +define ( 'DB_UPDATE_VERSION', 1130 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index 8c74ecddfb..806f75419c 100755 --- a/database.sql +++ b/database.sql @@ -752,14 +752,18 @@ CREATE TABLE IF NOT EXISTS `notify` ( `msg` MEDIUMTEXT NOT NULL , `uid` INT NOT NULL , `link` CHAR( 255 ) NOT NULL , +`parent` INT( 11 ) NOT NULL, `seen` TINYINT( 1 ) NOT NULL DEFAULT '0', `verb` CHAR( 255 ) NOT NULL, `otype` CHAR( 16 ) NOT NULL, INDEX ( `hash` ), INDEX ( `type` ), INDEX ( `uid` ), +INDEX ( `link` ), +INDEX ( `parent` ), INDEX ( `seen` ), -INDEX ( `date` ) +INDEX ( `date` ), +INDEX ( `otype` ) ) ENGINE = MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `item_id` ( diff --git a/include/enotify.php b/include/enotify.php index 76e7eb9dcc..80cb7d8fa4 100755 --- a/include/enotify.php +++ b/include/enotify.php @@ -25,6 +25,12 @@ function notification($params) { $title = $body = ''; } + if($params['otype'] === 'item') + $possess_desc = t('%s post'); + if($params['otype'] == 'photo') + $possess_desc = t('%s photo'); + + if($params['type'] == NOTIFY_MAIL) { $subject = sprintf( t('[Friendica:Notify] New mail received at %s'),$sitename); @@ -41,7 +47,26 @@ function notification($params) { // logger("notification: params = " . print_r($params, true), LOGGER_DEBUG); $parent_id = $params['parent']; + + + // if it's a post figure out who's post it is. + + $p = null; + + if($params['otype'] === 'item' && $parent_id) { + $p = q("select * from item where id = %d and uid = %d limit 1", + intval($parent_id), + intval($params['uid']) + ); + } + + $dest_str = sprintf($possess_desc,'a'); + if($p) + $dest_str = sprintf($possess_desc,sprintf( t("%s's"),$p[0]['author-name'])); + if($p[0]['owner-name'] == $p[0]['author-name'] && $p[0]['wall']) + $dest_str = sprintf($possess_desc, t('your') ); + // Some mail softwares relies on subject field for threading. // So, we cannot have different subjects for notifications of the same thread. // Before this we have the name of the replier on the subject rendering @@ -49,7 +74,7 @@ function notification($params) { $subject = sprintf( t('[Friendica:Notify] Comment to conversation #%d by %s'), $parent_id, $params['source_name']); $preamble = sprintf( t('%s commented on an item/conversation you have been following.'), $params['source_name']); - $epreamble = sprintf( t('%s commented in %s.'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('a watched conversation') . '[/url]'); + $epreamble = sprintf( t('%s commented on %s.'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . $dest_str . '[/url]'); $sitelink = t('Please visit %s to view and/or reply to the conversation.'); $tsitelink = sprintf( $sitelink, $siteurl ); @@ -149,6 +174,7 @@ function notification($params) { $datarray['date'] = datetime_convert(); $datarray['uid'] = $params['uid']; $datarray['link'] = $itemlink; + $datarray['parent'] = $parent_id; $datarray['type'] = $params['type']; $datarray['verb'] = $params['verb']; $datarray['otype'] = $params['otype']; @@ -157,8 +183,8 @@ function notification($params) { // create notification entry in DB - $r = q("insert into notify (hash,name,url,photo,date,uid,link,type,verb,otype) - values('%s','%s','%s','%s','%s',%d,'%s',%d,'%s','%s')", + $r = q("insert into notify (hash,name,url,photo,date,uid,link,parent,type,verb,otype) + values('%s','%s','%s','%s','%s',%d,'%s',%d,%d,'%s','%s')", dbesc($datarray['hash']), dbesc($datarray['name']), dbesc($datarray['url']), @@ -166,6 +192,7 @@ function notification($params) { dbesc($datarray['date']), intval($datarray['uid']), dbesc($datarray['link']), + intval($datarray['parent']), intval($datarray['type']), dbesc($datarray['verb']), dbesc($datarray['otype']) diff --git a/mod/notify.php b/mod/notify.php index 16b87b76f5..a572b15344 100644 --- a/mod/notify.php +++ b/mod/notify.php @@ -11,8 +11,10 @@ function notify_init(&$a) { intval(local_user()) ); if(count($r)) { - q("update notify set seen = 1 where link = '%s' and uid = %d", + q("update notify set seen = 1 where ( link = '%s' or ( parent != 0 and parent = %d and otype = '%s' )) and uid = %d", dbesc($r[0]['link']), + intval($r[0]['parent']), + dbesc($r[0]['otype']), intval(local_user()) ); goaway($r[0]['link']); diff --git a/update.php b/update.php index 8ca5ef90b0..6dbd410bcf 100755 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Wed, 29 Feb 2012 19:23:01 -0800 Subject: [PATCH 015/165] yet more work on notifications --- include/enotify.php | 13 ++++++----- include/items.php | 55 ++++++++++++++++++++++++++------------------- include/text.php | 13 +++++++++++ 3 files changed, 53 insertions(+), 28 deletions(-) diff --git a/include/enotify.php b/include/enotify.php index 80cb7d8fa4..a505f1f040 100755 --- a/include/enotify.php +++ b/include/enotify.php @@ -25,11 +25,8 @@ function notification($params) { $title = $body = ''; } - if($params['otype'] === 'item') - $possess_desc = t('%s post'); - if($params['otype'] == 'photo') - $possess_desc = t('%s photo'); - + // e.g. "your post", "David's photo", etc. + $possess_desc = t('%s '); if($params['type'] == NOTIFY_MAIL) { @@ -60,10 +57,16 @@ function notification($params) { ); } + $possess_desc = str_replace('',item_post_type($p[0]),$possess_desc); + + // "a post" $dest_str = sprintf($possess_desc,'a'); + + // "George Bull's post" if($p) $dest_str = sprintf($possess_desc,sprintf( t("%s's"),$p[0]['author-name'])); + // "your post" if($p[0]['owner-name'] == $p[0]['author-name'] && $p[0]['wall']) $dest_str = sprintf($possess_desc, t('your') ); diff --git a/include/items.php b/include/items.php index 250d023cec..a1254e165a 100755 --- a/include/items.php +++ b/include/items.php @@ -2325,35 +2325,44 @@ function local_delivery($importer,$data) { if(count($myconv)) { $importer_url = $a->get_baseurl() . '/profile/' . $importer['nickname']; - foreach($myconv as $conv) { - if(! link_compare($conv['author-link'],$importer_url)) - continue; + // first make sure this isn't our own post coming back to us from a wall-to-wall event + if(! link_compare($datarray['author-link'],$importer_url)) { - require_once('include/enotify.php'); - $conv_parent = $conv['parent']; + foreach($myconv as $conv) { - notification(array( - 'type' => NOTIFY_COMMENT, - 'notify_flags' => $importer['notify-flags'], - 'language' => $importer['language'], - 'to_name' => $importer['username'], - 'to_email' => $importer['email'], - 'uid' => $importer['importer_uid'], - 'item' => $datarray, - 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id, - 'source_name' => stripslashes($datarray['author-name']), - 'source_link' => $datarray['author-link'], - 'source_photo' => ((link_compare($datarray['author-link'],$importer['url'])) - ? $importer['thumb'] : $datarray['author-avatar']), - 'verb' => ACTIVITY_POST, - 'otype' => 'item', - 'parent' => $conv_parent, + // now if we find a match, it means we're in this conversation + + if(! link_compare($conv['author-link'],$importer_url)) + continue; - )); + require_once('include/enotify.php'); + + $conv_parent = $conv['parent']; - break; + notification(array( + 'type' => NOTIFY_COMMENT, + 'notify_flags' => $importer['notify-flags'], + 'language' => $importer['language'], + 'to_name' => $importer['username'], + 'to_email' => $importer['email'], + 'uid' => $importer['importer_uid'], + 'item' => $datarray, + 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id, + 'source_name' => stripslashes($datarray['author-name']), + 'source_link' => $datarray['author-link'], + 'source_photo' => ((link_compare($datarray['author-link'],$importer['url'])) + ? $importer['thumb'] : $datarray['author-avatar']), + 'verb' => ACTIVITY_POST, + 'otype' => 'item', + 'parent' => $conv_parent, + + )); + + // only send one notification + break; + } } } } diff --git a/include/text.php b/include/text.php index 1f5d4a3e12..81e22527a6 100755 --- a/include/text.php +++ b/include/text.php @@ -1201,3 +1201,16 @@ function reltoabs($text, $base) return $text; } +function item_post_type($item) { + if(intval($item['event-id'])) + return t('event'); + if(strlen($item['resource-id'])) + return t('photo'); + if(strlen($item['verb']) && $item['verb'] !== ACTIVITY_POST) + return t('activity'); + if($item['id'] != $item['parent']) + return t('comment'); + return t('post'); +} + + From f0b6e7629312c6eaf8b1ac2a0abca2bb6ef49c8c Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Thu, 1 Mar 2012 11:28:48 +0100 Subject: [PATCH 016/165] admin: fix small string --- mod/admin.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 0f600e3126..94bf445032 100755 --- a/mod/admin.php +++ b/mod/admin.php @@ -366,7 +366,7 @@ function admin_page_users_post(&$a){ intval( $uid ) ); } - notice( sprintf( tt("%s user blocked", "%s users blocked/unblocked", count($users)), count($users)) ); + notice( sprintf( tt("%s user blocked/unblocked", "%s users blocked/unblocked", count($users)), count($users)) ); } if (x($_POST,'page_users_delete')){ require_once("include/Contact.php"); @@ -428,6 +428,7 @@ function admin_page_users(&$a){ LEFT JOIN `contact` ON `register`.`uid` = `contact`.`uid` LEFT JOIN `user` ON `register`.`uid` = `user`.`uid`;"); + /* get users */ $total = q("SELECT count(*) as total FROM `user` where 1"); @@ -435,7 +436,8 @@ function admin_page_users(&$a){ $a->set_pager_total($total[0]['total']); $a->set_pager_itemspage(100); } - + + $users = q("SELECT `user` . * , `contact`.`name` , `contact`.`url` , `contact`.`micro`, `lastitem`.`lastitem_date` FROM (SELECT MAX(`item`.`changed`) as `lastitem_date`, `item`.`uid` @@ -469,6 +471,7 @@ function admin_page_users(&$a){ } $users = array_map("_setup_users", $users); + $t = get_markup_template("admin_users.tpl"); $o = replace_macros($t, array( // strings // From a26ce7c56b91defccf0b222c9c9481d4b05f3c8d Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Thu, 1 Mar 2012 11:31:16 +0100 Subject: [PATCH 017/165] show relation in contact_template --- view/contact_template.tpl | 1 + 1 file changed, 1 insertion(+) diff --git a/view/contact_template.tpl b/view/contact_template.tpl index f4c0670bfe..b826acc65d 100755 --- a/view/contact_template.tpl +++ b/view/contact_template.tpl @@ -17,6 +17,7 @@
$contact.name
+ {{ if $contact.alt_text }}
$contact.alt_text
{{ endif }}
$contact.itemurl
$contact.network
From c462ed9fc50e2c2a60e8cb01314a7d5fa498b412 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Thu, 1 Mar 2012 11:32:49 +0100 Subject: [PATCH 018/165] template proc: avoid a notice and allow template name to include to be passed with a variable value --- include/template_processor.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/include/template_processor.php b/include/template_processor.php index 28c3f07ddd..b4d444e1c6 100755 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -116,7 +116,15 @@ * {{ inc [with $var1=$var2] }}{{ endinc }} */ private function _replcb_inc($args){ - list($tplfile, $newctx) = array_map('trim', explode("with",$args[2])); + if (strpos($args[2],"with")) { + list($tplfile, $newctx) = array_map('trim', explode("with",$args[2])); + } else { + $tplfile = trim($args[2]); + $newctx = null; + } + + if ($tplfile[0]=="$") $tplfile = $this->_get_var($tplfile); + $this->_push_stack(); $r = $this->r; if (!is_null($newctx)) { From e0c659b34b8992111bcc64d3f0eea75dfa193412 Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Thu, 1 Mar 2012 11:44:33 +0100 Subject: [PATCH 019/165] Enabled automated doc building. Changes: -build.xml, phing build file -@package tags at acl_selector.php and db_update.php -added documentation and some IDE files to .gitignore -automated tool to find files that corrupt the doc build process -removed ansi characters from SSH1.php, docBlox could not handle them --- .gitignore | 8 ++ build.xml | 38 +++++++++ include/acl_selectors.php | 7 +- library/phpsec/Net/SSH1.php | 4 +- util/db_update.php | 6 ++ util/docblox_errorchecker.php | 145 ++++++++++++++++++++++++++++++++++ 6 files changed, 205 insertions(+), 3 deletions(-) create mode 100644 build.xml create mode 100644 util/docblox_errorchecker.php diff --git a/.gitignore b/.gitignore index 3dfb8a903a..6302bc1c8b 100755 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,11 @@ home.html addon *~ +#ignore documentation, it should be newly built +doc/api + +#ignore config files from eclipse, we don't want IDE files in our repository +.project +.buildpath +.externalToolBuilders +.settings diff --git a/build.xml b/build.xml new file mode 100644 index 0000000000..83c5300264 --- /dev/null +++ b/build.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/include/acl_selectors.php b/include/acl_selectors.php index 6070b7db21..67d8cebdeb 100755 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -1,6 +1,11 @@ Date: Thu, 1 Mar 2012 11:46:08 +0100 Subject: [PATCH 020/165] conversation: remove templating items in code and move it to template. --- include/conversation.php | 197 +++++++++++----------- view/conversation.tpl | 14 +- view/search_item.tpl | 74 ++++---- view/theme/dispy/search_item.tpl | 52 +++--- view/theme/dispy/wall_item.tpl | 82 ++++----- view/theme/dispy/wallwall_item.tpl | 90 +++++----- view/theme/duepuntozero/conversation.tpl | 14 +- view/theme/duepuntozero/search_item.tpl | 54 +++--- view/theme/duepuntozero/wall_item.tpl | 84 ++++----- view/theme/duepuntozero/wallwall_item.tpl | 92 +++++----- view/theme/vier/search_item.tpl | 72 ++++---- view/theme/vier/wall_item.tpl | 76 ++++----- view/theme/vier/wallwall_item.tpl | 86 +++++----- view/wall_item.tpl | 70 ++++---- view/wallwall_item.tpl | 78 ++++----- 15 files changed, 584 insertions(+), 551 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 2ef37694dc..f4740688cd 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -6,11 +6,6 @@ function localize_item(&$item){ $Text = $item['body']; - - - // find private image (w/data url) if present and convert image - // link to a magic-auth redirect. - $saved_image = ''; $img_start = strpos($Text,'[img]data:'); $img_end = strpos($Text,'[/img]'); @@ -184,6 +179,7 @@ function localize_item(&$item){ * that are based on unique features of the calling module. * */ + if(!function_exists('conversation')){ function conversation(&$a, $items, $mode, $update, $preview = false) { require_once('bbcode.php'); @@ -231,13 +227,13 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $items = $cb['items']; $cmnt_tpl = get_markup_template('comment_item.tpl'); - $tpl = get_markup_template('wall_item.tpl'); - $wallwall = get_markup_template('wallwall_item.tpl'); + $tpl = 'wall_item.tpl'; + $wallwall = 'wallwall_item.tpl'; $hide_comments_tpl = get_markup_template('hide_comments.tpl'); $alike = array(); $dlike = array(); - $o = ""; + // array with html for each thread (parent+comments) $threads = array(); @@ -250,7 +246,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { // "New Item View" on network page or search page results // - just loop through the items and format them minimally for display - $tpl = get_markup_template('search_item.tpl'); + //$tpl = get_markup_template('search_item.tpl'); + $tpl = 'search_item.tpl'; foreach($items as $item) { $threadsid++; @@ -316,43 +313,46 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $body = prepare_body($item,true); - $tmp_item = replace_macros($tpl,array( - '$id' => (($preview) ? 'P0' : $item['item_id']), - '$linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])), - '$profile_url' => $profile_link, - '$item_photo_menu' => item_photo_menu($item), - '$name' => template_escape($profile_name), - '$sparkle' => $sparkle, - '$lock' => $lock, - '$thumb' => $profile_avatar, - '$title' => template_escape($item['title']), - '$body' => template_escape($body), - '$ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])), - '$lock' => $lock, - '$location' => template_escape($location), - '$indent' => '', - '$owner_name' => template_escape($owner_name), - '$owner_url' => $owner_url, - '$owner_photo' => $owner_photo, - '$plink' => get_plink($item), - '$edpost' => false, - '$isstarred' => $isstarred, - '$star' => $star, - '$drop' => $drop, - '$vote' => $likebuttons, - '$like' => '', - '$dislike' => '', - '$comment' => '', - '$conv' => (($preview) ? '' : array('href'=> $a->get_baseurl() . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))), - '$previewing' => $previewing, - '$wait' => t('Please wait'), - )); + //$tmp_item = replace_macros($tpl,array( + $tmp_item = array( + 'template' => $tpl, + 'id' => (($preview) ? 'P0' : $item['item_id']), + 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])), + 'profile_url' => $profile_link, + 'item_photo_menu' => item_photo_menu($item), + 'name' => template_escape($profile_name), + 'sparkle' => $sparkle, + 'lock' => $lock, + 'thumb' => $profile_avatar, + 'title' => template_escape($item['title']), + 'body' => template_escape($body), + 'text' => strip_tags(template_escape($body)), + 'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])), + 'lock' => $lock, + 'location' => template_escape($location), + 'indent' => '', + 'owner_name' => template_escape($owner_name), + 'owner_url' => $owner_url, + 'owner_photo' => $owner_photo, + 'plink' => get_plink($item), + 'edpost' => false, + 'isstarred' => $isstarred, + 'star' => $star, + 'drop' => $drop, + 'vote' => $likebuttons, + 'like' => '', + 'dislike' => '', + 'comment' => '', + 'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl() . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))), + 'previewing' => $previewing, + 'wait' => t('Please wait'), + ); $arr = array('item' => $item, 'output' => $tmp_item); call_hooks('display_item', $arr); $threads[$threadsid]['id'] = $item['item_id']; - $threads[$threadsid]['html'] .= $arr['output']; + $threads[$threadsid]['items'] = array($arr['output']); } @@ -385,6 +385,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { } $comments_collapsed = false; + $comment_lastcollapsed = false; + $comment_firstcollapsed = false; $blowhard = 0; $blowhard_count = 0; @@ -438,10 +440,12 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $comments_seen = 0; $comments_collapsed = false; + $comment_lastcollapsed = false; + $comment_firstcollapsed = false; $threadsid++; $threads[$threadsid]['id'] = $item['item_id']; - $threads[$threadsid]['html'] = ""; + $threads[$threadsid]['items'] = array(); } else { @@ -449,6 +453,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { if((! $toplevelpost) && (! $toplevelprivate) && ($item['private']) && ($profile_owner != local_user())) continue; $comments_seen ++; + $comment_lastcollapsed = false; + $comment_firstcollapsed = false; } $override_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false); @@ -456,23 +462,17 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { if(($comments[$item['parent']] > 2) && ($comments_seen <= ($comments[$item['parent']] - 2)) && ($item['gravity'] == 6)) { - if(! $comments_collapsed) { - // IMPORTANT: the closing
in the hide_comments template - // is supplied below in code. - - $threads[$threadsid]['html'] .= replace_macros($hide_comments_tpl,array( - '$id' => $item['parent'], - '$num_comments' => sprintf( tt('%d comment','%d comments',$comments[$item['parent']]), - $comments[$item['parent']]), - '$display' => 'none', - '$hide_text' => t('show more') - )); + if (!$comments_collapsed){ + $threads[$threadsid]['num_comments'] = sprintf( tt('%d comment','%d comments',$comments[$item['parent']]),$comments[$item['parent']] ); + $threads[$threadsid]['hide_text'] = t('show more'); $comments_collapsed = true; + $comment_firstcollapsed = true; } } if(($comments[$item['parent']] > 2) && ($comments_seen == ($comments[$item['parent']] - 1))) { - $threads[$threadsid]['html'] .= '
'; + + $comment_lastcollapsed = true; } $redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ; @@ -649,63 +649,72 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { // Build the HTML $body = prepare_body($item,true); + //$tmp_item = replace_macros($template, + $tmp_item = array( + // collapse comments in template. I don't like this much... + 'comment_firstcollapsed' => $comment_firstcollapsed, + 'comment_lastcollapsed' => $comment_lastcollapsed, + // template to use to render item (wall, walltowall, search) + 'template' => $template, + + 'type' => implode("",array_slice(split("/",$item['verb']),-1)), + 'tags' => $tags, + 'body' => template_escape($body), + 'text' => strip_tags(template_escape($body)), + 'id' => $item['item_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'), $profile_name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])), + 'to' => t('to'), + 'wall' => t('Wall-to-Wall'), + 'vwall' => t('via Wall-To-Wall:'), + 'profile_url' => $profile_link, + 'item_photo_menu' => item_photo_menu($item), + 'name' => template_escape($profile_name), + 'thumb' => $profile_avatar, + 'osparkle' => $osparkle, + 'sparkle' => $sparkle, + 'title' => template_escape($item['title']), + 'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])), + 'lock' => $lock, + 'location' => template_escape($location), + 'indent' => $indent, + 'owner_url' => $owner_url, + 'owner_photo' => $owner_photo, + 'owner_name' => template_escape($owner_name), + 'plink' => get_plink($item), + 'edpost' => $edpost, + 'isstarred' => $isstarred, + 'star' => $star, + 'drop' => $drop, + 'vote' => $likebuttons, + 'like' => $like, + 'dislike' => $dislike, + 'comment' => $comment, + 'previewing' => $previewing, + 'wait' => t('Please wait'), - $tmp_item = replace_macros($template,array( - '$type' => implode("",array_slice(explode("/",$item['verb']),-1)), - '$tags' => $tags, - '$body' => template_escape($body), - '$id' => $item['item_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'), $profile_name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])), - '$to' => t('to'), - '$wall' => t('Wall-to-Wall'), - '$vwall' => t('via Wall-To-Wall:'), - '$profile_url' => $profile_link, - '$item_photo_menu' => item_photo_menu($item), - '$name' => template_escape($profile_name), - '$thumb' => $profile_avatar, - '$osparkle' => $osparkle, - '$sparkle' => $sparkle, - '$title' => template_escape($item['title']), - '$ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])), - '$lock' => $lock, - '$location' => template_escape($location), - '$indent' => $indent, - '$owner_url' => $owner_url, - '$owner_photo' => $owner_photo, - '$owner_name' => template_escape($owner_name), - '$plink' => get_plink($item), - '$edpost' => $edpost, - '$isstarred' => $isstarred, - '$star' => $star, - '$drop' => $drop, - '$vote' => $likebuttons, - '$like' => $like, - '$dislike' => $dislike, - '$comment' => $comment, - '$previewing' => $previewing, - '$wait' => t('Please wait'), - - )); + ); $arr = array('item' => $item, 'output' => $tmp_item); call_hooks('display_item', $arr); - $threads[$threadsid]['html'] .= $arr['output']; + $threads[$threadsid]['items'][] = $arr['output']; } } } - $page_template = get_markup_template("conversation.tpl"); $o .= replace_macros($page_template, array( + '$baseurl' => $a->get_baseurl(), + '$mode' => $mode, + '$user' => $a->user, '$threads' => $threads, '$dropping' => ($dropping?t('Delete Selected Items'):False), )); return $o; -} +}} function best_link_url($item,&$sparkle) { diff --git a/view/conversation.tpl b/view/conversation.tpl index 7d4e7d2621..ff202bbe44 100755 --- a/view/conversation.tpl +++ b/view/conversation.tpl @@ -1,6 +1,18 @@ {{ for $threads as $thread }}
- $thread.html + {{ for $thread.items as $item }} + {{if $item.comment_firstcollapsed}} +
+ $thread.num_comments $thread.hide_text +
+ {{endif}} + + {{ inc $item.template }}{{ endinc }} + + + {{ endfor }}
{{ endfor }} diff --git a/view/search_item.tpl b/view/search_item.tpl index de8bd23961..a889062e06 100755 --- a/view/search_item.tpl +++ b/view/search_item.tpl @@ -1,75 +1,75 @@
- $star.starred - {{ if $lock }}$lock{{ endif }} - + $item.star.starred + {{ if $item.lock }}$item.lock{{ endif }} +
-
+
- {{ for $tags as $tag }} - $tag + {{ for $item.tags as $item.tag }} + $item.tag {{ endfor }}
- {{ if $plink }}$plink.title{{ endif }} + {{ if $item.plink }}$item.plink.title{{ endif }}
- $name $ago + $item.name $item.ago
- {{ if $star }} - $star.do - $star.undo - $star.tagger + {{ if $item.star }} + $item.star.do + $item.star.undo + $item.star.tagger {{ endif }} - {{ if $vote }} - $vote.like.1 - $vote.dislike.1 + {{ if $item.vote }} + $item.vote.like.1 + $item.vote.dislike.1 {{ endif }} - {{ if $vote.share }} - $vote.share.1 + {{ if $item.vote.share }} + $item.vote.share.1 {{ endif }}
- {{ if $drop.dropping }} - - $drop.delete + {{ if $item.drop.dropping }} + + $item.drop.delete {{ endif }} - {{ if $edpost }} - + {{ if $item.edpost }} + {{ endif }}
@@ -77,11 +77,11 @@
- -
$dislike
- {{ if $conv }} -
- $conv.title + +
$item.dislike
+ {{ if $item.conv }} +
+ $item.conv.title {{ endif }}
diff --git a/view/theme/dispy/search_item.tpl b/view/theme/dispy/search_item.tpl index 3d841ab080..54c3e389c0 100755 --- a/view/theme/dispy/search_item.tpl +++ b/view/theme/dispy/search_item.tpl @@ -1,40 +1,40 @@ -
-
-
-
- - $name - menu -
+
+
+
+
+ + $item.name + menu +
    - $item_photo_menu + $item.item_photo_menu
-
{{ if $location }}$location {{ endif }}
+
{{ if $item.location }}$item.location {{ endif }}
- {{ if $lock }}
$lock
+ {{ if $item.lock }}
$item.lock
{{ else }}
{{ endif }}
-
-
- {{ if $drop.dropping }}{{ endif }} +
+
+ {{ if $item.drop.dropping }}{{ endif }}
- {{ if $drop.dropping }}{{ endif }} + {{ if $item.drop.dropping }}{{ endif }}
-
-
$title
+
+
$item.title
-
$body
+
$item.body
- $name -
$ago
+ $item.name +
$item.ago
@@ -42,10 +42,10 @@
-
-
- {{ if $conv }} - $conv.title +
+
+ {{ if $item.conv }} + $item.conv.title {{ endif }}
diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl index 882843a093..0dcd30f7b4 100755 --- a/view/theme/dispy/wall_item.tpl +++ b/view/theme/dispy/wall_item.tpl @@ -1,77 +1,77 @@ -
-
-
-
- - $name +
+
+
+
+ + $item.name - menu -
+ menu +
    - $item_photo_menu + $item.item_photo_menu
-
{{ if $location }}$location {{ endif }}
+
{{ if $item.location }}$item.location {{ endif }}
- {{ if $lock }}
$lock
+ {{ if $item.lock }}
$item.lock
{{ else }}
{{ endif }}
-
- {{ if $star }} - - +
+ {{ if $item.star }} + + {{ endif }} - {{ if $vote }} -