Skip to content

Commit

Permalink
New: Add private/public property on contact. This allow to add your o…
Browse files Browse the repository at this point in the history
…wn address database in Dolibarr.
  • Loading branch information
eldy committed Mar 30, 2008
1 parent fc706ae commit 0ac4706
Show file tree
Hide file tree
Showing 23 changed files with 330 additions and 128 deletions.
7 changes: 5 additions & 2 deletions dev/skeletons/modMyModule.class.php
Expand Up @@ -70,12 +70,15 @@ function modMyModule($DB)
// Png file must be in theme/yourtheme/img directory under name object_pictovalue.png.
$this->picto='generic';

// Data directories to create when module is enabled
// Data directories to create when module is enabled.
$this->dirs = array();
//$this->dirs[0] = DOL_DATA_ROOT.'/mymodule;
//$this->dirs[1] = DOL_DATA_ROOT.'/mymodule/temp;

// Config pages. Put here list of php page names stored in admmin directory used to setup module
// Relative path to module style sheet if exists. Example: '/mymodule/mycss.css'.
$this->style_sheet = '';

// Config pages. Put here list of php page names stored in admmin directory used to setup module.
$this->config_page_url = array("mymodulesetuppage.php");

// Dependencies
Expand Down
4 changes: 4 additions & 0 deletions htdocs/conf/conf.class.php
Expand Up @@ -65,6 +65,8 @@ class Conf
var $propal;
var $categorie;
var $oscommerce2;
var $css;
var $css_modules=array();


/**
Expand Down Expand Up @@ -100,6 +102,8 @@ function setValues($db)
{
if (! defined("$key")) define ("$key", $value); // In some cases, the constant might be already forced (Example: SYSLOG_FILE during install)
$this->global->$key=$value;
// If this is constant for a css file activated by a module
if (eregi('MAIN_MODULE_([A-Z_]+)_CSS',$key)) $this->css_modules[]=$value;
}
$i++;
}
Expand Down
35 changes: 26 additions & 9 deletions htdocs/contact.class.php
Expand Up @@ -93,15 +93,16 @@ function create($user)
$this->name=trim($this->name);
if (! $this->socid) $this->socid = 0;

$sql = "INSERT INTO ".MAIN_DB_PREFIX."socpeople (datec, fk_soc, name, fk_user_creat)";
$sql = "INSERT INTO ".MAIN_DB_PREFIX."socpeople (datec, fk_soc, name, fk_user_creat, priv)";
$sql.= " VALUES (now(),";
if ($this->socid > 0) $sql.= " ".$this->socid.",";
else $sql.= "null,";
$sql.= "'".addslashes($this->name)."',";
$sql.= $user->id;
$sql.= $user->id.",";
$sql.= $this->priv;
$sql.= ")";

dolibarr_syslog("Contact.class::create sql=".$sql);
dolibarr_syslog("Contact::create sql=".$sql);

$resql=$this->db->query($sql);
if ($resql)
Expand All @@ -127,7 +128,7 @@ function create($user)
else
{
$this->error=$this->db->error();
dolibarr_syslog("Contact.class::create ".$this->error);
dolibarr_syslog("Contact::create ".$this->error);
return -1;
}
}
Expand Down Expand Up @@ -177,10 +178,11 @@ function update($id, $user=0, $notrigger=0)
$sql .= ", phone_perso = '".addslashes($this->phone_perso)."'";
$sql .= ", phone_mobile = '".addslashes($this->phone_mobile)."'";
$sql .= ", jabberid = '".addslashes($this->jabberid)."'";
$sql .= ", priv = '".$this->priv."'";
if ($user) $sql .= ", fk_user_modif=".$user->id;
$sql .= " WHERE rowid=".$id;
dolibarr_syslog("Contact.class::update sql=".$sql,LOG_DEBUG);


dolibarr_syslog("Contact::update sql=".$sql,LOG_DEBUG);
$result = $this->db->query($sql);
if (! $result)
{
Expand Down Expand Up @@ -371,7 +373,8 @@ function fetch($id, $user=0)
$sql.= " c.address, c.cp, c.ville,";
$sql.= " c.fk_pays, p.libelle as pays, p.code as pays_code,";
$sql.= " c.birthday,";
$sql.= " c.poste, c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email, c.jabberid, c.note,";
$sql.= " c.poste, c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email, c.jabberid,";
$sql.= " c.priv, c.note,";
$sql.= " u.rowid as user_id, u.login as user_login";
$sql.= " FROM ".MAIN_DB_PREFIX."socpeople as c";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_pays as p ON c.fk_pays = p.rowid";
Expand Down Expand Up @@ -413,6 +416,7 @@ function fetch($id, $user=0)

$this->email = $obj->email;
$this->jabberid = $obj->jabberid;
$this->priv = $obj->priv;
$this->mail = $obj->email;

$this->birthday = $obj->birthday;
Expand Down Expand Up @@ -505,7 +509,7 @@ function load_ref_elements()
$sql.=" AND fk_socpeople = ". $this->id;
$sql.=" GROUP BY tc.element";

dolibarr_syslog("Contact.class::load_ref_elements sql=".$sql);
dolibarr_syslog("Contact::load_ref_elements sql=".$sql);

$resql=$this->db->query($sql);
if ($resql)
Expand All @@ -526,7 +530,7 @@ function load_ref_elements()
else
{
$this->error=$this->db->error()." - ".$sql;
dolibarr_syslog("Contact.class::load_ref_elements Error ".$this->error);
dolibarr_syslog("Contact::load_ref_elements Error ".$this->error);
return -1;
}
}
Expand Down Expand Up @@ -822,6 +826,19 @@ function LibStatut($statut,$mode)
}


/**
* \brief Return translated label of Public or Private
* \param type Type (0 = public, 1 = private)
* \return string Label translated
*/
function LibPubPriv($statut)
{
global $langs;
if ($statut=='1') return $langs->trans('ContactPrivate');
else return $langs->trans('ContactPublic');
}


