diff options
-rw-r--r-- | include/poller.php | 7 | ||||
-rw-r--r-- | include/statistics_fns.php | 73 | ||||
-rw-r--r-- | mod/photos.php | 114 | ||||
-rw-r--r-- | mod/siteinfo.php | 58 | ||||
-rw-r--r-- | view/theme/redbasic/css/style.css | 4 | ||||
-rwxr-xr-x | view/tpl/photo_album.tpl | 26 | ||||
-rwxr-xr-x | view/tpl/photo_top.tpl | 2 |
7 files changed, 165 insertions, 119 deletions
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 @@ +<?php /** @file */ + +function update_channels_total_stat() { + $r = q("select count(channel_id) as channels_total from channel left join account on account_id = channel_account_id + where account_flags = 0 "); + if($r) { + $channels_total_stat = intval($r[0]['channels_total']); + set_config('system','channels_total_stat',$channels_total_stat); + } else { + set_config('system','channels_total_stat',null); + } +} + +function update_channels_active_halfyear_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 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 .= '<div class="section-title-wrapper">'; - $o .= '<h2>' . $album . '</h2>'; - $o .= '<div class="section-title-submenu">'; if($cmd === 'edit') { if(($album !== t('Profile Photos')) && ($album !== 'Contact Photos') && ($album !== t('Contact Photos'))) { if($can_post) { @@ -681,33 +678,19 @@ function photos_content(&$a) { else { if(($album !== t('Profile Photos')) && ($album !== 'Contact Photos') && ($album !== t('Contact Photos'))) { if($can_post) { - $o .= '<a href="'. $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex($album) . '/edit' . '">' . t('Edit Album') . '</a>'; + $edit = array(t('Edit Album'), $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex($album) . '/edit'); } } } if($_GET['order'] === 'posted') - $o .= '<a href="' . $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex($album) . '" >' . t('Show Newest First') . '</a>'; + $order = array(t('Show Newest First'), $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex($album)); else - $o .= '<a href="' . $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex($album) . '?f=&order=posted" >' . t('Show Oldest First') . '</a>'; + $order = array(t('Show Oldest First'), $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex($album) . '?f=&order=posted'); - /* - if($can_post) { - $o .= '<a href="' . $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/upload/' . bin2hex($album) . '" >' . t('Upload New Photos') . '</<a>'; - } - */ - - $o .= '</div>'; // section-title-submenu - $o .= '</div>'; // section-title-wrapper - - $ajaxout = ''; - - $tpl = get_markup_template('photo_album.tpl'); + $photos = array(); if(count($r)) { $twist = 'rotright'; - $o .= "<script> var page_query = '" . $_GET['q'] . "'; var extra_args = '" . extra_query_args() . "' ; </script>"; - $o .= '<div id="photo-album-contents">'; - foreach($r as $rr) { if($twist == 'rotright') @@ -720,57 +703,58 @@ function photos_content(&$a) { $imgalt_e = $rr['filename']; $desc_e = $rr['description']; - -// 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"); -// } - - - $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; + $imagelink = ($a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/image/' . $rr['resource_id'] + . (($_GET['order'] === 'posted') ? '?f=&order=posted' : '')); + + $rel=("photo"); + + $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 .= '<div id="content-complete"></div>'; - echo $ajaxout; - killme(); + if($photos) { + $o = replace_macros(get_markup_template('photosajax.tpl'),array( + '$photos' => $photos, + )); + } + else { + $o = '<div id="content-complete"></div>'; } - echo $ajaxout; - echo '<script>justifyPhotosAjax();</script>'; + echo $o; + killme(); + } + else { + $o .= "<script> var page_query = '" . $_GET['q'] . "'; var extra_args = '" . extra_query_args() . "' ; </script>"; + $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 .= '<div id="content-complete"></div>'; + echo $o; killme(); } - $o .= '<div id="page-end"></div>'; - $o .= '</div>'; // photo-album-contents - $o .= '<div id="photo-album-end"></div>'; - $o .= '<script>$(document).ready(function() { loadingPage = false; justifyPhotos(); });</script>'; - $o .= '<div id="page-spinner"></div>'; // $o .= paginate($a); return $o; diff --git a/mod/siteinfo.php b/mod/siteinfo.php index eab52e41e..de55c69cf 100644 --- a/mod/siteinfo.php +++ b/mod/siteinfo.php @@ -50,51 +50,12 @@ function siteinfo_init(&$a) { $site_info = get_config('system','info'); $site_name = get_config('system','sitename'); - // Statistics (from statistics.json plugin) + //Statistics + $channels_total_stat = intval(get_config('system','channels_total_stat')); + $channels_active_halfyear_stat = intval(get_config('system','channels_active_halfyear_stat')); + $channels_active_monthly_stat = intval(get_config('system','channels_active_monthly_stat')); + $local_posts_stat = intval(get_config('system','local_posts_stat')); - $r = q("select count(channel_id) as channels_total from channel left join account on account_id = channel_account_id - where account_flags = 0 "); - if($r) - $channels_total = intval($r[0]['channels_total']); - - $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 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 = count($x); - } - - $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 = count($x); - } - - $posts = q("SELECT COUNT(*) AS local_posts FROM `item` WHERE (item_flags & %d) ", - intval(ITEM_WALL) - ); - if (is_array($posts)) - $local_posts = intval($posts[0]["local_posts"]); - $data = Array( 'version' => RED_VERSION, 'commit' => $commit, @@ -102,6 +63,7 @@ function siteinfo_init(&$a) { 'plugins' => $visible_plugins, 'register_policy' => $register_policy[$a->config['system']['register_policy']], 'directory_mode' => $directory_mode[$a->config['system']['directory_mode']], + 'language' => get_config('system','language'), 'diaspora_emulation' => get_config('system','diaspora_enabled'), 'rss_connections' => get_config('system','feed_contacts'), 'default_service_restrictions' => $service_class, @@ -109,10 +71,10 @@ function siteinfo_init(&$a) { 'site_name' => (($site_name) ? $site_name : ''), 'platform' => RED_PLATFORM, 'info' => (($site_info) ? $site_info : ''), - 'channels_total' => $channels_total, - 'channels_active_halfyear' => $channels_active_halfyear, - 'channels_active_monthly' => $channels_active_monthly, - 'local_posts' => $local_posts + 'channels_total' => $channels_total_stat, + 'channels_active_halfyear' => $channels_active_halfyear_stat, + 'channels_active_monthly' => $channels_active_monthly_stat, + 'local_posts' => $local_posts_stat ); json_return_and_die($data); } diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css index 9bbf996d5..7df70e714 100644 --- a/view/theme/redbasic/css/style.css +++ b/view/theme/redbasic/css/style.css @@ -75,12 +75,12 @@ a:hover, .fakelink:hover { color: $link_colour; text-decoration: underline; } a.btn-default { color: #333; - + font-weight: normal; } a.btn-success { color: #fff; -font-weight: normal; + font-weight: normal; } input[type="text"], diff --git a/view/tpl/photo_album.tpl b/view/tpl/photo_album.tpl index b5ea14c14..d23f7e817 100755 --- a/view/tpl/photo_album.tpl +++ b/view/tpl/photo_album.tpl @@ -1,3 +1,23 @@ -<a href="{{$photolink}}" id="photo-album-photo-link-{{$id}}" title="{{$phototitle}}" rel="{{$rel}}"> - <img src="{{$imgsrc}}" alt="{{if $desc}}{{$desc}}{{else}}{{$imgalt}}{{/if}}" title="{{$phototitle}}" id="photo-album-photo-{{$id}}" /> -</a> +<div class="section-title-wrapper"> + <div class="btn-group btn-group-xs pull-right"> + {{if $edit}} + <a class="btn btn-default" href="{{$edit.1}}" title="{{$edit.0}}"><i class="icon-pencil"></i></a> + {{/if}} + <a class="btn btn-default" href="{{$order.1}}" title="{{$order.0}}"><i class="icon-sort"></i></a> + {{if $can_post}} + <a class="btn btn-xs btn-success" href="{{$upload.1}}"><i class="icon-upload"></i> {{$upload.0}}</a> + {{/if}} + </div> + <h2>{{$album}}</h2> + + <div class="clear"></div> +</div> +<div id="photo-album-contents"> + {{foreach $photos as $photo}} + {{include file="photo_top.tpl"}} + {{/foreach}} + <div id="page-end"></div> +</div> +<div class="photos-end"></div> +<script>$(document).ready(function() { loadingPage = false; justifyPhotos(); });</script> +<div id="page-spinner"></div> diff --git a/view/tpl/photo_top.tpl b/view/tpl/photo_top.tpl index 4a106c30d..ee21e5cce 100755 --- a/view/tpl/photo_top.tpl +++ b/view/tpl/photo_top.tpl @@ -1,4 +1,4 @@ <a href="{{$photo.link}}" id="photo-top-photo-link-{{$photo.id}}" title="{{$photo.title}}"> - <img src="{{$photo.src}}" alt="{{$photo.album.name}}" title="{{$photo.title}}" id="photo-top-photo-{{$photo.id}}" /> + <img src="{{$photo.src}}" alt="{{if $photo.album.name}}{{$photo.album.name}}{{elseif $photo.desc}}{{$photo.desc}}{{else}}{{$photo.alt}}{{/if}}" title="{{$photo.title}}" id="photo-top-photo-{{$photo.id}}" /> </a> |