PageRenderTime 43ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/mod/profile_manager/views/default/profile_manager/members/form.php

https://github.com/ezanol/jr
PHP | 283 lines | 228 code | 45 blank | 10 comment | 57 complexity | f2ae18b513a37d24224a7f541ac85082 MD5 | raw file
  1. <?php
  2. $ts = time();
  3. $token = generate_action_token($ts);
  4. $url_security = "?__elgg_ts=" . $ts . "&__elgg_token=" . $token;
  5. $default_search_criteria = "<tr><td colspan='2'>";
  6. $default_search_criteria .= elgg_echo("name") . elgg_view("input/text", array("internalname" => "user_data_partial_search_criteria[name]"));
  7. $default_search_criteria .= "</td></tr><tr>";
  8. $profile_type_count = elgg_get_entities_from_metadata("show_on_members", "yes", "object", CUSTOM_PROFILE_FIELDS_PROFILE_TYPE_SUBTYPE, null, null, null, null, null, true);
  9. if($profile_type_count > 0){
  10. $profile_types = elgg_get_entities_from_metadata("show_on_members", "yes", "object", CUSTOM_PROFILE_FIELDS_PROFILE_TYPE_SUBTYPE, null, $profile_type_count);
  11. foreach($profile_types as $profile_type){
  12. // label
  13. if(!empty($profile_type->metadata_label)){
  14. $title = $profile_type->metadata_label;
  15. } else {
  16. $translation_label = "profile:types:" . $profile_type->metadata_name;
  17. if($translation_label == elgg_echo($translation_label)){
  18. $title = $profile_type->metadata_name;
  19. } else {
  20. $title = elgg_echo("profile:types:" . $profile_type->metadata_name);
  21. }
  22. }
  23. $options[$title] = $profile_type->guid;
  24. }
  25. $default_search_criteria .= "<td>";
  26. $default_search_criteria .= elgg_echo("profile_manager:profile_types:list:title") . "<br />";
  27. $default_search_criteria .= elgg_view("input/checkboxes", array("internalname" => "profile_all_selector", "options" => array(elgg_echo("all")), "value" => elgg_echo("all") , "js" => "onchange='toggle_profile_type_selection($(this).parents(\"form\").attr(\"id\"));'"));
  28. $default_search_criteria .= elgg_view("input/checkboxes", array("internalname" => "meta_data_array_search_criteria[custom_profile_type]", "options" => $options));
  29. $default_search_criteria .= "</td>";
  30. } else {
  31. $default_search_criteria .= "<td></td>";
  32. }
  33. $default_search_criteria .= "<td>" . elgg_echo("profile_manager:members:searchform:sorting"). "<br />";
  34. $default_search_criteria .= elgg_view("input/radio", array("internalname" => "sorting", "value" => "newest", "options" => array(elgg_echo("alphabetic") => "alphabetic", elgg_echo("newest") => "newest", elgg_echo("popular") => "popular", elgg_echo("online") => "online")));
  35. $default_search_criteria .= "</td></tr>";
  36. $simple_search_criteria = "";
  37. $simple_search_fields_count = elgg_get_entities_from_metadata("simple_search", "yes", "object", CUSTOM_PROFILE_FIELDS_PROFILE_SUBTYPE, $CONFIG->site_guid, "", null, null,null, true);
  38. if($simple_search_fields_count > 0){
  39. $simple_search_fields = elgg_get_entities_from_metadata("simple_search", "yes", "object", CUSTOM_PROFILE_FIELDS_PROFILE_SUBTYPE, $CONFIG->site_guid, $simple_search_fields_count);
  40. foreach($simple_search_fields as $field){
  41. $ordered_simple_search_fields[$field->order] = $field;
  42. }
  43. ksort($ordered_simple_search_fields);
  44. foreach($ordered_simple_search_fields as $field){
  45. $metadata_name = $field->metadata_name;
  46. $metadata_type = $field->metadata_type;
  47. if($metadata_type == "longtext" || $metadata_type == "plaintext"){
  48. $metadata_type = "text";
  49. }
  50. // make title
  51. if(!empty($field->metadata_label)){
  52. $title = $field->metadata_label;
  53. } else {
  54. $trans_key = "profile:" . $metadata_name;
  55. if($trans_key != elgg_echo($trans_key)){
  56. $title = elgg_echo($trans_key);
  57. } else {
  58. $title = $metadata_name;
  59. }
  60. }
  61. $options = $field->metadata_options;
  62. // get options
  63. if(!empty($options)){
  64. if($metadata_type == "pulldown") {
  65. $options = "," . $options;
  66. }
  67. $options = explode(",", $options);
  68. } else {
  69. $options = "";
  70. }
  71. // type of search
  72. $search_type = get_search_type($metadata_type);
  73. // output field row
  74. $simple_search_criteria .= "<tr><td colspan='2'>";
  75. $simple_search_criteria .= $title . "<br />";
  76. if($search_type == "meta_data_between_search_criteria"){
  77. $simple_search_criteria .= elgg_echo("profile_manager:members:searchform:date:from") . " ";
  78. $simple_search_criteria .= elgg_view("input/" . $metadata_type, array(
  79. "internalname" => $search_type . "[" . $metadata_name . "][FROM]"));
  80. $simple_search_criteria .= " " . elgg_echo("profile_manager:members:searchform:date:to") . " ";
  81. $simple_search_criteria .= elgg_view("input/" . $metadata_type, array(
  82. "internalname" => $search_type . "[" . $metadata_name . "][TO]"));
  83. } else {
  84. $simple_search_criteria .= elgg_view("input/" . $metadata_type, array(
  85. "internalname" => $search_type . "[" . $metadata_name . "]",
  86. "options" => $options));
  87. }
  88. $simple_search_criteria .= "</td></tr>";
  89. }
  90. }
  91. $advanced_search_criteria = "";
  92. $advanced_search_fields_count = elgg_get_entities_from_metadata("advanced_search", "yes", "object", CUSTOM_PROFILE_FIELDS_PROFILE_SUBTYPE, $CONFIG->site_guid, "", null, null,null, true);
  93. if($advanced_search_fields_count > 0){
  94. $advanced_search_fields = elgg_get_entities_from_metadata("advanced_search", "yes", "object", CUSTOM_PROFILE_FIELDS_PROFILE_SUBTYPE, $CONFIG->site_guid, $advanced_search_fields_count);
  95. foreach($advanced_search_fields as $field){
  96. $ordered_advanced_search_fields[$field->order] = $field;
  97. }
  98. ksort($ordered_advanced_search_fields);
  99. foreach($ordered_advanced_search_fields as $field){
  100. $metadata_name = $field->metadata_name;
  101. $metadata_type = $field->metadata_type;
  102. if($metadata_type == "longtext" || $metadata_type == "plaintext"){
  103. $metadata_type = "text";
  104. }
  105. // make title
  106. if(!empty($field->metadata_label)){
  107. $title = $field->metadata_label;
  108. } else {
  109. $trans_key = "profile:" . $metadata_name;
  110. if($trans_key != elgg_echo($trans_key)){
  111. $title = elgg_echo($trans_key);
  112. } else {
  113. $title = $metadata_name;
  114. }
  115. }
  116. $options = $field->metadata_options;
  117. // get options
  118. if(!empty($options)){
  119. if($metadata_type == "pulldown") {
  120. $options = "," . $options;
  121. }
  122. $options = explode(",", $options);
  123. } else {
  124. $options = "";
  125. }
  126. // type of search
  127. $search_type = get_search_type($metadata_type);
  128. // output field row
  129. $advanced_search_criteria .= "<tr><td colspan='2'>";
  130. $advanced_search_criteria .= $title . "<br />";
  131. if($search_type == "meta_data_between_search_criteria"){
  132. $advanced_search_criteria .= elgg_echo("profile_manager:members:searchform:date:from") . " ";
  133. $advanced_search_criteria .= elgg_view("input/" . $metadata_type, array(
  134. "internalname" => $search_type . "[" . $metadata_name . "][FROM]"));
  135. $advanced_search_criteria .= " " . elgg_echo("profile_manager:members:searchform:date:to") . " ";
  136. $advanced_search_criteria .= elgg_view("input/" . $metadata_type, array(
  137. "internalname" => $search_type . "[" . $metadata_name . "][TO]"));
  138. } else {
  139. $advanced_search_criteria .= elgg_view("input/" . $metadata_type, array(
  140. "internalname" => $search_type . "[" . $metadata_name . "]",
  141. "options" => $options));
  142. }
  143. $advanced_search_criteria .= "</td></tr>";
  144. }
  145. }
  146. function get_search_type($metadata_type){
  147. $type = "meta_data_partial_search_criteria";
  148. if($metadata_type == "multiselect"){
  149. $type = "meta_data_array_search_criteria";
  150. } elseif($metadata_type == "pulldown" || $metadata_type == "radio") {
  151. $type = "meta_data_exact_search_criteria";
  152. } elseif($metadata_type == "datepicker" || $metadata_type == "calendar"){
  153. $type = "meta_data_between_search_criteria";
  154. }
  155. return $type;
  156. }
  157. ?>
  158. <style type="text/css">
  159. .hasDatepick {
  160. width: 100px !important;
  161. }
  162. </style>
  163. <script type="text/javascript">
  164. var formdata;
  165. function perform_members_search(formid){
  166. $("body").addClass("profile_manager_members_wait");
  167. formdata = $("#" + formid).serialize();
  168. $.post("<?php echo $vars['url'];?>action/profile_manager/members/search<?php echo $url_security;?>", formdata, function(data){
  169. $("#members_search_result").html(data);
  170. $("body").removeClass("profile_manager_members_wait");
  171. });
  172. }
  173. function navigate_members_search(offset){
  174. $("body").addClass("profile_manager_members_wait");
  175. $.post("<?php echo $vars['url'];?>action/profile_manager/members/search<?php echo $url_security;?>&offset=" + offset, formdata, function(data){
  176. $("#members_search_result").html(data);
  177. $("body").removeClass("profile_manager_members_wait");
  178. });
  179. }
  180. function toggle_profile_type_selection(formid){
  181. var status = "disabled";
  182. if(formid != undefined){
  183. formid = "#" + formid + " ";
  184. } else {
  185. var formid = "";
  186. }
  187. if(formid != ""){
  188. if($(formid + "input[name='profile_all_selector[]']").attr("checked") == false){
  189. status = "";
  190. }
  191. }
  192. $(formid + "input[name='meta_data_array_search_criteria[custom_profile_type][]']").attr("disabled", status);
  193. }
  194. $(document).ready(function(){
  195. toggle_profile_type_selection();
  196. perform_members_search("simplesearch");
  197. });
  198. </script>
  199. <?php echo elgg_view_title(elgg_echo("profile_manager:members:searchform:title"));?>
  200. <div id='profile_manager_members_search_form' class='contentWrapper'>
  201. <h3 class='settings' onclick='$("#simplesearch").toggle();$("#advancedsearch").toggle();'><?php echo elgg_echo("profile_manager:members:searchform:simple:title");?></h3>
  202. <form id="simplesearch" action="javascript:perform_members_search('simplesearch');" type="post">
  203. <table width=100%>
  204. <?php
  205. echo $default_search_criteria;
  206. echo $simple_search_criteria;
  207. ?>
  208. </table>
  209. <?php
  210. echo elgg_view("input/submit", array("value" => elgg_echo("search")));
  211. echo " ";
  212. echo elgg_view("input/reset", array("value" => elgg_echo("reset")));
  213. ?>
  214. </form>
  215. <?php
  216. // advanced search
  217. if(!empty($advanced_search_criteria)){
  218. ?>
  219. <h3 class='settings' onclick='$("#simplesearch").toggle();$("#advancedsearch").toggle();'><?php echo elgg_echo("profile_manager:members:searchform:advanced:title");?></h3>
  220. <form id="advancedsearch" style="display:none" action="javascript:perform_members_search('advancedsearch');" type="post">
  221. <table width=100%>
  222. <?php
  223. echo $default_search_criteria;
  224. echo $advanced_search_criteria;
  225. ?>
  226. </table>
  227. <?php
  228. echo elgg_view("input/submit", array("value" => elgg_echo("search")));
  229. echo " ";
  230. echo elgg_view("input/reset", array("value" => elgg_echo("reset")));
  231. ?>
  232. </form>
  233. <?php
  234. }
  235. ?>
  236. </div>
  237. <div id="members_search_result"></div>
  238. <div class="clearfloat"></div>