/**
* \brief Initialise le contact avec valeurs fictives aléatoire
*/
Expand Down
25 changes: 24 additions & 1 deletion htdocs/contact/fiche.php
Expand Up @@ -98,6 +98,7 @@
$contact->phone_mobile = $_POST["phone_mobile"];
$contact->fax = $_POST["fax"];
$contact->jabberid = $_POST["jabberid"];
$contact->priv = $_POST["priv"];

$contact->note = $_POST["note"];

Expand Down Expand Up @@ -167,6 +168,7 @@
$contact->phone_mobile = $_POST["phone_mobile"];
$contact->fax = $_POST["fax"];
$contact->jabberid = $_POST["jabberid"];
$contact->priv = $_POST["priv"];

$contact->note = $_POST["note"];

Expand Down Expand Up @@ -307,10 +309,19 @@
print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input name="phone_mobile" type="text" size="18" maxlength="80" value="'.$contact->phone_mobile.'"></td>';
print '<td>'.$langs->trans("Fax").'</td><td><input name="fax" type="text" size="18" maxlength="80" value="'.$contact->fax.'"></td></tr>';

// EMail
print '<tr><td>'.$langs->trans("Email").'</td><td colspan="3"><input name="email" type="text" size="50" maxlength="80" value="'.$contact->email.'"></td></tr>';

// Jabberid
print '<tr><td>Jabberid</td><td colspan="3"><input name="jabberid" type="text" size="50" maxlength="80" value="'.$contact->jabberid.'"></td></tr>';

// Visibility
print '<tr><td>'.$langs->trans("ContactVisibility").'</td><td colspan="3">';
$selectarray=array('0'=>$langs->trans("ContactPublic"),'1'=>$langs->trans("ContactPrivate"));
$form->select_array('priv',$selectarray,$contact->priv,0);
print '</td></tr>';

// Note
print '<tr><td valign="top">'.$langs->trans("Note").'</td><td colspan="3" valign="note"><textarea name="note" cols="70" rows="'.ROWS_3.'">'.$contact->note.'</textarea></td></tr>';

print '<tr><td align="center" colspan="4"><input type="submit" class="button" value="'.$langs->trans("Add").'"></td></tr>';
Expand Down Expand Up @@ -392,8 +403,15 @@
}
print '</tr>';

// Jabberid
print '<tr><td>Jabberid</td><td colspan="3"><input name="jabberid" type="text" size="40" maxlength="80" value="'.$contact->jabberid.'"></td></tr>';

// Visibility
print '<tr><td>'.$langs->trans("ContactVisibility").'</td><td colspan="3">';
$selectarray=array('0'=>$langs->trans("ContactPublic"),'1'=>$langs->trans("ContactPrivate"));
$form->select_array('priv',$selectarray,$contact->priv,0);
print '</td></tr>';

print '<tr><td valign="top">'.$langs->trans("Note").'</td><td colspan="3">';
print '<textarea name="note" cols="70" rows="'.ROWS_3.'">';
print $contact->note;
Expand Down Expand Up @@ -530,8 +548,13 @@
}
print '</tr>';

// Jabberid
print '<tr><td>Jabberid</td><td colspan="3">'.$contact->jabberid.'</td></tr>';

print '<tr><td>'.$langs->trans("ContactVisibility").'</td><td colspan="3">';
print $contact->LibPubPriv($contact->priv);
print '</td></tr>';

