Browse Source

- Use GMT as a time reference in the database

- Apply the timezone offset when displaying the date
- Get the subscribers counter from the database
- Display the attached pictures in the posts
- Add some new locales
- Get the group subscriptions (if owner)
pull/16/head
Jaussoin Timothée 11 years ago
parent
commit
9c402767ee
  1. 3
      app/helpers/DateHelper.php
  2. 9
      app/helpers/TimezoneHelper.php
  3. 1
      app/models/item/Item.php
  4. 5
      app/models/item/ItemDAO.php
  5. 4
      app/models/postn/Postn.php
  6. 4
      app/widgets/Chat/Chat.php
  7. 26
      app/widgets/Group/Group.php
  8. 17
      app/widgets/Group/_group_header.tpl
  9. 14
      app/widgets/Group/_group_posts.tpl
  10. 20
      app/widgets/Group/_group_subscriptions.tpl
  11. 6
      app/widgets/Group/locales.ini
  12. 18
      app/widgets/Groups/_groups_server.tpl
  13. 3
      app/widgets/Groups/locales.ini
  14. 3
      bootstrap.php

3
app/helpers/DateHelper.php

@ -45,6 +45,9 @@ function getTimezoneCorrection() {
* @return string
*/
function prepareDate($time, $hours = true) {
// We had the server timezone
$time = $time + TIMEZONE_OFFSET;
$t = $time ? $time : time();
$date = '';

9
app/helpers/TimezoneHelper.php

@ -10,6 +10,15 @@ function getTimezoneList()
return $timezones;
}
/*
* Get the offset of a timezone
*/
function getTimezoneOffset($timezone)
{
$tz = new DateTimeZone($timezone);
return $tz->getOffset(new DateTime);
}
/*
* Generate the timezone list
*/

1
app/models/item/Item.php

@ -13,6 +13,7 @@ class Item extends Model {
public $description;
public $subscription;
public $num;
public $sub;
public function __construct() {
$this->_struct = '

5
app/models/item/ItemDAO.php

@ -143,6 +143,11 @@ class ItemDAO extends SQL {
where origin = :server
group by node) as p
on p.node = item.node
left outer join (
select node, count(node) as sub from subscription
where server = :server
group by node) as sub
on sub.node = item.node
left outer join (select server, node, subscription from subscription where jid = :node)
as s on s.server = item.server
and s.node = item.node

4
app/models/postn/Postn.php

@ -145,14 +145,14 @@ class Postn extends Model {
if($entry->entry->updated)
$this->updated = (string)$entry->entry->updated;
else
$this->updated = date(DATE_ISO8601);
$this->updated = gmdate(DATE_ISO8601);
if($entry->entry->published)
$this->published = (string)$entry->entry->published;
elseif($entry->entry->updated)
$this->published = (string)$entry->entry->updated;
else
$this->published = date(DATE_ISO8601);
$this->published = gmdate(DATE_ISO8601);
if($delay)
$this->delay = $delay;

4
app/widgets/Chat/Chat.php

@ -200,8 +200,8 @@ class Chat extends WidgetCommon
}
$m->body = rawurldecode($message);
$m->published = date('Y-m-d H:i:s');
$m->delivered = date('Y-m-d H:i:s');
$m->published = gmdate('Y-m-d H:i:s');
$m->delivered = gmdate('Y-m-d H:i:s');
if(!preg_match('#^\?OTR#', $m->body)) {
$md = new \Modl\MessageDAO();

26
app/widgets/Group/Group.php

@ -3,6 +3,7 @@
use Moxl\Xec\Action\Pubsub\GetItemsId;
use Moxl\Xec\Action\Pubsub\GetMetadata;
use Moxl\Xec\Action\Pubsub\GetAffiliations;
use Moxl\Xec\Action\Pubsub\GetSubscriptions;
use Moxl\Xec\Action\Pubsub\Subscribe;
use Moxl\Xec\Action\Pubsub\Unsubscribe;
@ -26,6 +27,8 @@ class Group extends WidgetCommon
$this->registerEvent('pubsub_subscribe_handle', 'onSubscribed');
$this->registerEvent('pubsub_unsubscribe_handle', 'onUnsubscribed');
$this->registerEvent('pubsub_getaffiliations_handle', 'onAffiliations');
$this->registerEvent('pubsub_getsubscriptions_handle', 'onSubscriptions');
$this->registerEvent('pubsub_getconfig_handle', 'onConfig');
$this->registerEvent('pubsub_setconfig_handle', 'onConfigSaved');
$this->registerEvent('bookmark_set_handle', 'onBookmark');
@ -73,7 +76,19 @@ class Group extends WidgetCommon
$view = $this->tpl();
RPC::call('movim_append', 'group_widget', $view->draw('_group_publish', true));
}
}
function onSubscriptions($packet)
{
list($subscriptions, $server, $node) = array_values($packet->content);
$view = $this->tpl();
$view->assign('subscriptions', $subscriptions);
$view->assign('server', $server);
$view->assign('node', $node);
Dialog::fill($view->draw('_group_subscriptions', true), true);
}
function onConfig($packet)
@ -202,6 +217,17 @@ class Group extends WidgetCommon
->request();
}
function ajaxGetSubscriptions($server, $node)
{
if(!$this->validateServerNode($server, $node)) return;
$r = new GetSubscriptions;
$r->setTo($server)
->setNode($node)
->setSync()
->request();
}
function ajaxAskSubscribe($server, $node)
{
if(!$this->validateServerNode($server, $node)) return;

17
app/widgets/Group/_group_header.tpl

@ -7,27 +7,36 @@
<div>
<ul class="active">
{if="$role == 'owner'"}
<li onclick="Group_ajaxGetConfig('{$item->server}', '{$item->node}')">
<li title="{$c->__('group.get_config')}"
onclick="Group_ajaxGetConfig('{$item->server}', '{$item->node}')">
<span class="icon">
<i class="md md-settings"></i>
</span>
</li>
<li title="{$c->__('group.get_subscriptions')}"
onclick="Group_ajaxGetSubscriptions('{$item->server}', '{$item->node}')">
<span class="icon">
<i class="md md-book"></i>
</span>
</li>
{/if}
{if="$subscription == null"}
<li onclick="Group_ajaxAskSubscribe('{$item->server}', '{$item->node}')">
<li title="{$c->__('group.subscribe')}"
onclick="Group_ajaxAskSubscribe('{$item->server}', '{$item->node}')">
<span class="icon">
<i class="md md-bookmark-outline"></i>
</span>
</li>
{else}
<li onclick="Group_ajaxAskUnsubscribe('{$item->server}', '{$item->node}')">
<li title="{$c->__('group.unsubscribe')}"
onclick="Group_ajaxAskUnsubscribe('{$item->server}', '{$item->node}')">
<span class="icon">
<i class="md md-bookmark"></i>
</span>
</li>
{/if}
</ul>
<h2 class="active {if="$role == 'owner'"}r2{else}r1{/if}"
<h2 class="active {if="$role == 'owner'"}r3{else}r1{/if}"
onclick="MovimTpl.hidePanel(); Group_ajaxClear(); Groups_ajaxHeader();">
<span id="back" class="icon"><i class="md md-arrow-back"></i></span>
{if="$item != null"}

14
app/widgets/Group/_group_posts.tpl

@ -59,6 +59,20 @@
{/loop}
{/if}
</ul>
{if="isset($value->getAttachements().pictures)"}
<ul class="flex middle">
{loop="$value->getAttachements().pictures"}
<li class="block">
<span class="icon small gray">
<i class="md md-image"></i>
</span>
<a href="{$value.href}" class="alternate" target="_blank">
<img type="{$value.type}" src="{$value.href|urldecode}"/>
</a>
</li>
{/loop}
</ul>
{/if}
</footer>
</article>
{/loop}

20
app/widgets/Group/_group_subscriptions.tpl

@ -0,0 +1,20 @@
<section class="scroll">
<ul class="thin divided simple">
<li class="subheader">
{$c->__('group.subscriptions')}
<span class="info">{$subscriptions|count}</span>
</li>
{loop="$subscriptions"}
<li>
<a href="{$c->route('contact', $value.jid)}">
{$value.jid}
</a>
</li>
{/loop}
</ul>
</section>
<div>
<a onclick="Dialog.clear()" class="button flat">
{$c->__('button.close')}
</a>
</div>

6
app/widgets/Group/locales.ini

@ -9,4 +9,8 @@ group.sure = 'Are you sure ?'
group.empty_title = 'Groups'
group.empty_text = 'Discover, follow and share'
group.empty = 'Something bad happened to this group'
group.config_saved = 'Group configuration saved'
group.config_saved = 'Group configuration saved'
group.get_config = 'Configure your group'
group.get_subscriptions = 'Get the subscriptions'
group.subscriptions = 'Subscriptions'

18
app/widgets/Groups/_groups_server.tpl

@ -3,7 +3,7 @@
<li
class="
{if="$value->subscription == 'subscribed'"}action{/if}
{if="$value->description"}condensed{/if}
condensed
"
data-server="{$value->server}"
data-node="{$value->node}"
@ -21,11 +21,19 @@
{else}
{$value->node}
{/if}
<span class="second">{$value->num}</span>
{if="$value->description"}
<span class="second">
{$value->description|strip_tags}
</span>
{/if}
</span>
{if="$value->description"}
<p class="wrap">{$value->description|strip_tags}</p>
{/if}
<p class="wrap">
{if="$value->sub > 0"}
{$c->__('groups.sub', $value->sub)} -
{/if}
{$c->__('groups.num', $value->num)}
</p>
</li>
{/loop}
</ul>

3
app/widgets/Groups/locales.ini

@ -3,3 +3,6 @@ groups.contact_post = 'Contact post'
groups.empty_text1 = "You don't have any subscriptions yet, select a group server above to start exploring."
groups.empty_text2 = "Subscribe to your favorite feeds by bookmarking them."
groups.subscriptions = 'My Subscriptions'
groups.sub = '%s subscribers'
groups.num = '%s posts'

3
bootstrap.php

@ -272,6 +272,9 @@ class Bootstrap {
// We set the default timezone to the server timezone
$cd = new \Modl\ConfigDAO();
$config = $cd->get();
// And we set a global offset
define('TIMEZONE_OFFSET', getTimezoneOffset($config->timezone));
date_default_timezone_set($config->timezone);
}

Loading…
Cancel
Save