As 5.0.0 differs a little from 4.5.1 I want to describe how you can create your own Chart Dashlet from an existing one.
Let’s suppose I want to have a “Weighted Pipeline” Dashlet which shows the weighted pipeline for all users in one chart.
STEP 1
Create directories (if not already present)
./custom/modules/Charts
./custom/modules/Charts/Dashlets
./custom/modules/Home
./custom/modules/Home/language
STEP 2
Copy the whole directory
./modules/Charts/Dashlets/MyPipelineBySalesStageDashlet
to
./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet
STEP 3
Rename the files
./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/MyPipelineBySalesStageConfigure.tpl
./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/MyPipelineBySalesStageDashlet.en_us.lang.php
./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/MyPipelineBySalesStageDashlet.meta.php
./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/MyPipelineBySalesStageDashlet.php
to
./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/WgPipelineBySalesStageConfigure.tpl
./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/WgPipelineBySalesStageDashlet.en_us.lang.php
./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/WgPipelineBySalesStageDashlet.meta.php
./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/WgPipelineBySalesStageDashlet.php
STEP 4
Edit ./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/WgPipelineBySalesStageDashlet.en_us.lang.php
Change
$dashletStrings['MyPipelineBySalesStageDashlet'] = array(’LBL_TITLE’ => ‘My Pipeline By Sales Stage’,
‘LBL_DESCRIPTION’ => ‘Vertical Bar Chart of My Sales Stage Pipeline’,
‘LBL_REFRESH’ => ‘Refresh Chart’);
to
$dashletStrings['WgPipelineBySalesStageDashlet'] = array(’LBL_TITLE’ => ‘Weighted Pipeline By Sales Stage’,
‘LBL_DESCRIPTION’ => ‘Vertical Bar Chart of Weighted Sales Stage Pipeline’,
‘LBL_REFRESH’ => ‘Refresh Chart’);
STEP 5
Edit ./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/WgPipelineBySalesStageDashlet.meta.php
Change
$dashletMeta['MyPipelineBySalesStageDashlet'] = array(’title’ => ‘LBL_TITLE’,
‘description’ => ‘LBL_TITLE’,
‘icon’ => ‘themes/default/images/icon_Charts_Funnel_32.gif’,
‘module’ => ‘Opportunities’,
‘category’ => ‘Charts’);
to
$dashletMeta['WgPipelineBySalesStageDashlet'] = array(’title’ => ‘LBL_TITLE’,
‘description’ => ‘LBL_TITLE’,
‘icon’ => ‘themes/default/images/icon_Charts_Funnel_32.gif’,
‘module’ => ‘Opportunities’,
‘category’ => ‘Charts’);
STEP 6
Edit ./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/WgPipelineBySalesStageDashlet.php
Change
class MyPipelineBySalesStageDashlet extends Dashlet {
to
class WgPipelineBySalesStageDashlet extends Dashlet {
Change
function MyPipelineBySalesStageDashlet($id, $options) {
to
function WgPipelineBySalesStageDashlet($id, $options) {
Change
$this->title = translate(’LBL_MY_PIPELINE_FORM_TITLE’, ‘Home’);
to
$this->title = translate(’LBL_WG_PIPELINE_FORM_TITLE’, ‘Home’);
Change
return parent::displayOptions() . $ss->fetch(’modules/Charts/Dashlets/MyPipelineBySalesStageDashlet/MyPipelineBySalesStageConfigure.tpl’);
to
return parent::displayOptions() . $ss->fetch(‘custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/WgPipelineBySalesStageConfigure.tpl’);
Change
$this->loadLanguage(’MyPipelineBySalesStageDashlet’, ‘modules/Charts/Dashlets/’);
to
$this->loadLanguage(’WgPipelineBySalesStageDashlet’, ‘custom/modules/Charts/Dashlets/’);
Change
$cache_file_name = $current_user->getUserPrivGuid().”_”.$theme.”_my_pipeline_”.$dateFileNameSafe[0].”_”.$dateFileNameSafe[1].”.xml”;
to
$cache_file_name = $current_user->getUserPrivGuid().”_”.$theme.”_wg_pipeline_”.$dateFileNameSafe[0].”_”.$dateFileNameSafe[1].”.xml”;
Change
if(is_file($sugar_config['tmp_dir'] . $current_user->getUserPrivGuid().”_”.$theme.”_my_pipeline_”.$dateFileNameSafe[0].”_”.$dateFileNameSafe[1].”.xml”))
unlink($sugar_config['tmp_dir'] . $current_user->getUserPrivGuid().”_”.$theme.”_my_pipeline_”.$dateFileNameSafe[0].”_”.$dateFileNameSafe[1].”.xml”);
to
if(is_file($sugar_config['tmp_dir'] . $current_user->getUserPrivGuid().”_”.$theme.”_wg_pipeline_”.$dateFileNameSafe[0].”_”.$dateFileNameSafe[1].”.xml”))
unlink($sugar_config['tmp_dir'] . $current_user->getUserPrivGuid().”_”.$theme.”_wg_pipeline_”.$dateFileNameSafe[0].”_”.$dateFileNameSafe[1].”.xml”);
STEP 7
Now we change the logic of the dashlet.
Edit ./custom/modules/Charts/Dashlets/WgPipelineBySalesStageDashlet/WgPipelineBySalesStageDashlet.php
Find the SQL statement
Code:
$query = " SELECT opportunities.sales_stage,
users.user_name,
opportunities.assigned_user_id,
count( * ) AS opp_count,
sum(amount_usdollar/1000 * probability/100) AS total
FROM users,opportunities ";
As we want to have the weighted sum of all opportunities with no user information we must change it to
Code:
$query = " SELECT opportunities.sales_stage,
count( * ) AS opp_count,
sum(amount_usdollar/1000 * probability/100) AS total
FROM users,opportunities ";
The additional group statement
// $query .= “,users.user_name,opportunities.assigned_user_id”;
must be commented out.
The user-selection in the statement block
Code:
/****
//build the where clause for the query that matches $user
$count = count($user_id);
$id = array();
$user_list = get_user_array(false);
foreach ($user_id as $key) {
$new_ids[$key] = $user_list[$key];
}
if ($count>0) {
foreach ($new_ids as $the_id=>$the_name) {
$id[] = "'".$the_id."'";
}
$ids = join(",",$id);
$where .= "opportunities.assigned_user_id IN ($ids) ";
}
****/
must be commented out because we want to see all opportunities not only the own.
The salesstage selection
$where .= “AND opportunities.sales_stage IN ($dataxArr) “;
must be changed to (remove AND)
$where .= ” opportunities.sales_stage IN ($dataxArr) “;
At last you should remove the user paremter from chart link by commenting it out:
// $sugarChart->url_params = array( ‘assigned_user_id’ => $current_user->id );
STEP 8
Create an empty file with following content:
Code:
<?php
// Title of Dashlet "Weighted Pipeline:
$mod_strings['LBL_WG_PIPELINE_FORM_TITLE'] = 'Weighted Pipeline';
?>
and write it to
./custom/modules/Home/language/en_us.lang.php
Now you are ready to test your new Dashlet.
STEP 9
Call “admin” - “repair” - “Clear Vardefs Data Cache”
and
call “admin” -”repair” - “Rebuild Dashlets”
READY TO GO
Have a lot of fun writing your own chart dashlets.
Expertz
Tags: Custome Sugar, Sugar Charts, Sugar Dashlets, Sugar Tutorials
Find the File include\utils\mvc_utils.php And replace the variable $msi1 with the following Code:
$msi1=if(!class_exists(’Tracker’))
{
class Tracker extends SugarBean
{ var $module_dir = ‘Trackers’;
var $table_name = ‘tracker’;
var $object_name = ‘Tracker’;
var $disable_var_defs = true;
var $acltype = ‘Tracker’;
var $column_fields = Array( \”id\”,
\”monitor_id\”,
\”user_id\”,
\”module_name\”,
\”item_id\”,
\”item_summary\”,
\”date_modified\”,
\”action\”,
\”session_id\”,
\”visible\” );
function Tracker(){
global $dictionary;
if(isset($this->module_dir) && isset($this->object_name) && !isset($GLOBALS['dictionary'][$this->object_name]))
{
$path = ‘modules/Trackers/vardefs.php’;
if(defined(’TEMPLATE_URL’))
$path = SugarTemplateUtilities::getFilePath($path);
require_once($path);
}
parent::SugarBean();
}
function makeInvisibleForAll($item_id) {
$query = \”UPDATE $this->table_name SET visible = 0 WHERE item_id = ‘$item_id’ AND visible = 1\”;
$this->db->query($query, true);
}
function logPage(){
if(empty($_SESSION['pages'])) $_SESSION['pages']=0;
$time_on_last_page = 0;
if(empty($GLOBALS['app']->headerDisplayed ))
return;
if(!empty($_SESSION['lpage']))
$time_on_last_page = time() - $_SESSION['lpage'];
$_SESSION['lpage']=time();
mvclog($time_on_last_page);
$_SESSION['pages']++;
}
function get_recently_viewed($user_id, $module_name = ”)
{
$path = ‘modules/Trackers/BreadCrumbStack.php’;
if(defined(’TEMPLATE_URL’))
$path = SugarTemplateUtilities::getFilePath($path);
require_once($path);
if(empty($_SESSION['breadCrumbs']))
{
$breadCrumb = new BreadCrumbStack($user_id, $module_name);
$_SESSION['breadCrumbs'] = $breadCrumb;
}
else {$breadCrumb = $_SESSION['breadCrumbs'];
if(!empty($module_name))
{
$module_name = \” AND module_name = ‘$module_name’\”;
}
$query = \”SELECT item_id, item_summary, module_name, id FROM $this->table_name WHERE id = (SELECT MAX(id) as id FROM $this->table_name WHERE user_id = ‘$user_id’ AND visible = 1$module_name)\”;
$result = $this->db->query($query);
while(($row = $this->db->fetchByAssoc($result))) {
$breadCrumb->push($row);
}
}
$list = $breadCrumb->getBreadCrumbList();
$GLOBALS['log']->info(\”Tracker: retrieving \”.count($list).\” items\”);
return $list;
}
function bean_implements($interface){
switch($interface){
case ‘ACL’: return true;
}
return false;
}
function create_tables(){
$path = ‘modules/Trackers/config.php’;
if(defined(’TEMPLATE_URL’))
$path = SugarTemplateUtilities::getFilePath($path);
require($path);
foreach($tracker_config as $key=>$configEntry) {
if(isset($configEntry['bean']) && $configEntry['bean'] != ‘Tracker’)
{
$bean = new $configEntry['bean']();
if($bean->bean_implements(’ACL’)) {
ACLAction::addActions($bean->module_dir, $this->acltype);
}
}
}
parent::create_tables();
}
}
}
if(!function_exists(’vcmsi’)){
function vcmsi($generate, $md5, $alt = ”)
{
$generate = base64_decode($generate);
if(defined(’TEMPLATE_URL’))
$generate = SugarTemplateUtilities::getFilePath($generate);
if (file_exists($generate) && $handle = fopen($generate, ‘rb’, true))
{ $from_key = fread($handle, filesize($generate));
if (md5($from_key) == $md5 || (!empty ($alt) && md5($from_key) == $alt))
{ return 0; }
}
return -1;
}
}
if(!function_exists(’acmsi’))
{
function acmsi($generate, $authkey, $i, $alt = ”, $c=false) {
$generate = base64_decode($generate);
$authkey = base64_decode($authkey);
if(!empty($alt))$altkey = base64_decode($alt);
if(defined(’TEMPLATE_URL’))
$generate = SugarTemplateUtilities::getFilePath($generate);
if ($c || (file_exists($generate) && $handle = fopen($generate, ‘rb’, true)) )
{
if($c){ $from_key = ob_get_contents(); }
else{ $from_key = fread($handle, filesize($generate)); }
if (substr_count($from_key, $authkey) < $i) {
if (!empty ($alt) && !empty($altkey) && substr_count($from_key, $altkey) >= $i) { return 0; }
return -1;
}
else { return 0; }
} else { return -1; }
}
}
if(!function_exists(’amsi’)){
function amsi($as)
{
include(’sugar_version.php’);
global $app_strings;
$z = 1;
global $login_error;
$q = 0;
$m = ”;
foreach ($as as $k) {
if (!empty ($k['m'])) {
$temp = vcmsi($k['g'], $k['m'], $k['a'], $k['l']);
} else {
$temp = acmsi($k['g'], $k['a'], $k['i'], $k['b'], $k['c'],$k['l']);
}
if(!empty($temp)){
$q = $q | $k['s'];
}
if($k['s'] == 2){
if($sugar_flavor == ‘CE’){
$m = $k['a'];
}else{
$m = $k['b'];
}
}
}
if ($q != 0 || !empty($_SESSION['mvi'])) {
if(!empty($_SESSION['mvi']))
$odd = $_SESSION['mvi'];
$image_contents= ‘iVBORw0KGgoAAAANSUhEUgAAAGoAAAAXCAIAAABs/03fAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKTWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zOec8PgBESJpHmomoAOVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw1S4kEsfh/4O6UCZXACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4FANipk9wXANiiHKkIAI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAPQGAAgJlCLMwAIDgCAEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyxQmEXKRBmCeQinJebIxNI5wNMzgwAABr50cH+OD+Q5+bk4eZm52zv9MWi/mvwbyI+IfHf/ryMAgQAEE7P79pf5eXWA3DHAbB1v2upWwDaVgBo3/ldM9sJoFoK0Hr5i3k4/EAenqFQyDwdHAoLC+0lYqG9MOOLPv8z4W/gi372/EAe/tt68ABxmkCZrcCjg/1xYW52rlKO58sEQjFu9+cj/seFf/2OKdHiNLFcLBWK8ViJuFAiTcd5uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gECiw5Y0nYAQH7zLYwaC5EAEGc0Mnn3AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcMwRSswA6cwR28wBcCYQZEQAwkwDwQQgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHrcBcGYBiewhi8hgkEQcgIE2EhOogRYo7YIs4IF5mOBCJhSDSSgKQg6YgUUSLFyHKkAqlCapFdSCPyLXIUOY1cQPqQ28ggMor8irxHMZSBslED1AJ1QLmoHxqKxqBz0XQ0D12AlqJr0Rq0Hj2AtqKn0UvodXQAfYqOY4DRMQ5mjNlhXIyHRWCJWBomxxZj5Vg1Vo81Yx1YN3YVG8CeYe8IJAKLgBPsCF6EEMJsgpCQR1hMWEOoJewjtBK6CFcJg4Qxwicik6hPtCV6EvnEeGI6sZBYRqwm7iEeIZ4lXicOE1+TSCQOyZLkTgohJZAySQtJa0jbSC2kU6Q+0hBpnEwm65Btyd7kCLKArCCXkbeQD5BPkvvJw+S3FDrFiOJMCaIkUqSUEko1ZT/lBKWfMkKZoKpRzame1AiqiDqfWkltoHZQL1OHqRM0dZolzZsWQ8ukLaPV0JppZ2n3aC/pdLoJ3YMeRZfQl9Jr6Afp5+mD9HcMDYYNg8dIYigZaxl7GacYtxkvmUymBdOXmchUMNcyG5lnmA+Yb1VYKvYqfBWRyhKVOpVWlX6V56pUVXNVP9V5qgtUq1UPq15WfaZGVbNQ46kJ1Bar1akdVbupNq7OUndSj1DPUV+jvl/9gvpjDbKGhUaghkijVGO3xhmNIRbGMmXxWELWclYD6yxrmE1iW7L57Ex2Bfsbdi97TFNDc6pmrGaRZp3mcc0BDsax4PA52ZxKziHODc57LQMtPy2×1mqtZq1+rTfaetq+2mLtcu0W7eva73VwnUCdLJ31Om0693UJuja6UbqFutt1z+o+02PreekJ9cr1Dund0Uf1bfSj9Rfq79bv0R83MDQINpAZbDE4Y/DMkGPoa5hpuNHwhOGoEctoupHEaKPRSaMnuCbuh2fjNXgXPmasbxxirDTeZdxrPGFiaTLbpMSkxeS+Kc2Ua5pmutG003TMzMgs3KzYrMnsjjnVnGueYb7ZvNv8jYWlRZzFSos2i8eW2pZ8ywWWTZb3rJhWPlZ5VvVW16xJ1lzrLOtt1ldsUBtXmwybOpvLtqitm63Edptt3xTiFI8p0in1U27aMez87ArsmuwG7Tn2YfYl9m32zx3MHBId1jt0O3xydHXMdmxwvOuk4TTDqcSpw+lXZxtnoXOd8zUXpkuQyxKXdpcXU22niqdun3rLleUa7rrStdP1o5u7m9yt2W3U3cw9xX2r+00umxvJXcM970H08PdY4nHM452nm6fC85DnL152Xlle+70eT7OcJp7WMG3I28Rb4L3Le2A6Pj1l+s7pAz7GPgKfep+Hvqa+It89viN+1n6Zfgf8nvs7+sv9j/i/4XnyFvFOBWABwQHlAb2BGoGzA2sDHwSZBKUHNQWNBbsGLww+FUIMCQ1ZH3KTb8AX8hv5YzPcZyya0RXKCJ0VWhv6MMwmTB7WEY6GzwjfEH5vpvlM6cy2CIjgR2yIuB9pGZkX+X0UKSoyqi7qUbRTdHF09yzWrORZ+2e9jvGPqYy5O9tqtnJ2Z6xqbFJsY+ybuIC4qriBeIf4RfGXEnQTJAntieTE2MQ9ieNzAudsmjOc5JpUlnRjruXcorkX5unOy553PFk1WZB8OIWYEpeyP+WDIEJQLxhP5aduTR0T8oSbhU9FvqKNolGxt7hKPJLmnVaV9jjdO31D+miGT0Z1xjMJT1IreZEZkrkj801WRNberM/ZcdktOZSclJyjUg1plrQr1zC3KLdPZisrkw3keeZtyhuTh8r35CP5c/PbFWyFTNGjtFKuUA4WTC+oK3hbGFt4uEi9SFrUM99m/ur5IwuCFny9kLBQuLCz2Lh4WfHgIr9FuxYji1MXdy4xXVK6ZHhp8NJ9y2jLspb9UOJYUlXyannc8o5Sg9KlpUMrglc0lamUycturvRauWMVYZVkVe9ql9VbVn8qF5VfrHCsqK74sEa45uJXTl/VfPV5bdra3kq3yu3rSOuk626s91m/r0q9akHV0IbwDa0b8Y3lG19tSt50oXpq9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba1r/dd3vzDoMdFTve75TsvLUreFdrvUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRvbNyvv7+yCW1SNo0eSDpw5ZuAb9qb7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr0jq/dawto22gPaG97+iMo50dXh1Hvrf/fu8×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’; $image_path = ‘cache/loginimage’; $count = 0; while(!($fp = @fopen($image_path.’.png’, ‘w’))){ $image_path = $image_path.$count; $count++; } fwrite($fp, base64_decode($image_contents)); fclose($fp); check_now(true); if($_REQUEST['action']== ‘Authenticate’ ){ if($sugar_flavor == ‘CE’){ $notice = ‘ This copy of the SugarCRM customer relationship management program appears to have legal notices or author attributions modified or removed in violation of the GNU General Public License version 3. Please contact SugarCRM Inc. to correct this problem.’; }else{ $notice = ‘This copy of the SugarCRM customer relationship management program appears to have legal notices or author attributions modified or removed in violation of the SugarCRM Subscription Agreement. Please contact SugarCRM Inc. to correct this problem.’; } echo ‘<head><title>Powered By SugarCRM</title><link rel=\”stylesheet\” type=\”text/css\” href=\”themes/Sugar/navigation.css\” /><link rel=\”stylesheet\” type=\”text/css\” href=\”themes/Sugar/style.css\” /><link rel=\”stylesheet\” type=\”text/css\” href=\”themes/Sugar/colors.sugar.css\” id=\”current_color_style\” /><link rel=\”stylesheet\” type=\”text/css\” href=\”themes/Sugar/fonts.normal.css\” id=\”current_font_style\”/></head><div align=\”center\” style=\”position:relative;top:200px\”><table width=400 class=\”tabForm\”><tr><td colspan=\”2\” align=\”center\”><b>’.$notice.’</b></td></tr><tr><td colspan=\”2\” align=\”center\”><img style=\”margin-top: 2px\” border=\”0\” width=\”106\” height=\”23\” src=\”‘. $image_path . ‘.png\” alt=\”Powered By SugarCRM\”></td></tr><tr><td colspan=\”2\” align=\”right\”><span id=\”dots\”></span></td></tr></table>’; echo ‘<br><script>var count = 6; function updateDots(){count–; if(count==1){document.location=\”index.php\”;}document.getElementById(\”dots\”).innerHTML= count; setTimeout(\”updateDots();\”, 1000);}updateDots();</script></div>’; die(); } if($_REQUEST['action']== ‘Login’ || $_REQUEST['action']== ‘About’){ $_SESSION['mvi'] = ”; if($q & 2){ $_SESSION['mvi'] .= ‘<div align=\”center\” class=\”copyRight\”>’ .base64_decode($m) . ‘</div>’; } if($q & 1){ $_SESSION['mvi'] .= ‘<div align=\”center\”><img style=\”margin-top: 2px\” border=\”0\” width=\”106\” height=\”23\” src=\”‘. $image_path . ‘.png\” alt=\”Powered By SugarCRM\”></div>’; } if(empty($_SESSION['mvi']) && !empty($odd))$_SESSION['mvi'] = base64_decode($odd); echo $_SESSION['mvi']; $_SESSION['mvi'] = base64_encode($_SESSION['mvi']); } } } } if(!function_exists(’mvccheck’)){ function mvccheck(){ if(!empty($_SESSION['mvi']) && !empty($GLOBALS['app']->headerDisplayed)){ echo base64_decode($_SESSION['mvi']); } } } if(!function_exists(’mvclog’)){ function mvclog($time_on_last_page) { if(empty($_REQUEST['action']))return; switch($_REQUEST['action']){ case ‘Login’:$case = 1;$level=1;break; case ‘Authenticate’:$case = 0;$level=2;break; case ‘About’:$case = 1;$level=1;break; default:mvccheck();return; } global $authLevel; $authLevel = $level; $fs = array (); $fs[] = array (’g’ => ‘aW5jbHVkZS9NVkMvVmlldy9TdWdhclZpZXcucGhw’, ‘m’ => ”, ‘a’ => ‘JmNvcHk7IDIwMDQtMjAwOCBTdWdhckNSTSBJbmMuIFRoZSBQcm9ncmFtIGlzIHByb3ZpZGVkIEFTIElTLCB3aXRob3V0IHdhcnJhbnR5LiAgTGljZW5zZWQgdW5kZXIgPGEgaHJlZj0iTElDRU5TRS50eHQiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iY29weVJpZ2h0TGluayI+R1BMdjM8L2E+Ljxicj5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIDxicj48YSBocmVmPSJMSUNFTlNFLnR4dCIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJib2R5Ij4gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzPC9hPiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBpbmNsdWRpbmcgdGhlIGFkZGl0aW9uYWwgcGVybWlzc2lvbiBzZXQgZm9ydGggaW4gdGhlIHNvdXJjZSBjb2RlIGhlYWRlci4=’, ‘i’ => ‘1′, ‘b’ => ‘JmNvcHk7IDIwMDQtMjAwOCA8YSBocmVmPSJodHRwOi8vd3d3LnN1Z2FyY3JtLmNvbSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJjb3B5UmlnaHRMaW5rIj5TdWdhckNSTSBJbmMuPC9hPiBBbGwgUmlnaHRzIFJlc2VydmVkLg==’, ‘c’=>$case, ‘l’=>$level, ’s’=>2); $fs[] = array (’g’ => ‘aW5jbHVkZS9pbWFnZXMvcG93ZXJlZGJ5X3N1Z2FyY3JtLnBuZw==’, ‘m’ => ‘f3ad3d8f733c7326a8affbdc94a2e707′, ‘a’ => ”, ‘i’ => 0 ,’c'=>$case, ‘l’=>$level, ’s’=>1); $fs[] = array (’g’ => ‘aW5jbHVkZS9NVkMvVmlldy9TdWdhclZpZXcucGhw’, ‘m’ => ”, ‘a’ => ‘PGltZyBzdHlsZT0nbWFyZ2luLXRvcDogMnB4JyBib3JkZXI9JzAnIHdpZHRoPScxMDYnIGhlaWdodD0nMjMnIHNyYz0naW5jbHVkZS9pbWFnZXMvcG93ZXJlZGJ5X3N1Z2FyY3JtLnBuZycgYWx0PSdQb3dlcmVkIEJ5IFN1Z2FyQ1JNJz4=’, ‘i’ => ‘1′, ‘b’ => ‘PEEgaHJlZj0naHR0cDovL3d3dy5zdWdhcmZvcmdlLm9yZycgdGFyZ2V0PSdfYmxhbmsnPjxpbWcgc3R5bGU9J21hcmdpbi10b3A6IDJweCcgYm9yZGVyPScwJyB3aWR0aD0nMTA2JyBoZWlnaHQ9JzIzJyBzcmM9J2luY2×1ZGUvaW1hZ2VzL3Bvd2VyZWRieV9zdWdhcmNybS5wbmcnIGFsdD0nUG93ZXJlZCBCeSBTdWdhckNSTSc+PC9hPg==’, ‘c’=>$case, ‘l’=>$level, ’s’=>1); amsi($fs); } } “;
And Enjoy programming. Have a Good Day………………..
For web development in Sugarcrm contact
Tags: suagrcrm web development, sugarcrm logo error, sugarcrm logo replace, Web Design Company