mfn

Php Source Code Facebook

mfn
Jan 1st, 2014
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. A hacker found a way to expose the PHP source code on www.facebook.com.
  2.  
  3. The two files are index.php (the homepage) and search.php (the search page)
  4.  
  5. This are the source code of it.
  6.  
  7.  
  8.  
  9. * INDEX (index.php) :
  10. ----------------------
  11.  
  12.  
  13. <? php
  14.  
  15. include_once $_SERVER['PHP_ROOT'].'/html/init.php';
  16. include_once $_SERVER['PHP_ROOT'].'/lib/home.php';
  17. include_once $_SERVER['PHP_ROOT'].'/lib/requests.php';
  18. include_once $_SERVER['PHP_ROOT'].'/lib/feed/newsfeed.php';
  19. include_once $_SERVER['PHP_ROOT'].'/lib/poke.php';
  20. include_once $_SERVER['PHP_ROOT'].'/lib/share.php';
  21. include_once $_SERVER['PHP_ROOT'].'/lib/orientation.php';
  22. include_once $_SERVER['PHP_ROOT'].'/lib/feed/newsfeed.php';
  23. include_once $_SERVER['PHP_ROOT'].'/lib/mobile/register.php';
  24. include_once $_SERVER['PHP_ROOT'].'/lib/forms_lib.php';
  25. include_once $_SERVER['PHP_ROOT'].'/lib/contact_importer/contact_importer.php';
  26. include_once $_SERVER['PHP_ROOT'].'/lib/feed/util.php';
  27. include_once $_SERVER['PHP_ROOT'].'/lib/hiding_prefs.php';
  28. include_once $_SERVER['PHP_ROOT'].'/lib/abtesting.php';
  29. include_once $_SERVER['PHP_ROOT'].'/lib/friends.php';
  30. include_once $_SERVER['PHP_ROOT'].'/lib/statusupdates.php';
  31.  
  32. // lib/display/feed.php has to be declared here for scope issues.
  33. // This keeps display/feed.php cleaner and easier to understand.
  34. include_once $_SERVER['PHP_ROOT'].'/lib/display/feed.php';
  35. include_once $_SERVER['PHP_ROOT'].'/lib/monetization_box.php';
  36.  
  37. // require login
  38. $user = require_login();
  39. print_time('require_login');
  40. param_request(array('react' = > $PARAM_EXISTS));
  41.  
  42. // Check and fix broken emails
  43. // LN - disabling due to excessive can_see dirties and sets when enabled.
  44. //check_and_fix_broken_emails($user);
  45. // migrate AIM screenname from profile to screenname table if needed
  46. migrate_screenname($user);
  47.  
  48. // homepage announcement variables
  49. $HIDE_ANNOUNCEMENT_BIT = get_site_variable('HIDE_ANNOUNCEMENT_BIT');
  50. $HIDE_INTRO_BITMASK = get_site_variable('HIDE_INTRO_BITMASK');
  51.  
  52. // redirects
  53. if (is_sponsor_user()) {
  54. redirect('bizhome.php', 'www');
  55. }
  56.  
  57. include_once $_SERVER['PHP_ROOT'].'/lib/mesg.php';
  58. include_once $_SERVER['PHP_ROOT'].'/lib/invitetool.php';
  59. include_once $_SERVER['PHP_ROOT'].'/lib/grammar.php';
  60. include_once $_SERVER['PHP_ROOT'].'/lib/securityq.php';
  61. include_once $_SERVER['PHP_ROOT'].'/lib/events.php';
  62. include_once $_SERVER['PHP_ROOT'].'/lib/rooster/stories.php';
  63.  
  64. // todo: password confirmation redirects here (from html/reset.php),
  65. // do we want a confirmation message?
  66. param_get_slashed(array(
  67. 'feeduser' = > $PARAM_INT, //debug: gets feed for user here
  68. 'err' = > $PARAM_STRING, // returning from a failed entry on an orientation form
  69. 'error' = > $PARAM_STRING, // an error can also be here because the profile photo upload code is crazy
  70. 'ret' = > $PARAM_INT, 'success' = > $PARAM_INT, // successful profile picture upload
  71. 'jn' = > $PARAM_INT, // joined a network for orientation
  72. 'np' = > $PARAM_INT, // network pending (for work/address network)
  73. 'me' = > $PARAM_STRING, // mobile error
  74. 'mr' = > $PARAM_EXISTS, // force mobile reg view
  75. 'mobile' = > $PARAM_EXISTS, // mobile confirmation code sent
  76. 'jif' = > $PARAM_EXISTS, // just imported friends
  77. 'ied' = > $PARAM_STRING, // import email domain
  78. 'o' = > $PARAM_EXISTS, // first time orientation, passed on confirm
  79. 'verified' = > $PARAM_EXISTS)); // verified mobile phone
  80.  
  81. param_post(array(
  82. 'leave_orientation' = > $PARAM_EXISTS,
  83. 'show_orientation' = > $PARAM_INT, // show an orientation step
  84. 'hide_orientation' = > $PARAM_INT)); // skip an orientation step
  85.  
  86. // homepage actions
  87. if ($req_react && validate_expiring_hash($req_react, $GLOBALS['url_md5key'])) {
  88. $show_reactivated_message = true;
  89. } else {
  90. $show_reactivated_message = false;
  91. }
  92. tpl_set('show_reactivated_message', $show_reactivated_message);
  93.  
  94.  
  95. // upcoming events
  96. events_check_future_events($user); // make sure big tunas haven't moved around
  97. $upcoming_events = events_get_imminent_for_user($user);
  98.  
  99. // this is all stuff that can be fetched together!
  100. $upcoming_events_short = array();
  101. obj_multiget_short(array_keys($upcoming_events), true, $upcoming_events_short);
  102. $new_pokes = 0;
  103.  
  104. //only get the next N pokes for display
  105. //where N is set in the dbget to avoid caching issues
  106. $poke_stats = get_num_pokes($user);
  107. get_next_pokes($user, true, $new_pokes);
  108. $poke_count = $poke_stats['unseen'];
  109.  
  110. $targeted_data = array();
  111. home_get_cache_targeted_data($user, true, $targeted_data);
  112. $announcement_data = array();
  113. home_get_cache_announcement_data($user, true, $announcement_data);
  114. $orientation = 0;
  115. orientation_get_status($user, true, $orientation);
  116. $short_profile = array();
  117. profile_get_short($user, true, $short_profile);
  118.  
  119. // pure priming stuff
  120. privacy_get_network_settings($user, true);
  121. $presence = array();
  122. mobile_get_presence_data($user, true, $presence);
  123. feedback_get_event_weights($user, true);
  124.  
  125. // Determine if we want to display the feed intro message
  126. $intro_settings = 0;
  127. user_get_hide_intro_bitmask($user, true, $intro_settings);
  128. $user_friend_finder = true;
  129. contact_importer_get_used_friend_finder($user, true, $used_friend_finder);
  130. $all_requests = requests_get_cache_data($user);
  131.  
  132. // FIXME?: is it sub-optimal to call this both in requests_get_cache_data and here?
  133. $friends_status = statusupdates_get_recent($user, null, 3);
  134. memcache_dispatch(); // populate cache data
  135.  
  136. // Merman's Admin profile always links to the Merman's home
  137. if (user_has_obj_attached($user)) {
  138. redirect('mhome.php', 'www');
  139. }
  140.  
  141. if (is_array($upcoming_events)) {
  142. foreach($upcoming_events as $event_id = > $data) {
  143. $upcoming_events[$event_id]['name'] = txt_set($upcoming_events_short[$event_id]['name']);
  144. }
  145. }
  146.  
  147. tpl_set('upcoming_events', $upcoming_events);
  148.  
  149. // disabled account actions
  150. $disabled_warning = ((IS_DEV_SITE || IS_QA_SITE) && is_disabled_user($user));
  151. tpl_set('disabled_warning', $disabled_warning);
  152.  
  153. // new pokes (no more messages here, they are in the top nav!)
  154. if (!user_is_guest($user)) {
  155. tpl_set('poke_count', $poke_count);
  156. tpl_set('pokes', $new_pokes);
  157. }
  158.  
  159. // get announcement computations
  160. tpl_set('targeted_data', $targeted_data);
  161. tpl_set('announcement_data', $announcement_data);
  162.  
  163.  
  164. // birthday notifications
  165. tpl_set('birthdays', $birthdays = user_get_birthday_notifications($user, $short_profile));
  166. tpl_set('show_birthdays', $show_birthdays = (count($birthdays) || !$orientation));
  167.  
  168. // user info
  169. tpl_set('first_name', user_get_first_name(txt_set($short_profile['id'])));
  170. tpl_set('user', $user);
  171.  
  172. // decide if there are now any requests to show
  173. $show_requests = false;
  174. foreach($all_requests as $request_category) {
  175. if ($request_category) {
  176. $show_requests = true;
  177. break;
  178. }
  179. }
  180. tpl_set('all_requests', $show_requests ? $all_requests : null);
  181.  
  182. $permissions = privacy_get_reduced_network_permissions($user, $user);
  183.  
  184. // status
  185. $user_info = array('user' = > $user, 'firstname' = > user_get_first_name($user), 'see_all' = > '/statusupdates/?ref=hp', 'profile_pic' = > make_profile_image_src_direct($user, 'thumb'), 'square_pic' = > make_profile_image_src_direct($user, 'square'));
  186.  
  187. if (!empty($presence) && $presence['status_time'] > (time() - 60 * 60 * 24 * 7)) {
  188. $status = array('message' = > txt_set($presence['status']), 'time' = > $presence['status_time'], 'source' = > $presence['status_source']);
  189. } else {
  190. $status = array('message' = > null, 'time' = > null, 'source' = > null);
  191. }
  192. tpl_set('user_info', $user_info);
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. tpl_set('show_status', $show_status = !$orientation);
  203. tpl_set('status', $status);
  204. tpl_set('status_custom', $status_custom = mobile_get_status_custom($user));
  205. tpl_set('friends_status', $friends_status);
  206.  
  207. // orientation
  208. if ($orientation) {
  209. if ($post_leave_orientation) {
  210. orientation_update_status($user, $orientation, 2);
  211. notification_notify_exit_orientation($user);
  212. dirty_user($user);
  213. redirect('home.php');
  214. } else if (orientation_eligible_exit(array('uid' = > $user)) == 2) {
  215. orientation_update_status($user, $orientation, 1);
  216. notification_notify_exit_orientation($user);
  217. dirty_user($user);
  218. redirect('home.php');
  219. }
  220. }
  221.  
  222. // timezone - outside of stealth, update user's timezone if necessary
  223. $set_time = !user_is_alpha($user, 'stealth');
  224. tpl_set('timezone_autoset', $set_time);
  225. if ($set_time) {
  226. $daylight_savings = get_site_variable('DAYLIGHT_SAVINGS_ON');
  227. tpl_set('timezone', $short_profile['timezone'] - ($daylight_savings ? 4 : 5));
  228. }
  229.  
  230. // set next step if we can
  231. if (!$orientation) {
  232. user_set_next_step($user, $short_profile);
  233. }
  234.  
  235. // note: don't make this an else with the above statement, because then no news feed stories will be fetched if they're exiting orientation
  236. if ($orientation) {
  237. extract(orientation_get_const());
  238.  
  239. require_js('js/dynamic_dialog.js');
  240. require_js('js/suggest.js');
  241. require_js('js/typeahead_ns.js');
  242. require_js('js/suggest.js');
  243. require_js('js/editregion.js');
  244. require_js('js/orientation.js');
  245. require_css('css/typeahead.css');
  246. require_css('css/editor.css');
  247.  
  248. if ($post_hide_orientation && $post_hide_orientation <= $ORIENTATION_MAX) {
  249. $orientation['orientation_bitmask'] |= ($post_hide_orientation * $ORIENTATION_SKIPPED_MODIFIER);
  250. orientation_update_status($user, $orientation);
  251. } else if ($post_show_orientation && $post_show_orientation <= $ORIENTATION_MAX) {
  252. $orientation['orientation_bitmask'] &= ~ ($post_show_orientation * $ORIENTATION_SKIPPED_MODIFIER);
  253. orientation_update_status($user, $orientation);
  254. }
  255.  
  256. $stories = orientation_get_stories($user, $orientation);
  257. switch ($get_err) {
  258. case $ORIENTATION_ERR_COLLEGE:
  259. $temp = array(); // the affil_retval_msg needs some parameters won't be used
  260. $stories[$ORIENTATION_NETWORK]['failed_college'] = affil_retval_msg($get_ret, $temp, $temp);
  261. break;
  262. case $ORIENTATION_ERR_CORP:
  263. $temp = array();
  264. // We special case the network not recognized error here, because affil_retval_msg is retarded.
  265. $stories[$ORIENTATION_NETWORK]['failed_corp'] = ($get_ret == 70) ? 'The email you entered did not match any of our supported networks. '.'Click here to see our supported list. '.'Go here to suggest your network for the future.' : affil_retval_msg($get_ret, $temp, $temp);
  266. break;
  267. }
  268.  
  269. // photo upload error
  270. if ($get_error) {
  271. $stories[$ORIENTATION_ORDER[$ORIENTATION_PROFILE]]['upload_error'] = pic_get_error_text($get_error);
  272. }
  273. // photo upload success
  274. else if ($get_success == 1) {
  275. $stories[$ORIENTATION_ORDER[$ORIENTATION_PROFILE]]['uploaded_pic'] = true;
  276. // join network success
  277. } else if ($get_jn) {
  278. $stories[$ORIENTATION_ORDER[$ORIENTATION_NETWORK]]['joined'] = array('id' = > $get_jn, 'name' = > network_get_name($get_jn));
  279. // network join pending
  280. } else if ($get_np) {
  281.  
  282. $stories[$ORIENTATION_ORDER[$ORIENTATION_NETWORK]]['join_pending'] = array('id' = > $get_np, 'email' = > get_affil_email_conf($user, $get_np), 'network' = > network_get_name($get_np));
  283. // just imported friend confirmation
  284. } else if ($get_jif) {
  285. $stories[$ORIENTATION_ORDER[$ORIENTATION_NETWORK]]['just_imported_friends'] = true;
  286. $stories[$ORIENTATION_ORDER[$ORIENTATION_NETWORK]]['domain'] = $get_ied;
  287. }
  288.  
  289. // Mobile web API params
  290. if ($get_mobile) {
  291. $stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['sent_code'] = true;
  292. $stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['view'] = 'confirm';
  293. }
  294. if ($get_verified) {
  295. $stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['verified'] = true;
  296. }
  297. if ($get_me) {
  298. $stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['error'] = $get_me;
  299. }
  300. if ($get_mr) {
  301. $stories[$ORIENTATION_ORDER[$ORIENTATION_MOBILE]]['view'] = 'register';
  302. }
  303.  
  304. if (orientation_eligible_exit($orientation)) {
  305. tpl_set('orientation_show_exit', true);
  306. }
  307. tpl_set('orientation_stories', $stories);
  308.  
  309. //if in orientation, we hide all feed intros (all 1's in bitmask)
  310. $intro_settings = -1;
  311.  
  312. }
  313. tpl_set('orientation', $orientation);
  314.  
  315. // Rooster Stories
  316. if (!$orientation && ((get_site_variable('ROOSTER_ENABLED') == 2) || (get_site_variable('ROOSTER_DEV_ENABLED') == 2))) {
  317. $rooster_story_count = get_site_variable('ROOSTER_STORY_COUNT');
  318. if (!isset($rooster_story_count)) {
  319. // Set default if something is wrong with the sitevar
  320. $rooster_story_count = 2;
  321. }
  322. $rooster_stories = rooster_get_stories($user, $rooster_story_count, $log_omissions = true);
  323. if (!empty($rooster_stories) && !empty($rooster_stories['stories'])) {
  324. // Do page-view level logging here
  325. foreach($rooster_stories['stories'] as $story) {
  326. rooster_log_action($user, $story, ROOSTER_LOG_ACTION_VIEW);
  327. }
  328. tpl_set('rooster_stories', $rooster_stories);
  329. }
  330. }
  331.  
  332. // set the variables for the home announcement code
  333. $hide_announcement_tpl = ($intro_settings | $HIDE_INTRO_BITMASK) & $HIDE_ANNOUNCEMENT_BIT;
  334. // if on qa/dev site, special rules
  335. $HIDE_INTRO_ON_DEV = get_site_variable('HIDE_INTRO_ON_DEV');
  336. if ((IS_QA_SITE || IS_DEV_SITE) && !$HIDE_INTRO_ON_DEV) {
  337. $hide_announcement_tpl = 0;
  338. }
  339.  
  340. tpl_set('hide_announcement', $hide_announcement_tpl);
  341. if ($is_candidate = is_candidate_user($user)) {
  342. tpl_set('hide_announcement', false);
  343. }
  344. $home_announcement_tpl = !$hide_announcement_tpl || $is_candidate ? home_get_announcement_info($user) : 0;
  345. tpl_set('home_announcement', $home_announcement_tpl);
  346. tpl_set('hide_announcement_bit', $HIDE_ANNOUNCEMENT_BIT);
  347.  
  348. $show_friend_finder = !$orientation && contact_importer_enabled($user) && !user_get_hiding_pref($user, 'home_friend_finder');
  349. tpl_set('show_friend_finder', $show_friend_finder);
  350. if ($show_friend_finder && (user_get_friend_count($user) > 20)) {
  351. tpl_set('friend_finder_hide_options', array('text' = > 'close', 'onclick' = > "return clearFriendFinder()"));
  352. } else {
  353. tpl_set('friend_finder_hide_options', null);
  354. }
  355.  
  356. $account_info = user_get_account_info($user);
  357. $account_create_time = $account_info['time'];
  358.  
  359. tpl_set('show_friend_finder_top', !$used_friend_finder);
  360.  
  361. tpl_set('user', $user);
  362.  
  363.  
  364. // MONETIZATION BOX
  365. $minimize_monetization_box = user_get_hiding_pref($user, 'home_monetization');
  366. $show_monetization_box = (!$orientation && get_site_variable('HOMEPAGE_MONETIZATION_BOX'));
  367. tpl_set('show_monetization_box', $show_monetization_box);
  368. tpl_set('minimize_monetization_box', $minimize_monetization_box);
  369.  
  370. if ($show_monetization_box) {
  371. $monetization_box_data = monetization_box_user_get_data($user);
  372. txt_set('monetization_box_data', $monetization_box_data);
  373. }
  374.  
  375.  
  376. // ORIENTATION
  377. if ($orientation) {
  378. $network_ids = id_get_networks($user);
  379. $network_names = multiget_network_name($network_ids);
  380. $in_corp_network = in_array($GLOBALS['TYPE_CORP'], array_map('extract_network_type', $network_ids));
  381. $show_corp_search = $in_corp_network || get_age(user_get_basic_info_attr($user, 'birthday')) >= 21;
  382. $pending_hs = is_hs_pending_user($user);
  383. $hs_id = null;
  384. $hs_name = null;
  385. if ($pending_hs) {
  386. foreach(id_get_pending_networks($user) as $network) {
  387. if (extract_network_type($network['network_key']) == $GLOBALS['TYPE_HS']) {
  388. $hs_id = $network['network_key'];
  389. $hs_name = network_get_name($hs_id);
  390. break;
  391. }
  392. }
  393. }
  394. //$orientation_people = orientation_get_friend_and_inviter_ids($user);
  395. $orientation_people = array('friends' = > user_get_all_friends($user), 'pending' = > array_keys(user_get_friend_requests($user)), 'inviters' = > array(), // wc: don't show inviters for now
  396. );
  397. $orientation_info = array_merge($orientation_people, array('network_names' = > $network_names, 'show_corp_search' = > $show_corp_search, 'pending_hs' = > array('hs_id' = > $hs_id, 'hs_name' = > $hs_name), 'user' = > $user, ));
  398. tpl_set('orientation_info', $orientation_info);
  399.  
  400. tpl_set('simple_orientation_first_login', $get_o); // unused right now
  401. }
  402.  
  403.  
  404. // Roughly determine page length for ads
  405. // first, try page length using right-hand panel
  406. $ads_page_length_data = 3 + // 3 for profile pic + next step
  407. ($show_friend_finder ? 1 : 0) + ($show_status ? ($status_custom ? count($friends_status) : 0) : 0) + ($show_monetization_box ? 1 : 0) + ($show_birthdays ? count($birthdays) : 0) + count($new_pokes);
  408.  
  409. // page length using feed stories
  410. if ($orientation) {
  411. $ads_page_length_data = max($ads_page_length_data, count($stories) * 5);
  412. }
  413. tpl_set('ads_page_length_data', $ads_page_length_data);
  414.  
  415. $feed_stories = null;
  416. if (!$orientation) { // if they're not in orientation they get other cool stuff
  417. // ad_insert: the ad type to try to insert for the user
  418. // (0 if we don't want to try an insert)
  419. $ad_insert = get_site_variable('FEED_ADS_ENABLE_INSERTS');
  420.  
  421. $feed_off = false;
  422.  
  423. if (check_super($user) && $get_feeduser) {
  424. $feed_stories = user_get_displayable_stories($get_feeduser, 0, null, $ad_insert);
  425. } else if (can_see($user, $user, 'feed')) {
  426. $feed_stories = user_get_displayable_stories($user, 0, null, $ad_insert);
  427. } else {
  428. $feed_off = true;
  429. }
  430.  
  431. // Friend's Feed Selector - Requires dev.php constant
  432. if (is_friendfeed_user($user)) {
  433. $friendfeed = array();
  434. $friendfeed['feeduser'] = $get_feeduser;
  435. $friendfeed['feeduser_name'] = user_get_name($get_feeduser);
  436. $friendfeed['friends'] = user_get_all_friends($user);
  437. tpl_set('friendfeed', $friendfeed);
  438. }
  439.  
  440. $feed_stories = feed_adjust_timezone($user, $feed_stories);
  441.  
  442. tpl_set('feed_off', $feed_off ? redirect('privacy.php?view=feeds', null, false) : false);
  443. }
  444. tpl_set('feed_stories', $feed_stories);
  445.  
  446. render_template($_SERVER['PHP_ROOT'].'/html/home.phpt');
  447.  
  448.  
  449.  
  450.  
  451. * SEARCH (search.php) :
  452. -------------------------
  453.  
  454.  
  455. <?php
  456. /*
  457. * @author Mark Slee
  458. *
  459. * @package ubersearch
  460. */
  461.  
  462. ini_set('memory_limit', '100M'); // to be safe we are increasing the memory limit for search
  463.  
  464. include_once $_SERVER['PHP_ROOT'].'/html/init.php'; // final lib include
  465. include_once $_SERVER['PHP_ROOT'].'/lib/s.php';
  466. include_once $_SERVER['PHP_ROOT'].'/lib/browse.php';
  467. include_once $_SERVER['PHP_ROOT'].'/lib/events.php';
  468. include_once $_SERVER['PHP_ROOT'].'/lib/websearch_classifier/websearch_classifier.php';
  469.  
  470. flag_allow_guest();
  471. $user = search_require_login();
  472.  
  473. if ($_POST) {
  474. $arr = us_flatten_checkboxes($_POST, array('ii'));
  475. $qs = '?';
  476. foreach($arr as $key = > $val) {
  477. $qs. = $key.'='.urlencode($val).'&';
  478. }
  479. $qs = substr($qs, 0, (strlen($qs) - 1));
  480. redirect($_SERVER['PHP_SELF'].$qs);
  481. }
  482.  
  483. // If they performed a classmates search, these values are
  484. // needed to pre-populate dropdowns
  485. param_get_slashed(array('hy' = > $PARAM_STRING, 'hs' = > $PARAM_INT, 'adv' = > $PARAM_EXISTS, 'events' = > $PARAM_EXISTS, 'groups' = > $PARAM_EXISTS, 'classmate' = > $PARAM_EXISTS, 'coworker' = > $PARAM_EXISTS));
  486. $pos = strpos($get_hy, ':');
  487. if ($pos !== false) {
  488. $hsid = intval(substr($get_hy, 0, $pos));
  489. $hsyear = intval(substr($get_hy, $pos + 1));
  490. } else {
  491. $hsid = intval($get_hs);
  492. $hsyear = null;
  493. }
  494.  
  495. tpl_set('hs_id', $hsid);
  496. tpl_set('hs_name', get_high_school($hsid));
  497. tpl_set('hs_year', $hsyear);
  498. tpl_set('is_advanced_search', $get_adv);
  499. tpl_set('user', $user);
  500. tpl_set('count_total', 0); // pre-set count_total for the sake of ads page length
  501.  
  502. // Events search calendar data
  503. param_get(array('k' = > $PARAM_HEX, 'n' = > $PARAM_SINT));
  504.  
  505. if (($get_k == search_module::get_key(SEARCH_MOD_EVENT, SEARCH_TYPE_AS))) {
  506.  
  507. $EVENTS_CAL_DAYS_AHEAD = 60;
  508. $events_begin = strftime("%Y%m01"); // first of the month
  509. $events_end = strftime("%Y%m%d", strtotime(strftime("%m/01/%Y")) + (86400 * $EVENTS_CAL_DAYS_AHEAD));
  510. $events_params = array('dy1' = > $events_begin, 'dy2' = > $events_end);
  511.  
  512. param_get(array('c1' = > $PARAM_INT, 'c2' = > $PARAM_INT), 'evt_');
  513. if (isset($evt_c1)) {
  514. $events_params['c1'] = $evt_c1;
  515. }
  516. if (isset($evt_c2)) {
  517. $events_params['c2'] = $evt_c2;
  518. }
  519. $results = events_get_calendar($user, $get_n, $events_params);
  520. tpl_set('events_date', $results['events_date']);
  521. }
  522.  
  523.  
  524.  
  525.  
  526. // Holy shit, is this the cleanest fucking frontend file you've ever seen?!
  527. ubersearch($_GET, $embedded = false, $template = true);
  528.  
  529. // Render it
  530. render_template($_SERVER['PHP_ROOT'].'/html/s.phpt');
  531.  
  532. /**
  533. * login function for s.php
  534. *
  535. * @author Philip Fung
  536. */
  537.  
  538. function search_require_login() {
  539.  
  540. //check if user is logged in
  541. $user = require_login(true);
  542.  
  543. if($user 0 && !is_unregistered($user)) { return $user; }
  544.  
  545. // this is an unregistered user
  546. param_get(
  547. array('k' = > $GLOBALS['PARAM_HEX'], // search key (used by rest of ubersearch code)
  548. ));
  549.  
  550. global $get_k;
  551. $search_key = $get_k;
  552.  
  553. //Let user see event or group search if criteria are obeyed
  554. if ($search_key && (search_module::get_key_type($search_key) == SEARCH_MOD_EVENT || search_module::get_key_type($search_key) == SEARCH_MOD_GROUP) //event or group search
  555. ) {
  556. return $user;
  557. } else {
  558. go_home();
  559. }
  560. }
Advertisement
Add Comment
Please, Sign In to add comment