Blog

Google calendar api v3 set color + color chart

After searching for quite a long time (too much for such a thing) I finally found how to set am event color for a calendar event using the new API V3. Also, and before we get to the code, just to have it said, people over on google groups are a little bit like the foruns it self…. poor! I’ve looked at a few threads where this question was asked and people just said “It has been aswered a few times, search it”… C’mon you guys… It’s free info, and keystrokes are relativly as well!!

Right so, I’m not very much of a blogger in the past months, but this I felt I had to have it written on my blog, just because ūüėČ

Well so here it goes. Lets imagine the following sample code being a function.

function addEvent_to_Google($startDate, $startTime, $endDate, $endTime, $weekDay, $recurrent) {
    @session_start();
    require_once dirname(__FILE__) . "/google-api-php-client/src/apiClient.php";
    require_once dirname(__FILE__) . "/google-api-php-client/src/contrib/apiCalendarService.php";

    $apiClient = new apiClient();
    $apiClient->setUseObjects(true);
    $service = new apiCalendarService($apiClient);

    if (isset($_SESSION['g_mat_token'])) {
         $apiClient->setAccessToken($_SESSION['g_mat_token']);
         $event = new Event();
         $event->setSummary('Appointment');
         $event->setLocation('Somewhere');
         $start = new EventDateTime();
         $start->setDateTime(''.$startDate.'T'.$startTime.'');
         $start->setTimeZone('Europe/Lisbon');
         $event->setStart($start);
         $end = new EventDateTime();
         $end->setDateTime(''.$endDate.'T'.$endTime.'');
         $end->setTimeZone('Europe/Lisbon');
         $event->setEnd($end);
         $event->setRecurrence(array('RRULE:FREQ=WEEKLY;UNTIL=20121231'));
         $event->setColorId("11");
         $recurringEvent = $service->events->insert('primary', $event);
         return $recurringEvent->getId();

    } else {
        return "Authorization problem"; // I'm not going trought this much, another war ūüėČ
    }
}

Basically, it’s as simple as $event->setColorId("11"); where the color ID must be one integer value from 1 – 11. Also as a propper “i-can-do-a-research-myself-forums-users-don’t-bother-let-other-people-know-about-your-findings” where is the chart with all the colors, their ID’s and hex equivalents

Problemas passando vari√°veis PHP para o Javascript

Ora como falámos no post anterior existe um problema grande ao passarmos variáveis do PHP para o javascript. O PHP não se importa com quebras de linha, ou melhor ignora-as, o que quer dizer que o seguinte código:

<?php
echo "primeira linha
segunda linha
terceira linha";
?>

Vai gerar um output de

primeira linha segunda linha terceira linha

Portanto o PHP ignora quebras de linha. No entanto, seguindo o tutorial do anterior post, se o Javascript contiver o seguinte código:

<?php
$var "primeira linha
segunda linha
terceira linha "COM" aspas & ainda 'aspas' simples";
?>
window.onload = function () {
    alert("<?php echo $var; ?>");
};

Acontece que a seguir às tags do PHP o browser vai interpretar o restante como javascript e então o resultado seria o mesmo que termos:

window.onload = function () {
    alert("primeira linha
segunda linha
terceira linha "COM" aspas & ainda 'aspas' simples");
};

O que simplesmente iria gerar um erro de javascript no seu browser. Para além de o Javascript não suportar quebras de linha, ainda temos o problema de as aspas no meio da string que veio da variável do PHP, interferirem com as aspas do bloco de código javascript gerado. No que diz respeito às quebras de página do PHP temos de substiruir por /n que em javascript significa newline e em relação às aspas, temos de as manter visto que o echo do PHP exclui as mesmas ao fazer o output.

Ent√£o temos este c√≥digo bonitinho que resolve estas situa√ß√Ķes.

<?php
$var "primeira linha
segunda linha
terceira linha "COM" aspas & ainda 'aspas' simples";
?>
window.onload = function () {
    alert("<?php echo preg_replace("/r?n/", "\n", addslashes($var)); ?>");
};

Assim o equivalente em javascript que irá ser gerado com o bloco de código anterior é o seguinte:

window.onload = function () {
    alert("primeira linhansegunda linhanterceira linha "COM" aspas & ainda 'aspas' simples");
};

Código javascript perfeitamente válido. E pronto não há mais problemas com erros ao passar variáveis de PHP para Javascript

 

Acessar vari√°veis PHP em JAVASCRIPT

Um problema comum que pode acontecer quando estamos a programar em javascript é precisarmos de aceder a variáveis de PHP, sejam variáveis básicas, pré-definidas, superglobals ou qualquer outra coisa.

Normalmente nestas situa√ß√Ķes, quando h√° essa necessidade, normalmente nunca vem s√≥. Normalmente precisamos de aceder a mais que uma vari√°vel. Nestas condi√ß√Ķes o ideal ser√° ao inv√©s de criarmos uma nova inclus√£o de <script> com o ficheiro.js no <head></head> da nossa p√°gina, chamamos o script da seguinte forma:

<head>
    <script src="scripts/script-normal.js" type="text/javascript"></script>
    <script src="scripts/script-modificado.php" type="text/javascript"></script>
</head>

De notar que no c√≥digo em cima chamamos dois scripts, e na segunda linha o scrip-modificado.php termina em PHP. Portanto este ficheiro vai ser carregado e interpretado pelo servidor como um ficheiro de PHP. Agora o conte√ļdo deste ficheiro ser√° simples, como devem imaginar.

    <?php
        $var = "CONTEUDO DA VARIAVEL";
    ?>

    window.onload = function () {
        alert("<?php echo $var; ?>");
    };

Ora como o próprio código indica, entre as tags <?php ?> temos o nosso código PHP e na parte fora das tags <?php ?> é tudo executado pelo browser normalmente. Basicamente este ficheiro é interpretado pelo borwser como um ficheiro normal mas o servidor interpreta qualquer bloco de código PHP.

Agora existem um problema nesta situação, que é o facto de o PHP permitir quebras de linha (line breaks) ao passo que o javascript não. Mas deixamos este tópico para um futuro post.

 

Função JavaScript equivalente ao PHP Explode

Em linguagem PHP conseguimos facilmente separar uma string grande em palavras, separando por um caractere à nossa escolha, usando a função explode(). Em execução podemos usar por exemplo o seguinte código:

$longstring = "√Äs vezes √© complicado conseguirmos as solu√ß√Ķes.";
$brokenstring = explode(" ", $longstring);
echo $brokenstring[0]; // Vai fazer echo à palavra "Às"
echo $brokenstring[1]; // Vai fazer echo à palavra "vezes"

Como podemos ver pelo c√≥digo, a variable $brokenstring vai ser uma array com todas as palavras separadas pelo espa√ßo (” “), e n√£o esquecer que o index come√ßa em 0.

Agora em JavaScript o método é parecido, usando a função split() que é muito idêntica alterando ligeiramente a sintaxe. Por exemplo tendo em as mesmas variáveis que o exemplo acima de PHP, fazemos:

var longstring = "√Äs vezes √© complicado conseguirmos as solu√ß√Ķes.";
var brokenstring = longstring.split(" ");
alert(brokenstring[0]); // Vai fazer alert com a palavra "Às"
alert(brokenstring[1]); // Vai fazer alert com a palavra "vezes"

Alterando um pouco a sintaxe, o efeito é o mesmo. Resultado é a variável brokenstring como array contendo as palavras, igualmente com index a começar em 0.

Simples ūüėČ

Renomear tabela ou coluna em MySQL

Tendo como base de partida o MySQL 5.0, a forma de alterarmos o nome de uma tabela √© trivial e simples com o comando/fun√ß√£o “rename table”. Outrora, renomear uma coluna, era extremamente confuso e complexo, mesmo lendo a documenta√ß√£o de tr√°s para a frente. Deixamos alguns exemplos concretos para explicar melhor.

Para renomear uma tabela de “nome_tabela” para “novo_nome_tabela”:

RENAME TABLE nome_tabela TO novo_nome_tabela;

Para renomear uma coluna com o nome “id_exemplo” para “novo_id_exemplo” numa tabela chamada “tabela_exemplo”:

ALTER TABLE tabela_exemplo CHANGE id_exemplo novo_id_exemplo integer(5) unsigned;

Portanto, quando quisermos renomear uma coluna, colocamos simplesmente o nome original em primeiro lugar e a seguir o novo nome. N√£o esquecer que √© necess√°rio incluir as especifica√ß√Ķes da coluna.

Paginação de resultados em PHP

Este tutorial √© destinado a todos os developer que necessitem de utilizar um sistema de pagina√ß√£o de resultados de uma base de dados, para que os mesmo sejam exibidos por p√°ginas em vez da listagem completa. Muito √ļtil quando apresentando grandes volumes de data.

Partindo do principio que o utilizador tem conhecimentos base de PHP e MySQL. De notar que o exemplo apresentado é com base nestas linguagem mas qualquer sistema de base de dados que permita LIMIT e OFFSET nas querys SELECT podem ser usados.

Continue reading “Pagina√ß√£o de resultados em PHP”

Tutorial completo MySQL com PHP

Hoje em dia, sites din√Ęmicos s√£o uma constante na web. Longe vai o tempo que os sites eram simples p√°ginas est√°ticas HTML.

Os conte√ļdos armazenados, interac√ß√£o com utilizadores, gest√£o de conte√ļdos s√£o pe√ßas chave dos sites de hoje. Grande pilar nesta dinamiza√ß√£o est√° as base de dados. N√£o sendo obrigat√≥rio como √© natural, √© um complemento eficaz no armazenamento da informa√ß√£o.

Neste tutorial vamos passar pela utiliza√ß√£o de base e dados MySQL com PHP. Lamento o facto de apenas falar em PHP e material opensource, mas √© assim a vida, s√≥ h√° lugar para as coisas boas ūüėČ

Continue reading “Tutorial completo MySQL com PHP”