1<?php 2/* $Id: contact.class.php,v 1.76 2004/07/16 11:17:06 k-fish Exp $ */ 3 4class Contact{ 5 var $templatesAreIn=""; 6 7 function opMassUpdate($data){ 8 global $conn; 9 if(is_array($data['cids'])){ 10 foreach($data['cids'] as $cid) 11 $cids[] = (int)$cid; 12 13 // mass update groups 14 if($data['group']!==0){ 15 $sql="SELECT id,owner FROM mgw_contacts WHERE id IN(".implode(',',$cids).")"; 16 if(!$res = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 17 while($row = $res->FetchRow()){ 18 if((($row['owner'] == $_SESSION["MGW"]->userid) && 19 queryRights2_bool('root_modules_contact_contact_modify')) 20 || queryRights2_bool('root_modules_contact_contact_modifyothers')){ 21 $sql = 'UPDATE mgw_contacts SET groupid='.(int)$data['group'].' WHERE id='.$row['id']; 22 if(!$conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 23 } 24 } 25 } 26 27 // mass update action 28 if($data['action']!==0){ 29 $sql="SELECT id,owner FROM mgw_contacts WHERE id IN(".implode(',',$cids).")"; 30 if(!$res = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 31 32 switch($data['action']){ 33 case 'delete': 34 while($row = $res->FetchRow()){ 35 if((($row['owner'] == $_SESSION["MGW"]->userid) && 36 queryRights2_bool('root_modules_contact_contact_delete')) 37 || queryRights2_bool('root_modules_contact_contact_deleteothers')){ 38 $sql = 'DELETE FROM mgw_contacts WHERE id='.$row['id']; 39 if(!$conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 40 } 41 } 42 break; 43 case 'private': 44 while($row = $res->FetchRow()){ 45 if((($row['owner'] == $_SESSION["MGW"]->userid) && 46 queryRights2_bool('root_modules_contact_contact_modify')) 47 || queryRights2_bool('root_modules_contact_contact_modifyothers')){ 48 $sql = 'UPDATE mgw_contacts SET ispublic=0 WHERE id='.$row['id']; 49 if(!$conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 50 } 51 } 52 break; 53 case 'public': 54 while($row = $res->FetchRow()){ 55 if((($row['owner'] == $_SESSION["MGW"]->userid) && 56 queryRights2_bool('root_modules_contact_contact_modify')) 57 || queryRights2_bool('root_modules_contact_contact_modifyothers')){ 58 $sql = 'UPDATE mgw_contacts SET ispublic=1 WHERE id='.$row['id']; 59 if(!$conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 60 } 61 } 62 } 63 } 64 return true; 65 } 66 return false; 67 } 68 69 // ================================================= 70 // create item 71 // ================================================= 72 function opCreate(){ 73 global $conn; 74 75 queryRights2('root_modules_contact_contact_create'); 76 77 $id = mgw_genID('mgw__seq_contacts'); 78 79 $title = $conn->QMagic(isset($_POST["title"])?$_POST["title"]:""); 80 $honpref = $conn->QMagic(isset($_POST["honpref"])?$_POST["honpref"]:""); 81 $firstname = $conn->QMagic(isset($_POST["firstname"])?$_POST["firstname"]:""); 82 $name_add = $conn->QMagic(isset($_POST["addname"])?$_POST["addname"]:""); 83 $nickname = $conn->QMagic(isset($_POST["nickname"])?$_POST["nickname"]:""); 84 $lastname = $conn->QMagic(isset($_POST["lastname"])?$_POST["lastname"]:""); 85 $name_suffix = $conn->QMagic(isset($_POST["namesuffix"])?$_POST["namesuffix"]:""); 86 87 $street = $conn->QMagic(isset($_POST["priv_strasse"])?$_POST["priv_strasse"]:""); 88 $add = $conn->QMagic(isset($_POST["priv_zusatz"])?$_POST["priv_zusatz"]:""); 89 $zip = $conn->QMagic(isset($_POST["priv_plz"])?$_POST["priv_plz"]:""); 90 $city = $conn->QMagic(isset($_POST["priv_ort"])?$_POST["priv_ort"]:""); 91 $state = $conn->QMagic(isset($_POST["priv_state"])?$_POST["priv_state"]:""); 92 $country = $conn->QMagic(isset($_POST["priv_country"])?$_POST["priv_country"]:""); 93 $region = $conn->QMagic(isset($_POST["priv_region"])?$_POST["priv_region"]:""); 94 95 $priv_phone = $conn->QMagic(isset($_POST["telefon_privat"])?$_POST["telefon_privat"]:""); 96 $fax = $conn->QMagic(isset($_POST["telefax"])?$_POST["telefax"]:""); 97 $email = $conn->QMagic(isset($_POST["email"])?$_POST["email"]:""); 98 $email2 = $conn->QMagic(isset($_POST["email2"])?$_POST["email2"]:""); 99 $email3 = $conn->QMagic(isset($_POST["email3"])?$_POST["email3"]:""); 100 $comp_phone = $conn->QMagic(isset($_POST["telefon_firma"])?$_POST["telefon_firma"]:""); 101 $mobile = $conn->QMagic(isset($_POST["telefon_mobil"])?$_POST["telefon_mobil"]:""); 102 $url = $conn->QMagic(isset($_POST["url"])?$_POST["url"]:""); 103 104 $function = $conn->QMagic(isset($_POST["function"])?$_POST["function"]:""); 105 if(isset($_POST['setbirthday']) and (int) $_POST['setbirthday'] == 1){ 106 $bday = isset($_POST["birthdayDay"])?(int) $_POST["birthdayDay"]:0; 107 $bmonth = isset($_POST["birthdayMonth"])?(int) $_POST["birthdayMonth"]:0; 108 $byear = isset($_POST["birthdayYear"])?(int) $_POST["birthdayYear"]:0; 109 $bday = $conn->DBDate(sprintf("%04d-%02d-%02d",$byear,$bmonth,$bday)); 110 } 111 else{ 112 $bday = 'null'; 113 } 114 $note = $conn->QMagic(isset($_POST["bemerkung"])?$_POST["bemerkung"]:""); 115 $pubkey = $conn->QMagic(isset($_POST["pubkey"])?$_POST["pubkey"]:""); 116 $group = isset($_POST["_group"])?(int) $_POST["_group"]:0; 117 $public = isset($_POST["public"])?(int) $_POST["public"]:0; 118 119 $company = isset($_POST["_company"])?(int) $_POST["_company"]:0; 120 $newcomp = isset($_POST["newcomp"])?$_POST["newcomp"]:""; 121 if($company==0 && $newcomp!=''){ 122 $company = Company::opCreate(array('name1' => $newcomp)); 123 } 124 125 $sql="INSERT INTO mgw_contacts (id, title, honorific_prefix, firstname, name_add, nickname, lastname, name_suffix, priv_street, priv_additional, priv_zip, priv_city, priv_state, priv_countrycode, priv_region, priv_telefon, priv_fax, email, email2, email3, tel_company, tel_mobile, url, function, birthday, note, publicKey, companyid, groupid, ispublic, owner, lu_user, lu_date) VALUES ($id, $title, $honpref, $firstname, $name_add, $nickname, $lastname, $name_suffix, $street, $add, $zip, $city, $state, $country, $region, $priv_phone, $fax, $email, $email2, $email3, $comp_phone, $mobile, $url, $function, $bday, $note, $pubkey, $company, $group, $public, ".$_SESSION["MGW"]->userid.", ".$_SESSION["MGW"]->userid.", ".$conn->DBTimeStamp(time()).")"; 126 127 if(!$conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 128 129 if($_POST['_company'] != $company){ 130 Company::viewEditForm($company); 131 Company::display('contact_comp_edit.tpl'); 132 exit(); 133 } 134 else return true; 135 } 136 137 // ================================================= 138 // update item 139 // ================================================= 140 function opUpdate(){ 141 global $conn; 142 143 if(isset($_POST["id"])) 144 $id = (int) $_POST["id"]; 145 else 146 return false; 147 148 $sql="SELECT owner FROM mgw_contacts WHERE id=$id"; 149 if(!$res = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 150 $row = $res->FetchRow(); 151 152 if($row['owner'] == $_SESSION["MGW"]->userid) 153 queryRights2('root_modules_contact_contact_modify'); 154 else 155 queryRights2('root_modules_contact_contact_modifyothers'); 156 157 $title = $conn->QMagic(isset($_POST["title"])?$_POST["title"]:""); 158 $honpref = $conn->QMagic(isset($_POST["honpref"])?$_POST["honpref"]:""); 159 $firstname = $conn->QMagic(isset($_POST["firstname"])?$_POST["firstname"]:""); 160 $name_add = $conn->QMagic(isset($_POST["addname"])?$_POST["addname"]:""); 161 $nickname = $conn->QMagic(isset($_POST["nickname"])?$_POST["nickname"]:""); 162 $lastname = $conn->QMagic(isset($_POST["lastname"])?$_POST["lastname"]:""); 163 $name_suffix = $conn->QMagic(isset($_POST["namesuffix"])?$_POST["namesuffix"]:""); 164 165 $street = $conn->QMagic(isset($_POST["priv_strasse"])?$_POST["priv_strasse"]:""); 166 $add = $conn->QMagic(isset($_POST["priv_zusatz"])?$_POST["priv_zusatz"]:""); 167 $zip = $conn->QMagic(isset($_POST["priv_plz"])?$_POST["priv_plz"]:""); 168 $city = $conn->QMagic(isset($_POST["priv_ort"])?$_POST["priv_ort"]:""); 169 $state = $conn->QMagic(isset($_POST["priv_state"])?$_POST["priv_state"]:""); 170 $country = $conn->QMagic(isset($_POST["priv_country"])?$_POST["priv_country"]:""); 171 $region = $conn->QMagic(isset($_POST["priv_region"])?$_POST["priv_region"]:""); 172 173 $priv_phone = $conn->QMagic(isset($_POST["telefon_privat"])?$_POST["telefon_privat"]:""); 174 $fax = $conn->QMagic(isset($_POST["telefax"])?$_POST["telefax"]:""); 175 $email = $conn->QMagic(isset($_POST["email"])?$_POST["email"]:""); 176 $email2 = $conn->QMagic(isset($_POST["email2"])?$_POST["email2"]:""); 177 $email3 = $conn->QMagic(isset($_POST["email3"])?$_POST["email3"]:""); 178 $comp_phone = $conn->QMagic(isset($_POST["telefon_firma"])?$_POST["telefon_firma"]:""); 179 $mobile = $conn->QMagic(isset($_POST["telefon_mobil"])?$_POST["telefon_mobil"]:""); 180 $url = $conn->QMagic(isset($_POST["url"])?$_POST["url"]:""); 181 182 $function = $conn->QMagic(isset($_POST["function"])?$_POST["function"]:""); 183 if(isset($_POST['setbirthday']) and (int) $_POST['setbirthday'] == 1){ 184 $bday = (int) $_POST["birthdayDay"]; 185 $bmonth = (int) $_POST["birthdayMonth"]; 186 $byear = (int) $_POST["birthdayYear"]; 187 $bday = $conn->DBDate(sprintf("%04d-%02d-%02d",$byear,$bmonth,$bday)); 188 } 189 else{ 190 $bday = 'null'; 191 } 192 $note = $conn->QMagic(isset($_POST["bemerkung"])?$_POST["bemerkung"]:""); 193 $pubkey = $conn->QMagic(isset($_POST["pubkey"])?$_POST["pubkey"]:""); 194 $group = isset($_POST["_group"])?(int) $_POST["_group"]:0; 195 196 $public = isset($_POST["public"])?(int) $_POST["public"]:0; 197 198 $company = isset($_POST["_company"])?(int) $_POST["_company"]:0; 199 $newcomp = isset($_POST["newcomp"])?$_POST["newcomp"]:""; 200 if($company==0 && $newcomp!=''){ 201 $company = Company::opCreate(array('name1' => $newcomp)); 202 } 203 204 $sql="UPDATE mgw_contacts SET title=$title, honorific_prefix=$honpref, firstname=$firstname, name_add=$name_add, nickname=$nickname, lastname=$lastname, name_suffix=$name_suffix, priv_street=$street, priv_additional=$add, priv_zip=$zip, priv_city=$city, priv_state=$state, priv_countrycode=$country, priv_region=$region, priv_telefon=$priv_phone, priv_fax=$fax, email=$email, email2=$email2, email3=$email3, tel_company=$comp_phone, tel_mobile=$mobile, url=$url, function=$function, birthday=$bday, note=$note, publicKey=$pubkey, companyid=$company, groupid=$group, ispublic=$public, lu_user=".$_SESSION["MGW"]->userid.", lu_date=".$conn->DBTimeStamp(time())." WHERE (ispublic=1 or owner=".$_SESSION["MGW"]->userid.") and id=$id"; 205 206 if(!$conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 207 208 if($_POST['_company'] != $company){ 209 Company::viewEditForm($company); 210 exit(); 211 } 212 else return true; 213 } 214 215 function opDelete($id){ 216 global $conn; 217 218 $sql="SELECT owner FROM mgw_contacts WHERE id=$id"; 219 if(!$res = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 220 $row = $res->FetchRow(); 221 if($row['owner'] == $_SESSION["MGW"]->userid) 222 queryRights2('root_modules_contact_contact_delete'); 223 else 224 queryRights2('root_modules_contact_contact_deleteothers'); 225 226 $sql = "DELETE FROM mgw_contacts WHERE (ispublic=1 or owner=".$_SESSION["MGW"]->userid.") and id=".(int)$id; 227 if(!$conn->Execute($sql)) die(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 228 return true; 229 } 230 231 function viewDelete($id){ 232 global $smarty, $conn, $appconf; 233 234 $sql = "SELECT * FROM mgw_contacts WHERE (ispublic=1 or owner=".$_SESSION["MGW"]->userid.") and id=".(int)$id; 235 if(!$res = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 236 $row = $res->FetchRow(); 237 238 if($row['owner'] == $_SESSION["MGW"]->userid) 239 queryRights2('root_modules_contact_contact_delete'); 240 else 241 queryRights2('root_modules_contact_contact_deleteothers'); 242 243 $smarty->assign("menuid", "1"); 244 $smarty->assign("itemid", $id); 245 $smarty->assign("parms", str_replace("delete","list",$_SERVER["QUERY_STRING"])); 246 $smarty->assign("reallydeleteitem", Lang::getLanguageString("reallydelcontact")); 247 $smarty->assign("deleteheader", Lang::getLanguageString("deletecontacth")); 248 $smarty->assign("deletedetail1", $row["lastname"].", " .$row["firstname"]); 249 $smarty->assign("deletedetail2", $row["priv_street"]); 250 $smarty->assign("deletedetail3", $row["priv_city"]); 251 $smarty->assign("suclass", "submit"); 252 return true; 253 } 254 255 // ================================================= 256 // new item form 257 // ================================================= 258 function viewNewForm(){ 259 global $conn, $smarty; 260 queryRights2('root_modules_contact_contact_create'); 261 262 include(INCLUDEPATH . "mSelectBox.class.php"); 263 264 $sb = new mSelectBox("bday"); 265 $smarty->assign("bday", $sb->getSB_Day(0, true)); 266 267 $sb2 = new mSelectBox("bmonth"); 268 $smarty->assign("bmonth", $sb2->getSB_Month(0, true)); 269 270 $sb3 = new mSelectBox("byear"); 271 $smarty->assign("byear", $sb3->getSB_Year(1920, date("Y"), 0, true)); 272 273 $sb4 = new mSelectBox("title"); 274 $smarty->assign("title", $sb4->getSB_Title()); 275 276 $sb5 = new mSelectBox("_company"); 277 $sb5->setContentType("sql"); 278 $sb5->setSQLvalue("id"); 279 $sb5->setSQLcontent("name1"); 280 $sb5->addContent("SELECT * FROM mgw_companies WHERE (ispublic=1 or owner=".$_SESSION["MGW"]->userid.") ORDER BY name1"); 281 $sb5->addOption("0", Lang::getLanguageString("chosecompanytext"), "pre"); 282 $smarty->assign("companysb", $sb5->draw()); 283 284 $sb6 = new mSelectBox("_group"); 285 $sb6->setContentType("sql"); 286 $sb6->setSQLvalue("id"); 287 $sb6->setSQLcontent("name_key"); 288 $sb6->addContent("SELECT id, name_key FROM mgw_contacts_groups ORDER BY name_key"); 289 $sb6->addOption("0", Lang::getLanguageString("chosegrouptext"), "pre"); 290 $smarty->assign("groupsb", $sb6->draw()); 291 292 $smarty->assign("countrysb", createCountrySB("priv_country")); 293 $smarty->assign("npage",isset($_GET["npage"])?$_GET["npage"]:""); 294 $smarty->assign("pubcheckedyes"," checked"); 295 $smarty->assign("mode","new"); 296 $smarty->assign("suname","create"); 297 $smarty->assign("suclass","submit"); 298 299 if (isset($_GET["wm2_contact"]) and $_GET["wm2_contact"]) { 300 $wm2_td = array(); 301 302 $data = trim(str_replace(array("<",">"),array("<",">"),$_GET["wm2_contact"])); 303 if (eregi("<(.*)>",$data,$my_array) and is_array($my_array) and count($my_array)>0) { 304 $wm2_td["email"] = $my_array[1]; 305 306 $wm2_name = trim(str_replace(array("\"","'"),"",strip_tags($data))); 307 $wm2_td["lastname"] = $wm2_name; 308 309 if (strlen($wm2_name)>2 and strpos($wm2_name,",")>0) { 310 $wm2_td["firstname"] = trim(substr($wm2_name,strpos($wm2_name,",")+1)); 311 $wm2_td["lastname"] = trim(substr($wm2_name,0,strpos($wm2_name,","))); 312 } elseif (strlen($wm2_name)>2 and strpos($wm2_name," ")>0) { 313 $wm2_td["firstname"] = trim(substr($wm2_name,0,strrpos($wm2_name," "))); 314 $wm2_td["lastname"] = trim(substr($wm2_name,strrpos($wm2_name," ")+1)); 315 } 316 } elseif (eregi("\"(.*) (.*)\" (.*)",$data,$my_array) and is_array($my_array) and count($my_array)>2) { 317 if ($my_array[1][0]=="'") { 318 $wm2_td["lastname"] = substr($my_array[1],1); 319 $wm2_td["firstname"] = substr($my_array[2],0,-1); 320 } else { 321 $wm2_td["firstname"] = $my_array[1]; 322 $wm2_td["lastname"] = $my_array[2]; 323 } 324 $wm2_td["email"] = $my_array[3]; 325 } elseif (eregi("(.*) \\((.*) (.*)\\)",$data,$my_array) and is_array($my_array) and count($my_array)>2) { 326 $wm2_td["lastname"] = $my_array[3]; 327 $wm2_td["firstname"] = $my_array[2]; 328 $wm2_td["email"] = $my_array[1]; 329 } else { 330 if (!strpos($data,"@")) { 331 $wm2_td["lastname"] = $data; 332 } else { 333 $wm2_td["email"] = $data; 334 } 335 } 336 $smarty->assign("td", $wm2_td); 337 } 338 339 return true; 340 } 341 342 // ================================================= 343 // edit item form 344 // ================================================= 345 function viewEditForm($id){ 346 global $conn, $smarty; 347 348 $sql="SELECT owner FROM mgw_contacts WHERE id=$id"; 349 if(!$res = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 350 $row = $res->FetchRow(); 351 352 if($row['owner'] == $_SESSION["MGW"]->userid) 353 queryRights2('root_modules_contact_contact_modify'); 354 else 355 queryRights2('root_modules_contact_contact_modifyothers'); 356 357 include(INCLUDEPATH . "mSelectBox.class.php"); 358 $sql = "SELECT * FROM mgw_contacts WHERE (ispublic=1 or owner=".$_SESSION["MGW"]->userid.") and id=".(int)$id; 359 360 if(!$res = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 361 $row = $res->FetchRow(); 362 363 $row['birthday'] = $conn->UnixDate($row['birthday']); 364 $smarty->assign('setbirthday', (!$row['birthday']) ? '' : 'checked'); 365 366 $sb4 = new mSelectBox("title"); 367 $smarty->assign("title", $sb4->getSB_Title($row["title"])); 368 369 $sb5 = new mSelectBox("_company"); 370 $sb5->setContentType("sql"); 371 $sb5->setSQLvalue("id"); 372 $sb5->setSQLcontent("name1"); 373 $sb5->addContent("SELECT * FROM mgw_companies WHERE (ispublic=1 or owner=".$_SESSION["MGW"]->userid.") ORDER BY name1"); 374 $sb5->addOption("0", Lang::getLanguageString("nocompany"), "pre"); 375 $smarty->assign("companysb", $sb5->draw($row["companyid"])); 376 377 $sb6 = new mSelectBox("_group"); 378 $sb6->setContentType("sql"); 379 $sb6->setSQLvalue("id"); 380 $sb6->setSQLcontent("name_key"); 381 $sb6->addContent("SELECT id, name_key FROM mgw_contacts_groups ORDER BY name_key"); 382 $sb6->addOption("0", Lang::getLanguageString("chosegrouptext"), "pre"); 383 $smarty->assign("groupsb", $sb6->draw($row["groupid"])); 384 385 $smarty->assign("countrysb", createCountrySB("priv_country", $row["priv_countrycode"])); 386 387 $smarty->assign("list", isset($_GET["list"])?$_GET["list"]:""); 388 $smarty->assign("npage",isset($_GET["npage"])?$_GET["npage"]:0); 389 $smarty->assign("searchterm", isset($_GET["searchterm"])?$_GET["searchterm"]:""); 390 $smarty->assign("itemid", $id); 391 392 $smarty->assign("td", $row); 393 $smarty->assign("myurl", $row["url"]); 394 $smarty->assign("suname","edit"); 395 $smarty->assign("suclass","submit"); 396 $smarty->assign("mode","edit"); 397 398 if($row["ispublic"]=="1") { 399 $pcy = " checked"; 400 $pcn = ""; 401 } 402 else { 403 $pcy = ""; 404 $pcn = " checked"; 405 } 406 $smarty->assign("pubcheckedyes",$pcy); 407 $smarty->assign("pubcheckedno",$pcn); 408 409 $smarty->assign("editcontact", Lang::getParmLang(Lang::getLanguageString("editcontact"), array($row["lastname"] . ", " . $row["firstname"]))); 410 411 return true; 412 } 413 414 // ================================================= 415 // detail view 416 // ================================================= 417 function viewDetails($id){ 418 global $conn, $appconf, $smarty; 419 include(INCLUDEPATH . "mSelectBox.class.php"); 420 421 $sql = "SELECT a.*, b.id, b.name_key AS groupname FROM mgw_contacts a LEFT JOIN mgw_contacts_groups b ON a.groupid = b.id WHERE (a.ispublic=1 or a.owner=".$_SESSION["MGW"]->userid.") and a.id=".(int)$id; 422 if(($row = $conn->GetRow($sql)) === false) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 423 424 // modify only for user with appropriate rights 425 if((queryRights2_bool('root_modules_contact_contact_modify') && $row["owner"] == $_SESSION["MGW"]->userid) || 426 (queryRights2_bool('root_modules_contact_contact_modifyothers') && $row["owner"] != $_SESSION["MGW"]->userid)) 427 $smarty->assign("maymod","yes"); 428 else 429 $smarty->assign("maymod","no"); 430 431 // delete only for user with appropriate rights 432 if((queryRights2_bool('root_modules_contact_contact_delete') && $row["owner"] == $_SESSION["MGW"]->userid) || 433 (queryRights2_bool('root_modules_contact_contact_deleteothers') && $row["owner"] != $_SESSION["MGW"]->userid)) 434 $smarty->assign("maydel","yes"); 435 else 436 $smarty->assign("maydel","no"); 437 438 $sql2 = "SELECT name AS country FROM mgw_countries WHERE code='".$row['priv_countrycode']."'"; 439 if(($row2 = $conn->GetRow($sql2)) === false) exit(showSQLerror($sql2, $conn->ErrorMsg(), __LINE__, __FILE__)); 440 $row["priv_country"] = $row2['country']; 441 442 $sql3 = "SELECT name1, telephone, email AS email_company FROM mgw_companies WHERE 443(ispublic=1 or owner=".$_SESSION["MGW"]->userid.") and id=".(int)$row['companyid']; 444 if(($row3 = $conn->GetRow($sql3)) === false) exit(showSQLerror($sql3, $conn->ErrorMsg(), __LINE__, __FILE__)); 445 $row = array_merge($row, $row3); 446 447 $row['title'] = Lang::getLanguageString($row['title']); 448 449 $row["birthday"] = $conn->UnixDate($row["birthday"]); 450 451 $row["note"] = nl2br($row["note"]); 452 $row["publicKey"] = nl2br($row["publicKey"]); 453 454 $row["email"] = linkEmail($row["email"]); 455 $row["email2"] = linkEmail($row["email2"]); 456 $row["email3"] = linkEmail($row["email3"]); 457 458 if ($row["tel_company"] == "") $row["tel_company"] = $row["telephone"]; 459 if ($row["email"] == "") $row["email"] = $row["email_company"]; 460 461 $smarty->assign("usedialer", $_SESSION['MGW']->settings['use_dialer']); 462 $smarty->assign("sort", isset($_GET["sort"])?$_GET["sort"]:""); 463 $smarty->assign("list", isset($_GET["list"])?$_GET["list"]:""); 464 $smarty->assign("searchterm", isset($_GET["searchterm"])?$_GET["searchterm"]:""); 465 $smarty->assign("npage", isset($_GET["npage"])?$_GET["npage"]:""); 466 $smarty->assign("id", $id); 467 $smarty->assign("td", $row); 468 $smarty->assign("suname","edit"); 469 $smarty->assign("suvalue","Speichern"); 470 $smarty->assign("suclass","submit"); 471 $smarty->assign("contentheader", Lang::getLanguageString("details")); 472 return true; 473 } 474 475 // ================================================= 476 // vCard import 477 // ================================================= 478 function viewCardImport(){ 479 global $smarty; 480 include(INCLUDEPATH . "mSelectBox.class.php"); 481 queryRights2('root_modules_contact_contact_create'); 482 483 $smarty->assign("suvalue",Lang::getLanguageString("import")); 484 $smarty->assign("suname","import"); 485 $smarty->assign("suclass","submit"); 486 487 return true; 488 } 489 490 function opCardImport($userfile){ 491 global $conn; 492 include_once(INCLUDEPATH . "vcard/mgw_Contact_Vcard_Parse.php"); 493 queryRights2('root_modules_contact_contact_create'); 494 495 if (is_uploaded_file($userfile["tmp_name"])) { 496 $tmpfile = CACHE_FOLDER.basename($userfile["tmp_name"]); 497 move_uploaded_file($userfile["tmp_name"], $tmpfile); 498 499 $vcard = new mgw_Contact_Vcard_Parse(); 500 $cards = $vcard->fromFile($tmpfile); 501 unlink($tmpfile); 502 // now loop through the data 503 $counter = 0; 504 for($vccount=0; $vccount<count($cards); $vccount++){ 505 $card = $cards[$vccount]; 506 507 if($vcard->getOrg($card) != ''){ 508 // check if we have a matching company 509 $sql = "SELECT id FROM mgw_companies WHERE (ispublic=1 or owner=".$_SESSION["MGW"]->userid.") and name1=".$conn->quote($vcard->getOrg($card))." AND name2=".$conn->quote($vcard->getSubOrg($card)); 510 $row = $conn->GetRow($sql); 511 if(is_array($row) && (count($row) > 0)){ 512 $companyid = $row['id']; 513 } 514 else{ 515 516 $sql="INSERT INTO mgw_companies (id, name1, name2, street, additional, zip, city, state, ispublic, owner, lu_user, lu_date) VALUES ("; 517 518 $companyid = mgw_genID('mgw__seq_companies'); 519 $sql .= $companyid.','. 520 $conn->quote($vcard->getOrg($card)).','. 521 $conn->quote($vcard->getSubOrg($card)).','; 522 523 $cadr = $vcard->getAddress($card, 'WORK'); 524 if(is_array($cadr[0])){ 525 $sql .= 526 $conn->quote($vcard->getStreet($cadr[0])).",". 527 $conn->quote($vcard->getExtAdr($cadr[0])).",". 528 $conn->quote($vcard->getZIP($cadr[0])).",". 529 $conn->quote($vcard->getLocality($cadr[0])).",". 530 $conn->quote($vcard->getRegion($cadr[0])).",\n"; 531 } 532 else{ 533 $sql .= "'','','','','',\n"; 534 } 535 536 $sql .= (int)$_POST['ispublic'].", ".$_SESSION["MGW"]->userid.", ".$_SESSION["MGW"]->userid.", ". $conn->DBTimeStamp(time()). ")"; 537 538 if(!$conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 539 } 540 } 541 else $companyid = 'NULL'; 542 543 //insert data into db 544 $id = mgw_genID('mgw__seq_contacts'); 545 546 //title,honorific_prefix,companyid?!? 547 $sql = "INSERT INTO mgw_contacts (id, 548 name_prefix,firstname,name_add,lastname,name_suffix,nickname, 549 priv_street,priv_additional,priv_zip,priv_city,priv_region, 550 priv_telefon,priv_fax,email,email2,email3,tel_company,tel_mobile, 551 url,birthday,function,note,companyid, 552 owner,ispublic,lu_user,lu_date)"; 553 $sql .= " VALUES ($id,". 554 $conn->quote($vcard->getNamePrefixes($card)).",". 555 $conn->quote($vcard->getGivenNames($card)).",". 556 $conn->quote($vcard->getAddNames($card)).",". 557 $conn->quote($vcard->getLastNames($card)).",". 558 $conn->quote($vcard->getNameSuffixes($card)).",". 559 $conn->quote($vcard->getNicknames($card)).",\n"; 560 $adr = $vcard->getAddress($card, 'HOME'); 561 if(is_array($adr[0])){ 562 $sql .= 563 $conn->quote($vcard->getStreet($adr[0])).",". 564 $conn->quote($vcard->getExtAdr($adr[0])).",". 565 $conn->quote($vcard->getZIP($adr[0])).",". 566 $conn->quote($vcard->getLocality($adr[0])).",". 567 $conn->quote($vcard->getRegion($adr[0])).",\n"; 568 } 569 else{ 570 $sql .= "'','','','','',\n"; 571 } 572 $hp = $vcard->getPhone($card, 'HOME,VOICE'); 573 $wp = $vcard->getPhone($card, 'WORK,VOICE'); 574 $hf = $vcard->getPhone($card,'HOME,FAX'); 575 $emails = $vcard->getEmail($card); 576 $sql .= 577 $conn->quote($hp[0]).",". 578 $conn->quote($hf[0]).",". 579 $conn->quote($emails[0]).",". 580 $conn->quote($emails[1]).",". 581 $conn->quote($emails[2]).",". 582 $conn->quote($wp[0]).",\n"; 583 $mobiles = $vcard->getPhone($card,'CELL'); 584 $sql .= 585 $conn->quote($mobiles[0]).","; 586 $urls = $vcard->getURL($card); 587 $sql .= 588 $conn->quote($urls[0]).",". 589 $conn->DBDate($vcard->getBirthday($card)).",". 590 $conn->quote($vcard->getTitle($card)).",". 591 $conn->quote($vcard->getNote($card)).",$companyid,"; 592 $sql .= 593 $_SESSION['MGW']->userid.",".(int)$_POST['ispublic'].",".$_SESSION['MGW']->userid.",".$conn->DBTimeStamp(time()).")"; 594 595 if(!$conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 596 $counter++; 597 } 598 } 599 600 $GLOBALS['notify']->message(Lang::getLanguageString('importedvcards').': '.$counter, NOTIFY_SCREEN); 601 } 602 603 // ================================================= 604 // vCard export 605 // ================================================= 606 function viewCardExport($id){ 607 global $conn; 608 include_once(INCLUDEPATH . "vcard/vcard.php"); 609 queryRights2('root_modules_contact_contact_export'); 610 611 if($id == -1){ 612 $sql = "SELECT id FROM mgw_contacts WHERE owner=".$_SESSION["MGW"]->userid." OR ispublic=1 ORDER BY lastname"; 613 if(!$res = $conn->Execute($sql)) exit(showSQLError($sql, $conn->ErrorString(), __LINE__, __FILE__)); 614 while($row = $res->FetchRow()){ 615 $vcard = new VCard($row["id"]); 616 $vcstr .= $vcard->getString()."\n"; 617 unset($vcard); 618 } 619 $fname = "mgw-contacts"; 620 } 621 else{ 622 $vcard = new VCard($id); 623 $vcstr = $vcard->getString(); 624 $fname = $vcard->getLastName(); 625 } 626 627 header("Content-Type: text/x-vcard"); 628 header("Content-Length: ".strlen($vcstr)); 629 header("Content-Disposition: attachment; filename=".$fname.".vcf"); 630 header("Content-Transfer-Encoding: 7bit"); 631 header("Content-Description: vcard-export"); 632 echo $vcstr; 633 634 return true; 635 } 636 637 // ================================================= 638 // email list view 639 // ================================================= 640 function viewEmailList(){ 641 global $smarty, $conn; 642 643 $concat = $conn->Concat("a.firstname","' '","a.name_add"); 644 $sql = "SELECT a.lastname, $concat AS firstname, b.name1 FROM mgw_contacts a LEFT JOIN mgw_companies b ON a.companyid=b.id WHERE (a.ispublic=1 or a.owner=".$_SESSION["MGW"]->userid.") and a.email<>'' ORDER BY lastname"; 645 if(!$res = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 646 647 while($row = $res->FetchRow()) { 648 $smarty->append("td",$row); 649 650 // build action urls 651 $detlink = "<a href=\"javascript:setOpenerValue('" . $row[$toShowValue] . "','" . $row[$toSelectValue] . "')\" class=\"edit\">".Lang::getLanguageString("Auswahl")."</a>"; 652 $urls[] = $detlink; 653 $smarty->assign('urls', $urls); 654 } 655 656 $smarty->assign("fieldname", $fieldName); 657 $smarty->assign('at', alphabet_table(session_id())); 658 659 return true; 660 } 661 662 // ================================================= 663 // PDF export 664 // ================================================= 665 function viewPDFExport(){ 666 global $smarty; 667 include(INCLUDEPATH . "mSelectBox.class.php"); 668 queryRights2('root_modules_contact_contact_export'); 669 670 $sb1 = new mSelectBox("_company"); 671 $sb1->setMultiple(true); 672 $sb1->setContentType("sql"); 673 $sb1->setSQLvalue("id"); 674 $sb1->setSQLcontent("name1"); 675 $sb1->addContent("SELECT * FROM mgw_companies WHERE (ispublic=1 or owner=".$_SESSION["MGW"]->userid.") ORDER BY name1"); 676 $sb1->setHeight(8); 677 $smarty->assign("companysb", $sb1->draw()); 678 679 $sb2 = new mSelectBox("_lang"); 680 $sb2->setContentType("sql"); 681 $sb2->setSQLvalue("langcode"); 682 $sb2->setSQLcontent("description"); 683 $sb2->addContent("SELECT * FROM mgw_languages ORDER BY lu_date"); 684 $smarty->assign("langsb",$sb2->draw($_SESSION["MGW"]->spkz)); 685 686 $smarty->assign("suname","print"); 687 $smarty->assign("suclass","submit"); 688 $smarty->assign("cmpallcheck", "checked"); 689 $smarty->assign("cmpsavcheck", "checked"); 690 691 return true; 692 } 693 694 function opPDFExport(){ 695 global $conn, $appconf; 696 define("FPDF_FONTPATH", INCLUDEPATH . "fpdf/font/"); 697 include_once(INCLUDEPATH . "fpdf/fpdf.php"); 698 include_once(ROOTPATH . "/modules/contact/inc/pdf.class.php"); 699 queryRights2('root_modules_contact_contact_export'); 700 701 $pdf=new PDF("L"); 702 $pdf->hashmaploc = Lang::setLocaledText(isset($_POST["_lang"])?str_replace(array("\\","/"),"",$_POST["_lang"]):"", "contact"); 703 $pdf->Open(); 704 $pdf->SetAuthor($_SESSION["MGW"]->fullusername); 705 $pdf->SetTitle(Lang::getLanguageString("pdftitle")); 706 $pdf->SetCreator("moregroupware"); 707 $pdf->AliasNbPages(); 708 709 if(isset($_POST["chosecmp"]) and $_POST["chosecmp"] == "multiple"){ 710 $pdf->SetSubject(Lang::getLanguageString("multiplecompanies")); 711 $_company = $_POST["_company"]; 712 if(count($_company) > 0){ 713 for($i=0;$i<count($_company);$i++) { //parse all the companies selected 714 $sql = "SELECT a.*, b.name1, b.telephone, b.url AS company_url FROM mgw_contacts a, mgw_companies b WHERE (a.ispublic=1 OR a.owner=".$_SESSION["MGW"]->userid.") AND (b.ispublic=1 OR b.owner=".$_SESSION["MGW"]->userid.") AND a.companyid=b.id AND a.companyid=".(int)$_company[$i]." ORDER BY a.lastname"; 715 if(!$res = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 716 $pdf->Body($res); 717 } 718 } 719 else redirect("index.php?view=pdfexport&".SID); 720 } 721 elseif(isset($_POST["chosecmp"]) and $_POST["chosecmp"] == "all"){ 722 $pdf->SetSubject(Lang::getLanguageString("chosecompanyalltext")); 723 //select all companies 724 $sql = "SELECT DISTINCT b.id FROM mgw_companies b WHERE (b.ispublic=1 OR b.owner=".$_SESSION["MGW"]->userid.")"; 725 726 if(!$res2 = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 727 while($row = $res2->FetchRow()) { 728 $sql = "SELECT DISTINCT a.*, b.name1, b.telephone, b.url AS company_url FROM mgw_contacts a, mgw_companies b WHERE (a.ispublic=1 OR a.owner=".$_SESSION["MGW"]->userid.") AND (b.ispublic=1 OR b.owner=".$_SESSION["MGW"]->userid.") AND a.companyid=b.id AND a.companyid=".$row["id"]." ORDER BY a.lastname"; 729 730 if(!$res = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 731 $pdf->Body($res); 732 } 733 } 734 elseif(isset($_POST["chosecmp"]) and $_POST["chosecmp"] == "nocompany"){ 735 $pdf->SetSubject(Lang::getLanguageString("chosenocompanytext")); 736 737 $sql = "SELECT DISTINCT * FROM mgw_contacts WHERE (ispublic=1 OR owner=".$_SESSION["MGW"]->userid.") and (companyid=0 OR companyid IS NULL) ORDER BY lastname"; 738 if(!$res = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 739 $pdf->Body($res); 740 } 741 else{ 742 $pdf->SetSubject(Lang::getLanguageString("choseallcontactstext")); 743 744 $sql = "SELECT DISTINCT * FROM mgw_contacts WHERE (ispublic=1 OR owner=".$_SESSION["MGW"]->userid.") ORDER BY lastname"; 745 if(!$res = $conn->Execute($sql)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 746 $pdf->Body($res); 747 } 748 749 $pdf->Close(); 750 if(isset($_POST["chosesav"]) and $_POST["chosesav"] == "saveas") $pdf->output($_SESSION["MGW"]->username .".pdf",true); 751 else $pdf->output(); 752 753 return true; 754 } 755 756 // ================================================= 757 // list view 758 // ================================================= 759 function viewList(){ 760 global $conn, $smarty; 761 include(INCLUDEPATH."mSelectBox.class.php"); 762 763 if(isset($_GET["sort"])){ 764 if($_GET["sort"] == $_SESSION["contact"]["person"]["prevorderby"]){ 765 $_SESSION["contact"]["person"]["sort_order"] = ($_SESSION["contact"]["person"]["sort_order"] == "DESC") ? "ASC" : "DESC"; 766 } 767 else{ 768 $_SESSION["contact"]["person"]["sort_order"] = 'ASC'; 769 } 770 $_SESSION["contact"]["person"]["prevorderby"] = $_GET["sort"]; 771 if ($_GET["sort"] == "name1") { $prefixDB = 'b.'; } else { $prefixDB = 'a.'; } 772 $_SESSION["contact"]["person"]["sort_by"] = $prefixDB.$_GET["sort"]; 773 } 774 elseif(!isset($_SESSION["contact"]["person"]["sort_by"])){ 775 $_SESSION["contact"]["person"]["sort_by"] = ($_SESSION['MGW']->settings['name_display'][0] == 'lastfirst') ? 'a.lastname' : 'a.firstname'; 776 $_SESSION["contact"]["person"]["sort_order"] = 'ASC'; 777 } 778 779 $searchterm = (isset($_POST["searchterm"])) ? $_POST["searchterm"] : (isset($_GET["searchterm"])?$_GET["searchterm"]:""); 780 $qsearchterm = $conn->QMagic('%'.$searchterm.'%'); 781 $list = (isset($_GET["list"])) ? $_GET["list"] : ""; 782 $compid = isset($_GET["compid"])?(int)$_GET["compid"]:0; 783 784// if(isset($_POST['groupsearch'])){ 785 if(isset($_POST['search'])){ 786 if($_POST['_group']!='*'){ 787 $_SESSION['contact']['groupsql'] = "AND (b.groupid=".(int)$_POST["_group"]." OR a.groupid=".(int)$_POST["_group"].")"; 788 $_SESSION['contact']['actgroup'] = (int)$_POST["_group"]; 789 } 790 else{ 791 $_SESSION['contact']['groupsql'] = ''; 792 $_SESSION['contact']['actgroup'] = ''; 793 } 794 } 795 elseif(!isset($_SESSION['contact']['groupsql'])){ 796 $_SESSION['contact']['groupsql'] = ''; 797 $_SESSION['contact']['actgroup'] = ''; 798 } 799 800 $groupsql = $_SESSION['contact']['groupsql']; 801 802 $icons = getIconStrings(); 803 $smarty->assign("prevsym", $icons["prev"]); 804 $smarty->assign("nextsym", $icons["next"]); 805 806 // default contentheader 807 $cheader = Lang::getLanguageString("overview_contacts"); 808 if( 809 ( isset($_POST["op"]) and $_POST["op"] == "qsearch" and ( isset($_POST["search"]) or !empty($_POST["searchterm"])) ) 810 || ( isset($_GET["searchterm"]) and $_GET["searchterm"] != "" ) 811 ) 812 813 { 814 $sql = "SELECT DISTINCT a.*, a.owner as c_owner, b.owner, b.name1, b.telephone, b.email AS email_company FROM mgw_contacts a LEFT JOIN mgw_companies b ON a.companyid=b.id WHERE ("; 815 $sql .= "(a.ispublic=1 ".$groupsql.") OR (a.ispublic=0 ".$groupsql." AND a.owner=".$_SESSION["MGW"]->userid . "))"; 816 817 if (!empty($searchterm)) { 818 $sql .= " AND ("; 819 $qsearchterm = $conn->QMagic('%'.$searchterm.'%'); 820 for($i=0;$i<count($_SESSION["MGW"]->settings["quicksearchmethod"]);$i++) { 821 $sql .= "(UPPER(".$_SESSION["MGW"]->settings["quicksearchmethod"][$i] . ") LIKE UPPER($qsearchterm) AND a.ispublic = 1) OR ". 822 "(UPPER(".$_SESSION["MGW"]->settings["quicksearchmethod"][$i] . ") LIKE UPPER($qsearchterm) AND a.ispublic = 0 AND a.owner=".$_SESSION["MGW"]->userid.")"; 823 824 if(count($_SESSION["MGW"]->settings["quicksearchmethod"])-1 != $i) 825 $sql .= " OR "; 826 } 827 $sql .= ")"; 828 } 829 830 $sql .= " ORDER BY ".$_SESSION["contact"]["person"]["sort_by"].' '.$_SESSION["contact"]["person"]["sort_order"]; 831 $sql = str_replace("mgw_contacts.","a.",$sql); 832 $sql = str_replace("mgw_companies.","b.",$sql); 833 834 $cheader = Lang::getParmLang(Lang::getLanguageString("overview_contacts_by_qsearch"), array($searchterm)); 835 } 836 elseif(isset($_GET["list"]) and $_GET["list"] != "") { 837 $qsearchterm = $conn->QMagic($list."%"); 838 $sql = "SELECT a.*, b.name1, b.telephone, a.owner as c_owner, b.owner, b.email AS email_company 839 FROM mgw_contacts a LEFT JOIN mgw_companies b ON a.companyid=b.id 840 WHERE ((UPPER(a.lastname) LIKE UPPER(".$qsearchterm.") 841 AND a.ispublic=1) OR (UPPER(a.lastname) LIKE UPPER(".$qsearchterm.") 842 AND a.ispublic=0 AND a.owner=".$_SESSION["MGW"]->userid.")) $groupsql 843 ORDER BY ".$_SESSION["contact"]["person"]["sort_by"].' '.$_SESSION["contact"]["person"]["sort_order"]; 844 $cheader = Lang::getParmLang(Lang::getLanguageString("overview_contacts_by_a"), array($list)); 845 } 846 elseif($compid != 0) { 847 $sql = "SELECT a.*, b.name1, b.telephone, a.owner as c_owner, b.owner, b.email AS email_company FROM mgw_contacts a LEFT JOIN mgw_companies b ON a.companyid=b.id WHERE (a.ispublic=1 AND b.id = $compid $groupsql) OR (a.ispublic=0 AND a.owner=".$_SESSION["MGW"]->userid." AND b.id = $compid $groupsql) ORDER BY ".$_SESSION["contact"]["person"]["sort_by"].' '.$_SESSION["contact"]["person"]["sort_order"]; 848 } 849 elseif(isset($_GET["sort"]) and $_GET["sort"] == "bycompany") { 850 $sql = "SELECT a.*, b.name1, b.telephone, a.owner as c_owner,b.owner, b.email AS email_company FROM mgw_contacts a LEFT JOIN mgw_companies b ON a.companyid=b.id WHERE (a.ispublic=1 $groupsql) OR (a.ispublic=0 $groupsql AND a.owner=".$_SESSION["MGW"]->userid.") ORDER BY ".$_SESSION["contact"]["person"]["sort_by"].' '.$_SESSION["contact"]["person"]["sort_order"]; 851 } 852 else{ 853 $sql = "SELECT a.*, b.name1, b.telephone, a.owner as c_owner,b.owner, b.email AS email_company FROM mgw_contacts a LEFT JOIN mgw_companies b ON a.companyid=b.id WHERE (a.ispublic=1 $groupsql) OR (a.ispublic=0 $groupsql AND a.owner=".$_SESSION["MGW"]->userid.") ORDER BY ".$_SESSION["contact"]["person"]["sort_by"].' '.$_SESSION["contact"]["person"]["sort_order"]; 854 } 855 856 // ========== PAGING STUFF 1 ================ 857 session_register('curr_page'); 858 if (isset($_GET['npage']) || isset($_POST['npage'])){ 859 $curr_page = isset($_POST['npage']) ? $_POST['npage'] : $_GET['npage']; 860 } else { 861 $curr_page = 1; // at first page 862 } 863 // ============================================ 864 if(!$res = $conn->PageExecute($sql, $_SESSION["MGW"]->settings["list_items_number"], $curr_page)) exit(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__)); 865 866 if(isset($_GET["sort"]) and $_GET["sort"] == "bycompany") $cheader = Lang::getParmLang(Lang::getLanguageString("overview_contacts_by_comp"), array($res->Fields("name1"))); 867 868 // ========== PAGING STUFF 2 ================ 869 // if NOT on first page 870 if(!$res->AtFirstPage()) { 871 $smarty->assign("_prev", true); 872 $smarty->assign("ppage", $res->AbsolutePage() - 1); 873 } 874 875 // if NOT on last page 876 if(!$res->AtLastPage()) { 877 $smarty->assign("_next", true); 878 $smarty->assign("npage", $res->AbsolutePage() + 1); 879 } 880 // ============================================ 881 882 $counter = 0; 883 884 while($row = $res->FetchRow()) { 885 $counter++; 886 $myid = $row["id"]; 887 $rowcompid = $row["companyid"]; 888 if ($row["tel_company"] == "") $row["tel_company"] = $row["telephone"]; 889 if ($row["email"] == "") $row["email"] = $row["email_company"]; 890 $row["firstname"] = $row["firstname"]." ".$row["name_add"]; 891 892 $row['company'] = $row["name1"]; 893 if ($row["owner"]=="") $row["owner"] = $row["c_owner"]; 894 895 // create Action URLs 896 $aqlink = ""; 897 if (queryRights2_bool("root_modules_contact_crm_create")) { 898 $aqlink = "<a href=\"index.php?mod=contact&obj=crm&view=directnewform&compid=" 899 .$rowcompid."&personid=".$myid 900 ."&".SID."\">".Lang::getLanguageString('call')."</a>"; 901 } 902 $detlink = "<a href=\"index.php?mod=contact&obj=person&view=details&id=".$row['id']."&list=$list&searchterm=$searchterm&npage=$curr_page&".SID."\">".$icons["details"]."</a>"; 903 904 // modify only for user with appropriate rights 905 if((queryRights2_bool("root_modules_contact_contact_modify") && $row["owner"] == $_SESSION["MGW"]->userid) || 906 (queryRights2_bool("root_modules_contact_contact_modifyothers") && $row["owner"] != $_SESSION["MGW"]->userid)) { 907 if (!isset($action)) $action=""; 908 $editlink = "<a href=\"index.php?mod=contact&obj=person&view=editform&id=".$row['id']."&act=$action&searchterm=$searchterm&list=$list&npage=$curr_page&".SID."\">".$icons["edit"]."</a>"; 909 } 910 else { 911 $editlink = ""; 912 } 913 914 // delete only for user with appropriate rights 915 if((queryRights2_bool("root_modules_contact_contact_delete") && $row["owner"] == $_SESSION["MGW"]->userid) 916 OR (queryRights2_bool("root_modules_contact_contact_deleteothers") && $row["owner"] <> $_SESSION["MGW"]->userid)) { 917 $dellink = "<a href=\"index.php?mod=contact&obj=person&view=delete&id=$myid&act=$action&searchterm=$searchterm&list=$list&npage=$curr_page&".SID."\" class=\"delete\">".$icons["delete"]."</a>"; 918 } 919 else { 920 $dellink = ""; 921 } 922 923 $row['action'] = $detlink . "<br />" . $editlink . "<br />" . $dellink . "<br />".$aqlink."<br />" 924 .'<a href="index.php?mod=contact&view=vcardexport&id='.$row['id'].'&'.SID.'">' 925 .Lang::getLanguageString('vcf_export')."</a><br />" 926 ."<hr />". linkEmail2($row["email"])."<hr />" 927 . "<a href=\"index.php?mod=contact&obj=company&view=details&id=$rowcompid&".SID."\">". 'Company details' ."</a><br />" 928 . "<a href=\"index.php?mod=contact&obj=person&view=list&compid=$rowcompid&".SID."\">". 'Company contacts' ."</a>"; 929 930 if($row["ispublic"]==1) 931 $row['pimg'] = " "; 932 else 933 $row['pimg'] = $icons['private']; 934 935 $smarty->append("td",$row); 936 } 937 938 // ========== PAGING STUFF 3 ================== 939 // display next link when more records available 940 if($counter<>$_SESSION["MGW"]->settings["list_items_number"]) $smarty->assign("next", false); else $smarty->assign("next", true); 941 // ============================================= 942 943 if($_SESSION["MGW"]->settings["quicksearchmethod"]=="") $qsbool = false; else $qsbool = true; 944 945 $smarty->assign('groups', $conn->GetAssoc("SELECT id, name_key FROM mgw_contacts_groups ORDER by name_key")); 946 $smarty->assign("actgroup", $_SESSION['contact']['actgroup']); 947 948 $columns[]['url'] = "index.php?mod=contact&obj=person&view=list&compid=$compid&sort=ispublic"; 949 $columns[]['url'] = "index.php?mod=contact&obj=person&view=list&compid=$compid&sort=lastname"; 950 $columns[]['url'] = "index.php?mod=contact&obj=person&view=list&compid=$compid&sort=firstname"; 951 $columns[]['url'] = "index.php?mod=contact&obj=person&view=list&compid=$compid&sort=tel_company"; 952 $columns[]['url'] = "index.php?mod=contact&obj=person&view=list&compid=$compid&sort=email"; 953 $columns[]['url'] = "index.php?mod=contact&obj=person&view=list&compid=$compid&sort=name1"; 954 $smarty->assign("columns", $columns); 955 956 $smarty->assign("contentheader", $cheader); 957 $smarty->assign("qsearchon", $qsbool); 958 $smarty->assign("hascreaterights", queryRights2_bool("root_modules_contact_contact_create")); 959 $smarty->assign('compid', $compid); 960 $smarty->assign('at', alphabet_table("mod=contact&obj=person&view=list")); 961 $smarty->assign('searchterm', $searchterm); 962 $smarty->assign('list', $list); 963 $smarty->assign('namedisplay', $_SESSION['MGW']->settings['name_display']); 964 965 return true; 966 } 967 968 function display($template) { 969 global $smarty,$appconf,$myEnv; 970 if (strstr($template,$appconf["gentemplates"])) { 971 } elseif (!empty($this->templatesAreIn)) { 972 $smarty->template_dir=ROOTPATH ."/modules/" . $this->templatesAreIn . "/templates/" .$appconf["theme"] ."/" . $myEnv["output"]; 973 } 974 $smarty->display($template); 975 } 976 977} 978?> 979