get paid to paste

messages.php 8/13/17

<?php
/*
UserSpice 4
An Open Source PHP User Management System
by the UserSpice Team at http://UserSpice.com

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

Special thanks to user Brandin for the mods!
*/
?>
<?php
require_once 'init.php';
require_once $abs_us_root.$us_url_root.'users/includes/header.php';
require_once $abs_us_root.$us_url_root.'users/includes/navigation.php';
?>

<?php if (!securePage($_SERVER['PHP_SELF'])){die();}
if($settings->messaging != 1){
  Redirect::to('account.php?err=Messaging+is+disabled');
}
$validation = new Validate();
$errors = [];
$successes = [];
?>
<?php
if (!empty($_POST)) {
  //Delete User Checkboxes
  if (!empty($_POST['archive'])){
    $deletions = $_POST['archive'];
    if ($deletion_count = archiveThreads($deletions,$user->data()->id,1)){
      $successes[] = lang("MESSAGE_ARCHIVE_SUCCESSFUL", array($deletion_count));
	  Redirect::to('messages.php');
    }
    else {
      $errors[] = lang("SQL_ERROR");
    }
  }
  if (!empty($_POST['unarchive'])){
    $deletions = $_POST['checkbox'];
    if ($deletion_count = archiveThreads($deletions,$user->data()->id,0)){
      $successes[] = lang("MESSAGE_UNARCHIVE_SUCCESSFUL", array($deletion_count));
    }
    else {
      $errors[] = lang("SQL_ERROR");
    }
  }
  if (!empty($_POST['delete'])){
    $deletions = $_POST['checkbox'];
    if ($deletion_count = deleteThread($deletions,$user->data()->id,1)){
      $successes[] = lang("MESSAGE_DELETE_SUCCESSFUL", array($deletion_count));
    }
    else {
      $errors[] = lang("SQL_ERROR");
    }
  }
if(!empty($_POST['send_message'])){

	if (empty(Input::get('user_id'))) {
	$errors[] = "Unknown recipient"; }

    if (strlen(Input::get('msg_body')) == 0) {
	$errors[] = "Message cannot be empty"; }

  $date = date("Y-m-d H:i:s");

  $thread = array(
    'msg_from'    => $user->data()->id,
    'msg_to'      => Input::get('user_id'),
    'msg_subject' => Input::get('msg_subject'),
    'last_update' => $date,
    'last_update_by' => $user->data()->id,
  );
    if (empty($errors)) {
	$db->insert('message_threads',$thread); }
  $newThread = $db->lastId();


  $fields = array(
    'msg_from'    => $user->data()->id,
    'msg_to'      => Input::get('user_id'),
    'msg_body'    => Input::get('msg_body'),
    'msg_thread'  => $newThread,
    'sent_on'     => $date,
  );
  $msgto = Input::get('user_id');
  $msg_subject = Input::get('msg_subject');

	if (empty($errors)) {
  $db->insert('messages',$fields);
	$email = $db->query("SELECT fname,email,msg_notification FROM users WHERE id = ?",array($msgto))->first();
	if($settings->msg_notification == 1 && $email->msg_notification == 1) {
		$params = array(
				'fname' => $user->data()->fname,
				'sendfname' => $email->fname,
				'body' => Input::get('msg_body'),
				'msg_thread' => $newThread,
			);
				$to = rawurlencode($email->email);
				$body = email_body('_email_msg_template.php',$params);
				email($to,$msg_subject,$body);
	}

	$successes[] = "Your message has been sent!"; }
}

if(!empty($_POST['messageSettings'])) {
	//Toggle msg_notification setting
	if($settings->msg_notification==1) {
	$msg_notification = Input::get("msg_notification");
	if (isset($msg_notification) AND $msg_notification == 'Yes'){
		if ($user->data()->msg_notification == 0){
			if (updateUser('msg_notification', $userId, 1)){
				$successes[] = lang("FRONTEND_USER_SYS_TOGGLED", array("msg_notification","enabled"));
			}else{
				$errors[] = lang("SQL_ERROR");
			}
		}
	}elseif ($user->data()->msg_notification == 1){
		if (updateUser('msg_notification', $userId, 0)){
			$successes[] = lang("FRONTEND_USER_SYS_TOGGLED", array("msg_notification","disabled"));
		}else{
			$errors[] = lang("SQL_ERROR");
		}
	} }
}

if(!empty($_POST['send_mass_message'])){
  $date = date("Y-m-d H:i:s");

  $userData = fetchMessageUsers(); //Fetch information for all users
	foreach($userData as $v1) {
  $thread = array(
    'msg_from'    => $user->data()->id,
    'msg_to'      => $v1->id,
    'msg_subject' => Input::get('msg_subject'),
    'last_update' => $date,
    'last_update_by' => $user->data()->id,
  );
  $db->insert('message_threads',$thread);
  $newThread = $db->lastId();


  $fields = array(
    'msg_from'    => $user->data()->id,
    'msg_to'      => $v1->id,
    'msg_body'    => Input::get('msg_body'),
    'msg_thread'  => $newThread,
    'sent_on'     => $date,
  );

  $db->insert('messages',$fields);
  $msg_subject = Input::get('msg_subject');
  	$email = $db->query("SELECT fname,email,msg_notification FROM users WHERE id = ?",array($v1->id))->first();
	if($settings->msg_notification == 1 && $v1->msg_notification == 1) {
		$params = array(
				'fname' => $user->data()->fname,
				'sendfname' => $v1->fname,
				'body' => Input::get('msg_body'),
				'msg_thread' => $newThread,
			);
				$to = rawurlencode($email->email);
				$body = email_body('_email_msg_template.php',$params);
				email($to,$msg_subject,$body);
	}
	}

  $successes[] = "Your mass message has been sent!";
} }
$messagesQ = $db->query("SELECT * FROM message_threads WHERE (msg_to = ? AND archive_to = ? AND hidden_to = ?) OR (msg_from = ? AND archive_from = ? AND hidden_from = ?) ORDER BY last_update DESC",array($user->data()->id,0,0,$user->data()->id,0,0));
$messages = $messagesQ->results();
$count = $messagesQ->count();
$archiveCount = $db->query("SELECT * FROM message_threads WHERE (msg_to = ? AND archive_to = ? AND hidden_to = ?) OR (msg_from = ? AND archive_from = ? AND hidden_from = ?) ORDER BY last_update DESC",array($user->data()->id,1,0,$user->data()->id,1,0))->count();
?>
<div id="page-wrapper">

