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 .= "
";
} 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']) ."
";
} 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 "