Mutualize a lot of code about models selection to prepare generic odt generator.

This commit is contained in:
Laurent Destailleur 2010-02-27 22:53:27 +00:00
parent ee867ed6c2
commit 36c4605d17
19 changed files with 185 additions and 337 deletions

View File

@ -88,7 +88,7 @@ if ($_POST["action"] == 'setModuleOptions')
if ($_GET["action"] == 'set')
{
$type='company';
$sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES ('".$_GET["value"]."','".$type."',".$conf->entity.")";
$sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity, libelle) VALUES ('".$_GET["value"]."','".$type."',".$conf->entity.", ".($_GET["label"]?"'".addslashes($_GET["label"])."'":'null').")";
if ($db->query($sql))
{
@ -111,7 +111,8 @@ if ($_GET["action"] == 'setdoc')
$sql_del.= " AND type = '".$type."'";
$sql_del.= " AND entity = ".$conf->entity;
$result1=$db->query($sql_del);
$sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom,type,entity) VALUES ('".$_GET["value"]."','".$type."',".$conf->entity.")";
$sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity, libelle) VALUES ('".$_GET["value"]."', '".$type."', ".$conf->entity.", ".($_GET["label"]?"'".addslashes($_GET["label"])."'":'null').")";
$result2=$db->query($sql);
if ($result1 && $result2)
{
@ -333,7 +334,7 @@ foreach ($conf->file->dol_document_root as $dirroot)
$module = new $classname($db);
print '<tr '.$bc[$var].'><td width="100">';
echo $module->name;
print $module->name;
print "</td><td>\n";
if (method_exists($module,'info')) print $module->info($langs);
else print $module->description;
@ -345,7 +346,7 @@ foreach ($conf->file->dol_document_root as $dirroot)
print "<td align=\"center\">\n";
if ($conf->global->COMPANY_ADDON_PDF != "$name")
{
print '<a href="'.$_SERVER["PHP_SELF"].'?action=del&amp;value='.$name.'">';
print '<a href="'.$_SERVER["PHP_SELF"].'?action=del&amp;value='.$name.'&amp;label='.urlencode($module->name).'">';
print img_picto($langs->trans("Enabled"),'on');
print '</a>';
}
@ -358,7 +359,7 @@ foreach ($conf->file->dol_document_root as $dirroot)
else
{
print "<td align=\"center\">\n";
print '<a href="'.$_SERVER["PHP_SELF"].'?action=set&amp;value='.$name.'">'.img_picto($langs->trans("Disabled"),'off').'</a>';
print '<a href="'.$_SERVER["PHP_SELF"].'?action=set&amp;value='.$name.'&amp;label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"),'off').'</a>';
print "</td>";
}
@ -370,7 +371,7 @@ foreach ($conf->file->dol_document_root as $dirroot)
}
else
{
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&amp;value='.$name.'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'off').'</a>';
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&amp;value='.$name.'&amp;label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'off').'</a>';
}
print '</td>';

View File

@ -2081,7 +2081,7 @@ else
$pagenext = $page + 1;
$sql = 'SELECT s.nom, s.rowid, s.client, ';
$sql.= 'p.rowid as propalid, p.total_ht, p.ref, p.fk_statut, p.fk_user_author, '.$db->pdate('p.datep').' as dp,'.$db->pdate('p.fin_validite').' as dfv,';
$sql.= 'p.rowid as propalid, p.total_ht, p.ref, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,';
if (!$user->rights->societe->client->voir && !$socid) $sql .= " sc.fk_soc, sc.fk_user,";
$sql.= ' u.login';
$sql.= ' FROM ('.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'propal as p';
@ -2237,10 +2237,10 @@ else
// Date propale
print '<td align="center">';
$y = dol_print_date($objp->dp,'%Y');
$m = dol_print_date($objp->dp,'%m');
$mt= dol_print_date($objp->dp,'%b');
$d = dol_print_date($objp->dp,'%d');
$y = dol_print_date($db->jdate($objp->dp),'%Y');
$m = dol_print_date($db->jdate($objp->dp),'%m');
$mt= dol_print_date($db->jdate($objp->dp),'%b');
$d = dol_print_date($db->jdate($objp->dp),'%d');
print $d."\n";
print ' <a href="'.$_SERVER["PHP_SELF"].'?year='.$y.'&amp;month='.$m.'">';
print $mt."</a>\n";
@ -2250,7 +2250,7 @@ else
// Date fin validite
if ($objp->dfv)
{
print '<td align="center">'.dol_print_date($objp->dfv,'day');
print '<td align="center">'.dol_print_date($db->jdate($objp->dfv),'day');
print '</td>';
}
else

