assign('pageMetas', $pmetas); $filename = $TLN->userdatafolder.'/'.$addressBook; $myfile = $TLN->blob($TLN->readFile($filename, false), false); if ($myfile != "") { $mab = unserialize(base64_decode($myfile)); } else { $mab = []; } /* One time: Check for old format addressbook, convert, delete */ $ofilename = $TLN->userdatafolder.'/addressbook.ucf'; if (file_exists($ofilename)) { $myfile = $TLN->blob($TLN->readFile($filename, false), false); if ($myfile != "") { $obook = unserialize(base64_decode($myfile)); if (is_array($obook)) { $newbook = []; // Old format of addressbook. xfer to vCard format foreach ($obook as $a) { $v = new vCard(); $v->fn($a['name']); $v->email($a['email'], 'internet', 'pref'); $v->tel($a['phone'], 'pref', 'voice'); $v->tel($a['cell'], 'cell', 'voice'); $v->x_work($a['work']); $v->note($a['note']); $v->adr("", 'pref', 'home'); $v->adr($a['pobox'], 'pobox'); $v->adr($a['extended'], 'extendedaddress'); $v->adr($a['street'], 'streetaddress'); $v->adr($a['city'], 'locality'); $v->adr($a['state'], 'region'); $v->adr($a['pcode'], 'postalcode'); $v->adr($a['country'], 'country'); $v->rev(date("Ymd") . 'T' . date("His") . 'Z'); $newbook[$a['name']] = strval($v); unset($v); } Telaen::add2me($mab, $newbook); } } $TLN->saveFile($filename, base64_encode(serialize($mab))); unlink($ofilename); } ksort($mab); eval('$jssource = "' . $commonJS . '";'); $jssource .= " "; $smarty->assign('smJS', $jssource); $smarty->assign('smGoBack', 'addressbook.php'); extract(Telaen::pullFromArray($_GET, ['opt', 'id'], 'str')); extract(Telaen::pullFromArray($_POST, ['name', 'email', 'street', 'city', 'state', 'country', 'work', 'phone', 'cell', 'note', 'fax', 'opt', 'id'], 'str')); $id = urldecode($id); switch ($opt) { // save an edited contact case 'save': try { $v = new vCard(false, $mab[$id]); } catch (Exception $e) { $smarty->assign('smOpt', -1); $templatename = 'address-results.tpl'; break; } $v->fn($name); $v->email($email, 'internet', 'pref'); $v->adr('adr', 'pref', 'home'); $v->adr($pobox, 'pobox'); $v->adr($extended, 'extendedaddress'); $v->adr($street, 'streetaddress'); $v->adr($city, 'locality'); $v->adr($state, 'region'); $v->adr($pcode, 'postalcode'); $v->adr($country, 'country'); $v->x_work($work); $v->tel($phone, 'pref', 'voice'); $v->tel($cell, 'cell', 'voice'); $v->note($note); $v->rev(date("Ymd") . 'T' . date("His") . 'Z'); $mab[$id] = strval($v); $TLN->saveFile($filename, base64_encode(serialize($mab))); $smarty->assign('smOpt', 1); $templatename = 'address-results.tpl'; break; // add a new contact case 'add': $v = new vCard(); $v->fn($name); $v->email($email, 'internet', 'pref'); $v->adr('adr', 'pref', 'home'); $v->adr($pobox, 'pobox'); $v->adr($extended, 'extendedaddress'); $v->adr($street, 'streetaddress'); $v->adr($city, 'locality'); $v->adr($state, 'region'); $v->adr($pcode, 'postalcode'); $v->adr($country, 'country'); $v->x_work($work); $v->tel($phone, 'pref', 'voice'); $v->tel($cell, 'cell', 'voice'); $v->note($note); $v->rev(date("Ymd") . 'T' . date("His") . 'Z'); $mab[$name] = strval($v); $TLN->saveFile($filename, base64_encode(serialize($mab))); $smarty->assign('smOpt', 2); $templatename = 'address-results.tpl'; break; //delete an existing contact case 'dele': unset($mab[$id]); $TLN->saveFile($filename, base64_encode(serialize($mab))); $smarty->assign('smOpt', 3); $templatename = 'address-results.tpl'; break; // show the form to edit case 'edit': $templatename = 'address-form.tpl'; try { $v = new vCard(false, $mab[$id]); } catch (Exception $e) { $smarty->assign('smOpt', -1); $templatename = 'address-results.tpl'; break; } foreach ($v->tel as $p) { if (in_array('cell', $p['type'])) { $cell = $p['value']; } if (in_array('voice', $p['type'])) { $phone = $p['value']; } } $smarty->assign('smAddrName', $v->fn[0]); $smarty->assign('smAddrEmail', $v->email[0]['value']); $smarty->assign('smAddrPObox', $v->adr[0]['pobox']); $smarty->assign('smAddrExtended', $v->adr[0]['extendedaddress']); $smarty->assign('smAddrStreet', $v->adr[0]['streetaddress']); $smarty->assign('smAddrCity', $v->adr[0]['locality']); $smarty->assign('smAddrState', $v->adr[0]['region']); $smarty->assign('smAddrPCode', $v->adr[0]['postalcode']); $smarty->assign('smAddrCountry', $v->adr[0]['country']); $smarty->assign('smAddrWork', $v->x_work[0]); $smarty->assign('smAddrPhone', $phone); $smarty->assign('smAddrCell', $cell); $smarty->assign('smAddrNote', $v->note[0]); $smarty->assign('smOpt', 'save'); $smarty->assign('smAddrID', $id); break; // display the details for an especified contact case 'display': $templatename = 'address-display.tpl'; try { $v = new vCard(false, $mab[$id]); } catch (Exception $e) { $smarty->assign('smOpt', -1); $templatename = 'address-results.tpl'; break; } foreach ($v->tel as $p) { if (in_array('cell', $p['type'])) { $cell = $p['value']; } if (in_array('voice', $p['type'])) { $phone = $p['value']; } } $smarty->assign('smAddrName', $v->fn[0]); $smarty->assign('smAddrEmail', $v->email[0]['value']); $smarty->assign('smAddrPObox', $v->adr[0]['pobox']); $smarty->assign('smAddrExtended', $v->adr[0]['extendedaddress']); $smarty->assign('smAddrStreet', $v->adr[0]['streetaddress']); $smarty->assign('smAddrCity', $v->adr[0]['locality']); $smarty->assign('smAddrState', $v->adr[0]['region']); $smarty->assign('smAddrPCode', $v->adr[0]['postalcode']); $smarty->assign('smAddrCountry', $v->adr[0]['country']); $smarty->assign('smAddrWork', $v->x_work[0]); $smarty->assign('smAddrPhone', $phone); $smarty->assign('smAddrCell', $cell); $smarty->assign('smAddrNote', $v->note[0]); $smarty->assign('smAddrID', $id); break; // show the form to a new contact case 'new': $templatename = 'address-form.tpl'; $smarty->assign('smOpt', 'add'); $smarty->assign('smAddrID', 'N'); break; // export a contact case 'expo': require './inc/lib.export.php'; export2ou($mab[$id]); break; // default is list default: $smarty->assign('smNew', 'addressbook.php?opt=new'); $nummsg = count($mab); $reg_pp = $TLN->prefs['rpp']; $start_pos = ($pag-1)*$reg_pp; $end_pos = (($start_pos+$reg_pp) > $nummsg) ? $nummsg : $start_pos+$reg_pp; if (($start_pos >= $end_pos) && ($pag != 1)) { $TLN->redirectAndExit("addressbook.php?pag=".($pag-1).""); } if ($nummsg > 0) { if ($pag > 1) { $smarty->assign('smFirstLink', "addressbook.php?pag=1"); $smarty->assign('smPreviousLink', "addressbook.php?pag=".($pag-1).""); } for ($i = 1;$i <= ceil($nummsg / $reg_pp);$i++) { if ($pag == $i) { $navigation .= "[$i] "; } else { $navigation .= "$i "; } } $totPages = ceil($nummsg / $reg_pp); if ($end_pos < $nummsg) { $smarty->assign('smNextLink', "addressbook.php?pag=".($pag+1).""); $smarty->assign('smLastLink', "addressbook.php?&pag=".$totPages.""); } $navigation .= " ($pag/".$totPages.")"; } $smarty->assign('smNavBar', $navigation); $addresslist = []; $i = 0; foreach ($mab as $k => $a) { $k = urlencode($k); try { $v = new vCard(false, $a); } catch (Exception $e) { continue; } $addresslist[$i]['viewlink'] = "addressbook.php?opt=display&id=$k"; $addresslist[$i]['composelink'] = "newmsg.php?nameto=".urlencode($v->fn)."&mailto=".urlencode($v->email[0]['value']).""; $addresslist[$i]['editlink'] = "addressbook.php?opt=edit&id=$k"; $addresslist[$i]['dellink'] = "addressbook.php?opt=dele&id=$k"; $addresslist[$i]['name'] = $v->fn[0]; $addresslist[$i]['email'] = $v->email[0]['value']; $i++; } $templatename = 'address-list.tpl'; $smarty->assign('smAddressList', $addresslist); } $smarty->display("$themez/$templatename");