fititnt Dev Site

 
fititnt Dev Site
Uma mesma solução não precisa resolver todos os seus problemas, quando este pode ser quebrado em problemas menores e resolvido por soluções melhores
fititnt Dev Site
 
 
 

Plugin GetGithubCode - Código do github no seu site Joomla

O plugin GetGithubCode permite que você importe direto para um artigo Joomla seu código do github.com, via servidor sem usar javascript. Desse modo é amigável mesmo a mecanismos de busca e, mesmo que atualize diretamente no github.com, automaticamente estárá atualizado em seu site.

Download

Pacotes: http://www.source.fititnt.org/plg_getgithubcode/

Versão em desenvolvimento

Github: https://github.com/fititnt/plg_getgithubcode/

 

Exemplo

<?php
/**
 * Emerson Rocha Luiz { emerson@webdesign.eng.br - http://fititnt.org }
 * Copyright (C) 2005 - 2011 Webdesign Assessoria em Tecnologia da Informacao.
 * GPL3
 */
defined('_JEXEC') or die;

jimport('joomla.plugin.plugin');

/**
 * GetGitHub Content Plugin
 *
 * @since		1.6
 */
class plgContentGetgithubcode extends JPlugin
{
	/**
	 * Example prepare content method
	 *
	 * Method is called by the view
	 *
	 * @param	string          The context of the content being passed to the plugin.
	 * @param	object          The content object.  Note $article->text is also available
	 * @param	object          The content params
	 * @param	int		The 'page' number
	 * @since	1.6
	 */
	public function onContentPrepare($context, &$article, &$params, $limitstart)
	{
		$app = JFactory::getApplication();
                
                // simple performance check to determine whether bot should process further
                $tagname = $this->get('tagname', 'github');
		if (strpos($article->text, $tagname) === false) {
			return true;
		}
                
		// expression to search
                // {github}https://raw.github.com/example...{/github}
                // @todo: rewrite to make able to ask start and end lines
                $regex		= '~{'.$tagname.'}(.*?){/'.$tagname.'}~i'; 
		$matches	= array();

		// find all instances of plugin and put in $matches
		preg_match_all($regex, $article->text, $matches, PREG_SET_ORDER);

		foreach ($matches as $match) {
			// $match[0] is full pattern match, $match[1] is the url
			$code = $this->_getGithubCode($match[1]);
			// We should replace only first occurrence in order to allow positions with the same name to regenerate their content:
			$article->text = preg_replace("|$match[0]|", $code, $article->text, 1);
		}
                return '';
	}
        
        /* Function to get get and change the githubcode
         * @author      Emerson Rocha Luiz
         * @var         string          $url: the url to get. Must be RAW url!
         * @var         int             $start: line to start to show
         * @var         int             $end: last line to show
         * @return      string          $github: the final github code to show
         */
        
        protected function _getGithubCode($url, $start = FALSE, $end = FALSE){
            //Get Page
            $page = $this->_getUrlContents($url, FALSE);
            
            //Convert linebreaks
            $page = $this->_Unix2Dos($page);
            
            //Get only desired lines
            if($start !== FALSE || $end !== FALSE){
                $page = $this->_getStringLines($page, $start, $end);
            }
            //Clean up special chars
            $github = htmlspecialchars($page);
            
            //Get start and end tags and apply
            $tagstart = $this->params->get('tagstart', '<pre>');
            $tagstart = str_replace('&lt;', '<', $tagstart);
            $tagstart = str_replace('&gt;', '>', $tagstart);
            $tagsend  = $this->params->get('tagend', '</pre>');
            $tagsend  = str_replace('&lt;', '<', $tagsend);
            $tagsend  = str_replace('&gt;', '>', $tagsend);
            $github   = $tagstart . $github . $tagsend;
            
            return $github;
        }        
        