<div class="container">

<?=resultBlock($errors,$successes);?>
<?=$validation->display_errors();?>


<div class="row">
      <div class="col-sm-12">
        <div class="row" id="maindiv">
          <div>
		<h1><?php if (checkMenu(2,$user->data()->id)){  ?><div class="btn-group pull-left"><button type="button" class="btn btn-info" data-toggle="modal" data-target="#composemass"><i class="glyphicon glyphicon-plus"></i> New Mass Message</button></div><?php } ?> <center>Conversations <a href="#" data-toggle="modal" class="nounderline" data-target="#settings"><i class="glyphicon glyphicon-cog"></i></a> <div class="btn-group pull-right"><button type="button" class="btn btn-info" data-toggle="modal" data-target="#compose"><i class="glyphicon glyphicon-plus"></i> New Message</button></div></center></h1>
	  </div>
		<?php if($count > 0) {?><label><input type="checkbox" class="checkAllMsg" />
		[ check/uncheck all ]</label><?php } ?>
	  <form name="threads" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
        <center><table class="table table-striped">
          <thead>
            <tr>
              <th></th>
			  <th></th>
            </tr>
          </thead>
          <tbody>
            <tr>
			<?php if($count > 0) {?>
              <?php foreach($messages as $m){
			if($m->msg_from == $user->data()->id) { $findId = $m->msg_to; } else { $findId = $m->msg_from; }
			$findUser = $db->query("SELECT picture,email FROM users WHERE id = $findId");
            $foundUser = $findUser->first();
             $grav = empty($foundUser->picture) ? get_gravatar(strtolower(trim($foundUser->email))) : $foundUser->picture; ?>
			<?php $lastmessage = strtotime($m->last_update);
				$difference = ceil((time() - $lastmessage) / (60 * 60 * 24));
				// if($difference==0) { $last_update = "Today, "; $last_update .= date("g:i A",$lastmessage); }
				if($difference >= 0 && $difference < 7) {
					$today = date("j");
					$last_message = date("j",$lastmessage);
					if($today==$last_message) { $last_update = "Today, "; $last_update .= date("g:i A",$lastmessage); }
					else {
				$last_update = date("l g:i A",$lastmessage); } }
				elseif($difference >= 7) { $last_update = date("M j, Y g:i A",$lastmessage); }
				$replies = $db->query("SELECT COUNT(*) AS count FROM messages WHERE msg_thread = ? GROUP BY msg_thread",array($m->id));
				$repliescount = $replies->count();
				?>
                <td style="width:100px">
					<center>
						<span class="chat-img pull-left" style="padding-right:5px">
							<a class="nounderline" href="message.php?id=<?=$m->id?>">
								<img src="<?=$grav ?>" width="75" class="img-thumbnail">
							</a>
						</span>
					</center>
				</td>
				<td class="pull-left">
					<h4>
						<input type="checkbox" class="maincheck" name="archive[<?=$m->id?>]" value="<?=$m->id?>"/>
						<a class="nounderline" href="message.php?id=<?=$m->id?>">
							<?=$m->msg_subject?> - with <?php if($m->msg_from == $user->data()->id) { echouser($m->msg_to); } else { echouser($m->msg_from); } ?>
						</a>
						<?php $unread = $db->query("SELECT * FROM messages WHERE msg_thread = ? AND msg_to = ? AND msg_read = ?",array($m->id,$user->data()->id,0));
								$unreadCount = $unread->count();?>
					<?php if($unreadCount > 0) {?> - <font color="red"><?=$unreadCount?> New Message<?php if($unreadCount > 1) {?>s<?php } ?></font><?php } ?></h4>
					<a class="nounderline" href="message.php?id=<?=$m->id?>">
						Updated <?=$last_update?> by <?php echouser($m->last_update_by);?>
					</a>
            </tr>
			<?php } } else {?>
			<td colspan="2"><center><h3>No Conversations</h3></center></td></tr>
			<?php } ?>
              </tbody>
            </table></center>
			<?php if($count > 0) {?><div class="btn-group pull-right"><input class='btn btn-danger' type='submit' name='Submit' value='Archive Selected Threads' /></div><?php } ?>
				</form>
				<br /><?php if($archiveCount > 0) {?><center><a href="#" data-toggle="modal" data-target="#archived">View Archived Threads</a></center><?php } ?>
            </div><!-- End of main content section --><br />
          </div> <!-- /.col -->

