PageRenderTime 207ms CodeModel.GetById 46ms RepoModel.GetById 15ms app.codeStats 0ms

/modules/Reports/AdvancedFilter.php

https://bitbucket.org/yousef_fadila/vtiger
PHP | 195 lines | 155 code | 18 blank | 22 comment | 30 complexity | d0f809eb6dc5691e1c4e9b83e102c77c MD5 | raw file
Possible License(s): LGPL-2.1, GPL-2.0
  1. <?php
  2. /*********************************************************************************
  3. ** The contents of this file are subject to the vtiger CRM Public License Version 1.0
  4. * ("License"); You may not use this file except in compliance with the License
  5. * The Original Code is: vtiger CRM Open Source
  6. * The Initial Developer of the Original Code is vtiger.
  7. * Portions created by vtiger are Copyright (C) vtiger.
  8. * All Rights Reserved.
  9. *
  10. ********************************************************************************/
  11. require_once('include/Zend/Json.php');
  12. if(isset($_REQUEST["record"]) && $_REQUEST['record']!='')
  13. {
  14. $reportid = vtlib_purify($_REQUEST["record"]);
  15. $oReport = new Reports($reportid);
  16. $oReport->getAdvancedFilterList($reportid);
  17. $oRep = new Reports();
  18. $secondarymodule = '';
  19. $secondarymodules =Array();
  20. if(!empty($oRep->related_modules[$oReport->primodule])) {
  21. foreach($oRep->related_modules[$oReport->primodule] as $key=>$value){
  22. if(isset($_REQUEST["secondarymodule_".$value]))$secondarymodules []= $_REQUEST["secondarymodule_".$value];
  23. }
  24. }
  25. $secondarymodule = implode(":",$secondarymodules);
  26. if($secondarymodule!='')
  27. $oReport->secmodule = $secondarymodule;
  28. $COLUMNS_BLOCK = getPrimaryColumns_AdvFilterHTML($oReport->primodule);
  29. $COLUMNS_BLOCK .= getSecondaryColumns_AdvFilterHTML($oReport->secmodule);
  30. $report_std_filter->assign("COLUMNS_BLOCK", $COLUMNS_BLOCK);
  31. $FILTER_OPTION = Reports::getAdvCriteriaHTML();
  32. $report_std_filter->assign("FOPTION",$FILTER_OPTION);
  33. $rel_fields = getRelatedFieldColumns();
  34. $report_std_filter->assign("REL_FIELDS",Zend_Json::encode($rel_fields));
  35. $report_std_filter->assign("CRITERIA_GROUPS",$oReport->advft_criteria);
  36. } else {
  37. $primarymodule = $_REQUEST["primarymodule"];
  38. $COLUMNS_BLOCK = getPrimaryColumns_AdvFilterHTML($primarymodule);
  39. $ogReport = new Reports();
  40. if(!empty($ogReport->related_modules[$primarymodule])) {
  41. foreach($ogReport->related_modules[$primarymodule] as $key=>$value){
  42. //$BLOCK1 .= getSecondaryColumnsHTML($_REQUEST["secondarymodule_".$value]);
  43. $COLUMNS_BLOCK .= getSecondaryColumns_AdvFilterHTML($_REQUEST["secondarymodule_".$value]);
  44. }
  45. }
  46. $report_std_filter->assign("COLUMNS_BLOCK", $COLUMNS_BLOCK);
  47. $rel_fields = getRelatedFieldColumns();
  48. $report_std_filter->assign("REL_FIELDS",Zend_Json::encode($rel_fields));
  49. }
  50. /** Function to get primary columns for an advanced filter
  51. * This function accepts The module as an argument
  52. * This generate columns of the primary modules for the advanced filter
  53. * It returns a HTML string of combo values
  54. */
  55. function getPrimaryColumns_AdvFilterHTML($module,$selected="")
  56. {
  57. global $ogReport, $app_list_strings, $current_language;
  58. $mod_strings = return_module_language($current_language,$module);
  59. $block_listed = array();
  60. foreach($ogReport->module_list[$module] as $key=>$value)
  61. {
  62. if(isset($ogReport->pri_module_columnslist[$module][$value]) && !$block_listed[$value])
  63. {
  64. $block_listed[$value] = true;
  65. $shtml .= "<optgroup label=\"".$app_list_strings['moduleList'][$module]." ".getTranslatedString($value)."\" class=\"select\" style=\"border:none\">";
  66. foreach($ogReport->pri_module_columnslist[$module][$value] as $field=>$fieldlabel)
  67. {
  68. if(isset($mod_strings[$fieldlabel]))
  69. {
  70. //fix for ticket 5191
  71. $selected = decode_html($selected);
  72. $field = decode_html($field);
  73. //fix ends
  74. if($selected == $field)
  75. {
  76. $shtml .= "<option selected value=\"".$field."\">".$mod_strings[$fieldlabel]."</option>";
  77. }else
  78. {
  79. $shtml .= "<option value=\"".$field."\">".$mod_strings[$fieldlabel]."</option>";
  80. }
  81. }else
  82. {
  83. if($selected == $field)
  84. {
  85. $shtml .= "<option selected value=\"".$field."\">".$fieldlabel."</option>";
  86. }else
  87. {
  88. $shtml .= "<option value=\"".$field."\">".$fieldlabel."</option>";
  89. }
  90. }
  91. }
  92. }
  93. }
  94. return $shtml;
  95. }
  96. /** Function to get Secondary columns for an advanced filter
  97. * This function accepts The module as an argument
  98. * This generate columns of the secondary module for the advanced filter
  99. * It returns a HTML string of combo values
  100. */
  101. function getSecondaryColumns_AdvFilterHTML($module,$selected="")
  102. {
  103. global $ogReport;
  104. global $app_list_strings;
  105. global $current_language;
  106. if($module != "")
  107. {
  108. $secmodule = explode(":",$module);
  109. for($i=0;$i < count($secmodule) ;$i++)
  110. {
  111. $mod_strings = return_module_language($current_language,$secmodule[$i]);
  112. if(vtlib_isModuleActive($secmodule[$i])){
  113. $block_listed = array();
  114. foreach($ogReport->module_list[$secmodule[$i]] as $key=>$value)
  115. {
  116. if(isset($ogReport->sec_module_columnslist[$secmodule[$i]][$value]) && !$block_listed[$value])
  117. {
  118. $block_listed[$value] = true;
  119. $shtml .= "<optgroup label=\"".$app_list_strings['moduleList'][$secmodule[$i]]." ".getTranslatedString($value)."\" class=\"select\" style=\"border:none\">";
  120. foreach($ogReport->sec_module_columnslist[$secmodule[$i]][$value] as $field=>$fieldlabel)
  121. {
  122. if(isset($mod_strings[$fieldlabel]))
  123. {
  124. if($selected == $field)
  125. {
  126. $shtml .= "<option selected value=\"".$field."\">".$mod_strings[$fieldlabel]."</option>";
  127. }else
  128. {
  129. $shtml .= "<option value=\"".$field."\">".$mod_strings[$fieldlabel]."</option>";
  130. }
  131. }else
  132. {
  133. if($selected == $field)
  134. {
  135. $shtml .= "<option selected value=\"".$field."\">".$fieldlabel."</option>";
  136. }else
  137. {
  138. $shtml .= "<option value=\"".$field."\">".$fieldlabel."</option>";
  139. }
  140. }
  141. }
  142. }
  143. }
  144. }
  145. }
  146. }
  147. return $shtml;
  148. }
  149. function getRelatedColumns($selected=""){
  150. global $ogReport;
  151. $rel_fields = $ogReport->adv_rel_fields;
  152. if($selected!='All'){
  153. $selected = split(":",$selected);
  154. }
  155. $related_fields = array();
  156. foreach($rel_fields as $i=>$index){
  157. $shtml='';
  158. foreach($index as $key=>$value){
  159. $fieldarray = split("::",$value);
  160. $shtml .= "<option value=\"".$fieldarray[0]."\">".$fieldarray[1]."</option>";
  161. }
  162. $related_fields[$i] = $shtml;
  163. }
  164. if(!empty($selected) && $selected[4]!='')
  165. return $related_fields[$selected[4]];
  166. else if($selected=='All'){
  167. return $related_fields;
  168. }
  169. else
  170. return ;
  171. }
  172. function getRelatedFieldColumns($selected=""){
  173. global $ogReport;
  174. $rel_fields = $ogReport->adv_rel_fields;
  175. return $rel_fields;
  176. }
  177. ?>