        /*
         * Return contents of url
         * @author      Emerson Rocha Luiz
         * @var         string      $url
         * @var         string      $certificate path to certificate if is https URL
         * @return      string
         */
        protected function _getUrlContents($url, $certificate = FALSE){            
            //$page = file_get_contents($url);            
            $ch = curl_init(); //Inicializar a sessao           
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//Retorne os dados em vez de imprimir em tela
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $certificate);//Check certificate if is SSL, default FALSE
            curl_setopt($ch, CURLOPT_URL, $url);//Setar URL
            $content = curl_exec($ch);//Execute
            curl_close($ch);//Feche          
            
            return $content;
        }
        
        /* Return just lines betwen betwen start and end lines
         * @author      Emerson Rocha Luiz
         * @var         string          $string: the string to edit
         * @var         int             $start: initial line
         * @var         int             $end: end line
         * @return      string
         */
        protected function _getStringLines($string, $start, $end){

            $stringArray = explode(PHP_EOL, $string);
            $nLines = count($stringArray)-1;

            //Handle a few errors
            if( $end < $start || $end > $nLines){
                //return FALSE;
            }

            $result = '';
            for( $i=($start-1); $i<=$end ; $i++ ){
                $result .= $stringArray[$i] . PHP_EOL;
            }    
            return $result;    
        }
        
        /* Convert unix linebreaks to windows line breaks
         * @author      Emerson Rocha Luiz
         * @var         string          $string: the string to edit
         * @return      string          $newstring
         */
        protected function _Unix2Dos($string){
            if (strpos($string, "\n") === false) {
                //$newstring = false;
                $newstring = $string;				
            } else {
                $newstring = str_replace("\n", "\r\n", $string); 				 
            }
            return $newstring;
        }
}

Função para criar usuário novo em Joomla 1.5

Código da Função

<?php
function CreateNewUser($name, $username, $email, $password, $registerDate = NULL, $usertype = 'Registered', $block = '0', $sendEmail = '1', $gid = '18') {
        global $db;

        $db = & JFactory::getDBO();
        jimport('joomla.user.helper');

        //Make the joomla password hash
        $salt = JUserHelper::genRandomPassword(32);
        $crypt = JUserHelper::getCryptedPassword($password, $salt);
        $joomlapassword = $crypt . ':' . $salt;

        //Table #__users
        //Informations about the user
        $user = new stdClass;
        $user->id = NULL;
        $user->name = $name;
        $user->username = $username;
        $user->email = $email;
        $user->password = $joomlapassword;
        $user->registerDate = registerDate;
        $user->usertype = $usertype;
        $user->block = $block;
        $user->sendEmail = $sendEmail;
        $user->gid = $gid;

        if (!$db->insertObject('#__users', $user, 'id')) {
            echo $db->stderr();
            return false;
        }


        //Table #__core_acl_aro
        //Discover what is the last value of value in #__core_acl_aro
        $query = "SELECT value FROM #__core_acl_aro ORDER BY id DESC LIMIT 1";
        $db->setQuery($query);
        $coreaclarolastvalue = $db->loadResult();

        $coreaclaro = new stdClass;
        $coreaclaro->id = NULL;
        $coreaclaro->section_value = 'users';
        $coreaclaro->value = $coreaclarolastvalue + 1;
        $coreaclaro->order_value = NULL;
        $coreaclaro->name = $name;
        $coreaclaro->hidden = NULL;

        if (!$db->insertObject('#__core_acl_aro', $coreaclaro, 'id')) {
            echo $db->stderr();
            return false;
        }

        //Table #__core_acl_groups_aro_map
        $coreaclmap = new stdClass;
        $coreaclmap->group_id = $gid;
        $coreaclmap->section_value = NULL;
        $coreaclmap->aro_id = $coreaclaro->id; // maybe just $user->id ?

        if (!$db->insertObject('#__core_acl_groups_aro_map', $coreaclmap)) {
            echo $db->stderr();
            return false;
        }

        $CreateNewUserInfo = array($user->id, $user->name, $user->username, $user->email);
        return $CreateNewUserInfo;
}

Exemplo de implementação 1


//This exemple will take data from one post, for example
$username = JRequest::getVar('username');
$name = JRequest::getvar('name');
$email = JRequest::getVar('email');
$password = JRequest::getVar('password');

