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; } */ } ?>