print '<tr><td valign="top">'.$langs->trans("Note").'</td><td colspan="3">';
print nl2br($contact->note);
print '</td></tr>';
Expand Down Expand Up @@ -592,7 +615,7 @@
print '<a class="butAction" href="fiche.php?id='.$contact->id.'&amp;action=edit">'.$langs->trans('Modify').'</a>';
}

if (! $contact->user_id && $user->rights->user->user->creer && $contact->socid > 0)
if (! $contact->user_id && $user->rights->user->user->creer)
{
print '<a class="butAction" href="fiche.php?id='.$contact->id.'&amp;action=create_user">'.$langs->trans("CreateDolibarrLogin").'</a>';
}
Expand Down
64 changes: 49 additions & 15 deletions htdocs/contact/index.php
Expand Up @@ -40,8 +40,10 @@
$search_prenom=isset($_GET["search_prenom"])?$_GET["search_prenom"]:$_POST["search_prenom"];
$search_societe=isset($_GET["search_societe"])?$_GET["search_societe"]:$_POST["search_societe"];
$search_email=isset($_GET["search_email"])?$_GET["search_email"]:$_POST["search_email"];
$search_priv=isset($_GET["search_priv"])?$_GET["search_priv"]:(isset($_POST["search_priv"])?$_POST["search_priv"]:'');

$type = isset($_GET["type"])?$_GET["type"]:$_POST["type"];

$view=isset($_GET["view"])?$_GET["view"]:$_POST["view"];

$sall=isset($_GET["contactname"])?$_GET["contactname"]:$_POST["contactname"];
Expand Down Expand Up @@ -71,9 +73,13 @@
$titre=$langs->trans("ListOfContacts").' ('.$langs->trans("ThirdPartySuppliers").')';
$urlfiche="fiche.php";
}
if ($view == 'phone') { $text="( Vue T�l�phones)"; }
if ($type == "o") {
$titre=$langs->trans("ListOfContacts").' ('.$langs->trans("OthersNotLinkedToThirdParty").')';
$urlfiche="";
}
if ($view == 'phone') { $text="( Vue Telephones)"; }
if ($view == 'mail') { $text=" (Vue EMail)"; }
if ($view == 'recent') { $text=" (R�cents)"; }
if ($view == 'recent') { $text=" (Recents)"; }
$titre = $titre." $text";

if ($_POST["button_removefilter"])
Expand All @@ -82,9 +88,10 @@
$search_prenom="";
$search_societe="";
$search_email="";
$search_priv="";
$sall="";
}

if ($search_priv < 0) $search_priv='';



Expand All @@ -95,8 +102,10 @@

llxHeader();

$form=new Form($db);

$sql = "SELECT s.rowid as socid, s.nom, ";
$sql.= " p.rowid as cidp, p.name, p.firstname, p.email, p.phone, p.phone_mobile, p.fax,";
$sql.= " p.rowid as cidp, p.name, p.firstname, p.email, p.phone, p.phone_mobile, p.fax, p.priv,";
$sql.= " ".$db->pdate("p.tms")." as tms";
$sql.= " FROM ".MAIN_DB_PREFIX."socpeople as p";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = p.fk_soc";
Expand All @@ -106,10 +115,22 @@
{
$sql .= " AND IFNULL(sc.fk_user, ".$user->id.") = " .$user->id;
}
if ($_GET["userid"]) // statut commercial
if ($_GET["userid"]) // propre au commercial
{
$sql .= " AND p.fk_user_creat=".$_GET["userid"];
}

// Filter to exclude not owned private contacts
if ($search_priv != '0' && $search_priv != '1')
{
$sql .= " AND (p.priv='0' OR (p.priv='1' AND p.fk_user_creat=".$user->id."))";
}
else
{
if ($search_priv == '0') $sql .= " AND p.priv='0'";
if ($search_priv == '1') $sql .= " AND (p.priv='1' AND p.fk_user_creat=".$user->id.")";
}

