sugarwidgetreportfield.php

来自「SugarCRM5.1 开源PHP客户关系管理系统」· PHP 代码 · 共 366 行

PHP
366
字号
<?phpif(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');/** * SugarWidgetField * * SugarCRM is a customer relationship management program developed by * SugarCRM, Inc. Copyright (C) 2004 - 2007 SugarCRM Inc. *  * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 3 as published by the * Free Software Foundation with the addition of the following permission added * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. *  * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more * details. *  * You should have received a copy of the GNU General Public License along with * this program; if not, see http://www.gnu.org/licenses or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. *  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road, * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com. *  * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU General Public License version 3. *  * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by * SugarCRM" logo. If the display of the logo is not reasonably feasible for * technical reasons, the Appropriate Legal Notices must display the words * "Powered by SugarCRM". */require_once('include/generic/SugarWidgets/SugarWidgetField.php');$used_aliases = array();$alias_map = array();;class SugarWidgetReportField extends SugarWidgetField{	function  getSubClass($layout_def)	{		if (! empty($layout_def['type']))		{						if ($layout_def['type'] == 'time') {				$layout_def['widget_class'] = 'Fielddate';			} else {				$layout_def['widget_class'] = 'Field'.$layout_def['type'];			}			return $this->layout_manager->getClassFromWidgetDef($layout_def);		} else {			return $this;		}	} function display($layout_def) {        $obj = $this->getSubClass($layout_def);                                                                                                 $context = $this->layout_manager->getAttribute('context');//_ppd($context);        $func_name = 'display'.$context;                                                                                                 if ( ! empty($context) && method_exists($obj,$func_name))        {                return  $obj->$func_name($layout_def);        } else        {                return 'display not found:'.$func_name;        } }   function _get_column_select_special($layout_def) { 		$alias = '';		 if ( ! empty($layout_def['table_alias']))		 {			$alias = $layout_def['table_alias'];		 }		 		$reporter = $this->layout_manager->getAttribute("reporter");    if ($layout_def['name'] == 'weighted_sum' )     {				return "SUM( ".$alias.".probability * ".$alias.".amount_usdollar * 0.01) ";		}    if ($layout_def['name'] == 'weighted_amount' )     {				return "AVG(".$alias.".probability * ".$alias.".amount_usdollar * 0.01) ";		} } function _get_column_select($layout_def) {		$alias = '';		$endalias = '';	if ( ! empty($layout_def['group_function']) )	{    	if ($layout_def['name'] == 'weighted_sum' || $layout_def['name'] == 'weighted_amount')     	{				return $this->_get_column_select_special($layout_def);    	}					$reporter = $this->layout_manager->getAttribute('reporter');				$alias .= $layout_def['group_function']."(";				$endalias = ')';	}	if ( ! empty($layout_def['table_alias']))	{		$alias .= $layout_def['table_alias'].".".$layout_def['name'];		}else if (! empty($layout_def['name'])) {		$alias = $layout_def['name'];	} else {		$alias .= "*";	}	$alias .= $endalias;		return $alias; } function querySelect(&$layout_def) {			return $this->_get_column_select($layout_def)." ".$this->_get_column_alias($layout_def)."\n"; } function queryGroupBy($layout_def) {	return $this->_get_column_select($layout_def)." \n"; } function queryOrderBy($layout_def) {	$reporter = $this->layout_manager->getAttribute('reporter');	if(!empty($reporter->all_fields[$layout_def['column_key']])) $field_def = $reporter->all_fields[$layout_def['column_key']];                                                                                                       	if ( ! empty( $field_def['sort_on']))	{			$order_by = $layout_def['table_alias'].".".$field_def['sort_on'];            if(!empty($field_def['sort_on2']))                $order_by .= ', ' . $layout_def['table_alias'].".".$field_def['sort_on2'];    }	else {		$order_by = $this->_get_column_alias($layout_def)." \n";	}						if ( empty($layout_def['sort_dir']) || $layout_def['sort_dir'] == 'a')			{				return $order_by." ASC";			} else {				return $order_by." DESC";			} } function queryFilter($layout_def) {	$method_name = "queryFilter".$layout_def['qualifier_name'];	return $this->$method_name($layout_def); }	function displayHeaderCell($layout_def)	{				global $start_link_wrapper,$end_link_wrapper;                require_once("include/ListView/ListView.php");                // don't show sort links if name isn't defined                $no_sort = $this->layout_manager->getAttribute('no_sort');                if(empty($layout_def['name']) || ! empty($no_sort) || ! empty($layout_def['no_sort']))                {                        return $layout_def['label'];                }                                                                                                                                                                                                                                                                                     $sort_by ='';                if ( ! empty($layout_def['table_key']) && ! empty($layout_def['name']) )                {                  if (! empty($layout_def['group_function']) && $layout_def['group_function'] == 'count')                  {                    $sort_by = 'count';                   } else {                        	$sort_by = $layout_def['table_key'].":".$layout_def['name'];                          if ( ! empty($layout_def['column_function']))                          {                            $sort_by .= ':'.$layout_def['column_function'];                          } else if ( ! empty($layout_def['group_function']) )                        	{                             $sort_by .= ':'.$layout_def['group_function'];                        	}                   }                }                else                {                        return $this->displayHeaderCellPlain($layout_def);                }                                                                                                       $start = $start_link_wrapper;                $end = $end_link_wrapper;                                                                                                       $start = empty($start) ? '': $start;                $end = empty($end) ? '': $end;                // unable to retrieve the vardef here, exclude columns of type clob/text from being sortable                                if(!in_array($layout_def['name'], array('description', 'account_description', 'lead_source_description', 'status_description', 'to_addrs', 'cc_addrs', 'bcc_addrs', 'work_log', 'objective', 'resolution'))) {                    $header_cell = "<a class=\"listViewThLinkS1\" href=\"".$start.$sort_by.$end."\">";                    $header_cell .= $this->displayHeaderCellPlain($layout_def);                        $arrow_start = ListView::getArrowStart($this->layout_manager->getAttribute('image_path'));                    $arrow_end = ListView::getArrowEnd($this->layout_manager->getAttribute('image_path'));                                                                                                                                                                                                          $imgArrow = '';                                                                                                               if (isset($layout_def['sort']))                    {                            $imgArrow = $layout_def['sort'];                    }                    $header_cell .= ' ' . $arrow_start.$imgArrow.$arrow_end."</a>";                }                else {                    $header_cell = $this->displayHeaderCellPlain($layout_def);                }                                                                                                       return $header_cell;        }                                                                                         	function query($layout_def) 	{       		 $obj = $this->getSubClass($layout_def);       	                                                                                          	$context = $this->layout_manager->getAttribute('context');       	 	$func_name = 'query'.$context;                                                                                                 	if ( ! empty($context) && method_exists($obj,$func_name))       		 {               		 return  $obj->$func_name($layout_def);        	} else        	{                	return '';		} 	}                                                                                          function _get_column_alias($layout_def) {        $alias_arr = array();                                                                                         				if ($layout_def['table_key'] == 'self' && !empty($layout_def['name']) && $layout_def['name'] == 'id')				{					return 'primaryid';					}        if ( ! empty($layout_def['group_function']) && $layout_def['group_function']=='count')        {                return 'count';        }                                                                                                 if ( ! empty($layout_def['table_alias']))        {                array_push($alias_arr,$layout_def['table_alias']);        }        if ( ! empty($layout_def['group_function']) && $layout_def['group_function'] != 'weighted_amount' && $layout_def['group_function'] != 'weighted_sum')        {                array_push($alias_arr,$layout_def['group_function']);        } else if ( ! empty($layout_def['column_function']))        {                array_push($alias_arr,$layout_def['column_function']);        } else if ( ! empty($layout_def['qualifier']))        {                array_push($alias_arr,$layout_def['qualifier']);        }                                                                                                 if ( ! empty($layout_def['name']))        {                array_push($alias_arr,$layout_def['name']);        }                                                                                         				global $used_aliases,$alias_map;        $alias = strtolower(implode("_",$alias_arr));				$short_alias = substr($alias,0,28);				if ( empty($used_aliases[$short_alias]))				{					$alias_map[$alias] = $short_alias;				  $used_aliases[$short_alias] = 1;          return $short_alias;				} else if ( ! empty($alias_map[$alias]) )				{					return $alias_map[$alias];				} else {					$alias_map[$alias] = $short_alias.'_'.$used_aliases[$short_alias];				  $used_aliases[$short_alias]++;					return $alias_map[$alias];				} } function queryFilterEmpty(&$layout_def) {    return '( '.$this->_get_column_select($layout_def).' IS NULL OR '.$this->_get_column_select($layout_def)."='' )\n"; } function queryFilterIs(&$layout_def) { 	return '( '.$this->_get_column_select($layout_def)."='".PearDatabase::quote($layout_def['input_name0'])."')\n"; } function queryFilterNot_Empty(&$layout_def) {    $reporter = $this->layout_manager->getAttribute("reporter");    return '( '.$this->_get_column_select($layout_def).' IS NOT NULL AND '.$this->_get_column_select($layout_def)."<>'' )\n"; }}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?