View File

@ -168,7 +168,17 @@ class FormFile
if ($genallowed)
{
$modellist=array();
if ($modulepart == 'propal')
if ($modulepart == 'company')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/societe/modules_societe.class.php');
$model=new ModeleThirdPartyDoc();
$modellist=$model->liste_modeles($this->db);
}
}
else if ($modulepart == 'propal')
{
if (is_array($genallowed)) $modellist=$genallowed;
else

View File

@ -44,8 +44,8 @@ class ModelePDFCommandes
var $error='';
/**
* \brief Renvoi la liste des modeles actifs
* \return array Tableau des modeles (cle=id, valeur=libelle)
* \brief Return list of active generation modules
* \param $db Database handler
*/
function liste_modeles($db)
{
@ -53,31 +53,12 @@ class ModelePDFCommandes
$type='order';
$liste=array();
$sql = "SELECT nom as id, nom as lib";
$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
$sql.= " WHERE type = '".$type."'";
$sql.= " AND entity = ".$conf->entity;
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$row = $db->fetch_row($resql);
$liste[$row[0]]=$row[1];
$i++;
}
}
else
{
$this->error=$db->error();
return -1;
}
include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
$liste=getListOfModels($db,$type,'');
return $liste;
}
}

View File

@ -41,44 +41,29 @@ class ModeleDon
{
var $error='';
/**
* \brief Renvoi la liste des modeles actifs
* \param db Handler de base
*/
function liste_modeles($db)
{
$type='donation';
$liste=array();
$sql ="SELECT nom as id, nom as lib";
$sql.=" FROM ".MAIN_DB_PREFIX."document_model";
$sql.=" WHERE type = '".$type."'";
/**
* \brief Return list of active generation modules
* \param $db Database handler
*/
function liste_modeles($db)
{
global $conf;
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$row = $db->fetch_row($resql);
$liste[$row[0]]=$row[1];
$i++;
}
}
else
{
return -1;
}
return $liste;
}
$type='donation';
$liste=array();
include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
$liste=getListOfModels($db,$type,'');
return $liste;
}
}
/**
\class ModeleNumRefDons
\brief Classe m<EFBFBD>re des mod<EFBFBD>les de num<EFBFBD>rotation des r<EFBFBD>f<EFBFBD>rences des dons
*/
* \class ModeleNumRefDons
* \brief Classe mere des modeles de numerotation des references des dons
*/
class ModeleNumRefDons
{
var $error='';

View File

@ -46,37 +46,21 @@ class methode_expedition
/**
* \brief Renvoi la liste des mod<EFBFBD>les actifs
* \param db Handler de base
* \brief Return list of active generation modules
* \param $db Database handler
*/
function liste_modeles($db)
{
$type='invoice';
$liste=array();
$sql ="SELECT nom as id, nom as lib";
$sql.=" FROM ".MAIN_DB_PREFIX."document_model";
$sql.=" WHERE type = '".$type."'";
global $conf;
$type='???';
$liste=array();
include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
$liste=getListOfModels($db,$type,'');
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$row = $db->fetch_row($resql);
$liste[$row[0]]=$row[1];
$i++;
}
}
else
{
dol_print_error($db);
return -1;
}
return $liste;
}
}
?>

View File

