Exemplo n.º 1
0
 /**
  * Returns a singleton instance
  *
  * @return object
  * @access public
  * @static
  */
 function &getInstance()
 {
     return SECache::getInstance();
     /*
     		static $instance = array();
     		if (!$instance) {
     			$instance[0] =& new Cache();
     		}
     		return $instance[0];
     *
     */
 }
Exemplo n.º 2
0
 function &getSettings()
 {
     static $url_settings;
     if (!is_array($url_settings)) {
         $cache = SECache::getInstance();
         // Get from cache
         if (is_object($cache)) {
             $url_settings = $cache->get('site_url_settings');
         }
         // Get from database
         if (!is_array($url_settings)) {
             $database = SEDatabase::getInstance();
             $resource = $database->database_query("SELECT url_file, url_regular, url_subdirectory FROM se_urls");
             $url_settings = $database->database_load_all_assoc('url_file');
             // Special case -_-
             $url_settings['profile'] = array('url_regular' => 'profile.php?user=$user', 'url_subdirectory' => '$user/');
             // Store in cache
             if (is_object($cache)) {
                 $cache->store($url_settings, 'site_url_settings');
             }
         }
     }
     return $url_settings;
 }
Exemplo n.º 3
0
function friends_birthdays()
{
    global $setting, $database, $user;
    $birthdays = NULL;
    // CACHING
    $cache_object = SECache::getInstance('serial');
    if (is_object($cache_object)) {
        $birthdays = $cache_object->get('friends_birthdays_user_' . $user->user_info['user_id']);
    }
    // RETRIEVAL
    //if( !is_array($birthdays) || empty($birthdays) )
    if (!is_array($birthdays)) {
        $birthdays = array();
        $sql = "SELECT profilefield_id, t2.profilecat_id FROM se_profilefields LEFT JOIN se_profilecats AS t1 ON se_profilefields.profilefield_profilecat_id=t1.profilecat_id LEFT JOIN se_profilecats AS t2 ON t1.profilecat_dependency=t2.profilecat_id WHERE profilefield_special='1'";
        $resource = $database->database_query($sql);
        if ($database->database_num_rows($resource) > 0) {
            // CONSTRUCT QUERY
            $birthdays_upcoming_query = "\r\n        SELECT\r\n          se_users.user_id, \r\n          se_users.user_username, \r\n          se_users.user_fname, \r\n          se_users.user_lname,\r\n          CASE\r\n      ";
            while ($birthday_field = $database->database_fetch_assoc($resource)) {
                $birthdays_upcoming_query .= " WHEN se_users.user_profilecat_id='{$birthday_field['profilecat_id']}' THEN DATE_FORMAT(CONCAT(YEAR(CURDATE()), \"-\", MONTH(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`), \"-\", DAY(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`)), '%Y-%m-%d')";
                $birthdays_upcoming_where[] = "(se_users.user_profilecat_id='{$birthday_field['profilecat_id']}' AND DAY(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`)<>'0' AND MONTH(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`)<>'0' AND CURDATE() <= DATE_FORMAT(CONCAT(YEAR(CURDATE()), \"-\", MONTH(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`), \"-\", DAY(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`)), '%Y-%m-%d') AND DATE_ADD(CURDATE(), INTERVAL 7 DAY) >= DATE_FORMAT(CONCAT(YEAR(CURDATE()), \"-\", MONTH(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`), \"-\", DAY(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`)), '%Y-%m-%d'))";
            }
            $birthdays_upcoming_query .= " ELSE '0000-00-00' END AS birthday FROM se_friends LEFT JOIN se_users ON se_friends.friend_user_id2=se_users.user_id LEFT JOIN se_profilevalues ON se_users.user_id=se_profilevalues.profilevalue_user_id WHERE se_friends.friend_user_id1='{$user->user_info['user_id']}' AND (" . implode(" OR ", $birthdays_upcoming_where) . ") ORDER BY birthday";
            $resource = $database->database_query($birthdays_upcoming_query);
            while ($birthday_info = $database->database_fetch_assoc($resource)) {
                $birthday_user = new se_user();
                $birthday_user->user_info['user_id'] = $birthday_info['user_id'];
                $birthday_user->user_info['user_username'] = $birthday_info['user_username'];
                $birthday_user->user_info['user_fname'] = $birthday_info['user_fname'];
                $birthday_user->user_info['user_lname'] = $birthday_info['user_lname'];
                $birthday_user->user_displayname();
                // SET BIRTHDAY
                $birthday_date = mktime(0, 0, 0, substr($birthday_info['birthday'], 5, 2), substr($birthday_info['birthday'], 8, 2), 1990);
                $birthdays[] = array('birthday_user_id' => $birthday_user->user_info['user_id'], 'birthday_user_username' => $birthday_user->user_info['user_username'], 'birthday_user_displayname' => $birthday_user->user_displayname, 'birthday_date' => $birthday_date, 'birthday_user' => &$birthday_user);
                unset($birthday_user);
            }
        }
        // CACHE
        if (is_object($cache_object)) {
            $cache_object->store($birthdays, 'friends_birthdays_user_' . $user->user_info['user_id']);
        }
    }
    return $birthdays;
}
Exemplo n.º 4
0
    if (!empty($session_options['name'])) {
        Configure::write('Session.cookie', $session_options['name']);
    }
    if (!empty($session_options['expire'])) {
        Configure::write('Session.timeout', $session_options['expire']);
    }
}
$session =& SESession::getInstance(null, true);
$session->engine(@$session_options['storage'], $session_options);
if (defined('SE_SESSION_RESUME') && SE_SESSION_RESUME && isset($session_id)) {
    $session->_userAgent = md5(env('HTTP_USER_AGENT') . Configure::read('Security.salt'));
    $session->id($session_id);
}
$session->start();
// CREATE CACHE OBJECT
$cache =& SECache::getInstance();
if (!empty($setting['setting_cache_enabled']) && !empty($setting['setting_cache_default'])) {
    $config = array();
    $config['engine'] = ucfirst($setting['setting_cache_default']);
    $config['duration'] = !empty($setting['setting_cache_lifetime']) ? $setting['setting_cache_lifetime'] : 3600;
    $config['prefix'] = 'se_';
    $cache_options = @unserialize($setting['setting_cache_' . $setting['setting_cache_default'] . '_options']);
    if (!$cache_options) {
        $cache_options = array();
    }
    if ($setting['setting_cache_default'] == 'file') {
        $config['path'] = !empty($cache_options['root']) ? $cache_options['root'] : SE_ROOT . DS . 'cache';
        $config['lock'] = isset($cache_options['locking']) ? $cache_options['locking'] : false;
        $config['serialize'] = true;
        if (!defined('CACHE')) {
            define('CACHE', $config['path']);
Exemplo n.º 5
0
            $user_newemail = $user_email;
            $subnet_id = $new_subnet_id;
            if ($new_subnet_id != $user->user_info['user_subnet_id']) {
                $result = 819;
            } else {
                $result = 191;
            }
        }
        // UPDATE DATABASE
        $database->database_query("UPDATE se_users SET user_subnet_id='{$subnet_id}', user_email='{$user_email}', user_newemail='{$user_newemail}', user_username='******', user_timezone='{$user_timezone}', user_profilecat_id='{$user_profilecat_id}' WHERE user_id='{$user->user_info['user_id']}' LIMIT 1");
        if (count($usersettings) > 0) {
            $database->database_query("UPDATE se_usersettings SET " . implode(", ", $usersettings) . " WHERE usersetting_user_id='{$user->user_info['user_id']}' LIMIT 1");
            // Flush cached usersettings
            $usersettings_static =& SEUser::getUserSettings($user->user_info['user_id']);
            $usersettings_static = NULL;
            $cache_object = SECache::getInstance();
            if (is_object($cache_object)) {
                $cache_object->remove('site_user_settings_' . $user->user_info['user_id']);
            }
        }
        // IF USERNAME HAS CHANGED, DELETE OLD RECENT ACTIVITY
        if ($user->user_info['user_username'] != $user_username) {
            $database->database_query("DELETE FROM se_actions WHERE action_user_id='{$user->user_info['user_id']}'");
        }
        // RESET USER INFO
        $user = new se_user(array($user->user_info['user_id']));
        // UPDATE COOKIES
        $user->user_setcookies();
    }
}
// GET PROFILE CATEGORIES
function userconnection_users_information($path_array)
{
    global $setting, $database, $user;
    $path = NULL;
    // CACHING
    $cache_object = SECache::getInstance('serial');
    if (is_object($cache_object)) {
        $path = $cache_object->get('shortest_path');
    }
    // RETRIEVAL
    if (!is_array($path)) {
        // HERE WE WILL TAKE ALL USER ID'S IN A SINGLE VARIABLE $USERS_ID
        $users_id = implode(",", $path_array);
        $id = $user->user_info['user_id'];
        $sql = "SELECT user_id, user_username, user_fname, user_lname, user_photo, user_lastlogindate, user_dateupdated FROM se_users WHERE ((user_verified='1' AND user_enabled='1' AND user_search='1') OR (user_id = '{$id}')) AND user_id IN ({$users_id}) ";
        $resource = $database->database_query($sql);
        $path = array();
        while ($user_info = $database->database_fetch_assoc($resource)) {
            $shortest_user = new se_user();
            $shortest_user->user_info['user_id'] = $user_info['user_id'];
            $shortest_user->user_info['user_username'] = $user_info['user_username'];
            $shortest_user->user_info['user_photo'] = $user_info['user_photo'];
            $shortest_user->user_info['user_fname'] = $user_info['user_fname'];
            $shortest_user->user_info['user_lname'] = $user_info['user_lname'];
            $shortest_user->user_info['user_lastlogindate'] = $user_info['user_lastlogindate'];
            $shortest_user->user_info['user_dateupdated'] = $user_info['user_dateupdated'];
            $shortest_user->user_displayname();
            $path[$user_info['user_id']] =& $shortest_user;
            unset($shortest_user);
        }
        //
        foreach ($path_array as $l) {
            if (!empty($path[$l])) {
                $new_user_array[] = $path[$l];
            }
        }
        // CACHE
        if (is_object($cache_object)) {
            $cache_object->store($path, 'shortest_path');
        }
    }
    return $new_user_array;
}
Exemplo n.º 7
0
 function &getSubnetworkInfo($subnet_id)
 {
     static $subnetwork_info;
     if (!is_array($subnetwork_info)) {
         $subnetwork_info = array();
     }
     if (!isset($subnetwork_info[$subnet_id])) {
         $cache = SECache::getInstance('serial', array('lifetime' => 3600));
         // Get from cache
         if (is_object($cache)) {
             $subnetwork_info[$subnet_id] = $cache->get('site_subnetworks_' . $subnet_id);
         }
         // Get from database
         if (!is_array($subnetwork_info[$subnet_id])) {
             $database = SEDatabase::getInstance();
             $resource = $database->database_query("SELECT subnet_id, subnet_name FROM se_subnets WHERE subnet_id='{$subnet_id}' LIMIT 1");
             $subnetwork_info[$subnet_id] = $database->database_fetch_assoc($resource);
             // Store in cache
             if (is_object($cache)) {
                 $cache->store($subnetwork_info[$subnet_id], 'site_subnetworks_' . $subnet_id);
             }
         }
     }
     return $subnetwork_info[$subnet_id];
 }
