Skip to content

Commit

Permalink
Added the alert and UserCP functions.
Browse files Browse the repository at this point in the history
  • Loading branch information
Azareal committed Nov 30, 2016
1 parent 2ecd404 commit 469d732
Show file tree
Hide file tree
Showing 4 changed files with 322 additions and 1 deletion.
4 changes: 4 additions & 0 deletions TO-DO.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ Add more unit tests.
Test and improve the template compilation system.
Test and complete the multi-threading system.
Use the main language and database classes in the installer instead of it having it's own.
Test and improve the asynchronous query system.
MAJOR PROJECT: Revamp the control panel.
Figure out what to do about super_join.
We might need to update the database interface.

Bugs:
Avatar updating is broken.
2 changes: 1 addition & 1 deletion hadron/threading.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@ protected function getResult()
{
return $this->data;
}
}
}
251 changes: 251 additions & 0 deletions inc/functions_alerts.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,251 @@
<?php
/*
AtomBB Alerts System Functions
Created by Azareal.
Licensed under the terms of the GPLv3.
Copyright Azareal (c) 2012 - 2017
*/

// Is someone trying to access this directly?
if(!defined("HADRON_START")) die("You are not allowed to access this file directly.");

function alerts_parse(array $item)
{
global $lang, $plugins;
switch($item['resourceType'])
{
case "topic": return alerts_parse_topic($item); break;
case "post": return alerts_parse_post($item); break;
case "comment": return alerts_parse_comment($item); break;

default:
if(($res = $plugins->hook('alerts_parse_type_default', $item))!==null) return $res;
return false;
}
}

function alerts_parse_topic(array $item)
{
global $main, $lang, $plugins;

switch($item['event'])
{
case "new_topic":
$user = getUser($item['actor'], true);
$puser = "<![CDATA[".markup($user['displayname'], $user['style_start'], $user['style_end'], $user['is_multi_colour'])."]]>";

return array(
"avatar" => getAvatar($user),
"target" => "//{$main->settings['site_url']}/thread.php?tid={$item['resourceID']}",
"langstring" => $lang->sub('alerts_topic_new', $puser)
);
break;

case "deleted_topic":
global $db;
$topic = $db->get("*","threads","tid='{$item['resourceID']}'",1);
if(!$topic) $topic = array("thread_name" => "Deleted Topic");
return array("target" => null,"langstring" => $lang->sub('alerts_topic_deleted', $topic['thread_name']));
break;

case "reply_topic":
global $db;
$user = getUser($item['actor'], true);
$puser = "<![CDATA[".markup($user['displayname'], $user['style_start'], $user['style_end'], $user['is_multi_colour'])."]]>";
$post = $db->get("*","posts","pid='{$item['resourceID']}'",1);
if(!$post) return false;
$topic = $db->get("*","threads","tid='{$post['tid']}'",1);
if(!$topic) return false;
return array(
"avatar" => getAvatar($user),
"target" => "//{$main->settings['site_url']}/thread.php?tid={$topic['tid']}&amp;pid={$post['pid']}",
"langstring" => $lang->multi_sub('alerts_topic_reply', array($puser, $topic['thread_name']))
);
break;

default:
if(($res = $plugins->hook('alerts_parse_topic_default', $item))!==null) return $res;
return false;
}
}

