/** * @param $postId integer * @throws Exception */ public static function deletePost($postId) { $postId = intval($postId); $post = self::getPostById($postId); $userId = AuthenticationManager::getAuthenticatedUser()->getId(); if (!self::isPostLastInChannel($post)) { throw new Exception("Post is not the last one in it's channel and therefore can't be deleted."); } if ($post->getUserId() != $userId) { throw new Exception("Post has not been created by the current user and therefore can't be deleted."); } $con = self::getConnection(); self::query($con, "UPDATE posts SET active = 0 WHERE id = " . $postId . ";"); self::closeConnection($con); self::logAction('Deleted post with id=' . $postId . ' by user with id=' . $userId); }
<?php if (!AuthenticationManager::isAuthenticated()) { Util::redirect('/'); } $channels = DataManager::getChannelsForUser(AuthenticationManager::getAuthenticatedUser()->getId()); $favoritesAdded = false; $unreadAdded = false; ?> <!-- Page Heading --> <div class="row"> <div class="col-lg-12"> <h1 class="page-header"> Overview </h1> </div> </div> <!-- /.row --> <div class="row"> <div class="col-lg-12 col-md-12"> <h3>Favorites by channel</h3> <?php foreach ($channels as $channel) { $posts = DataManager::getFavoritesByChannel($channel->getId()); ?> <?php if (count($posts) > 0) {
<?php if (isset($_GET['errors'])) { $errors = unserialize(urldecode($_GET['errors'])); } $user = AuthenticationManager::getAuthenticatedUser(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <title>SlackLight</title> <!-- Bootstrap Core CSS --> <link href="css/bootstrap.min.css" rel="stylesheet"> <!-- Custom CSS --> <link href="css/main.css" rel="stylesheet"> <link href="css/bootstrap-multiselect.css" rel="stylesheet" /> <!-- Custom Fonts --> <link href="fonts/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
private function handleSetFavorite() { $id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; $value = isset($_REQUEST['value']) ? intval($_REQUEST['value']) : -1; if ($id == 0 || $value == -1) { throw new Exception('Invalid data in set favorite.'); } DataManager::setFavoriteState($id, $value, AuthenticationManager::getAuthenticatedUser()->getId()); }
public function invokePostAction() { if ($_SERVER['REQUEST_METHOD'] != self::REQUEST_METHOD) { throw new Exception("Controller can only handle " . self::REQUEST_METHOD . ' requests'); return null; } else { if (!isset($_REQUEST[self::ACTION_PARAM])) { throw new Exception(self::ACTION_PARAM . ' parameter is not specified'); } } $action = $_REQUEST[self::ACTION_PARAM]; switch ($action) { case self::ACTION_LOGIN: if (!AuthenticationManager::authenticate($_REQUEST[self::USR_NAME], $_REQUEST[self::USR_PASSWORD])) { $this->forwardRequest(['Invalid user information provided']); } $user = DataManager::getUserByUsername($_REQUEST[self::USR_NAME]); $_SESSION['username'] = $user->getID(); $user = AuthenticationManager::getAuthenticatedUser(); $channels = DataManager::getChannelsByUserId($user->getID()); $_SESSION['channel'] = $channels[0]->getName(); Util::redirect(); break; case self::ACTION_LOGOUT: if (AuthenticationManager::isAuthenticated()) { AuthenticationManager::signOut(); } Util::redirect(); break; case self::ACTION_REGISTRATION: $channels = $_REQUEST['channels']; foreach ($channels as $ch) { $channel = DataManager::getChannelByName($ch); $registratedUsers = DataManager::getUsersByChannelId($channel->getID()); foreach ($registratedUsers as $user) { if ($user->getUsername() === $_REQUEST[self::USR_NAME]) { $this->forwardRequest(['The username ' . $_REQUEST[self::USR_NAME] . ' is already used!'], 'index.php?view=registration'); } } $user = DataManager::getUserByUsername($_REQUEST[self::USR_NAME]); $userId = null; if ($user) { $userId = $user->getID(); } else { $userId = DataManager::saveNewUser($_REQUEST[self::USR_FIRST_NAME], $_REQUEST[self::USR_LAST_NAME], $_REQUEST[self::USR_NAME], AuthenticationManager::getHash($_REQUEST[self::USR_NAME], $_REQUEST[self::USR_PASSWORD])); } DataManager::registrateUser($userId, $channel->getID()); } if (!AuthenticationManager::authenticate($_REQUEST[self::USR_NAME], $_REQUEST[self::USR_PASSWORD])) { $this->forwardRequest(['Invalid user information provided'], "index.php?view=registration"); } $_SESSION[self::USR_CHANNELS] = $_REQUEST[self::USR_CHANNELS]; // first channel should be selected as default channel $_SESSION['channel'] = $channels[0]; Util::redirect(); break; case self::POST_MSG: $channel = DataManager::getChannelByName($_SESSION['channel']); $user = AuthenticationManager::getAuthenticatedUser(); $messages = DataManager::getAllUnansweredPosts($channel->getID()); //TODO: mark message as answered foreach ($messages as $message) { if ($message->getAuthor() != $user->getID()) { DataManager::changePostStatus($message->getID(), Status::ANSWERED); } } DataManager::publishMessage($user->getID(), $channel->getID(), $_REQUEST[self::POST_TITLE], $_REQUEST[self::POST_CONTENT], Status::UNREAD); break; case self::ACTION_CHANGE_CHANNEL: //print_r($_REQUEST); $_SESSION['channel'] = $_REQUEST['selectedChannel']; Util::redirect(); break; case self::ACTION_JOIN_CHANNEL: $channel = DataManager::getChannelByName($_REQUEST[self::USR_CHANNEL]); $registratedUsers = DataManager::getUsersByChannelId($channel->getID()); foreach ($registratedUsers as $user) { if ($user->getUsername() === $_REQUEST[self::USR_NAME]) { $this->forwardRequest(['User ' . $_REQUEST[self::USR_NAME] . ' is already registered!'], "index.php?view=join"); } } $user = DataManager::getUserByUsername($_REQUEST[self::USR_NAME]); if (!$user) { $this->forwardRequest(['Please registrate, the user ' . $_REQUEST[self::USR_NAME] . ' does not exists!'], "index.php?view=register"); } DataManager::registrateUser($user->getID(), $channel->getID()); if (!AuthenticationManager::authenticate($_REQUEST[self::USR_NAME], $_REQUEST[self::USR_PASSWORD], $_REQUEST[self::USR_CHANNEL])) { $this->forwardRequest(['Invalid user information provided'], "index.php?view=registration"); } $_SESSION[self::USR_CHANNEL] = $_REQUEST[self::USR_CHANNEL]; Util::redirect(); break; case self::AJAX_SET_PRIO: if (isset($_POST) && $_POST) { DataManager::changePostStatus($_POST['id'], Status::PRIOR); echo "index.php?view=welcome"; } break; case self::AJAX_RESET_PRIO: if (isset($_POST) && $_POST) { DataManager::changePostStatus($_POST['id'], Status::READ); echo "index.php?view=welcome"; } break; case self::AJAX_DELETE_MESSAGE: if (isset($_POST) && $_POST) { DataManager::changePostStatus($_POST['id'], Status::DELETED); echo "index.php?view=welcome"; } break; case self::AJAX_UPDATE_CHAT: $currUserId = isset($_SESSION['username']) ? $_SESSION['username'] : null; $channel = isset($_SESSION['channel']) ? $_SESSION['channel'] : null; if ($currUserId && $channel) { $unreadPosts = DataManager::getAllUnreadPostsByUserId($currUserId); foreach ($unreadPosts as $post) { if ($post->getAuthor() != $currUserId) { DataManager::changePostStatus($post->getId(), Status::READ); } } } if (isset($_POST) && $_POST) { $channel = DataManager::getChannelByName($_REQUEST['channel']); $messages = DataManager::getPostsByChannel($channel->getID()); $return = ""; foreach ($messages as $message) { if ($message->exists()) { $return .= Viewtility::viewMessage($message, DataManager::getPostStatus($message->getId())); } } echo $return; } break; } }
<div class="collapse navbar-collapse navbar-ex1-collapse"> <ul class="nav navbar-nav side-nav"> <?php if (AuthenticationManager::isAuthenticated()) { ?> <li><h4>Channels</h4></li> <?php foreach (DataManager::getChannelsForUser(AuthenticationManager::getAuthenticatedUser()->getId()) as $channel) { ?> <li> <a href="<?php echo "?view=channel&id=" . $channel->getId(); ?> "> <i class="fa fa-fw fa-bookmark-o"></i><?php echo $channel->getName(); ?> </a> </li> <?php } ?> <?php } else { ?> <li><h5>Login to view channels</h5></li> <?php } ?> </ul> </div>