* SPDX-License-Identifier: AGPL-3.0-only ************************************/ //crmv@203484 removed including file class Campaigns extends CRMEntity { var $log; var $db; var $table_name; var $table_index= 'campaignid'; var $tab_name = Array(); var $tab_name_index = Array(); /** * Mandatory table for supporting custom fields. */ var $customFieldTable = Array(); var $column_fields = Array(); var $sortby_fields = Array('campaignname','smownerid','campaigntype','productname','expectedrevenue','closingdate','campaignstatus','expectedresponse','targetaudience','expectedcost'); var $list_fields = Array( 'Campaign Name'=>Array('campaign'=>'campaignname'), 'Campaign Type'=>Array('campaign'=>'campaigntype'), 'Campaign Status'=>Array('campaign'=>'campaignstatus'), 'Expected Revenue'=>Array('campaign'=>'expectedrevenue'), 'Expected Close Date'=>Array('campaign'=>'closingdate'), 'Assigned To' => Array('crmentity'=>'smownerid') ); var $list_fields_name = Array( 'Campaign Name'=>'campaignname', 'Campaign Type'=>'campaigntype', 'Campaign Status'=>'campaignstatus', 'Expected Revenue'=>'expectedrevenue', 'Expected Close Date'=>'closingdate', 'Assigned To'=>'assigned_user_id' ); var $list_link_field= 'campaignname'; //Added these variables which are used as default order by and sortorder in ListView var $default_order_by = 'crmid'; var $default_sort_order = 'DESC'; //var $groupTable = Array('vte_campaigngrouprelation','campaignid'); var $search_fields = Array(); var $search_fields_name = Array( 'Campaign Name'=>'campaignname', 'Campaign Type'=>'campaigntype', ); //crmv@10759 var $search_base_field = 'campaignname'; //crmv@10759 e // Used when enabling/disabling the mandatory fields for the module. // Refers to vte_field.fieldname values. var $mandatory_fields = Array('campaignname','createdtime' ,'modifiedtime','assigned_user_id'); function __construct() { global $table_prefix; parent::__construct(); // crmv@37004 $this->table_name = $table_prefix."_campaign"; $this->tab_name = Array($table_prefix.'_crmentity',$table_prefix.'_campaign',$table_prefix.'_campaignscf'); $this->tab_name_index = Array($table_prefix.'_crmentity'=>'crmid',$table_prefix.'_campaign'=>'campaignid',$table_prefix.'_campaignscf'=>'campaignid'); $this->customFieldTable = Array($table_prefix.'_campaignscf', 'campaignid'); $this->search_fields = Array( 'Campaign Name'=>Array($table_prefix.'_campaign'=>'campaignname'), 'Campaign Type'=>Array($table_prefix.'_campaign'=>'campaigntype'), ); $this->log =LoggerManager::getLogger('campaign'); $this->db = PearDatabase::getInstance(); $this->column_fields = getColumnFields('Campaigns'); } /** Function to handle module specific operations when saving a entity */ function save_module($module) { } // crmv@104975 crmv@152532 function getExtraDetailTabs() { $return = array(); // add the statistics tab if (isModuleInstalled('Newsletter')) { $return = array( array('label'=>getTranslatedString('LBL_STATISTICS', 'Newsletter'),'href'=>'','onclick'=>"changeDetailTab('{$this->modulename}', '{$this->id}', 'Statistics', this)") ); } $others = parent::getExtraDetailTabs() ?: array(); return array_merge($return, $others); } // crmv@104975e crmv@152532e /* * Function to get the secondary query part of a report * @param - $module primary module name * @param - $secmodule secondary module name * returns the query string formed on fetching the related data for report for secondary module */ //crmv@38798 function generateReportsSecQuery($module,$secmodule,$reporttype='',$useProductJoin=true,$joinUitype10=true){ // crmv@146653 global $table_prefix; $query = $this->getRelationQuery($module,$secmodule,$table_prefix."_campaign","campaignid"); $query .=" left join ".$table_prefix."_products ".$table_prefix."_productsCampaigns on ".$table_prefix."_campaign.product_id = ".$table_prefix."_productsCampaigns.productid left join ".$table_prefix."_campaignscf on ".$table_prefix."_campaignscf.campaignid = ".$table_prefix."_crmentityCampaigns.crmid left join ".$table_prefix."_groups ".$table_prefix."_groupsCampaigns on ".$table_prefix."_groupsCampaigns.groupid = ".$table_prefix."_crmentityCampaigns.smownerid left join ".$table_prefix."_users ".$table_prefix."_usersCampaigns on ".$table_prefix."_usersCampaigns.id = ".$table_prefix."_crmentityCampaigns.smownerid"; return $query; } //crmv@38798e /* * Function to get the relation tables for related modules * @param - $secmodule secondary module name * returns the array with table names and fieldnames storing relations between module and this module */ function setRelationTables($secmodule){ global $table_prefix; $rel_tables = array ( "Contacts" => array($table_prefix."_campaigncontrel"=>array("campaignid","contactid"),$table_prefix."_campaign"=>"campaignid"), "Leads" => array($table_prefix."_campaignleadrel"=>array("campaignid","leadid"),$table_prefix."_campaign"=>"campaignid"), "Accounts" => array($table_prefix."_campaignaccountrel"=>array("campaignid","accountid"),$table_prefix."_campaign"=>"campaignid"), "Potentials" => array($table_prefix."_potential"=>array("campaignid","potentialid"),$table_prefix."_campaign"=>"campaignid"), "Calendar" => array($table_prefix."_seactivityrel"=>array("crmid","activityid"),$table_prefix."_campaign"=>"campaignid"), "Products" => array($table_prefix."_campaign"=>array("campaignid","product_id")), ); return $rel_tables[$secmodule]; } // Function to unlink an entity with given Id from another entity function unlinkRelationship($id, $return_module, $return_id) { global $log; global $table_prefix; if(empty($return_module) || empty($return_id)) return; if($return_module == 'Leads') { $sql = 'DELETE FROM '.$table_prefix.'_campaignleadrel WHERE campaignid=? AND leadid=?'; $this->db->pquery($sql, array($id, $return_id)); } elseif($return_module == 'Contacts') { $sql = 'DELETE FROM '.$table_prefix.'_campaigncontrel WHERE campaignid=? AND contactid=?'; $this->db->pquery($sql, array($id, $return_id)); //crmv@15157 } elseif($return_module == 'Accounts') { $sql = 'DELETE FROM '.$table_prefix.'_campaignaccountrel WHERE campaignid=? AND accountid=?'; $this->db->pquery($sql, array($id, $return_id)); //crmv@15157 } else { $sql = 'DELETE FROM '.$table_prefix.'_crmentityrel WHERE (crmid=? AND relmodule=? AND relcrmid=?) OR (relcrmid=? AND module=? AND crmid=?)'; $params = array($id, $return_module, $return_id, $id, $return_module, $return_id); $this->db->pquery($sql, $params); } $this->db->pquery("UPDATE {$table_prefix}_crmentity SET modifiedtime = ? WHERE crmid IN (?,?)", array($this->db->formatDate(date('Y-m-d H:i:s'), true), $id, $return_id)); // crmv@49398 crmv@69690 } //crmv@22700 //crmv@25083 function get_newsletter($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $adb,$theme; global $table_prefix; $return_value = $this->get_dependents_list($id, $cur_tab_id, $rel_tab_id, $actions); if (!empty($return_value['entries'])) { //crmv@25809 foreach ($return_value['entries'] as $id => $info) { $res = $adb->pquery('select linklabel,linkurl from '.$table_prefix.'_links where tabid = ? and linklabel = ?',array(getTabid('Newsletter'),'LBL_SEND_MAIL_BUTTON')); $link = str_replace('$RECORD$',$id,$adb->query_result($res,0,'linkurl')); $label = getTranslatedString($adb->query_result($res,0,'linklabel'),'Newsletter'); $return_value['entries'][$id][0] .= ' send'; // crmv@195115 $res = $adb->pquery('select linklabel,linkurl from '.$table_prefix.'_links where tabid = ? and linklabel = ?',array(getTabid('Newsletter'),'LBL_SEND_TEST_MAIL_BUTTON')); $link = str_replace('$RECORD$',$id,$adb->query_result($res,0,'linkurl')); $label = getTranslatedString($adb->query_result($res,0,'linklabel'),'Newsletter'); $return_value['entries'][$id][0] .= ' mail_outline'; // crmv@195115 } } //crmv@25809 return $return_value; } function getStatisticRelatedLists() { global $adb; global $table_prefix; $labels = array(); $result = $adb->query("SELECT label FROM ".$table_prefix."_relatedlists WHERE tabid = 26 AND related_tabid = 0 AND name LIKE 'get_statistics_%' ORDER BY sequence"); while($row=$adb->fetchByAssoc($result)) { $labels[] = $row['label']; } return $labels; } function filterStatisticRelatedLists($mode,&$related_array,$ir_rel_list=false) { $statistic_related_lists = $this->getStatisticRelatedLists(); if ($mode == 'maintain') { if ($ir_rel_list) { foreach($related_array as $id => $key) { if (!in_array($key,$statistic_related_lists)) { unset($related_array[$id]); } } } else { foreach($related_array as $key => $info) { if (!in_array($key,$statistic_related_lists)) { unset($related_array[$key]); } } } } elseif ($mode == 'remove') { foreach($statistic_related_lists as $name) { if ($ir_rel_list) { unset($related_array[array_search($name,$related_array)]); } else { unset($related_array[$name]); } } } } //related list functions - i function get_statistics_message_queue($id, $cur_tab_id, $rel_tab_id, $actions=false, $only_query=false, $char=false, $xls_export=false) { global $currentModule;//crmv@203484 removed global singlepane global $table_prefix; //crmv@203484 $VTEP = VTEProperties::getInstance(); $singlepane_view = $VTEP->getProperty('layout.singlepane_view'); //crmv@203484e if($singlepane_view == true) {//crmv@203484 changed to normal bool true, not string 'true' $returnset = '&return_module='.$currentModule.'&return_action=DetailView&return_id='.$id; } else { $returnset = '&return_module='.$currentModule.'&return_action=CallRelatedList&return_id='.$id; } $button = ''; $title = 'Message Queue'; VteSession::set(strtolower($title)."_listquery", ''); if ($char) { $query = "select ".$table_prefix."_crmentity.crmid, ".$table_prefix."_crmentity.setype from tbl_s_newsletter_queue inner join ".$table_prefix."_crmentity on ".$table_prefix."_crmentity.crmid = tbl_s_newsletter_queue.crmid"; } else { $query = "select * from tbl_s_newsletter_queue"; } $query .= " where tbl_s_newsletter_queue.status = 'Scheduled'"; $where = $this->get_statistics_message_where_condition($id,'tbl_s_newsletter_queue.newsletterid'); if ($where != '') { $query .= $where; $return_value = $this->GetStatisticList($currentModule, $title, $query, $button, $returnset, $only_query,$xls_export); //crmv@116390 } if($return_value == null) { $return_value = Array(); } //crmv@101503 if($xls_export){ if(isset($return_value['entries'])){ //crmv@167234 foreach($return_value['entries'] as $keyRow => $arrRow){ array_pop($return_value['entries'][$keyRow]); foreach($arrRow as $kCol => $valCol){ $return_value['entries'][$keyRow][$return_value['header'][$kCol]] = strip_tags($valCol); unset($return_value['entries'][$keyRow][$kCol]); } } } //crmv@167234 } $nomeCamp = $this->getNewTargetName($id, $title); // crmv@142678 $hasEntries = isset($return_value['entries']) ? count($return_value['entries']) : 0; //crmv@167234 $button = ""; $button .= " "; //crmv@101503e $return_value['CUSTOM_BUTTON'] = $button; return $return_value; } function get_statistics_sent_messages($id, $cur_tab_id, $rel_tab_id, $actions=false, $only_query=false, $char=false, $xls_export=false) { global $currentModule;//crmv@203484 removed global singlepane global $table_prefix; //crmv@203484 $VTEP = VTEProperties::getInstance(); $singlepane_view = $VTEP->getProperty('layout.singlepane_view'); //crmv@203484e if($singlepane_view == true) {////crmv@203484 changed to normal bool true, not string 'true' $returnset = '&return_module='.$currentModule.'&return_action=DetailView&return_id='.$id; } else { $returnset = '&return_module='.$currentModule.'&return_action=CallRelatedList&return_id='.$id; } $button = ''; $title = 'Sent Messages'; VteSession::set(strtolower($title)."_listquery", ''); if ($char) { $query = "select ".$table_prefix."_crmentity.crmid, ".$table_prefix."_crmentity.setype from tbl_s_newsletter_queue inner join ".$table_prefix."_crmentity on ".$table_prefix."_crmentity.crmid = tbl_s_newsletter_queue.crmid"; } else { $query = "select * from tbl_s_newsletter_queue"; } $query .= " where tbl_s_newsletter_queue.status = 'Sent'"; $where = $this->get_statistics_message_where_condition($id,'tbl_s_newsletter_queue.newsletterid'); if ($where != '') { $query .= $where; $return_value = $this->GetStatisticList($currentModule, $title, $query, $button, $returnset, $only_query,$xls_export); //crmv@116390 } if($return_value == null) { $return_value = Array(); } //crmv@101503 if($xls_export){ if(isset($return_value['entries'])){ //crmv@167234 foreach($return_value['entries'] as $keyRow => $arrRow){ array_pop($return_value['entries'][$keyRow]); foreach($arrRow as $kCol => $valCol){ $return_value['entries'][$keyRow][$return_value['header'][$kCol]] = strip_tags($valCol); unset($return_value['entries'][$keyRow][$kCol]); } } } //crmv@167234 } $nomeCamp = $this->getNewTargetName($id, $title); // crmv@142678 $hasEntries = isset($return_value['entries']) ? count($return_value['entries']) : 0; //crmv@167234 $button = ""; $button .= " "; //crmv@101503e $return_value['CUSTOM_BUTTON'] = $button; return $return_value; } function get_statistics_viewed_messages($id, $cur_tab_id, $rel_tab_id, $actions=false, $only_query=false, $char=false, $xls_export=false) { global $currentModule;//crmv@203484 removed global singlepane global $table_prefix; //crmv@203484 $VTEP = VTEProperties::getInstance(); $singlepane_view = $VTEP->getProperty('layout.singlepane_view'); //crmv@203484e if($singlepane_view == true) {//crmv@203484 changed to normal bool true, not string 'true' $returnset = '&return_module='.$currentModule.'&return_action=DetailView&return_id='.$id; } else { $returnset = '&return_module='.$currentModule.'&return_action=CallRelatedList&return_id='.$id; } $button = ''; $title = 'Viewed Messages'; VteSession::set(strtolower($title)."_listquery", ''); if ($char) { $query = "select ".$table_prefix."_crmentity.crmid, ".$table_prefix."_crmentity.setype from tbl_s_newsletter_queue inner join ".$table_prefix."_crmentity on ".$table_prefix."_crmentity.crmid = tbl_s_newsletter_queue.crmid"; } else { $query = "select * from tbl_s_newsletter_queue"; } $query .= " where tbl_s_newsletter_queue.num_views > 0"; $where = $this->get_statistics_message_where_condition($id,'tbl_s_newsletter_queue.newsletterid'); if ($where != '') { $query .= $where; $return_value = $this->GetStatisticList($currentModule, $title, $query, $button, $returnset, $only_query,$xls_export); //crmv@116390 } if($return_value == null) { $return_value = Array(); } //crmv@101503 if($xls_export){ if(isset($return_value['entries'])){ //crmv@167234 foreach($return_value['entries'] as $keyRow => $arrRow){ array_pop($return_value['entries'][$keyRow]); foreach($arrRow as $kCol => $valCol){ $return_value['entries'][$keyRow][$return_value['header'][$kCol]] = strip_tags($valCol); unset($return_value['entries'][$keyRow][$kCol]); } } } //crmv@167234 } $nomeCamp = $this->getNewTargetName($id, $title); // crmv@142678 $hasEntries = isset($return_value['entries']) ? count($return_value['entries']) : 0; //crmv@167234 $button = ""; $button .= " "; //crmv@101503e $return_value['CUSTOM_BUTTON'] = $button; return $return_value; } function get_statistics_tracked_link($id, $cur_tab_id, $rel_tab_id, $actions=false, $only_query=false, $char=false, $xls_export=false) { global $currentModule;//crmv@203484 removed global singlepane global $table_prefix; //crmv@203484 $VTEP = VTEProperties::getInstance(); $singlepane_view = $VTEP->getProperty('layout.singlepane_view'); //crmv@203484e if($singlepane_view == true) {//crmv@203484 changed to normal bool true, not string 'true' $returnset = '&return_module='.$currentModule.'&return_action=DetailView&return_id='.$id; } else { $returnset = '&return_module='.$currentModule.'&return_action=CallRelatedList&return_id='.$id; } $button = ''; $title = 'Tracked Link'; VteSession::set(strtolower($title)."_listquery", ''); if ($char) { $query = "select ".$table_prefix."_crmentity.crmid, ".$table_prefix."_crmentity.setype from tbl_s_newsletter_tl inner join ".$table_prefix."_crmentity on ".$table_prefix."_crmentity.crmid = tbl_s_newsletter_tl.crmid"; } else { $query = "select * from tbl_s_newsletter_tl"; } // crmv@38592 $query .= " inner join tbl_s_newsletter_links on tbl_s_newsletter_links.linkid = tbl_s_newsletter_tl.linkurlid where tbl_s_newsletter_tl.clicked > 0"; // crmv@38592e $where = $this->get_statistics_message_where_condition($id,'tbl_s_newsletter_tl.newsletterid'); if ($where != '') { $query .= $where; $return_value = $this->GetStatisticList($currentModule, $title, $query, $button, $returnset, $only_query,$xls_export); //crmv@116390 } if($return_value == null) { $return_value = Array(); } //crmv@101503 if($xls_export){ if(isset($return_value['entries'])){ //crmv@167234 foreach($return_value['entries'] as $keyRow => $arrRow){ array_pop($return_value['entries'][$keyRow]); foreach($arrRow as $kCol => $valCol){ $return_value['entries'][$keyRow][$return_value['header'][$kCol]] = strip_tags($valCol); unset($return_value['entries'][$keyRow][$kCol]); } } } //crmv@167234 } $nomeCamp = $this->getNewTargetName($id, $title); // crmv@142678 $hasEntries = isset($return_value['entries']) ? count($return_value['entries']) : 0; //crmv@167234 $button = ""; $button .= " "; //crmv@101503e $return_value['CUSTOM_BUTTON'] = $button; return $return_value; } function get_statistics_unsubscriptions($id, $cur_tab_id, $rel_tab_id, $actions=false, $only_query=false, $char=false, $xls_export=false) { global $currentModule;//crmv@203484 removed global singlepane global $table_prefix; //crmv@203484 $VTEP = VTEProperties::getInstance(); $singlepane_view = $VTEP->getProperty('layout.singlepane_view'); //crmv@203484e if($singlepane_view == true) {//crmv@203484 changed to normal bool true, not string 'true' $returnset = '&return_module='.$currentModule.'&return_action=DetailView&return_id='.$id; } else { $returnset = '&return_module='.$currentModule.'&return_action=CallRelatedList&return_id='.$id; } $button = ''; $title = 'Unsubscriptions'; VteSession::set(strtolower($title)."_listquery", ''); $focus = CRMEntity::getInstance('Newsletter'); if ($char) { $query = "select ".$table_prefix."_crmentity.crmid, ".$table_prefix."_crmentity.setype from tbl_s_newsletter_tl inner join ".$table_prefix."_crmentity on ".$table_prefix."_crmentity.crmid = tbl_s_newsletter_tl.crmid"; } else { $query = "select * from tbl_s_newsletter_tl"; } // crmv@38592 $query .= " inner join tbl_s_newsletter_links on tbl_s_newsletter_links.linkid = tbl_s_newsletter_tl.linkurlid where tbl_s_newsletter_tl.clicked > 0 and tbl_s_newsletter_links.url = '$focus->url_unsubscription_file'"; // crmv@38592e $where = $this->get_statistics_message_where_condition($id,'tbl_s_newsletter_tl.newsletterid'); if ($where != '') { $query .= $where; $return_value = $this->GetStatisticList($currentModule, $title, $query, $button, $returnset, $only_query,$xls_export); //crmv@116390 } if($return_value == null) { $return_value = Array(); } //crmv@101503 if($xls_export){ if(isset($return_value['entries'])){ //crmv@167234 foreach($return_value['entries'] as $keyRow => $arrRow){ array_pop($return_value['entries'][$keyRow]); foreach($arrRow as $kCol => $valCol){ $return_value['entries'][$keyRow][$return_value['header'][$kCol]] = strip_tags($valCol); unset($return_value['entries'][$keyRow][$kCol]); } } } //crmv@167234 } $nomeCamp = $this->getNewTargetName($id, $title); // crmv@142678 $hasEntries = isset($return_value['entries']) ? count($return_value['entries']) : 0; //crmv@167234 $button = ""; $button .= " "; //crmv@101503e $return_value['CUSTOM_BUTTON'] = $button; return $return_value; } function get_statistics_bounced_messages($id, $cur_tab_id, $rel_tab_id, $actions=false, $only_query=false, $char=false, $xls_export=false) { global $currentModule;//crmv@203484 removed global singlepane global $table_prefix; //crmv@203484 $VTEP = VTEProperties::getInstance(); $singlepane_view = $VTEP->getProperty('layout.singlepane_view'); //crmv@203484e if($singlepane_view == true) {//crmv@203484 changed to normal bool true, not string 'true' $returnset = '&return_module='.$currentModule.'&return_action=DetailView&return_id='.$id; } else { $returnset = '&return_module='.$currentModule.'&return_action=CallRelatedList&return_id='.$id; } $button = ''; $title = 'Bounced Messages'; VteSession::set(strtolower($title)."_listquery", ''); if ($char) { $query = "select ".$table_prefix."_crmentity.crmid, ".$table_prefix."_crmentity.setype from tbl_s_newsletter_queue inner join ".$table_prefix."_crmentity on ".$table_prefix."_crmentity.crmid = tbl_s_newsletter_queue.crmid"; } else { $query = "select * from tbl_s_newsletter_queue"; } $query .= " inner join tbl_s_newsletter_bounce_rel on (tbl_s_newsletter_queue.newsletterid = tbl_s_newsletter_bounce_rel.newsletterid AND tbl_s_newsletter_queue.crmid = tbl_s_newsletter_bounce_rel.crmid) where tbl_s_newsletter_queue.status = 'Sent'"; $where = $this->get_statistics_message_where_condition($id,'tbl_s_newsletter_queue.newsletterid'); if ($where != '') { $query .= $where; $return_value = $this->GetStatisticList($currentModule, $title, $query, $button, $returnset, $only_query,$xls_export); //crmv@116390 } if($return_value == null) { $return_value = Array(); } //crmv@101503 if($xls_export){ if(isset($return_value['entries'])){ //crmv@167234 foreach($return_value['entries'] as $keyRow => $arrRow){ array_pop($return_value['entries'][$keyRow]); foreach($arrRow as $kCol => $valCol){ $return_value['entries'][$keyRow][$return_value['header'][$kCol]] = strip_tags($valCol); unset($return_value['entries'][$keyRow][$kCol]); } } } //crmv@167234 } $nomeCamp = $this->getNewTargetName($id, $title); // crmv@142678 $hasEntries = isset($return_value['entries']) ? count($return_value['entries']) : 0; //crmv@167234 $button = ""; $button .= " "; //crmv@101503e $return_value['CUSTOM_BUTTON'] = $button; return $return_value; } function get_statistics_suppression_list($id, $cur_tab_id, $rel_tab_id, $actions=false, $only_query=false, $char=false, $xls_export=false) { global $currentModule;//crmv@203484 removed global singlepane //crmv@203484 $VTEP = VTEProperties::getInstance(); $singlepane_view = $VTEP->getProperty('layout.singlepane_view'); //crmv@203484e if($singlepane_view == true) {//crmv@203484 changed to normal bool true, not string 'true' $returnset = '&return_module='.$currentModule.'&return_action=DetailView&return_id='.$id; } else { $returnset = '&return_module='.$currentModule.'&return_action=CallRelatedList&return_id='.$id; } $button = ''; $title = 'Suppression list'; VteSession::set(strtolower($title)."_listquery", ''); $query = "SELECT tbl_s_newsletter_unsub.*, tbl_s_newsletter_status.name as type FROM tbl_s_newsletter_unsub LEFT JOIN tbl_s_newsletter_status on tbl_s_newsletter_status.id = tbl_s_newsletter_unsub.statusid"; // crmv@38592 // crmv@142678 //forzo la related a vedere gli elementi di tutta la campagna $statistics_newsletter_tmp = VteSession::get('statistics_newsletter_'.$id); VteSession::set('statistics_newsletter_'.$id, ''); $where = $this->get_statistics_message_where_condition($id,'tbl_s_newsletter_unsub.newsletterid','where'); VteSession::set('statistics_newsletter_'.$id, $statistics_newsletter_tmp); // crmv@142678e if ($where != '') { $query .= $where; $return_value = $this->GetStatisticList($currentModule, $title, $query, $button, $returnset, $only_query,$xls_export); //crmv@116390 } if($return_value == null) { $return_value = Array(); } //crmv@101503 if($xls_export){ if(isset($return_value['entries'])){ //crmv@167234 foreach($return_value['entries'] as $keyRow => $arrRow){ array_pop($return_value['entries'][$keyRow]); foreach($arrRow as $kCol => $valCol){ $return_value['entries'][$keyRow][$return_value['header'][$kCol]] = strip_tags($valCol); unset($return_value['entries'][$keyRow][$kCol]); } } } //crmv@167234 } $nomeCamp = $this->getNewTargetName($id, $title); // crmv@142678 $hasEntries = isset($return_value['entries']) ? count($return_value['entries']) : 0; //crmv@167234 $button = ""; $button .= " "; //crmv@101503e $return_value['CUSTOM_BUTTON'] = $button; return $return_value; } //crmv@25872 function get_statistics_failed_messages($id, $cur_tab_id, $rel_tab_id, $actions=false, $only_query=false, $char=false, $xls_export=false) { global $currentModule;//crmv@203484 removed global singlepane global $table_prefix; //crmv@203484 $VTEP = VTEProperties::getInstance(); $singlepane_view = $VTEP->getProperty('layout.singlepane_view'); //crmv@203484e if($singlepane_view == true) {//crmv@203484 changed to normal bool true, not string 'true' $returnset = '&return_module='.$currentModule.'&return_action=DetailView&return_id='.$id; } else { $returnset = '&return_module='.$currentModule.'&return_action=CallRelatedList&return_id='.$id; } $button = ''; $title = 'Failed Messages'; VteSession::set(strtolower($title)."_listquery", ''); // crmv@38592 if ($char) { $query = "select ".$table_prefix."_crmentity.crmid, ".$table_prefix."_crmentity.setype from tbl_s_newsletter_queue inner join ".$table_prefix."_crmentity on ".$table_prefix."_crmentity.crmid = tbl_s_newsletter_queue.crmid"; } else { $query = "select tbl_s_newsletter_queue.*,tbl_s_newsletter_failed.*,tbl_s_newsletter_status.name as note FROM tbl_s_newsletter_queue"; } $query .= " inner join tbl_s_newsletter_failed on tbl_s_newsletter_queue.newsletterid = tbl_s_newsletter_failed.newsletterid and tbl_s_newsletter_queue.crmid = tbl_s_newsletter_failed.crmid left join tbl_s_newsletter_status on tbl_s_newsletter_status.id = tbl_s_newsletter_failed.statusid WHERE tbl_s_newsletter_queue.status = 'Failed'"; // crmv@38592e $where = $this->get_statistics_message_where_condition($id,'tbl_s_newsletter_queue.newsletterid'); if ($where != '') { $query .= $where; $return_value = $this->GetStatisticList($currentModule, $title, $query, $button, $returnset, $only_query,$xls_export); //crmv@116390 } if($return_value == null) { $return_value = Array(); } //crmv@101503 if($xls_export){ if(isset($return_value['entries'])){ //crmv@167234 foreach($return_value['entries'] as $keyRow => $arrRow){ array_pop($return_value['entries'][$keyRow]); foreach($arrRow as $kCol => $valCol){ $return_value['entries'][$keyRow][$return_value['header'][$kCol]] = strip_tags($valCol); unset($return_value['entries'][$keyRow][$kCol]); } } } //crmv@167234 } $nomeCamp = $this->getNewTargetName($id, $title); // crmv@142678 $hasEntries = isset($return_value['entries']) ? count($return_value['entries']) : 0; //crmv@167234 $button = ""; $button .= " "; //crmv@101503e $return_value['CUSTOM_BUTTON'] = $button; return $return_value; } //crmv@25872e // crmv@142678 function getNewTargetName($id, $title) { $idNews = VteSession::get('statistics_newsletter_'.$id); if(is_numeric($idNews)){ $focusNL = CRMEntity::getInstance('Newsletter'); $focusNL->retrieve_entity_info($idNews,'Newsletter'); $nomeCamp = $focusNL->column_fields['newslettername']."-".getTranslatedString($title,'Campaigns')."-".$focusNL->column_fields['date_scheduled']." ".$focusNL->column_fields['time_scheduled']; }else{ $focusC = CRMEntity::getInstance('Campaigns'); $focusC->retrieve_entity_info($id,'Campaigns'); $nomeCamp = $focusC->column_fields['campaignname']."-".getTranslatedString($title,'Campaigns'); } //crmv@160856 global $default_charset; $nomeCamp = htmlspecialchars(addslashes(html_entity_decode(strip_tags($nomeCamp), ENT_QUOTES,$default_charset)), ENT_QUOTES,$default_charset); // Remove any previous html conversion //crmv@160856e return $nomeCamp; } function get_statistics_message_where_condition($id,$field,$separator='and') { global $adb, $table_prefix; $statistics_newsletter = VteSession::get('statistics_newsletter_'.$id); if ($statistics_newsletter == '' || ($_REQUEST['load_header'] == 'yes')){ //All //crmv@67827 $result = $adb->query( 'SELECT newsletterid FROM '.$table_prefix.'_newsletter INNER JOIN '.$table_prefix.'_crmentity ON '.$table_prefix.'_crmentity.crmid = '.$table_prefix.'_newsletter.newsletterid WHERE deleted = 0 AND campaignid = '.$id ); $newsletterid = array(); if ($result && $adb->num_rows($result)>0) { while($row=$adb->fetchByAssoc($result)) { $newsletterid[] = $row['newsletterid']; } } else { return ''; } VteSession::set('statistics_newsletter_'.$id, implode(',',$newsletterid)); } return ' '.$separator.' '.$field.' in ('.VteSession::get('statistics_newsletter_'.$id).')'; } // crmv@142678e function GetStatisticList($module, $statistic, $query, $button, $returnset, $only_query=false, $xls_export=false) { //crmv@116390 require_once("data/Tracker.php"); require_once('include/database/PearDatabase.php'); global $adb,$app_strings,$current_language; $current_module_strings = return_module_language($current_language, $module); global $list_max_entries_per_page,$urlPrefix,$currentModule,$theme,$theme_path,$mod_strings; // focus_list is the means of passing data to a ListView. global $focus_list; $smarty = new VteSmarty(); $button = '
| '.$button.' |
';
$output .= '
';
} else {
$output .= '
';
$output .= '
';
}
$jsHandler = "return VT_disableFormSubmit(event);";
$output .= "";
$output .= "";
$computeCount = $_REQUEST['withCount'];
$output .= $app_strings['LBL_LIST_OF'].' '.$navigation_array['verylast'];
$output .= '';
if(($navigation_array['next']) !=0) {
$output .= '
';
$output .= '
';
} else {
$output .= '
';
$output .= '
';
}
if($navigation_array['first']=='')
return;
else
return $output;
}
function getStatisticValue($value,$type) {
global $adb, $table_prefix;
switch($type) {
case 'name':
//crmv@25243
$result = $adb->pquery("select * from ".$table_prefix."_crmentity where crmid=?", array($value));
if(!$result || $adb->query_result($result,0,"deleted") == 1) {
return getTranslatedString('LBL_NOT_AVAILABLE','Newsletter');
} else {
$module = getSalesEntityType($value);
$name = getEntityName($module,$value);
return "".$name[$value]."";
}
//crmv@25243e
break;
case 'email':
$module = getSalesEntityType($value);
if (empty($module)) return '';
$focus = CRMEntity::getInstance($module);
$focus_newsletter = CRMEntity::getInstance('Newsletter');
$result = $adb->query("select ".$focus_newsletter->email_fields[$module]['columnname']." from ".$focus_newsletter->email_fields[$module]['tablename']." where ".$focus->tab_name_index[$focus_newsletter->email_fields[$module]['tablename']]." = ".$value);
if ($result && $adb->num_rows($result)>0) {
return $adb->query_result($result,0,$focus_newsletter->email_fields[$module]['columnname']);
}
break;
case 'datetime':
return getDisplayDate($value);
break;
case 'translate':
return getTranslatedString($value,'Newsletter');
break;
case 'url':
$focus = CRMEntity::getInstance('Newsletter');
if ($value == $focus->url_unsubscription_file) {
return ''.getTranslatedString('LBL_UNSUBSCRIPTION_LINK','Newsletter').'';
} else {
return $value;
}
break;
// crmv@38592
case 'preview':
return ''.getTranslatedString('LBL_PREVIEW', 'APP_STRINGS').'';
break;
// crmv@38592e
}
}
//crmv@22700e //crmv@25083e
function save_related_module($module, $crmid, $with_module, $with_crmid, $skip_check=false) {
if (!is_array($with_crmid)) $with_crmid = array($with_crmid);
parent::save_related_module($module, $crmid, $with_module, $with_crmid, $skip_check);
//crmv@52391
if (isModuleInstalled('Fiere') && vtlib_isModuleActive('Fiere') && $with_module == 'Targets' && !empty($with_crmid)) {
$fiereFocus = CRMEntity::getInstance('Fiere');
foreach($with_crmid as $id) {
$fiereFocus->create_fiera_to_entity2($crmid,$id);
}
}
if (isModuleInstalled('Telemarketing') && vtlib_isModuleActive('Telemarketing') && $with_module == 'Targets' && !empty($with_crmid)) {
$tlmktFocus = CRMEntity::getInstance('Telemarketing');
foreach($with_crmid as $id) {
$tlmktFocus->create_tlmkt_to_entity2($crmid,$id);
}
}
//crmv@52391e
}
//crmv@152532
function getStatistics($record, $newsletterStatistics=false, $ajax=false, $statistics_newsletter_id=null) {
global $currentModule, $adb, $table_prefix, $app_strings;
$smarty = new VteSmarty();
$focus = CRMEntity::getInstance($currentModule);
$focus->retrieve_entity_info_no_html($record,$currentModule);
$smarty->assign('NEWSLETTER_STATISTICS', $newsletterStatistics);
$smarty->assign('STATISTICSTAB',true);
$smarty->assign('FASTLOADRELATEDLIST',true);
$smarty->assign('APP',$app_strings);
$smarty->assign('MODULE',$currentModule);
$smarty->assign("CAMPAIGNID",$focus->id);
$smarty->assign("ID",$focus->id);
if ($newsletterStatistics) {
$smarty->assign("MODULE",'Newsletter');
$smarty->assign("ID",$statistics_newsletter_id);
}
$related_array=getRelatedLists($currentModule,$focus);
$focus->filterStatisticRelatedLists('maintain',$related_array);//crmv@22700
$smarty->assign("RELATEDLISTS", $related_array);
require_once('include/ListView/RelatedListViewSession.php');
$open_related_modules = RelatedListViewSession::getRelatedModulesFromSession();
$smarty->assign("SELECTEDHEADERS", $open_related_modules);
if ($newsletterStatistics) {
VteSession::set('statistics_newsletter_'.$focus->id, $statistics_newsletter_id); // crmv@142678
$smarty->assign('STATISTICS_SELECT','');
} else {
// crmv@142678
$showNewsletterid = ''; // all newsletters
//crmv@28170
//crmv@36534
$result = $adb->pquery("SELECT
".$table_prefix."_newsletter.newsletterid AS newsletterid,
newslettername
FROM ".$table_prefix."_newsletter
INNER JOIN ".$table_prefix."_crmentity
ON ".$table_prefix."_crmentity.crmid = ".$table_prefix."_newsletter.newsletterid
WHERE ".$table_prefix."_crmentity.deleted = 0
AND ".$table_prefix."_newsletter.campaignid = ?
ORDER BY COALESCE(".$table_prefix."_newsletter.date_scheduled,CAST('' AS DATE)) DESC",array($focus->id));
//crmv@36534 e
$statistics_newsletter = '';
// save in the session for the related lists
VteSession::set('statistics_newsletter_'.$focus->id, $showNewsletterid);
$smarty->assign('STATISTICS_SELECT',$statistics_newsletter);
//crmv@28170e crmv@142678e
}
include('modules/Campaigns/StatisticsChart.php'); // crmv@38600
// crmv@172994
$sc = StatisticsChart::getInstance($focus, array_reverse($related_array));
$chartData = $sc->generateChart();
$chartPlugin = $sc->getChartPluginName();
if (!empty($ajax)) {
$html = $smarty->fetch("RelatedListContents.tpl");
$response = array('success' => true, 'html' => $html, 'chart_data' => $chartData, 'chart_plugin' => $chartPlugin);
echo Zend_Json::encode($response);
exit();
} else {
$smarty->assign('CHART_DATA', Zend_Json::encode($chartData));
$smarty->assign('CHART_PLUGIN', $chartPlugin);
$smarty->display("modules/Campaigns/Statistics.tpl");
}
// crmv@172994e
}
//crmv@152532e
}
?>