//This code will call your funcion, then register with your data
$NewUserInfo = CreateNewUser($name, $username, $email, $password, $registerDate);

IFs - Condicionais muito úteis em desenvolvimento Joomla

Esta lista ainda não é definitiva. Resolvi publicar ela mesmo não tendo muito conteúdo por já estar adiando a tempos isso. Caso você tenha sugestões, ou tenha dúvida de algum IF que possa ser util para você, pode entrar em contato ou deixar um comentário no final desta página.

Prefácio - O que saber antes de começar

Em primeiro lugar, você deve ter em mente que um if de PHP pode ser organizado de diversas formas, inclusive usando as condicionais se verdadeiras ou falsas em outros casos. Tome esta página como conhecimento para algumas dúvidas comuns no dia-a-dia de um programador de extensões ou em um desenvolvedor de templates. E lembre-se que você pode fazer sugestões.

"If tipo 1" - Grandes Blocos de HTML (templates e afins)

Se você é designer, certamente vai usar muito esse tipo.

<?php if (CONDICAO) : ?>
 <!--Olá! :D Eu sou um HTML feliz -->
 <!--Caso a CONDICAO seja verdadeira, eu aparecerei na página! -->
 <jdoc:include type="modules" name="top" style="beezDivision" headerLevel="3" />
 <?php endif; ?>

"If tipo 2.1" - Melhor quando trabalha com PHP e pouco HTML

<?php if (CONDICAO) {
   echo JText::_('Oi! A condição é verdadeira!\');
   }?>

"If tipo 2.2" - Melhor quando trabalha com PHP e pouco HTML

<?php if (CONDICAO1) {
   echo JText::_('Oi! A CONDICAO1 é verdadeira!');
   } elseif (CONDICAO2) {necho JText::_('Oi! A CONDICAO1 é falsa! Mas a CONDICAO2 verdadeira!');
   } else {
   necho JText::_('Oi! A CONDICAO1 e CONDICAO2 São Falsas!');
   }?>

Dica: de como especificar apenas excessões!

Neste caso é simples. em todas as condicionais que você quiser dizer o contrário, basta adicionar exclamação (!) antes da condição:

 if (!CONDICAO) {
     echo JText::_('Minha condição NÂO é verdadeira!');
   }

Determinar se é frontend ou backend

 $app = JFactory::getApplication();
 if ($app->isAdmin()) {
     echo JText::_('Estou na área administrativa do Joomla!');
 } else {
     echo JText::_('Não estou na área administrativa do Joomla!');
 }

Exemplo: Retornar URL base independente de ser frontend ou backend

Se você não sabe, o modo de como retornar a URL base do Joomla é diferente no frontend do backend. O código mais curto para evitar ter que pensar muito ou mesmo usar um mesmo arquivo nas duas áreas é o seguinte.

 $app = JFactory::getApplication();
 $live_site = $app->isAdmin() ? $app->getSiteURL() : JURI::base();
Obrigado ao Chris Davenport pela idéia simples e prática.

Determinar se é a página inicial (frontpage do site)

Baseado na documentação oficial How to determine if the user is viewing the front page.

<?php
$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
        echo JText::_('Voce esta vendo a pagina inicial do site');
}
?>

Determinar se é a página especifica

Baseado no post do nailson_imgn.

<?php
$paginaatual = JURI::current();
if( $paginaAtual == 'link/da/pagina/de/noticias.html' ){
   echo JText::_('Voce esta vendo a página link/da/pagina/de/noticias.html desde site');
}
?>

Determinar se é um componente específico (option)

 $option = JRequest::GetWord('option'); //com_content, com_user, com_contact...
 if ($option == 'com_content') {
     echo JText::_('Esta página é do componente com_content ');
 }

Determinar se é uma view especifica (view)

 $view = JRequest::GetWord('view'); //frontpage, default, form, ...
 if ($view == 'frontpage') {
     echo JText::_('Esta página é exibida com a view frontpage');
 }