if ($search_nom) // filtre sur le nom
{
$sql .= " AND p.name like '%".addslashes($search_nom)."%'";
Expand All @@ -126,6 +147,10 @@
{
$sql .= " AND p.email like '%".addslashes($search_email)."%'";
}
if ($type == "o") // filtre sur type
{
$sql .= " AND p.fk_soc IS NULL";
}
if ($type == "f") // filtre sur type
{
$sql .= " AND fournisseur = 1";
Expand Down Expand Up @@ -167,7 +192,6 @@

dolibarr_syslog("contact/index.php sql=".$sql);
$result = $db->query($sql);

if ($result)
{
$contactstatic=new Contact($db);
Expand All @@ -191,36 +215,39 @@
print $langs->trans("Filter")." (".$langs->trans("Lastname").", ".$langs->trans("Firstname")." ".$langs->trans("or")." ".$langs->trans("EMail")."): ".$sall;
}

$param="&type=$type&view=$view&search_nom=$search_nom&search_prenom=$search_prenom&search_societe=$search_societe&search_email=$search_email";
if ($search_priv == '0' || $search_priv == '1') $param.="&search_priv=$search_priv";

// Ligne des titres
print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Lastname"),"index.php","p.name", $begin, "&type=$type&view=$view&search_nom=$search_nom&search_prenom=$search_prenom&search_societe=$search_societe&search_email=$search_email", '', $sortfield,$sortorder);
print_liste_field_titre($langs->trans("Firstname"),"index.php","p.firstname", $begin, "&type=$type&view=$view&search_nom=$search_nom&search_prenom=$search_prenom&search_societe=$search_societe&search_email=$search_email", '', $sortfield,$sortorder);
print_liste_field_titre($langs->trans("Company"),"index.php","s.nom", $begin, "&type=$type&view=$view&search_nom=$search_nom&search_prenom=$search_prenom&search_societe=$search_societe&search_email=$search_email", '', $sortfield,$sortorder);
print '<td class="liste_titre">'.$langs->trans("Phone").'</td>';

print_liste_field_titre($langs->trans("Lastname"),"index.php","p.name", $begin, $param, '', $sortfield,$sortorder);
print_liste_field_titre($langs->trans("Firstname"),"index.php","p.firstname", $begin, $param, '', $sortfield,$sortorder);
print_liste_field_titre($langs->trans("Company"),"index.php","s.nom", $begin, $param, '', $sortfield,$sortorder);
print_liste_field_titre($langs->trans("Phone"),"index.php","p.phone", $begin, $param, '', $sortfield,$sortorder);
if ($_GET["view"] == 'phone')
{
print '<td class="liste_titre">'.$langs->trans("Mobile").'</td>';
print '<td class="liste_titre">'.$langs->trans("Fax").'</td>';
}
else
{
print_liste_field_titre($langs->trans("EMail"),"index.php","p.email", $begin, "&type=$type&view=$view&search_nom=$search_nom&search_prenom=$search_prenom&search_societe=$search_societe&search_email=$search_email", "", $sortfield,$sortorder);
print_liste_field_titre($langs->trans("EMail"),"index.php","p.email", $begin, $param, '', $sortfield,$sortorder);
}
print_liste_field_titre($langs->trans("DateModification"),"index.php","p.tms", $begin, "&type=$type&view=$view&search_nom=$search_nom&search_prenom=$search_prenom&search_societe=$search_societe&search_email=$search_email", 'align="center"', $sortfield,$sortorder);
print_liste_field_titre($langs->trans("DateModification"),"index.php","p.tms", $begin, $param, 'align="center"', $sortfield,$sortorder);
print_liste_field_titre($langs->trans("ContactVisibility"),"index.php","p.priv", $begin, $param, 'align="center"', $sortfield,$sortorder);
print '<td class="liste_titre">&nbsp;</td>';
print "</tr>\n";

// Ligne des champs de filtres
print '<tr class="liste_titre">';
print '<td class="liste_titre">';
print '<input class="flat" type="text" name="search_nom" size="12" value="'.$search_nom.'">';
print '<input class="flat" type="text" name="search_nom" size="10" value="'.$search_nom.'">';
print '</td>';
print '<td class="liste_titre">';
print '<input class="flat" type="text" name="search_prenom" size="10" value="'.$search_prenom.'">';
print '</td>';
print '<td class="liste_titre">';
print '<input class="flat" type="text" name="search_societe" size="14" value="'.$search_societe.'">';
print '<input class="flat" type="text" name="search_societe" size="10" value="'.$search_societe.'">';
print '</td>';
if ($conf->agenda->enabled && $user->rights->agenda->myactions->create)
{
Expand All @@ -246,6 +273,10 @@
}

print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre">';
$selectarray=array('0'=>$langs->trans("ContactPublic"),'1'=>$langs->trans("ContactPrivate"));
$form->select_array('search_priv',$selectarray,$search_priv,1);
print '</td>';
print '<td class="liste_titre" align="right">';
print '<input type="image" value="button_search" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" name="button_search" alt="'.$langs->trans("Search").'">';
print '&nbsp; <input type="image" value="button_removefilter" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/searchclear.png" name="button_removefilter" alt="'.$langs->trans("RemoveFilter").'">';
Expand Down Expand Up @@ -315,6 +346,9 @@
// Date
print '<td align="center">'.dolibarr_print_date($obj->tms,"day").'</td>';

// Private/Public
print '<td align="center">'.$contactstatic->LibPubPriv($obj->priv).'</td>';

// Link export vcard
print '<td align="right">';
print '<a href="'.DOL_URL_ROOT.'/contact/vcard.php?id='.$obj->cidp.'">';
Expand Down

0 comments on commit 0ac4706

Please sign in to comment.