aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Zotlabs/Module/Articles.php17
-rw-r--r--Zotlabs/Widget/Archive.php6
-rw-r--r--include/channel.php35
-rwxr-xr-xinclude/items.php75
-rw-r--r--view/pdl/mod_articles.pdl1
5 files changed, 88 insertions, 46 deletions
diff --git a/Zotlabs/Module/Articles.php b/Zotlabs/Module/Articles.php
index 284868241..e1f0b4ab0 100644
--- a/Zotlabs/Module/Articles.php
+++ b/Zotlabs/Module/Articles.php
@@ -51,6 +51,8 @@ class Articles extends \Zotlabs\Web\Controller {
$sql_extra2 .= protect_sprintf(term_item_parent_query(\App::$profile['profile_uid'],'item', $category, TERM_CATEGORY));
}
+ $datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : '');
+ $datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : '');
$which = argv(1);
@@ -143,10 +145,21 @@ class Articles extends \Zotlabs\Web\Controller {
$sql_item = "and item.id = " . intval($r[0]['iid']) . " ";
}
}
-
+ if($datequery) {
+ $sql_extra2 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
+ $order = 'post';
+ }
+ if($datequery2) {
+ $sql_extra2 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
+ }
+
+ if($datequery || $datequery2) {
+ $sql_extra2 .= " and item.item_thread_top != 0 ";
+ }
+
$r = q("select * from item
where item.uid = %d and item_type = %d
- $sql_extra $sql_item order by item.created desc $pager_sql",
+ $sql_extra $sql_extra2 $sql_item order by item.created desc $pager_sql",
intval($owner),
intval(ITEM_TYPE_ARTICLE)
);
diff --git a/Zotlabs/Widget/Archive.php b/Zotlabs/Widget/Archive.php
index c151ca563..9adaac38f 100644
--- a/Zotlabs/Widget/Archive.php
+++ b/Zotlabs/Widget/Archive.php
@@ -22,12 +22,12 @@ class Archive {
return '';
$wall = ((array_key_exists('wall', $arr)) ? intval($arr['wall']) : 0);
+ $wall = ((array_key_exists('articles', $arr)) ? 2 : $wall);
+
$style = ((array_key_exists('style', $arr)) ? $arr['style'] : 'select');
$showend = ((get_pconfig($uid,'system','archive_show_end_date')) ? true : false);
$mindate = get_pconfig($uid,'system','archive_mindate');
- $visible_years = get_pconfig($uid,'system','archive_visible_years');
- if(! $visible_years)
- $visible_years = 5;
+ $visible_years = get_pconfig($uid,'system','archive_visible_years',5);
$url = z_root() . '/' . \App::$cmd;
diff --git a/include/channel.php b/include/channel.php
index 82d500e83..7f49deb2e 100644
--- a/include/channel.php
+++ b/include/channel.php
@@ -4,6 +4,13 @@
* @brief Channel related functions.
*/
+use Zotlabs\Access\PermissionRoles;
+use Zotlabs\Access\PermissionLimits;
+use Zotlabs\Access\Permissions;
+use Zotlabs\Daemon\Master;
+use Zotlabs\Lib\System;
+use Zotlabs\Render\Comanche;
+
require_once('include/zot.php');
require_once('include/crypto.php');
require_once('include/menu.php');
@@ -236,7 +243,7 @@ function create_identity($arr) {
$role_permissions = null;
if(array_key_exists('permissions_role',$arr) && $arr['permissions_role']) {
- $role_permissions = \Zotlabs\Access\PermissionRoles::role_perms($arr['permissions_role']);
+ $role_permissions = PermissionRoles::role_perms($arr['permissions_role']);
}
if($role_permissions && array_key_exists('directory_publish',$role_permissions))
@@ -307,7 +314,7 @@ function create_identity($arr) {
$perm_limits = site_default_perms();
foreach($perm_limits as $p => $v)
- \Zotlabs\Access\PermissionLimits::Set($r[0]['channel_id'],$p,$v);
+ PermissionLimits::Set($r[0]['channel_id'],$p,$v);
if($role_permissions && array_key_exists('perms_auto',$role_permissions))
set_pconfig($r[0]['channel_id'],'system','autoperms',intval($role_permissions['perms_auto']));
@@ -383,7 +390,7 @@ function create_identity($arr) {
$myperms = ((array_key_exists('perms_connect',$role_permissions)) ? $role_permissions['perms_connect'] : array());
}
else {
- $x = \Zotlabs\Access\PermissionRoles::role_perms('social');
+ $x = PermissionRoles::role_perms('social');
$myperms = $x['perms_connect'];
}
@@ -399,7 +406,7 @@ function create_identity($arr) {
]
);
- $x = \Zotlabs\Access\Permissions::FilledPerms($myperms);
+ $x = Permissions::FilledPerms($myperms);
foreach($x as $k => $v) {
set_abconfig($newuid,$hash,'my_perms',$k,$v);
}
@@ -416,7 +423,7 @@ function create_identity($arr) {
$autoperms = intval($role_permissions['perms_auto']);
set_pconfig($newuid,'system','autoperms',$autoperms);
if($autoperms) {
- $x = \Zotlabs\Access\Permissions::FilledPerms($role_permissions['perms_connect']);
+ $x = Permissions::FilledPerms($role_permissions['perms_connect']);
foreach($x as $k => $v) {
set_pconfig($newuid,'autoperms',$k,$v);
}
@@ -482,7 +489,7 @@ function create_identity($arr) {
*/
call_hooks('create_identity', $newuid);
- Zotlabs\Daemon\Master::Summon(array('Directory', $ret['channel']['channel_id']));
+ Master::Summon(array('Directory', $ret['channel']['channel_id']));
}
$ret['success'] = true;
@@ -583,7 +590,7 @@ function change_channel_keys($channel) {
xchan_change_key($oldxchan,$newxchan,$stored);
- Zotlabs\Daemon\Master::Summon(array('Notifier', 'keychange', $channel['channel_id']));
+ Master::Summon([ 'Notifier', 'keychange', $channel['channel_id'] ]);
$ret['success'] = true;
return $ret;
@@ -666,7 +673,7 @@ function channel_change_address($channel,$new_address) {
}
}
- Zotlabs\Daemon\Master::Summon(array('Notifier', 'refresh_all', $channel['channel_id']));
+ Master::Summon(array('Notifier', 'refresh_all', $channel['channel_id']));
$ret['success'] = true;
return $ret;
@@ -759,7 +766,7 @@ function identity_basic_export($channel_id, $sections = null) {
'project' => PLATFORM_NAME,
'version' => STD_VERSION,
'database' => DB_UPDATE_VERSION,
- 'server_role' => Zotlabs\Lib\System::get_server_role()
+ 'server_role' => System::get_server_role()
];
/*
@@ -1425,7 +1432,7 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = fa
}
$menublock = get_pconfig($profile['uid'],'system','channel_menublock');
if ($menublock && (! $block)) {
- $comanche = new Zotlabs\Render\Comanche();
+ $comanche = new Comanche();
$channel_menu .= $comanche->block($menublock);
}
@@ -1701,7 +1708,7 @@ function zid_init() {
dbesc($tmp_str)
);
if(! $r) {
- Zotlabs\Daemon\Master::Summon(array('Gprobe',bin2hex($tmp_str)));
+ Master::Summon(array('Gprobe',bin2hex($tmp_str)));
}
if($r && remote_channel() && remote_channel() === $r[0]['hubloc_hash'])
return;
@@ -1907,7 +1914,7 @@ function is_public_profile() {
$channel = App::get_channel();
if($channel) {
- $perm = \Zotlabs\Access\PermissionLimits::Get($channel['channel_id'],'view_profile');
+ $perm = PermissionLimits::Get($channel['channel_id'],'view_profile');
if($perm == PERMS_PUBLIC)
return true;
}
@@ -2545,7 +2552,7 @@ function channel_remove($channel_id, $local = true, $unset_session = false) {
dbesc($channel['channel_hash'])
);
- Zotlabs\Daemon\Master::Summon(array('Notifier','purge_all',$channel_id));
+ Master::Summon(array('Notifier','purge_all',$channel_id));
}
@@ -2658,7 +2665,7 @@ function channel_remove($channel_id, $local = true, $unset_session = false) {
@rrmdir($f);
}
- Zotlabs\Daemon\Master::Summon(array('Directory',$channel_id));
+ Master::Summon([ 'Directory', $channel_id ]);
if($channel_id == local_channel() && $unset_session) {
App::$session->nuke();
diff --git a/include/items.php b/include/items.php
index ee7bfd5bc..b0f6a89cf 100755
--- a/include/items.php
+++ b/include/items.php
@@ -4,7 +4,13 @@
* @brief Items related functions.
*/
-use Zotlabs\Lib as Zlib;
+use Zotlabs\Lib\Enotify;
+use Zotlabs\Lib\MarkdownSoap;
+use Zotlabs\Lib\MessageFilter;
+use Zotlabs\Lib\IConfig;
+use Zotlabs\Access\PermissionLimits;
+use Zotlabs\Access\AccessList;
+use Zotlabs\Daemon\Master;
require_once('include/bbcode.php');
require_once('include/oembed.php');
@@ -379,7 +385,7 @@ function post_activity_item($arr, $allow_code = false, $deliver = true) {
return $ret;
}
- $arr['public_policy'] = ((array_key_exists('public_policy',$arr)) ? escape_tags($arr['public_policy']) : map_scope(\Zotlabs\Access\PermissionLimits::Get($channel['channel_id'],'view_stream'),true));
+ $arr['public_policy'] = ((array_key_exists('public_policy',$arr)) ? escape_tags($arr['public_policy']) : map_scope(PermissionLimits::Get($channel['channel_id'],'view_stream'),true));
if($arr['public_policy'])
$arr['item_private'] = 1;
@@ -407,7 +413,7 @@ function post_activity_item($arr, $allow_code = false, $deliver = true) {
$arr['deny_gid'] = $channel['channel_deny_gid'];
}
- $arr['comment_policy'] = map_scope(\Zotlabs\Access\PermissionLimits::Get($channel['channel_id'],'post_comments'));
+ $arr['comment_policy'] = map_scope(PermissionLimits::Get($channel['channel_id'],'post_comments'));
if ((! $arr['plink']) && (intval($arr['item_thread_top']))) {
$arr['plink'] = substr(z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . urlencode($arr['mid']),0,190);
@@ -446,7 +452,7 @@ function post_activity_item($arr, $allow_code = false, $deliver = true) {
}
if($post_id && $deliver) {
- Zotlabs\Daemon\Master::Summon(array('Notifier','activity',$post_id));
+ Master::Summon([ 'Notifier','activity',$post_id ]);
}
$ret['success'] = true;
@@ -744,7 +750,7 @@ function get_item_elements($x,$allow_code = false) {
// was generated on the escaped content.
if($arr['mimetype'] === 'text/markdown')
- $arr['body'] = \Zotlabs\Lib\MarkdownSoap::unescape($arr['body']);
+ $arr['body'] = MarkdownSoap::unescape($arr['body']);
if(array_key_exists('revision',$x)) {
@@ -1003,7 +1009,7 @@ function encode_item($item,$mirror = false) {
);
if($r)
- $comment_scope = \Zotlabs\Access\PermissionLimits::Get($item['uid'],'post_comments');
+ $comment_scope = PermissionLimits::Get($item['uid'],'post_comments');
else
$comment_scope = 0;
@@ -2439,7 +2445,7 @@ function send_status_notifications($post_id,$item) {
return;
- Zlib\Enotify::submit(array(
+ Enotify::submit(array(
'type' => NOTIFY_COMMENT,
'from_xchan' => $item['author_xchan'],
'to_xchan' => $r[0]['channel_hash'],
@@ -2532,7 +2538,7 @@ function tag_deliver($uid, $item_id) {
$verb = urldecode(substr($item['verb'],strpos($item['verb'],'#')+1));
if($poke_notify) {
- Zlib\Enotify::submit(array(
+ Enotify::submit(array(
'to_xchan' => $u[0]['channel_hash'],
'from_xchan' => $item['author_xchan'],
'type' => NOTIFY_POKE,
@@ -2686,7 +2692,7 @@ function tag_deliver($uid, $item_id) {
* Kill two birds with one stone. As long as we're here, send a mention notification.
*/
- Zlib\Enotify::submit(array(
+ Enotify::submit(array(
'to_xchan' => $u[0]['channel_hash'],
'from_xchan' => $item['author_xchan'],
'type' => NOTIFY_TAGSELF,
@@ -2988,7 +2994,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent) {
$private = (($channel['channel_allow_cid'] || $channel['channel_allow_gid']
|| $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 1 : 0);
- $new_public_policy = map_scope(\Zotlabs\Access\PermissionLimits::Get($channel['channel_id'],'view_stream'),true);
+ $new_public_policy = map_scope(PermissionLimits::Get($channel['channel_id'],'view_stream'),true);
if((! $private) && $new_public_policy)
$private = 1;
@@ -3031,7 +3037,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent) {
dbesc($channel['channel_deny_gid']),
intval($private),
dbesc($new_public_policy),
- dbesc(map_scope(\Zotlabs\Access\PermissionLimits::Get($channel['channel_id'],'post_comments'))),
+ dbesc(map_scope(PermissionLimits::Get($channel['channel_id'],'post_comments'))),
dbesc($title),
dbesc($body),
intval($item_wall),
@@ -3040,7 +3046,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent) {
);
if($r)
- Zotlabs\Daemon\Master::Summon(array('Notifier','tgroup',$item_id));
+ Master::Summon([ 'Notifier','tgroup',$item_id ]);
else {
logger('start_delivery_chain: failed to update item');
// reset the source xchan to prevent loops
@@ -3105,7 +3111,7 @@ function check_item_source($uid, $item) {
return true;
}
- if (\Zotlabs\Lib\MessageFilter::evaluate($item, $r[0]['src_patt'], EMPTY_STR)) {
+ if (MessageFilter::evaluate($item, $r[0]['src_patt'], EMPTY_STR)) {
logger('source: text filter success');
return true;
}
@@ -3128,7 +3134,7 @@ function post_is_importable($item,$abook) {
if(! ($abook['abook_incl'] || $abook['abook_excl']))
return true;
- return \Zotlabs\Lib\MessageFilter::evaluate($item,$abook['abook_incl'],$abook['abook_excl']);
+ return MessageFilter::evaluate($item,$abook['abook_incl'],$abook['abook_excl']);
}
@@ -3264,7 +3270,7 @@ function mail_store($arr) {
'otype' => 'mail'
);
- Zlib\Enotify::submit($notif_params);
+ Enotify::submit($notif_params);
}
if($arr['conv_guid']) {
@@ -3547,8 +3553,9 @@ function drop_items($items,$interactive = false,$stage = DROPITEM_NORMAL,$force
// multiple threads may have been deleted, send an expire notification
- if($uid)
- Zotlabs\Daemon\Master::Summon(array('Notifier','expire',$uid));
+ if($uid) {
+ Master::Summon([ 'Notifier','expire',$uid ]);
+ }
}
@@ -3656,8 +3663,9 @@ function drop_item($id,$interactive = true,$stage = DROPITEM_NORMAL,$force = fal
// We'll rely on the undocumented behaviour that DROPITEM_PHASE1 is (hopefully) only
// set if we know we're going to send delete notifications out to others.
- if((intval($item['item_wall']) && ($stage != DROPITEM_PHASE2)) || ($stage == DROPITEM_PHASE1))
- Zotlabs\Daemon\Master::Summon(array('Notifier','drop',$notify_id));
+ if((intval($item['item_wall']) && ($stage != DROPITEM_PHASE2)) || ($stage == DROPITEM_PHASE1)) {
+ Master::Summon([ 'Notifier','drop',$notify_id ]);
+ }
goaway(z_root() . '/' . $_SESSION['return_url']);
}
@@ -3781,21 +3789,34 @@ function delete_item_lowlevel($item, $stage = DROPITEM_NORMAL, $force = false) {
* @brief Return the first post date.
*
* @param int $uid
- * @param boolean $wall (optional) default false
+ * @param boolean $wall (optional) no longer used
* @return string|boolean date string, otherwise false
*/
function first_post_date($uid, $wall = false) {
- $wall_sql = (($wall) ? " and item_wall = 1 " : "" );
- $item_normal = item_normal();
+ $sql_extra = '';
+
+ switch(App::$module) {
+ case 'articles':
+ $sql_extra .= " and item_type = 7 ";
+ $item_normal = " and item.item_hidden = 0 and item.item_type = 7 and item.item_deleted = 0
+ and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
+ and item.item_blocked = 0 ";
+ break;
+ case 'channel':
+ $sql_extra = " and item_wall = 1 ";
+ default:
+ $item_normal = item_normal();
+ break;
+ }
$r = q("select id, created from item
- where uid = %d and id = parent $item_normal $wall_sql
+ where uid = %d and id = parent $item_normal $sql_extra
order by created asc limit 1",
intval($uid)
);
+
if($r) {
-// logger('first_post_date: ' . $r[0]['id'] . ' ' . $r[0]['created'], LOGGER_DATA);
return substr(datetime_convert('',date_default_timezone_get(),$r[0]['created']),0,10);
}
@@ -4393,7 +4414,7 @@ function update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remo
// sixteen bytes of the mid - which makes the link portable and not quite as daunting
// as the entire mid. If it were the post_id the link would be less portable.
- \Zotlabs\Lib\IConfig::Set(
+ IConfig::Set(
intval($post_id),
'system',
$page_type,
@@ -4526,7 +4547,7 @@ function send_profile_photo_activity($channel,$photo,$profile) {
$arr['body'] = sprintf($t,$channel['channel_name'],$ptext) . "\n\n" . $ltext;
- $acl = new Zotlabs\Access\AccessList($channel);
+ $acl = new AccessList($channel);
$x = $acl->get();
$arr['allow_cid'] = $x['allow_cid'];
@@ -4757,7 +4778,7 @@ function item_create_edit_activity($post) {
}
}
- \Zotlabs\Daemon\Master::Summon(array('Notifier', 'edit_activity', $post_id));
+ Master::Summon([ 'Notifier', 'edit_activity', $post_id ]);
}
/**
diff --git a/view/pdl/mod_articles.pdl b/view/pdl/mod_articles.pdl
index b823787f4..3e77ced4c 100644
--- a/view/pdl/mod_articles.pdl
+++ b/view/pdl/mod_articles.pdl
@@ -1,4 +1,5 @@
[region=aside]
+[widget=archive][var=articles]1[/var][/widget]
[widget=categories][var=articles]1[/var][/widget]
[widget=tasklist][/widget]
[widget=notes][/widget]