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.
1322 lines
44 KiB
1322 lines
44 KiB
<?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/vtigercrm/data/CRMEntity.php,v 1.16 2005/04/29 04:21:31 rajeshkannan 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.php');
|
|
require_once('modules/Users/UserInfoUtil.php');
|
|
|
|
class CRMEntity extends 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 field that is not null to signify and update.
|
|
* The id field should not be set otherwise.
|
|
* todo - Add support for field type validation and encoding of parameters.
|
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
|
* All Rights Reserved.
|
|
* Contributor(s): ______________________________________..
|
|
*/
|
|
|
|
var $new_schema = false;
|
|
var $new_with_id = false;
|
|
|
|
function saveentity($module,$migration='')
|
|
{
|
|
global $current_user;
|
|
$this->db->println("TRANS saveentity starts");
|
|
$this->db->startTransaction();
|
|
|
|
// Code included by Jaguar - starts
|
|
if(isset($_REQUEST['recurringtype']) && $_REQUEST['recurringtype']!='')
|
|
$recur_type = trim($_REQUEST['recurringtype']);
|
|
else
|
|
$recur_type='';
|
|
// Code included by Jaguar - Ends
|
|
|
|
foreach($this->tab_name as $table_name)
|
|
{
|
|
if($table_name == "crmentity")
|
|
{
|
|
$this->insertIntoCrmEntity($module,$migration);
|
|
}
|
|
elseif($table_name == "salesmanactivityrel")
|
|
{
|
|
$this->insertIntoSmActivityRel($module);
|
|
}
|
|
elseif($table_name == "seticketsrel" || $table_name == "seactivityrel" || $table_name == "seproductsrel" || $table_name == "senotesrel" || $table_name == "sefaqrel")
|
|
{
|
|
if(isset($this->column_fields['parent_id']) && $this->column_fields['parent_id'] != '')
|
|
{
|
|
$this->insertIntoEntityTable($table_name, $module);
|
|
}
|
|
}
|
|
elseif($table_name == "cntactivityrel")
|
|
{
|
|
if(isset($this->column_fields['contact_id']) && $this->column_fields['contact_id'] != '')
|
|
{
|
|
$this->insertIntoEntityTable($table_name, $module);
|
|
}
|
|
}
|
|
elseif($table_name == "ticketcomments" && $_REQUEST['comments'] != '')
|
|
{
|
|
$this->insertIntoTicketCommentTable($table_name, $module);
|
|
}
|
|
elseif($table_name == "faqcomments" && $_REQUEST['comments'] != '')
|
|
{
|
|
$this->insertIntoFAQCommentTable($table_name, $module);
|
|
}
|
|
elseif($table_name == "activity_reminder")
|
|
{
|
|
if($recur_type == "--None--")
|
|
{
|
|
$this->insertIntoReminderTable($table_name,$module,"");
|
|
}
|
|
}
|
|
elseif($table_name == "recurringevents") // Code included by Jaguar - starts
|
|
{
|
|
$recur_type = trim($_REQUEST['recurringtype']);
|
|
if($recur_type != "--None--" && $recur_type != '')
|
|
{
|
|
$this->insertIntoRecurringTable($table_name,$module);
|
|
}
|
|
}// Code included by Jaguar - Ends
|
|
else
|
|
{
|
|
$this->insertIntoEntityTable($table_name, $module);
|
|
}
|
|
}
|
|
if($module == 'Emails' || $module == 'Notes')
|
|
if(isset($_FILES['filename']['name']) && $_FILES['filename']['name']!='')
|
|
$this->insertIntoAttachment($this->id,$module);
|
|
|
|
$this->db->completeTransaction();
|
|
$this->db->println("TRANS saveentity ends");
|
|
}
|
|
|
|
|
|
function insertIntoAttachment1($id,$module,$filedata,$filename,$filesize,$filetype,$user_id)
|
|
{
|
|
$date_var = date('YmdHis');
|
|
// global $current_user;
|
|
global $adb;
|
|
//global $root_directory;
|
|
global $vtlog;
|
|
|
|
$ownerid = $user_id;
|
|
|
|
|
|
if($filesize != 0)
|
|
{
|
|
$data = base64_encode(fread(fopen($filedata, "r"), $filesize));
|
|
}
|
|
|
|
$current_id = $adb->getUniqueID("crmentity");
|
|
|
|
if($module=='Emails')
|
|
{
|
|
$vtlog->logthis("module is ".$module,'info');
|
|
$idname='emailid'; $tablename='emails'; $descname='description';}
|
|
else
|
|
{
|
|
$idname='notesid'; $tablename='notes'; $descname='notecontent';}
|
|
$sql="update ".$tablename." set filename='".$filename."' where ".$idname."=".$id;
|
|
$adb->query($sql);
|
|
|
|
$sql1 = "insert into crmentity (crmid,smcreatorid,smownerid,setype,description,createdtime,modifiedtime) values(".$current_id.",".$current_user->id.",".$ownerid.",'".$module." Attachment','"."',".$adb->formatString("crmentity","createdtime",$date_var).",".$adb->formatString("crmentity","modifiedtime",$date_var).")";
|
|
$adb->query($sql1);
|
|
|
|
//$this->id = $current_id;
|
|
|
|
$sql2="insert into attachments(attachmentsid, name, description, type, attachmentsize, attachmentcontents) values(".$current_id.",'".$filename."','"."','".$filetype."','".$filesize."','".$adb->getEmptyBlob()."')";
|
|
$result=$adb->query($sql2);
|
|
|
|
if($result!=false)
|
|
$result = $adb->updateBlob('attachments','attachmentcontents',"attachmentsid='".$current_id."' and name='".$filename."'",$data);
|
|
|
|
$sql3='insert into seattachmentsrel values('.$id.','.$current_id.')';
|
|
$adb->query($sql3);
|
|
}
|
|
|
|
|
|
|
|
|
|
function insertIntoAttachment($id,$module)
|
|
{
|
|
$date_var = date('YmdHis');
|
|
global $current_user;
|
|
global $adb;
|
|
global $root_directory;
|
|
|
|
$ownerid = $this->column_fields['assigned_user_id'];
|
|
$adb->println("insertattach ownerid=".$ownerid." mod=".$module);
|
|
$adb->println($this->column_fields);
|
|
|
|
if(!isset($ownerid) || $ownerid=='') $ownerid = $current_user->id;
|
|
$uploaddir = $root_directory ."/test/upload/" ;// set this to wherever
|
|
$binFile = $_FILES['filename']['name'];
|
|
$filename = basename($binFile);
|
|
$filetype= $_FILES['filename']['type'];
|
|
$filesize = $_FILES['filename']['size'];
|
|
|
|
if($binFile != '')
|
|
{
|
|
if(move_uploaded_file($_FILES["filename"]["tmp_name"],$uploaddir.$_FILES["filename"]["name"]))
|
|
{
|
|
// $binFile = $_FILES['filename']['name'];
|
|
// $filename = basename($binFile);
|
|
// $filetype= $_FILES['filename']['type'];
|
|
// $filesize = $_FILES['filename']['size'];
|
|
if($filesize != 0)
|
|
{
|
|
$data = base64_encode(fread(fopen($uploaddir.$binFile, "r"), $filesize));
|
|
}
|
|
}
|
|
$current_id = $adb->getUniqueID("crmentity");
|
|
|
|
if($module=='Emails') { $idname='emailid'; $tablename='emails'; $descname='description';}
|
|
else { $idname='notesid'; $tablename='notes'; $descname='notecontent';}
|
|
|
|
$sql="update ".$tablename." set filename='".$filename."' where ".$idname."=".$id;
|
|
$adb->query($sql);
|
|
|
|
$sql1 = "insert into crmentity (crmid,smcreatorid,smownerid,setype,description,createdtime,modifiedtime) values(".$current_id.",".$current_user->id.",".$ownerid.",'".$module." Attachment','".$this->column_fields['description']."',".$adb->formatString("crmentity","createdtime",$date_var).",".$adb->formatString("crmentity","modifiedtime",$date_var).")";
|
|
$adb->query($sql1);
|
|
|
|
//$this->id = $current_id;
|
|
$sql2="insert into attachments(attachmentsid, name, description, type, attachmentsize, attachmentcontents) values(".$current_id.",'".$filename."','".$this->column_fields[$descname]."','".$filetype."','".$filesize."',".$adb->getEmptyBlob().")";
|
|
|
|
$result=$adb->query($sql2);
|
|
|
|
if($result!=false)
|
|
$result = $adb->updateBlob('attachments','attachmentcontents',"attachmentsid='".$current_id."' and name='".$filename."'",$data);
|
|
|
|
if($_REQUEST['mode'] == 'edit')
|
|
{
|
|
if($id != '' && $_REQUEST['fileid'] != '')
|
|
{
|
|
$delquery = 'delete from seattachmentsrel where crmid = '.$id.' and attachmentsid = '.$_REQUEST['fileid'];
|
|
$adb->query($delquery);
|
|
}
|
|
}
|
|
if($module == 'Notes')
|
|
{
|
|
$query = "delete from seattachmentsrel where crmid = ".$id;
|
|
$adb->query($query);
|
|
}
|
|
$sql3='insert into seattachmentsrel values('.$id.','.$current_id.')';
|
|
$adb->query($sql3);
|
|
}
|
|
}
|
|
|
|
function insertIntoCrmEntity($module,$migration='')
|
|
{
|
|
global $adb;
|
|
global $current_user;
|
|
global $vtlog;
|
|
|
|
$date_var = date('YmdHis');
|
|
if($_REQUEST['assigntype'] == 'T')
|
|
{
|
|
$ownerid= 0;
|
|
}
|
|
else
|
|
{
|
|
$ownerid = $this->column_fields['assigned_user_id'];
|
|
}
|
|
|
|
//This check is done for products.
|
|
if($module == 'Products' || $module == 'Notes' || $module =='Faq')
|
|
{
|
|
$vtlog->logthis("module is =".$module,'info');
|
|
$ownerid = $current_user->id;
|
|
}
|
|
if($module == 'Events')
|
|
{
|
|
$module = 'Activities';
|
|
}
|
|
if($this->mode == 'edit')
|
|
{
|
|
$description_val = from_html($adb->formatString("crmentity","description",$this->column_fields['description']),($insertion_mode == 'edit')?true:false);
|
|
$sql = "update crmentity set smownerid=".$ownerid.",modifiedby=".$current_user->id.",description=".$description_val.", modifiedtime=".$adb->formatString("crmentity","modifiedtime",$date_var)." where crmid=".$this->id;
|
|
|
|
$adb->query($sql);
|
|
}
|
|
else
|
|
{
|
|
//if this is the create mode and the group allocation is chosen, then do the following
|
|
$current_id = $adb->getUniqueID("crmentity");
|
|
if($migration != '')
|
|
{
|
|
$sql = "select * from Migrator where oldid='".$this->id ."'";
|
|
|
|
$result = $adb->query($sql);
|
|
$id = $adb->query_result($result,0,"newid");
|
|
//get the corresponding newid for these assigned_user_id and modified_user_id
|
|
$modifierid = $adb->query_result($result,0,"assigned_user_id");
|
|
$id = $adb->query_result($result,0,"newid");
|
|
|
|
$sql_modifierid = "select * from Migrator where oldid='".$modifierid ."'";
|
|
$result_modifierid = $adb->query($sql_modifierid);
|
|
$modifierid = $adb->query_result($result_modifierid,0,"newid");
|
|
|
|
$creatorid =$adb->query_result($result,0,"modified_user_id");
|
|
|
|
$sql_creatorid = "select * from Migrator where oldid='".$creatorid ."'";
|
|
$result_creatorid = $adb->query($sql_creatorid);
|
|
$creatorid = $adb->query_result($result_creatorid,0,"newid");
|
|
|
|
$createdtime = $adb->query_result($result,0,"createdtime");
|
|
$modifiedtime = $adb->query_result($result,0,"modifiedtime");
|
|
$deleted = $adb->query_result($result,0,"deleted");
|
|
$module = $adb->query_result($result,0,"module");
|
|
$description_val = from_html($adb->formatString("crmentity","description",$this->column_fields['description']),($insertion_mode == 'edit')?true:false);
|
|
//get the values from this and set to the query below and then relax!
|
|
$sql = "insert into crmentity (crmid,smcreatorid,smownerid,setype,description,createdtime,modifiedtime,deleted) values('".$id."','".$creatorid."','".$modifierid."','".$module."',".$description_val.",'".$createdtime."','".$modifiedtime ."',".$deleted.")";
|
|
$adb->query($sql);
|
|
$this->id = $id;
|
|
}
|
|
else
|
|
{
|
|
$description_val = from_html($adb->formatString("crmentity","description",$this->column_fields['description']),($insertion_mode == 'edit')?true:false);
|
|
$sql = "insert into crmentity (crmid,smcreatorid,smownerid,setype,description,createdtime,modifiedtime) values('".$current_id."','".$current_user->id."','".$ownerid."','".$module."',".$description_val.",'".$date_var."','".$date_var."')";
|
|
$adb->query($sql);
|
|
$this->id = $current_id;
|
|
}
|
|
}
|
|
|
|
//$sql = "insert into crmentity (crmid,smcreatorid,smownerid,setype,description,createdtime,modifiedtime) values(".$current_id.",".$current_user->id.",".$ownerid.",'".$module."','".$this->column_fields['description']."',".$adb->formatString("crmentity","createdtime",$date_var).",".$adb->formatString("crmentity","modifiedtime",$date_var).")";
|
|
//$adb->query($sql);
|
|
//echo $sql;
|
|
//$this->id = $current_id;
|
|
}
|
|
|
|
|
|
|
|
function insertIntoSmActivityRel($module)
|
|
{
|
|
global $adb;
|
|
global $current_user;
|
|
if($this->mode == 'edit')
|
|
{
|
|
|
|
$sql = "delete from salesmanactivityrel where activityid=".$this->id." and smid = ".$this->column_fields['assigned_user_id']."";
|
|
$adb->query($sql);
|
|
|
|
}
|
|
$sql_qry = "insert into salesmanactivityrel (smid,activityid) values(".$this->column_fields['assigned_user_id'].",".$this->id.")";
|
|
$adb->query($sql_qry);
|
|
|
|
}
|
|
//code added by shankar starts
|
|
function constructUpdateLog($id)
|
|
{
|
|
global $adb;
|
|
global $current_user;
|
|
$ticketid = $id;
|
|
//Updating History
|
|
$tktresult = $adb->query("select * from troubletickets where ticketid='".$ticketid."'");
|
|
$crmresult = $adb->query("select * from crmentity where crmid='".$ticketid."'");
|
|
$updatelog = $adb->query_result($tktresult,0,"update_log");
|
|
$old_user_id = $adb->query_result($crmresult,0,"smownerid");
|
|
$old_status = $adb->query_result($tktresult,0,"status");
|
|
$old_priority = $adb->query_result($tktresult,0,"priority");
|
|
$old_severity = $adb->query_result($tktresult,0,"severity");
|
|
$old_category = $adb->query_result($tktresult,0,"category");
|
|
if($old_user_id != $this->column_fields['assigned_user_id'] || $old_status != $this->column_fields['ticketstatus'] || $old_priority != $this->column_fields['ticketpriorities'] || $old_severity != $this->column_fields['ticketseverities'] || $old_category != $this->column_fields['ticketcategories'])
|
|
{
|
|
$updatelog .= date("l dS F Y h:i:s A").' by '.$current_user->user_name.'--//--';
|
|
}
|
|
if($old_user_id != $this->column_fields['assigned_user_id'])
|
|
{
|
|
$user_name = getUserName($this->column_fields['assigned_user_id']);
|
|
$updatelog .= ' Transferred to '.$assigned_user_name.'\.';
|
|
}
|
|
if($old_status != $this->column_fields['ticketstatus'])
|
|
{
|
|
$updatelog .= ' Status Changed to '.$this->column_fields['ticketstatus'].'\.';
|
|
}
|
|
if($old_priority != $this->column_fields['ticketpriorities'])
|
|
{
|
|
$updatelog .= ' Priority Changed to '.$this->column_fields['ticketpriorities'].'\.';
|
|
}
|
|
if($old_severity != $this->column_fields['ticketseverities'])
|
|
{
|
|
$updatelog .= ' Severity Changed to '.$this->column_fields['ticketseverities'].'\.';
|
|
}
|
|
if($old_category != $this->column_fields['ticketcategories'])
|
|
{
|
|
$updatelog .= ' Category Changed to '.$this->column_fields['ticketcategories'].'\.';
|
|
}
|
|
if($old_user_id != $this->column_fields['assigned_user_id'] || $old_status != $this->column_fields['ticketstatus'] || $old_priority != $this->column_fields['ticketpriorities'])
|
|
{
|
|
$updatelog .= '--//--';
|
|
}
|
|
return $updatelog;
|
|
}
|
|
//code added by shankar ends
|
|
function insertIntoEntityTable($table_name, $module)
|
|
{
|
|
global $vtlog;
|
|
$vtlog->logthis("function insertIntoCrmEntity ".$module.' table name ' .$table_name,'info');
|
|
global $adb;
|
|
$insertion_mode = $this->mode;
|
|
|
|
//Checkin whether an entry is already is present in the table to update
|
|
if($insertion_mode == 'edit')
|
|
{
|
|
$check_query = "select * from ".$table_name." where ".$this->tab_name_index[$table_name]."=".$this->id;
|
|
$check_result=$adb->query($check_query);
|
|
|
|
$num_rows = $adb->num_rows($check_result);
|
|
|
|
if($num_rows <= 0)
|
|
{
|
|
$insertion_mode = '';
|
|
}
|
|
}
|
|
|
|
if($insertion_mode == 'edit')
|
|
{
|
|
$update = '';
|
|
}
|
|
else
|
|
{
|
|
$column = $this->tab_name_index[$table_name];
|
|
$value = $this->id;
|
|
}
|
|
|
|
$tabid= getTabid($module);
|
|
$sql = "select * from field where tabid=".$tabid." and tablename='".$table_name."' and displaytype in (1,3)";
|
|
$result = $adb->query($sql);
|
|
$noofrows = $adb->num_rows($result);
|
|
for($i=0; $i<$noofrows; $i++)
|
|
{
|
|
$fieldname=$adb->query_result($result,$i,"fieldname");
|
|
$columname=$adb->query_result($result,$i,"columnname");
|
|
$uitype=$adb->query_result($result,$i,"uitype");
|
|
if(isset($this->column_fields[$fieldname]))
|
|
{
|
|
if($uitype == 56)
|
|
{
|
|
if($this->column_fields[$fieldname] == 'on')
|
|
{
|
|
$fldvalue = 1;
|
|
}
|
|
else
|
|
{
|
|
$fldvalue = 0;
|
|
}
|
|
|
|
}
|
|
elseif($uitype == 5 || $uitype == 6 || $uitype ==23)
|
|
{
|
|
if($_REQUEST['action'] == 'Import')
|
|
{
|
|
$fldvalue = $this->column_fields[$fieldname];
|
|
}
|
|
else
|
|
{
|
|
$fldvalue = getDBInsertDateValue($this->column_fields[$fieldname]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$fldvalue = $this->column_fields[$fieldname];
|
|
$fldvalue = stripslashes($fldvalue);
|
|
}
|
|
$fldvalue = from_html($adb->formatString($table_name,$columname,$fldvalue),($insertion_mode == 'edit')?true:false);
|
|
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
$fldvalue = '';
|
|
}
|
|
if($fldvalue=='') $fldvalue ="''";
|
|
if($insertion_mode == 'edit')
|
|
{
|
|
//code by shankar starts
|
|
if(($table_name == "troubletickets") && ($columname == "update_log"))
|
|
{
|
|
$fldvalue = $this->constructUpdateLog($this->id);
|
|
$fldvalue = from_html($adb->formatString($table_name,$columname,$fldvalue),($insertion_mode == 'edit')?true:false);
|
|
}
|
|
//code by shankar ends
|
|
|
|
if($table_name == 'notes' && $columname == 'filename' && $_FILES['filename']['name'] == '')
|
|
{
|
|
$fldvalue = $this->getOldFileName($this->id);
|
|
}
|
|
if($table_name == 'products' && $columname == 'imagename')
|
|
{
|
|
//Product Image Handling done
|
|
if($_FILES['imagename']['name'] != '')
|
|
{
|
|
|
|
$prd_img_arr = upload_product_image_file("edit",$this->id);
|
|
//print_r($prd_img_arr);
|
|
if($prd_img_arr["status"] == "yes")
|
|
{
|
|
$fldvalue ="'".$prd_img_arr["file_name"]."'";
|
|
}
|
|
else
|
|
{
|
|
$fldvalue ="'".getProductImageName($this->id)."'";
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
$fldvalue ="'".getProductImageName($this->id)."'";
|
|
}
|
|
|
|
}
|
|
if($table_name != 'ticketcomments')
|
|
{
|
|
if($i == 0)
|
|
{
|
|
$update = $columname."=".$fldvalue."";
|
|
}
|
|
else
|
|
{
|
|
$update .= ', '.$columname."=".$fldvalue."";
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//code by shankar starts
|
|
if(($table_name == "troubletickets") && ($columname == "update_log"))
|
|
{
|
|
global $current_user;
|
|
$fldvalue = date("l dS F Y h:i:s A").' by '.$current_user->user_name;
|
|
if($this->column_fields['assigned_user_id'] != '')
|
|
{
|
|
$tkt_ownerid = $this->column_fields['assigned_user_id'];
|
|
}
|
|
else
|
|
{
|
|
$tkt_ownerid = $current_user->id;
|
|
}
|
|
$tkt_ownername = getUserName($tkt_ownerid);
|
|
$fldvalue .= "--//--Ticket created. Assigned to ".$tkt_ownername."--//--";
|
|
$fldvalue = from_html($adb->formatString($table_name,$columname,$fldvalue),($insertion_mode == 'edit')?true:false);
|
|
//echo ' updatevalue is ............. ' .$fldvalue;
|
|
}
|
|
elseif($table_name == 'products' && $columname == 'imagename')
|
|
{
|
|
//Product Image Handling done
|
|
if($_FILES['imagename']['name'] != '')
|
|
{
|
|
|
|
$prd_img_arr = upload_product_image_file("create",$this->id);
|
|
//print_r($prd_img_arr);
|
|
if($prd_img_arr["status"] == "yes")
|
|
{
|
|
$fldvalue ="'".$prd_img_arr["file_name"]."'";
|
|
}
|
|
else
|
|
{
|
|
$fldvalue ="''";
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
$fldvalue ="''";
|
|
}
|
|
|
|
}
|
|
//code by shankar ends
|
|
$column .= ", ".$columname;
|
|
$value .= ", ".$fldvalue."";
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if($insertion_mode == 'edit')
|
|
{
|
|
if($_REQUEST['module'] == 'Potentials')
|
|
{
|
|
$dbquery = 'select sales_stage from potential where potentialid = '.$this->id;
|
|
$sales_stage = $adb->query_result($adb->query($dbquery),0,'sales_stage');
|
|
if($sales_stage != $_REQUEST['sales_stage'])
|
|
{
|
|
$date_var = date('YmdHis');
|
|
//$sql = "insert into potstagehistory values('',".$this->id.",".$_REQUEST['amount'].",'".$_REQUEST['sales_stage']."',".$_REQUEST['probability'].",".$_REQUEST['expectedrevenue'].",".$adb->formatString("potstagehistory","closedate",$_REQUEST['closingdate']).",".$adb->formatString("potstagehistory","lastmodified",$date_var).")";
|
|
$sql = "insert into potstagehistory values('',".$this->id.",'".$_REQUEST['amount']."','".$sales_stage."','".$_REQUEST['probability']."',0,".$adb->formatString("potstagehistory","closedate",$_REQUEST['closingdate']).",".$adb->formatString("potstagehistory","lastmodified",$date_var).")";
|
|
$adb->query($sql);
|
|
}
|
|
}
|
|
|
|
//Check done by Don. If update is empty the the query fails
|
|
if(trim($update) != '')
|
|
{
|
|
$sql1 = "update ".$table_name." set ".$update." where ".$this->tab_name_index[$table_name]."=".$this->id;
|
|
|
|
$adb->query($sql1);
|
|
}
|
|
|
|
if($_REQUEST['assigntype'] == 'T')
|
|
{
|
|
$groupname = $_REQUEST['assigned_group_name'];
|
|
//echo 'about to update lead group relation';
|
|
if($module == 'Leads' && $table_name == 'leaddetails')
|
|
{
|
|
updateLeadGroupRelation($this->id,$groupname);
|
|
}
|
|
elseif($module == 'HelpDesk' && $table_name == 'troubletickets')
|
|
{
|
|
updateTicketGroupRelation($this->id,$groupname);
|
|
}
|
|
elseif($module =='Activities' || $module =='Events' )
|
|
{
|
|
if($table_name == 'activity')
|
|
{
|
|
updateActivityGroupRelation($this->id,$groupname);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
//echo 'about to update lead group relation again!';
|
|
if($module == 'Leads' && $table_name == 'leaddetails')
|
|
{
|
|
updateLeadGroupRelation($this->id,'');
|
|
}
|
|
elseif($module == 'HelpDesk' && $table_name == 'troubletickets')
|
|
{
|
|
updateTicketGroupRelation($this->id,'');
|
|
}
|
|
elseif($module =='Activities' || $module =='Events')
|
|
{
|
|
if($table_name == 'activity')
|
|
{
|
|
updateActivityGroupRelation($this->id,'');
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$sql1 = "insert into ".$table_name." (".$column.") values(".$value.")";
|
|
$adb->query($sql1);
|
|
$groupname = $_REQUEST['assigned_group_name'];
|
|
if($_REQUEST['assigntype'] == 'T' && $table_name == 'leaddetails')
|
|
{
|
|
if($table_name == 'leaddetails')
|
|
{
|
|
insert2LeadGroupRelation($this->id,$groupname);
|
|
}
|
|
}
|
|
elseif($_REQUEST['assigntype'] == 'T' && $table_name == 'activity')
|
|
{
|
|
insert2ActivityGroupRelation($this->id,$groupname);
|
|
}
|
|
elseif($_REQUEST['assigntype'] == 'T' && $table_name == 'troubletickets')
|
|
{
|
|
insert2TicketGroupRelation($this->id,$groupname);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
function getOldFileName($notesid)
|
|
{
|
|
global $vtlog;
|
|
$vtlog->logthis("in getOldFileName ".$notesid,'info');
|
|
global $adb;
|
|
$query1 = "select * from seattachmentsrel where crmid=".$notesid;
|
|
$result = $adb->query($query1);
|
|
$noofrows = $adb->num_rows($result);
|
|
if($noofrows != 0)
|
|
$attachmentid = $adb->query_result($result,0,'attachmentsid');
|
|
if($attachmentid != '')
|
|
{
|
|
$query2 = "select * from attachments where attachmentsid=".$attachmentid;
|
|
$filename = $adb->query_result($adb->query($query2),0,'name');
|
|
}
|
|
return "'".$filename."'";
|
|
}
|
|
function insertIntoTicketCommentTable($table_name, $module)
|
|
{
|
|
global $vtlog;
|
|
$vtlog->logthis("in insertIntoTicketCommentTable ".$table_name." module is ".$module,'info');
|
|
global $adb;
|
|
global $current_user;
|
|
|
|
$current_time = date('Y-m-d H:i:s');
|
|
if($_REQUEST['assigned_user_id'] != '')
|
|
$ownertype = 'user';
|
|
else
|
|
$ownertype = 'customer';
|
|
|
|
$sql = "insert into ticketcomments values('',".$this->id.",'".$_REQUEST['comments']."','".$current_user->id."','".$ownertype."','".$current_time."')";
|
|
$adb->query($sql);
|
|
}
|
|
function insertIntoFAQCommentTable($table_name, $module)
|
|
{
|
|
global $vtlog;
|
|
$vtlog->logthis("in insertIntoFAQCommentTable ".$table_name." module is ".$module,'info');
|
|
global $adb;
|
|
|
|
$current_time = date('Y-m-d H:i:s');
|
|
|
|
$sql = "insert into faqcomments values('',".$this->id.",'".$_REQUEST['comments']."','".$current_time."')";
|
|
$adb->query($sql);
|
|
}
|
|
function insertIntoReminderTable($table_name,$module,$recurid)
|
|
{
|
|
global $vtlog;
|
|
$vtlog->logthis("in insertIntoReminderTable ".$table_name." module is ".$module,'info');
|
|
if($_REQUEST['set_reminder'] == 'Yes')
|
|
{
|
|
$vtlog->logthis("set reminder is set",'debug');
|
|
$rem_days = $_REQUEST['remdays'];
|
|
$vtlog->logthis("rem_days is ".$rem_days,'debug');
|
|
$rem_hrs = $_REQUEST['remhrs'];
|
|
$vtlog->logthis("rem_hrs is ".$rem_hrs,'debug');
|
|
$rem_min = $_REQUEST['remmin'];
|
|
$vtlog->logthis("rem_minutes is ".$rem_min,'debug');
|
|
$reminder_time = $rem_days * 24 * 60 + $rem_hrs * 60 + $rem_min;
|
|
$vtlog->logthis("reminder_time is ".$reminder_time,'debug');
|
|
if ($recurid == "")
|
|
{
|
|
if($_REQUEST['mode'] == 'edit')
|
|
{
|
|
$this->activity_reminder($this->id,$reminder_time,0,$recurid,'edit');
|
|
}
|
|
else
|
|
{
|
|
$this->activity_reminder($this->id,$reminder_time,0,$recurid,'');
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$this->activity_reminder($this->id,$reminder_time,0,$recurid,'');
|
|
}
|
|
}
|
|
elseif($_REQUEST['set_reminder'] == 'No')
|
|
{
|
|
$this->activity_reminder($this->id,'0',0,$recurid,'delete');
|
|
}
|
|
}
|
|
|
|
// Code included by Jaguar - starts
|
|
function insertIntoRecurringTable($table_name,$module)
|
|
{
|
|
global $vtlog;
|
|
$vtlog->logthis("in insertIntoRecurringTable ".$table_name." module is ".$module,'info');
|
|
global $adb;
|
|
$st_date = getDBInsertDateValue($_REQUEST["date_start"]);
|
|
$vtlog->logthis("st_date ".$st_date,'debug');
|
|
$end_date = getDBInsertDateValue($_REQUEST["due_date"]);
|
|
$vtlog->logthis("end_date is set ".$end_date,'debug');
|
|
$st=explode("-",$st_date);
|
|
$vtlog->logthis("exploding string is ".$st,'debug');
|
|
$end=explode("-",$end_date);
|
|
$vtlog->logthis("exploding string again is ".$end,'debug');
|
|
$type = trim($_REQUEST['recurringtype']);
|
|
$vtlog->logthis("type is ".$type,'debug');
|
|
$flag="true";
|
|
|
|
if($_REQUEST['mode'] == 'edit')
|
|
{
|
|
$activity_id=$this->id;
|
|
|
|
$sql='select min(recurringdate) min_date,max(recurringdate) max_date,recurringtype from recurringevents where activityid='. $activity_id.' group by activityid';
|
|
|
|
$result = $adb->query($sql);
|
|
$noofrows = $adb->num_rows($result);
|
|
for($i=0; $i<$noofrows; $i++)
|
|
{
|
|
$recur_type_b4_edit = $adb->query_result($result,$i,"recurringtype");
|
|
$date_start_b4edit = $adb->query_result($result,$i,"min_date");
|
|
$end_date_b4edit = $adb->query_result($result,$i,"max_date");
|
|
}
|
|
if(($st_date == $date_start_b4edit) && ($end_date==$end_date_b4edit) && ($type == $recur_type_b4_edit))
|
|
{
|
|
if($_REQUEST['set_reminder'] == 'Yes')
|
|
{
|
|
$sql = 'delete from activity_reminder where activity_id='.$activity_id;
|
|
$adb->query($sql);
|
|
$sql = 'delete from recurringevents where activityid='.$activity_id;
|
|
$adb->query($sql);
|
|
$flag="true";
|
|
}
|
|
elseif($_REQUEST['set_reminder'] == 'No')
|
|
{
|
|
$sql = 'delete from activity_reminder where activity_id='.$activity_id;
|
|
$adb->query($sql);
|
|
$flag="false";
|
|
}
|
|
else
|
|
$flag="false";
|
|
}
|
|
else
|
|
{
|
|
$sql = 'delete from activity_reminder where activity_id='.$activity_id;
|
|
$adb->query($sql);
|
|
$sql = 'delete from recurringevents where activityid='.$activity_id;
|
|
$adb->query($sql);
|
|
}
|
|
}
|
|
if($flag=="true")
|
|
{
|
|
$date_val=$st_date;
|
|
$date_array[]=$st_date;
|
|
if($type != "--None--")
|
|
{
|
|
while($date_val <= $end_date)
|
|
{
|
|
if($type == 'Daily')
|
|
{
|
|
$date_val = date("Y-m-d",mktime(0,0,0,date("$st[1]"),(date("$st[2]")+(1)),date("$st[0]")));
|
|
}
|
|
elseif($type == 'Weekly')
|
|
{
|
|
$date_val = date("Y-m-d",mktime(0,0,0,date("$st[1]"),(date("$st[2]")+(7)),date("$st[0]")));
|
|
}
|
|
elseif($type == 'Monthly' )
|
|
{
|
|
$date_val = date("Y-m-d",mktime(0,0,0,(date("$st[1]")+1),date("$st[2]"),date("$st[0]")));
|
|
}
|
|
elseif($type == 'Yearly')
|
|
{
|
|
$date_val = date("Y-m-d",mktime(0,0,0,date("$st[1]"),date("$st[2]"),(date("$st[0]")+1)));
|
|
}
|
|
$date_array[]=$date_val;
|
|
$st=explode("-",$date_val);
|
|
}
|
|
for($k=0; $k< count($date_array); $k++)
|
|
{
|
|
$tdate=$date_array[$k];
|
|
if($tdate <= $end_date)
|
|
{
|
|
$max_recurid_qry = 'select max(recurringid) recurid from recurringevents;';
|
|
$result = $adb->query($max_recurid_qry);
|
|
$noofrows = $adb->num_rows($result);
|
|
for($i=0; $i<$noofrows; $i++)
|
|
{
|
|
$recur_id = $adb->query_result($result,$i,"recurid");
|
|
}
|
|
$current_id =$recur_id+1;
|
|
$recurring_insert = 'insert into recurringevents values ("'.$current_id.'","'.$this->id.'","'.$tdate.'","'.$type.'")';
|
|
$adb->query($recurring_insert);
|
|
if($_REQUEST['set_reminder'] == 'Yes')
|
|
{
|
|
$this->insertIntoReminderTable("activity_reminder",$module,$current_id,'');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Code included by Jaguar - Ends
|
|
|
|
|
|
function retrieve_entity_info($record, $module)
|
|
{
|
|
global $adb;
|
|
$result = Array();
|
|
foreach($this->tab_name_index as $table_name=>$index)
|
|
{
|
|
$result[$table_name] = $adb->query("select * from ".$table_name." where ".$index."=".$record);
|
|
}
|
|
|
|
$tabid = getTabid($module);
|
|
$sql1 = "select * from field where tabid=".$tabid;
|
|
$result1 = $adb->query($sql1);
|
|
$noofrows = $adb->num_rows($result1);
|
|
for($i=0; $i<$noofrows; $i++)
|
|
{
|
|
$fieldcolname = $adb->query_result($result1,$i,"columnname");
|
|
$tablename = $adb->query_result($result1,$i,"tablename");
|
|
$fieldname = $adb->query_result($result1,$i,"fieldname");
|
|
|
|
$fld_value = $adb->query_result($result[$tablename],0,$fieldcolname);
|
|
$this->column_fields[$fieldname] = $fld_value;
|
|
|
|
}
|
|
$this->column_fields["record_id"] = $record;
|
|
$this->column_fields["record_module"] = $module;
|
|
|
|
// print_r($this->column_fields);
|
|
|
|
}
|
|
|
|
function save($module_name)
|
|
{
|
|
global $vtlog;
|
|
$vtlog->logthis("module name is ".$module_name,'debug');
|
|
//GS Save entity being called with the modulename as parameter
|
|
$this->saveentity($module_name,$migration);
|
|
}
|
|
|
|
function create_list_query($order_by, $where)
|
|
{
|
|
$adr_table = "";
|
|
$adr_where = "";
|
|
|
|
$query = "SELECT * FROM users ";
|
|
$query .= "where users.deleted=0";
|
|
return $query;
|
|
}
|
|
|
|
function create_lead_list_query($order_by, $where)
|
|
{
|
|
$query = "select * from $this->table_name left join leadcf on leads.id=leadcf.leadid ";
|
|
//$query = "SELECT * FROM $this->table_name ";
|
|
|
|
if($where != "")
|
|
$query .= "where ($where) AND deleted=0 AND converted=0";
|
|
else
|
|
$query .= "where deleted=0 AND converted=0";
|
|
|
|
if($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 $entry)
|
|
{
|
|
|
|
foreach($entry as $key=>$field) // this will be cycled only once
|
|
{
|
|
if (isset($row[$field])) {
|
|
$this->column_fields[$this->list_fields_names[$key]] = $row[$field];
|
|
|
|
|
|
$this->log->debug("$this->object_name({$row['id']}): ".$field." = ".$this->$field);
|
|
}
|
|
else
|
|
{
|
|
$this->column_fields[$this->list_fields_names[$key]] = "";
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//$this->db->println("here is the bug");
|
|
|
|
|
|
$list[] = $this;
|
|
}
|
|
}
|
|
|
|
$response = Array();
|
|
$response['list'] = $list;
|
|
$response['row_count'] = $rows_found;
|
|
$response['next_offset'] = $next_offset;
|
|
$response['previous_offset'] = $previous_offset;
|
|
|
|
return $response;
|
|
}
|
|
|
|
function process_full_list_query($query)
|
|
{
|
|
$this->log->debug("process_full_list_query: query is ".$query);
|
|
$result =& $this->db->query($query, false);
|
|
$this->log->debug("process_full_list_query: result is ".$result);
|
|
|
|
|
|
if($this->db->getRowCount($result) > 0){
|
|
|
|
// $this->db->println("process_full mid=".$this->module_id." mname=".$this->module_name);
|
|
// We have some data.
|
|
while ($row = $this->db->fetchByAssoc($result)) {
|
|
$rowid=$row[$this->module_id];
|
|
|
|
if(isset($rowid))
|
|
$this->retrieve_entity_info($rowid,$this->module_name);
|
|
else
|
|
$this->db->println("rowid not set unable to retrieve");
|
|
|
|
|
|
|
|
|
|
$list[] = $this;
|
|
}
|
|
}
|
|
|
|
if (isset($list)) return $list;
|
|
else return null;
|
|
}
|
|
|
|
/**
|
|
* return the summary text that should show up in the recent history list for this object.
|
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
|
|
* All Rights Reserved..
|
|
* Contributor(s): ______________________________________..
|
|
*/
|
|
function get_summary_text()
|
|
{
|
|
return "Base Implementation. Should be overridden.";
|
|
}
|
|
|
|
/**
|
|
* This is designed to be overridden and add specific fields to each record. This allows the generic query to fill in
|
|
* the major fields, and then targetted queries to get related fields and add them to the record. The contact's account for instance.
|
|
* This method is only used for populating extra fields in lists
|
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
|
|
* All Rights Reserved..
|
|
* Contributor(s): ______________________________________..
|
|
*/
|
|
function fill_in_additional_list_fields()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* This is designed to be overridden and add specific fields to each record. This allows the generic query to fill in
|
|
* the major fields, and then targetted queries to get related fields and add them to the record. The contact's account for instance.
|
|
* This method is only used for populating extra fields in the detail form
|
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
|
|
* All Rights Reserved..
|
|
* Contributor(s): ______________________________________..
|
|
*/
|
|
function fill_in_additional_detail_fields()
|
|
{
|
|
}
|
|
|
|
/** 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 crmentity set deleted=1 where crmid='$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 function deletes relationships to this object. It should be overridden to handle the relationships of the specific object.
|
|
* This function is called when the item itself is being deleted. For instance, it is called on Contact when the contact is being deleted.
|
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
|
|
* All Rights Reserved..
|
|
* Contributor(s): ______________________________________..
|
|
*/
|
|
function mark_relationships_deleted($id)
|
|
{
|
|
|
|
}
|
|
|
|
/**
|
|
* This function is used to execute the query and create an array template objects from the resulting ids from the query.
|
|
* It is currently used for building sub-panel arrays.
|
|
* param $query - the query that should be executed to build the list
|
|
* param $template - The object that should be used to copy the records.
|
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
|
|
* All Rights Reserved..
|
|
* Contributor(s): ______________________________________..
|
|
*/
|
|
function build_related_list($query, &$template)
|
|
{
|
|
|
|
$this->log->debug("Finding linked records $this->object_name: ".$query);
|
|
|
|
$result =& $this->db->query($query, true);
|
|
|
|
$list = Array();
|
|
|
|
while($row = $this->db->fetchByAssoc($result))
|
|
{
|
|
$template->retrieve($row['id']);
|
|
|
|
// this copies the object into the array
|
|
$list[] = $template;
|
|
}
|
|
|
|
return $list;
|
|
}
|
|
|
|
/**
|
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
|
|
* All Rights Reserved..
|
|
* Contributor(s): ______________________________________..
|
|
*/
|
|
function build_related_list2($query, &$template, &$field_list)
|
|
{
|
|
|
|
$this->log->debug("Finding linked values $this->object_name: ".$query);
|
|
|
|
$result =& $this->db->query($query, true);
|
|
|
|
$list = Array();
|
|
|
|
while($row = $this->db->fetchByAssoc($result))
|
|
{
|
|
// Create a blank copy
|
|
$copy = $template;
|
|
|
|
foreach($field_list as $field)
|
|
{
|
|
// Copy the relevant fields
|
|
$copy->$field = $row[$field];
|
|
|
|
}
|
|
|
|
// this copies the object into the array
|
|
$list[] = $copy;
|
|
}
|
|
|
|
return $list;
|
|
}
|
|
|
|
/* 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 = ".PearDatabase::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];
|
|
}
|
|
}
|
|
$this->fill_in_additional_detail_fields();
|
|
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 fields
|
|
// the value is the method name within that bean that will do extra
|
|
// processing for that 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();
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
builds a generic search based on the query string using or
|
|
do not include any $this-> because this is called on without having the class instantiated
|
|
*/
|
|
function build_generic_where_clause($value){
|
|
$where_clause = "WHERE ";
|
|
$first = 1;
|
|
foreach ($fields_array as $name=>$value)
|
|
{
|
|
if ($first)
|
|
{
|
|
$first = 0;
|
|
}
|
|
else
|
|
{
|
|
$where_clause .= " or";
|
|
}
|
|
|
|
$where_clause .= "$name = ".PearDatabase::quote($value)."";
|
|
}
|
|
|
|
$where_clause .= " AND deleted=0";
|
|
return $where_clause;
|
|
}
|
|
|
|
/*
|
|
function get_msgboard_data($orderby = "" , $where = "" ,$row_offset = 0)
|
|
{
|
|
$response = $this->get_messageboard_list($order_by, $where , $row_offset,$limit= -1,$max_per_page = -1);
|
|
return $response;
|
|
}
|
|
|
|
function get_messageboard_list($orderby, $where, $row_offset,$limit= -1, $max_per_page = -1)
|
|
{
|
|
global $list_max_entries_per_page;
|
|
|
|
if(isset($_REQUEST['query']))
|
|
{
|
|
$sql='select distinct(t.topic_id), t.topic_title, c.cat_title, first.username as author, t.topic_replies,FROM_UNIXTIME(p.post_time) as post_time from phpbb_posts p, phpbb_topics t, phpbb_forums f, phpbb_categories c, phpbb_users first where t.topic_id = p.topic_id and p.post_id=t.topic_last_post_id and t.topic_poster=first.user_id and t.forum_id=f.forum_id and f.cat_id=c.cat_id and ' .$where;
|
|
|
|
// $sql='select distinct(t.topic_title),c.cat_title,t.topic_poster, t.topic_replies,FROM_UNIXTIME(p.post_time) as post_time, t.topic_replies from phpbb_posts p, phpbb_topics t, phpbb_forums f, phpbb_categories c,phpbb_users u where t.forum_id=f.forum_id and f.cat_id=c.cat_id and ' .$where ;
|
|
}
|
|
else
|
|
{
|
|
$sql='select t.topic_id,p.post_id,t.topic_title,FROM_UNIXTIME(p.post_time) as post_time, f.forum_name , u.username , t.topic_replies from phpbb_posts p, phpbb_topics t, phpbb_forums f, phpbb_users u where p.topic_id=t.topic_id and t.forum_id=f.forum_id and u.user_id=t.topic_poster ORDER BY p.post_time ';
|
|
}
|
|
$result = mysql_query($sql);
|
|
$list = Array();
|
|
|
|
if($max_per_page == -1)
|
|
{
|
|
$max_per_page = $list_max_entries_per_page;
|
|
}
|
|
|
|
$rows_found = $this->db->getRowCount($result);
|
|
$previous_offset = $row_offset - $max_per_page;
|
|
$next_offset = $row_offset + $max_per_page;
|
|
if($rows_found != 0)
|
|
{
|
|
//$max_per_page=15;
|
|
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)
|
|
{
|
|
//print_r($this->list_fields);
|
|
if (isset($row[$field]))
|
|
{
|
|
$this->$field = $row[$field];
|
|
}
|
|
else
|
|
{
|
|
$this->$field = "";
|
|
}
|
|
}
|
|
|
|
$list[] = $this;
|
|
}
|
|
}
|
|
|
|
$response = Array();
|
|
$response['list'] = $list;
|
|
$response['row_count'] = $rows_found;
|
|
$response['next_offset'] = $next_offset;
|
|
$response['previous_offset'] = $previous_offset;
|
|
/*
|
|
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);
|
|
}
|
|
}
|
|
return $response;
|
|
}
|
|
*/
|
|
}
|
|
?>
|
|
|