Файл: hashtag.io-2629a1a4ea078149b002e45e2e12bb946062c2b8/config/class/message.class.php
Строк: 1693
<?php
class message {
protected $db;
protected $DIR;
public function __construct(){
$db = N::_DB();
$DIR = N::$DIR;
$this->db = $db;
$this->DIR = $DIR;
}
public function getPeople($value){
if ($value != "") {
$session = $_SESSION['id'];
$text = preg_replace("#[^a-zA-Z0-9_@.]#i", "", $value);
include 'avatar.class.php';
include 'settings.class.php';
include 'universal.class.php';
$avatar = new Avatar;
$settings = new settings;
$universal = new universal;
$query = $this->db->prepare("SELECT follow_to_u, follow_to FROM follow_system WHERE follow_to_u LIKE :value AND follow_by = :by");
$query->execute(array(":value" => "%$text%", ":by" => $session));
if ($query->rowCount() != 0) {
while ($row = $query->fetch(PDO::FETCH_OBJ)) {
$id = $row->follow_to;
$user = $row->follow_to_u;
if ($settings->AmIBlocked($id) == false) {
echo "<li data-userid='{$id}' class='select_u'><img src='{$this->DIR}/{$avatar->DisplayAvatar($id)}' alt=''>
<span>{$universal->nameShortener($user, 25)}</span></li>";
}
}
}
}
}
function toMssgURL($str){
$regex = "#[-a-zA-Z0-9@:%_+.~#?&//=]{2,256}.[a-z]{2,4}b(/[-a-zA-Z0-9@:%_+.~#?&//=]*)?#si";
$str = preg_replace($regex, '<a class="hashtag" href="$0" target="_blank">$0</a>', $str);
return $str;
}
public function mssgViaBtn($value, $to, $cname){
$session = $_SESSION['id'];
$text = preg_replace("#[<>]#i", "", $value);
$name = preg_replace("#[<>]#", "", $cname);
include 'settings.class.php';
$settings = new settings;
if ($settings->AmIBlocked($to) == false) {
$query = $this->db->prepare("SELECT name FROM conversations WHERE name = :name AND ((user_one = :one AND user_two = :two) OR (user_one = :two AND user_two = :one))");
$query->execute(array(":name" => $name, ":one" => $session, ":two" => $to));
if ($query->rowCount() > 0) {
echo "exists";
} else if ($query->rowCount() == 0) {
$comb = "$session,$to";
$query = $this->db->prepare("INSERT INTO conversations (name, user_one, user_two, comb_users, time) VALUES(:name, :one, :two, :comb, now())");
$query->execute(array(":name" => $name, ":one" => $session, ":two" => $to, ":comb" =>$comb));
$last = $this->db->lastInsertId();
if ($text != "") {
$q = $this->db->prepare("INSERT INTO message(con_id, mssg_by, mssg_to, message, type, time, status) VALUES (:id, :by, :to, :mssg, :type, now(), :status)");
$q->execute(array(":id" => $last, ":by" => $session, ":to" => $to, ":mssg" => $text, ":type" => "text", ":status" => "unread"));
}
echo "ok";
}
}
}
public function mssgCount($con, $by){
$session = $_SESSION['id'];
if ($by == "user") {
$query = $this->db->prepare("SELECT message_id FROM message WHERE con_id = :id AND type <> :type");
$query->execute(array(":id" => $con, ":type" => "name_change"));
} else if ($by == "group") {
$query = $this->db->prepare("SELECT message_id FROM message WHERE grp_con_id = :id AND type <> :type");
$query->execute(array(":id" => $con, ":type" => "name_change"));
}
$count = $query->rowCount();
return $count;
}
public function GETCon($con, $what){
$query = $this->db->prepare("SELECT $what FROM conversations WHERE con_id = :id");
$query->execute(array(":id" => $con));
while ($row = $query->fetch(PDO::FETCH_OBJ)) {
return $row->$what;
}
}
public function GETmssg($con, $what){
$query = $this->db->prepare("SELECT $what FROM message WHERE con_id = :id");
$query->execute(array(":id" => $con));
while ($row = $query->fetch(PDO::FETCH_OBJ)) {
return $row->$what;
}
}
public function getGrpCon($grp, $what){
$query = $this->db->prepare("SELECT $what FROM group_con WHERE grp_con_id = :id");
$query->execute(array(":id" => $grp));
if ($query->rowCount() != 0) {
while ($row = $query->fetch(PDO::FETCH_OBJ)) {
return $row->$what;
}
}
}
public function markMssgAsRead($con, $of){
$session = $_SESSION['id'];
if ($of == "user") {
$query = $this->db->prepare("UPDATE message SET status = :status WHERE con_id = :id AND mssg_to = :to");
$query->execute(array(":status" => "read", ":id" => $con, ":to" => $session));
}
}
public function getAllUnreadMssg(){
if (isset($_SESSION['id'])) {
$session = $_SESSION['id'];
$query = $this->db->prepare("SELECT message_id FROM message WHERE mssg_to = :to AND status = :status");
$query->execute(array(":to" => $session, ":status" => "unread"));
$count = $query->rowCount();
$q = $this->db->prepare("SELECT gru_id FROM grpconunreads WHERE member = :me");
$q->execute(array(":me" => $session));
$c = $q->rowCount();
$count = intval($count);
$c = intval($c);
$mc = $count+$c;
if ($mc > 0) {
if ($mc < 10) {
return $mc;
} else if ($mc >= 10 ) {
return "+";
}
}
}
}
public function insertGrpUnreads($grp, $mssg){
$session = $_SESSION['id'];
$query = $this->db->prepare("SELECT members FROM group_con_members WHERE grp_con_id = :grp AND members <> :me");
$query->execute(array(":grp" => $grp, ":me" => $session));
while ($row = $query->fetch(PDO::FETCH_OBJ)) {
$mem = $row->members;
$q = $this->db->prepare("INSERT INTO grpconunreads(grp_con_id, gcu_by, member, gcu_mssg) VALUES(:grp, :by, :member, :mssg)");
$q->execute(array(":grp" => $grp, ":by" => $session, ":member" => $mem, ":mssg" => $mssg));
}
}
public function grpClearUnreads($grp){
$session = $_SESSION['id'];
$query = $this->db->prepare("DELETE FROM grpconunreads WHERE grp_con_id = :grp AND member = :mem");
$query->execute(array(":grp" => $grp, ":mem" => $session));
}
public function conUnreads($con){
$session = $_SESSION['id'];
$query = $this->db->prepare("SELECT status FROM message WHERE con_id = :id AND status = :status AND mssg_to = :to");
$query->execute(array(":id" => $con, ":status" => "unread", ":to" => $session));
$count = $query->rowCount();
if ($count > 0) {
if ($count < 10) {
return $count;
} else if ($count <= 10) {
return "+";
}
}
}
public function GrpConUnreads($grp){
$session = $_SESSION['id'];
$q = $this->db->prepare("SELECT gru_id FROM grpconunreads WHERE member = :me AND grp_con_id = :grp");
$q->execute(array(":me" => $session, ":grp" => $grp));
if ($q->rowCount() != 0) {
return $c = $q->rowCount();
}
}
public function getLastMssgTime($con, $by){
if ($by == "user") {
$query = $this->db->prepare("SELECT MAX(time) AS ti FROM message WHERE con_id = :id");
$query->execute(array(":id" => $con));
} else if ($by == "group") {
$query = $this->db->prepare("SELECT MAX(time) AS ti FROM message WHERE grp_con_id = :id");
$query->execute(array(":id" => $con));
}
$row = $query->fetch(PDO::FETCH_OBJ);
return $row->ti;
}
public function mssgStatus($mssg){
$query = $this->db->prepare("SELECT status FROM message WHERE message_id = :mssg LIMIT 1");
$query->execute(array(":mssg" => $mssg));
if ($query->rowCount() > 0) {
$row = $query->fetch(PDO::FETCH_OBJ);
return $row->status;
}
}
public function conCount(){
$session = $_SESSION['id'];
$query = $this->db->prepare("SELECT * FROM conversations WHERE user_one = :me OR user_two = :me ORDER BY time DESC");
$query->execute(array(":me" => $session));
$count = $query->rowCount();
$q = $this->db->prepare("SELECT * FROM group_con_members WHERE group_con_members.members = :me");
$q->execute(array(":me" => $session));
$c = $q->rowCount();
$count = intval($count);
$c = intval($c);
$mc = $count+$c;
if ($mc == 0) {
return "No";
} else if ($mc > 0) {
return $mc;
}
}
public function getLastMssg($con, $of){
$universal = new universal;
$session = $_SESSION['id'];
if ($of == "user") {
$query = $this->db->prepare("SELECT MAX(message_id) AS last FROM message WHERE con_id = :con AND type <> :no LIMIT 1");
$query->execute(array(":con" => $con, ":no" => "name_change"));
} else if ($of == "group") {
$query = $this->db->prepare("SELECT MAX(message_id) AS last FROM message WHERE grp_con_id = :con AND type <> :no LIMIT 1");
$query->execute(array(":con" => $con, ":no" => "name_change"));
}
// if ($query->rowCount() > 0) {
$row = $query->fetch(PDO::FETCH_OBJ);
$id = $row->last;
$q = $this->db->prepare("SELECT message, type, mssg_by FROM message WHERE message_id = :id LIMIT 1");
$q->execute(array(":id" => $id));
if ($q->rowCount() > 0) {
$row = $q->fetch(PDO::FETCH_OBJ);
$mssg = $row->message;
$type = $row->type;
$by = $row->mssg_by;
if ($by == $session) {
echo "<span class='mssg_sent'><i class='material-icons'>done_all</i></span>";
}
if ($of == "group" && $by != $session && ($type == "text" || $type == "image" || $type == "sticker")) {
echo "{$universal->nameShortener($universal->GETsDetails($by, "username"), 15)}: ";
}
if ($type == "image") {
return "<span><i class='fa fa-camera retro' aria-hidden='true'></i>Image</span>";
} else if ($type == "sticker") {
return "<span><i class='fa fa-gift retro' aria-hidden='true'></i>Sticker</span>";
} else if ($type == "text") {
if (filter_var($mssg, FILTER_VALIDATE_URL) == true) {
return "<span><i class='fa fa-link retro' aria-hidden='true'></i>Link</span>";
} else {
return $universal->nameShortener($mssg, 15);
// return "Text";
}
} else if($type == "avatar_change") {
return "Avatar changed";
} else if($type == "name_change") {
return "Name changed";
} else if ($type == "member_add") {
return "Member added";
} else if($type == "leave_grp_con"){
return "Member left";
} else if ($type == "removed_grp_con") {
return "Member removed";
} else if ($type == "admin_change") {
return "Admin changed";
} else {
return "";
}
}
}
public function conversations(){
$session = $_SESSION['id'];
$universal = new universal;
$avatar = new Avatar;
$Time = new time;
$query = $this->db->prepare("SELECT * FROM conversations WHERE user_one = :me OR user_two = :me ORDER BY time DESC");
$query->execute(array(":me" => $session));
if ($query->rowCount() > 0) {
// echo "<span class='con_count' data-count='{$query->rowCount()}'>{$query->rowCount()} conversations</span>";
while ($row = $query->fetch(PDO::FETCH_OBJ)) {
$con_id = $row->con_id;
$name = $row->name;
$two = $row->user_two;
$comb = $row->comb_users;
// if ($two != $session) {
$array = explode(",", $comb);
if ($array[0] == $session) {
$user = intval($array[1]);
} else if($array[1] == $session) {
$user = intval($array[0]);
}
echo "<div class='mssg_sr mssg_usr inst' data-cid='{$con_id}' data-utwo='{$user}' id='c_{$con_id}' data-of='user'>
<img src='{$this->DIR}/{$avatar->GETsAvatar($user)}' alt=''>";
echo "<div class='m_sr_ontent'>
<span class='m_sr_username'>". $universal->nameShortener($name, 20) ."</span><span class='m_sr_light'>with {$universal->nameShortener($universal->GETsDetails($user, "username"), 12)}: ";
echo self::getLastMssg($con_id, "user");
echo "</span>
</div>";
echo "<span class='m_sr_time'>";
$t = self::getLastMssgTime($con_id, "user");
if ($t == "") { echo ""; } else { echo $Time->timeAgo($t); }
echo "</span><span class='m_sr_unread'>". self::conUnreads($con_id) ."</span></div>";
}
} else if ($query->rowCount() == 0) {
echo "<div class='home_last_mssg con_last_mssg'>
<img src='{$this->DIR}/images/needs/tumblr_static_cbyn77qow2ogcgskwcko04c8w.png'><span>No conversations</span></div>";
}
}
public function conInfo($con){
$session = $_SESSION['id'];
include 'universal.class.php';
include 'avatar.class.php';
include 'mutual.class.php';
include 'time.class.php';
include 'follow_system.class.php';
$universal = new universal;
$avatar = new Avatar;
$mutual = new mutual;
$Time = new time;
$follow = new follow_system;
$query = $this->db->prepare("SELECT * FROM conversations WHERE con_id = :con LIMIT 1");
$query->execute(array(":con" => $con));
$row = $query->fetch(PDO::FETCH_OBJ);
$name = $row->name;
$time = $row->time;
$comb = $row->comb_users;
$array = explode(",", $comb);
if ($array[0] == $session) {
$user = intval($array[1]);
} else if($array[1] == $session) {
$user = intval($array[0]);
}
echo
"<div class='sli_cancel_div'><span class='sli_cancel'><i class='material-icons'>close</i></span>
</div><div class='sli_name_div'><span class='sli_label'>Conversation name</span>
<span class='sli_bold'>{$name}</span></div>
<div class='sli_with_div'><span class='sli_label'>Conversation with</span>
<div class='sli_with'><img src='{$this->DIR}/{$avatar->DisplayAvatar($user)}'>
<div class='sli_with_cont'><a href='{$this->DIR}/profile/{$universal->GETsDetails($user, "username")}'>". $universal->nameShortener($universal->GETsDetails($user, "username"), 20) ."</a>
<span class='sli_w'>{$mutual->eMutual($user)}</span></div></div></div>
<div class='sli_time'><span class='sli_label'>Conversation since</span>
<span class='sli_bold'>{$Time->timeAgo($time)} - {$Time->normalTime($time)}</span></div>
<div class='sli_mssg_count'><span class='sli_label'>No. of messages</span>
<span class='sli_bold'>". self::mssgCount($con, "user") ." messages</span></div>
<div class='sli_media'><span class='sli_label'>Media</span>";
$q = $this->db->prepare("SELECT message, mssg_by, time FROM message WHERE con_id = :con AND type = :type ORDER BY time DESC");
$q->execute(array(":con" => $con, ":type" => "image"));
if ($q->rowCount() > 0) {
while ($row = $q->fetch(PDO::FETCH_OBJ)) {
if ($row->mssg_by == $session) { $sent = "You"; } else { $sent = $universal->GETsDetails($row->mssg_by, "username"); }
echo "<img src='{$this->DIR}/message/Instagram_{$row->message}' class='sli_media_img' data-description='{$sent}' title='By {$sent}' data-time='{$Time->timeAgo($row->time)}' data-imgby='{$universal->GETsDetails($row->mssg_by, "username")}'>";
}
} else if ($q->rowCount() == 0) {
echo "<div class='home_last_mssg sli_last_mssg'><img src='{$this->DIR}/images/needs/tumblr_static_cbyn77qow2ogcgskwcko04c8w.png'></div>";
}
echo "</div>";
}
public function getLastAvatarChanger($grp, $what){
$query = $this->db->prepare("SELECT MAX(message_id) AS l FROM message WHERE grp_con_id = :grp AND type = :type LIMIT 1");
$query->execute(array(":grp" => $grp, ":type" => "avatar_change"));
if ($query->rowCount() != 0) {
$row = $query->fetch(PDO::FETCH_OBJ);
$max = $row->l;
$q = $this->db->prepare("SELECT $what FROM message WHERE message_id = :id LIMIT 1");
$q->execute(array(":id" => $max));
return $q->fetch(PDO::FETCH_OBJ)->$what;
}
}
public function grpConInfo($grp){
$session = $_SESSION['id'];
include 'universal.class.php';
include 'avatar.class.php';
include 'mutual.class.php';
include 'time.class.php';
include 'follow_system.class.php';
$universal = new universal;
$avatar = new Avatar;
$mutual = new mutual;
$Time = new time;
$follow = new follow_system;
$query = $this->db->prepare("SELECT * FROM group_con WHERE grp_con_id = :con LIMIT 1");
$query->execute(array(":con" => $grp));
$row = $query->fetch(PDO::FETCH_OBJ);
$name = $row->name;
$time = $row->time;
$av = $row->avatar;
$admin = $row->admin;
echo
"<div class='sli_cancel_div'>
<span class='sli_cancel'><i class='material-icons'>close</i></span>
</div>";
echo "<form class='edit_grp_con_ava_form' method='post' action='' enctype='multipart/form-data' data-grp_con_id='{$grp}'>
<input type='file' class='edit_grp_con_ava' name='edit_grp_con_ava' id='edit_grp_con_ava'>
<label for='edit_grp_con_ava' class='sec_btn'>Change avatar</label>
</form>";
// if ($admin == $session) {
echo "<div class='sli_add'><a href='#' class='sec_btn sli_add_mem'>Add members</a></div>";
echo "<div class='sli_add_search' data-grp_con_id='{$grp}'><input type='text' spellcheck='false' placeholder='Seach to add..'></div>";
echo "<div class='grp_to_persons sli_to_persons'>
<div class='grp_to_persons_inner'>
<ul class='grp_to_ul'>
</ul>
</div>
</div>";
// }
echo "<div class='sli_avatar'>
<img src='";
if ($av == "") {
echo "{$this->DIR}/images/Default_group_con/Epic-Circle-31m3ldalla6v0uqb8ne6mi.png";
} else {
echo "{$this->DIR}/grp_mssg_avatar/Instagram_{$av}";
}
$ch = self::getLastAvatarChanger($grp, "mssg_by");
if($ch == $session){$f = "You";} else {$f = $universal->GETsDetails($ch, "username");}
echo "' class='sli_avatar_img' data-time='{$Time->timeAgo(self::getLastAvatarChanger($grp, "time"))}' data-imgby='{$f}'>
</div>
<div class='sli_name_div'>
<span class='sli_label'>Group name</span>
<span class='sli_bold'>{$name}</span>
</div>
<div class='sli_with_div'>
<span class='sli_label'>Group created by</span>";
if ($admin == $session) {
echo "<span class='sli_bold'>You</span>";
} else {
echo "<div class='sli_with'>
<img src='{$this->DIR}/{$avatar->DisplayAvatar($admin)}'>
<div class='sli_with_cont'>
<a href='{$this->DIR}/profile/{$universal->nameShortener($universal->GETsDetails($admin, "username"), 20)}'>{$universal->GETsDetails($admin, "username")}</a>
<span>{$mutual->eMutual($admin)}</span>
</div>
</div>";
}
echo "</div>
<div class='sli_time'><span class='sli_label'>Group created</span>
<span class='sli_bold'>{$Time->timeAgo($time)} ago - {$Time->normalTime($time)}</span></div>
<div class='sli_mssg_count'><span class='sli_label'>No. of messages</span>
<span class='sli_bold'>". self::mssgCount($grp, "group") ." messages</span></div>
<div class='sli_media'><span class='sli_label'>Media</span>";
$q = $this->db->prepare("SELECT message, mssg_by, time FROM message WHERE grp_con_id = :con AND type = :type ORDER BY time DESC");
$q->execute(array(":con" => $grp, ":type" => "image"));
if ($q->rowCount() > 0) {
while ($row = $q->fetch(PDO::FETCH_OBJ)) {
if ($row->mssg_by == $session) { $sent = "You"; } else { $sent = $universal->GETsDetails($row->mssg_by, "username"); }
echo "<img src='{$this->DIR}/message/Instagram_{$row->message}' class='sli_media_img' data-description='{$sent}' title='By {$sent}' data-time='{$Time->timeAgo($row->time)}' data-imgby='{$sent}'>";
}
} else if ($q->rowCount() == 0) {
echo "<div class='home_last_mssg sli_last_mssg'><img src='{$this->DIR}/images/needs/tumblr_static_cbyn77qow2ogcgskwcko04c8w.png'></div>";
}
echo "</div>
<div class='sli_with_div'>
<span class='sli_label no_of_grp_con_mems'>". self::grpMemCount($grp) ." group members</span>";
$r = $this->db->prepare("SELECT members FROM group_con_members WHERE grp_con_id = :grp ORDER BY grp_con_mem_id DESC");
$r->execute(array(":grp" =>$grp));
while ($rr = $r->fetch(PDO::FETCH_OBJ)) {
$member = $rr->members;
echo "<div class='sli_with g_sli_with'>
<img src='{$this->DIR}/{$avatar->DisplayAvatar($member)}'>
<div class='sli_with_cont'>
<a href='{$this->DIR}/profile/{$universal->GETsDetails($member, "username")}'>". $universal->nameShortener($universal->GETsDetails($member, "username"), 20) ."</a>";
if ($admin == $member) {
echo "<span class='grp_admin_indicate'>admin</span>";
}
echo "<span class='sli_w'>";
if($session == $member){
echo "You";
} else if($universal->isOnline($member)){
echo "online";
} else {
echo $mutual->eMutual($member);
}
echo "</span>";
echo "<div class='sli_with_tools' data-grp_con_id='{$grp}'data-user='{$member}' data-username='{$universal->nameShortener($universal->GETsDetails($member, "username"), 20)}'>";
if ($admin == $session && $member != $session) {
echo "<a href='#' class='sec_btn sli_with_remove'>Remove</a>";
}
echo "</div>";
// <a href='#' class='sec_btn sli_with_admin'>Admin</a>
echo "</div>
</div>";
}
echo "</div>";
echo "<div class='sli_with_leave_div' data-grp_con_id='{$grp}'>";
if ($admin != $session) {
echo "<a href='#' class='pri_btn sli_with_leave'>Leave group</a></div>";
}
echo "</div>";
}
public function getMessages($con, $user){
$session = $_SESSION['id'];
include 'universal.class.php';
include 'avatar.class.php';
include 'time.class.php';
$avatar = new Avatar;
$universal = new universal;
$Time = new time;
self::markMssgAsRead($con, "user");
$query = $this->db->prepare("SELECT * FROM message WHERE con_id = :id ORDER BY time");
$query->execute(array(":id" => $con));
echo
"<div class='mssg_messages' data-u='{$user}' data-conid='{$con}'><div class='m_m_top'><img src='{$this->DIR}/{$avatar->DisplayAvatar($user)}' alt=''>
<div class='m_m_t_c'>
<span class='con_name' spellcheck='false' maxlength='23'>";
$n = self::GETCon($con, "name");
if ($n == "") { echo "Name your conversation"; } else if($n != "") { echo $n; }
echo "</span>
<span class='m_m_t_useless'>with</span>
<a href='{$this->DIR}/profile/{$universal->GETsDetails($user, "username")}' class='m_m_t_a'>". $universal->nameShortener($universal->GETsDetails($user, "username"), 20) ."</a>";
if($universal->isOnline($user)){
echo " <span class='user_m_status'>online<span>";
}
echo "</div>";
// <span class='mssg_sticker' data-description='Add sticker'><i class='material-icons'>face</i></span>
// <form class='mssg_add_img_form' action='' method='post'>
// <input type='file' name='mssg_add_img' value='' id='mssg_add_img'><label for='mssg_add_img' class='mssg_img' data-description='Add image'><i class='material-icons'>photo_camera</i></label>
// </form>
echo "<span class='m_m_exp'><i class='material-icons'>expand_more</i></span>
<div class='mssg_options options'><ul>
<li><a href='#' class='dlt_con'>Delete conversation</a></li>
<li><a href='#' class='dlt_mssgs'>Unsend all mssgs</a></li>
<li><a href='#' class='edit_con_name'>Edit name</a></li>
<li><form class='mssg_add_img_form' action='' method='post'>
<input type='file' name='mssg_add_img' value='' id='mssg_add_img' data-u='{$user}' data-conid='{$con}'>
<label for='mssg_add_img' class='mssg_img'>Add image</label>
</form></li>
<li><a href='#' class='mssg_sticker'>Add sticker</a></li>
<li><a href='#' class='m_m_info'>More</a></li>
</ul></div></div><div class='m_m_wrapper'><div class='m_m_main'>";
if ($query->rowCount() == 0) {
echo "<div class='home_last_mssg mssgs_last_mssg'><img src='{$this->DIR}/images/needs/large.jpg'></div>";
}
while ($row = $query->fetch(PDO::FETCH_OBJ)) {
$mssg = $row->message_id;
$data = $row->message;
$type = $row->type;
$by = $row->mssg_by;
$to = $row->mssg_to;
$time = $row->time;
// if (filter_var($data, FILTER_VALIDATE_URL) == true) {
// echo "<a href='{$data}' class='";
// if($session == $by){ echo "my_m_m_link"; }
// echo " ";
// if ($session == $to) { echo "not_m_m_link"; }
// echo "' target='_blank'>{". nl2br(trim($data)) ."}</a>";
// } else {
// echo nl2br(trim($data));
// }
if ($type == "text" || $type == "image" || $type == "sticker") {
echo "<div class='m_m_divs ";
if ($by == $session) { echo "my_mm_div"; } else { echo "not_my_mm_div"; }
echo"'>
<div title='{$Time->timeAgo($time)} ago' data-mssgid='{$mssg}' data-conid='{$con}' data-type='{$type}' class='m_m ";
if ($by == $session) { echo "my_mm"; } else { echo "not_my_mm"; }
echo "' spellcheck='false'>";
if ($type == "text") {
$data = self::toMssgURL($data);
echo nl2br(trim($data));
} else if($type == "image") {
if($by == $session){ $m = "You"; } else { $m = $universal->GETsDetails($by, "username"); }
echo "<img src='{$this->DIR}/message/Instagram_{$data}' class='m_m_img' data-imgby='{$m}' data-time='{$Time->timeAgo($time)}'>";
} else if ($type == "sticker") {
echo "<img src='{$this->DIR}/message/Instagram_{$data}' class='m_m_sticker'>";
}
echo "</div>
<span class='m_m_time'>{$Time->timeAgo($time)}</span>
<div class='m_m_tools'>";
if ($by == $session) {
echo "<span class='m_m_status' data-description='Sent'><i class='material-icons'>check</i></span>";
echo "<span class='m_m_dlt' data-description='Unsend'><i class='material-icons'>delete</i></span>";
if($type == "text"){
echo "<span class='m_m_edit' data-description='Edit'><i class='material-icons'>mode_edit</i></span>";
}
}
echo "</div></div>";
} else if ($type == "name_change") {
echo "<div class='m_m_divs m_m_info_div'><span class='mssg_info' title='{$Time->timeAgo($time)}'>";
if ($by == $session) {
echo "You changed conversation name to "."<span class='m_m_name_change'>{$data}</span>";
} else if ($by != $session) {
echo $universal->GETsDetails($by, "username"). " changed conversation name to "."<span class='m_m_name_change'>{$data}</span>";
}
echo "</span></div>";
}
}
echo "<span class='mssg_helper'></span></div></div>";
echo "<div class='m_m_slider'></div>";
echo "<div class='m_m_bottom' data-u='{$user}' data-conid='{$con}'><form class='add_mssg_form' action='' method='post'>";
// <input type='text' name='' value='' placeholder='Send message' class='send_mssg' spellcheck='false'>
echo "<div class='send_mssg_before'>Sending message..</div>";
echo "<textarea name='' value='' placeholder='Send message..' class='send_mssg' spellcheck='false'></textarea>";
echo "<span class='mssg_emoji_btn'><i class='material-icons'>sentiment_very_satisfied</i></span>
<input type='submit' name='' value='Send' class='pri_btn mssg_send'>
</form></div></div>";
}
public function sendMessageText($value, $to, $con, $mssgOf){
$session = $_SESSION['id'];
$text = preg_replace("#[<>]#i", "", $value);
$text = trim($text);
if ($text != "") {
if ($mssgOf == "user") {
$query = $this->db->prepare("INSERT INTO message(con_id, mssg_by, mssg_to, message, type, time, status) VALUES (:con, :by, :to, :mssg, :type, now(), :status)");
$query->execute(array(":con" => $con,":by" => $session, ":to" => $to, ":mssg" => $text, ":type" => "text", ":status" => "unread"));
} else if ($mssgOf == "group") {
$query = $this->db->prepare("INSERT INTO message(grp_con_id, mssg_by, message, type, mssg_of, time, status) VALUES (:con, :by, :mssg, :type, :of, now(), :status)");
$query->execute(array(":con" => $con,":by" => $session, ":mssg" => $text, ":type" => "text", ":of" => "group", ":status" => "unread"));
$i = $this->db->lastInsertId();
self::insertGrpUnreads($con, $i);
}
}
}
public function sendMessageImage($file, $to, $con, $mssgOf){
$session = $_SESSION['id'];
$name = $file['name'];
$size = $file['size'];
$tmp_name = $file['tmp_name'];
$error = $file['error'];
$ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
$allowed = array("jpg", "png", "gif", "jpeg");
if (in_array($ext, $allowed)) {
if ($error == 0) {
$new_name = time().".".$ext;
if (move_uploaded_file($tmp_name, "../../message/Instagram_".$new_name)) {
if ($mssgOf == "user") {
$query = $this->db->prepare("INSERT INTO message(con_id, mssg_by, mssg_to, message, type, time, status) VALUES (:con, :by, :to, :mssg, :type, now(), :status)");
$query->execute(array(":con" => $con,":by" => $session, ":to" => $to, ":mssg" => $new_name, ":type" => "image", ":status" => "unread"));
} else if ($mssgOf == "group") {
$query = $this->db->prepare("INSERT INTO message(grp_con_id, mssg_by, message, type, mssg_of, time, status) VALUES (:con, :by, :mssg, :type, :of, now(), :status)");
$query->execute(array(":con" => $con,":by" => $session, ":mssg" => $new_name, ":type" => "image", ":of" => "group", ":status" => "unread"));
$i = $this->db->lastInsertId();
self::insertGrpUnreads($con, $i);
}
return $new_name;
}
}
}
}
public function sendMessageSticker($file, $touser, $con, $mssgOf){
$session = $_SESSION['id'];
$ext = pathinfo($file, PATHINFO_EXTENSION);
$image = substr($file, strrpos($file, "/")+1);
$from = "../../images/stickers/$image";
$to = "../../message/Instagram_".time().".".$ext;
@copy($from, $to);
$new_name = substr($to, 24);
if ($mssgOf == "user") {
$query = $this->db->prepare("INSERT INTO message(con_id, mssg_by, mssg_to, message, type, time, status) VALUES (:con, :by, :to, :mssg, :type, now(), :status)");
$query->execute(array(":con" => $con,":by" => $session, ":to" => $to, ":mssg" => $new_name, ":type" => "sticker", ":status" => "unread"));
} else if ($mssgOf == "group") {
$query = $this->db->prepare("INSERT INTO message(grp_con_id, mssg_by, message, type, mssg_of, time, status) VALUES (:con, :by, :mssg, :type, :of, now(), :status)");
$query->execute(array(":con" => $con,":by" => $session, ":mssg" => $new_name, ":type" => "sticker", ":of" => "group", ":status" => "unread"));
$i = $this->db->lastInsertId();
self::insertGrpUnreads($con, $i);
}
return substr($to, 6);
}
public function deleteAllMssg($con, $by){
$session = $_SESSION['id'];
if ($by == "user") {
$query = $this->db->prepare("SELECT type, message FROM message WHERE con_id = :con AND mssg_by = :by");
$query->execute(array(":con" => $con, ":by" => $session));
} else if ($by == "group") {
$query = $this->db->prepare("SELECT type, message FROM message WHERE grp_con_id = :con AND mssg_by = :by");
$query->execute(array(":con" => $con, ":by" => $session));
}
if ($query->rowCount() > 0) {
while ($row = $query->fetch(PDO::FETCH_OBJ)) {
$type = $row->type;
$mssg = $row->message;
if ($type != "text") {
if(file_exists("../../message/Instagram_{$mssg}")){
unlink("../../message/Instagram_".$mssg);
}
}
}
}
if ($by == "user") {
$q = $this->db->prepare("DELETE FROM message WHERE con_id = :con AND mssg_by = :by");
$q->execute(array(":con" => $con, ":by" => $session));
} else if ($by == "group") {
$q = $this->db->prepare("DELETE FROM message WHERE grp_con_id = :con AND mssg_by = :by");
$q->execute(array(":con" => $con, ":by" => $session));
$r = $this->db->prepare("DELETE FROM grpconunreads WHERE grp_con_id = :grp AND gcu_by = :by");
$r->execute(array(':grp' => $con, ':by' => $session));
}
}
public function deleteConversation($con, $by){
self::deleteAllMssg($con, $by);
if ($by == "user") {
$query = $this->db->prepare("DELETE FROM conversations WHERE con_id = :id");
$query->execute(array(":id" => $con));
$query = $this->db->prepare("DELETE FROM message WHERE con_id = :id");
$query->execute(array(":id" => $con));
} else if ($by == "group") {
$av = self::getGrpCon($con, "avatar");
$dir = "../../grp_mssg_avatar/Instagram_{$av}";
if (file_exists($dir)) {
unlink($dir);
}
$query = $this->db->prepare("DELETE FROM group_con_members WHERE grp_con_id = :id");
$query->execute(array(":id" => $con));
$query = $this->db->prepare("DELETE FROM grpconunreads WHERE grp_con_id = :id");
$query->execute(array(":id" => $con));
$query = $this->db->prepare("DELETE FROM message WHERE grp_con_id = :id");
$query->execute(array(":id" => $con));
$query = $this->db->prepare("DELETE FROM group_con WHERE grp_con_id = :id");
$query->execute(array(":id" => $con));
}
}
public function editConName($ename, $con, $to, $by){
$session = $_SESSION['id'];
$name = preg_replace("#[<>]#", "", $ename);
$name = trim($name);
if ($by == "user") {
$query = $this->db->prepare("UPDATE conversations SET name = :name WHERE con_id = :id");
$query->execute(array(":name" => $name, ":id" => $con));
$q = $this->db->prepare("INSERT INTO message(con_id, mssg_by, mssg_to, message, type, time, status) VALUES (:con, :by, :to, :mssg, :type, now(), :status)");
$q->execute(array(":con" => $con, ":by" => $session, ":to" => $to, ":mssg" => $name, ":type" => "name_change", ":status" => "unread"));
} else if ($by == "group") {
$query = $this->db->prepare("UPDATE group_con SET name = :name WHERE grp_con_id = :id");
$query->execute(array(":name" => $name, ":id" => $con));
$q = $this->db->prepare("INSERT INTO message(grp_con_id, mssg_by, message, type, time, status) VALUES (:con, :by, :mssg, :type, now(), :status)");
$q->execute(array(":con" => $con, ":by" => $session, ":mssg" => $name, ":type" => "name_change", ":status" => "unread"));
}
}
public function deleteMessage($mssg, $con, $type, $by){
$session = $_SESSION['id'];
if ($type != "text") {
$q = $this->db->prepare("SELECT message FROM message WHERE message_id = :id");
$q->execute(array(":id" => $mssg));
if ($q->rowCount() > 0) {
$row = $q->fetch(PDO::FETCH_OBJ);
$data = $row->message;
if (file_exists("../../message/Instagram_{$data}")) {
unlink("../../message/Instagram_".$data);
}
}
}
if ($by == "user") {
$query = $this->db->prepare("DELETE FROM message WHERE message_id = :id AND con_id = :con");
$query->execute(array(":id" => $mssg, ":con" => $con));
} else if ($by == "group") {
$query = $this->db->prepare("DELETE FROM message WHERE message_id = :id AND grp_con_id = :con");
$query->execute(array(":id" => $mssg, ":con" => $con));
$r = $this->db->prepare("DELETE FROM grpconunreads WHERE grp_con_id = :grp AND gcu_by = :me AND gcu_mssg = :mssg");
$r->execute(array(':grp' => $con, ':me' => $session, ':mssg' => $mssg));
}
}
public function editMessage($value, $mssg){
$text = preg_replace("#[<>]#", "", $value);
$text = trim($text);
$query = $this->db->prepare("UPDATE message SET message = :mssg WHERE message_id = :id");
$query->execute(array(":mssg" => $text, ":id" => $mssg));
return $text;
}
public function getGrpMembersForAdd($evalue, $except){
$value = preg_replace("#[^a-z0-9_@.]#i", "", $evalue);
// $except = strtolower($except);
$array = explode(",", $except);
$session = $_SESSION['id'];
$new = array();
$my = array();
if ($value != "") {
include 'avatar.class.php';
include 'universal.class.php';
include 'settings.class.php';
$avatar = new Avatar;
$universal = new universal;
$settings = new settings;
$query = $this->db->prepare("SELECT DISTINCT follow_to_u FROM follow_system WHERE follow_to_u LIKE :username AND follow_by = :whome");
$query->execute(array(":username" => "%$value%", ":whome" => $session));
while($row = $query->fetch(PDO::FETCH_ASSOC)){
$user = $row['follow_to_u'];
$new[] = $row['follow_to_u'];
}
foreach ($new as $value) {
if (!in_array($value, $array)) {
$my[] = $value;
}
}
foreach ($my as $value) {
$nquery = $this->db->prepare("SELECT id, username FROM users WHERE username = :what");
$nquery->execute(array(":what" => $value));
$row = $nquery->fetch(PDO::FETCH_OBJ);
$id = $row->id;
$username = $row->username;
if ($settings->AmIBlocked($id) == false) {
echo "<li class='grp_to_select_u'><img src='{$this->DIR}/" .$avatar->DisplayAvatar($id) ."' alt=''>";
echo "<span>". $universal->nameShortener($username, 25) ."</span></li>";
}
}
}
}
public function addGroup($cname, $members, $file){
$name = preg_replace("#[<>]#", "", $cname);
$session = $_SESSION['id'];
if (isset($file)) {
$fname = $file['name'];
$size = $file['size'];
$tmp_name = $file['tmp_name'];
$error = $file['error'];
$ext = strtolower(pathinfo($fname, PATHINFO_EXTENSION));
$allowed = array("jpg", "png", "gif", "jpeg");
if (in_array($ext, $allowed)) {
$new_name = time().".".$ext;
move_uploaded_file($tmp_name, "../../grp_mssg_avatar/Instagram_".$new_name);
}
}
if (isset($file)) {
$av = $new_name;
} else{
$av = "";
}
$query = $this->db->prepare("INSERT INTO group_con(name, avatar, time, admin) VALUES(:name, :avatar, now(), :admin)");
$query->execute(array(":name" => $name, ":avatar" => $av, ":admin" => $session));
$last = $this->db->lastInsertId();
include 'universal.class.php';
include 'notifications.class.php';
$universal = new universal;
$noti = new notifications;
$r = $this->db->prepare("INSERT INTO group_con_members(grp_con_id, members) VALUES(:id, :members)");
$r->execute(array(":id" => $last, ":members" => $session));
$a = $this->db->prepare("INSERT INTO message(grp_con_id, mssg_by, message, type, time, status) VALUES (:con, :by, :mssg, :type, now(), :status)");
$a->execute(array(":con" => $last, ":by" => $session, ":mssg" => "", ":type" => "avatar_change", ":status" => "unread"));
$array = explode(",", $members);
foreach ($array as $value) {
$id = $universal->getIdFromGet($value);
$q = $this->db->prepare("INSERT INTO group_con_members(grp_con_id, members) VALUES(:id, :members)");
$q->execute(array(":id" => $last, ":members" => $id));
// $noti->followNotify($id, "grp_con");
$noti->actionNotify($id, $grp, "grp_con");
}
}
public function groupsCon(){
$Time = new time;
$universal = new universal;
$session = $_SESSION['id'];
$query = $this->db->prepare("SELECT * FROM group_con_members, group_con WHERE group_con_members.members = :mine AND group_con_members.grp_con_id = group_con.grp_con_id ORDER BY time DESC");
$query->execute(array(":mine" => $session));
if ($query->rowCount() != 0) {
while ($row = $query->fetch(PDO::FETCH_OBJ)) {
// echo "<pre>", print_r($row)."</pre>";
$name = $row->name;
$time = $row->time;
$grpCon = $row->grp_con_id;
$av = $row->avatar;
echo "<div class='mssg_sr mssg_gsr inst' data-gcid='{$grpCon}' id='cgrp_{$grpCon}' data-of='group'>";
if ($av == "") {
echo "<img src='{$this->DIR}/images/Default_group_con/Epic-Circle-31m3ldalla6v0uqb8ne6mi.png'>";
} else {
echo "<img src='{$this->DIR}/grp_mssg_avatar/Instagram_{$av}'>";
}
echo "<div class='m_sr_ontent'>
<span class='m_sr_username'>". $universal->nameShortener($name, 20) ."</span><span class='m_sr_light'>";
echo self::getLastMssg($grpCon, "group");
echo "</span>
</div>
<span class='m_sr_time'>";
$t = self::getLastMssgTime($grpCon, "group");
if ($t == "") { echo ""; } else { echo $Time->timeAgo($t); }
echo "</span><span class='m_sr_unread'>". self::GrpConUnreads($grpCon) ."</span></div>";
}
} else if ($query->rowCount() == 0) {
echo "<div class='home_last_mssg pro_last_mssg grpp_last_mssg'>
<img src='{$this->DIR}/images/needs/tumblr_static_cbyn77qow2ogcgskwcko04c8w.png'><span>No group conversation</span></div>";
}
}
public function grpConAvatar($av){
if ($av == "") {
return "{$this->DIR}/images/Default_group_con/Epic-Circle-31m3ldalla6v0uqb8ne6mi.png";
} else {
return "{$this->DIR}/grp_mssg_avatar/Instagram_".$av;
}
}
public function grpMemCount($grp){
$query = $this->db->prepare("SELECT members FROM group_con_members WHERE grp_con_id = :grp");
$query->execute(array(":grp" => $grp));
return $query->rowCount();
}
public function getGrpMessages($grp){
$session = $_SESSION['id'];
include 'universal.class.php';
include 'avatar.class.php';
include 'time.class.php';
$avatar = new Avatar;
$universal = new universal;
$Time = new time;
self::grpClearUnreads($grp);
$query = $this->db->prepare("SELECT * FROM message WHERE grp_con_id = :id ORDER BY time");
$query->execute(array(":id" => $grp));
echo
"<div class='mssg_messages' data-grp_con_id='{$grp}'><div class='m_m_top'><img src='";
$av = self::getGrpCon($grp, "avatar");
echo self::grpConAvatar($av);
echo "' alt=''>
<div class='m_m_t_c'>
<span class='con_name' spellcheck='false' maxlength='23'>";
$n = self::getGrpCon($grp, "name");
if ($n == "") { echo "Name your conversation"; } else if($n != "") { echo $n; }
echo "</span>
<span class='m_m_t_useless'>". self::grpMemCount($grp) ." members in this group</span>
</div>";
// <span class='mssg_sticker' data-description='Add sticker'><i class='material-icons'>face</i></span>
// <form class='mssg_add_img_form' action='' method='post'>
// <input type='file' name='mssg_add_img' value='' id='mssg_add_img'><label for='mssg_add_img' class='mssg_img' data-description='Add image'><i class='material-icons'>photo_camera</i></label>
// </form>";
echo "<span class='m_m_exp'><i class='material-icons'>expand_more</i></span>
<div class='mssg_options options'><ul>";
$a = self::getGrpCon($grp, "admin");
if ($a == $session) {
echo "<li><a href='#' class='dlt_con'>Delete group</a></li>";
}
echo
"<li><a href='#' class='dlt_mssgs'>Unsend all mssgs</a></li>
<li><a href='#' class='edit_con_name'>Edit name</a></li>
<li><form class='mssg_add_img_form' action='' method='post'>
<input type='file' name='mssg_add_img' value='' id='mssg_add_img' data-grp_con_id='{$grp}'>
<label for='mssg_add_img' class='mssg_img'>Add image</label>
</form></li>
<li><a href='#' class='mssg_sticker'>Add sticker</a></li>";
if ($a == $session) {
echo "<li><a href='#' class='ch_grp_con_admin' data-grp='{$grp}'>Change admin</a></li>";
}
echo "<li><a href='#' class='m_m_info'>More</a></li>
</ul>
</div></div><div class='m_m_wrapper'><div class='m_m_main'>";
if ($query->rowCount() == 0) {
echo "<div class='home_last_mssg mssgs_last_mssg'><img src='{$this->DIR}/images/needs/large.jpg'></div>";
}
while ($row = $query->fetch(PDO::FETCH_OBJ)) {
$mssg = $row->message_id;
$data = $row->message;
$type = $row->type;
$by = $row->mssg_by;
$time = $row->time;
if ($type == "text" || $type == "image" || $type == "sticker") {
echo "<div class='m_m_divs ";
if ($by == $session) { echo "my_mm_div"; } else { echo "not_my_mm_div"; }
echo"'>
<div title='{$Time->timeAgo($time)} ago' data-mssgid='{$mssg}' data-grp_con_id='{$grp}' data-type='{$type}' class='m_m ";
if ($by == $session) { echo "my_mm"; } else { echo "not_my_mm"; }
echo "' spellcheck='false'>";
if ($by != $session) { echo "<a class='grp_sent_by' href='{$this->DIR}/profile/{$universal->GETsDetails($by, "username")}'>{$universal->nameShortener($universal->GETsDetails($by, "username"), 20)}</a>"; }
if ($type == "text") {
if (filter_var($data, FILTER_VALIDATE_URL) == true) {
echo "<a href='{$data}' class='";
if($session == $by){ echo "my_m_m_link"; }
echo " ";
if ($session != $by) { echo "not_m_m_link"; }
echo "' target='_blank'>". nl2br(trim($data)) ."</a>";
} else {
echo nl2br(trim($data));
}
} else if($type == "image") {
if($by == $session){ $m = "You"; } else { $m = $universal->GETsDetails($by, "username"); }
echo "<img src='{$this->DIR}/message/Instagram_{$data}' class='m_m_img' data-imgby='{$m}' data-time='{$Time->timeAgo($time)}'>";
} else if ($type == "sticker") {
echo "<img src='{$this->DIR}/message/Instagram_{$data}' class='m_m_sticker'>";
}
echo "</div>
<span class='m_m_time'>{$Time->timeAgo($time)}</span>
<div class='m_m_tools'>";
if ($by == $session) {
echo "<span class='m_m_status' data-description='Sent'><i class='material-icons'>check</i></span>";
echo "<span class='m_m_dlt' data-description='Unsend'><i class='material-icons'>delete</i></span>";
if($type == "text"){
echo "<span class='m_m_edit' data-description='Edit'><i class='material-icons'>mode_edit</i></span>";
}
}
echo "</div></div>";
} else if ($type == "name_change") {
echo "<div class='m_m_divs m_m_info_div'><span class='mssg_info' title='{$Time->timeAgo($time)}'>";
if ($by == $session) {
echo "You changed conversation name to <span class='m_m_name_change'>{$data}</span>";
} else if ($by != $session) {
echo "<a href='{$this->DIR}/profile/{$universal->GETsDetails($by, "username")}' class='m_m_name_change'>{$universal->GETsDetails($by, "username")}</a> changed conversation name to "."<span class='m_m_name_change'>{$data}</span>";
}
echo "</span></div>";
} else if ($type == "avatar_change") {
echo "<div class='m_m_divs m_m_info_div'><span class='mssg_info' title='{$Time->timeAgo($time)}'>";
if ($by == $session) {
echo "You changed the group avatar";
} else if ($by != $session) {
echo "<a href='{$this->DIR}/profile/{$universal->GETsDetails($by, "username")}' class='m_m_name_change'>{$universal->GETsDetails($by, "username")}</a> changed the group avatar";
}
echo "</span></div>";
} else if ($type == "member_add") {
echo "<div class='m_m_divs m_m_info_div'><span class='mssg_info' title='{$Time->timeAgo($time)}'>";
if ($by == $session) {
echo "You added <a href='{$this->DIR}/profile/{$universal->GETsDetails($data, "username")}' class='m_m_name_change'>{$universal->GETsDetails($data, "username")}</a> to group";
} else if ($by != $session) {
echo "<a href='{$this->DIR}/profile/{$universal->GETsDetails($by, "username")}' class='m_m_name_change'>{$universal->GETsDetails($by, "username")}</a> added <a href='{$this->DIR}/profile/{$universal->GETsDetails($data, "username")}' class='m_m_name_change'>";
if($data == $session){ echo "you"; } else { echo $universal->GETsDetails($data, "username"); }
echo "</a> to group";
}
echo "</span></div>";
} else if ($type == "leave_grp_con") {
echo "<div class='m_m_divs m_m_info_div'><span class='mssg_info' title='{$Time->timeAgo($time)}'>";
if ($by == $session) {
echo "You left the group";
} else if ($by != $session) {
echo "<a href='{$this->DIR}/profile/{$universal->GETsDetails($by, "username")}' class='m_m_name_change'>{$universal->GETsDetails($by, "username")}</a> left the group";
}
echo "</span></div>";
} else if ($type == "removed_grp_con") {
echo "<div class='m_m_divs m_m_info_div'><span class='mssg_info' title='{$Time->timeAgo($time)}'>";
if ($by == $session) {
echo "You were remved from the group";
} else if ($by != $session) {
echo "<a href='{$this->DIR}/profile/{$universal->GETsDetails($by, "username")}' class='m_m_name_change'>{$universal->GETsDetails($by, "username")}</a> removed from the group";
}
echo "</span></div>";
} else if ($type == "admin_change") {
echo "<div class='m_m_divs m_m_info_div'><span class='mssg_info' title='{$Time->timeAgo($time)}'>";
if ($data == $session) {
echo "You were made the group admin";
} else if ($data != $session) {
echo "<a href='{$this->DIR}/profile/{$universal->GETsDetails($data, "username")}' class='m_m_name_change'>{$universal->GETsDetails($data, "username")}</a> was made the group admin";
}
echo "</span></div>";
}
}
echo "<span class='mssg_helper'></span></div></div>";
echo "<div class='m_m_slider'></div>";
echo "<div class='m_m_bottom' data-grp_conid='{$grp}'><form class='add_mssg_form' action='' method='post'>";
echo "<div class='send_mssg_before'>Sending message..</div>";
// <input type='text' name='' value='' placeholder='Send message' class='send_mssg' spellcheck='false'>
echo "<textarea name='' value='' placeholder='Send message..' class='send_mssg' spellcheck='false'></textarea>";
echo "<span class='mssg_emoji_btn'><i class='material-icons'>sentiment_very_satisfied</i></span>
<input type='submit' name='' value='Send' class='pri_btn mssg_send'>
</form></div></div>";
}
public function leaveGrpCon($grp, $user, $when){
$session = $_SESSION['id'];
if ($when == "leave") {
$insert = $session;
$type = "leave_grp_con";
} else if ($when == "remove") {
$insert = $user;
$type = "removed_grp_con";
}
$r = $this->db->prepare("INSERT INTO message(grp_con_id, mssg_by, message, type, time, status) VALUES (:con, :by, :mssg, :type, now(), :status)");
$r->execute(array(":con" => $grp, ":by" => $insert, ":mssg" => "", ":type" => $type, ":status" => "unread"));
$i = $this->db->lastInsertId();
self::insertGrpUnreads($grp, $i);
$query = $this->db->prepare("DELETE FROM group_con_members WHERE grp_con_id = :grp AND members = :mem");
$query->execute(array(":grp" => $grp, ":mem" => $user));
$q = $this->db->prepare("DELETE FROM grpconunreads WHERE member = :id");
$q->execute(array(":id" => $user));
}
public function changeGrpConAvatar($file, $grp){
$session = $_SESSION['id'];
$query = $this->db->prepare("SELECT avatar FROM group_con WHERE grp_con_id = :grp LIMIT 1");
$query->execute(array(":grp" => $grp));
// $av = self::getGrpCon($grp, "avatar");
// if ($av != "") {
if ($query->rowCount() > 0) {
$row = $query->fetch(PDO::FETCH_OBJ);
$av = $row->avatar;
$name = $file['name'];
$size = $file['size'];
$tmp_name = $file['tmp_name'];
$error = $file['error'];
$ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
$allowed = array("jpg", "png", "gif", "jpeg");
$new_name = time().".".$ext;
if ($av != "") {
unlink("../../grp_mssg_avatar/Instagram_$av");
}
$q = $this->db->prepare("UPDATE group_con SET avatar = :avatar WHERE grp_con_id = :grp");
$q->execute(array(":avatar" => $new_name, ":grp" => $grp));
if (in_array($ext, $allowed)) {
if ($error == 0) {
move_uploaded_file($tmp_name, "../../grp_mssg_avatar/Instagram_".$new_name);
}
}
$r = $this->db->prepare("INSERT INTO message(grp_con_id, mssg_by, message, type, time, status) VALUES (:con, :by, :mssg, :type, now(), :status)");
$r->execute(array(":con" => $grp, ":by" => $session, ":mssg" => "", ":type" => "avatar_change", ":status" => "unread"));
$i = $this->db->lastInsertId();
self::insertGrpUnreads($grp, $i);
return $new_name;
}
// }
}
public function grpConMemOrNot($grp, $member){
$query = $this->db->prepare("SELECT members FROM group_con_members WHERE grp_con_id = :grp AND members = :mem");
$query->execute(array(":grp" => $grp, ":mem" => $member));
if ($query->rowCount() > 0) {
return true;
} else if ($query->rowCount() == 0) {
return false;
}
}
public function getGrpConMembers($value, $grp){
$session = $_SESSION['id'];
include 'universal.class.php';
include 'avatar.class.php';
include 'settings.class.php';
$universal = new universal;
$avatar = new Avatar;
$settings = new settings;
$text = preg_replace("#[<>]#", "", $value);
$query = $this->db->prepare("SELECT follow_to_u, follow_to FROM follow_system WHERE follow_by = :me AND follow_to_u LIKE :l");
$query->execute(array(":me" => $session, ":l" => "%$text%"));
if ($query->rowCount() > 0) {
while ($row = $query->fetch(PDO::FETCH_OBJ)) {
$id = $row->follow_to;
$username = $row->follow_to_u;
if (self::grpConMemOrNot($grp, $id) == false && $settings->AmIBlocked($id) == false) {
echo "<li class='grp_to_select_u' data-user='{$id}' data-name='{$username}'><img src='{$this->DIR}/{$avatar->DisplayAvatar($id)}' alt=''><span>{$universal->nameShortener($universal->GETsDetails($id, "username"), 25)}</span></li>";
}
}
}
}
public function addGrpConMembers($user, $grp){
$session = $_SESSION['id'];
include 'notifications.class.php';
$noti = new notifications;
$query = $this->db->prepare("INSERT INTO group_con_members(grp_con_id, members) VALUES (:grp, :mem)");
$query->execute(array(":grp" => $grp, ":mem" => $user));
$r = $this->db->prepare("INSERT INTO message(grp_con_id, mssg_by, message, type, time, status) VALUES (:con, :by, :mssg, :type, now(), :status)");
$r->execute(array(":con" => $grp, ":by" => $session, ":mssg" => $user, ":type" => "member_add", ":status" => "unread"));
$i = $this->db->lastInsertId();
self::insertGrpUnreads($grp, $i);
$name = self::getGrpCon($grp, "name");
$noti->actionNotify($user, $grp, "grp_con");
}
public function selectForGrpConAdmin($grp){
$session = $_SESSION['id'];
include 'universal.class.php';
include 'avatar.class.php';
$universal = new universal;
$avatar = new Avatar;
$query = $this->db->prepare("SELECT members FROM group_con_members WHERE grp_con_id = :grp AND members <> :me ORDER BY grp_con_mem_id DESC");
$query->execute(array(":grp" => $grp, ":me" => $session));
$count = $query->rowCount();
if ($count == 0) {
echo "<div class='no_display'><img src='{$this->DIR}/images/needs/large.jpg'></div>";
} else if ($count > 0) {
echo "<input type='hidden' class='share_postid'>";
echo "<input type='hidden' class='share_userid'>";
while ($row = $query->fetch(PDO::FETCH_OBJ)) {
$userid = $row->members;
if (self::getGrpCon($grp, "admin") != $userid) {
echo "<div class='display_items select_receiver";
echo "' data-userid='{$userid}'><div class='d_i_img'>
<img src='{$this->DIR}/". $avatar->DisplayAvatar($userid) ."' alt='profile'></div><div class='d_i_content'><div class='d_i_info'>
<span class='d_i_username username'>". $universal->nameShortener($universal->GETsDetails($userid, "username"), 12) ."</span>
<span class='d_i_name'>". $universal->nameShortener($universal->GETsDetails($userid, "firstname")." ". $universal->GETsDetails($userid, "surname"), 15) ."</span></div></div></div>";
}
}
}
}
public function changeGrpConAdmin($user, $grp){
include 'notifications.class.php';
$session = $_SESSION['id'];
$noti = new notifications;
if (self::getGrpCon($grp, "admin") != $user) {
$query = $this->db->prepare("UPDATE group_con SET admin = :user WHERE grp_con_id = :grp AND admin = :me");
$query->execute(array(":user" => $user, ":grp" => $grp, ":me" => $session));
$noti->actionNotify($user, $grp, "changeGrpConAdmin");
$r = $this->db->prepare("INSERT INTO message(grp_con_id, mssg_by, message, type, time, status) VALUES (:con, :by, :mssg, :type, now(), :status)");
$r->execute(array(":con" => $grp, ":by" => $session, ":mssg" => $user, ":type" => "admin_change", ":status" => "unread"));
$i = $this->db->lastInsertId();
self::insertGrpUnreads($grp, $i);
return "ok";
}
}
}
?>