Jak odeslat pozvánku na meeting do Outlooku přes PHP?

Někdy se stane že chcete abyste na něco nezapoměli. A ten kdo to má zajistit je stroj nebo aplikace. Ale obvyklé remindery obvykle nefungují, pokud je človek zahrabanej v Outlooku, který mu řídí celý život. Pro podobné případy je dobré si deadliny nastavit přímo do kalendáře v outlooku. Takže jak to udělat?

Buď odkazem, na který se klikne a uživatel si stáhne soubor, který když si v outlooku otevře tak se mu otevře okno meetingu a on to může potvrdit. To je ale takový blbý.

Takže moje ideální řešení je to, že ten meeting přijde na mail a uživatel si ho otevře a potvrdí a má ho tam 🙂

Jde to jednoduše, detaily jsou ve scriptu viz níže. jediný co blbne je ten čas, protože zatim mi to odesílá v nějakým Kanada-USA čase, takže to se asi musí ještě nejak poštelovat:


Informace jsem sbíral zde:
http://www.terminally-incoherent.com/blog/2008/04/14/generate-outlook-calendar-events-with-php-and-icalendar/
http://www.webdeveloper.com/forum/showthread.php?201539-Send-Outlook-Appointment-via-eMail-Using-PHP

Zaokrouhlení v PHP

pro zaokrouhlení v PHP existuje funkce round(); … jako parametry funkce se zadává číslo, které chceme zaokrouhlit a počet desetinných míst. Když chceme na 0 desetinných míst tak není nutné tu nullu zadávat. Tedy:
round(1.8); zaorkouhlí na 2, stejně jako round(1.8,0);
a round(1.488,2); zaokrouhlí na 1.49

Pokud bychom chtěli zaokrouhlovat nahoru, slouží k tomu funkce ceil();, která se používá stejně jako round();

seřazení položek přetažením – AJAX a PHP

Skvělý a funkční návod na seřazení položek databáze přetažením (drag and drop) je zde.

Jenom několik poznámek pro adaptaci přetáhnutí pro vlastní potřeby: když se přejmenuje processor.php na jiný název, tak to nefunguje. Pokud bychom chtěli dát do ID položek seznamu pouze číslo, tak to taky nebude fungovat.

Výpis začátku odstavce v PHP

Když zobrazujete články na začátku nějakého webu, většinou chcete zobrazit pouze začátek článku na HomePage a celý text pak chcete zobrazit až v detailu článku. V PHP jsou dvě možnosti, jak text zkrátit:

1 – Zkrácení omezením počtu znaků můžeme zrealizovat pomocí příkazů:
         //vypiseme jenom prvnich X znaku
        $pocet_znaku=100;

        $text_final=subStr($text,0,$pocet_znaku);
Funguje to pěkně, ale můžeme se dostat do potíží, když například v proměnné $text máme nějaké speciální znaky, zejména tagy nebo znaky nahrazující diakritiku. Tak nám může náš milý zkrácený text rozhodit celý layout. Proto je jako lepší řešení

2 – Zkrácení omezením počtu slov. To je už náročnější, protože je třeba vydefinovat nejprve co je to slovo. Pokud si to zjednodušíme tak, že slovo definujeme jako skupinku znaků od ostatních oddělených mezerami, můžeme proměnnou $text rozdělit do pole jehož oddělovátky jsou mezery, vybrat pouze prvních X záznamů pole a ty poté opět oddělené mezerami sloučit do finální proměnné. Takže by to vypadalo takto:
         //vypiseme jenom prvnich X slov
          $slov = 20; 
          $slova = explode(‘ ‘, $text); 
          $slova = array_slice($slova, 0, $slov);
          $text_final = implode(‘ ‘, $slova);

Jak přečíst přílohu Emailu v PHP

Pro jednu aplikaci potřebuji přečíst Email a dostat z něj přílohu. Zatím jsem našel třídu php_mime_class na sourceforge, která vypadá, že by to mohla umět.. další update přinesu ..

