Última atualização em Sex, 30 de Julho de 2010 20:54
Sex, 30 de Julho de 2010 20:45
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);
Última atualização em Sex, 04 de Dezembro de 2009 17:59
Sex, 27 de Novembro de 2009 16:05
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.
<?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
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
$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
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!
Última atualização em Qui, 26 de Novembro de 2009 17:08
Qui, 26 de Novembro de 2009 16:18
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
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'.
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.
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