Exemplo n.º 8
0
 function &getProfileValues($user_id)
 {
     static $user_profiles;
     if (!is_array($user_profiles)) {
         $user_profiles = array();
     }
     if (!isset($user_profiles[$user_id])) {
         $cache = SECache::getInstance('serial', array('lifetime' => 3600));
         // Get from cache
         if (is_object($cache)) {
             $user_profiles[$user_id] = $cache->get('site_user_profiles_' . $user_id);
         }
         // Get from database
         if (!is_array($user_profiles[$user_id])) {
             $database = SEDatabase::getInstance();
             $resource = $database->database_query("SELECT * FROM se_profilevalues WHERE profilevalue_user_id='{$user_id}' LIMIT 1");
             $user_profiles[$user_id] = $database->database_fetch_assoc($resource);
             // Store in cache
             if (is_object($cache)) {
                 $cache->store($user_profiles[$user_id], 'site_user_profiles_' . $user_id);
             }
         }
     }
     return $user_profiles[$user_id];
 }
Exemplo n.º 9
0
 function actions_display($visibility = 0, $actionsperuser, $where = "", $last_action_id = false, $first_action_id = false)
 {
     global $database, $user, $owner, $setting;
     $actions_array = array();
     // CACHING
     $cache_object = SECache::getInstance('serial');
     $user_id = $user->user_exists ? $user->user_info['user_id'] : 0;
     $user_subnet_id = $user->user_exists ? $user->user_info['user_subnet_id'] : 0;
     $where_md5 = $where ? '_' . md5($where) : '';
     $cache_id = 'he_actions_' . $visibility . '_' . (int) $last_action_id . '_' . (int) $first_action_id . '_' . $user_id . $where_md5;
     if (is_object($cache_object)) {
         $actions_array = $cache_object->get($cache_id);
     }
     // GET ACTIONS
     if (empty($actions_array)) {
         // GET CURRENT DATE
         $nowdate = time();
         // BEGIN BUILDING QUERY
         $actions_query = "SELECT se_actions.*, se_actiontypes.actiontype_icon, se_actiontypes.actiontype_text, \r\n                se_actiontypes.actiontype_media FROM se_actions \r\n                LEFT JOIN se_actiontypes ON se_actions.action_actiontype_id=se_actiontypes.actiontype_id";
         // GET USER PREFERENCES, IF USER LOGGED IN
         $user_pref_where = "";
         if ($setting['setting_actions_preference'] == 1 && $user->user_exists) {
             if (empty($user->usersetting_info)) {
                 $user->user_settings();
             }
             $usersetting_actions_display = join(',', array_filter(explode(',', $user->usersetting_info['usersetting_actions_display'])));
             $user_pref_where = " se_actiontypes.actiontype_id IN ({$usersetting_actions_display}) AND";
         }
         switch ($visibility) {
             // ALL ACTIONS, NO USER PREFS
             case 0:
                 $actions_query .= " WHERE";
                 break;
             case 10:
                 $actions_query .= " WHERE {$user_pref_where}";
                 break;
                 // ALL REGISTERED USERS, EXCLUDING LOGGED IN USER
             // ALL REGISTERED USERS, EXCLUDING LOGGED IN USER
             case 1:
                 $actions_query .= " WHERE se_actions.action_user_id<>'{$user_id}' AND";
                 $actions_query .= $user_pref_where;
                 break;
                 // ONLY MY FRIENDS AND EVERYONE IN MY SUBNET, EXCLUDING LOGGED IN USER
             // ONLY MY FRIENDS AND EVERYONE IN MY SUBNET, EXCLUDING LOGGED IN USER
             case 2:
                 $actions_query .= " LEFT JOIN se_friends ON se_friends.friend_user_id2=se_actions.action_user_id \r\n                        AND se_friends.friend_user_id1='{$user_id}' AND se_friends.friend_status='1'";
                 $actions_query .= " LEFT JOIN se_users ON se_users.user_id=se_actions.action_user_id";
                 $actions_query .= " WHERE se_actions.action_user_id<>'{$user_id}' AND";
                 $actions_query .= " (se_friends.friend_id <> 'NULL' OR se_users.user_subnet_id='{$user_subnet_id}') AND";
                 $actions_query .= $user_pref_where;
                 break;
                 // ONLY MY FRIENDS, EXCLUDING LOGGED IN USER
             // ONLY MY FRIENDS, EXCLUDING LOGGED IN USER
             case 4:
                 $actions_query .= " RIGHT JOIN se_friends ON se_friends.friend_user_id2=se_actions.action_user_id \r\n                        AND se_friends.friend_user_id1='{$user_id}' AND se_friends.friend_status='1'";
                 $actions_query .= " WHERE se_actions.action_user_id<>'{$user_id}' AND";
                 $actions_query .= $user_pref_where;
                 break;
         }
         // CHECK PRIVACY
         $actions_query .= "\r\n              CASE \r\n                WHEN se_actions.action_object_owner='user' THEN\r\n                  CASE\r\n                    WHEN se_actions.action_user_id='{$user_id}'\r\n                      THEN TRUE\r\n                    WHEN ((se_actions.action_object_privacy & @SE_PRIVACY_REGISTERED) AND '{$user->user_exists}'<>0)\r\n                      THEN TRUE\r\n                    WHEN ((se_actions.action_object_privacy & @SE_PRIVACY_ANONYMOUS) AND '{$user->user_exists}'=0)\r\n                      THEN TRUE\r\n                    WHEN ((se_actions.action_object_privacy & @SE_PRIVACY_SELF) AND se_actions.action_object_owner_id='{$user_id}')\r\n                      THEN TRUE\r\n                    WHEN ((se_actions.action_object_privacy & @SE_PRIVACY_FRIEND) AND (SELECT TRUE FROM se_friends \r\n                         WHERE friend_user_id1=se_actions.action_object_owner_id AND friend_user_id2='{$user_id}' AND friend_status='1' LIMIT 1))\r\n                      THEN TRUE\r\n                    WHEN ((se_actions.action_object_privacy & @SE_PRIVACY_SUBNET) AND '{$user->user_exists}'<>0 \r\n                         AND (SELECT TRUE FROM se_users WHERE user_id=se_actions.action_object_owner_id AND user_subnet_id='{$user_subnet_id}' LIMIT 1))\r\n                      THEN TRUE\r\n                    WHEN ((se_actions.action_object_privacy & @SE_PRIVACY_FRIEND2) AND \r\n                          (SELECT TRUE FROM se_friends AS friends_primary \r\n                             LEFT JOIN se_users ON friends_primary.friend_user_id1=se_users.user_id \r\n                             LEFT JOIN se_friends AS friends_secondary ON friends_primary.friend_user_id2=friends_secondary.friend_user_id1 \r\n                             WHERE friends_primary.friend_user_id1=se_actions.action_object_owner_id \r\n                             AND friends_secondary.friend_user_id2='{$user_id}' AND se_users.user_subnet_id='{$user_subnet_id}' LIMIT 1\r\n                          ))\r\n                      THEN TRUE\r\n                    ELSE FALSE\r\n                END\r\n            ";
         // CALL HOOK
         ($hook = SE_Hook::exists('se_action_privacy')) ? SE_Hook::call($hook, array('actions_query' => &$actions_query)) : NULL;
         // RESUME CASE STATEMENT
         $actions_query .= "\r\n                ELSE TRUE\r\n                END AND\r\n            ";
         // ADD WHERE CLAUSE IF NECESSARY
         if ($where != "") {
             $actions_query .= " ({$where}) AND";
         }
         // LIMIT RESULTS TO TIME PERIOD SPECIFIED BY ADMIN
         $actions_query .= " se_actions.action_date > " . ($nowdate - $setting['setting_actions_showlength']);
         $actions_query .= $last_action_id ? " AND se_actions.action_id < " . $last_action_id : '';
         $actions_query .= $first_action_id ? " AND se_actions.action_id > " . $first_action_id : '';
         // ORDER BY ACTION ID DESCENDING
         $actions_query .= " ORDER BY action_id DESC";
         $limit = $setting['setting_he_wall_actions_per_page'];
         // LIMIT RESULTS TO MAX NUMBER SPECIFIED BY ADMIN
         $actions_query .= " LIMIT {$limit}";
         // GET RECENT ACTIVITY FEED
         $actions = $database->database_query($actions_query);
         $actions_array = array();
         $actions_users_array = array();
         while ($action = $database->database_fetch_assoc($actions)) {
             // ONLY DISPLAY THIS ACTION IF MAX OCCURRANCES PER USER HAS NOT YET BEEN REACHED
             $actions_users_array[] = $action['action_user_id'];
             $occurrances = array_count_values($actions_users_array);
             if ($occurrances[$action['action_user_id']] <= $actionsperuser) {
                 // UNSERIALIZE VARIABLES
                 // NOTE: I don't like mb_unserialize: it ignores the strlen param. But it works...
                 if (($action_vars = unserialize($action['action_text'])) === FALSE) {
                     $action_vars = mb_unserialize($action['action_text']);
                 }
                 // REGISTER PRELOADED TEXT
                 SE_Language::_preload($action['actiontype_text']);
                 // RETRIEVE MEDIA IF NECESSARY
                 $action_media = false;
                 if ($action['actiontype_media']) {
                     $action_media = array();
                     $media = $database->database_query("SELECT * FROM se_actionmedia WHERE actionmedia_action_id='{$action['action_id']}'");
                     while ($media_info = $database->database_fetch_assoc($media)) {
                         $action_media[] = $media_info;
                     }
                 }
                 // ADD THIS ACTION TO OUTPUT ARRAY
                 $actions_array[] = array('action_id' => $action['action_id'], 'action_date' => $action['action_date'], 'action_text' => $action['actiontype_text'], 'action_vars' => $action_vars, 'action_user_id' => $action['action_user_id'], 'action_icon' => $action['actiontype_icon'], 'action_media' => $action_media);
             }
         }
         // CACHE
         if (is_object($cache_object)) {
             $cache_object->store($actions_array, $cache_id);
         }
     }
     // Process actions (load language)
     foreach ($actions_array as $action) {
         SE_Language::_preload($action['action_text']);
     }
     // RETURN LIST OF ACTIONS
     return $actions_array;
 }
