Sistema de notificação de novidades

A notificação se baseia em 2 variáveis, a $data e $ultimo_acesso.
$data guarda a data da última atualização da ferramenta.
$ultimo_acesso guarda a data do último acesso ao TelEduc do usuário em determinada ferramenta.

estrelinha.gif é a imagem da estrela de notificação.

No arquivo menu.inc:

Existe a função RetornaMaiorDataItemComentario que retorna a maior data de item ou comentário dentro de um tópico ou subtópico.

A função abaixo verifica se a ferramenta é a atual, e verifica se existiu alguma atualização desde o último acesso na ferramenta, além de inserir as divisórias no menu. Caso exista atualização, mostra uma estrela.

function ExibeLink($cod_curso,$cod_ferr,$nome_ferramenta,$diretorio,$data,$ultimo_acesso,$convidado,$convidado_passivo,$convidado_ativo,$style,$cod_ferramenta,$cod_usuario){ 

    /* As ferramentas do TelEduc foram agrupadas de acordo com 
     * sua funcionalidade. As ferramentas que estao na divisa precisam 
     * colocar um traco a mais para representar a divisao. Sao estas: 
     * Ferramenta 8 - Mural 
     * Ferramenta 11 - Correio 
     * Ferramenta 15 - Portfolio 
     * Ferramenta 17 - Estrutura do Ambiente 
     * Ferramenta 19 - Intermap 
     * Ferramenta 22 - Avaliacoes 
     */ 

    /* Verifica se a ferramenta atual eh a que esta selecionada */ 
    if ($cod_ferr == $cod_ferramenta) 
        $style .= "Selecionada "; 

    /* Verifica se a ferramenta atual esta na divisa */ 
    if ($cod_ferr==8 ||$cod_ferr==11 || $cod_ferr==15 || $cod_ferr==17 || $cod_ferr==19 || $cod_ferr==22) 
        $style .= "Divisa "; 

    /* Verifica se ha novidades na ferramenta atual */ 
    $novidades = ($data>$ultimo_acesso); 
    if ($novidades) 
        $style .= "Novidade "; 

       echo("            <li class=\"".$style."\">\n"); 
    echo("                      <div>"); 

    if ($cod_ferr==15) 
        echo("               <a class=\"".$style."\" href=\"../".$diretorio."/ver_".$diretorio.".php?cod_curso=".$cod_curso."&amp;cod_usuario=".$cod_usuario."&amp;cod_ferramenta=".$cod_ferr."&amp;exibir=myp\" >");     
    else 
        echo("               <a class=\"".$style."\" href=\"../".$diretorio."/".$diretorio.".php?cod_curso=".$cod_curso."&amp;cod_usuario=".$cod_usuario."&amp;cod_ferramenta=".$cod_ferr."\">"); 

    /* Coloca estrela se houver novidade */ 
    if ($novidades) 
        echo("                 <img src='../imgs/estrelinha.gif' border=\"0\" alt=\"\" />"); 

    echo("                    ".$nome_ferramenta.""); 
    echo("               </a>\n"); 
    echo("             </div>\n"); 
    echo("            </li>\n"); 

  }

Banco de dados - onde se encontram as datas.

As funções acima são para a camada de apresentação, faltam as funções de acesso ao banco de dados que verificam $data e $ultimo_acesso.
Essas funções se encontram em menu.inc (RetornaFerramentasCurso, RetornaNovidadeFerramentas, RetornaFerramentasMarcadas) e em usuario.inc (PenultimoAcesso) e são chamadas em menu_principal.php.

  $tela_curso_ferramentas    = RetornaFerramentasCurso($sock);
/* *********************************************************************
   RetornaFerramentasCurso - Retorna a lista de ferramentas com status e 
                             acessibilidade
   Entrada: $sock - BASE DO CURSO
   Saida: array [$cod_ferramenta]['status'] - D, F, T
                [$cod_ferramenta]['acesso_visitante'] - A ou N
*/
  $tela_novidade_ferramentas = RetornaNovidadeFerramentas($sock,$cod_curso,$cod_usuario);
/* *********************************************************************
   RetornaNovidadeFerramentas - retorna um array com as datas das últimas 
                                atualizações para o usuário dado.
   Entrada: $sock - BASE DO CURSO
            $cod_curso
            $cod_usuario
   Saida: array [$cod_ferramenta] - data ultimo acesso
*/
  $tela_marcar_ferramenta    = RetornaFerramentasMarcadas($sock);
/* *********************************************************************
   RetornaFerramentasMarcadas - Retorna a lista com os códigos das ferramentas
     marcadas.
   Entrada: $sock - BASE DO CURSO
   Saida: array contendo $cod_ferramenta
*/
  $tela_ultimo_acesso = PenultimoAcesso($sock,$cod_usuario,"");
/* *********************************************************************
   PenultimoAcesso - Retorna o timestamp do penúltimo acesso a determinada 
                   ferramenta
   Entradas: $sock - sock aberto para a base do curso (Conectar($cod_curso))
             $cod_usuario - Código do usuário a buscar a informação                        
             $cod_ferramenta - Código da ferramenta. "" se Entrada no 
                               TelEduc
   Saida: timestamp do ltimo acesso
*/
  ...

  @$tela_data=$tela_novidade_ferramentas[$tela_cod_ferr];/*'@'faz que não exiba erro na tela, caso exista algum erro na variável */
  ...
  ExibeLink($cod_curso,$tela_cod_ferr,$tela_nome_ferramenta,$tela_diretorio,$tela_data,$tela_ultimo_acesso,$tela_convidado,$tela_convidado_passivo,$tela_convidado_ativo,$tela_style,$cod_ferramenta,$cod_usuario);

estrelinha.gif (289 Bytes) Camila Abreu, 11/09/2013 13:54