mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-12-06 17:48:25 +01:00
Merge pull request #6891 from hregis/develop_api
NEW add REST api "memberstypes"
This commit is contained in:
@@ -4,6 +4,9 @@ English Dolibarr ChangeLog
|
||||
|
||||
***** ChangeLog for 6.0.0 compared to 5.0.* *****
|
||||
|
||||
For developers:
|
||||
NEW: Add a lot of API REST: dictionaryevents, memberstypes, ...
|
||||
|
||||
WARNING:
|
||||
|
||||
Following changes may create regression for some external modules, but were necessary to make Dolibarr better:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?php
|
||||
/* Copyright (C) 2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2009 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
|
||||
/* Copyright (C) 2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2009-2017 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -36,7 +36,13 @@ class AdherentType extends CommonObject
|
||||
public $table_element = 'adherent_type';
|
||||
public $element = 'adherent_type';
|
||||
public $picto = 'group';
|
||||
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @deprecated Use label
|
||||
* @see label
|
||||
*/
|
||||
public $libelle;
|
||||
/** @var string Label */
|
||||
public $label;
|
||||
/**
|
||||
@@ -81,12 +87,13 @@ class AdherentType extends CommonObject
|
||||
global $conf;
|
||||
|
||||
$this->statut=(int) $this->statut;
|
||||
$this->label=(!empty($this->libelle)?trim($this->libelle):trim($this->label));
|
||||
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."adherent_type (";
|
||||
$sql.= "libelle";
|
||||
$sql.= ", entity";
|
||||
$sql.= ") VALUES (";
|
||||
$sql.= "'".$this->db->escape($this->libelle)."'";
|
||||
$sql.= "'".$this->db->escape($this->label)."'";
|
||||
$sql.= ", ".$conf->entity;
|
||||
$sql.= ")";
|
||||
|
||||
@@ -117,12 +124,12 @@ class AdherentType extends CommonObject
|
||||
|
||||
$error=0;
|
||||
|
||||
$this->libelle=trim($this->libelle);
|
||||
$this->label=(!empty($this->libelle)?trim($this->libelle):trim($this->label));
|
||||
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."adherent_type ";
|
||||
$sql.= "SET ";
|
||||
$sql.= "statut = ".$this->statut.",";
|
||||
$sql.= "libelle = '".$this->db->escape($this->libelle) ."',";
|
||||
$sql.= "libelle = '".$this->db->escape($this->label) ."',";
|
||||
$sql.= "subscription = '".$this->db->escape($this->subscription)."',";
|
||||
$sql.= "note = '".$this->db->escape($this->note)."',";
|
||||
$sql.= "vote = '".$this->db->escape($this->vote)."',";
|
||||
@@ -307,7 +314,7 @@ class AdherentType extends CommonObject
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* getMailOnValid
|
||||
*
|
||||
|
||||
322
htdocs/adherents/class/api_memberstypes.class.php
Normal file
322
htdocs/adherents/class/api_memberstypes.class.php
Normal file
@@ -0,0 +1,322 @@
|
||||
<?php
|
||||
/* Copyright (C) 2017 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
use Luracast\Restler\RestException;
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php';
|
||||
|
||||
/**
|
||||
* API class for members types
|
||||
*
|
||||
* @access protected
|
||||
* @class DolibarrApiAccess {@requires user,external}
|
||||
*/
|
||||
class MembersTypes extends DolibarrApi
|
||||
{
|
||||
/**
|
||||
* @var array $FIELDS Mandatory fields, checked when create and update object
|
||||
*/
|
||||
static $FIELDS = array(
|
||||
'label'
|
||||
);
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
function __construct()
|
||||
{
|
||||
global $db, $conf;
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get properties of a member type object
|
||||
*
|
||||
* Return an array with member type informations
|
||||
*
|
||||
* @param int $id ID of member type
|
||||
* @return array|mixed data without useless information
|
||||
*
|
||||
* @throws RestException
|
||||
*/
|
||||
function get($id)
|
||||
{
|
||||
if(! DolibarrApiAccess::$user->rights->adherent->lire) {
|
||||
throw new RestException(401);
|
||||
}
|
||||
|
||||
$membertype = new AdherentType($this->db);
|
||||
$result = $membertype->fetch($id);
|
||||
if( ! $result ) {
|
||||
throw new RestException(404, 'member type not found');
|
||||
}
|
||||
|
||||
if( ! DolibarrApi::_checkAccessToResource('member',$membertype->id,'adherent_type')) {
|
||||
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
|
||||
}
|
||||
|
||||
return $this->_cleanObjectDatas($membertype);
|
||||
}
|
||||
|
||||
/**
|
||||
* List members types
|
||||
*
|
||||
* Get a list of members types
|
||||
*
|
||||
* @param string $sortfield Sort field
|
||||
* @param string $sortorder Sort order
|
||||
* @param int $limit Limit for list
|
||||
* @param int $page Page number
|
||||
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.libelle:like:'SO-%') and (t.subscription:=:'1')"
|
||||
* @return array Array of member type objects
|
||||
*
|
||||
* @throws RestException
|
||||
*/
|
||||
function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 0, $page = 0, $sqlfilters = '') {
|
||||
global $db, $conf;
|
||||
|
||||
$obj_ret = array();
|
||||
|
||||
if(! DolibarrApiAccess::$user->rights->adherent->lire) {
|
||||
throw new RestException(401);
|
||||
}
|
||||
|
||||
$sql = "SELECT t.rowid";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."adherent_type as t";
|
||||
$sql.= ' WHERE t.entity IN ('.getEntity('adherent', 1).')';
|
||||
|
||||
// Add sql filters
|
||||
if ($sqlfilters)
|
||||
{
|
||||
if (! DolibarrApi::_checkFilters($sqlfilters))
|
||||
{
|
||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
||||
}
|
||||
$regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)';
|
||||
$sql.=" AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||
}
|
||||
|
||||
$sql.= $db->order($sortfield, $sortorder);
|
||||
if ($limit) {
|
||||
if ($page < 0)
|
||||
{
|
||||
$page = 0;
|
||||
}
|
||||
$offset = $limit * $page;
|
||||
|
||||
$sql.= $db->plimit($limit + 1, $offset);
|
||||
}
|
||||
|
||||
$result = $db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$i=0;
|
||||
$num = $db->num_rows($result);
|
||||
$min = min($num, ($limit <= 0 ? $num : $limit));
|
||||
while ($i < $min)
|
||||
{
|
||||
$obj = $db->fetch_object($result);
|
||||
$membertype = new AdherentType($this->db);
|
||||
if ($membertype->fetch($obj->rowid)) {
|
||||
$obj_ret[] = $this->_cleanObjectDatas($membertype);
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw new RestException(503, 'Error when retrieve member type list : '.$db->lasterror());
|
||||
}
|
||||
if ( ! count($obj_ret)) {
|
||||
throw new RestException(404, 'No member type found');
|
||||
}
|
||||
|
||||
return $obj_ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create member type object
|
||||
*
|
||||
* @param array $request_data Request data
|
||||
* @return int ID of member type
|
||||
*/
|
||||
function post($request_data = null)
|
||||
{
|
||||
if (! DolibarrApiAccess::$user->rights->adherent->configurer) {
|
||||
throw new RestException(401);
|
||||
}
|
||||
// Check mandatory fields
|
||||
$result = $this->_validate($request_data);
|
||||
|
||||
$membertype = new AdherentType($this->db);
|
||||
foreach($request_data as $field => $value) {
|
||||
$membertype->$field = $value;
|
||||
}
|
||||
if ($membertype->create(DolibarrApiAccess::$user) < 0) {
|
||||
throw new RestException(500, 'Error creating member type', array_merge(array($membertype->error), $membertype->errors));
|
||||
}
|
||||
return $membertype->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update member type
|
||||
*
|
||||
* @param int $id ID of member type to update
|
||||
* @param array $request_data Datas
|
||||
* @return int
|
||||
*/
|
||||
function put($id, $request_data = null)
|
||||
{
|
||||
if (! DolibarrApiAccess::$user->rights->adherent->configurer) {
|
||||
throw new RestException(401);
|
||||
}
|
||||
|
||||
$membertype = new AdherentType($this->db);
|
||||
$result = $membertype->fetch($id);
|
||||
if( ! $result ) {
|
||||
throw new RestException(404, 'member type not found');
|
||||
}
|
||||
|
||||
if( ! DolibarrApi::_checkAccessToResource('member',$membertype->id,'adherent_type')) {
|
||||
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
|
||||
}
|
||||
|
||||
foreach($request_data as $field => $value) {
|
||||
if ($field == 'id') continue;
|
||||
// Process the status separately because it must be updated using
|
||||
// the validate() and resiliate() methods of the class AdherentType.
|
||||
$membertype->$field = $value;
|
||||
}
|
||||
|
||||
// If there is no error, update() returns the number of affected rows
|
||||
// so if the update is a no op, the return value is zero.
|
||||
if ($membertype->update(DolibarrApiAccess::$user) >= 0)
|
||||
return $this->get($id);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete member type
|
||||
*
|
||||
* @param int $id member type ID
|
||||
* @return array
|
||||
*/
|
||||
function delete($id)
|
||||
{
|
||||
if (! DolibarrApiAccess::$user->rights->adherent->configurer) {
|
||||
throw new RestException(401);
|
||||
}
|
||||
$membertype = new AdherentType($this->db);
|
||||
$result = $membertype->fetch($id);
|
||||
if( ! $result ) {
|
||||
throw new RestException(404, 'member type not found');
|
||||
}
|
||||
|
||||
if ( ! DolibarrApi::_checkAccessToResource('member',$membertype->id,'adherent_type')) {
|
||||
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
|
||||
}
|
||||
|
||||
if (! $membertype->delete($membertype->id)) {
|
||||
throw new RestException(401,'error when deleting member type');
|
||||
}
|
||||
|
||||
return array(
|
||||
'success' => array(
|
||||
'code' => 200,
|
||||
'message' => 'member type deleted'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate fields before creating an object
|
||||
*
|
||||
* @param array|null $data Data to validate
|
||||
* @return array
|
||||
*
|
||||
* @throws RestException
|
||||
*/
|
||||
function _validate($data)
|
||||
{
|
||||
$membertype = array();
|
||||
foreach (MembersTypes::$FIELDS as $field) {
|
||||
if (!isset($data[$field]))
|
||||
throw new RestException(400, "$field field missing");
|
||||
$membertype[$field] = $data[$field];
|
||||
}
|
||||
return $membertype;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean sensible object datas
|
||||
*
|
||||
* @param object $object Object to clean
|
||||
* @return array Array of cleaned object properties
|
||||
*/
|
||||
function _cleanObjectDatas($object) {
|
||||
|
||||
$object = parent::_cleanObjectDatas($object);
|
||||
|
||||
unset($object->cotisation);
|
||||
unset($object->libelle);
|
||||
|
||||
unset($object->import_key);
|
||||
unset($object->array_options);
|
||||
unset($object->linkedObjectsIds);
|
||||
unset($object->context);
|
||||
unset($object->canvas);
|
||||
unset($object->fk_project);
|
||||
unset($object->contact);
|
||||
unset($object->contact_id);
|
||||
unset($object->thirdparty);
|
||||
unset($object->user);
|
||||
unset($object->origin);
|
||||
unset($object->origin_id);
|
||||
unset($object->ref_ext);
|
||||
unset($object->country);
|
||||
unset($object->country_id);
|
||||
unset($object->country_code);
|
||||
unset($object->barcode_type);
|
||||
unset($object->barcode_type_code);
|
||||
unset($object->barcode_type_label);
|
||||
unset($object->barcode_type_coder);
|
||||
unset($object->mode_reglement_id);
|
||||
unset($object->cond_reglement_id);
|
||||
unset($object->cond_reglement);
|
||||
unset($object->fk_delivery_address);
|
||||
unset($object->shipping_method_id);
|
||||
unset($object->modelpdf);
|
||||
unset($object->fk_account);
|
||||
unset($object->note_public);
|
||||
unset($object->note_private);
|
||||
unset($object->fk_incoterms);
|
||||
unset($object->libelle_incoterms);
|
||||
unset($object->location_incoterms);
|
||||
unset($object->name);
|
||||
unset($object->lastname);
|
||||
unset($object->firstname);
|
||||
unset($object->civility_id);
|
||||
unset($object->total_ht);
|
||||
unset($object->total_tva);
|
||||
unset($object->total_localtax1);
|
||||
unset($object->total_localtax2);
|
||||
unset($object->total_ttc);
|
||||
|
||||
return $object;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
|
||||
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
* Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
||||
/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
|
||||
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2017 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
* Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -55,7 +55,7 @@ $pagenext = $page + 1;
|
||||
if (! $sortorder) { $sortorder="DESC"; }
|
||||
if (! $sortfield) { $sortfield="d.lastname"; }
|
||||
|
||||
$label=GETPOST("libelle","alpha");
|
||||
$label=GETPOST("label","alpha");
|
||||
$subscription=GETPOST("subscription","int");
|
||||
$vote=GETPOST("vote","int");
|
||||
$comment=GETPOST("comment");
|
||||
@@ -93,17 +93,17 @@ if ($action == 'add' && $user->rights->adherent->configurer)
|
||||
{
|
||||
$object = new AdherentType($db);
|
||||
|
||||
$object->libelle = trim($label);
|
||||
$object->subscription = (int) trim($subscription);
|
||||
$object->note = trim($comment);
|
||||
$object->mail_valid = (boolean) trim($mail_valid);
|
||||
$object->vote = (boolean) trim($vote);
|
||||
$object->label = trim($label);
|
||||
$object->subscription = (int) trim($subscription);
|
||||
$object->note = trim($comment);
|
||||
$object->mail_valid = (boolean) trim($mail_valid);
|
||||
$object->vote = (boolean) trim($vote);
|
||||
|
||||
// Fill array 'array_options' with data from add form
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
||||
if ($ret < 0) $error++;
|
||||
|
||||
if ($object->libelle)
|
||||
if ($object->label)
|
||||
{
|
||||
$id=$object->create($user);
|
||||
if ($id > 0)
|
||||
@@ -131,7 +131,7 @@ if ($action == 'update' && $user->rights->adherent->configurer)
|
||||
{
|
||||
$object = new AdherentType($db);
|
||||
$object->id = $rowid;
|
||||
$object->libelle = trim($label);
|
||||
$object->label = trim($label);
|
||||
$object->subscription = (int) trim($subscription);
|
||||
$object->note = trim($comment);
|
||||
$object->mail_valid = (boolean) trim($mail_valid);
|
||||
@@ -171,7 +171,7 @@ if (! $rowid && $action != 'create' && $action != 'edit')
|
||||
{
|
||||
//dol_fiche_head('');
|
||||
|
||||
$sql = "SELECT d.rowid, d.libelle, d.subscription, d.vote";
|
||||
$sql = "SELECT d.rowid, d.libelle as label, d.subscription, d.vote";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."adherent_type as d";
|
||||
$sql.= " WHERE d.entity IN (".getEntity().")";
|
||||
|
||||
@@ -180,11 +180,11 @@ if (! $rowid && $action != 'create' && $action != 'edit')
|
||||
{
|
||||
$num = $db->num_rows($result);
|
||||
$nbtotalofrecords = $num;
|
||||
|
||||
|
||||
$i = 0;
|
||||
|
||||
$param = '';
|
||||
|
||||
|
||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||
if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
@@ -193,14 +193,14 @@ if (! $rowid && $action != 'create' && $action != 'edit')
|
||||
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
||||
print '<input type="hidden" name="page" value="'.$page.'">';
|
||||
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
||||
|
||||
|
||||
print_barre_liste($langs->trans("MembersTypes"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_generic.png', 0, '', '', $limit);
|
||||
|
||||
|
||||
$moreforfilter = '';
|
||||
|
||||
|
||||
print '<div class="div-table-responsive">';
|
||||
print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
|
||||
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
print '<th>'.$langs->trans("Ref").'</th>';
|
||||
print '<th>'.$langs->trans("Label").'</th>';
|
||||
@@ -214,7 +214,7 @@ if (! $rowid && $action != 'create' && $action != 'edit')
|
||||
$objp = $db->fetch_object($result);
|
||||
print '<tr class="oddeven">';
|
||||
print '<td><a href="'.$_SERVER["PHP_SELF"].'?rowid='.$objp->rowid.'">'.img_object($langs->trans("ShowType"),'group').' '.$objp->rowid.'</a></td>';
|
||||
print '<td>'.dol_escape_htmltag($objp->libelle).'</td>';
|
||||
print '<td>'.dol_escape_htmltag($objp->label).'</td>';
|
||||
print '<td align="center">'.yn($objp->subscription).'</td>';
|
||||
print '<td align="center">'.yn($objp->vote).'</td>';
|
||||
if ($user->rights->adherent->configurer)
|
||||
@@ -226,7 +226,7 @@ if (! $rowid && $action != 'create' && $action != 'edit')
|
||||
}
|
||||
print "</table>";
|
||||
print '</div>';
|
||||
|
||||
|
||||
print '</form>';
|
||||
}
|
||||
else
|
||||
@@ -256,7 +256,7 @@ if ($action == 'create')
|
||||
print '<table class="border" width="100%">';
|
||||
print '<tbody>';
|
||||
|
||||
print '<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans("Label").'</td><td><input type="text" name="libelle" size="40"></td></tr>';
|
||||
print '<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans("Label").'</td><td><input type="text" name="label" size="40"></td></tr>';
|
||||
|
||||
print '<tr><td>'.$langs->trans("SubscriptionRequired").'</td><td>';
|
||||
print $form->selectyesno("subscription",1,1);
|
||||
@@ -316,10 +316,10 @@ if ($rowid > 0)
|
||||
$linkback = '<a href="'.DOL_URL_ROOT.'/adherents/type.php">'.$langs->trans("BackToList").'</a>';
|
||||
|
||||
dol_banner_tab($object, 'rowid', $linkback);
|
||||
|
||||
|
||||
print '<div class="fichecenter">';
|
||||
print '<div class="underbanner clearboth"></div>';
|
||||
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
print '<tr><td class="titlefield">'.$langs->trans("SubscriptionRequired").'</td><td>';
|
||||
@@ -347,7 +347,7 @@ if ($rowid > 0)
|
||||
|
||||
print '</table>';
|
||||
print '</div>';
|
||||
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
|
||||
@@ -460,7 +460,7 @@ if ($rowid > 0)
|
||||
{
|
||||
$membertype=new AdherentType($db);
|
||||
$result=$membertype->fetch($type);
|
||||
$titre.=" (".$membertype->libelle.")";
|
||||
$titre.=" (".$membertype->label.")";
|
||||
}
|
||||
|
||||
$param="&rowid=".$rowid;
|
||||
@@ -478,12 +478,12 @@ if ($rowid > 0)
|
||||
|
||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||
print '<input class="flat" type="hidden" name="rowid" value="'.$rowid.'" size="12"></td>';
|
||||
|
||||
|
||||
print '<br>';
|
||||
print_barre_liste('',$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords);
|
||||
|
||||
|
||||
$moreforfilter = '';
|
||||
|
||||
|
||||
print '<div class="div-table-responsive">';
|
||||
print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
|
||||
|
||||
@@ -548,7 +548,7 @@ if ($rowid > 0)
|
||||
// Type
|
||||
/*print '<td class="nowrap">';
|
||||
$membertypestatic->id=$objp->type_id;
|
||||
$membertypestatic->libelle=$objp->type;
|
||||
$membertypestatic->label=$objp->type;
|
||||
print $membertypestatic->getNomUrl(1,12);
|
||||
print '</td>';
|
||||
*/
|
||||
@@ -613,7 +613,7 @@ if ($rowid > 0)
|
||||
print "</table>\n";
|
||||
print '</div>';
|
||||
print '</form>';
|
||||
|
||||
|
||||
if ($num > $conf->liste_limit)
|
||||
{
|
||||
print_barre_liste('',$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords,'');
|
||||
@@ -652,7 +652,7 @@ if ($rowid > 0)
|
||||
|
||||
print '<tr><td width="15%">'.$langs->trans("Ref").'</td><td>'.$object->id.'</td></tr>';
|
||||
|
||||
print '<tr><td>'.$langs->trans("Label").'</td><td><input type="text" name="libelle" size="40" value="'.dol_escape_htmltag($object->libelle).'"></td></tr>';
|
||||
print '<tr><td>'.$langs->trans("Label").'</td><td><input type="text" name="label" size="40" value="'.dol_escape_htmltag($object->label).'"></td></tr>';
|
||||
|
||||
print '<tr><td>'.$langs->trans("SubscriptionRequired").'</td><td>';
|
||||
print $form->selectyesno("subscription",$object->subscription,1);
|
||||
|
||||
@@ -429,23 +429,23 @@ class Form
|
||||
if ($direction > 0) { $extracss=($extracss?$extracss.' ':'').'inline-block'; $extrastyle='padding: 0px; padding-right: 3px !important;'; }
|
||||
|
||||
$classfortooltip='classfortooltip';
|
||||
|
||||
|
||||
$s='';$textfordialog='';
|
||||
|
||||
|
||||
$htmltext=str_replace('"',""",$htmltext);
|
||||
if ($tooltiptrigger != '')
|
||||
if ($tooltiptrigger != '')
|
||||
{
|
||||
$classfortooltip='classfortooltiponclick';
|
||||
$textfordialog.='<div style="display: none;" id="idfortooltiponclick_'.$tooltiptrigger.'" class="classfortooltiponclicktext">'.$htmltext.'</div>';
|
||||
}
|
||||
if ($tooltipon == 2 || $tooltipon == 3)
|
||||
if ($tooltipon == 2 || $tooltipon == 3)
|
||||
{
|
||||
$paramfortooltipimg=' class="'.$classfortooltip.' inline-block'.($extracss?' '.$extracss:'').'" style="padding: 0px;'.($extrastyle?' '.$extrastyle:'').'"';
|
||||
if ($tooltiptrigger == '') $paramfortooltipimg.=' title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on img tag to store tooltip
|
||||
else $paramfortooltipimg.=' dolid="'.$tooltiptrigger.'"';
|
||||
}
|
||||
else $paramfortooltipimg =($extracss?' class="'.$extracss.'"':'').($extrastyle?' style="'.$extrastyle.'"':''); // Attribut to put on td text tag
|
||||
if ($tooltipon == 1 || $tooltipon == 3)
|
||||
if ($tooltipon == 1 || $tooltipon == 3)
|
||||
{
|
||||
$paramfortooltiptd=' class="'.($tooltipon == 3 ? 'cursorpointer ' : '').$classfortooltip.' inline-block'.($extracss?' '.$extracss:'').'" style="padding: 0px;'.($extrastyle?' '.$extrastyle:'').'" ';
|
||||
if ($tooltiptrigger == '') $paramfortooltiptd.=' title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td tag to store tooltip
|
||||
@@ -496,7 +496,7 @@ class Form
|
||||
|
||||
$alt = '';
|
||||
if ($tooltiptrigger) $alt=$langs->trans("ClickToShowHelp");
|
||||
|
||||
|
||||
//For backwards compatibility
|
||||
if ($type == '0') $type = 'info';
|
||||
elseif ($type == '1') $type = 'help';
|
||||
@@ -577,16 +577,16 @@ class Form
|
||||
jQuery(".massaction").hide();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
jQuery(document).ready(function () {
|
||||
initCheckForSelect();
|
||||
jQuery(".checkforselect").click(function() {
|
||||
initCheckForSelect();
|
||||
});
|
||||
jQuery(".massactionselect").change(function() {
|
||||
var massaction = $( this ).val();
|
||||
var massaction = $( this ).val();
|
||||
var urlform = $( this ).closest("form").attr("action").replace("#show_files","");
|
||||
if (massaction == "builddoc")
|
||||
if (massaction == "builddoc")
|
||||
{
|
||||
urlform = urlform + "#show_files";
|
||||
}
|
||||
@@ -1034,7 +1034,7 @@ class Form
|
||||
{
|
||||
global $conf,$user,$langs;
|
||||
|
||||
$out='';
|
||||
$out='';
|
||||
$num=0;
|
||||
$outarray=array();
|
||||
|
||||
@@ -1077,7 +1077,7 @@ class Form
|
||||
if ($resql)
|
||||
{
|
||||
$events = null;
|
||||
|
||||
|
||||
if ($conf->use_javascript_ajax && ! $forcecombo)
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
|
||||
@@ -3450,7 +3450,7 @@ class Form
|
||||
$cat = new Categorie($this->db);
|
||||
$cate_arbo = $cat->get_full_arbo($type,$excludeafterid);
|
||||
}
|
||||
|
||||
|
||||
$output = '<select class="flat" name="'.$htmlname.'">';
|
||||
$outarray=array();
|
||||
if (is_array($cate_arbo))
|
||||
@@ -4178,7 +4178,7 @@ class Form
|
||||
}
|
||||
print '</div>';
|
||||
}
|
||||
if ($more)
|
||||
if ($more)
|
||||
{
|
||||
print '<div class="inline-block">';
|
||||
print $more;
|
||||
@@ -4923,7 +4923,7 @@ class Form
|
||||
* @param int $iSecond Default preselected duration (number of seconds or '')
|
||||
* @param int $disabled Disable the combo box
|
||||
* @param string $typehour If 'select' then input hour and input min is a combo,
|
||||
* if 'text' input hour is in text and input min is a text,
|
||||
* if 'text' input hour is in text and input min is a text,
|
||||
* if 'textselect' input hour is in text and input min is a combo
|
||||
* @param integer $minunderhours If 1, show minutes selection under the hours
|
||||
* @param int $nooutput Do not output html string but return it
|
||||
@@ -4968,7 +4968,7 @@ class Form
|
||||
|
||||
if ($typehour!='text') $retstring.=' '.$langs->trans('HourShort');
|
||||
else $retstring.=':';
|
||||
|
||||
|
||||
// Minutes
|
||||
if ($minunderhours) $retstring.='<br>';
|
||||
else $retstring.=" ";
|
||||
@@ -4988,7 +4988,7 @@ class Form
|
||||
{
|
||||
$retstring.='<input placeholder="'.$langs->trans('MinuteShort').'" type="number" min="0" size="1" name="'.$prefix.'min"'.($disabled?' disabled':'').' class="flat maxwidth50" value="'.(($minSelected != '')?((int) $minSelected):'').'">';
|
||||
}
|
||||
|
||||
|
||||
if ($typehour!='text') $retstring.=' '.$langs->trans('MinuteShort');
|
||||
|
||||
//$retstring.=" ";
|
||||
@@ -5594,7 +5594,7 @@ class Form
|
||||
{
|
||||
$listofidcompanytoscan=$object->thirdparty->id;
|
||||
if (($object->thirdparty->parent > 0) && ! empty($conf->global->THIRDPARTY_INCLUDE_PARENT_IN_LINKTO)) $listofidcompanytoscan.=','.$object->thirdparty->parent;
|
||||
|
||||
|
||||
$possiblelinks=array(
|
||||
'propal'=>array('enabled'=>$conf->propal->enabled, 'perms'=>1, 'label'=>'LinkToProposal', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_client, t.total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."propal as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('propal',1).')'),
|
||||
'order'=>array('enabled'=>$conf->commande->enabled, 'perms'=>1, 'label'=>'LinkToOrder', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_client, t.total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."commande as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('commande',1).')'),
|
||||
@@ -5606,7 +5606,7 @@ class Form
|
||||
'invoice_supplier'=>array('enabled'=>$conf->fournisseur->facture->enabled , 'perms'=>1, 'label'=>'LinkToSupplierInvoice', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_supplier, t.total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture_fourn as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('facture_fourn',1).')')
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
global $action;
|
||||
|
||||
// Can complete the possiblelink array
|
||||
@@ -5845,7 +5845,7 @@ class Form
|
||||
|
||||
//print "paramid=$paramid,morehtml=$morehtml,shownav=$shownav,$fieldid,$fieldref,$morehtmlref,$moreparam";
|
||||
$object->load_previous_next_ref((isset($object->next_prev_filter)?$object->next_prev_filter:''),$fieldid,$nodbprefix);
|
||||
|
||||
|
||||
$navurl = $_SERVER["PHP_SELF"];
|
||||
// Special case for project/task page
|
||||
if ($paramid == 'project_ref')
|
||||
@@ -5902,11 +5902,15 @@ class Form
|
||||
}
|
||||
else if (in_array($object->element, array('action', 'agenda')))
|
||||
{
|
||||
$ret.=$object->ref.'<br>'.$object->label;
|
||||
$ret.=$object->ref.'<br>'.$object->label;
|
||||
}
|
||||
else if (in_array($object->element, array('adherent_type')))
|
||||
{
|
||||
$ret.=$object->label;
|
||||
}
|
||||
else if ($fieldref != 'none') $ret.=dol_htmlentities($object->$fieldref);
|
||||
|
||||
|
||||
|
||||
|
||||
if ($morehtmlref)
|
||||
{
|
||||
$ret.=' '.$morehtmlref;
|
||||
@@ -6207,7 +6211,7 @@ class Form
|
||||
return $out;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Return HTML to show the search and clear seach button
|
||||
*
|
||||
@@ -6216,7 +6220,7 @@ class Form
|
||||
function showFilterButtons()
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
|
||||
$out='<div class="nowrap">';
|
||||
$out.='<input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
||||
$out.='<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
|
||||
@@ -6235,7 +6239,7 @@ class Form
|
||||
function showCheckAddButtons($cssclass='checkforaction', $calljsfunction=0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
|
||||
$out='';
|
||||
if (! empty($conf->use_javascript_ajax)) $out.='<div class="inline-block checkallactions"><input type="checkbox" id="checkallactions" name="checkallactions" class="checkallactions"></div>';
|
||||
$out.='<script type="text/javascript">
|
||||
|
||||
@@ -102,14 +102,14 @@ function getDoliDBInstance($type, $host, $user, $pass, $name, $port)
|
||||
/**
|
||||
* Get list of entity id to use
|
||||
*
|
||||
* @param string $element Current element
|
||||
* 'societe', 'socpeople', 'actioncomm', 'agenda', 'resource',
|
||||
* @param string $element Current element
|
||||
* 'societe', 'socpeople', 'actioncomm', 'agenda', 'resource',
|
||||
* 'product', 'productprice', 'stock',
|
||||
* 'propal', 'supplier_proposal', 'facture', 'facture_fourn',
|
||||
* 'categorie', 'bank_account', 'bank_account', 'adherent', 'user',
|
||||
* 'categorie', 'bank_account', 'bank_account', 'adherent', 'user',
|
||||
* 'commande', 'commande_fournisseur', 'expedition', 'intervention', 'survey',
|
||||
* 'contract', 'tax', 'expensereport', 'holiday', 'multicurrency', 'project',
|
||||
* 'email_template', 'event',
|
||||
* 'email_template', 'event',
|
||||
* @param int $shared 0=Return id of entity, 1=Return id entity + shared entities
|
||||
* @return mixed Entity id(s) to use
|
||||
*/
|
||||
@@ -121,7 +121,7 @@ function getEntity($element=false, $shared=0)
|
||||
if ($element == 'actioncomm') $element='agenda';
|
||||
if ($element == 'fichinter') $element='intervention';
|
||||
if ($element == 'categorie') $element='category';
|
||||
|
||||
|
||||
if (is_object($mc))
|
||||
{
|
||||
return $mc->getEntity($element, $shared);
|
||||
@@ -240,7 +240,7 @@ function dol_shutdown()
|
||||
* Return value of a param into GET or POST supervariable.
|
||||
* Use the property $user->default_values[path]['creatform'] and/or $user->default_values[path]['filters'] and/or $user->default_values[path]['sortorder']
|
||||
* Note: The property $user->default_values is loaded by the main when loading the user.
|
||||
*
|
||||
*
|
||||
* @param string $paramname Name of parameter to found
|
||||
* @param string $check Type of check
|
||||
* ''=no check (deprecated)
|
||||
@@ -257,29 +257,29 @@ function dol_shutdown()
|
||||
* @param int $filter Filter to apply when $check is set to 'custom'. (See http://php.net/manual/en/filter.filters.php for détails)
|
||||
* @param mixed $options Options to pass to filter_var when $check is set to 'custom'.
|
||||
* @return string|string[] Value found (string or array), or '' if check fails
|
||||
*
|
||||
*
|
||||
* @TODO Set default value for check to alpha. Check all WYSIWYG edition (email and description...) is still ok with rich text.
|
||||
*/
|
||||
function GETPOST($paramname, $check='', $method=0, $filter=NULL, $options=NULL)
|
||||
{
|
||||
global $mysoc,$user,$conf;
|
||||
|
||||
|
||||
if (empty($paramname)) return 'BadFirstParameterForGETPOST';
|
||||
|
||||
|
||||
if (empty($method)) $out = isset($_GET[$paramname])?$_GET[$paramname]:(isset($_POST[$paramname])?$_POST[$paramname]:'');
|
||||
elseif ($method==1) $out = isset($_GET[$paramname])?$_GET[$paramname]:'';
|
||||
elseif ($method==2) $out = isset($_POST[$paramname])?$_POST[$paramname]:'';
|
||||
elseif ($method==3) $out = isset($_POST[$paramname])?$_POST[$paramname]:(isset($_GET[$paramname])?$_GET[$paramname]:'');
|
||||
elseif ($method==4) $out = isset($_POST[$paramname])?$_POST[$paramname]:(isset($_GET[$paramname])?$_GET[$paramname]:(isset($_COOKIE[$paramname])?$_COOKIE[$paramname]:''));
|
||||
else return 'BadThirdParameterForGETPOST';
|
||||
|
||||
|
||||
if (empty($method) || $method == 3 || $method == 4)
|
||||
{
|
||||
$relativepathstring = $_SERVER["PHP_SELF"];
|
||||
if (constant('DOL_URL_ROOT')) $relativepathstring = preg_replace('/^'.preg_quote(constant('DOL_URL_ROOT'),'/').'/', '', $relativepathstring);
|
||||
$relativepathstring = preg_replace('/^custom\//', '', $relativepathstring);
|
||||
$relativepathstring = preg_replace('/^\//', '', $relativepathstring);
|
||||
|
||||
|
||||
// Code for search criteria persistence.
|
||||
// Retrieve values if restore_lastsearch_values is set and there is saved values
|
||||
if (! empty($_GET['restore_lastsearch_values']) && ! empty($_SESSION['lastsearch_values_'.$relativepathstring])) // Keep $_GET here
|
||||
@@ -347,16 +347,16 @@ function GETPOST($paramname, $check='', $method=0, $filter=NULL, $options=NULL)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (empty($check) && ! empty($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL >= 2)
|
||||
{
|
||||
dol_syslog("Deprecated use of GETPOST, called with 1st param = ".$paramname." and 2nd param not defined, when calling page ".$_SERVER["PHP_SELF"], LOG_WARNING);
|
||||
dol_syslog("Deprecated use of GETPOST, called with 1st param = ".$paramname." and 2nd param not defined, when calling page ".$_SERVER["PHP_SELF"], LOG_WARNING);
|
||||
// Enable this line to know who call the GETPOST with empty $check parameter.
|
||||
//var_dump(debug_backtrace()[0]);
|
||||
}
|
||||
|
||||
|
||||
if (! empty($check))
|
||||
{
|
||||
// Replace vars like __DAY__, __MONTH__, __YEAR__, __MYCOUNTRYID__, __USERID__, __ENTITYID__, ...
|
||||
@@ -457,7 +457,7 @@ function GETPOST($paramname, $check='', $method=0, $filter=NULL, $options=NULL)
|
||||
// We save search key only if:
|
||||
// - not empty, or
|
||||
// - if value is empty and a default value exists that is not empty (it means we did a filter to an empty value when default was not).
|
||||
|
||||
|
||||
//if (! empty($out) || ! empty($user->default_values[$relativepathstring]['filters'][$paramname]))
|
||||
if (! empty($out))
|
||||
{
|
||||
@@ -465,7 +465,7 @@ function GETPOST($paramname, $check='', $method=0, $filter=NULL, $options=NULL)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
@@ -475,13 +475,13 @@ function GETPOST($paramname, $check='', $method=0, $filter=NULL, $options=NULL)
|
||||
* This prefix is unique for instance and avoid conflict between multi-instances,
|
||||
* even when having two instances with one root dir or two instances in virtual servers.
|
||||
*
|
||||
* @param string $mode '' (prefix for session name) or 'email' (prefix for email id)
|
||||
* @param string $mode '' (prefix for session name) or 'email' (prefix for email id)
|
||||
* @return string A calculated prefix
|
||||
*/
|
||||
function dol_getprefix($mode='')
|
||||
{
|
||||
global $conf;
|
||||
|
||||
|
||||
// If MAIL_PREFIX_FOR_EMAIL_ID is set and prefix is for email
|
||||
if ($mode == 'email' && ! empty($conf->global->MAIL_PREFIX_FOR_EMAIL_ID))
|
||||
{
|
||||
@@ -629,7 +629,7 @@ function dol_clone($object)
|
||||
|
||||
//$myclone = clone $object; // PHP clone is a shallow copy only, not a real clone, so properties of references will keep references (refer to the same target/variable
|
||||
$myclone=unserialize(serialize($object));
|
||||
|
||||
|
||||
return $myclone;
|
||||
}
|
||||
|
||||
@@ -1134,7 +1134,7 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
|
||||
global $conf, $form, $user, $langs;
|
||||
|
||||
$error = 0;
|
||||
|
||||
|
||||
$maxvisiblephotos=1;
|
||||
$showimage=1;
|
||||
$showbarcode=empty($conf->barcode->enabled)?0:($object->barcode?1:0);
|
||||
@@ -1206,7 +1206,7 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
|
||||
$fileimage = $file.'_preview.png'; // If PDF has 1 page
|
||||
$fileimagebis = $file.'_preview-0.png'; // If PDF has more than one page
|
||||
$relativepathimage = $relativepath.'_preview.png';
|
||||
|
||||
|
||||
// Si fichier PDF existe
|
||||
if (file_exists($file))
|
||||
{
|
||||
@@ -1249,7 +1249,7 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
|
||||
$morehtmlleft.='</div>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (! $phototoshow && $conf->browser->layout != 'phone') // Show No photo link (picto of pbject)
|
||||
{
|
||||
$morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">';
|
||||
@@ -1271,12 +1271,12 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($showbarcode) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$form->showbarcode($object).'</div>';
|
||||
|
||||
|
||||
if ($object->element == 'societe')
|
||||
{
|
||||
if (! empty($conf->use_javascript_ajax) && $user->rights->societe->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE))
|
||||
if (! empty($conf->use_javascript_ajax) && $user->rights->societe->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE))
|
||||
{
|
||||
$morehtmlstatus.=ajax_object_onoff($object, 'status', 'status', 'InActivity', 'ActivityCeased');
|
||||
}
|
||||
@@ -1303,7 +1303,7 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
|
||||
if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3) || $conf->browser->layout=='phone') $tmptxt=$object->getLibStatut(5, $object->totalpaye);
|
||||
$morehtmlstatus.=$tmptxt;
|
||||
}
|
||||
elseif ($object->element == 'contrat' || $object->element == 'contract')
|
||||
elseif ($object->element == 'contrat' || $object->element == 'contract')
|
||||
{
|
||||
if ($object->statut==0) $morehtmlstatus.=$object->getLibStatut(2);
|
||||
else $morehtmlstatus.=$object->getLibStatut(4);
|
||||
@@ -1314,14 +1314,14 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
|
||||
$morehtmlstatus.=$tmptxt;
|
||||
}
|
||||
if (! empty($object->name_alias)) $morehtmlref.='<div class="refidno">'.$object->name_alias.'</div>'; // For thirdparty
|
||||
|
||||
|
||||
// Add label
|
||||
if ($object->element == 'product' || $object->element == 'bank_account' || $object->element == 'project_task')
|
||||
{
|
||||
if (! empty($object->label)) $morehtmlref.='<div class="refidno">'.$object->label.'</div>';
|
||||
}
|
||||
|
||||
if ($object->element != 'product' && $object->element != 'bookmark')
|
||||
|
||||
if ($object->element != 'product' && $object->element != 'bookmark')
|
||||
{
|
||||
$morehtmlref.='<div class="refidno">';
|
||||
$morehtmlref.=$object->getBannerAddress('refaddress',$object);
|
||||
@@ -1333,7 +1333,7 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
|
||||
$morehtmlref.=$langs->trans("TechnicalID").': '.$object->id;
|
||||
$morehtmlref.='</div>';
|
||||
}
|
||||
|
||||
|
||||
print '<div class="'.($onlybanner?'arearefnobottom ':'arearef ').'heightref valignmiddle" width="100%">';
|
||||
print $form->showrefnav($object, $paramid, $morehtml, $shownav, $fieldid, $fieldref, $morehtmlref, $moreparam, $nodbprefix, $morehtmlleft, $morehtmlstatus, $morehtmlright);
|
||||
print '</div>';
|
||||
@@ -3095,7 +3095,7 @@ function info_admin($text, $infoonimgalt = 0, $nodiv=0, $admin='1')
|
||||
{
|
||||
return img_picto($text, 'info', 'class="hideonsmartphone"');
|
||||
}
|
||||
|
||||
|
||||
return ($nodiv?'':'<div class="'.(empty($admin)?'':($admin=='1'?'info':$admin)).' hideonsmartphone">').'<span class="fa fa-info-circle" title="'.dol_escape_htmltag($admin?$langs->trans('InfoAdmin'):$langs->trans('Note')).'"></span> '.$text.($nodiv?'':'</div>');
|
||||
}
|
||||
|
||||
@@ -3293,7 +3293,7 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m
|
||||
$field1=trim($tmpfield[0]); // If $field is 'd.datep,d.id', it becomes 'd.datep'
|
||||
|
||||
//var_dump('field='.$field.' field1='.$field1.' sortfield='.$sortfield.' sortfield1='.$sortfield1);
|
||||
|
||||
|
||||
// If field is used as sort criteria we use a specific css class liste_titre_sel
|
||||
// Example if (sortfield,field)=("nom","xxx.nom") or (sortfield,field)=("nom","nom")
|
||||
if ($field1 && ($sortfield1 == $field1 || $sortfield1 == preg_replace("/^[^\.]+\./","",$field1))) $out.= '<'.$tag.' class="'.$prefix.'liste_titre_sel" '. $moreattrib.'>';
|
||||
@@ -3441,7 +3441,7 @@ function load_fiche_titre($titre, $morehtmlright='', $picto='title_generic.png',
|
||||
* @param string $options More parameters for links ('' by default, does not include sortfield neither sortorder)
|
||||
* @param string $sortfield Field to sort on ('' by default)
|
||||
* @param string $sortorder Order to sort ('' by default)
|
||||
* @param string $center String in the middle ('' by default). We often find here string $massaction comming from $form->selectMassAction()
|
||||
* @param string $center String in the middle ('' by default). We often find here string $massaction comming from $form->selectMassAction()
|
||||
* @param int $num Number of records found by select with limit+1
|
||||
* @param int|string $totalnboflines Total number of records/lines for all pages (if known). Use a negative value of number to not show number. Use '' if unknown.
|
||||
* @param string $picto Icon to use before title (should be a 32x32 transparent png file)
|
||||
@@ -3965,7 +3965,7 @@ function get_localtax($vatrate, $local, $thirdparty_buyer="", $thirdparty_seller
|
||||
{
|
||||
$conf->global->MAIN_GET_LOCALTAXES_VALUES_FROM_THIRDPARTY = 1;
|
||||
}
|
||||
|
||||
|
||||
// Search local taxes
|
||||
if (! empty($conf->global->MAIN_GET_LOCALTAXES_VALUES_FROM_THIRDPARTY))
|
||||
{
|
||||
@@ -4210,7 +4210,7 @@ function getLocalTaxesFromRate($vatrate, $local, $buyer, $seller, $firstparamisi
|
||||
/**
|
||||
* Return vat rate of a product in a particular selling country or default country vat if product is unknown
|
||||
* Function called by get_default_tva
|
||||
*
|
||||
*
|
||||
* @param int $idprod Id of product or 0 if not a predefined product
|
||||
* @param Societe $thirdparty_seller Thirdparty with a ->country_code defined (FR, US, IT, ...)
|
||||
* @param int $idprodfournprice Id product_fournisseur_price (for "supplier" order/invoice)
|
||||
@@ -4248,7 +4248,7 @@ function get_product_vat_for_country($idprod, $thirdparty_seller, $idprodfournpr
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO Read default product vat according to countrycode and product. Vat for couple countrycode/product is a feature not implemeted yet.
|
||||
// TODO Read default product vat according to countrycode and product. Vat for couple countrycode/product is a feature not implemeted yet.
|
||||
// May be usefull/required if hidden option SERVICE_ARE_ECOMMERCE_200238EC is on
|
||||
}
|
||||
}
|
||||
@@ -5020,9 +5020,9 @@ function make_substitutions($text, $substitutionarray, $outputlangs=null)
|
||||
global $conf, $langs;
|
||||
|
||||
if (! is_array($substitutionarray)) return 'ErrorBadParameterSubstitutionArrayWhenCalling_make_substitutions';
|
||||
|
||||
|
||||
if (empty($outputlangs)) $outputlangs=$langs;
|
||||
|
||||
|
||||
// Make substitution for language keys
|
||||
if (is_object($outputlangs))
|
||||
{
|
||||
@@ -5030,10 +5030,10 @@ function make_substitutions($text, $substitutionarray, $outputlangs=null)
|
||||
{
|
||||
$msgishtml = 0;
|
||||
if (dol_textishtml($text,1)) $msgishtml = 1;
|
||||
$text = preg_replace('/__\('.preg_quote($reg[1]).'\)__/', $msgishtml?dol_htmlentitiesbr($outputlangs->transnoentitiesnoconv($reg[1])):$outputlangs->transnoentitiesnoconv($reg[1]), $text);
|
||||
$text = preg_replace('/__\('.preg_quote($reg[1]).'\)__/', $msgishtml?dol_htmlentitiesbr($outputlangs->transnoentitiesnoconv($reg[1])):$outputlangs->transnoentitiesnoconv($reg[1]), $text);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Make substitition for array $substitutionarray
|
||||
foreach ($substitutionarray as $key => $value)
|
||||
{
|
||||
@@ -5046,7 +5046,7 @@ function make_substitutions($text, $substitutionarray, $outputlangs=null)
|
||||
|
||||
/**
|
||||
* Complete the $substitutionarray with more entries.
|
||||
* Can also add substitution keys coming from external module that had set the "substitutions=1" into module_part array. In this case, method completesubstitutionarray provided by module is called.
|
||||
* Can also add substitution keys coming from external module that had set the "substitutions=1" into module_part array. In this case, method completesubstitutionarray provided by module is called.
|
||||
*
|
||||
* @param array $substitutionarray Array substitution old value => new value value
|
||||
* @param Translate $outputlangs Output language
|
||||
@@ -5067,7 +5067,7 @@ function complete_substitutions_array(&$substitutionarray, $outputlangs, $object
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
||||
// Add a substitution key for each extrafields, using key __EXTRA_XXX__
|
||||
if (is_object($object) && is_array($object->array_options))
|
||||
{
|
||||
@@ -5079,7 +5079,7 @@ function complete_substitutions_array(&$substitutionarray, $outputlangs, $object
|
||||
$substitutionarray['%EXTRA_'.$keyshort.'%']=$val;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Check if there is external substitution to do, requested by plugins
|
||||
$dirsubstitutions=array_merge(array(),(array) $conf->modules_parts['substitutions']);
|
||||
|
||||
@@ -5615,8 +5615,8 @@ function dol_eval($s, $returnvalue=0, $hideerrors=1)
|
||||
global $rights;
|
||||
global $object;
|
||||
global $mysoc;
|
||||
|
||||
global $obj; // To get $obj used into list when dol_eval is used for computed fields and $obj is not yet $object
|
||||
|
||||
global $obj; // To get $obj used into list when dol_eval is used for computed fields and $obj is not yet $object
|
||||
global $soc; // For backward compatibility
|
||||
|
||||
//print $s."<br>\n";
|
||||
@@ -5827,7 +5827,7 @@ function printCommonFooter($zone='private')
|
||||
this.href=this.href+\'&page_y=\'+page_y;
|
||||
});'."\n";
|
||||
print '});'."\n";
|
||||
|
||||
|
||||
if (empty($conf->dol_use_jmobile))
|
||||
{
|
||||
print '<!-- Set handler to switch left menu page (menuhider) -->'."\n";
|
||||
@@ -5837,7 +5837,7 @@ function printCommonFooter($zone='private')
|
||||
print " $('.login_block').toggle();";
|
||||
print '});'."\n";
|
||||
}
|
||||
|
||||
|
||||
print '</script>'."\n";
|
||||
}
|
||||
|
||||
@@ -6000,9 +6000,9 @@ function natural_search($fields, $value, $mode=0, $nofirstand=0)
|
||||
{
|
||||
$value=preg_replace('/([<>=]+)\s+([0-9'.preg_quote($langs->trans("DecimalSeparator"),'/').'\-])/','\1\2',$value); // Clean string '< 10' into '<10' so we can the explode on space to get all tests to do
|
||||
}
|
||||
|
||||
|
||||
$value = preg_replace('/\s*\|\s*/','|', $value);
|
||||
|
||||
|
||||
$crits = explode(' ', $value);
|
||||
$res = '';
|
||||
if (! is_array($fields)) $fields = array($fields);
|
||||
@@ -6125,7 +6125,7 @@ function getImageFileNameForSize($file, $extName, $extImgTarget='')
|
||||
*
|
||||
* @param string $modulepart propal, facture, facture_fourn, ...
|
||||
* @param string $relativepath Relative path of docs.
|
||||
* @param int $alldata Return array with all components (1 is recommended, then use a simple a href link with the class, target and mime attribute added. 'documentpreview' css class is handled by jquery code into main.inc.php)
|
||||
* @param int $alldata Return array with all components (1 is recommended, then use a simple a href link with the class, target and mime attribute added. 'documentpreview' css class is handled by jquery code into main.inc.php)
|
||||
* @param string $param More param on http links
|
||||
* @return string|array Output string with href link or array with all components of link
|
||||
*/
|
||||
@@ -6139,8 +6139,8 @@ function getAdvancedPreviewUrl($modulepart, $relativepath, $alldata=0, $param=''
|
||||
//$mime_preview[]='vnd.oasis.opendocument.presentation';
|
||||
//$mime_preview[]='archive';
|
||||
$num_mime = array_search(dol_mimetype($relativepath, '', 1), $mime_preview);
|
||||
|
||||
if ($alldata == 1)
|
||||
|
||||
if ($alldata == 1)
|
||||
{
|
||||
if ($num_mime !== false) return array('target'=>'_blank', 'css'=>'documentpreview', 'url'=>DOL_URL_ROOT.'/document.php?modulepart='.$modulepart.'&attachment=0&file='.urlencode($relativepath), 'mime'=>dol_mimetype($relativepath), );
|
||||
else return array();
|
||||
|
||||
Reference in New Issue
Block a user