Merge pull request #5638 from atm-florian/3.9_fix_5637

FIX : PgSQL Module Ressource list crash #5637
This commit is contained in:
Laurent Destailleur 2016-08-17 16:34:40 +02:00 committed by GitHub
commit 7e8b8e9462

View File

@ -339,7 +339,7 @@ class Resource extends CommonObject
if ($this->db->query($sql))
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_resources";
$sql.= " WHERE element_type='resource' AND resource_id ='".$this->db->escape($rowid)."'";
$sql.= " WHERE element_type='resource' AND resource_id =".$this->db->escape($rowid);
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
if ($this->db->query($sql))
{
@ -393,7 +393,6 @@ class Resource extends CommonObject
}
}
}
$sql.= " GROUP BY t.rowid";
$sql.= $this->db->order($sortfield,$sortorder);
$this->num_all = 0;
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
@ -410,10 +409,10 @@ class Resource extends CommonObject
$num = $this->db->num_rows($resql);
if ($num)
{
$i = 0;
while ($i < $num)
$this->lines=array();
while ($obj = $this->db->fetch_object($resql))
{
$obj = $this->db->fetch_object($resql);
$line = new Resource($this->db);
$line->id = $obj->rowid;
$line->ref = $obj->ref;
@ -421,8 +420,7 @@ class Resource extends CommonObject
$line->fk_code_type_resource = $obj->fk_code_type_resource;
$line->type_label = $obj->type_label;
$this->lines[$i] = $line;
$i++;
$this->lines[] = $line;
}
$this->db->free($resql);
}
@ -473,7 +471,6 @@ class Resource extends CommonObject
}
}
}
$sql.= " GROUP BY t.rowid";
$sql.= $this->db->order($sortfield,$sortorder);
if ($limit) $sql.= $this->db->plimit($limit+1,$offset);
dol_syslog(get_class($this)."::fetch_all", LOG_DEBUG);
@ -484,10 +481,9 @@ class Resource extends CommonObject
$num = $this->db->num_rows($resql);
if ($num)
{
$i = 0;
while ($i < $num)
$this->lines=array();
while ($obj = $this->db->fetch_object($resql))
{
$obj = $this->db->fetch_object($resql);
$line = new Resource($this->db);
$line->id = $obj->rowid;
$line->resource_id = $obj->resource_id;
@ -502,9 +498,8 @@ class Resource extends CommonObject
$line->objresource = fetchObjectByElement($obj->resource_id,$obj->resource_type);
if($obj->element_id && $obj->element_type)
$line->objelement = fetchObjectByElement($obj->element_id,$obj->element_type);
$this->lines[$i] = $line;
$this->lines[] = $line;
$i++;
}
$this->db->free($resql);
}
@ -559,7 +554,6 @@ class Resource extends CommonObject
}
}
}
$sql.= " GROUP BY t.resource_id";
$sql.= $this->db->order($sortfield,$sortorder);
if ($limit) $sql.= $this->db->plimit($limit+1,$offset);
dol_syslog(get_class($this)."::fetch_all", LOG_DEBUG);
@ -570,10 +564,9 @@ class Resource extends CommonObject
$num = $this->db->num_rows($resql);
if ($num)
{
$i = 0;
while ($i < $num)
$this->lines=array();
while ($obj = $this->db->fetch_object($resql))
{
$obj = $this->db->fetch_object($resql);
$line = new Resource($this->db);
$line->id = $obj->rowid;
$line->resource_id = $obj->resource_id;
@ -584,9 +577,7 @@ class Resource extends CommonObject
$line->mandatory = $obj->mandatory;
$line->fk_user_create = $obj->fk_user_create;
$this->lines[$i] = fetchObjectByElement($obj->resource_id,$obj->resource_type);
$i++;
$this->lines[] = fetchObjectByElement($obj->resource_id,$obj->resource_type);
}
$this->db->free($resql);
}
@ -757,10 +748,13 @@ class Resource extends CommonObject
}
/*
/**
* Return an array with resources linked to the element
*
*
* @param string $element Element
* @param int $element_id Id
* @param string $resource_type Type
* @return array Aray of resources
*/
function getElementResources($element,$element_id,$resource_type='')
{
@ -768,7 +762,7 @@ class Resource extends CommonObject
// Links beetween objects are stored in this table
$sql = 'SELECT rowid, resource_id, resource_type, busy, mandatory';
$sql.= ' FROM '.MAIN_DB_PREFIX.'element_resources';
$sql.= " WHERE element_id='".$element_id."' AND element_type='".$element."'";
$sql.= " WHERE element_id=".$element_id." AND element_type='".$this->db->escape($element)."'";
if($resource_type)
$sql.=" AND resource_type LIKE '%".$resource_type."%'";
$sql .= ' ORDER BY resource_type';