Exemplo n.º 10
0
 function _loadGlobalValues($language_id, $overwrite = FALSE)
 {
     //echo " load.{$this->_load_count} ";
     $language_object = SELanguage::_init();
     $cache_object = SECache::getInstance('serial');
     if (!is_object($cache_object)) {
         return;
     }
     // Return if empty
     $global_language_values = $cache_object->get('language_globals_' . $language_id);
     if (empty($global_language_values)) {
         return;
     }
     foreach ($global_language_values as $global_languagevar_id => $global_languagevar_value) {
         if (!$overwrite && !empty($this->_language_variables[$global_languagevar_id])) {
             continue;
         }
         if (empty($global_languagevar_value)) {
             continue;
         }
         $this->_language_variables[$global_languagevar_id] = $global_languagevar_value;
     }
 }
Exemplo n.º 11
0
 function actions_allowed()
 {
     global $user, $setting, $database;
     if (!$setting['setting_actions_preference']) {
         return FALSE;
     }
     $actiontypes_array = NULL;
     // CACHING
     $cache_object = SECache::getInstance('serial');
     if (is_object($cache_object)) {
         $actiontypes_array = $cache_object->get('actiontypes');
     }
     // RETRIEVAL
     if (!is_array($actiontypes_array) || empty($actiontypes_array)) {
         $resource = $database->database_query("SELECT actiontype_id, actiontype_desc FROM se_actiontypes WHERE actiontype_enabled=1");
         while ($actiontype = $database->database_fetch_assoc($resource)) {
             $actiontypes_array[] = $actiontype;
         }
         // CACHE
         if (is_object($cache_object)) {
             $cache_object->store($actiontypes_array, 'actiontypes');
         }
     }
     // POST PROCESSING
     if (empty($user->usersetting_info)) {
         $user->user_settings();
     }
     $actiontypes_display = explode(",", $user->usersetting_info['usersetting_actions_display']);
     foreach ($actiontypes_array as $actiontype_index => $actiontype) {
         SE_Language::_preload($actiontype['actiontype_desc']);
         // MAKE THIS ACTION TYPE SELECTED IF ITS NOT DISALLOWED BY USER
         $actiontypes_array[$actiontype_index]['actiontype_selected'] = in_array($actiontype['actiontype_id'], $actiontypes_display);
     }
     return $actiontypes_array;
 }