Merge branch 'master' of git://github.com/friendika/friendika

This commit is contained in:
root 2011-01-04 09:22:43 +01:00
commit 51bcfb649f
27 changed files with 2022 additions and 112 deletions

View File

@ -124,6 +124,10 @@ Current hooks:
'xml' => the complete XML to be output
'home_content' - called prior to output home page content, shown to unlogged users
$b is (string) HTML of section region
*** = subject to change

View File

@ -102,7 +102,7 @@ define ( 'ACTIVITY_OBJ_HEART', NAMESPACE_DFRN . '/heart' );
define ( 'ACTIVITY_FRIEND', NAMESPACE_ACTIVITY_SCHEMA . 'make-friend' );
define ( 'ACTIVITY_FOLLOW', NAMESPACE_ACTIVITY_SCHEMA . 'follow' );
define ( 'ACTIVITY_UNFOLLOW', NAMESPACE_ACTIVITY_SCHEMA . 'unfollow' );
define ( 'ACTIVITY_UNFOLLOW', NAMESPACE_ACTIVITY_SCHEMA . 'stop-following' );
define ( 'ACTIVITY_POST', NAMESPACE_ACTIVITY_SCHEMA . 'post' );
define ( 'ACTIVITY_UPDATE', NAMESPACE_ACTIVITY_SCHEMA . 'update' );
define ( 'ACTIVITY_TAG', NAMESPACE_ACTIVITY_SCHEMA . 'tag' );
@ -307,6 +307,7 @@ class App {
}
function init_pagehead() {
$this->page['title'] = $this->config['sitename'];
$tpl = load_view_file("view/head.tpl");
$this->page['htmlhead'] = replace_macros($tpl,array(
'$baseurl' => $this->get_baseurl() . '/'
@ -1095,7 +1096,6 @@ if(! function_exists('set_config')) {
function set_config($family,$key,$value) {
global $a;
$a->config[$family][$key] = $value;
if(get_config($family,$key,true) === false) {
$ret = q("INSERT INTO `config` ( `cat`, `k`, `v` ) VALUES ( '%s', '%s', '%s' ) ",
@ -1112,6 +1112,9 @@ function set_config($family,$key,$value) {
dbesc($family),
dbesc($key)
);
$a->config[$family][$key] = $value;
if($ret)
return $value;
return $ret;
@ -1148,11 +1151,13 @@ function get_pconfig($uid,$family, $key, $instore = false) {
return $a->config[$uid][$family][$key];
}
}
$ret = q("SELECT `v` FROM `pconfig` WHERE `uid` = %d AND `cat` = '%s' AND `k` = '%s' LIMIT 1",
intval($uid),
dbesc($family),
dbesc($key)
);
if(count($ret)) {
$a->config[$uid][$family][$key] = $ret[0]['v'];
return $ret[0]['v'];
@ -1185,7 +1190,6 @@ if(! function_exists('set_pconfig')) {
function set_pconfig($uid,$family,$key,$value) {
global $a;
$a->config[$uid][$family][$key] = $value;
if(get_pconfig($uid,$family,$key,true) === false) {
$ret = q("INSERT INTO `pconfig` ( `uid`, `cat`, `k`, `v` ) VALUES ( %d, '%s', '%s', '%s' ) ",
@ -1205,6 +1209,8 @@ function set_pconfig($uid,$family,$key,$value) {
dbesc($key)
);
$a->config[$uid][$family][$key] = $value;
if($ret)
return $value;
return $ret;
@ -1496,7 +1502,7 @@ function validate_email($addr) {
return false;
$h = substr($addr,strpos($addr,'@') + 1);
if(($h) && (dns_get_record($h['host'], DNS_A + DNS_CNAME + DNS_PTR + DNS_MX))) {
if(($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_PTR + DNS_MX))) {
return true;
}
return false;
@ -1957,7 +1963,7 @@ function profile_load(&$a, $nickname, $profile = 0) {
$a->profile = $r[0];
$a->page['title'] = $a->profile['name'];
$a->page['title'] = $a->profile['name'] . " @ " . $a->config['sitename'];
$_SESSION['theme'] = $a->profile['theme'];
if(! (x($a->page,'aside')))

View File

@ -921,7 +921,10 @@ function consume_feed($xml,$importer,$contact, &$hub, $datedir = 0) {
// Now process the feed
if($feed->get_item_quantity()) {
foreach($feed->get_items() as $item) {
// in inverse date order
if ($datedir)
$items = array_reverse($feed->get_items());
foreach($items as $item) {
$deleted = false;

View File

@ -225,11 +225,11 @@
if(! strlen($xml))
continue;
consume_feed($xml,$importer,$contact,$hub);
consume_feed($xml,$importer,$contact,$hub,1);
// do it twice. Ensures that children of parents which may be later in the stream aren't tossed
consume_feed($xml,$importer,$contact,$hub);
consume_feed($xml,$importer,$contact,$hub,1);
if((strlen($hub)) && ($hub_update)

View File

@ -213,13 +213,13 @@ if($a->module != 'install')
* Make sure the desired theme exists, though if the default theme doesn't exist we're stuffed.
*
*/
$default_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : 'default');
if((x($_SESSION,'theme')) && (! file_exists('view/theme/' . $_SESSION['theme'] . '/style.css')))
unset($_SESSION['theme']);
$a->page['htmlhead'] = replace_macros($a->page['htmlhead'], array(
'$stylesheet' => $a->get_baseurl() . '/view/theme/'
. ((x($_SESSION,'theme')) ? $_SESSION['theme'] : 'default')
. ((x($_SESSION,'theme')) ? $_SESSION['theme'] : $default_theme)
. '/style.css'
));

View File

@ -165,7 +165,8 @@ function contacts_content(&$a) {
'$type' => 'text',
'$content' => t('stopped following'),
'$nick' => $a->user['nickname'],
'$verb' => ACTIVITY_UNFOLLOW
'$verb' => ACTIVITY_UNFOLLOW,
'$ostat_follow' => '<as:verb>http://ostatus.org/schema/1.0/unfollow</as:verb>' . "\r\n"
));
if((x($orig_record[0],'notify')) && (strlen($orig_record[0]['notify']))) {

View File

@ -243,6 +243,7 @@ function display_content(&$a) {
$tmp_item = replace_macros($template,array(
'$id' => $item['item_id'],
'$title' => t('View $name\'s profile'),
'$profile_url' => $profile_link,
'$name' => $profile_name,
'$sparkle' => $sparkle,

View File

@ -173,7 +173,8 @@ function follow_post(&$a) {
'$type' => 'text',
'$content' => t('following'),
'$nick' => $a->user['nickname'],
'$verb' => ACTIVITY_FOLLOW
'$verb' => ACTIVITY_FOLLOW,
'$ostat_follow' => ''
));
$r = q("SELECT `contact`.*, `user`.* FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`

View File

@ -24,6 +24,9 @@ function home_content(&$a) {
$o .= file_get_contents('home.html');
$o .= login(($a->config['register_policy'] == REGISTER_CLOSED) ? 0 : 1);
call_hooks("home_content",$o);
return $o;

View File

@ -128,6 +128,50 @@ function item_post(&$a) {
}
}
/**
*
* If a photo was uploaded into the message using the ajax uploader,
* it can be seen by anybody. Set the permissions to match the message.
* Ideally this should be done when the photo was uploaded, but the permissions
* may not have been set at that time, and passing the permission arrays via
* javascript to the ajax upload is going to be a challenge.
* This is a compromise. Granted there is a window of time when the photo
* is public. You are welcome to suggest other ways to fix this.
*
*/
$match = null;
if($private) {
if(preg_match_all("/\[img\](.+?)\[\/img\]/",$body,$match)) {
$images = $match[1];
if(count($images)) {
foreach($images as $image) {
if(! stristr($image,$a->get_baseurl() . '/photo/'))
continue;
$image_uri = substr($image,strrpos($image,'/') + 1);
$image_uri = substr($image_uri,0, strpos($image_uri,'-'));
$r = q("UPDATE `photo` SET `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s'
WHERE `resource-id` = '%s' AND `album` = '%s' ",
dbesc($str_contact_allow),
dbesc($str_group_allow),
dbesc($str_contact_deny),
dbesc($str_group_deny),
dbesc($image_uri),
dbesc( t('Wall Photos'))
);
}
}
}
}
/**
* Look for any tags and linkify them
*/
$str_tags = '';
$inform = '';

View File

@ -104,10 +104,15 @@ function network_content(&$a, $update = 0) {
}
$contacts = expand_groups(array($group));
if((is_array($contacts)) && count($contacts)) {
$contact_str = implode(',',$contacts);
}
else {
$contact_str = ' 0 ';
notice( t('Group is empty'));
}
$sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND `contact-id` IN ( $contact_str )) ";
$o = '<h4>' . t('Group: ') . $r[0]['name'] . '</h4>' . $o;
}
$r = q("SELECT COUNT(*) AS `total`
@ -286,6 +291,7 @@ function network_content(&$a, $update = 0) {
$tmp_item = replace_macros($template,array(
'$id' => $item['item_id'],
'$title' => t('View $name\'s profile'),
'$profile_url' => $profile_link,
'$name' => $profile_name,
'$thumb' => $profile_avatar,

View File

@ -766,9 +766,10 @@ function photos_content(&$a) {
intval($owner_uid),
dbesc($album)
);
if(count($r))
if(count($r)) {
$a->set_pager_total(count($r));
$a->set_pager_itemspage(20);
}
$r = q("SELECT `resource-id`, `id`, `filename`, max(`scale`) AS `scale` FROM `photo` WHERE `uid` = %d AND `album` = '%s'
$sql_extra GROUP BY `resource-id` ORDER BY `created` DESC LIMIT %d , %d",
@ -817,6 +818,8 @@ function photos_content(&$a) {
}
$o .= '<div id="photo-album-end"></div>';
$o .= paginate($a);
return $o;
}
@ -1107,9 +1110,10 @@ function photos_content(&$a) {
intval($a->data['user']['uid']),
dbesc( t('Contact Photos'))
);
if(count($r))
if(count($r)) {
$a->set_pager_total(count($r));
$a->set_pager_itemspage(20);
}
$r = q("SELECT `resource-id`, `id`, `filename`, `album`, max(`scale`) AS `scale` FROM `photo`
WHERE `uid` = %d AND `album` != '%s'
@ -1147,5 +1151,6 @@ function photos_content(&$a) {
}
$o .= '<div id="photo-top-end"></div>';
}
$o .= paginate($a);
return $o;
}

View File

@ -344,6 +344,7 @@ function profile_content(&$a, $update = 0) {
$tmp_item = replace_macros($template,array(
'$id' => $item['item_id'],
'$title' => t('View $name\'s profile'),
'$profile_url' => $profile_link,
'$name' => $profile_name,
'$thumb' => $profile_avatar,

View File

@ -291,10 +291,15 @@ function settings_content(&$a) {
$theme_selector = '<select name="theme" id="theme-select" >';
$files = glob('view/theme/*');
$default_theme = get_config('system','theme');
if(! $default_theme)
$default_theme = 'default';
if($files) {
foreach($files as $file) {
$f = basename($file);
$selected = (($f == $_SESSION['theme']) || ($f === 'default' && (! x($_SESSION,'theme')))
$selected = (($f == $_SESSION['theme']) || ($f === $default_theme && (! x($_SESSION,'theme')))
? ' selected="selected" ' : '' );
$theme_selector .= '<option val="' . basename($file) . '"' . $selected . '>' . basename($file) . '</option>';
}

View File

@ -139,6 +139,7 @@ $a->strings['Global Directory'] = 'Global Directory';
$a->strings['Item not found.'] = 'Item not found.';
$a->strings['Private Message'] = 'Private Message';
$a->strings['This is you'] = 'This is you';
$a->strings['View $name\'s profile'] = 'View $name\'s profile';
$a->strings['Item has been removed.'] = 'Item has been removed.';
$a->strings['The profile address specified does not provide adequate information.'] = 'The profile address specified does not provide adequate information.';
$a->strings['Limited profile. This person will be unable to receive direct/personal notifications from you.'] = 'Limited profile. This person will be unable to receive direct/personal notifications from you.';
@ -195,7 +196,6 @@ $a->strings['Unable to locate original post.'] = 'Unable to locate original post
$a->strings['Empty post discarded.'] = 'Empty post discarded.';
$a->strings[" commented on your item at "] = " commented on your item at ";
$a->strings[" posted on your profile wall at "] = " posted on your profile wall at ";
$a->strings['Facebook status update failed.'] = 'Facebook status update failed.';
$a->strings['photo'] = 'photo';
$a->strings['status'] = 'status';
$a->strings['likes'] = 'likes';
@ -227,6 +227,7 @@ $a->strings['Message not available.'] = 'Message not available.';
$a->strings['Delete message'] = 'Delete message';
$a->strings['Send Reply'] = 'Send Reply';
$a->strings['No such group'] = 'No such group';
$a->strings['Group is empty'] = 'Group is empty';
$a->strings['Group: '] = 'Group: ';
$a->strings['Invalid request identifier.'] = 'Invalid request identifier.';
$a->strings['Discard'] = 'Discard';
@ -341,10 +342,10 @@ $a->strings['Select a tag to remove: '] = 'Select a tag to remove: ';
$a->strings['Remove'] = 'Remove';
$a->strings['No contacts.'] = 'No contacts.';
$a->strings['Wall Photos'] = 'Wall Photos';
$a->strings['Logged out.'] = 'Logged out.';
$a->strings['Visible To:'] = 'Visible To:';
$a->strings['Groups'] = 'Groups';
$a->strings['Except For:'] = 'Except For:';
$a->strings['Logged out.'] = 'Logged out.';
$a->strings['Unknown | Not categorised'] = 'Unknown | Not categorised';
$a->strings['Block immediately'] = 'Block immediately';
$a->strings['Shady, spammer, self-marketer'] = 'Shady, spammer, self-marketer';

View File

@ -21,4 +21,5 @@
<poco:displayName>$name</poco:displayName>
</as:actor>
<as:verb>$verb</as:verb>
$ostat_follow
</entry>

View File

@ -48,7 +48,7 @@ $ignored
<div id="contact-edit-profile-select-text">
<h4>Visibilt&agrave; Profiloe</h4>
<h4>Visibilt&agrave; Profilo</h4>
<p>Scegli il profilo che vuoi mostrare a $name quando guarda il tuo profilo in modo sicuro.</p>
</div>
$profile_select

View File

@ -6,14 +6,14 @@ connessione a '$sitename'.
'$fn' ha scelto di accertarti come "fan", che limita alcune forme di
comunicazione, come i messaggi privati e alcune interazioni con il profilo.
Se &egrave; una celebrit&agrave; o una pagina di community, queste impostazioni
Se e' una celebrita' o una pagina di community, queste impostazioni
sono applicate automaticamente.
'$fn' puo' decidere di estendere in una relazione pi&ugrave; permissiva
'$fn' puo' decidere di estendere in una relazione piu' permissiva
nel futuro.
Comincerai a rivecere gli aggiornamenti pubblici da '$fn',
che apparir&agrave; sulla tua pagina 'Rete' su
che apparira' sulla tua pagina 'Rete' su
$siteurl

View File

@ -1,6 +1,6 @@
<div id="settings-normal-wrapper">
<label id="settings-normal-label" for="settings-normal">Profile Normale</label>
<label id="settings-normal-label" for="settings-normal">Profilo Normale</label>
<input type="radio" name="page-flags" id="settings-normal" $normal_selected value="$page_normal" />
<span id="settings-normal-desc">Questo account &egrave; un nomale profilo personale</span>
</div>

View File

@ -1,5 +1,5 @@
<p id="profile-in-directory">
Pubblicare il tuo profilo di default nell'elenco sul sisto?
Pubblicare il tuo profilo di default nell'elenco sul sito?
</p>
<div id="profile-in-dir-yes-wrapper">

View File

@ -4,7 +4,7 @@
La tua password &egrave; stata resettata come richiesto.
</p>
<p>
La tua nuova password %egrave;
La tua nuova password &egrave;
</p>
<p>
$newpass

View File

@ -91,11 +91,11 @@ $a->strings['Contact record was not found for you on our site.'] = 'Il contatto
$a->strings['The ID provided by your system is a duplicate on our system. It should work if you try again.'] = 'L\'ID fornito dal tuo sistema e\' duplicato sul nostro sistema. Dovrebbe funzionare se provi ancora.';
$a->strings['Unable to set your contact credentials on our system.'] = 'Impossibile impostare le credenziali del tuo contatto sul nostro sistema.';
$a->strings['Unable to update your contact profile details on our system'] = 'Impossibile aggiornare i dettagli del tuo contatto sul nostro sistema';
$a->strings["Connection accepted at "] = "Connessione accettata alle ";
$a->strings["Connection accepted at "] = "Connessione accettata su ";
$a->strings['Administrator'] = 'Amministratore';
$a->strings['New mail received at '] = 'Nuova mail ricevuta alle ';
$a->strings[' commented on an item at '] = ' commentato un elemento alle ';
$a->strings[" commented on an item at "] = " commentato un elemento alle ";
$a->strings['New mail received at '] = 'Nuova mail ricevuta su ';
$a->strings[' commented on an item at '] = ' commentato un elemento su ';
$a->strings[" commented on an item at "] = " commentato un elemento su ";
$a->strings[' welcomes '] = ' accoglie ';
$a->strings["This introduction has already been accepted."] = "Questa presentazione &egrave; gi&agrave; stata accettata.";
$a->strings['Profile location is not valid or does not contain profile information.'] = 'La posizione del profilo non &egrave; valida o non contiene informazioni di profilo.';
@ -189,8 +189,8 @@ $a->strings['To accept this invitation, please visit:'] = 'Per accettare questo
$a->strings['Once you have registered, please connect with me via my profile page at:'] = 'Una volta registrato, connettiti con me sul mio profilo a:';
$a->strings['Unable to locate original post.'] = 'Impossibile trovare il messaggio originale.';
$a->strings['Empty post discarded.'] = 'Messaggio vuoto scartato.';
$a->strings[" commented on your item at "] = " ha commentato il tuo elemento alle ";
$a->strings[" posted on your profile wall at "] = " ha inviato un messaggio sulla tua bachecha alle ";
$a->strings[" commented on your item at "] = " ha commentato il tuo elemento su ";
$a->strings[" posted on your profile wall at "] = " ha inviato un messaggio sulla tua bachecha su ";
$a->strings['Facebook status update failed.'] = 'Aggiornamento stato Facebook fallito.';
$a->strings['photo'] = 'foto';
$a->strings['status'] = 'stato';
@ -199,7 +199,7 @@ $a->strings['doesn\'t like'] = 'non apprezza';
$a->strings['\'s'] = '\'s';
$a->strings['Remote privacy information not available.'] = 'Informazioni remote sulla privacy non disponibili.';
$a->strings['Visible to:'] = 'Visibile a:';
$a->strings['Password reset requested at '] = 'Resetta password richiesta alle ';
$a->strings['Password reset requested at '] = 'Richiesta di resettare la password su ';
$a->strings['No recipient selected.'] = 'Nessun destinatario selezionato.';
$a->strings['[no subject]'] = '[nessun oggetto]';
$a->strings['Unable to locate contact information.'] = 'Impossibile trovare le informazioni del contatto.';

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 B

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,13 @@
<div class="wall-item-outside-wrapper$indent" id="wall-item-outside-wrapper-$id" >
<div class="wall-item-content-wrapper$indent" id="wall-item-content-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">
<a href="$profile_url" title="$title" class="wall-item-photo-link" id="wall-item-photo-link-$id">
<img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" height="80" width="80" alt="$name" /></a>
</div>
<div class="wall-item-wrapper" id="wall-item-wrapper-$id" >
$lock
<a href="$profile_url" title="View $name's profile" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
<a href="$profile_url" title="$title" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
<div class="wall-item-location" id="wall-item-location-$id">$location</div>
$vote