UPDATE:
Tak nakonec jsem se obešel bez jakýchkoliv přidaných tříd a použil moc krásný návod na Electrictoolbox.

Jak vynulovat pole v PHP II.

V článku jak vynulovat pole v PHP jsme si ukázali jak vynulovat pole v PHP pomocí projetí celého pole a nastavení hodnoty nula. Existuje však mnohem milejší způsob jak si zničit pole předtím než do něj budeme cpát nové hodnoty – tím je, že dáme proměnné jednoduše strukturu pole, tedy například:

$pole=array();

… a tím je pole $pole vynulováno.

Prevody mezi kodovanim v PHP

Velmi krátký vzkaz – pro projekt který funguje v kódování Windows 1250 a má i databázi v tomto kódování jsem potřeboval při importu z XML dat která jsou v UTF-8 převést české znaky z UTF-8 do Windows 1250, protože to do tý databáze zapisovalo české znaky blbě. Pomohla mi až Latrína zde, kde píšou o krásném příkazu iconv();. Ten je sice k dispozici až od PHP 5 a výše, ale zato konvertuje úplně krásně. Syntaxe pro použití tohoto příkazu je:

$prevedeny_retezec = iconv(‘PUVODNI-CHARSET’,’NOVY-CHARSET//DOPLNENI’, $retezec_k_prevedeni);

nebo chcete-li na příkladu převedení znaku z UTF-8 na Windows 1250:

$prevedeny_retezec = iconv(‘UTF-8′,’WINDOWS-1250//TRANSLIT’, $retezec_k_prevedeni);

DOPLNENI je vlíže vysvětleno na uvedeném linku.

 

Letní a zimní čas v PHP

V jedné aplikaci používám kalendář. Zobrazuje se tak, že k prvnímu dni v timestamp formátu přičtu vždy 7 dalších dní = 7 (dni) * 24 (hodin) * 60 (minut) * 60 (vterin). Bohužel PHP je tak inteligentní (nebo já nevim co), že do toho počítá i letní a zimní čas. Tím se mi udělal “problém” v některých říjnových týdnech.

Na stránkách Jakuba Vrány jsem ale našel pomoc, jak tuto mou kravinku pořešit. Díky moc!

PHP nahrazení znaků v řetězci jinými

pokud chceme nahradit znaky v jednom řetězci jinými znaky, použijeme funkci StrTr(). Funkce má tři argumenty:
– řetězec
– znaky, které se mají nahradit
– znaky, kterými se maji nahradit

Pokud mámte tedy proměnnou $prijemci_final, ve které jsou Emailové adresy oddělené středníky a my je chceme oddělit čárkami, aby byly použitelné pro funkci mail(), uděléme to následovně

<br /> $prijemci_final=StrTr($prijemci_final,&#8221;;&#8221;,&#8221;,&#8221;);<br />

Rozdělení řetězce do pole v PHP

pokud chceme rozdělit řetězec do položek pole, slouží k tomu jednoduchý příkaz explode(). Například pro získání jednotlivých mailů z řetězce kde jsou odděleny středníkem, můžeme použít:

<br /> $maily=&#8221;honza@gmail.com; franta@google.com; stonozka@sranda.cz&#8221;;<br /> $pole=explode(&#8220;;&#8221;, $maily);<br />
Pro vypsání všech mailů z pole pak můžeme použít:
<br /> foreach ($pole as $mejl) {<br /> print &#8220;$mejl<br />\n&#8221;;<br /> }<br />

Vynulování pole v PHP

Vynulováno pole (array) v PHP rozhodně nelze udělat tak, že dáme hodnotu proměnné=0. Například, pokud méme proměnnou $pole[$i], tak nemůžeme dát $pole=0. Musíme projet všechny úrovně pole a dát jim hodnotu 0. To provedeme následujícím cyklem

foreach ($pole as $index => $hodnota)
{
print $hodnota; //tim vypíšeme původní hodnotu úrovně pole
$pole[$index] = 0; //tím vynulujeme danou úroveň pole
}