Determinar se é um formato específico (format)

 $format = JRequest::GetWord('format'); //html, pdf, raw,...
  if ($format == 'html') {
      echo JText::_('Esta página é exibida com o format html');
  }

Determinar se é uma página especifica (Itemid)

 $ItemId = JRequest::GetInt('Itemid'); //Numero do artigo
  if ($ItemId == '27') {
      echo JText::_('Esta página é especifica do artigo de ID 27');
 }

Determinar se é visitante ou usuário logado

 $user =& JFactory::getUser();
 if ( $user->get('guest') ) { //$user->get('guest') retorna '1' caso seja visitante
      echo JText::_('Você é um visitante!');
 } else {
      echo JText::_('Você é um usuario autenticado!');
 }

Exemplo: Exibir posição de módulo apenas para visitantes

<?php
$user =& JFactory::getUser();
if ($user->get('guest')) : ?>
<!--HTML aqui dentro -->
<jdoc:include type="modules" name="top" style="beezDivision" headerLevel="3" />
<?php endif; ?>

Determinar se é um tipo de usuário

Dois parametros podem ser usados do JUser neste caso: grid e usertype. Grid é o equivalente numérico do usertype ao qual você já deve estar acostumado, e o usertipe é o nome com o qual o grupo do usuário é salvo no banco de dados

Visite Accessing the current user object

 $user =& JFactory::getUser();
     if ( $user->get('usertype') == 'Super Administrator') { //Super Administrator, Administrator, Manager...
      echo JText::_('Você é um Super Administrador do sistema!');
 }

Determinar se é um usuário específico

Neste exemplo, ao usar somente o '$user =& JFactory::getUser()' estamos carregando o usuário atualmente logado no sistema. Se por exemplo quer pegar os dados de qualquer usuário específico, independente de quem esteja logado no sistema, deve especificar o id do respectivo usuáio ou o username, no caso $user =& JFactory::getUser(62) / $user =& JFactory::getUser('admin') para o administrador padrão do Joomla.

Neste exemplo, vamos pegar somente o usuário atualmente logado e procurar saber se o id dele é igua o id de usuário que queremos. Mas lembre-se que você pode usar qualquer outro dos parâmetros, como username ou nome de usuário

Visite Accessing the current user object

 $user =& JFactory::getUser();
     if ( $user->get('id') == '62') { //Super Administrator, Administrator, Manager...
      echo JText::_('Você é especificamente o usuário que estou procurando!');
 }

Determinar se o modo de debug está ligado

Quando estiver desenvolvendo uma extensão, é comum usar certos códigos para ver como as coisas estão indo. Não obstante, ao entregar para o cliente final ficar apagando, ou com sorte só comentando, pode encomodar um pouco, em especial se o projeto em questão não foi 'finalizado para todo o sempre' ou mesmo ainda está em constante desenvolvimento. Neste caso você tem pelo menos duas boas alternativas são voce usar para debugar sua extensão: extender o modo debug padrão do joomla, ou setar sua própria variavel no arquivo principal de sua extensão, fazendo com que o resto do código execute se tal código estiver definido. Neste exemplo, você tem como base como executar um ploco de ações somente quando o Modo debug padrão do Joomla estiver ligado

 if (JDEBUG) { //JDEBUG é uma constante definida pelo sistema com Debug = ON
      echo JText::_('O debug do sistema está on! Posso dar uns print_r() a vontade :D');
 }

Outra dica para quem quer debugar em Joomla é usar o JoomlaFox!

Estados do Brasil - Lista Drop Down

Em vez de fazer do modo tradicional adicionando HTML direto ao seu código, você pode usar o Framework Joomla para gerar a lista drop down com os estados brasileiros, já com opção de tradução para gerenciar os acentos sem problemas. O código abaixo é literalmente um CTRL+C para colocar em suas extensões.

São disponibilizadas duas versões: uma que envia no formulário em formato UF, e outro que salva em numeral de 1 até 27. Mesmo ao ler dados do banco de dados o menu vai compreender o estado certo e exibir qual é para o usuário.

