You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
608 lines
18 KiB
608 lines
18 KiB
<?php
|
|
/**
|
|
* Copyright 1999 - 2004 by Gero Kohnert
|
|
*
|
|
* CVS Info: $Id: location.pinc,v 1.12 2005/01/17 05:11:26 saraj Exp $
|
|
* $Author: saraj $
|
|
*/
|
|
include_once 'company.pinc';
|
|
include_once 'department.pinc';
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
* Read all locations references of an object
|
|
*/
|
|
function read_locs (&$obj) {
|
|
global $table;
|
|
|
|
if (empty($obj->id)) return;
|
|
if ( $obj == -1 ) return;
|
|
if (! is_object($obj) ) return;
|
|
if (-1 == $obj->id) return;
|
|
if ( $obj->rl1 == true ) return;
|
|
|
|
|
|
if ( isset($obj->loc) && (count($obj->loc) > 0) ) {
|
|
return;
|
|
}
|
|
|
|
$obj->loc = array();
|
|
|
|
$q = "SELECT * FROM ". $obj->dbconn->prefix .$table['address1'][name]." WHERE adr_id = ". $obj->id;
|
|
$r = $obj->dbconn->Exec($q);
|
|
|
|
$n = $r->numrows();
|
|
$a = 0;
|
|
while ( $a < $n ) {
|
|
$l_id = $r->get($a, "loc_id");
|
|
$obj->loc[$l_id] = $r->get($a, "name");
|
|
|
|
$a++;
|
|
}
|
|
|
|
$r->free();
|
|
$obj->rl1 = true;
|
|
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* Read all locations data
|
|
*/
|
|
function read_locs_data (&$obj) {
|
|
if (empty($obj->id)) return;
|
|
if ( $obj == -1 ) return;
|
|
if (! is_object($obj) ) return;
|
|
if (-1 == $obj->id) return;
|
|
|
|
if ( $obj->rl2 == true ) {
|
|
return;
|
|
};
|
|
if ( $obj->rl1 == false ) {
|
|
read_locs($obj);
|
|
};
|
|
|
|
if ( isset($obj->location) && (count($obj->location) > 0) ) {
|
|
return;
|
|
}
|
|
|
|
|
|
$obj->location = array();
|
|
$obj->locall = array();
|
|
|
|
$x = $obj->loc;
|
|
if ( isset($x) && (count($x) > 0) ) {
|
|
foreach($x as $i => $f) {
|
|
$l = new location($obj->dbconn);
|
|
$l = $l->read($i,$l);
|
|
$l->lname = $f;
|
|
$l->adr_id = $obj->id;
|
|
$l->ref = &$obj;
|
|
if ( count($l->acl) < 1 ) {
|
|
$l->acl = $obj->acl;
|
|
}
|
|
if ( $l->see_ok() ) {
|
|
$obj->location[$i] = &$l;
|
|
} else {
|
|
unset($obj->loc[$i]);
|
|
}
|
|
# we need the hidden locations for watchlist-emails
|
|
$obj->locall[$i] = &$l;
|
|
unset($l);
|
|
}
|
|
}
|
|
$obj->rl2 = true;
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* a location part of an address
|
|
*
|
|
* @package address
|
|
* @module location
|
|
*/
|
|
class location extends tutos_base {
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
*/
|
|
function location(&$dbconn) {
|
|
global $table;
|
|
|
|
$this->init($dbconn);
|
|
|
|
$this->larray = array();
|
|
$this->larray[] = "desc1";
|
|
$this->larray[] = "city";
|
|
$this->larray[] = "zip";
|
|
$this->larray[] = "state";
|
|
$this->larray[] = "country";
|
|
$this->larray[] = "street1";
|
|
$this->larray[] = "street2";
|
|
$this->larray[] = "email_1";
|
|
$this->larray[] = "email_2";
|
|
$this->larray[] = "phone_1";
|
|
$this->larray[] = "phone_2";
|
|
$this->larray[] = "fax_1";
|
|
$this->larray[] = "acc_info1";
|
|
$this->larray[] = "acc_info2";
|
|
$this->larray[] = "acc_nr";
|
|
$this->larray[] = "customer_id";
|
|
$this->department = new department($dbconn);
|
|
$this->company = new company($dbconn);
|
|
$this->desc1 = "";
|
|
$this->city = "";
|
|
$this->zip = "";
|
|
$this->state = "";
|
|
$this->country = "";
|
|
$this->street1 = "";
|
|
$this->street2 = "";
|
|
$this->email_1 = "";
|
|
$this->email_2 = "";
|
|
$this->phone_1 = "";
|
|
$this->phone_2 = "";
|
|
$this->fax_1 = "";
|
|
$this->lname = "";
|
|
$this->acc_info1 = "";
|
|
$this->acc_info2 = "";
|
|
$this->acc_nr = "";
|
|
$this->customer_id = "";
|
|
$this->category = 2;
|
|
$this->adr_id = -1;
|
|
$this->ref = -1;
|
|
|
|
$this->tablename = $this->dbconn->prefix .$table['location'][name];
|
|
$this->tablename2 = $this->dbconn->prefix .$table['address1'][name];
|
|
}
|
|
/**
|
|
* read the refernced object
|
|
*/
|
|
function read_ref() {
|
|
if ($this->adr_id != -1) {
|
|
return;
|
|
}
|
|
if ($this->ref != -1) {
|
|
return;
|
|
}
|
|
|
|
$q = "select * from ". $this->tablename2 ." where loc_id = ". $this->id;
|
|
$r = $this->dbconn->Exec($q);
|
|
if ($r->numrows() == 1) {
|
|
$this->adr_id = $r->get(0, "adr_id");
|
|
$this->lname = $r->get(0, "name");
|
|
$this->ref = getObject($this->dbconn,$this->adr_id);
|
|
}
|
|
$r->free();
|
|
}
|
|
/**
|
|
* Return a link to this address
|
|
*/
|
|
function getLink($text = "") {
|
|
global $lang;
|
|
|
|
if (empty($this->id)) return;
|
|
if ( empty($text) ) {
|
|
$text = $this->getFullName();
|
|
}
|
|
|
|
$this->read_ref();
|
|
if ( $this->see_ok() && ($this->ref != -1)) {
|
|
return makelink($this->ref->getURL() , myentities($text) ,sprintf($lang['location'] ." %s",$this->getFullName()));
|
|
} else {
|
|
return myentities($text);
|
|
}
|
|
}
|
|
/**
|
|
* fill the object data with a given resultset
|
|
*
|
|
* @param Object $r a result set object
|
|
* @param int $pos a index in the resultset
|
|
*/
|
|
function read_result(&$r,$pos) {
|
|
global $g_hash;
|
|
|
|
foreach($this->larray as $f) {
|
|
$this->$f = $r->get($pos, $f);
|
|
if (!isset($this->$f)) {
|
|
$this->$f = "";
|
|
}
|
|
}
|
|
$this->c_id = $r->get($pos, "c_id");
|
|
$this->d_id = $r->get($pos, "d_id");
|
|
|
|
if ( !empty($this->d_id) ) {
|
|
$this->department = $this->department->read($this->d_id,$this->department);
|
|
$this->company = &$this->department->company;
|
|
}
|
|
if ( !empty($this->c_id) && ($this->c_id != -1) ) {
|
|
$this->company = $this->company->read($this->c_id,$this->company);
|
|
}
|
|
|
|
$this->category = $r->get($pos, "category");
|
|
$this->creator = getObject($this->dbconn,$r->get($pos, "creator"));
|
|
|
|
parent::read_result($r,$pos);
|
|
}
|
|
|
|
/**
|
|
* set the category
|
|
*/
|
|
function setCategory($value) {
|
|
$this->setStrField("category",$value,"AdrCategory");
|
|
}
|
|
/**
|
|
* set the lname
|
|
*/
|
|
function setLname($value) {
|
|
$this->setStrField("lname",$value,"AdrDescription");
|
|
}
|
|
/**
|
|
* set a field
|
|
*/
|
|
function setField($field,$value) {
|
|
$this->setStrField($field,$value,$field);
|
|
}
|
|
/**
|
|
* Return a URL to this location
|
|
*/
|
|
function getURL() {
|
|
$this->read_ref();
|
|
if ( $this->ref != -1 ) {
|
|
return $this->ref->getUrl();
|
|
}
|
|
return "address_select.php";
|
|
}
|
|
/**
|
|
* Return the Long Name
|
|
*/
|
|
function getFullname() {
|
|
global $lang;
|
|
|
|
$this->read_ref();
|
|
if ($this->ref != -1) {
|
|
return sprintf($this->ref->getFullName()." ".$lang['AdrLocTitle'],$this->lname);
|
|
} else {
|
|
return sprintf("??? ".$lang['AdrLocTitle'],$this->lname);
|
|
}
|
|
}
|
|
/**
|
|
* save to DB
|
|
*/
|
|
function save () {
|
|
global $current_user, $tutos,$table;
|
|
|
|
$msg = "";
|
|
|
|
$q1 = new query($this->dbconn);
|
|
$q1->setTable($this->tablename);
|
|
$q2 = new query($this->dbconn);
|
|
$q2->setTable($this->tablename2);
|
|
|
|
$i=0;
|
|
while($i < count($this->larray)) {
|
|
$f = $this->larray[$i];
|
|
$q1->addFV($f,$this->$f,"STRING",$table['location'][$f][size]);
|
|
$i++;
|
|
}
|
|
if ( is_object($this->company) && ($this->company->id != -1) ) {
|
|
$q1->addFV("c_id",$this->company,"OBJ");
|
|
} else {
|
|
$q1->addFV("c_id","null","");
|
|
}
|
|
if ( is_object($this->department) ) {
|
|
$q1->addFV("d_id",$this->department,"OBJ");
|
|
} else {
|
|
$q1->addFV("d_id","null","");
|
|
}
|
|
$q1->addFV("category",$this->category,"");
|
|
$q2->addFV("category",$this->category,"");
|
|
|
|
$q2->addFV("name",$this->lname,"STRING",$table['address1']['name'][size]);
|
|
$q2->addFV("adr_id",$this->adr_id,"");
|
|
|
|
$this->save_custom_fields($q1);
|
|
|
|
if ( $this->id < 0 ) {
|
|
#
|
|
# INSERT
|
|
#
|
|
$this->modified = array();
|
|
if ( isset($this->newid) ) {
|
|
$this->id = $this->newid;
|
|
} else {
|
|
/* Get an new ID */
|
|
$this->id = $q1->addFV("id",-1,"NEXTID");
|
|
|
|
# Defaut Access Control inheritet from parent
|
|
$this->acl = $this->ref->acl;
|
|
acl_default($this,$current_user);
|
|
|
|
$this->modified[] = array ( "field" => "created" ,
|
|
"old" => $this->getType() ,
|
|
"new" => $this->id,
|
|
"obj_id" => $this->id
|
|
);
|
|
$this->modified[] = array ( "field" => "AdrLNew" ,
|
|
"old" => "-1",
|
|
"new" => $this->id,
|
|
"obj_id" => $this->adr_id
|
|
);
|
|
}
|
|
$q2->addFV("loc_id",$this->id,"");
|
|
$q1->addFV("creator",$this->creator,"OBJ");
|
|
$q1->addFV("creation",$this->creation,"DATETIME");
|
|
$query1 = $q1->getInsert();
|
|
$query2 = $q2->getInsert();
|
|
} else {
|
|
#
|
|
# UPDATE
|
|
#
|
|
$q1->addWC("id",$this->id,"");
|
|
$q2->addWC("loc_id",$this->id,"");
|
|
$query1 = $q1->getUpdate();
|
|
$query2 = $q2->getUpdate();
|
|
}
|
|
$this->dbconn->Exec($query1);
|
|
$this->dbconn->Exec($query2);
|
|
|
|
$msg .= parent::save();
|
|
return $msg;
|
|
}
|
|
/**
|
|
* Delete a location from the DB
|
|
*/
|
|
function delete () {
|
|
$msg = "";
|
|
|
|
$this->dbconn->Lock($this->tablename);
|
|
$this->dbconn->Lock($this->tablename2);
|
|
|
|
$q = "DELETE FROM ". $this->tablename ." WHERE id = ". $this->id;
|
|
$r = $this->dbconn->Exec($q);
|
|
|
|
$q = "DELETE FROM ". $this->tablename2 ." WHERE loc_id = ". $this->id ;
|
|
$r = $this->dbconn->Exec($q);
|
|
|
|
$msg .= parent::delete();
|
|
return $msg;
|
|
}
|
|
/**
|
|
* parse XML import
|
|
*/
|
|
function parseXML ($fld,$data,$attrs) {
|
|
parent::parseXML($fld,$data,$attrs);
|
|
|
|
if ($fld == "id") {
|
|
$this->read_ref();
|
|
} else if ($fld == "lname") {
|
|
$this->setLName($data);
|
|
} else if ($fld == "category") {
|
|
$this->setCategory($data);
|
|
} else if ($fld == "company_id") {
|
|
$this->company = $this->company->read($data,$this->company);
|
|
}
|
|
foreach($this->larray as $f) {
|
|
if ($fld == $f) {
|
|
$this->setField($f,$data);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
/**
|
|
* Data of XML export
|
|
*/
|
|
function exportXML_body ($only_ids = false) {
|
|
$r = parent::exportXML_body();
|
|
if (!$only_ids) {
|
|
$r .= "<lname>". utf8_encode(htmlspecialchars($this->lname)) ."</lname>\n";
|
|
$r .= "<category>". $this->category ."</category>\n";
|
|
if ( is_object($this->company) && ($this->company->id != -1) ) {
|
|
$r .= "<company_id>". $this->company->id ."</company_id>\n";
|
|
$r .= "<company_name>".utf8_encode(htmlspecialchars($this->company->getFullName()))."</company_name>\n";
|
|
}
|
|
$i=0;
|
|
while($i < count($this->larray)) {
|
|
$f = $this->larray[$i];
|
|
$r .= "<".$f.">". utf8_encode(htmlspecialchars($this->$f)) ."</".$f.">\n";
|
|
$i++;
|
|
}
|
|
}
|
|
return $r;
|
|
}
|
|
/**
|
|
* get the type of object
|
|
*/
|
|
function gettype () {
|
|
return "location";
|
|
}
|
|
/**
|
|
* get the type id of object
|
|
*/
|
|
function gettypeid () {
|
|
return uselocation;
|
|
}
|
|
|
|
/**
|
|
* parse the input delivered by a form
|
|
*/
|
|
function parseform() {
|
|
global $lang,$gotourl;
|
|
|
|
$this->used = false;
|
|
$msg = "";
|
|
if ( !isset($_POST['category']) || empty($_POST['category']) ) {
|
|
$msg .= sprintf($lang['Err0009'],$lang['AdrCategory']) ."<br>";
|
|
} else {
|
|
$this->setCategory($_POST['category']);
|
|
$gotourl= addUrlParameter($gotourl,"category=". $this->category,true);
|
|
# $this->used = true;
|
|
}
|
|
|
|
if ( !isset($_POST['lname']) || empty($_POST['lname']) ) {
|
|
$msg .= sprintf($lang['Err0009'],$lang['AdrDescription']) ."<br>";
|
|
} else {
|
|
$this->setLname(StripSlashes($_POST['lname']));
|
|
$gotourl= addUrlParameter($gotourl,"lname=". UrlEncode(StripSlashes($this->lname)),true);
|
|
if (!empty($this->lname)) {
|
|
$this->used = true;
|
|
}
|
|
}
|
|
|
|
# Check Company
|
|
if ( !isset($_POST['c_id']) ) {
|
|
if ($this->company->getFullName() == $_POST['company']) {
|
|
$gotourl= addUrlParameter($gotourl,"cl[]=". $this->company->id,true);
|
|
} else {
|
|
$this->company = check_field(StripSlashes($_POST['company']),"company","cl","c");
|
|
}
|
|
if (isset($_POST['company']) && !empty($_POST['company'])) {
|
|
$this->used = true;
|
|
}
|
|
} else {
|
|
if ( $_POST['c_id'] != -1 ) {
|
|
$this->company = $this->company->read($_POST['c_id'],$this->company);
|
|
$gotourl= addUrlParameter($gotourl,"cl[]=". $this->company->id,true);
|
|
$this->used = true;
|
|
}
|
|
}
|
|
|
|
# Check Department
|
|
if ( !isset($_POST['d_id']) ) {
|
|
$dep_tmp=StripSlashes($_POST['department']);
|
|
if ( strlen($dep_tmp) && strstr($dep_tmp," / ") == FALSE ) {
|
|
$dep_tmp=$dep_tmp." / ".StripSlashes($_POST['company']);
|
|
}
|
|
$this->department = check_field($dep_tmp,"department","dl","d");
|
|
# $this->department = check_field(StripSlashes($_POST['department']),"department","dl","d");
|
|
} else {
|
|
if ( $_POST['d_id'] != -1 ) {
|
|
$this->department = $this->department->read($_POST['d_id'],$this->department);
|
|
$gotourl= addUrlParameter($gotourl,"dl[]=". $this->department->id,true);
|
|
}
|
|
# $this->used = true;
|
|
}
|
|
if ( is_object($this->department) ) {
|
|
$this->company = &$this->department->company;
|
|
}
|
|
|
|
foreach($this->larray as $f) {
|
|
if ( isset($_POST[$f]) ) {
|
|
$this->setField($f,StripSlashes($_POST[$f]));
|
|
$gotourl= addUrlParameter($gotourl,$f ."=". UrlEncode($this->$f),true);
|
|
if (!empty($this->$f)) {
|
|
$this->used = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( isset($_POST['cploc']) && ($_POST['cploc'] == 1) ) {
|
|
# Copy the location data from the companies location if possible
|
|
$gotourl= addUrlParameter($gotourl,"cploc=1",true);
|
|
if ( isset ($this->company->id) ) {
|
|
$this->company->read_locs_data();
|
|
if ( count($this->company->location) > 0 ) {
|
|
reset ($this->company->location);
|
|
$x = current($this->company->location);
|
|
$this->city = $x->city;
|
|
$this->state = $x->state;
|
|
$this->country = $x->country;
|
|
$this->zip = $x->zip;
|
|
$this->street1 = $x->street1;
|
|
$this->street2 = $x->street2;
|
|
}
|
|
}
|
|
}
|
|
|
|
#
|
|
# Email Verification was fetched from http://www.phpbuilder.com/snippet/detail.php?type=snippet&id=107
|
|
# (this will produce a warning only , the values are set above)
|
|
$regex = '^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,4}))$';
|
|
if ( isset($_POST['email_1']) ) {
|
|
$email_1 = trim(StripSlashes($_POST['email_1']));
|
|
if ( ($email_1 != "") && !eregi($regex,$email_1)) {
|
|
$msg .= sprintf($lang['Err0043'],myentities($email_1));
|
|
}
|
|
}
|
|
if ( isset($_POST['email_2']) ) {
|
|
$email_2 = trim(StripSlashes($_POST['email_2']));
|
|
if ( ($email_2 != "") && ! eregi($regex,$email_2)) {
|
|
$msg .= sprintf($lang['Err0043'],myentities($email_2));
|
|
}
|
|
}
|
|
return $msg;
|
|
}
|
|
/**
|
|
* a input form (used in comapny_new
|
|
*/
|
|
function inputform (&$layout) {
|
|
global $lang;
|
|
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['AdrDescription'],1,"lname");
|
|
echo " <td colspan=\"4\"><input size=\"30\" maxlength=\"30\" id=\"lname\" name=\"lname\" value=\"". myentities($this->lname) ."\" /></td>\n";
|
|
echo "</tr>\n";
|
|
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['Phone'],0,"phone_1");
|
|
echo " <td colspan=\"4\"><input size=\"30\" maxlength=\"30\" id=\"phone_1\" name=\"phone_1\" value=\"". myentities($this->phone_1) ."\" /></td>\n";
|
|
echo "</tr>\n";
|
|
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['AdrFax'],0,"fax_1");
|
|
echo " <td colspan=\"4\"><input size=\"30\" maxlength=\"30\" id=\"fax_1\" name=\"fax_1\" value=\"". myentities($this->fax_1) ."\" /></td>\n";
|
|
echo "</tr>\n";
|
|
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['AdrEmail'],0,"email_1");
|
|
echo " <td colspan=\"4\"><input size=\"30\" maxlength=\"60\" id=\"email_1\" name=\"email_1\" value=\"". myentities($this->email_1) ."\" /></td>\n";
|
|
echo "</tr>\n";
|
|
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['Street'],0,"street1");
|
|
echo " <td colspan=\"4\"><input size=\"30\" maxlength=\"30\" id=\"street1\" name=\"street1\" value=\"". myentities($this->street1) ."\" /></td>\n";
|
|
echo "</tr>\n";
|
|
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['Street'],0,"street2");
|
|
echo " <td colspan=\"4\"><input size=\"30\" maxlength=\"30\" id=\"street2\" name=\"street2\" value=\"". myentities($this->street2) ."\" /></td>\n";
|
|
echo "</tr>\n";
|
|
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['City'],0,"city");
|
|
echo " <td colspan=\"1\"><input size=\"30\" maxlength=\"30\" id=\"city\" name=\"city\" value=\"". myentities($this->city) ."\" /></td>\n";
|
|
echo $layout->showfieldc($lang['ZIP'],0,"zip");
|
|
echo " <td colspan=\"2\"><input size=\"10\" maxlength=\"10\" id=\"zip\" name=\"zip\" value=\"". myentities($this->zip) ."\" /></td>\n";
|
|
echo "</tr>\n";
|
|
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['State'],0,"state");
|
|
echo " <td colspan=\"1\"><input size=\"30\" maxlength=\"30\" id=\"state\" name=\"state\" value=\"". myentities($this->state) ."\" /></td>\n";
|
|
echo "</tr>\n";
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['Country'],0,"country");
|
|
echo " <td colspan=\"4\">\n";
|
|
SelectCntryCde("country",$this->country);
|
|
echo " </td>\n";
|
|
echo "</tr>\n";
|
|
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['acc_info1'],0,"acc_info1");
|
|
echo "<td colspan=\"4\"><input size=\"50\" maxlength=\"60\" id=\"acc_info1\" name=\"acc_info1\" value=\"". myentities($this->acc_info1) ."\" /></td>\n";
|
|
echo "</tr>\n";
|
|
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['acc_info2'],0,"acc_info2");
|
|
echo "<td colspan=\"4\"><input size=\"50\" maxlength=\"60\" id=\"acc_info2\"name=\"acc_info2\" value=\"". myentities($this->acc_info2) ."\" /></td>\n";
|
|
echo "</tr>\n";
|
|
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['acc_nr'],0,"acc_nr");
|
|
echo "<td colspan=\"4\"><input size=\"50\" maxlength=\"60\" id=\"acc_nr\" name=\"acc_nr\" value=\"". myentities($this->acc_nr) ."\" /></td>\n";
|
|
echo "</tr>\n";
|
|
|
|
echo "<tr>\n";
|
|
echo $layout->showfieldc($lang['AdrCustumerID'],0,"customer_id");
|
|
echo "<td colspan=\"4\"><input size=\"50\" maxlength=\"60\" id=\"customer_id\"name=\"customer_id\" value=\"". myentities($this->customer_id) ."\" /></td>\n";
|
|
echo "</tr>\n";
|
|
}
|
|
|
|
}
|
|
?>
|