diff --git a/htdocs/categories/categorie.php b/htdocs/categories/categorie.php index 4fef3184c20eb6e3e477d66e839129c5c17bb946..6aa063a9b4eeb31a682dd2febae18753ed9922f3 100644 --- a/htdocs/categories/categorie.php +++ b/htdocs/categories/categorie.php @@ -118,7 +118,8 @@ if (empty($reshook)) } if ($type==1 && $user->rights->societe->creer) { - $object = new Societe($db); + require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; + $object = new Fournisseur($db); $result = $object->fetch($objectid); $elementtype = 'fournisseur'; } @@ -152,7 +153,7 @@ if (empty($reshook)) setEventMessage($cat->errors,'errors'); } } - + // Add object into a category if ($parent > 0) { @@ -165,7 +166,8 @@ if (empty($reshook)) } if ($type==1 && $user->rights->societe->creer) { - $object = new Societe($db); + require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; + $object = new Fournisseur($db); $result = $object->fetch($objectid); $elementtype = 'fournisseur'; } @@ -319,11 +321,11 @@ if ($socid) dol_fiche_end(); - if ($soc->client) formCategory($db,$soc,2,$socid); + if ($soc->client) formCategory($db,$soc,2,$socid,$user->rights->societe->creer); if ($soc->client && $soc->fournisseur) print '<br><br>'; - if ($soc->fournisseur) formCategory($db,$soc,1,$socid); + if ($soc->fournisseur) formCategory($db,$soc,1,$socid,$user->rights->societe->creer); } else if ($id || $ref) { @@ -377,7 +379,7 @@ else if ($id || $ref) dol_fiche_end(); - formCategory($db,$product,0); + formCategory($db,$product,0,($user->rights->produit->creer || $user->rights->service->creer)); } if ($type == 3) @@ -456,7 +458,7 @@ else if ($id || $ref) dol_fiche_end(); - formCategory($db,$member,3); + formCategory($db,$member,3,0,$user->rights->adherent->creer); } if ($type == 4) { @@ -602,7 +604,7 @@ else if ($id || $ref) dol_fiche_end(); - formCategory($db,$object,4); + formCategory($db,$object,4,$user->rights->societe->creer); } } @@ -610,13 +612,14 @@ else if ($id || $ref) /** * Function to output a form to add object into a category * - * @param DoliDb $db Database handler - * @param Object $object Object we want to see categories it can be classified into - * @param int $typeid Type of category (0, 1, 2, 3) - * @param int $socid Id thirdparty + * @param DoliDb $db Database handler + * @param Object $object Object we want to see categories it can be classified into + * @param int $typeid Type of category (0, 1, 2, 3) + * @param int $socid Id thirdparty + * @param string $showclassifyform 1=Add form to 'Classify', 0=Do not show form to 'Classify' * @return int 0 */ -function formCategory($db,$object,$typeid,$socid=0) +function formCategory($db,$object,$typeid,$socid=0,$showclassifyform=1) { global $user,$langs,$form,$bc; @@ -626,33 +629,37 @@ function formCategory($db,$object,$typeid,$socid=0) if ($typeid == 3) $title = $langs->trans("MembersCategoriesShort"); if ($typeid == 4) $title = $langs->trans("ContactCategoriesShort"); - // Form to add record into a category print '<br>'; print_fiche_titre($title,'',''); - print '<form method="post" action="'.DOL_URL_ROOT.'/categories/categorie.php">'; - print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<input type="hidden" name="typeid" value="'.$typeid.'">'; - print '<input type="hidden" name="type" value="'.$typeid.'">'; - print '<input type="hidden" name="id" value="'.$object->id.'">'; - print '<table class="noborder" width="100%">'; - print '<tr class="liste_titre"><td width="40%">'; - print $langs->trans("ClassifyInCategory").' '; - print $form->select_all_categories($typeid,'auto'); - print '</td><td>'; - print '<input type="submit" class="button" value="'.$langs->trans("Classify").'"></td>'; - if ($user->rights->categorie->creer) + + // Form to add record into a category + if ($showclassifyform) { - print '<td align="right">'; - print '<a href="'.DOL_URL_ROOT.'/categories/fiche.php?action=create&origin='.$object->id.'&type='.$typeid.'&urlfrom='.urlencode($_SERVER["PHP_SELF"].'?'.(($typeid==1||$typeid==2)?'socid':'id').'='.$object->id.'&type='.$typeid).'">'; - print $langs->trans("CreateCat").' '; - print img_picto($langs->trans("Create"),'filenew'); - print "</a>"; - print '</td>'; + print '<form method="post" action="'.DOL_URL_ROOT.'/categories/categorie.php">'; + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="typeid" value="'.$typeid.'">'; + print '<input type="hidden" name="type" value="'.$typeid.'">'; + print '<input type="hidden" name="id" value="'.$object->id.'">'; + print '<table class="noborder" width="100%">'; + print '<tr class="liste_titre"><td width="40%">'; + print $langs->trans("ClassifyInCategory").' '; + print $form->select_all_categories($typeid,'auto'); + print '</td><td>'; + print '<input type="submit" class="button" value="'.$langs->trans("Classify").'"></td>'; + if ($user->rights->categorie->creer) + { + print '<td align="right">'; + print '<a href="'.DOL_URL_ROOT.'/categories/fiche.php?action=create&origin='.$object->id.'&type='.$typeid.'&urlfrom='.urlencode($_SERVER["PHP_SELF"].'?'.(($typeid==1||$typeid==2)?'socid':'id').'='.$object->id.'&type='.$typeid).'">'; + print $langs->trans("CreateCat").' '; + print img_picto($langs->trans("Create"),'filenew'); + print "</a>"; + print '</td>'; + } + print '</tr>'; + print '</table>'; + print '</form>'; + print '<br>'; } - print '</tr>'; - print '</table>'; - print '</form>'; - print '<br/>'; $c = new Categorie($db); diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index b6d5c622e9cc3a05f2b2b2e925bcd914aa941364..4ab19b7f915b98d9c69854a245953690dab288f6 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -386,7 +386,7 @@ class Categorie * Link an object to the category * * @param Object $obj Object to link to category - * @param string $type Type of category (member, supplier, product, customer, contact) + * @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact') * @return int 1 : OK, -1 : erreur SQL, -2 : id not defined, -3 : Already linked */ function add_type($obj,$type) @@ -397,11 +397,14 @@ class Categorie if ($this->id == -1) return -2; - if ($type == 'company') $type='societe'; - if ($type == 'fournisseur') $type='societe'; + // For backward compatibility + if ($type == 'company') $type='societe'; + if ($type == 'customer') $type='societe'; + if ($type == 'supplier') $type='fournisseur'; $column_name=$type; if ($type=='contact') $column_name='socpeople'; + if ($type=='fournisseur') $column_name='societe'; $sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie_".$type." (fk_categorie, fk_".$column_name.")"; $sql .= " VALUES (".$this->id.", ".$obj->id.")"; @@ -479,7 +482,7 @@ class Categorie * Delete object from category * * @param Object $obj Object - * @param string $type Type + * @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact') * @return int 1 if OK, -1 if KO */ function del_type($obj,$type) @@ -488,12 +491,15 @@ class Categorie $error=0; - if ($type == 'company') $type='societe'; - if ($type == 'fournisseur') $type='societe'; + // For backward compatibility + if ($type == 'company') $type='societe'; + if ($type == 'customer') $type='societe'; + if ($type == 'supplier') $type='fournisseur'; $column_name=$type; if ($type=='contact') $column_name='socpeople'; - + if ($type=='fournisseur') $column_name='societe'; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_".$type; $sql .= " WHERE fk_categorie = ".$this->id; $sql .= " AND fk_".$column_name." = ".$obj->id;