Uma página como essa pode ser especialmente interessante se você acha as coisas mais rápido pelo google do que procurando em códigos já feitos no seu computador. Isso se conseguir achar no seu computador.

Estados do Brasil - Lista Drop Down: Demonstração do resultado final

item->estado, ''); ?>

Atenção! Neste exemplo não foi adicionado a esta página as traduções dos JText! No seu caso deve aparecer por exemplo 'Acre' em vez de 'UF_AC'.

Array Estados do Brasil, Valor enviado tipo UF

<?php
//Estados do Brasil, Value UF
//http://www.fititnt.org/codigo/joomla/estados-do-brasil.html
$estadodobrasil = array();
$estadodobrasil[] = JHTML::_('select.option', '', JText::_('- Selecione o Estado -'));
$estadodobrasil[] = JHTML::_('select.option', 'AC', JText::_('UF_AC'));
$estadodobrasil[] = JHTML::_('select.option', 'AL', JText::_('UF_AL'));
$estadodobrasil[] = JHTML::_('select.option', 'AP', JText::_('UF_AP'));
$estadodobrasil[] = JHTML::_('select.option', 'AM', JText::_('UF_AM'));
$estadodobrasil[] = JHTML::_('select.option', 'BA', JText::_('UF_BA'));
$estadodobrasil[] = JHTML::_('select.option', 'CE', JText::_('UF_CE'));
$estadodobrasil[] = JHTML::_('select.option', 'DF', JText::_('UF_DF'));
$estadodobrasil[] = JHTML::_('select.option', 'ES', JText::_('UF_ES'));
$estadodobrasil[] = JHTML::_('select.option', 'GO', JText::_('UF_GO'));
$estadodobrasil[] = JHTML::_('select.option', 'MA', JText::_('UF_MA'));
$estadodobrasil[] = JHTML::_('select.option', 'MT', JText::_('UF_MT'));
$estadodobrasil[] = JHTML::_('select.option', 'MS', JText::_('UF_MS'));
$estadodobrasil[] = JHTML::_('select.option', 'MG', JText::_('UF_MG'));
$estadodobrasil[] = JHTML::_('select.option', 'PA', JText::_('UF_PA'));
$estadodobrasil[] = JHTML::_('select.option', 'PB', JText::_('UF_PB'));
$estadodobrasil[] = JHTML::_('select.option', 'PR', JText::_('UF_PR'));
$estadodobrasil[] = JHTML::_('select.option', 'PE', JText::_('UF_PE'));
$estadodobrasil[] = JHTML::_('select.option', 'PI', JText::_('UF_PI'));
$estadodobrasil[] = JHTML::_('select.option', 'RJ', JText::_('UF_RJ'));
$estadodobrasil[] = JHTML::_('select.option', 'RN', JText::_('UF_RN'));
$estadodobrasil[] = JHTML::_('select.option', 'RS', JText::_('UF_RS'));
$estadodobrasil[] = JHTML::_('select.option', 'RO', JText::_('UF_RO'));
$estadodobrasil[] = JHTML::_('select.option', 'RR', JText::_('UF_RR'));
$estadodobrasil[] = JHTML::_('select.option', 'SC', JText::_('UF_SC'));
$estadodobrasil[] = JHTML::_('select.option', 'SP', JText::_('UF_SP'));
$estadodobrasil[] = JHTML::_('select.option', 'SE', JText::_('UF_SE'));
$estadodobrasil[] = JHTML::_('select.option', 'TO', JText::_('UF_TO'));
?>

Array Estados do Brasil, Valor enviado tipo número