@ -32,48 +32,29 @@ require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
/**
* \class ModelePdfExpedition
* \brief Parent class of ssending receipts models
* \brief Parent class of sending receipts models
*/
class ModelePdfExpedition
{
var $error='';
/**
* \brief Renvoi la liste des modeles actifs
* \return array Tableau des modeles (cle=id, valeur=libelle)
*/
function liste_modeles($db)
{
global $conf;
/**
* \brief Return list of active generation modules
* \param $db Database handler
*/
function liste_modeles($db)
{
global $conf;
$type='shipping';
$liste=array();
$sql ="SELECT nom as id, nom as lib";
$sql.=" FROM ".MAIN_DB_PREFIX."document_model";
$sql.=" WHERE type = '".$type."'";
$sql.= " AND entity = ".$conf->entity;
$type='shipping';
$liste=array();
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$row = $db->fetch_row($resql);
$liste[$row[0]]=$row[1];
$i++;
}
}
else
{
$this->error=$db->error();
return -1;
}
return $liste;
}
include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
$liste=getListOfModels($db,$type,'');
return $liste;
}
}

View File

@ -56,7 +56,7 @@ class ModeleExports
*/
function liste_modeles($db)
{
dol_syslog("ModeleExport::loadFormat");
dol_syslog("ModeleExport::liste_modeles");
$dir=DOL_DOCUMENT_ROOT."/includes/modules/export/";
$handle=opendir($dir);

View File

@ -43,8 +43,8 @@ class ModelePDFFactures
var $error='';
/**
* \brief Renvoi la liste des modeles actifs
* \param db Handler de base
* \brief Return list of active generation modules
* \param $db Database handler
*/
function liste_modeles($db)
{
@ -52,31 +52,12 @@ class ModelePDFFactures
$type='invoice';
$liste=array();
$sql = "SELECT nom as id, nom as lib";
$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
$sql.= " WHERE type = '".$type."'";
$sql.= " AND entity = ".$conf->entity;
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$row = $db->fetch_row($resql);
$liste[$row[0]]=$row[1];
$i++;
}
}
else
{
dol_print_error($db);
return -1;
}
include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
$liste=getListOfModels($db,$type,'');
return $liste;
}
}
/**

View File

@ -48,7 +48,8 @@ class ModelePDFFicheinter
}
/**
* \brief Renvoi la liste des modeles actifs
* \brief Return list of active generation modules
* \param $db Database handler
*/
function liste_modeles($db)
{
@ -56,30 +57,12 @@ class ModelePDFFicheinter
$type='ficheinter';
$liste=array();
$sql = "SELECT nom as id, nom as lib";
$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
$sql.= " WHERE type = '".$type."'";
$sql.= " AND entity = ".$conf->entity;
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$row = $db->fetch_row($resql);
$liste[$row[0]]=$row[1];
$i++;
}
}
else
{
return -1;
}
include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
$liste=getListOfModels($db,$type,'');
return $liste;
}
}

View File

@ -41,7 +41,8 @@ class ModelePDFDeliveryOrder
var $error='';
/**
* \brief Renvoi la liste des modeles actifs
* \brief Return list of active generation modules
* \param $db Database handler
*/
function liste_modeles($db)
{
@ -50,40 +51,19 @@ class ModelePDFDeliveryOrder
$type='delivery';
$liste=array();
$sql = "SELECT nom as id, nom as lib";
$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
$sql.= " WHERE type = '".$type."'";
$sql.= " AND entity = ".$conf->entity;
include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
$liste=getListOfModels($db,$type,'');
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$row = $db->fetch_row($resql);
$liste[$row[0]]=$row[1];
$i++;
}
}
else
{
$this->error=$db->error();
return -1;
}
return $liste;
}
}
/**
\class ModeleNumRefDeliveryOrder
\brief Classe mere des modeles de numerotation des references de bon de livraison
* \class ModeleNumRefDeliveryOrder
* \brief Classe mere des modeles de numerotation des references de bon de livraison
*/
class ModeleNumRefDeliveryOrder
{
var $error='';

View File

@ -43,8 +43,8 @@ class ModelePDFCards
/**
* \brief Renvoi la liste des modeles actifs
* \param db Handler de base
* \brief Return list of active generation modules
* \param $db Database handler
*/
function liste_modeles($db)
{
@ -52,31 +52,12 @@ class ModelePDFCards
$type='members_card';
$liste=array();
$sql = "SELECT nom as id, nom as lib";
$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
$sql.= " WHERE type = '".$type."'";
$sql.= " AND entity = ".$conf->entity;
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$row = $db->fetch_row($resql);
$liste[$row[0]]=$row[1];
$i++;
}
}
else
{
dol_print_error($db);
return -1;
}
include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
$liste=getListOfModels($db,$type,'');
return $liste;
}
}

