You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
775 lines
20 KiB
775 lines
20 KiB
<?php
|
|
/**
|
|
* Copyright 2002 - 2004 by Gero Kohnert
|
|
*
|
|
* CVS Info: $Id: base.pinc,v 1.16 2005/05/03 13:18:42 saraj Exp $
|
|
* $Author: saraj $
|
|
*
|
|
* Base Class for most TUTOS objects
|
|
*/
|
|
global $calpath,$callink;
|
|
$calpath = 'modules/Calendar/';
|
|
$callink = 'index.php?module=Calendar&action=';
|
|
|
|
include_once $calpath.'acl.pinc';
|
|
#include_once $calpath .'history.pinc';
|
|
|
|
/**
|
|
* Base for TUTOS objects
|
|
*
|
|
* this class provides a base for nearly all objects used in TUTOS
|
|
*
|
|
* @package BASE
|
|
*/
|
|
class tutos_base {
|
|
/** the global unique ID of this object in the Database
|
|
* @var int $id
|
|
*/
|
|
var $id;
|
|
/** the DB Connection where this object is stored/retrieved
|
|
* @var Object $dbconn
|
|
*/
|
|
var $dbconn;
|
|
/** the creator of this object
|
|
* @var Object $creator
|
|
*/
|
|
var $creator;
|
|
/** the creation DateTime of this object
|
|
* @var Object $creation
|
|
*/
|
|
var $creation;
|
|
var $acl;
|
|
var $modified;
|
|
var $history;
|
|
var $tablename;
|
|
var $neighbours;
|
|
|
|
/**
|
|
* initialize the standard variables
|
|
*
|
|
* @param Object a database connection
|
|
*/
|
|
function tutos_base(&$dbconn) {
|
|
$this->init($dbconn);
|
|
}
|
|
|
|
/**
|
|
* initialize the standard variables
|
|
*
|
|
* @param Object a database connection
|
|
*/
|
|
function init(&$dbconn) {
|
|
global $current_user,$tutos;
|
|
|
|
$this->id = -1;
|
|
$this->dbconn = &$dbconn;
|
|
$this->creator = $current_user;
|
|
$this->creation = new DateTime();
|
|
$this->acl = array();
|
|
$this->modified = array();
|
|
$this->history = array();
|
|
$this->neighbours = array();
|
|
|
|
$this->tablename = "UNKNOWN";
|
|
|
|
$this->tablename_hash = "objectids";
|
|
|
|
if (isset($current_user->id)) {
|
|
$this->acl[$current_user->id] = $tutos[modok];
|
|
}
|
|
|
|
#
|
|
# initialize custom database fields
|
|
#
|
|
$this->init_custom($this->gettype());
|
|
}
|
|
/**
|
|
* initialize custom database fields
|
|
*/
|
|
function init_custom ($sector) {
|
|
global $table;
|
|
|
|
if (!isset($table[$sector])) {
|
|
return;
|
|
}
|
|
foreach($table[$sector] as $i => $x) {
|
|
if (!is_array($x)) continue;
|
|
if (!isset($x['custom'])) continue;
|
|
if (!$x['custom']) continue;
|
|
$fld = "_fld_".$i;
|
|
|
|
if ($x[type] == "float") {
|
|
$this->$fld = 0.0;
|
|
} else if ($x[type] == "TS_TYPE") {
|
|
$this->$fld = new DateTime();
|
|
} else {
|
|
$this->$fld = "";
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* read the data of the specified object
|
|
*
|
|
* @param int $id the object id
|
|
*/
|
|
function read ($id,&$obj) {
|
|
global $g_hash,$tutos;
|
|
|
|
//print("GS --> base read id=".$id." t=".$tablename);
|
|
if ( empty($id) ) return -1;
|
|
if ( -1 == $id ) return -1;
|
|
//if ( ! is_numeric($id) ) return -1;
|
|
if ( $obj->tablename == "UNKNOWN" ) return -1;
|
|
|
|
/* commented by srini
|
|
if ( !isset($tutos['nohash']) && isset($g_hash[$id]) ) {
|
|
# Hashed
|
|
#$this = $g_hash[$id];
|
|
# if ($this->id != $id) {
|
|
# PHP 5
|
|
#die ("CACHE failed for ".$id ."(". $g_hash[$id]->getFullName() .") got ". $obj->id ." ". $obj->gettype() ."<br>\n");
|
|
|
|
# PHP_ERROR("8888",$_SERVER["REQUEST_URI"] ." > CACHE failed for ".$id ."(". $g_hash[$id]->getFullName() .") got ". $obj->id ." ". $obj->gettype() .":\n",3,$tutos[errlog],"see","backtrace");
|
|
# echo $id ." ". $g_hash[$id]->getFullName() ." ###<br>";
|
|
# } else {
|
|
$g_hash['hits']++;
|
|
$obj = &$g_hash[$id];
|
|
return $obj;
|
|
# }
|
|
}
|
|
if (!isset($obj->dbconn)) {
|
|
return -1;
|
|
}
|
|
*/
|
|
|
|
$q = "SELECT * from ". $obj->tablename ." WHERE id = '". $id . "'";
|
|
//print("GS --> base q=".$q);
|
|
/*$r = $obj->dbconn->Exec($q);
|
|
$n = $r->numrows();*/
|
|
$r = $obj->db->query($q);
|
|
$n = $obj->db->getRowCount($r);
|
|
//print("GS --> base n=".$n);
|
|
if ( 1 != $n) {
|
|
return -1;
|
|
}
|
|
$val_array = mysql_fetch_assoc($r);
|
|
$obj->read_result($val_array);
|
|
//$r->free();
|
|
return $obj;
|
|
}
|
|
/**
|
|
* read the custom fields of a resultset
|
|
*/
|
|
function read_custom_result (&$r,$pos,$sector ) {
|
|
global $table;
|
|
if (!isset($table[$sector])) {
|
|
return;
|
|
}
|
|
|
|
foreach($table[$sector] as $i => $x) {
|
|
if (!is_array($x)) continue;
|
|
if (!isset($x['custom'])) continue;
|
|
if (!$x['custom']) continue;
|
|
$fld = "_fld_".$i;
|
|
if ($x[type] == "TS_TYPE") {
|
|
$this->$fld = $r->getDateTime($pos, $i);
|
|
} else {
|
|
$this->$fld = @$r->get($pos,$i);
|
|
}
|
|
if (!isset($this->$fld)) $this->$fld ="";
|
|
}
|
|
}
|
|
/**
|
|
* read a resultset
|
|
*/
|
|
/*function read_result (&$r, $pos ) {
|
|
global $g_hash;
|
|
|
|
#$this->id = $r->get($pos, "id");
|
|
#$this->creation = $r->getDateTime($pos, "creation");
|
|
|
|
#
|
|
# read custom database fields
|
|
#
|
|
#$this->read_custom_result($r,$pos,$this->gettype());
|
|
|
|
|
|
# we have a real object so we reset the acl
|
|
$this->acl = array();
|
|
#acl_read($this);
|
|
$g_hash[$this->id] = &$this;
|
|
return;
|
|
}*/
|
|
|
|
// srini
|
|
|
|
function read_result($val_array, $pos=-1)
|
|
{
|
|
if($pos!=-1) return;
|
|
global $g_hash;
|
|
|
|
$this->id = $val_array["id"];
|
|
$this->creation = new DateTime($val_array["date_entered"]);
|
|
#
|
|
# read custom database fields
|
|
#
|
|
#$this->read_custom_result($r,$pos,$this->gettype());
|
|
|
|
|
|
# we have a real object so we reset the acl
|
|
$this->acl = array();
|
|
#acl_read($this);
|
|
$g_hash[$this->id] = &$this;
|
|
return;
|
|
|
|
}
|
|
/**
|
|
* Return Info about history of this object
|
|
*/
|
|
function readHistory($adr_id,$sort,$dir,$start) {
|
|
if ( count($this->history) > 0 ) {
|
|
return;
|
|
}
|
|
readHistory($this,$adr_id,$sort,$dir,$start);
|
|
return;
|
|
}
|
|
/**
|
|
* Return Info about connected tasks of this object
|
|
*/
|
|
function readTasks() {
|
|
if ( ! class_exists ("task") ) {
|
|
require_once 'task.pinc';
|
|
}
|
|
task::obj_read($this);
|
|
return;
|
|
}
|
|
/**
|
|
* Return Info about the total time spent for this object
|
|
*/
|
|
function readTimetrackSum() {
|
|
if ( ! class_exists ("timetrack") ) {
|
|
require_once 'timetrack.pinc';
|
|
}
|
|
readTimetrackSum($this);
|
|
return;
|
|
}
|
|
/**
|
|
* Return Info about time spent for this object
|
|
*/
|
|
function readTimetrack() {
|
|
if ( ! class_exists ("timetrack") ) {
|
|
require_once 'timetrack.pinc';
|
|
}
|
|
timetrack::obj_read($this);
|
|
return;
|
|
}
|
|
/**
|
|
* parse XML import
|
|
*/
|
|
function parseXML ($fld,$data,$attrs) {
|
|
global $tutos;
|
|
|
|
if ( $fld == "systemid" ) {
|
|
$this->force_insert = ($data != $this->dbconn->db->systemid);
|
|
}
|
|
if ($fld == "id") {
|
|
if ($this->force_insert) {
|
|
$this->id = -1;
|
|
} else {
|
|
$tutos['nohash'] =1 ;
|
|
$xx = $this->read($data,$this);
|
|
unset($tutos['nohash']);
|
|
# echo "X:".$xx->id." ".$this->id." ". $data ."\n";
|
|
if ( ($this->id != $data) ) {
|
|
if ($tutos[debug] != 0) {
|
|
Fatal_Error($this->gettype() ." with id ". $data. " does not exist");
|
|
}
|
|
die ($this->gettype() ." with id ". $data. " does not exist");
|
|
}
|
|
}
|
|
}
|
|
if ($fld == "creation") {
|
|
$this->creation->setDateTime($data);
|
|
}
|
|
return;
|
|
}
|
|
/**
|
|
* Head of XML export
|
|
*/
|
|
function exportXML_head () {
|
|
global $tutos;
|
|
$r = "<?xml version=\"1.0\" encoding=\"UTF8\" ?>\n";
|
|
$r .= "<!-- TUTOS Version :". $tutos[version] ." -->\n";
|
|
$r .= "<!-- Creation time :". date('YmdHis') ." -->\n";
|
|
return $r;
|
|
}
|
|
/**
|
|
* Start of XML export
|
|
*/
|
|
function exportXML_start () {
|
|
return "<". $this->gettype() .">\n";
|
|
}
|
|
/**
|
|
* End of XML export
|
|
*/
|
|
function exportXML_end () {
|
|
return "</". $this->gettype() .">\n";
|
|
}
|
|
/**
|
|
* Data of XML export
|
|
*/
|
|
function exportXML_body () {
|
|
global $current_user;
|
|
|
|
if (!$this->see_ok()) {
|
|
return;
|
|
}
|
|
$r = "<systemid>". $this->dbconn->db->systemid ."</systemid>\n";
|
|
$r .= "<id>". $this->id ."</id>\n";
|
|
$r .= "<creation>". $this->creation->exportXML_body() ."</creation>\n";
|
|
# datetime of last modification
|
|
if ( $current_user->feature_ok(usehistory,PERM_SEE) ) {
|
|
$d = history_get_lastmod($this);
|
|
if ($d) {
|
|
$r .= "<lastmod>". $d->exportXML_body() ."</lastmod>\n";
|
|
}
|
|
}
|
|
if ( $current_user->feature_ok(useurl,PERM_SEE) ) {
|
|
url::obj_read($this);
|
|
if ( isset($this->list[useurl]) && (count($this->list[useurl]) > 0) ) {
|
|
foreach($this->list[useurl] as $f) {
|
|
$r .= $f->exportXML_start();
|
|
$r .= $f->exportXML_body();
|
|
$r .= $f->exportXML_end();
|
|
}
|
|
}
|
|
}
|
|
if ( $current_user->feature_ok(usenotes,PERM_SEE) ) {
|
|
note::obj_read($this);
|
|
if ( isset($this->list[usenotes]) && (count($this->list[usenotes]) > 0) ) {
|
|
foreach($this->list[usenotes] as $f) {
|
|
$r .= $f->exportXML_start();
|
|
$r .= $f->exportXML_body();
|
|
$r .= $f->exportXML_end();
|
|
}
|
|
}
|
|
}
|
|
|
|
return $r;
|
|
}
|
|
/**
|
|
* Header for Export as XML
|
|
*/
|
|
function exportXMLHeader ($contentsize = 0) {
|
|
Header("Expires: 0");
|
|
Header("Pragma: no-cache");
|
|
Header("Content-type: text/xml");
|
|
Header("Content-Disposition: attachment; filename=\"". $this->gettype() .".xml\"");
|
|
Header("Content-Description: XML Export from TUTOS" );
|
|
if ($contentsize > 0) {
|
|
Header("Content-Length: ". $contentsize);
|
|
}
|
|
return;
|
|
}
|
|
/**
|
|
* Export as XML
|
|
*/
|
|
function exportXML($head = true) {
|
|
$r = "";
|
|
if ( $head ) {
|
|
$r .= $this->exportXML_head();
|
|
}
|
|
if ( !$this->see_ok() ) {
|
|
return $r;
|
|
}
|
|
$r .= $this->exportXML_start();
|
|
$r .= $this->exportXML_body();
|
|
$r .= $this->exportXML_end();
|
|
return $r;
|
|
}
|
|
/**
|
|
* Checks if the current user is allowed to see this object
|
|
*
|
|
* @see del_ok(), mod_ok()
|
|
* @return int 0 (NO) or a positive value if seeing is allowed
|
|
*/
|
|
function see_ok () {
|
|
global $current_user;
|
|
//if ( ! $current_user->feature_ok($this->gettypeid(),PERM_SEE) ) {
|
|
// return 0;
|
|
//}
|
|
return acl_see_ok($this);
|
|
}
|
|
/**
|
|
* Checks if the current user is allowed to use this object
|
|
* (i.e.) attach things
|
|
*
|
|
* @see del_ok(), mod_ok() , see_ok()
|
|
* @return int 0 (NO) or a positive value if seeing is allowed
|
|
*/
|
|
function use_ok () {
|
|
global $current_user;
|
|
// if ( ! $current_user->feature_ok($this->gettypeid(),PERM_USE) ) {
|
|
// return 0;
|
|
// }
|
|
return acl_use_ok($this);
|
|
}
|
|
/**
|
|
* Checks if the current user is allowed to delete this object
|
|
*
|
|
* @see see_ok(), mod_ok()
|
|
* @return int 0 (NO) or a positive value if deletion is allowed
|
|
*/
|
|
function del_ok () {
|
|
global $current_user;
|
|
// if ( ! $current_user->feature_ok($this->gettypeid(),PERM_DEL) ) {
|
|
// return 0;
|
|
// }
|
|
return acl_del_ok($this);
|
|
}
|
|
/**
|
|
* Checks if the current user is allowed to modify this object
|
|
*
|
|
* @see del_ok(), see_ok()
|
|
* @return int 0 (NO) or a positive value if modification is allowed
|
|
*/
|
|
function mod_ok () {
|
|
global $current_user;
|
|
//if ( ! $current_user->feature_ok($this->gettypeid(),PERM_MOD) ) {
|
|
// return 0;
|
|
//}
|
|
//return acl_mod_ok($this);
|
|
// acl_mod_ok commented by srini temporary
|
|
return 1;
|
|
}
|
|
/**
|
|
* set a field for this object and maintain the change history
|
|
*
|
|
* @param String $fld the fieldname to change
|
|
* @param String $value the new value for $fld
|
|
* @param String $histfield the label of the field in the history table
|
|
*/
|
|
function setStrField ($fld,$value,$histfield) {
|
|
if ( !isset($this->$fld) ) {
|
|
echo "Internal Error: Unknown field in '". $this->gettype() ."' Object :|". $fld ."| Value:|". $value ."|<br>\n";
|
|
}
|
|
if ( $this->$fld != $value ) {
|
|
$this->modified[] = array ( "field" => $histfield , "old" => $this->$fld , "new" => $value );
|
|
$this->$fld = $value;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* set a field for this object and maintain the change history
|
|
*
|
|
* @param String $fld the fieldname to change
|
|
* @param int $value the new value for $fld
|
|
* @param String $histfield the label of the field in the history table
|
|
*/
|
|
function setIntField ($fld,$value,$histfield) {
|
|
if ( $this->$fld != $value ) {
|
|
$this->modified[] = array ( "field" => $histfield , "old" => $this->$fld , "new" => $value );
|
|
$this->$fld = (int)$value;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* set a field for this object and maintain the change history
|
|
*
|
|
* @param String $fld the fieldname to change
|
|
* @param float $value the new value for $fld
|
|
* @param String $histfield the label of the field in the history table
|
|
*/
|
|
function setFloatField ($fld,$value,$histfield) {
|
|
if ( $this->$fld != $value ) {
|
|
$this->modified[] = array ( "field" => $histfield , "old" => $this->$fld , "new" => $value );
|
|
$this->$fld = (float)$value;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* set a Date field for this object and maintain the change history
|
|
*
|
|
* @param String $fld the fieldname to change
|
|
* @param Object $value the new value for $fld
|
|
* @param String $histfield the label of the field in the history table
|
|
*/
|
|
function setDateField ($fld,&$value,$histfield) {
|
|
if ( isset($this->$fld) ) {
|
|
$a = $this->$fld->getYYYYMMDD();
|
|
} else {
|
|
$a = "";
|
|
}
|
|
$b = $value->getYYYYMMDD();
|
|
|
|
if ( $a != $b ) {
|
|
$this->modified[] = array ( "field" => $histfield , "old" => $a , "new" => $b );
|
|
$this->$fld = $value;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* set a DateTime field for this object and maintain the change history
|
|
*
|
|
* @param String $fld the fieldname to change
|
|
* @param Object $value the new value for $fld
|
|
* @param String $histfield the label of the field in the history table
|
|
*/
|
|
function setDateTimeField ($fld,&$value,$histfield) {
|
|
if ( isset($this->$fld) ) {
|
|
$a = $this->$fld->getYYYYMMDDHHMM();
|
|
} else {
|
|
$a = "";
|
|
}
|
|
$b = $value->getYYYYMMDDHHMM();
|
|
|
|
if ( $a != $b ) {
|
|
$this->modified[] = array ( "field" => $histfield , "old" => $a , "new" => $b );
|
|
$this->$fld = $value;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* fill mailing list with address/team objects or mail addresses
|
|
*/
|
|
function fill_maillist(&$ml) {
|
|
return;
|
|
}
|
|
/**
|
|
* get a usefull human readable name
|
|
*/
|
|
function getFullName () {
|
|
return $this->getType()." (". $this->id .")";
|
|
}
|
|
|
|
function getShortName () {
|
|
return $this->getFullName();
|
|
}
|
|
|
|
/**
|
|
* get the info as text
|
|
*/
|
|
function getAsText (&$lang) {
|
|
# defaults to fullname
|
|
$r = "";
|
|
$r .= $this->getFullName() ."\n";
|
|
return $r;
|
|
}
|
|
/**
|
|
* get a url to this object
|
|
*/
|
|
function getURL () {
|
|
return "mytutos.php";
|
|
}
|
|
/**
|
|
* get a url to the modify page of this object
|
|
*/
|
|
function getModURL () {
|
|
return "mytutos.php";
|
|
}
|
|
/**
|
|
* get a url to the delete script of this object
|
|
*/
|
|
function getDelURL () {
|
|
return "mytutos.php";
|
|
}
|
|
/**
|
|
* get a link to this object
|
|
*/
|
|
function getLink ($text = "") {
|
|
if ( empty($text) ) {
|
|
$text = $this->getFullname();
|
|
}
|
|
return makelink($this->getURL(),myentities($text),sprintf("%s",$this->getFullname()));
|
|
}
|
|
/**
|
|
* get a ulink to the objects history
|
|
*/
|
|
function getHistoryLink ($cols) {
|
|
global $current_user,$lang;
|
|
|
|
$ret = "";
|
|
if ( $current_user->feature_ok(usehistory,PERM_SEE) ) {
|
|
$ret .= "<tr>\n";
|
|
$ret .= " <td colspan=\"". $cols ."\"><br>". makelink("history_show.php?id=". $this->id,$lang['HistoryLink'],sprintf($lang['HistoryLinkI'],$this->getFullname())) ."</td>\n";
|
|
$ret .= "</tr>\n";
|
|
}
|
|
return $ret;
|
|
}
|
|
/**
|
|
* get the timespan where this object is active
|
|
* return a array with start, end , description
|
|
*/
|
|
function getTimespan () {
|
|
$r = array();
|
|
$r['start'] = 0;
|
|
$r['end'] = 0;
|
|
$r['desc'] = $this->getFullName();
|
|
return $r;
|
|
}
|
|
|
|
/**
|
|
* fill the internal neighbour list with possible objects where a object
|
|
* currently attached/referncing to THIS could be reattached
|
|
*/
|
|
function getNeighbours () {
|
|
if (count ($this->neighbours) > 0 ) return $this->neighbours;
|
|
|
|
$this->neighbours[$this->id] = &$this;
|
|
|
|
return $this->neighbours;
|
|
}
|
|
|
|
/**
|
|
* add the custom fields to the query (called by save methods)
|
|
*/
|
|
function save_custom_fields(&$q,$section = "0") {
|
|
global $table;
|
|
|
|
if ($section == "0") {
|
|
$section = $this->gettype();
|
|
}
|
|
if (!isset($table[$section])) {
|
|
return;
|
|
}
|
|
foreach($table[$section] as $i => $x) {
|
|
if (!is_array($x)) continue;
|
|
if (!isset($x['custom'])) continue;
|
|
if (!$x['custom']) continue;
|
|
if (!isset($x['ftype'])) $x['ftype'] = "";
|
|
$fld = "_fld_".$i;
|
|
|
|
if ($x[type] == "TS_TYPE") {
|
|
$q->addFV($i,$this->$fld,"DATETIME");
|
|
} else if ($x[type] == "VARCHAR") {
|
|
$q->addFV($i,$this->$fld,"STRING",$x[size]);
|
|
} else if ($x[type] == "float") {
|
|
$q->addFV($i,$this->$fld,"FLOAT");
|
|
} else if ($x[type] == "TX_TYPE") {
|
|
$q->addFV($i,$this->$fld,"TEXT");
|
|
} else if ($x['ftype'] == "Boolean") {
|
|
if ($this->$fld == "") $this->$fld = 0;
|
|
$q->addFV($i,$this->$fld);
|
|
} else {
|
|
$q->addFV($i,$this->$fld,"");
|
|
}
|
|
# echo $x[type] ." ". $fld ." ". $this->$fld ."<br>";
|
|
}
|
|
}
|
|
/**
|
|
* Save object and references to this object from DB
|
|
*/
|
|
function save() {
|
|
global $current_user,$tutos,$g_hash;
|
|
$msg = "";
|
|
|
|
@reset($tutos[activemodules]);
|
|
while( list ($i,$f) = @each ($tutos[activemodules])) {
|
|
$x = new $tutos[modules][$f][name]($this->dbconn);
|
|
$msg .= $x->obj_save($current_user,$this);
|
|
}
|
|
|
|
#$msg .= acl_save($this);
|
|
#$msg .= history_save($this);
|
|
|
|
# all exiting objects are hashed so we do not need to save the id
|
|
if ( ! isset($g_hash[$this->id]) ) {
|
|
$msg .= $this->save_obj_id();
|
|
$g_hash[$this->id] = &$this;
|
|
}
|
|
return $msg;
|
|
}
|
|
/**
|
|
* Save the object id (used for faster getObject)
|
|
*/
|
|
function save_obj_id() {
|
|
if ( $this->id == -1 ) return;
|
|
if ( $this->gettypeid() == noobject) return;
|
|
|
|
$msg = "";
|
|
if ( $this->getTypeID() != useuser ) {
|
|
$x = $this->id;
|
|
} else {
|
|
$x = $this->uid;
|
|
}
|
|
#$q = "DELETE from ". $this->dbconn->prefix . $this->tablename_hash ." where id = ". $x ;
|
|
#$this->dbconn->Exec($q);
|
|
#$q = "INSERT into ". $this->dbconn->prefix . $this->tablename_hash ." (id,tutostype) values (". $x .",". $this->gettypeid() .")";
|
|
#$this->dbconn->Exec($q);
|
|
#return $msg;
|
|
}
|
|
/**
|
|
* delete the object id (used for faster getObject)
|
|
*/
|
|
function del_obj_id() {
|
|
$msg = "";
|
|
#$q = "DELETE FROM ". $this->dbconn->prefix . $this->tablename_hash ." WHERE id = ". $this->id;
|
|
#$this->dbconn->Exec($q);
|
|
#return $msg;
|
|
}
|
|
/**
|
|
* Delete object and references to this object from DB
|
|
*/
|
|
function delete() {
|
|
global $current_user,$tutos;
|
|
|
|
$msg = "";
|
|
$msg .= acl_delete_obj($this);
|
|
$msg .= history_delete($this);
|
|
|
|
@reset($tutos[activemodules]);
|
|
while( list ($i,$f) = @each ($tutos[activemodules])) {
|
|
$x = new $tutos[modules][$f][name]($this->dbconn);
|
|
$msg .= $x->obj_delete($current_user,$this);
|
|
}
|
|
|
|
$this->modified[] = array ( "field" => "Delete" , "old" => $this->gettype() , "new" => -1 );
|
|
$msg .= history_save($this);
|
|
$msg .= $this->del_obj_id();
|
|
|
|
return $msg;
|
|
}
|
|
/**
|
|
* Transfer reference ids according to given table
|
|
*/
|
|
function transfer_ids (&$trans) {
|
|
global $tutos;
|
|
|
|
@reset($tutos[activemodules]);
|
|
while( list ($i,$f) = @each ($tutos[activemodules])) {
|
|
$x = new $tutos[modules][$f][name]($this->dbconn);
|
|
$msg .= $x->obj_transfer_ids($this,$trans);
|
|
}
|
|
return;
|
|
}
|
|
/**
|
|
* the type of this TUTOS object
|
|
*/
|
|
function getType () {
|
|
return "base";
|
|
}
|
|
/**
|
|
* get the type id of object
|
|
*/
|
|
function gettypeid () {
|
|
return noobject;
|
|
}
|
|
/**
|
|
* get the icon as a image html tag
|
|
*/
|
|
function getHtmlIcon () {
|
|
return "";
|
|
}
|
|
/**
|
|
* get the help index
|
|
*/
|
|
function getHelpIndex () {
|
|
return "";
|
|
}
|
|
}
|
|
?>
|
|
|