diff --git a/include/poller.php b/include/poller.php
index f689059b9..2febaeb32 100644
--- a/include/poller.php
+++ b/include/poller.php
@@ -149,6 +149,13 @@ function poller_run($argv, $argc){
update_birthdays();
+ //update statistics in config
+ require_once('include/statistics_fns.php');
+ update_channels_total_stat();
+ update_channels_active_halfyear_stat();
+ update_channels_active_monthly_stat();
+ update_local_posts_stat();
+
// expire any read notifications over a month old
q("delete from notify where seen = 1 and date < UTC_TIMESTAMP() - INTERVAL 30 DAY");
diff --git a/include/statistics_fns.php b/include/statistics_fns.php
new file mode 100644
index 000000000..4f72e6615
--- /dev/null
+++ b/include/statistics_fns.php
@@ -0,0 +1,73 @@
+ UTC_TIMESTAMP - INTERVAL 6 MONTH");
+ if($r) {
+ $s = '';
+ foreach($r as $rr) {
+ if($s)
+ $s .= ',';
+ $s .= intval($rr['channel_id']);
+ }
+ $x = q("select uid from item where uid in ( $s ) and (item_flags & %d) and created > UTC_TIMESTAMP - INTERVAL 6 MONTH group by uid",
+ intval(ITEM_WALL)
+ );
+ if($x) {
+ $channels_active_halfyear_stat = count($x);
+ set_config('system','channels_active_halfyear_stat',$channels_active_halfyear_stat);
+ } else {
+ set_config('system','channels_active_halfyear_stat',null);
+ }
+ } else {
+ set_config('system','channels_active_halfyear_stat',null);
+ }
+}
+
+function update_channels_active_monthly_stat() {
+ $r = q("select channel_id from channel left join account on account_id = channel_account_id
+ where account_flags = 0 and account_lastlog > UTC_TIMESTAMP - INTERVAL 1 MONTH");
+ if($r) {
+ $s = '';
+ foreach($r as $rr) {
+ if($s)
+ $s .= ',';
+ $s .= intval($rr['channel_id']);
+ }
+ $x = q("select uid from item where uid in ( $s ) and ( item_flags & %d ) and created > UTC_TIMESTAMP - INTERVAL 1 MONTH group by uid",
+ intval(ITEM_WALL)
+ );
+ if($x) {
+ $channels_active_monthly_stat = count($x);
+ set_config('system','channels_active_monthly_stat',$channels_active_monthly_stat);
+ } else {
+ set_config('system','channels_active_monthly_stat',null);
+ }
+ } else {
+ set_config('system','channels_active_monthly_stat',null);
+ }
+}
+
+function update_local_posts_stat() {
+ $posts = q("SELECT COUNT(*) AS local_posts FROM `item` WHERE (item_flags & %d) ",
+ intval(ITEM_WALL) );
+ if (is_array($posts)) {
+ $local_posts_stat = intval($posts[0]["local_posts"]);
+ set_config('system','local_posts_stat',$local_posts_stat);
+ } else {
+ set_config('system','local_posts_stat',null);
+ }
+}
+
+
diff --git a/mod/photos.php b/mod/photos.php
index 0ff0e29c9..f02f0f5f7 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -653,9 +653,6 @@ function photos_content(&$a) {
intval($a->pager['itemspage'])
);
- $o .= '
';
-
foreach($r as $rr) {
if($twist == 'rotright')
@@ -720,57 +703,58 @@ function photos_content(&$a) {
$imgalt_e = $rr['filename'];
$desc_e = $rr['description'];
+ $imagelink = ($a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/image/' . $rr['resource_id']
+ . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''));
-// prettyphoto has potential license issues, so we can no longer include it in core
-// The following lines would need to be modified so that they are provided in theme specific files
-// instead of core modules for themes that wish to make use of prettyphoto. I would suggest
-// the feature as a per-theme display option and putting the rel line inside a template.
-
-// if(feature_enabled($a->data['channel']['channel_id'],'prettyphoto')){
-// $imagelink = ($a->get_baseurl() . '/photo/' . $rr['resource_id'] . '.' . $ext );
-// $rel=("prettyPhoto[pp_gal]");
-// }
-// else {
- $imagelink = ($a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/image/' . $rr['resource_id']
- . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''));
- $rel=("photo");
-// }
-
+ $rel=("photo");
- $tmp = replace_macros($tpl,array(
- '$id' => $rr['id'],
- '$twist' => ' ' . $twist . rand(2,4),
- '$photolink' => $imagelink,
- '$rel' => $rel,
- '$phototitle' => t('View Photo'),
- '$imgsrc' => $a->get_baseurl() . '/photo/' . $rr['resource_id'] . '-' . $rr['scale'] . '.' .$ext,
- '$imgalt' => $imgalt_e,
- '$desc'=> $desc_e,
- '$ext' => $ext,
- '$hash'=> $rr['resource_id'],
- ));
- if($_REQUEST['aj'])
- $ajaxout .= $tmp;
- else
- $o .= $tmp;
+ $photos[] = array(
+ 'id' => $rr['id'],
+ 'twist' => ' ' . $twist . rand(2,4),
+ 'link' => $imagelink,
+ 'rel' => $rel,
+ 'title' => t('View Photo'),
+ 'src' => $a->get_baseurl() . '/photo/' . $rr['resource_id'] . '-' . $rr['scale'] . '.' .$ext,
+ 'alt' => $imgalt_e,
+ 'desc'=> $desc_e,
+ 'ext' => $ext,
+ 'hash'=> $rr['resource_id'],
+ );
}
}
+
if($_REQUEST['aj']) {
- if(! $r) {
- $ajaxout .= '
';
- echo $ajaxout;
- killme();
+ if($photos) {
+ $o = replace_macros(get_markup_template('photosajax.tpl'),array(
+ '$photos' => $photos,
+ ));
}
- echo $ajaxout;
- echo '';
+ else {
+ $o = '
';
+ }
+ echo $o;
+ killme();
+ }
+ else {
+ $o .= "";
+ $tpl = get_markup_template('photo_album.tpl');
+ $o .= replace_macros($tpl, array(
+ '$photos' => $photos,
+ '$album' => $album,
+ '$can_post' => $can_post,
+ '$upload' => array(t('Upload'), $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/upload/' . bin2hex($album)),
+ '$order' => $order,
+ '$edit' => $edit
+ ));
+
+ }
+
+ if((! $photos) && ($_REQUEST['aj'])) {
+ $o .= '
';
+ echo $o;
killme();
}
- $o .= '
';
- $o .= '
'; // photo-album-contents
- $o .= '
+ {{foreach $photos as $photo}}
+ {{include file="photo_top.tpl"}}
+ {{/foreach}}
+
+
+