View File

@ -38,7 +38,8 @@ class ModelePDFProjects
/**
* \brief Renvoi la liste des modeles actifs
* \brief Return list of active generation modules
* \param $db Database handler
*/
function liste_modeles($db)
{
@ -47,31 +48,11 @@ class ModelePDFProjects
$type='project';
$liste=array();
$sql = "SELECT nom as id, nom as lib";
$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
$sql.= " WHERE type = '".$type."'";
$sql.= " AND entity = ".$conf->entity;
include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
$liste=getListOfModels($db,$type,'');
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$row = $db->fetch_row($resql);
$liste[$row[0]]=$row[1];
$i++;
}
}
else
{
$this->error=$db->error();
return -1;
}
return $liste;
}
}

View File

@ -42,7 +42,8 @@ class ModelePDFPropales
/**
* \brief Renvoi la liste des modeles actifs
* \brief Return list of active generation modules
* \param $db Database handler
*/
function liste_modeles($db)
{
@ -51,39 +52,18 @@ class ModelePDFPropales
$type='propal';
$liste=array();
$sql = "SELECT nom as id, nom as lib";
$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
$sql.= " WHERE type = '".$type."'";
$sql.= " AND entity = ".$conf->entity;
include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
$liste=getListOfModels($db,$type,'');
dol_syslog("modules_propale::liste_modeles sql=".$sql, LOG_DEBUG);
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$row = $db->fetch_row($resql);
$liste[$row[0]]=$row[1];
$i++;
}
}
else
{
$this->error=$db->error();
return -1;
}
return $liste;
}
}
/**
\class ModeleNumRefPropales
\brief Classe mere des modeles de numerotation des references de propales
* \class ModeleNumRefPropales
* \brief Classe mere des modeles de numerotation des references de propales
*/
class ModeleNumRefPropales
{
var $error='';

View File

@ -18,7 +18,7 @@
*/
/**
* \file htdocs/includes/modules/societe/doc/odt_generic.modules.php
* \file htdocs/includes/modules/societe/doc/doc_generic_odt.modules.php
* \ingroup project
* \brief File of class to build ODT documents for third parties
* \author Laurent Destailleur
@ -32,10 +32,10 @@ require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
/**
* \class odt_generic
* \class doc_genericodt
* \brief Classe permettant de generer les projets au modele Baleine
*/
class odt_generic extends ModeleDocProjects
class doc_generic_odt extends ModeleThirdPartyDoc
{
var $emetteur; // Objet societe qui emet
@ -43,7 +43,7 @@ class odt_generic extends ModeleDocProjects
* \brief Constructor
* \param db Database handler
*/
function odt_generic($db)
function doc_generic_odt($db)
{
global $conf,$langs,$mysoc;

View File

@ -29,45 +29,28 @@
/**
* \class ModeleDocProjects
* \brief Parent class for third parties models
* \class ModeleThirdPartyDoc
* \brief Parent class for third parties models of doc generators
*/
class ModeleDocProjects
class ModeleThirdPartyDoc
{
var $error='';
/**
* \brief Renvoi la liste des modeles actifs
* \brief Return list of active generation modules
* \param $db Database handler
*/
function liste_modeles($db)
{
global $conf;
$type='project';
$type='company';
$liste=array();
$dirtoscan=$conf->global->COMPANY_ADDON_PDF_ODTPATH;
$sql = "SELECT nom as id, nom as lib";
$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
$sql.= " WHERE type = '".$type."'";
$sql.= " AND entity = ".$conf->entity;
include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
$liste=getListOfModels($db,$type,$dirtoscan);
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$row = $db->fetch_row($resql);
$liste[$row[0]]=$row[1];
$i++;
}
}
else
{
$this->error=$db->error();
return -1;
}
return $liste;
}
@ -142,7 +125,7 @@ class ModeleThirdPartyCode
}
/**
* \brief Renvoi la liste des mod<EFBFBD>les actifs
* \brief Renvoi la liste des modeles de numéroation
* \param db Handler de base
*/
function liste_modeles($db)

View File

@ -42,7 +42,8 @@ class ModelePDFSuppliersOrders
/**
* \brief Renvoi la liste des modeles actifs
* \brief Return list of active generation modules
* \param $db Database handler
*/
function liste_modeles($db)
{
@ -51,28 +52,9 @@ class ModelePDFSuppliersOrders
$type='supplier_order';
$liste=array();
$sql = "SELECT nom as id, nom as lib";
$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
$sql.= " WHERE type = '".$type."'";
$sql.= " AND entity = ".$conf->entity;
include_once(DOL_DOCUMENT_ROOT.'/lib/functions2.lib.php');
$liste=getListOfModels($db,$type,'');
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$row = $db->fetch_row($resql);
$liste[$row[0]]=$row[1];
$i++;
}
}
else
{
$this->error=$db->error();
return -1;
}
return $liste;
}
@ -81,10 +63,9 @@ class ModelePDFSuppliersOrders
/**
\class ModeleNumRefSuppliersOrders
\brief Classe mere des modeles de numerotation des references de commandes fournisseurs
* \class ModeleNumRefSuppliersOrders
* \brief Classe mere des modeles de numerotation des references de commandes fournisseurs
*/
class ModeleNumRefSuppliersOrders
{
var $error='';

View File

@ -1009,3 +1009,41 @@ function picto_from_langcode($codelang)
}
return $ret;
}
/**
* \brief Return list of activated modules of doc generation
* \param $db Database handler
* \param $type Type of models (company, invoice, ...)
* \param $dirodts List of directories to scan for templates
*/
function getListOfModels($db,$type,$dirtoscan='')
{
global $conf;
$liste=array();
$sql = "SELECT nom as id, nom as lib, libelle as label";
$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
$sql.= " WHERE type = '".$type."'";
$sql.= " AND entity = ".$conf->entity;
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$obj = $db->fetch_object($resql);
$liste[$obj->id]=$obj->label?$obj->label:$obj->lib;
$i++;
}
}
else
{
$this->error=$db->error();
return -1;
}
return $liste;
}

