Merge pull request #570 from annando/master

Vier, caches and "share" via API
This commit is contained in:
friendica 2013-01-04 15:13:09 -08:00
commit 88cc414355
12 changed files with 227 additions and 29 deletions

9
.gitignore vendored
View file

@ -24,4 +24,11 @@ report/
#ignore OSX .DS_Store files
.DS_Store
/nbproject/private/
/nbproject/private/
#ignore smarty cache
/view/smarty3/compiled/
#ignore cache folders
/privacy_image_cache/
/photo/

View file

@ -944,7 +944,7 @@
//$include_entities = (x($_REQUEST,'include_entities')?$_REQUEST['include_entities']:false);
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`nick` as `reply_author`,
`contact`.`name`, `contact`.`photo`, `contact`.`url` as `reply_url`, `contact`.`rel`,
`contact`.`name`, `contact`.`photo` as `reply_photo`, `contact`.`url` as `reply_url`, `contact`.`rel`,
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
FROM `item`, `contact`
@ -957,7 +957,18 @@
);
if ($r[0]['body'] != "") {
$_REQUEST['body'] = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8')."[url=".$r[0]['reply_url']."]".$r[0]['reply_author']."[/url] \n".$r[0]['body'];
if (intval(get_config('system','new_share'))) {
$post = "[share author='".str_replace("'", "'", $r[0]['reply_author']).
"' profile='".$r[0]['reply_url'].
"' avatar='".$r[0]['reply_photo'].
"' link='".$r[0]['plink']."']";
$post .= $r[0]['body'];
$post .= "[/share]";
$_REQUEST['body'] = $post;
} else
$_REQUEST['body'] = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8')."[url=".$r[0]['reply_url']."]".$r[0]['reply_author']."[/url] \n".$r[0]['body'];
$_REQUEST['profile_uid'] = api_user();
$_REQUEST['type'] = 'wall';
$_REQUEST['api_source'] = true;

View file

@ -310,6 +310,7 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
// remove some newlines before the general conversion
$Text = preg_replace("/\s?\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism","[share$1]$2[/share]",$Text);
$Text = preg_replace("/\s?\[quote(.*?)\]\s?(.*?)\s?\[\/quote\]\s?/ism","[quote$1]$2[/quote]",$Text);
// when the content is meant exporting to other systems then remove the avatar picture since this doesn't really look good on these systems
if (!$tryoembed)
@ -324,6 +325,15 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
$Text = trim($Text);
$Text = str_replace("\r\n","\n", $Text);
// removing multiplicated newlines
$search = array("\n\n\n", "\n ", " \n", "[/quote]\n\n", "\n[/quote]");
$replace = array("\n\n", "\n", "\n", "[/quote]\n", "[/quote]");
do {
$oldtext = $Text;
$Text = str_replace($search, $replace, $Text);
} while ($oldtext != $Text);
$Text = str_replace(array("\r","\n"), array('<br />','<br />'), $Text);
if($preserve_nl)

View file

@ -99,14 +99,26 @@ function poller_run(&$argv, &$argc){
proc_run('php','include/expire.php');
}
// clear old cache
Cache::clear();
$last = get_config('system','cache_last_cleared');
// clear old item cache files
clear_cache();
if($last) {
$next = $last + (3600); // Once per hour
$clear_cache = ($next <= time());
} else
$clear_cache = true;
// clear cache for photos
clear_cache($a->get_basepath(), $a->get_basepath()."/photo");
if ($clear_cache) {
// clear old cache
Cache::clear();
// clear old item cache files
clear_cache();
// clear cache for photos
clear_cache($a->get_basepath(), $a->get_basepath()."/photo");
set_config('system','cache_last_cleared', time());
}
$manual_id = 0;
$generation = 0;

View file

@ -115,10 +115,10 @@ class Item extends BaseObject {
$drop = array(
'dropping' => $dropping,
'pagedrop' => ((feature_enabled($conv->get_profile_owner(),'multi_delete')) ? $item['pagedrop'] : ''),
'select' => t('Select'),
'select' => t('Select'),
'delete' => t('Delete'),
);
$filer = (($conv->get_profile_owner() == local_user()) ? t("save to folder") : false);
$diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true);
@ -133,7 +133,7 @@ class Item extends BaseObject {
if($sp)
$sparkle = ' sparkle';
else
$profile_link = zrl($profile_link);
$profile_link = zrl($profile_link);
$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
if(($normalised != 'mailbox') && (x($a->contacts,$normalised)))
@ -212,9 +212,14 @@ class Item extends BaseObject {
localize_item($item);
if ($item["postopts"]) {
$langdata = explode(";", $item["postopts"]);
$langstr = substr($langdata[0], 5)." (".round($langdata[1]*100, 1)."%)";
}
$body = prepare_body($item,true);
list($categories, $folders) = get_cats_and_terms($item);
list($categories, $folders) = get_cats_and_terms($item);
if($a->theme['template_engine'] === 'internal') {
$body_e = template_escape($body);
@ -235,7 +240,7 @@ class Item extends BaseObject {
$tmp_item = array(
'template' => $this->get_template(),
'type' => implode("",array_slice(explode("/",$item['verb']),-1)),
'tags' => $tags,
'hashtags' => $hashtags,
@ -285,7 +290,8 @@ class Item extends BaseObject {
'comment' => $this->get_comment_box($indent),
'previewing' => ($conv->is_preview() ? ' preview ' : ''),
'wait' => t('Please wait'),
'thread_level' => $thread_level
'thread_level' => $thread_level,
'postopts' => $langstr
);
$arr = array('item' => $item, 'output' => $tmp_item);

View file

@ -0,0 +1 @@
<div class="clear"></div>

View file

@ -0,0 +1,65 @@
<div class="vcard">
<div class="tool">
<div class="fn label">$profile.name</div>
{{ if $profile.edit }}
<div class="action">
<a class="icon s16 edit ttright" href="#" rel="#profiles-menu" title="$profile.edit.3"><span>$profile.edit.1</span></a>
<ul id="profiles-menu" class="menu-popup">
{{ for $profile.menu.entries as $e }}
<li>
<a href="profiles/$e.id"><img src='$e.photo'>$e.profile_name</a>
</li>
{{ endfor }}
<li><a href="profile_photo" >$profile.menu.chg_photo</a></li>
<li><a href="profiles/new" id="profile-listing-new-link">$profile.menu.cr_new</a></li>
<li><a href="profiles" >$profile.edit.3</a></li>
</ul>
</div>
{{ else }}
<div class="profile-edit-side-div"><a class="profile-edit-side-link icon edit" title="$editprofile" href="profiles/$profid" ></a></div>
{{ endif }}
</div>
<div id="profile-photo-wrapper"><img class="photo" src="$profile.photo?rev=$profile.picdate" alt="$profile.name" /></div>
{{ if $pdesc }}<div class="title">$profile.pdesc</div>{{ endif }}
{{ if $location }}
<dl class="location"><dt class="location-label">$location</dt><br>
<dd class="adr">
{{ if $profile.address }}<div class="street-address">$profile.address</div>{{ endif }}
<span class="city-state-zip">
<span class="locality">$profile.locality</span>{{ if $profile.locality }}, {{ endif }}
<span class="region">$profile.region</span>
<span class="postal-code">$profile.postal-code</span>
</span>
{{ if $profile.country-name }}<span class="country-name">$profile.country-name</span>{{ endif }}
</dd>
</dl>
{{ endif }}
{{ if $gender }}<dl class="mf"><dt class="gender-label">$gender</dt> <dd class="x-gender">$profile.gender</dd></dl>{{ endif }}
{{ if $profile.pubkey }}<div class="key" style="display:none;">$profile.pubkey</div>{{ endif }}
{{ if $marital }}<dl class="marital"><dt class="marital-label"><span class="heart">&hearts;</span>$marital</dt><dd class="marital-text">$profile.marital</dd></dl>{{ endif }}
{{ if $homepage }}<dl class="homepage"><dt class="homepage-label">$homepage</dt><dd class="homepage-url"><a href="$profile.homepage" target="external-link">$profile.homepage</a></dd></dl>{{ endif }}
{{ inc diaspora_vcard.tpl }}{{ endinc }}
<div id="profile-extra-links">
<ul>
{{ if $connect }}
<li><a id="dfrn-request-link" href="dfrn_request/$profile.nickname">$connect</a></li>
{{ endif }}
</ul>
</div>
</div>
$contact_block

View file

@ -0,0 +1 @@
<div class="clear"></div>

View file

@ -0,0 +1,65 @@
<div class="vcard">
<div class="tool">
<div class="fn label">{{$profile.name}}</div>
{{if $profile.edit}}
<div class="action">
<a class="icon s16 edit ttright" href="#" rel="#profiles-menu" title="{{$profile.edit.3}}"><span>{{$profile.edit.1}}</span></a>
<ul id="profiles-menu" class="menu-popup">
{{foreach $profile.menu.entries as $e}}
<li>
<a href="profiles/{{$e.id}}"><img src='{{$e.photo}}'>{{$e.profile_name}}</a>
</li>
{{/foreach}}
<li><a href="profile_photo" >{{$profile.menu.chg_photo}}</a></li>
<li><a href="profiles/new" id="profile-listing-new-link">{{$profile.menu.cr_new}}</a></li>
<li><a href="profiles" >{{$profile.edit.3}}</a></li>
</ul>
</div>
{{else}}
<div class="profile-edit-side-div"><a class="profile-edit-side-link icon edit" title="{{$editprofile}}" href="profiles/{{$profid}}" ></a></div>
{{/if}}
</div>
<div id="profile-photo-wrapper"><img class="photo" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}" /></div>
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
{{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt><br>
<dd class="adr">
{{if $profile.address}}<div class="street-address">{{$profile.address}}</div>{{/if}}
<span class="city-state-zip">
<span class="locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}}
<span class="region">{{$profile.region}}</span>
<span class="postal-code">{{$profile.postal-code}}</span>
</span>
{{if $profile.country-name}}<span class="country-name">{{$profile.country-name}}</span>{{/if}}
</dd>
</dl>
{{/if}}
{{if $gender}}<dl class="mf"><dt class="gender-label">{{$gender}}</dt> <dd class="x-gender">{{$profile.gender}}</dd></dl>{{/if}}
{{if $profile.pubkey}}<div class="key" style="display:none;">{{$profile.pubkey}}</div>{{/if}}
{{if $marital}}<dl class="marital"><dt class="marital-label"><span class="heart">&hearts;</span>{{$marital}}</dt><dd class="marital-text">{{$profile.marital}}</dd></dl>{{/if}}
{{if $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url"><a href="{{$profile.homepage}}" target="external-link">{{$profile.homepage}}</a></dd></dl>{{/if}}
{{include file="diaspora_vcard.tpl"}}
<div id="profile-extra-links">
<ul>
{{if $connect}}
<li><a id="dfrn-request-link" href="dfrn_request/{{$profile.nickname}}">{{$connect}}</a></li>
{{/if}}
</ul>
</div>
</div>
{{$contact_block}}

View file

@ -111,7 +111,7 @@
<a href="#" id="filer-{{$item.id}}" onclick="itemFiler({{$item.id}}); return false;" class="filer-item filer-icon" title="{{$item.filer}}"><i class="icon-folder-close icon-large"></i></a>
{{/if}}
</div>
<div class="wall-item-location">{{$item.location}}</div>
<div class="wall-item-location">{{$item.location}} {{$item.postopts}}</div>
<div class="wall-item-actions-tools">
{{if $item.drop.pagedrop}}
@ -128,14 +128,16 @@
</div>
</div>
<div class="wall-item-bottom">
<div class="wall-item-links"></div>
<div class="wall-item-links">
</div>
<div class="wall-item-like" id="wall-item-like-{{$item.id}}">{{$item.like}}</div>
<div class="wall-item-dislike" id="wall-item-dislike-{{$item.id}}">{{$item.dislike}}</div>
</div>
{{if $item.threaded}}{{if $item.comment}}
<div class="wall-item-bottom">
<div class="wall-item-links"></div>
<div class="wall-item-links">
</div>
<div class="wall-item-comment-wrapper" id="item-comments-{{$item.id}}" style="display: none;">
{{$item.comment}}
</div>

View file

@ -7,6 +7,10 @@
@import url("css/font-awesome.css") all;
@import url("css/font2.css") all;
img {
border: 0px;
}
/* ========= */
/* = Admin = */
/* ========= */
@ -1067,8 +1071,9 @@ border-bottom: 1px solid #D2D2D2;
text-align: left;
width: 80px;
}
.wall-item-container .wall-item-location {
padding-right: 40px;
.wall-item-container {
/* padding-right: 30px; */
padding-right: 0px;
}
.wall-item-container .wall-item-ago {
word-wrap: break-word;
@ -1077,7 +1082,7 @@ border-bottom: 1px solid #D2D2D2;
color: #999;
}
.wall-item-location {
width: 180px;
width: 350px;
float: left;
}
@ -1253,7 +1258,8 @@ border-bottom: 1px solid #D2D2D2;
#profile-jot-form #profile-jot-text {
height: 2.0em;
width: 99%;
/* width: 99%; */
width: 752px;
font-size: 15px;
color: #999999;
border: 1px solid #DDD;
@ -1267,7 +1273,8 @@ border-bottom: 1px solid #D2D2D2;
font-weight: bold;
height: 20px;
margin: 0 0 5px;
width: 60%;
/* width: 60%; */
width: 762px;
border: 1px solid #d2d2d2;
}
@ -1282,6 +1289,10 @@ border-bottom: 1px solid #D2D2D2;
height: 100px;
}
#profile-jot-perms {
float: right;
}
#jot-preview-content {
padding-top: 25px;
}
@ -1689,7 +1700,7 @@ div.pager, .birthday-notice, ul.tabs a, #jot-preview-link, .comment-edit-submit-
border: 1px solid lightgray;
color: black;
background: #F2F2F2;
padding: 3px 7px 2px 7px;
padding: 2px 7px 2px 7px;
margin-top: 2px;
margin-bottom: 2px;
@ -1816,10 +1827,15 @@ div.pager, .birthday-notice, ul.tabs a, #jot-preview-link, .comment-edit-submit-
}
.profile-edit-side-div {
display: none;
/* float: right; */
/* display: none; */
float: right;
}
/* aside div.clear {
clear: none;
float: left;
} */
#register-form label,
#profile-edit-form label {
width: 300px; float: left;

View file

@ -111,7 +111,7 @@
<a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.filer"><i class="icon-folder-close icon-large"></i></a>
{{ endif }}
</div>
<div class="wall-item-location">$item.location</div>
<div class="wall-item-location">$item.location $item.postopts</div>
<div class="wall-item-actions-tools">
{{ if $item.drop.pagedrop }}
@ -128,14 +128,16 @@
</div>
</div>
<div class="wall-item-bottom">
<div class="wall-item-links"></div>
<div class="wall-item-links">
</div>
<div class="wall-item-like" id="wall-item-like-$item.id">$item.like</div>
<div class="wall-item-dislike" id="wall-item-dislike-$item.id">$item.dislike</div>
</div>
{{ if $item.threaded }}{{ if $item.comment }}
<div class="wall-item-bottom">
<div class="wall-item-links"></div>
<div class="wall-item-links">
</div>
<div class="wall-item-comment-wrapper" id="item-comments-$item.id" style="display: none;">
$item.comment
</div>