<div id="settings" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Message Settings</h4>
      </div>
      <div class="modal-body">
	  <form class="form" id="messageSettings" name='messageSettings' action='messages.php' method='post'>
		  <p><strong>Enable/Disable Functions</strong></p>
		  <center>
		  <div class="checkbox <?php if($settings->msg_notification==0) {?> disabled<?php } ?>">
		  <label>
			<input type="checkbox" <?php if($settings->msg_notification==0) {?> disabled<?php } ?> data-toggle="toggle" data-onstyle="info" data-offstyle="danger" name="msg_notification" id="msg_notification" <?php if($user->data()->msg_notification==1) {?>checked <?php } ?> value="Yes">
			Message Email Notifications
		  </label>
			</div>
      </div>
      <div class="modal-footer">
	  <div class="btn-group">	<input type="hidden" name="csrf" value="<?=Token::generate();?>" />
	<input class='btn btn-primary' type='submit' name="messageSettings" value='Update' class='submit' /></div>
	</form>
         <div class="btn-group"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div>
      </div>
    </div>

  </div>
</div>
		  
<div id="compose" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">New Message</h4>
      </div>
      <div class="modal-body">
<form name="create_message" action="messages.php" method="post">

				<label>Select a user:</label>
				<select name="user_id" id="combobox" class="form-control combobox" required>
				<option readonly></option>
				<?php $userData = fetchMessageUsers(); //Fetch information for all users
				foreach($userData as $v1) {?>
				<option value="<?=$v1->id;?>"><?=$v1->fname;?> <?=$v1->lname;?></option>
				<?php } ?>
				</select><br />
              <label>Subject:</label>
                <input required size='100' class='form-control' type='text' name='msg_subject' value='' required/>
				<br /><label>Body:</label>
                <textarea rows="20" cols="80"  id="mytextarea" name="msg_body"></textarea>
                <input required type="hidden" name="csrf" value="<?=Token::generate();?>" >
              </p>
              <p>
                  <br />
      </div>
      <div class="modal-footer">
	  <div class="btn-group">	<input type="hidden" name="csrf" value="<?=Token::generate();?>" />
	<input class='btn btn-primary' type='submit' name="send_message" value='Send Message' class='submit' /></div>
	</form>
         <div class="btn-group"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div>
      </div>
    </div>
	</div>
  </div>

  <div id="archived" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Archived Threads</h4>
      </div>
      <div class="modal-body" id="archivediv">
	  <?php $messagesQ2 = $db->query("SELECT * FROM message_threads WHERE (msg_to = ? AND archive_to = ? AND hidden_to = ?) OR (msg_from = ? AND archive_from = ? AND hidden_from = ?) ORDER BY last_update DESC",array($user->data()->id,1,0,$user->data()->id,1,0));
			$messages2 = $messagesQ2->results();
			$messagesCount2 = $messagesQ2->count(); ?>
	  		<?php if($messagesCount2 > 0) {?><label><input type="checkbox" class="checkAllArchive" />
		[ check/uncheck all ]</label><?php } ?>
