[Vtigercrm-commits] [vtiger-commits] r9359 - /vtigercrm/trunk/data/SugarBean.php
vtigercrm-commits at vtiger.fosslabs.com
vtigercrm-commits at vtiger.fosslabs.com
Sat Sep 9 04:10:49 EDT 2006
Author: richie
Date: Sat Sep 9 02:10:11 2006
New Revision: 9359
Log:
Postgres fixes by Jens done --By Don
Modified:
vtigercrm/trunk/data/SugarBean.php
Modified: vtigercrm/trunk/data/SugarBean.php
==============================================================================
--- vtigercrm/trunk/data/SugarBean.php (original)
+++ vtigercrm/trunk/data/SugarBean.php Sat Sep 9 02:10:11 2006
@@ -1,451 +1,451 @@
-<?php
-/*********************************************************************************
- * The contents of this file are subject to the SugarCRM Public License Version 1.1.2
- * ("License"); You may not use this file except in compliance with the
- * License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
- * the specific language governing rights and limitations under the License.
- * The Original Code is: SugarCRM Open Source
- * The Initial Developer of the Original Code is SugarCRM, Inc.
- * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
- * All Rights Reserved.
- * Contributor(s): ______________________________________.
- ********************************************************************************/
-/*********************************************************************************
- * $Header: /advent/projects/wesat/vtiger_crm/sugarcrm/data/SugarBean.php,v 1.70 2005/03/16 10:25:16 shaw Exp $
- * Description: Defines the base class for all data entities used throughout the
- * application. The base class including its methods and variables is designed to
- * be overloaded with module-specific methods and variables particular to the
- * module's base entity class.
- ********************************************************************************/
-
-include_once('config.php');
-require_once('include/logging.php');
-require_once('data/Tracker.php');
-require_once('include/utils/utils.php');
-require_once('include/utils/UserInfoUtil.php');
-require_once('include/database/PearDatabase.php');
-
-class SugarBean
-{
- /**
- * This method implements a generic insert and update logic for any SugarBean
- * This method only works for subclasses that implement the same variable names.
- * This method uses the presence of an id vtiger_field that is not null to signify and update.
- * The id vtiger_field should not be set otherwise.
- * todo - Add support for vtiger_field type validation and encoding of parameters.
- * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
- * All Rights Reserved.
- * Contributor(s): ______________________________________..
- */
-
-
- function save($module_name= '')
- {
- global $adb;
- global $current_user;
- $isUpdate = true;
-
- if(!isset($this->id) || $this->id == "")
- {
- $isUpdate = false;
- }
-
- if ( $this->new_with_id == true )
- {
- $isUpdate = false;
- }
-
- //$this->date_modified = $this->db->formatDate(date('YmdHis'));
- $this->date_modified = date('YmdHis');
- if (isset($current_user)) $this->modified_user_id = $current_user->id;
-
- if($isUpdate)
- {
- $query = "Update ".$this->table_name." set ";
- }
- else
- {
- //$this->date_entered = $this->db->formatDate(date('YmdHis'));
- $this->date_entered = date('YmdHis');
-
- if($this->new_schema &&
- $this->new_with_id == false)
- {
- $this->id = $adb->getUniqueID("vtiger_users");
- }
-
- $query = "INSERT into ".$this->table_name;
- }
- // todo - add date modified to the list.
-
- // write out the SQL statement.
- //$query .= $this->table_name." set ";
-
- $firstPass = 0;
- $insKeys = '(';
- $insValues = '(';
- $updKeyValues='';
- foreach($this->column_fields as $field)
- {
- // Do not write out the id vtiger_field on the update statement.
- // We are not allowed to change ids.
- if($isUpdate && ('id' == $field))
- continue;
-
- // Only assign variables that have been set.
- if(isset($this->$field))
- {
- // Try comparing this element with the head element.
- if(0 == $firstPass)
- {
- $firstPass = 1;
- }
- else
- {
- if($isUpdate)
- {
- $updKeyValues = $updKeyValues.", ";
- }
- else
- {
- $insKeys = $insKeys.", ";
- $insValues = $insValues.", ";
- }
- }
- /*else
- $query = $query.", ";
-
- $query = $query.$field."='".$adb->quote(from_html($this->$field,$isUpdate))."'";
- */
- if($isUpdate)
- {
- $updKeyValues = $updKeyValues.$field."=".$this->db->formatString($this->table_name,$field,from_html($this->$field,$isUpdate));
- }
- else
- {
- $insKeys = $insKeys.$field;
- $insValues = $insValues.$this->db->formatString($this->table_name,$field,from_html($this->$field,$isUpdate));
- }
- }
- }
-
- if($isUpdate)
- {
- $query = $query.$updKeyValues." WHERE ID = '$this->id'";
- $this->log->info("Update $this->object_name: ".$query);
- }
- else
- {
- $query = $query.$insKeys.") VALUES ".$insValues.")";
- $this->log->info("Insert: ".$query);
- }
-
- $this->db->query($query, true);
-
- // If this is not an update then store the id for later.
- if(!$isUpdate && !$this->new_schema && !$this->new_with_id)
- {
- $this->db->println("Illegal Access - SugarBean");
- //this is mysql specific
- $this->id = $this->db->getOne("SELECT LAST_INSERT_ID()" );
- }
-
- return $this->id;
- }
-
-
- /**
- * This function retrieves a record of the appropriate type from the DB.
- * It fills in all of the vtiger_fields from the DB into the object it was called on.
- * param $id - If ID is specified, it overrides the current value of $this->id. If not specified the current value of $this->id will be used.
- * returns this - The object that it was called apon or null if exactly 1 record was not found.
- * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
- * All Rights Reserved.
- * Contributor(s): ______________________________________..
- function retrieve($id = -1, $encodeThis=true) {
- if ($id == -1) {
- $id = $this->id;
- }
- if($id == '') {
- return null;
- }
-// GS porting vtiger_crmentity
-$query = "SELECT * FROM $this->table_name WHERE $this->module_id = '$id'";
-// $query = "SELECT * FROM $this->table_name WHERE ID = '$id'";
- $this->log->debug("Retrieve $this->object_name: ".$query);
-
- $result =& $this->db->requireSingleResult($query, true, "Retrieving record by id $this->table_name:$id found ");
-
- if(empty($result))
- {
- return null;
- }
-
- $row = $this->db->fetchByAssoc($result, -1, $encodeThis);
-
- foreach($this->column_fields as $field)
- {
- if(isset($row[$field]))
- {
- $this->$field = $row[$field];
- }
- }
- return $this;
- }
- */
-
- function get_list($order_by = "", $where = "", $row_offset = 0, $limit=-1, $max=-1) {
- $this->log->debug("get_list: order_by = '$order_by' and where = '$where' and limit = '$limit'");
-
- $query = $this->create_list_query($order_by, $where);
-
- return $this->process_list_query($query, $row_offset, $limit, $max);
- }
-
- /**
- * This function returns a full (ie non-paged) list of the current object type.
- * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
- * All Rights Reserved..
- * Contributor(s): ______________________________________..
- */
- function get_full_list($order_by = "", $where = "") {
- $this->log->debug("get_full_list: order_by = '$order_by' and where = '$where'");
- $query = "SELECT * FROM $this->table_name ";
-
- if($where != "")
- $query .= "where ($where) AND deleted=0";
- else
- $query .= "where deleted=0";
-
- if(!empty($order_by))
- $query .= " ORDER BY $order_by";
-
- $result =& $this->db->query($query, false);
-
- if($this->db->getRowCount($result) > 0){
-
- // We have some data.
- while ($row = $this->db->fetchByAssoc($result)) {
- foreach($this->list_fields as $field)
- {
- if (isset($row[$field])) {
- $this->$field = $row[$field];
-
- $this->log->debug("process_full_list: $this->object_name({$row['id']}): ".$field." = ".$this->$field);
- }
- else {
- $this->$field = '';
- }
- }
-
-
- $list[] = clone($this); //added clone tosupport PHP5
- }
- }
-
- if (isset($list)) return $list;
- else return null;
-
- }
-
- function create_list_query($order_by, $where)
- {
- $query = "SELECT * FROM $this->table_name ";
-
- if($where != "")
- $query .= "where ($where) AND deleted=0";
- else
- $query .= "where deleted=0";
-
- if(!empty($order_by))
- $query .= " ORDER BY $order_by";
-
- return $query;
- }
-
-
- function process_list_query($query, $row_offset, $limit= -1, $max_per_page = -1)
- {
- global $list_max_entries_per_page;
- $this->log->debug("process_list_query: ".$query);
- if(!empty($limit) && $limit != -1){
- $result =& $this->db->limitQuery($query, $row_offset + 0, $limit,true,"Error retrieving $this->object_name list: ");
- }else{
- $result =& $this->db->query($query,true,"Error retrieving $this->object_name list: ");
- }
-
- $list = Array();
- if($max_per_page == -1){
- $max_per_page = $list_max_entries_per_page;
- }
- $rows_found = $this->db->getRowCount($result);
-
- $this->log->debug("Found $rows_found ".$this->object_name."s");
-
- $previous_offset = $row_offset - $max_per_page;
- $next_offset = $row_offset + $max_per_page;
-
- if($rows_found != 0)
- {
-
- // We have some data.
-
- for($index = $row_offset , $row = $this->db->fetchByAssoc($result, $index); $row && ($index < $row_offset + $max_per_page || $max_per_page == -99) ;$index++, $row = $this->db->fetchByAssoc($result, $index)){
- foreach($this->list_fields as $field)
- {
- if (isset($row[$field])) {
- $this->$field = $row[$field];
-
-
- $this->log->debug("$this->object_name({$row['id']}): ".$field." = ".$this->$field);
- }
- else
- {
- $this->$field = "";
- }
- }
-
-
- $list[] = clone($this); //added clone to support PHP5
- }
- }
-
- $response = Array();
- $response['list'] = $list;
- $response['row_count'] = $rows_found;
- $response['next_offset'] = $next_offset;
- $response['previous_offset'] = $previous_offset;
-
- return $response;
- }
-
-
- /**
- * Track the viewing of a detail record. This leverages get_summary_text() which is object specific
- * params $user_id - The user that is viewing the record.
- * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
- * All Rights Reserved..
- * Contributor(s): ______________________________________..
- */
- function track_view($user_id, $current_module,$id='')
- {
- $this->log->debug("About to call vtiger_tracker (user_id, module_name, item_id)($user_id, $current_module, $this->id)");
-
- $tracker = new Tracker();
- $tracker->track_view($user_id, $current_module, $id, '');
- }
-
-
- /** This function should be overridden in each module. It marks an item as deleted.
- * If it is not overridden, then marking this type of item is not allowed
- * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
- * All Rights Reserved..
- * Contributor(s): ______________________________________..
- */
- function mark_deleted($id)
- {
- $query = "UPDATE $this->table_name set deleted=1 where id='$id'";
- $this->db->query($query, true,"Error marking record deleted: ");
-
- $this->mark_relationships_deleted($id);
-
- // Take the item off of the recently viewed lists.
- $tracker = new Tracker();
- $tracker->delete_item_history($id);
-
- }
-
-
- /* This is to allow subclasses to fill in row specific columns of a list view form
- function list_view_parse_additional_sections(&$list_form)
- {
- }
- */
- /* This function assigns all of the values into the template for the list view
- function get_list_view_array(){
- $return_array = Array();
-
- foreach($this->list_fields as $field)
- {
- $return_array[strtoupper($field)] = $this->$field;
- }
-
- return $return_array;
- }
- function get_list_view_data()
- {
-
- return $this->get_list_view_array();
- }
-
- function get_where(&$fields_array)
- {
- $where_clause = "WHERE ";
- $first = 1;
- foreach ($fields_array as $name=>$value)
- {
- if ($first)
- {
- $first = 0;
- }
- else
- {
- $where_clause .= " AND ";
- }
-
- $where_clause .= "$name = ".$adb->quote($value)."";
- }
-
- $where_clause .= " AND deleted=0";
- return $where_clause;
- }
-
-
- function retrieve_by_string_fields($fields_array, $encode=true)
- {
- $where_clause = $this->get_where($fields_array);
-
- $query = "SELECT * FROM $this->table_name $where_clause";
- $this->log->debug("Retrieve $this->object_name: ".$query);
- $result =& $this->db->requireSingleResult($query, true, "Retrieving record $where_clause:");
- if( empty($result))
- {
- return null;
- }
-
- $row = $this->db->fetchByAssoc($result,-1, $encode);
-
- foreach($this->column_fields as $field)
- {
- if(isset($row[$field]))
- {
- $this->$field = $row[$field];
- }
- }
- return $this;
- }
-
- // this method is called during an import before inserting a bean
- // define an associative array called $special_fields
- // the keys are user defined, and don't directly map to the bean's vtiger_fields
- // the value is the method name within that bean that will do extra
- // processing for that vtiger_field. example: 'full_name'=>'get_names_from_full_name'
-
- function process_special_fields()
- {
- foreach ($this->special_functions as $func_name)
- {
- if ( method_exists($this,$func_name) )
- {
- $this->$func_name();
- }
- }
- }
-
- */
-}
-
-
-?>
+<?php
+/*********************************************************************************
+ * The contents of this file are subject to the SugarCRM Public License Version 1.1.2
+ * ("License"); You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
+ * the specific language governing rights and limitations under the License.
+ * The Original Code is: SugarCRM Open Source
+ * The Initial Developer of the Original Code is SugarCRM, Inc.
+ * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
+ * All Rights Reserved.
+ * Contributor(s): ______________________________________.
+ ********************************************************************************/
+/*********************************************************************************
+ * $Header: /advent/projects/wesat/vtiger_crm/sugarcrm/data/SugarBean.php,v 1.70 2005/03/16 10:25:16 shaw Exp $
+ * Description: Defines the base class for all data entities used throughout the
+ * application. The base class including its methods and variables is designed to
+ * be overloaded with module-specific methods and variables particular to the
+ * module's base entity class.
+ ********************************************************************************/
+
+include_once('config.php');
+require_once('include/logging.php');
+require_once('data/Tracker.php');
+require_once('include/utils/utils.php');
+require_once('include/utils/UserInfoUtil.php');
+require_once('include/database/PearDatabase.php');
+
+class SugarBean
+{
+ /**
+ * This method implements a generic insert and update logic for any SugarBean
+ * This method only works for subclasses that implement the same variable names.
+ * This method uses the presence of an id vtiger_field that is not null to signify and update.
+ * The id vtiger_field should not be set otherwise.
+ * todo - Add support for vtiger_field type validation and encoding of parameters.
+ * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
+ * All Rights Reserved.
+ * Contributor(s): ______________________________________..
+ */
+
+
+ function save($module_name= '')
+ {
+ global $adb;
+ global $current_user;
+ $isUpdate = true;
+
+ if(!isset($this->id) || $this->id == "")
+ {
+ $isUpdate = false;
+ }
+
+ if ( $this->new_with_id == true )
+ {
+ $isUpdate = false;
+ }
+
+ //$this->date_modified = $this->db->formatDate(date('YmdHis'));
+ $this->date_modified = $this->db->formatDate(date('YmdHis'));
+ if (isset($current_user)) $this->modified_user_id = $current_user->id;
+
+ if($isUpdate)
+ {
+ $query = "Update ".$this->table_name." set ";
+ }
+ else
+ {
+ //$this->date_entered = $this->db->formatDate(date('YmdHis'));
+ $this->date_entered = $this->db->formatDate(date('YmdHis'));
+
+ if($this->new_schema &&
+ $this->new_with_id == false)
+ {
+ $this->id = $this->db->getUniqueID("vtiger_users");
+ }
+
+ $query = "INSERT into ".$this->table_name;
+ }
+ // todo - add date modified to the list.
+
+ // write out the SQL statement.
+ //$query .= $this->table_name." set ";
+
+ $firstPass = 0;
+ $insKeys = '(';
+ $insValues = '(';
+ $updKeyValues='';
+ foreach($this->column_fields as $field)
+ {
+ // Do not write out the id vtiger_field on the update statement.
+ // We are not allowed to change ids.
+ if($isUpdate && ('id' == $field))
+ continue;
+
+ // Only assign variables that have been set.
+ if(isset($this->$field))
+ {
+ // Try comparing this element with the head element.
+ if(0 == $firstPass)
+ {
+ $firstPass = 1;
+ }
+ else
+ {
+ if($isUpdate)
+ {
+ $updKeyValues = $updKeyValues.", ";
+ }
+ else
+ {
+ $insKeys = $insKeys.", ";
+ $insValues = $insValues.", ";
+ }
+ }
+ /*else
+ $query = $query.", ";
+
+ $query = $query.$field."='".$adb->quote(from_html($this->$field,$isUpdate))."'";
+ */
+ if($isUpdate)
+ {
+ $updKeyValues = $updKeyValues.$field."=".$this->db->formatString($this->table_name,$field,from_html($this->$field,$isUpdate));
+ }
+ else
+ {
+ $insKeys = $insKeys.$field;
+ $insValues = $insValues.$this->db->formatString($this->table_name,$field,from_html($this->$field,$isUpdate));
+ }
+ }
+ }
+
+ if($isUpdate)
+ {
+ $query = $query.$updKeyValues." WHERE ID = '$this->id'";
+ $this->log->info("Update $this->object_name: ".$query);
+ }
+ else
+ {
+ $query = $query.$insKeys.") VALUES ".$insValues.")";
+ $this->log->info("Insert: ".$query);
+ }
+
+ $this->db->query($query, true);
+
+ // If this is not an update then store the id for later.
+ if(!$isUpdate && !$this->new_schema && !$this->new_with_id)
+ {
+ $this->db->println("Illegal Access - SugarBean");
+ //this is mysql specific
+ $this->id = $this->db->getOne("SELECT LAST_INSERT_ID()" );
+ }
+
+ return $this->id;
+ }
+
+
+ /**
+ * This function retrieves a record of the appropriate type from the DB.
+ * It fills in all of the vtiger_fields from the DB into the object it was called on.
+ * param $id - If ID is specified, it overrides the current value of $this->id. If not specified the current value of $this->id will be used.
+ * returns this - The object that it was called apon or null if exactly 1 record was not found.
+ * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
+ * All Rights Reserved.
+ * Contributor(s): ______________________________________..
+ function retrieve($id = -1, $encodeThis=true) {
+ if ($id == -1) {
+ $id = $this->id;
+ }
+ if($id == '') {
+ return null;
+ }
+// GS porting vtiger_crmentity
+$query = "SELECT * FROM $this->table_name WHERE $this->module_id = '$id'";
+// $query = "SELECT * FROM $this->table_name WHERE ID = '$id'";
+ $this->log->debug("Retrieve $this->object_name: ".$query);
+
+ $result =& $this->db->requireSingleResult($query, true, "Retrieving record by id $this->table_name:$id found ");
+
+ if(empty($result))
+ {
+ return null;
+ }
+
+ $row = $this->db->fetchByAssoc($result, -1, $encodeThis);
+
+ foreach($this->column_fields as $field)
+ {
+ if(isset($row[$field]))
+ {
+ $this->$field = $row[$field];
+ }
+ }
+ return $this;
+ }
+ */
+
+ function get_list($order_by = "", $where = "", $row_offset = 0, $limit=-1, $max=-1) {
+ $this->log->debug("get_list: order_by = '$order_by' and where = '$where' and limit = '$limit'");
+
+ $query = $this->create_list_query($order_by, $where);
+
+ return $this->process_list_query($query, $row_offset, $limit, $max);
+ }
+
+ /**
+ * This function returns a full (ie non-paged) list of the current object type.
+ * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
+ * All Rights Reserved..
+ * Contributor(s): ______________________________________..
+ */
+ function get_full_list($order_by = "", $where = "") {
+ $this->log->debug("get_full_list: order_by = '$order_by' and where = '$where'");
+ $query = "SELECT * FROM $this->table_name ";
+
+ if($where != "")
+ $query .= "where ($where) AND deleted=0";
+ else
+ $query .= "where deleted=0";
+
+ if(!empty($order_by))
+ $query .= " ORDER BY $order_by";
+
+ $result =& $this->db->query($query, false);
+
+ if($this->db->getRowCount($result) > 0){
+
+ // We have some data.
+ while ($row = $this->db->fetchByAssoc($result)) {
+ foreach($this->list_fields as $field)
+ {
+ if (isset($row[$field])) {
+ $this->$field = $row[$field];
+
+ $this->log->debug("process_full_list: $this->object_name({$row['id']}): ".$field." = ".$this->$field);
+ }
+ else {
+ $this->$field = '';
+ }
+ }
+
+
+ $list[] = clone($this); //added clone tosupport PHP5
+ }
+ }
+
+ if (isset($list)) return $list;
+ else return null;
+
+ }
+
+ function create_list_query($order_by, $where)
+ {
+ $query = "SELECT * FROM $this->table_name ";
+
+ if($where != "")
+ $query .= "where ($where) AND deleted=0";
+ else
+ $query .= "where deleted=0";
+
+ if(!empty($order_by))
+ $query .= " ORDER BY $order_by";
+
+ return $query;
+ }
+
+
+ function process_list_query($query, $row_offset, $limit= -1, $max_per_page = -1)
+ {
+ global $list_max_entries_per_page;
+ $this->log->debug("process_list_query: ".$query);
+ if(!empty($limit) && $limit != -1){
+ $result =& $this->db->limitQuery($query, $row_offset + 0, $limit,true,"Error retrieving $this->object_name list: ");
+ }else{
+ $result =& $this->db->query($query,true,"Error retrieving $this->object_name list: ");
+ }
+
+ $list = Array();
+ if($max_per_page == -1){
+ $max_per_page = $list_max_entries_per_page;
+ }
+ $rows_found = $this->db->getRowCount($result);
+
+ $this->log->debug("Found $rows_found ".$this->object_name."s");
+
+ $previous_offset = $row_offset - $max_per_page;
+ $next_offset = $row_offset + $max_per_page;
+
+ if($rows_found != 0)
+ {
+
+ // We have some data.
+
+ for($index = $row_offset , $row = $this->db->fetchByAssoc($result, $index); $row && ($index < $row_offset + $max_per_page || $max_per_page == -99) ;$index++, $row = $this->db->fetchByAssoc($result, $index)){
+ foreach($this->list_fields as $field)
+ {
+ if (isset($row[$field])) {
+ $this->$field = $row[$field];
+
+
+ $this->log->debug("$this->object_name({$row['id']}): ".$field." = ".$this->$field);
+ }
+ else
+ {
+ $this->$field = "";
+ }
+ }
+
+
+ $list[] = clone($this); //added clone to support PHP5
+ }
+ }
+
+ $response = Array();
+ $response['list'] = $list;
+ $response['row_count'] = $rows_found;
+ $response['next_offset'] = $next_offset;
+ $response['previous_offset'] = $previous_offset;
+
+ return $response;
+ }
+
+
+ /**
+ * Track the viewing of a detail record. This leverages get_summary_text() which is object specific
+ * params $user_id - The user that is viewing the record.
+ * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
+ * All Rights Reserved..
+ * Contributor(s): ______________________________________..
+ */
+ function track_view($user_id, $current_module,$id='')
+ {
+ $this->log->debug("About to call vtiger_tracker (user_id, module_name, item_id)($user_id, $current_module, $this->id)");
+
+ $tracker = new Tracker();
+ $tracker->track_view($user_id, $current_module, $id, '');
+ }
+
+
+ /** This function should be overridden in each module. It marks an item as deleted.
+ * If it is not overridden, then marking this type of item is not allowed
+ * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
+ * All Rights Reserved..
+ * Contributor(s): ______________________________________..
+ */
+ function mark_deleted($id)
+ {
+ $query = "UPDATE $this->table_name set deleted=1 where id='$id'";
+ $this->db->query($query, true,"Error marking record deleted: ");
+
+ $this->mark_relationships_deleted($id);
+
+ // Take the item off of the recently viewed lists.
+ $tracker = new Tracker();
+ $tracker->delete_item_history($id);
+
+ }
+
+
+ /* This is to allow subclasses to fill in row specific columns of a list view form
+ function list_view_parse_additional_sections(&$list_form)
+ {
+ }
+ */
+ /* This function assigns all of the values into the template for the list view
+ function get_list_view_array(){
+ $return_array = Array();
+
+ foreach($this->list_fields as $field)
+ {
+ $return_array[strtoupper($field)] = $this->$field;
+ }
+
+ return $return_array;
+ }
+ function get_list_view_data()
+ {
+
+ return $this->get_list_view_array();
+ }
+
+ function get_where(&$fields_array)
+ {
+ $where_clause = "WHERE ";
+ $first = 1;
+ foreach ($fields_array as $name=>$value)
+ {
+ if ($first)
+ {
+ $first = 0;
+ }
+ else
+ {
+ $where_clause .= " AND ";
+ }
+
+ $where_clause .= "$name = ".$adb->quote($value)."";
+ }
+
+ $where_clause .= " AND deleted=0";
+ return $where_clause;
+ }
+
+
+ function retrieve_by_string_fields($fields_array, $encode=true)
+ {
+ $where_clause = $this->get_where($fields_array);
+
+ $query = "SELECT * FROM $this->table_name $where_clause";
+ $this->log->debug("Retrieve $this->object_name: ".$query);
+ $result =& $this->db->requireSingleResult($query, true, "Retrieving record $where_clause:");
+ if( empty($result))
+ {
+ return null;
+ }
+
+ $row = $this->db->fetchByAssoc($result,-1, $encode);
+
+ foreach($this->column_fields as $field)
+ {
+ if(isset($row[$field]))
+ {
+ $this->$field = $row[$field];
+ }
+ }
+ return $this;
+ }
+
+ // this method is called during an import before inserting a bean
+ // define an associative array called $special_fields
+ // the keys are user defined, and don't directly map to the bean's vtiger_fields
+ // the value is the method name within that bean that will do extra
+ // processing for that vtiger_field. example: 'full_name'=>'get_names_from_full_name'
+
+ function process_special_fields()
+ {
+ foreach ($this->special_functions as $func_name)
+ {
+ if ( method_exists($this,$func_name) )
+ {
+ $this->$func_name();
+ }
+ }
+ }
+
+ */
+}
+
+
+?>
More information about the vtigercrm-commits
mailing list