function alerts_parse_post(array $item)
{
global $main, $lang, $plugins;
switch($item['event'])
{
case "deleted_post":
$topic = $db->get("*","threads","tid='{$item['areaID']}'",1);
if(!$topic) $topic = array("thread_name" => "Deleted Topic");
if($post['postedby']==$main->user['uid']) return array(
"target" => null,
"langstring" => $lang->sub('alerts_post_deleted_yours', $topic['thread_name'])
);
else return array(
"target" => null,
"langstring" => $lang->sub('alerts_post_deleted', $topic['thread_name'])
);
break;

case "reply_post":
$post = $db->get("*","posts","pid='{$item['resourceID']}'",1);
if(!$post) return false;
$topic = $db->get("*","threads","tid='{$item['areaID']}'",1);
if(!$topic) return false;
$user = getUser($item['actor'], true);
$puser = "<![CDATA[".markup($user['displayname'], $user['style_start'], $user['style_end'], $user['is_multi_colour'])."]]>";

// Does the user have an avatar?
$avatar = getAvatar($user);
if($post['postedby']==$main->user['uid']) return array(
"avatar" => $avatar,
"target" => "//{$main->settings['site_url']}/thread.php?tid={$item['areaID']}&amp;pid={$item['resourceID']}",
"langstring" => $lang->multi_sub('alerts_post_reply_yours', array($puser, $topic['thread_name']))
);
else return array(
"avatar" => $avatar,
"target" => "//{$main->settings['site_url']}/thread.php?tid={$item['areaID']}&amp;pid={$item['resourceID']}",
"langstring" => $lang->multi_sub('alerts_post_reply', array($puser, $topic['thread_name']))
);
break;

case "reply_topic":
global $db;
$user = getUser($item['actor'], true);
$puser = "<![CDATA[".markup($user['displayname'], $user['style_start'], $user['style_end'], $user['is_multi_colour'])."]]>";
$post = $db->get("*","posts","pid='{$item['resourceID']}'",1);
if(!$post) return false;
$topic = $db->get("*","threads","tid='{$post['tid']}'",1);
if(!$topic) return false;
return array(
"avatar" => getAvatar($user),
"target" => "//{$main->settings['site_url']}/thread.php?tid={$topic['tid']}&amp;pid={$post['pid']}",
"langstring" => $lang->multi_sub('alerts_topic_reply', array($puser, $topic['thread_name']))
);
break;

case "upvote":
global $db;
$post = $db->get("*","posts","pid='{$item['resourceID']}'",1);
if(!$post) return false;
$topic = $db->get("*","threads","tid='{$post['tid']}'",1);
if(!$topic) return false;
$user = getUser($item['actor'], true);
$puser = "<![CDATA[".markup($user['displayname'], $user['style_start'], $user['style_end'], $user['is_multi_colour'])."]]>";
if($post['postedby']==$main->user['uid']) return array(
"avatar" => getAvatar($user),
"target" => "//{$main->settings['site_url']}/thread.php?tid={$item['areaID']}&amp;pid={$item['resourceID']}",
"langstring" => $lang->multi_sub('alerts_post_upvote_yours', array($puser, $topic['thread_name']))
);
else
{
$user2 = getUser($post['postedby'], true);
$puser2 = "<![CDATA[".markup($user2['displayname'], $user2['style_start'], $user2['style_end'], $user2['is_multi_colour'])."]]>";
return array(
"avatar" => getAvatar($user),
"target" => "//{$main->settings['site_url']}/thread.php?tid={$item['areaID']}&amp;pid={$item['resourceID']}",
"langstring" => $lang->multi_sub('alerts_post_upvote', array($puser, $puser2, $topic['thread_name']))
);
}
break;

case "post_mentioned":
global $db;
$post = $db->get("*","posts","pid='{$item['resourceID']}'",1);
if(!$post) return false;
$topic = $db->get("*","threads","tid='{$post['tid']}'",1);
if(!$topic) return false;
$user = getUser($item['actor'], true);
$puser = "<![CDATA[".markup($user['displayname'], $user['style_start'], $user['style_end'], $user['is_multi_colour'])."]]>";
return array(
"avatar" => getAvatar($user),
"target" => "//{$main->settings['site_url']}/thread.php?tid={$item['areaID']}&amp;pid={$item['resourceID']}",
"langstring" => $lang->multi_sub('alerts_post_mentioned', array($puser, $topic['thread_name']))
);
break;

default:
if(($res = $plugins->hook('alerts_parse_post_default', $item))!==null) return $res;
return false;
}
}