View File

@ -33,6 +33,7 @@ require("pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
require_once(DOL_DOCUMENT_ROOT."/html.formadmin.class.php");
require_once(DOL_DOCUMENT_ROOT."/html.formcompany.class.php");
require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php");
require_once(DOL_DOCUMENT_ROOT."/contact.class.php");
if ($conf->adherent->enabled) require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php");
@ -297,6 +298,7 @@ $help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas';
llxHeader('','',$help_url);
$form = new Form($db);
$formfile = new FormFile($db);
$formadmin = new FormAdmin($db);
$formcompany = new FormCompany($db);
@ -1372,14 +1374,6 @@ else
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?socid='.$soc->id.'&amp;action=edit">'.$langs->trans("Modify").'</a>';
}
/* Not specific to third party. Must go on Project menu to create a project.
if ($conf->projet->enabled && $user->rights->projet->creer)
{
$langs->load("projects");
print '<a class="butAction" href="'.DOL_URL_ROOT.'/projet/fiche.php?socid='.$soc->id.'&action=create">'.$langs->trans("AddProject").'</a>';
}
*/
if ($user->rights->societe->contact->creer)
{
print '<a class="butAction" href="'.DOL_URL_ROOT.'/contact/fiche.php?socid='.$soc->id.'&amp;action=create">'.$langs->trans("AddContact").'</a>';
@ -1394,6 +1388,30 @@ else
print '<br>';
}
print '<table width="100%"><tr><td width="50%" valign="top">';
print '<a name="builddoc"></a>'; // ancre
/*
* Documents generes
*/
$filedir=$conf->societe->dir_output;
$urlsource=$_SERVER["PHP_SELF"]."?socid=".$soc->id;
$genallowed=$user->rights->societe->creer;
$delallowed=$user->rights->societe->supprimer;
$var=true;
$somethingshown=$formfile->show_documents('company','',$filedir,$urlsource,$genallowed,$delallowed,'','',0,0,28,0,'',0,'',$soc->default_lang);
print '</td><td>';
print '</td></tr>';
print '</table>';
print '<br>';
/*
* Contact List
*/