Skip to content

Commit

Permalink
Amizades funcionando!
Browse files Browse the repository at this point in the history
  • Loading branch information
guaycuru committed Mar 28, 2017
1 parent a7358a8 commit 82d2716
Show file tree
Hide file tree
Showing 7 changed files with 178 additions and 49 deletions.
28 changes: 28 additions & 0 deletions ajax/amigo.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace GDE;

define('NO_CACHE', true);
define('NO_HTML', true);

require_once('../common/common.inc.php');

if(!isset($_POST['tipo']))
exit();

//ToDo: Nao retornar numeros magicos!
$Usr = Usuario::Load($_POST['i']);
if($_POST['tipo'] == 'a') {
// Adicionar novo amigo
$Usr = Usuario::Load($_POST['i']);
if($Usr->getID() == $_Usuario->getID())
echo '1';
else
echo ($_Usuario->Adicionar_Amigo($Usr, false, true)) ? '2' : '3';
} elseif($_POST['tipo'] == 'h') {
// Aceitar pedido de amizade
echo ($_Usuario->Autorizar_Amigo($Usr, true)) ? '1' : '2';
} elseif($_POST['tipo'] == 'r') {
// Remover amigo ou pedido de amizade
echo ($_Usuario->Remover_Amigo($Usr, true)) ? '1': '2';
}
147 changes: 126 additions & 21 deletions classes/GDE/Usuario.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -719,7 +719,7 @@ public function Verificar_Senha($senha, $codificada = true) {
*
* @param boolean $verificar (Opcional) Se for false, nao ira verificar o Usuario
* @param $atualizar_acesso (Opcional) Se for true, ira atualizar o ultimo acesso
* @return Usuario O Usuario atualmente logado
* @return self O Usuario atualmente logado
*/
public static function Ping($verificar = true, $atualizar_acesso = true) {
$Usuario = new self();
Expand Down Expand Up @@ -938,9 +938,9 @@ public static function Conta_Online($live = false) {
public function Amigos_Em_Comum(Usuario $Usuario, &$total = 0) {
$Lista = array();
$ids_amigos = array();
foreach($Usuario->getAmigos() as $Amigo)
foreach($Usuario->Amigos() as $Amigo)
$ids_amigos[$Amigo->getAmigo()->getID()] = true;
foreach($this->getAmigos() as $Amigo) // Pego do meu, pq tem os MEUS apelidos!
foreach($this->Amigos() as $Amigo) // Pego do meu, pq tem os MEUS apelidos!
if(isset($ids_amigos[$Amigo->getAmigo()->getID()]))
$Lista[] = $Amigo;
$total = count($Lista);
Expand All @@ -967,7 +967,7 @@ public function Amigos_Recomendacoes($minimo = '2', $limite = '-1', $start = '-1
*
* Retorna a lista de amigos que ainda nao aceitaram o pedido de amizade
*
* @return ArrayCollection
* @return ArrayCollection|UsuarioAmigo[]
*/
public function getQuase_Amigos() {
$criteria = Criteria::create()->where(Criteria::expr()->eq("ativo", false));
Expand All @@ -977,32 +977,55 @@ public function getQuase_Amigos() {

/**
* @param Usuario $Usuario
* @return bool
* @return UsuarioAmigo|false
*/
public function Quase_Amigo(Usuario $Usuario) { // Se eu to esperando autorizacao dele...
foreach($this->getQuase_Amigos() as $Amigo)
if($Amigo->getAmigo()->getID() == $Usuario->getID())
return $Amigo;
return false;
$criteria = Criteria::create()->where(Criteria::expr()->eq("amigo", $Usuario));
$criteria->setMaxResults(1);
$Quase = $this->getQuase_Amigos()->matching($criteria);
return ($Quase->count() > 0) ? $Quase->first() : false;
}

/**
* Amigos_Pendentes
*
* @return ArrayCollection|UsuarioAmigo[] Autorizacoes de amizades pendentes
*/
public function getAmigos_Pendentes() {
/*$criteria = Criteria::create()->where(Criteria::expr()->eq("ativo", false));
$criteria->andWhere(Criteria::expr()->eq("amigo", $this));
return $this->getAmigos()->matching($criteria);*/
$dql = 'SELECT A FROM GDE\\UsuarioAmigo A WHERE A.amigo = ?1 AND A.ativo = FALSE';
return self::_EM()->createQuery($dql)
->setParameter(1, $this->getID())
->getResult();
}

/**
* @param Usuario $Usuario
* @return bool|UsuarioAmigo
* @return UsuarioAmigo|false
*/
public function Amigo_Pendente(Usuario $Usuario) { // Se ele ta esperando minha autorizacao...
$criteria = Criteria::create()->where(Criteria::expr()->eq("ativo", false));
$criteria->andWhere(Criteria::expr()->eq("usuario", $Usuario));
/*$criteria = Criteria::create()->where(Criteria::expr()->eq("usuario", $Usuario));
$criteria->setMaxResults(1);
$Amigo = $this->getAmigos()->matching($criteria);
return ($Amigo->count() > 0) ? $Amigo->first() : false;
$Quase = $this->getAmigos_Pendentes()->matching($criteria);
return ($Quase->count() > 0) ? $Quase->first() : false;*/
$dql = 'SELECT A FROM GDE\\UsuarioAmigo A WHERE A.amigo = ?1 AND A.usuario = ?2 AND A.ativo = FALSE';
$Pendente = self::_EM()->createQuery($dql)
->setParameter(1, $this->getID())
->setParameter(2, $Usuario->getID())
->setMaxResults(1)
->getOneOrNullResult();
return ($Pendente !== null) ? $Pendente : false;
}

/**
* @param Usuario $Usuario
* @return bool|UsuarioAmigo
* @return UsuarioAmigo|false
*/
public function Amigo(Usuario $Usuario) { // Se eh um amigo atualmente
if($this->getID() == $Usuario->getID())
return true;
$criteria = Criteria::create()->where(Criteria::expr()->eq("ativo", true));
$criteria->andWhere(Criteria::expr()->eq("amigo", $Usuario));
$criteria->setMaxResults(1);
Expand All @@ -1011,20 +1034,102 @@ public function Amigo(Usuario $Usuario) { // Se eh um amigo atualmente
}

/**
* @return ArrayCollection Amizades ja autorizadas
* @return ArrayCollection|UsuarioAmigo[] Amizades ja autorizadas
*/
public function Amigos() { // Lista de amizades ja autorizadas
$criteria = Criteria::create()->where(Criteria::expr()->eq("ativo", true));
return $this->getAmigos()->matching($criteria);
}

/**
* Amigos_Pendentes
*
* @return ArrayColection Autorizacoes de amizades pendentes
* @param Usuario $Usuario
* @param bool $ativo
* @param bool $flush
* @return bool
*/
public function getAmigos_Pendentes() {
return UsuarioAmigo::FindBy(array('amigo' => $this->getID(), 'ativo' => false));
public function Adicionar_Amigo(Usuario $Usuario, $ativo = false, $flush = true) {
if(($this->Quase_Amigo($Usuario) !== false) || ($this->Amigo_Pendente($Usuario) !== false)) // Ja tem uma autorizacao pendente...
return false;
$Usuario_Amigo = new UsuarioAmigo();
$Usuario_Amigo->setUsuario($this);
$Usuario_Amigo->setAmigo($Usuario);
$Usuario_Amigo->setAtivo($ativo);
if($Usuario_Amigo->Save(false) === false)
return false;
if($ativo === true) {
$Usuario_Amigo = new UsuarioAmigo();
$Usuario_Amigo->setUsuario($Usuario);
$Usuario_Amigo->setAmigo($this);
$Usuario_Amigo->setAtivo(true);
if($Usuario_Amigo->Save(false) === false)
return false;
}
if(($flush) && (self::_EM()->flush() === false))
return false;
return true;
}

/**
* @param Usuario $Usuario
* @param bool $flush
* @return bool
*/
public function Remover_Amigo(Usuario $Usuario, $flush = true) {
$Usuario_Amigo = $this->Amigo($Usuario);
if($Usuario_Amigo === false) {
$Usuario_Amigo = $this->Quase_Amigo($Usuario);
if($Usuario_Amigo === false) {
$Usuario_Amigo = $this->Amigo_Pendente($Usuario);
}
}

$Reverso = $Usuario->Amigo($this);
if($Reverso === false) {
$Reverso = $Usuario->Quase_Amigo($this);
if($Reverso === false)
$Reverso = $Usuario->Amigo($this);
}

if(($Usuario_Amigo === false) && ($Reverso === false))
// Nada a fazer...
return false;

if($Usuario_Amigo !== false)
$Usuario_Amigo->Delete(false);
if($Reverso !== false)
$Reverso->Delete(false);
if(($flush) && (self::_EM()->flush() === false))
return false;
return true;
}

/**
* @param Usuario $Usuario
* @param bool $flush
* @return bool
*/
public function Autorizar_Amigo(Usuario $Usuario, $flush = true) {
$Quase_Amigo = $this->Amigo_Pendente($Usuario);
if($Quase_Amigo === false)
return false;

$Quase_Amigo->setAtivo(true);
if($Quase_Amigo->Save(false) === false)
return false;

$Reverso = $this->Quase_Amigo($Usuario);
if($Reverso === false) {
$Reverso = new UsuarioAmigo();
$Reverso->setUsuario($this);
$Reverso->setAmigo($Usuario);
}
$Reverso->setAtivo(true);
if($Reverso->Save(false) === false)
return false;

if(($flush) && (self::_EM()->flush() === false))
return false;
return true;
}

/**
Expand Down
8 changes: 2 additions & 6 deletions common/common.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,6 @@
}

$_Usuario = null;

//if((isset($_GET['w3c'])) && ($_GET['w3c'] == '17239853'))
//$_SESSION['id_usuario'] = 1;

if((!defined('NO_LOGIN_CHECK')) || (NO_LOGIN_CHECK === false)) {
$_Usuario = Usuario::Ping();
if($_Usuario->getID() == null) {
Expand Down Expand Up @@ -216,8 +212,8 @@
<li><a href="<?= CONFIG_URL; ?>avaliar/">Avaliar Professores</a></li>
<li><a href="<?= CONFIG_URL; ?>eliminador/">Eliminar Disciplinas</a></li>
<li><a href="<?= CONFIG_URL; ?>mapa/">Mapa do Campus</a></li>
<li><a href="<?= CONFIG_URL; ?>planejador/">Planejador</a></li>
<li><a class="ui-corner-bottom" href="<?= CONFIG_URL; ?>visoes/Rankings.php">Rankings</a></li>
<li><a class="ui-corner-bottom" href="<?= CONFIG_URL; ?>planejador/">Planejador</a></li>
<!-- <li><a class="ui-corner-bottom" href="<?= CONFIG_URL; ?>rankings/">Rankings</a></li> -->
</ul>
</li>
<li><a href="#" onclick="return false;">Social</a>
Expand Down
20 changes: 10 additions & 10 deletions views/amigos.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@

$Quase_Amigos = $_Usuario->getQuase_Amigos();
$Autorizacoes = $_Usuario->getAmigos_Pendentes();
$Amigos = $_Usuario->getAmigos(true);
$Amigos = $_Usuario->Amigos();

?>
<script type="text/javascript">
// <![CDATA[
var remover_amigo = function(id) {
$.guaycuru.simnao("Tem certeza que deseja remover este Usu&aacute;rio da sua lista de Amigos?", function() {
$.post(CONFIG_URL + 'ajax/ax_amigo.php', {i: id, tipo: 'r'}, function(data) {
$.post(CONFIG_URL + 'ajax/amigo.php', {i: id, tipo: 'r'}, function(data) {
if(data == '1') {
$.guaycuru.confirmacao("Usu&aacute;rio n&atilde;o est&aacute; mais na sua lista de amigos!", null);
history.go(0);
Expand All @@ -25,13 +25,13 @@
};

var autorizar_amigo = function(id) {
$.post(CONFIG_URL + 'ajax/ax_amigo.php', {i: id, tipo: 'h'}, function(data) {
$.post(CONFIG_URL + 'ajax/amigo.php', {i: id, tipo: 'h'}, function(data) {
if(data == '1') {
$.guaycuru.confirmacao("O Pedido de Autoriza&ccedil;&atilde;o foi aceito com sucesso!");
$.guaycuru.confirmacao("O Pedido de Amizade foi aceito com sucesso!");
history.go(0);
}
else if(data == '2')
$.guaycuru.confirmacao("N&atilde;o foi poss&iacute;vel aceitar o Pedido de Autoriza&ccedil;&atilde;o.");
$.guaycuru.confirmacao("N&atilde;o foi poss&iacute;vel aceitar o Pedido de Amizade.");
});
};

Expand All @@ -55,7 +55,7 @@
$("#tabela_pendentes_foto").hide();
$("#tabela_pendentes_lista").show();
}
}
};
$(document).ready(function() {
Carrega(0);
Carrega(2);
Expand Down Expand Up @@ -91,15 +91,15 @@
</tr>
<tr>
<td width="20%"><strong>Curso:</strong></td>
<td><?= $Aluno->getNome_Curso()." (".$Aluno->getCurso().")"; ?></td>
<td><?= $Aluno->getCurso(true)->getNome(true)." (".$Aluno->getCurso(true)->getNumero(true).")"; ?></td>
</tr>
<tr>
<td width="20%"><strong>Modalidade:</strong></td>
<td><?= $Aluno->getModalidade()." - ".$Aluno->getNome_Modalidade(); ?></td>
<td><?= $Aluno->getModalidade(true); ?></td>
</tr>
<tr>
<td width="20%"><strong>A&ccedil;&atilde;o:</strong></td>
<td><a href="#" onclick="autorizar_amigo('<?= $Auth->getID_Usuario(); ?>'); return false;">Autorizar</a> | <a href="#" onclick="remover_amigo('<?= $Auth->getID_Usuario(); ?>'); return false;">Recusar</a></td></tr>
<td><a href="#" onclick="autorizar_amigo('<?= $Auth->getUsuario()->getID(); ?>'); return false;">Aceitar</a> | <a href="#" onclick="remover_amigo('<?= $Auth->getUsuario()->getID(); ?>'); return false;">Recusar</a></td></tr>
</table></td>
<?php
if($i++ % 2 == 1)
Expand Down Expand Up @@ -216,7 +216,7 @@
<?php
$i = 0;
foreach($Quase_Amigos as $Amigo) {
$Aluno = $Amigo->getAmigo()->getAluno();
$Aluno = $Amigo->getAmigo()->getAluno(true);
?>
<td width="50%"><table border="1" width="100%">
<tr>
Expand Down
2 changes: 1 addition & 1 deletion views/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@
}

var Adicionar_Amigo_Sugestao = function(id) {
$.post('<?= CONFIG_URL; ?>ajax/ax_amigo.php', {i: id, tipo: 'a'}, function(data) {
$.post('<?= CONFIG_URL; ?>ajax/amigo.php', {i: id, tipo: 'a'}, function(data) {
$.guaycuru.confirmacao("Foi enviado um pedido de autoriza&ccedil;&atilde;o!", null);
$("#amigo_"+id).hide();
});
Expand Down
4 changes: 2 additions & 2 deletions views/perfil.php
Original file line number Diff line number Diff line change
Expand Up @@ -429,9 +429,9 @@
} elseif($_Usuario->Quase_Amigo($Usr) !== false) // Eu to esperando autorizacao dele
$link_pessoal = '<span style=\"font-size: 10px;\">Aguardando Autoriza&ccedil;&atilde;o...</span>';
elseif($Usr->Quase_Amigo($_Usuario) !== false) // Ele ta esperando a minha autorizacao
$link_pessoal = '<a href="#" id="amizade_aceitar_'.$Usr->getID().'" class="amizade_aceitar" ><i>Aceitar</i></a> <a href="#" class="amizade_ignorar" id="amizade_ignorar_'.$Usr->getID().'"><i>Ignorar</i></a>';
$link_pessoal = '<a href="#" id="amizade_aceitar_'.$Usr->getID().'" class="amizade_aceitar" ><i>Aceitar</i></a> <a href="#" class="amizade_ignorar" id="amizade_ignorar_'.$Usr->getID().'"><i>Recusar</i></a>';
else
$link_pessoal = '<a href="#" id="link_amigo" style="font-size: 10px;">Adicionar Amigo</a>';
$link_pessoal = '<a href="#" id="link_amigo" style="font-size: 10px;">Solicitar Amizade</a>';
} else {
$_Foto = Usuario::getFoto_Padrao();
$_nome = ($_tipo == 'A') ? $Aluno->getNome(true) : $Professor->getNome(true);
Expand Down
Loading

0 comments on commit 82d2716

Please sign in to comment.