<form name="uthreads" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
        <center><table class="table table-striped">
          <thead>
            <tr>
              <th></th>
			  <th></th>
            </tr>
          </thead>
          <tbody>
            <tr>
			<?php if($messagesCount2 > 0) {?>
              <?php foreach($messages2 as $m2){ ?>
			  <?php
			if($m2->msg_from == $user->data()->id) { $findId = $m2->msg_to; } else { $findId = $m2->msg_from; }
			$findUser = $db->query("SELECT picture,email FROM users WHERE id = $findId");
            $foundUser = $findUser->first();
            $grav = empty($foundUser->picture) ? get_gravatar(strtolower(trim($foundUser->email))) : $foundUser->picture; ?>
			<?php $lastmessage = strtotime($m2->last_update);
				$difference = ceil((time() - $lastmessage) / (60 * 60 * 24));
				// if($difference==0) { $last_update = "Today, "; $last_update .= date("g:i A",$lastmessage); }
				if($difference >= 0 && $difference < 7) {
					$today = date("j");
					$last_message = date("j",$lastmessage);
					if($today==$last_message) { $last_update = "Today, "; $last_update .= date("g:i A",$lastmessage); }
					else {
				$last_update = date("l g:i A",$lastmessage); } }
				elseif($difference >= 7) { $last_update = date("M j, Y g:i A",$lastmessage); }
				$replies = $db->query("SELECT COUNT(*) AS count FROM messages WHERE msg_thread = ? GROUP BY msg_thread",array($m2->id));
				$repliescount = $replies->count();
				?>
                <td style="width:100px">
					<center>
						<span class="chat-img pull-left" style="padding-right:5px">
							<a class="nounderline" href="message.php?id=<?=$m2->id?>">
								<img src="<?=$grav ?>" width="75" class="img-thumbnail">
							</a>
						</span>
					</center>
				</td>
				<td class="pull-left">
					<h4>
						<input type="checkbox" class="checkarchive" name="checkbox[<?=$m2->id?>]" value="<?=$m2->id?>"/>
						<a class="nounderline" href="message.php?id=<?=$m2->id?>">
							<?=$m2->msg_subject?> - with <?php if($m2->msg_from == $user->data()->id) { echouser($m2->msg_to); } else { echouser($m2->msg_from); } ?>
						</a>
					</h4>
					<a class="nounderline" href="message.php?id=<?=$m2->id?>">
						Updated <?=$last_update?> by <?php echouser($m2->last_update_by);?>
					</a>
            </tr>
			<?php } } else {?>
			<td colspan="2"><center><h3>No Archived Conversations</h3></center></td></tr>
			<?php } ?>
              </tbody>
            </table></center>
                  <br />
      </div>
      <div class="modal-footer">
	  <div class="btn-group">	<input type="hidden" name="csrf" value="<?=Token::generate();?>" />
	<input class='btn btn-primary' type='submit' name="delete" value='Delete Selected Threads' class='submit' /></div>
	<div class="btn-group"><input class='btn btn-primary' type='submit' name="unarchive" value='Unarchive Selected Threads' class='submit' /></div>
	</form>
         <div class="btn-group"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div>
      </div>
    </div>
	</div>
  </div>

  <div id="composemass" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">New Mass Message</h4>
      </div>
      <div class="modal-body">
