Link class with CRUD methods
This commit is contained in:
parent
d47bb95b56
commit
84d0ab47f8
339
htdocs/link/class/link.class.php
Normal file
339
htdocs/link/class/link.class.php
Normal file
@ -0,0 +1,339 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/link/class/link.class.php
|
||||
* \ingroup link
|
||||
* \brief File for link class
|
||||
*/
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
|
||||
|
||||
|
||||
/**
|
||||
* Class to manage links
|
||||
*/
|
||||
class Link extends CommonObject
|
||||
{
|
||||
public $element = 'link';
|
||||
public $table_element = 'links';
|
||||
|
||||
public $id;
|
||||
public $entity;
|
||||
public $datea;
|
||||
public $url;
|
||||
public $label;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param DoliDB $db Database handler
|
||||
*/
|
||||
public function __construct($db)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$this->db = $db;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create link in database
|
||||
*
|
||||
* @param User $user Object of user that ask creation
|
||||
* @return int >= 0 if OK, < 0 if KO
|
||||
*/
|
||||
public function create($user='')
|
||||
{
|
||||
global $langs,$conf;
|
||||
|
||||
$error=0;
|
||||
$langs->load("errors");
|
||||
// Clean parameters
|
||||
if (empty($this->label)) {
|
||||
$this->label = trim(basename($this->url));
|
||||
}
|
||||
if (empty($this->datea)) {
|
||||
$this->datea = dol_now();
|
||||
}
|
||||
$this->url = trim($this->url);
|
||||
|
||||
dol_syslog(get_class($this)."::create ".$this->url);
|
||||
|
||||
// Check parameters
|
||||
if (empty($this->url)) {
|
||||
$this->error = $langs->trans("NoUrl");
|
||||
return -1;
|
||||
}
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."links (entity, datea, url, label)";
|
||||
$sql .= " VALUES ('".$conf->entity."', '".$this->db->idate($this->datea)."'";
|
||||
$sql .= ", '" . $this->db->escape($this->url) . "'";
|
||||
$sql .= ", '" . $this->db->escape($this->label) . "')";
|
||||
|
||||
dol_syslog(get_class($this)."::create sql=".$sql);
|
||||
$result = $this->db->query($sql);
|
||||
if ($result) {
|
||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX . "links");
|
||||
|
||||
if ($this->id > 0) {
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result=$interface->run_triggers('LINK_CREATE', $this, $user, $langs, $conf);
|
||||
if ($result < 0) {
|
||||
$error++;
|
||||
$this->errors = $interface->errors;
|
||||
}
|
||||
// Fin appel triggers
|
||||
} else {
|
||||
$error++;
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
dol_syslog(get_class($this)."::Create success id=" . $this->id);
|
||||
$this->db->commit();
|
||||
return $this->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_syslog(get_class($this)."::Create echec update " . $this->error, LOG_ERR);
|
||||
$this->db->rollback();
|
||||
return -3;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS')
|
||||
{
|
||||
|
||||
$this->error=$langs->trans("ErrorCompanyNameAlreadyExists",$this->name);
|
||||
$result=-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->lasterror();
|
||||
dol_syslog(get_class($this)."::Create fails insert sql=".$sql, LOG_ERR);
|
||||
$result=-2;
|
||||
}
|
||||
$this->db->rollback();
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update parameters of third party
|
||||
*
|
||||
* @param User $user User executing update
|
||||
* @param int $call_trigger 0=no, 1=yes
|
||||
* @return int <0 if KO, >=0 if OK
|
||||
*/
|
||||
public function update($user='', $call_trigger=1)
|
||||
{
|
||||
global $langs,$conf;
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||
$langs->load("errors");
|
||||
$error=0;
|
||||
|
||||
dol_syslog(get_class($this)."::Update id = " . $this->id . " call_trigger = " . $call_trigger);
|
||||
|
||||
// Check parameters
|
||||
if (empty($this->url)) {
|
||||
$this->error = $langs->trans("NoURL");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Clean parameters
|
||||
$this->url = clean_url($this->url,0);
|
||||
if(empty($this->label)) {
|
||||
$this->label = basename($this->url);
|
||||
}
|
||||
$this->label = trim($this->label);
|
||||
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
$sql = "UPDATE " . MAIN_DB_PREFIX . "links SET ";
|
||||
$sql .= "entity = '" . $conf->entity ."'";
|
||||
$sql .= ", datea = '" . $this->db->idate(dol_now()) . "'";
|
||||
$sql .= ", url = '" . $this->db->escape($this->url) ."'";
|
||||
$sql .= ", label = '" . $this->db->escape($this->label) ."'";
|
||||
$sql .= " WHERE rowid = '" . $this->id ."'";
|
||||
|
||||
|
||||
dol_syslog(get_class($this)."::Update sql = " .$sql);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
if ($call_trigger) {
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface = new Interfaces($this->db);
|
||||
$result = $interface->run_triggers('LINK_MODIFY', $this, $user, $langs, $conf);
|
||||
if ($result < 0) {
|
||||
$error++;
|
||||
$this->errors = $interface->errors;
|
||||
}
|
||||
// Fin appel triggers
|
||||
}
|
||||
|
||||
if (! $error) {
|
||||
dol_syslog(get_class($this) . "::Update success");
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
} else {
|
||||
$this->db->rollback();
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
|
||||
// Doublon
|
||||
$this->error = $langs->trans("ErrorDuplicateField");
|
||||
$result = -1;
|
||||
} else {
|
||||
$this->error = $langs->trans("Error sql = " . $sql);
|
||||
dol_syslog(get_class($this) . "::Update fails update sql = " . $sql, LOG_ERR);
|
||||
$result = -2;
|
||||
}
|
||||
$this->db->rollback();
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads all links from database
|
||||
* @return array of Link objects
|
||||
*
|
||||
* */
|
||||
public function fetchAll()
|
||||
{
|
||||
$sql = "SELECT rowid, entity, datea, url, label FROM " . MAIN_DB_PREFIX . "links";
|
||||
$resql = $this->db->query($sql);
|
||||
dol_syslog(get_class($this)."::fetchAll " . $sql, LOG_DEBUG);
|
||||
if ($resql) {
|
||||
$num = $this->db->num_rows($resql);
|
||||
dol_syslog(get_class($this)."::fetchAll " . $num . "records", LOG_DEBUG);
|
||||
if ($num > 0) {
|
||||
$links = array();
|
||||
while ($obj = $this->db->fetch_object($resql)) {
|
||||
$link = new Link($db);
|
||||
$link->id = $obj->rowid;
|
||||
$link->entity = $obj->entity;
|
||||
$link->datea = $this->db->jdate($obj->datea);
|
||||
$link->url = $obj->url;
|
||||
$link->label = $obj->label;
|
||||
$links[] = $link;
|
||||
}
|
||||
return $links;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
dol_syslog(get_class($this) . "::FetchAll fails sql=" . $sql, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Loads a link from database
|
||||
* @param rowid id of link to load
|
||||
* @return int 1 if ok, 0 if no record found, -1 if error
|
||||
*
|
||||
* */
|
||||
public function fetch($rowid=null)
|
||||
{
|
||||
if (empty($rowid)) {
|
||||
$rowid = $this->id;
|
||||
}
|
||||
$sql = "SELECT rowid, entity, datea, url, label FROM " . MAIN_DB_PREFIX . "links";
|
||||
$sql .= " WHERE rowid = " . $rowid;
|
||||
$resql = $this->db->query($sql);
|
||||
dol_syslog(get_class($this)."::fetch " . $sql, LOG_DEBUG);
|
||||
if ($resql) {
|
||||
if($this->db->num_rows($resql) > 0) {
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
$this->entity = $obj->entity;
|
||||
$this->datea = $this->db->jdate($obj->datea);
|
||||
$this->url = $obj->url;
|
||||
$this->label = $obj->label;
|
||||
return 1;
|
||||
} else {
|
||||
$this->error = 'Fetch no link found for id = ' . $rowid;
|
||||
dol_syslog($this->error, LOG_ERR);
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
dol_syslog($this->db->error(), LOG_ERR);
|
||||
$this->error=$this->db->error();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a link from database
|
||||
*
|
||||
* @return int <0 if KO, 0 if nothing done, >0 if OK
|
||||
*/
|
||||
public function delete()
|
||||
{
|
||||
global $user, $langs, $conf;
|
||||
|
||||
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
|
||||
$error = 0;
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
// Remove link
|
||||
|
||||
$sql = "DELETE FROM " . MAIN_DB_PREFIX . "links";
|
||||
$sql.= " WHERE rowid = " . $this->id;
|
||||
dol_syslog(get_class($this)."::delete sql=" . $sql, LOG_DEBUG);
|
||||
if (! $this->db->query($sql)) {
|
||||
$error++;
|
||||
$this->error = $this->db->lasterror();
|
||||
dol_syslog(get_class($this)."::delete error -4 " . $this->error, LOG_ERR);
|
||||
}
|
||||
|
||||
|
||||
if (! $error) {
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result = $interface->run_triggers('LINK_DELETE', $this, $user, $langs, $conf);
|
||||
if ($result < 0) {
|
||||
$error++;
|
||||
$this->errors = $interface->errors;
|
||||
}
|
||||
// Fin appel triggers
|
||||
}
|
||||
|
||||
if (! $error) {
|
||||
$this->db->commit();
|
||||
|
||||
return 1;
|
||||
} else {
|
||||
$this->db->rollback();
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user