<?php
//Estados do Brasil, Value 1~27
//http://www.fititnt.org/codigo/joomla/estados-do-brasil.html
$estadodobrasil = array();
$estadodobrasil[] = JHTML::_('select.option', '', JText::_('- Selecione o Estado -'));
$estadodobrasil[] = JHTML::_('select.option', '1', JText::_('UF_AC'));
$estadodobrasil[] = JHTML::_('select.option', '2', JText::_('UF_AL'));
$estadodobrasil[] = JHTML::_('select.option', '3', JText::_('UF_AP'));
$estadodobrasil[] = JHTML::_('select.option', '4', JText::_('UF_AM'));
$estadodobrasil[] = JHTML::_('select.option', '5', JText::_('UF_BA'));
$estadodobrasil[] = JHTML::_('select.option', '6', JText::_('UF_CE'));
$estadodobrasil[] = JHTML::_('select.option', '7', JText::_('UF_DF'));
$estadodobrasil[] = JHTML::_('select.option', '8', JText::_('UF_ES'));
$estadodobrasil[] = JHTML::_('select.option', '9', JText::_('UF_GO'));
$estadodobrasil[] = JHTML::_('select.option', '10', JText::_('UF_MA'));
$estadodobrasil[] = JHTML::_('select.option', '11', JText::_('UF_MT'));
$estadodobrasil[] = JHTML::_('select.option', '12', JText::_('UF_MS'));
$estadodobrasil[] = JHTML::_('select.option', '13', JText::_('UF_MG'));
$estadodobrasil[] = JHTML::_('select.option', '14', JText::_('UF_PA'));
$estadodobrasil[] = JHTML::_('select.option', '15', JText::_('UF_PB'));
$estadodobrasil[] = JHTML::_('select.option', '16', JText::_('UF_PR'));
$estadodobrasil[] = JHTML::_('select.option', '17', JText::_('UF_PE'));
$estadodobrasil[] = JHTML::_('select.option', '18', JText::_('UF_PI'));
$estadodobrasil[] = JHTML::_('select.option', '19', JText::_('UF_RJ'));
$estadodobrasil[] = JHTML::_('select.option', '20', JText::_('UF_RN'));
$estadodobrasil[] = JHTML::_('select.option', '21', JText::_('UF_RS'));
$estadodobrasil[] = JHTML::_('select.option', '22', JText::_('UF_RO'));
$estadodobrasil[] = JHTML::_('select.option', '23', JText::_('UF_RR'));
$estadodobrasil[] = JHTML::_('select.option', '24', JText::_('UF_SC'));
$estadodobrasil[] = JHTML::_('select.option', '25', JText::_('UF_SP'));
$estadodobrasil[] = JHTML::_('select.option', '26', JText::_('UF_SE'));
$estadodobrasil[] = JHTML::_('select.option', '27', JText::_('UF_TO'));
?>

Estados do Brasil - Lista Drop Down

Este é o código que Joomla que, efetivamente, gera a lista baseada no array informado anteriormente. Coloque aonde gostaria que a lista fosse exibida na sua página. Altere os campos conforme o seu caso.

<?php echo JHTML::_('select.genericlist', $estadodobrasil, 'estado','class="inputbox"', 'value' , 'text', $this->item->estado, ''); ?>

Tradução da lista drop down de Estados do Brasil

O código abaixo deve ser colocado no seu respectivo arquivo de tradução.
## Tradução de Estados do Brasil: 
## http://www.fititnt.org/codigo/joomla/estados-do-brasil.html
- Selecione o Estado -=- Selecione o Estado -
UF_AC=Acre
UF_AL=Alagoas
UF_AP=Amapá
UF_AM=Amazonas
UF_BA=Bahia
UF_CE=Ceará
UF_DF=Distrito Federal
UF_ES=Espírito Santo
UF_GO=Goiás
UF_MA=Maranhão
UF_MT=Mato Grosso
UF_MS=Mato Grosso do Sul
UF_MG=Minas Gerais
UF_PA=Pará
UF_PB=Paraíba
UF_PR=Paraná
UF_PE=Pernambuco
UF_PI=Piauí
UF_RJ=Rio de Janeiro
UF_RN=Rio Grande do Norte
UF_RS=Rio Grande do Sul
UF_RO=Rondônia
UF_SC=Santa Catarina
UF_RR=Roraima
UF_SP=São Paulo
UF_SE=Sergipe
UF_TO=Tocantins
 
 
 
fititnt.org is not affiliated with or endorsed by the Joomla Project or Open Source Matters. The Joomla logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries
HTML5 Valid CC 3.0 BY NC