<form name="create_mass_message" action="messages.php" method="post">

              <label>Subject:</label>
                <input required size='100' class='form-control' type='text' name='msg_subject' value='' required/>
				<br /><label>Body:</label>
                <textarea rows="20" cols="80"  id="mytextarea2" name="msg_body"></textarea>
                <input required type="hidden" name="csrf" value="<?=Token::generate();?>" >
              </p>
              <p>
                  <br />
      </div>
      <div class="modal-footer">
	  <div class="btn-group">	<input type="hidden" name="csrf" value="<?=Token::generate();?>" />
	<input class='btn btn-primary' type='submit' name="send_mass_message" value='Send Message' class='submit' /></div>
	</form>
         <div class="btn-group"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div>
      </div>
    </div>
	</div>
  </div>

        </div> <!-- /.row -->
      </div> <!-- /.container -->
    </div> <!-- /.wrapper -->


    <!-- footers -->
    <?php require_once $abs_us_root.$us_url_root.'users/includes/page_footer.php'; // the final html footer copyright row + the external js calls ?>

    <!-- Place any per-page javascript here -->
	<script src='https://cdn.tinymce.com/4/tinymce.min.js'></script>
	<script src="js/jwerty.js"></script>
	<script src="js/combobox.js"></script>
	<script>
	$(document).ready(function(){
	$('.combobox').combobox();
	});
	tinymce.init({
	selector: '#mytextarea'
	});
	tinymce.init({
	selector: '#mytextarea2'
	});
	$('.checkAllMsg').on('click', function(e) {
		 $('.maincheck').prop('checked', $(e.target).prop('checked'));
	 });
	 $('.checkAllArchive').on('click', function(e) {
		 $('.checkarchive').prop('checked', $(e.target).prop('checked'));
	 });
	jwerty.key('esc', function () {
		$('.modal').modal('hide');
	});
	</script>

    <?php require_once $abs_us_root.$us_url_root.'users/includes/html_footer.php'; // currently just the closing /body and /html ?>

Pasted: Aug 13, 2017, 8:24:48 pm
Views: 15