<?php



/**

 * Seo [MODEL]

 * Classe de apoio para modelo LINK. pode ser ultilizada para gerar SEO para as páginas do sistema!

 * 

 * @copyright (c) year, Welton Thierree TagPage

 */

class Seo {



    private $File;

    private $Link;

    private $Data;

    private $Tags;



    /* DADOS POVOADOS */

    private $seoTags;

    private $seoData;



    function __construct($File, $Link) {

        $this->File = strip_tags(trim($File));

        $this->Link = strip_tags(trim($Link));

    }



    public function getTags() {

        $this->checkData();

        return $this->seoTags;

    }



    public function getData() {

        $this->checkData();

        return $this->seoData;

    }



    //PRIVATES

    private function checkData() {

        if (!$this->seoData):

            $this->getSeo();

        endif;

    }



    private function getSeo() {

        $ReadSeo = new Read;



        switch ($this->File):

            //SEO:: ARTIGO

            case 'artigo':

                $Admin = (isset($_SERVER['userlogin']['user_level']) && $_SERVER['userlogin']['user_level'] == 3 ? true : false);

                $Check = ($Admin ? '' : 'post_status = 1 AND');



                $ReadSeo->ExeRead("ws_posts", "WHERE {$Check} post_name = :link", "link={$this->Link}");

                if (!$ReadSeo->getResult()):

                    $this->seoData = null;

                    $this->seoTags = null;

                else:

                    extract($ReadSeo->getResult()[0]);

                    $this->seoData = $ReadSeo->getResult()[0];

                    $this->Data = [$post_title . ' - ' . SITENAME, $post_content, HOME . "/artigo/{$post_name}", HOME . "/uploads/{$post_cover}"];



                    //post:: post_views

                    $ArrUpdate = ['post_views' => $post_views + 1];

                    $Update = new Update;

                    $Update->ExeUpdate("ws_posts", $ArrUpdate, "WHERE post_id = :postid", "postid={$post_id}");

                endif;

                break;



            //SEO:: DEPARTAMENTO

            case 'departamento':

                $this->Data = [SITENAME . ' - Seu portal de busca em produtos e serviços!', SITEDESC, HOME, INCLUDE_PATH . '/images/site.png'];

                

                $ReadSeo->ExeRead("tp_departamentos", "WHERE departamento_nome = :link", "link={$this->Link}");

                if (!$ReadSeo->getResult()):

                    $this->seoData = null;

                    $this->seoTags = null;

                else:

                    extract($ReadSeo->getResult()[0]);

                    $this->seoData = $ReadSeo->getResult()[0];

                    $this->Data = [$departamento_titulo . ' - ' . SITENAME, $departamento_descricao, HOME . "/departamento/{$departamento_nome}", INCLUDE_PATH . '/images/site.png'];



                    //category:: category_views

                    $ArrUpdate = ['departamento_views' => $departamento_views + 1];

                    $Update = new Update;

                    $Update->ExeUpdate("tp_departamentos", $ArrUpdate, "WHERE departamento_id = :depid", "depid={$departamento_id}");

                endif;

                break;



            //SEO:: PRODUTO

            case 'produto':

                $this->Data = [SITENAME . ' - Seu portal de busca em produtos e serviços!', SITEDESC, HOME, INCLUDE_PATH . '/images/site.png'];

                

                $ReadSeo->ExeRead("tp_produtos", "WHERE produto_nome = :link", "link={$this->Link}");

                if (!$ReadSeo->getResult()):

                    $this->seoData = null;

                    $this->seoTags = null;

                else:

                    extract($ReadSeo->getResult()[0]);

                    $this->seoData = $ReadSeo->getResult()[0];

                    $this->Data = [$produto_titulo . ' - ' . SITENAME, $produto_descricao, HOME . "/produto/{$produto_nome}", INCLUDE_PATH . '/images/site.png'];



                    //produto:: produto_views

                    $ArrUpdate = ['produto_views' => $produto_views + 1];

                    $Update = new Update;

                    $Update->ExeUpdate("tp_produtos", $ArrUpdate, "WHERE produto_id = :produto", "produto={$produto_id}");

                endif;

                break;

                

            //SEO:: ENDEREÇO

            case 'endereco':

                $this->Data = [SITENAME . ' - Seu portal de busca em produtos e serviços!', SITEDESC, HOME, INCLUDE_PATH . '/images/site.png'];

                

                $ReadSeo->ExeRead("tp_cliente_enderecos", "WHERE cliente_endereco_id = :link", "link={$this->Link}");

                if (!$ReadSeo->getResult()):

                    $this->seoData = null;

                    $this->seoTags = null;

                else:

                    extract($ReadSeo->getResult()[0]);

                    $this->seoData = $ReadSeo->getResult()[0];

                    $this->Data = ['Endereço de entrega - ' . SITENAME, 'Endereço de entrega dos produtos da loja', HOME . "/endereco/{$cliente_endereco_id}", INCLUDE_PATH . '/images/site.png'];



                endif;

                break;

                

            //SEO:: PESQUISA

            case 'pesquisa':

                $ReadSeo->ExeRead("ws_posts", "WHERE post_status = 1 AND (post_title LIKE '%' :link '%' OR post_content LIKE '%' :link '%')", "link={$this->Link}");

                if (!$ReadSeo->getResult()):

                    $this->seoData = null;

                    $this->seoTags = null;

                else:

                    $this->seoData['count'] = $ReadSeo->getRowCount();

                    $this->Data = ["Pesquisa por {$this->Link}" . ' - ' . SITENAME, "Sua pesquisa por {$this->Link} retornou {$this->seoData['count']} resultados", HOME . "/pesquisa/{$this->Link}", INCLUDE_PATH . '/images/site.png'];



                endif;

                break;



            //SEO:: INDEX

            case 'index':

                $this->Data = [SITENAME . ' - Seu portal de busca em produtos e serviços!', SITEDESC, HOME, INCLUDE_PATH . '/images/site.png'];

                break;

            

            //SEO:: SOBRE

            case 'sobre':

                $this->Data = ['Sobre a empresa - ' . SITENAME, SITEDESC, HOME, INCLUDE_PATH . '/images/site.png'];

                break;

            

            //SEO:: COMO FUNCIONA

            case 'como-funciona':

                $this->Data = ['Como funciona - ' . SITENAME, SITEDESC, HOME, INCLUDE_PATH . '/images/site.png'];

                break;

            

            //SEO:: CADASTRAR

            case 'cadastrar':

                $this->Data = ['Cadastre-se e encontre os melhores preços de produtos e serviços - ' . SITENAME, SITEDESC, HOME, INCLUDE_PATH . '/images/site.png'];

                break;

            

            //SEO:: BUSCAR

            case 'buscar':

                $this->Data = ['Encontre os produtos ou serviços que deseja - ' . SITENAME, SITEDESC, HOME, INCLUDE_PATH . '/images/site.png'];

                break;

            

            //SEO:: CONTATO

            case 'contato':

                $this->Data = ['Entre em contato - ' . SITENAME, SITEDESC, HOME, INCLUDE_PATH . '/images/site.png'];

                break;

            

            //SEO:: SUCESSO

            case 'cadastro-sucesso':

                $this->Data = ['Sucesso - ' . SITENAME, SITEDESC, HOME, INCLUDE_PATH . '/images/site.png'];

                break;

            

            //SEO:: SUCESSO

            case 'orcamento-sucesso':

                $this->Data = ['Sucesso - ' . SITENAME, SITEDESC, HOME, INCLUDE_PATH . '/images/site.png'];

                break;

            

            //SEO:: POLITICA

            case 'politica-privacidade':

                $this->Data = ['Política de Privacidade - ' . SITENAME, SITEDESC, HOME, INCLUDE_PATH . '/images/site.png'];

                break;

            

            default :

                $this->Data = ['404 Oppsss, Nada encontrado', SITEDESC, HOME . '/404', INCLUDE_PATH . '/images/site.png'];

        endswitch;



        if ($this->Data):

            $this->setTags();

        endif;

    }



