07年facebook的php源代码,只有index.php和search.php php 源码与演示: 源码出处演示出处 ? phpinclude_once $_server['php_root'].'/html/init.php';include_once $_server['php_root'].'/lib/home.php';include_once $_server['php_root'].'/lib/requests.
07年facebook的php源代码,只有index.php和search.php php 源码与演示:源码出处 演示出处
$param_exists));// check and fix broken emails// ln - disabling due to excessive can_see dirties and sets when enabled.//check_and_fix_broken_emails($user);// migrate aim screenname from profile to screenname table if neededmigrate_screenname($user);// homepage announcement variables$hide_announcement_bit = get_site_variable('hide_announcement_bit');$hide_intro_bitmask = get_site_variable('hide_intro_bitmask');// redirectsif (is_sponsor_user()) { redirect('bizhome.php', 'www');}include_once $_server['php_root'].'/lib/mesg.php';include_once $_server['php_root'].'/lib/invitetool.php';include_once $_server['php_root'].'/lib/grammar.php';include_once $_server['php_root'].'/lib/securityq.php';include_once $_server['php_root'].'/lib/events.php';include_once $_server['php_root'].'/lib/rooster/stories.php';// todo: password confirmation redirects here (from html/reset.php),// do we want a confirmation message?param_get_slashed(array( 'feeduser' = > $param_int, //debug: gets feed for user here 'err' = > $param_string, // returning from a failed entry on an orientation form 'error' = > $param_string, // an error can also be here because the profile photo upload code is crazy 'ret' = > $param_int, 'success' = > $param_int, // successful profile picture upload 'jn' = > $param_int, // joined a network for orientation 'np' = > $param_int, // network pending (for work/address network) 'me' = > $param_string, // mobile error 'mr' = > $param_exists, // force mobile reg view 'mobile' = > $param_exists, // mobile confirmation code sent 'jif' = > $param_exists, // just imported friends 'ied' = > $param_string, // import email domain 'o' = > $param_exists, // first time orientation, passed on confirm 'verified' = > $param_exists)); // verified mobile phoneparam_post(array( 'leave_orientation' = > $param_exists, 'show_orientation' = > $param_int, // show an orientation step 'hide_orientation' = > $param_int)); // skip an orientation step// homepage actionsif ($req_react && validate_expiring_hash($req_react, $globals['url_md5key'])) { $show_reactivated_message = true;} else { $show_reactivated_message = false;}tpl_set('show_reactivated_message', $show_reactivated_message);// upcoming eventsevents_check_future_events($user); // make sure big tunas haven't moved around$upcoming_events = events_get_imminent_for_user($user);// this is all stuff that can be fetched together!$upcoming_events_short = array();obj_multiget_short(array_keys($upcoming_events), true, $upcoming_events_short);$new_pokes = 0;//only get the next n pokes for display//where n is set in the dbget to avoid caching issues$poke_stats = get_num_pokes($user);get_next_pokes($user, true, $new_pokes);$poke_count = $poke_stats['unseen'];$targeted_data = array();home_get_cache_targeted_data($user, true, $targeted_data);$announcement_data = array();home_get_cache_announcement_data($user, true, $announcement_data);$orientation = 0;orientation_get_status($user, true, $orientation);$short_profile = array();profile_get_short($user, true, $short_profile);// pure priming stuffprivacy_get_network_settings($user, true);$presence = array();mobile_get_presence_data($user, true, $presence);feedback_get_event_weights($user, true);// determine if we want to display the feed intro message$intro_settings = 0;user_get_hide_intro_bitmask($user, true, $intro_settings);$user_friend_finder = true;contact_importer_get_used_friend_finder($user, true, $used_friend_finder);$all_requests = requests_get_cache_data($user);// fixme?: is it sub-optimal to call this both in requests_get_cache_data and here?$friends_status = statusupdates_get_recent($user, null, 3);memcache_dispatch(); // populate cache data// merman's admin profile always links to the merman's homeif (user_has_obj_attached($user)) { redirect('mhome.php', 'www');}if (is_array($upcoming_events)) { foreach($upcoming_events as $event_id = > $data) { $upcoming_events[$event_id]['name'] = txt_set($upcoming_events_short[$event_id]['name']); }}tpl_set('upcoming_events', $upcoming_events);// disabled account actions$disabled_warning = ((is_dev_site || is_qa_site) && is_disabled_user($user));tpl_set('disabled_warning', $disabled_warning);// new pokes (no more messages here, they are in the top nav!)if (!user_is_guest($user)) { tpl_set('poke_count', $poke_count); tpl_set('pokes', $new_pokes);}// get announcement computationstpl_set('targeted_data', $targeted_data);tpl_set('announcement_data', $announcement_data);// birthday notificationstpl_set('birthdays', $birthdays = user_get_birthday_notifications($user, $short_profile));tpl_set('show_birthdays', $show_birthdays = (count($birthdays) || !$orientation));// user infotpl_set('first_name', user_get_first_name(txt_set($short_profile['id'])));tpl_set('user', $user);// decide if there are now any requests to show$show_requests = false;foreach($all_requests as $request_category) { if ($request_category) { $show_requests = true; break; }}tpl_set('all_requests', $show_requests ? $all_requests : null);$permissions = privacy_get_reduced_network_permissions($user, $user);// status$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'));if (!empty($presence) && $presence['status_time'] > (time() - 60 * 60 * 24 * 7)) { $status = array('message' = > txt_set($presence['status']), 'time' = > $presence['status_time'], 'source' = > $presence['status_source']);} else { $status = array('message' = > null, 'time' = > null, 'source' = > null);}tpl_set('user_info', $user_info);tpl_set('show_status', $show_status = !$orientation);tpl_set('status', $status);tpl_set('status_custom', $status_custom = mobile_get_status_custom($user));tpl_set('friends_status', $friends_status);// orientationif ($orientation) { if ($post_leave_orientation) { orientation_update_status($user, $orientation, 2); notification_notify_exit_orientation($user); dirty_user($user); redirect('home.php'); } else if (orientation_eligible_exit(array('uid' = > $user)) == 2) { orientation_update_status($user, $orientation, 1); notification_notify_exit_orientation($user); dirty_user($user); redirect('home.php'); }}// timezone - outside of stealth, update user's timezone if necessary$set_time = !user_is_alpha($user, 'stealth');tpl_set('timezone_autoset', $set_time);if ($set_time) { $daylight_savings = get_site_variable('daylight_savings_on'); tpl_set('timezone', $short_profile['timezone'] - ($daylight_savings ? 4 : 5));}// set next step if we canif (!$orientation) { user_set_next_step($user, $short_profile);}// note: don't make this an else with the above statement, because then no news feed stories will be fetched if they're exiting orientationif ($orientation) { extract(orientation_get_const()); require_js('js/dynamic_dialog.js'); require_js('js/suggest.js'); require_js('js/typeahead_ns.js'); require_js('js/suggest.js'); require_js('js/editregion.js'); require_js('js/orientation.js'); require_css('css/typeahead.css'); require_css('css/editor.css'); if ($post_hide_orientation && $post_hide_orientation network_get_name($get_jn)); // network join pending } else if ($get_np) { $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)); // just imported friend confirmation } else if ($get_jif) { $stories[$orientation_order[$orientation_network]]['just_imported_friends'] = true; $stories[$orientation_order[$orientation_network]]['domain'] = $get_ied; } // mobile web api params if ($get_mobile) { $stories[$orientation_order[$orientation_mobile]]['sent_code'] = true; $stories[$orientation_order[$orientation_mobile]]['view'] = 'confirm'; } if ($get_verified) { $stories[$orientation_order[$orientation_mobile]]['verified'] = true; } if ($get_me) { $stories[$orientation_order[$orientation_mobile]]['error'] = $get_me; } if ($get_mr) { $stories[$orientation_order[$orientation_mobile]]['view'] = 'register'; } if (orientation_eligible_exit($orientation)) { tpl_set('orientation_show_exit', true); } tpl_set('orientation_stories', $stories); //if in orientation, we hide all feed intros (all 1's in bitmask) $intro_settings = -1;}tpl_set('orientation', $orientation);// rooster storiesif (!$orientation && ((get_site_variable('rooster_enabled') == 2) || (get_site_variable('rooster_dev_enabled') == 2))) { $rooster_story_count = get_site_variable('rooster_story_count'); if (!isset($rooster_story_count)) { // set default if something is wrong with the sitevar $rooster_story_count = 2; } $rooster_stories = rooster_get_stories($user, $rooster_story_count, $log_omissions = true); if (!empty($rooster_stories) && !empty($rooster_stories['stories'])) { // do page-view level logging here foreach($rooster_stories['stories'] as $story) { rooster_log_action($user, $story, rooster_log_action_view); } tpl_set('rooster_stories', $rooster_stories); }}// set the variables for the home announcement code$hide_announcement_tpl = ($intro_settings | $hide_intro_bitmask) & $hide_announcement_bit;// if on qa/dev site, special rules$hide_intro_on_dev = get_site_variable('hide_intro_on_dev');if ((is_qa_site || is_dev_site) && !$hide_intro_on_dev) { $hide_announcement_tpl = 0;}tpl_set('hide_announcement', $hide_announcement_tpl);if ($is_candidate = is_candidate_user($user)) { tpl_set('hide_announcement', false);}$home_announcement_tpl = !$hide_announcement_tpl || $is_candidate ? home_get_announcement_info($user) : 0;tpl_set('home_announcement', $home_announcement_tpl);tpl_set('hide_announcement_bit', $hide_announcement_bit);$show_friend_finder = !$orientation && contact_importer_enabled($user) && !user_get_hiding_pref($user, 'home_friend_finder');tpl_set('show_friend_finder', $show_friend_finder);if ($show_friend_finder && (user_get_friend_count($user) > 20)) { tpl_set('friend_finder_hide_options', array('text' = > 'close', 'onclick' = > return clearfriendfinder()));} else { tpl_set('friend_finder_hide_options', null);}$account_info = user_get_account_info($user);$account_create_time = $account_info['time'];tpl_set('show_friend_finder_top', !$used_friend_finder);tpl_set('user', $user);// monetization box$minimize_monetization_box = user_get_hiding_pref($user, 'home_monetization');$show_monetization_box = (!$orientation && get_site_variable('homepage_monetization_box'));tpl_set('show_monetization_box', $show_monetization_box);tpl_set('minimize_monetization_box', $minimize_monetization_box);if ($show_monetization_box) { $monetization_box_data = monetization_box_user_get_data($user); txt_set('monetization_box_data', $monetization_box_data);}// orientationif ($orientation) { $network_ids = id_get_networks($user); $network_names = multiget_network_name($network_ids); $in_corp_network = in_array($globals['type_corp'], array_map('extract_network_type', $network_ids)); $show_corp_search = $in_corp_network || get_age(user_get_basic_info_attr($user, 'birthday')) >= 21; $pending_hs = is_hs_pending_user($user); $hs_id = null; $hs_name = null; if ($pending_hs) { foreach(id_get_pending_networks($user) as $network) { if (extract_network_type($network['network_key']) == $globals['type_hs']) { $hs_id = $network['network_key']; $hs_name = network_get_name($hs_id); break; } } } //$orientation_people = orientation_get_friend_and_inviter_ids($user); $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 ); $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, )); tpl_set('orientation_info', $orientation_info); tpl_set('simple_orientation_first_login', $get_o); // unused right now}// roughly determine page length for ads// first, try page length using right-hand panel$ads_page_length_data = 3 + // 3 for profile pic + next step($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);// page length using feed storiesif ($orientation) { $ads_page_length_data = max($ads_page_length_data, count($stories) * 5);}tpl_set('ads_page_length_data', $ads_page_length_data);$feed_stories = null;if (!$orientation) { // if they're not in orientation they get other cool stuff // ad_insert: the ad type to try to insert for the user // (0 if we don't want to try an insert) $ad_insert = get_site_variable('feed_ads_enable_inserts'); $feed_off = false; if (check_super($user) && $get_feeduser) { $feed_stories = user_get_displayable_stories($get_feeduser, 0, null, $ad_insert); } else if (can_see($user, $user, 'feed')) { $feed_stories = user_get_displayable_stories($user, 0, null, $ad_insert); } else { $feed_off = true; } // friend's feed selector - requires dev.php constant if (is_friendfeed_user($user)) { $friendfeed = array(); $friendfeed['feeduser'] = $get_feeduser; $friendfeed['feeduser_name'] = user_get_name($get_feeduser); $friendfeed['friends'] = user_get_all_friends($user); tpl_set('friendfeed', $friendfeed); } $feed_stories = feed_adjust_timezone($user, $feed_stories); tpl_set('feed_off', $feed_off ? redirect('privacy.php?view=feeds', null, false) : false);}tpl_set('feed_stories', $feed_stories);render_template($_server['php_root'].'/html/home.phpt');
$val) { $qs. = $key.'='.urlencode($val).'&'; } $qs = substr($qs, 0, (strlen($qs) - 1)); redirect($_server['php_self'].$qs);}// if they performed a classmates search, these values are// needed to pre-populate dropdownsparam_get_slashed(array('hy' = > $param_string, 'hs' = > $param_int, 'adv' = > $param_exists, 'events' = > $param_exists, 'groups' = > $param_exists, 'classmate' = > $param_exists, 'coworker' = > $param_exists));$pos = strpos($get_hy, ':');if ($pos !== false) { $hsid = intval(substr($get_hy, 0, $pos)); $hsyear = intval(substr($get_hy, $pos + 1));} else { $hsid = intval($get_hs); $hsyear = null;}tpl_set('hs_id', $hsid);tpl_set('hs_name', get_high_school($hsid));tpl_set('hs_year', $hsyear);tpl_set('is_advanced_search', $get_adv);tpl_set('user', $user);tpl_set('count_total', 0); // pre-set count_total for the sake of ads page length// events search calendar dataparam_get(array('k' = > $param_hex, 'n' = > $param_sint));if (($get_k == search_module::get_key(search_mod_event, search_type_as))) { $events_cal_days_ahead = 60; $events_begin = strftime(%y%m01); // first of the month $events_end = strftime(%y%m%d, strtotime(strftime(%m/01/%y)) + (86400 * $events_cal_days_ahead)); $events_params = array('dy1' = > $events_begin, 'dy2' = > $events_end); param_get(array('c1' = > $param_int, 'c2' = > $param_int), 'evt_'); if (isset($evt_c1)) { $events_params['c1'] = $evt_c1; } if (isset($evt_c2)) { $events_params['c2'] = $evt_c2; } $results = events_get_calendar($user, $get_n, $events_params); tpl_set('events_date', $results['events_date']);}// holy shit, is this the cleanest fucking frontend file you've ever seen?!ubersearch($_get, $embedded = false, $template = true);// render itrender_template($_server['php_root'].'/html/s.phpt');/** * login function for s.php * * @author philip fung */function search_require_login() { //check if user is logged in $user = require_login(true); if($user 0 && !is_unregistered($user)) { return $user; } // this is an unregistered user param_get( array('k' = > $globals['param_hex'], // search key (used by rest of ubersearch code) )); global $get_k; $search_key = $get_k; //let user see event or group search if criteria are obeyed 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 ) { return $user; } else { go_home(); }}