function alerts_parse_comment(array $item)
{
global $lang, $db, $main, $plugins;
switch($item['event'])
{
case "new_comment":
$post = $db->get("*","posts","pid='{$item['resourceID']}'",1);
if(!$post) return false;
$user = getUser($item['actor'], true);
$puser = "<![CDATA[".markup($user['displayname'], $user['style_start'], $user['style_end'], $user['is_multi_colour'])."]]>";
if($item['areaID']==$main->user['uid']) return array(
"avatar" => getAvatar($user),
"target" => "//{$main->settings['site_url']}/profiles/?uid={$item['areaID']}&amp;pid={$item['resourceID']}",
"langstring" => $lang->sub('alerts_comment_new_yours', $puser)
);
return array(
"avatar" => getAvatar($user),
"target" => "//{$main->settings['site_url']}/profiles/?uid={$item['areaID']}&amp;pid={$item['resourceID']}",
"langstring" => $lang->sub('alerts_comment_new', $puser)
);
break;

case "deleted_comment":
if(($res = $plugins->hook('alerts_parse_comment_deleted', $item))!==null) return $res;
return false;
break;

case "reply_comment":
global $db;
$post = $db->get("*","posts","pid='{$item['resourceID']}'",1);
if(!$post) return false;
$user = getUser($item['actor'], true);
$puser = "<![CDATA[".markup($user['displayname'], $user['style_start'], $user['style_end'], $user['is_multi_colour'])."]]>";
$user2 = getUser($post['postedby'], true);
$puser2 = "<![CDATA[".markup($user2['displayname'], $user2['style_start'], $user2['style_end'], $user2['is_multi_colour'])."]]>";
if($item['areaID']==$main->user['uid']) return array(
"avatar" => getAvatar($user),
"target" => "//{$main->settings['site_url']}/profiles/?uid={$item['areaID']}&amp;pid={$item['resourceID']}",
"langstring" => $lang->multi_sub('alerts_comment_reply_yours', array($puser, $puser2))
);

$user3 = getUser($post['areaID'], true);
$puser3 = "<![CDATA[".markup($user3['displayname'], $user3['style_start'], $user3['style_end'], $user3['is_multi_colour'])."]]>";
return array(
"avatar" => getAvatar($user),
"target" => "//{$main->settings['site_url']}/profiles/?uid={$item['areaID']}&amp;pid={$item['resourceID']}",
"langstring" => $lang->multi_sub('alerts_comment_reply', array($puser, $puser2, $puser3))
);

break;

case "upvote":
global $db;
$post = $db->get("*","posts","pid='{$item['resourceID']}'",1);
if(!$post) return false;
$user = getUser($item['actor'], true);
$puser = "<![CDATA[".markup($user['displayname'], $user['style_start'], $user['style_end'], $user['is_multi_colour'])."]]>";
$user2 = getUser($post['postedby'], true);
$puser2 = "<![CDATA[".markup($user2['displayname'], $user2['style_start'], $user2['style_end'], $user2['is_multi_colour'])."]]>";
if($item['areaID']==$main->user['uid']) return array(
"avatar" => getAvatar($user),
"target" => "//{$main->settings['site_url']}/profiles/?uid={$item['areaID']}&amp;pid={$item['resourceID']}",
"langstring" => $lang->multi_sub('alerts_comment_upvote_yours', array($puser, $puser2))
);

$user3 = getUser($post['areaID'], true);
$puser3 = "<![CDATA[".markup($user3['displayname'], $user3['style_start'], $user3['style_end'], $user3['is_multi_colour'])."]]>";
return array(
"avatar" => getAvatar($user),
"target" => "//{$main->settings['site_url']}/profiles/?uid={$item['areaID']}&amp;pid={$item['resourceID']}",
"langstring" => $lang->multi_sub('alerts_comment_upvote', array($puser, $puser2, $puser3))
);
break;

default:
if(($res = $plugins->hook('alerts_parse_comment_default', $item))!==null) return $res;
return false;
}
}
66 changes: 66 additions & 0 deletions inc/functions_usercp.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?php
/*
AtomBB UserCP Functions
Created by Azareal.
Licensed under the terms of the GPLv3.
Copyright Azareal (c) 2012 - 2017
*/

// Is someone trying to access this directly?
if(!defined("HADRON_START")) die("You are not allowed to access this file directly.");

function usercp_build_nav()
{
global $main, $tmpls, $lang, $plugins;
$cats = array(
"home" => array(
"name" => $lang->get('usercp_cat_home'),
"icon" => "//{$main->settings['site_url']}/images/home.png"
),
"critical" => array(
"name" => $lang->get('usercp_cat_critical'),
"icon" => "//{$main->settings['site_url']}/images/settings.png"
),
"avatar" => array(
"name" => $lang->get('usercp_cat_avatar'),
"icon" => "//{$main->settings['site_url']}/images/avatar.png"
),
"signature" => array(
"name" => $lang->get('usercp_cat_signature'),
"icon" => "//{$main->settings['site_url']}/images/signature.png"
),
"titles" => $lang->get('usercp_cat_titles'),
"friend-invites" => $lang->get('usercp_cat_friend_invites'),
"friends" => array(
"name" => $lang->get('usercp_cat_friends'),
"path" => "//{$main->settings['site_url']}/friends.php?action=view",
"icon" => "//{$main->settings['site_url']}/images/group.png"
),
"profile" => $lang->get('usercp_cat_profile'),
"conversations" => array(
"name" => $lang->get('usercp_cat_conversations'),
"path" => "//{$main->settings['site_url']}/convos.php",
"icon" => "//{$main->settings['site_url']}/images/group.png"
)
);

$clist = "";
$tmpls->stick("clist", $clist);

if(!$main->settings['enable_signatures']) unset($cats['signature']);
$plugins->hook("usercp_cats", $cats);

foreach($cats as $key => $cat)
{
if(is_array($cat))
{
if(isset($cat['path'])) $path = $cat['path'];
else $path = "./usercp.php?page={$key}";

$clist .= "<tr><td class='tbody'>
<img style='padding-right: 5px;' src='{$cat['icon']}' height=16 width=16 /><a href='{$path}'>{$cat['name']}</a>
</td></tr>\n";
}
else $clist .= "<tr><td class='tbody'><a href='./usercp.php?page={$key}'>{$cat}</a></td></tr>\n";
}
}

0 comments on commit 469d732

Please sign in to comment.