    private function setTags() {

        $this->Tags['Title'] = $this->Data[0];

        $this->Tags['Content'] = Check::Words(html_entity_decode($this->Data[1]), 25);

        $this->Tags['Link'] = $this->Data[2];

        $this->Tags['Image'] = $this->Data[3];



        $this->Tags = array_map('strip_tags', $this->Tags);

        $this->Tags = array_map('trim', $this->Tags);



        $this->Data = null;



        //NORMAL PAGE

        $this->seoTags = '<title>' . $this->Tags['Title'] . '</title> ' . "\n";

        $this->seoTags .= '<meta name="description" content="' . $this->Tags['Content'] . '"/>' . "\n";

        $this->seoTags .= '<meta name="robots" content="index, follow" />' . "\n";

        $this->seoTags .= '<link rel="canonical" href="' . $this->Tags['Link'] . '">' . "\n";

        $this->seoTags .= "\n";



        //FACEBOOK

        $this->seoTags .= '<meta property="og:site_name" content="' . SITENAME . '" />' . "\n";

        $this->seoTags .= '<meta property="og:locale" content="pt_BR" />' . "\n";

        $this->seoTags .= '<meta property="og:title" content="' . $this->Tags['Title'] . '" />' . "\n";

        $this->seoTags .= '<meta property="og:description" content="' . $this->Tags['Content'] . '" />' . "\n";

        $this->seoTags .= '<meta property="og:image" content="' . $this->Tags['Image'] . '" />' . "\n";

        $this->seoTags .= '<meta property="og:url" content="' . $this->Tags['Link'] . '" />' . "\n";

        $this->seoTags .= '<meta property="og:type" content="article" />' . "\n";

        $this->seoTags .= "\n";



        //ITEM GROUP (TWITTER)

        $this->seoTags .= '<meta itemprop="name" content="' . $this->Tags['Title'] . '" />' . "\n";

        $this->seoTags .= '<meta itemprop="description" content="' . $this->Tags['Content'] . '" />' . "\n";

        $this->seoTags .= '<meta itemprop="url" content="' . $this->Tags['Link'] . '" />' . "\n";



        $this->Tags = null;

    }



}

