Example #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];
     *
     */
 }
Example #2
0
 function get($callback, $args, $id = FALSE)
 {
     if (!$id) {
         // Generate an ID
         $id = $this->_makeId($callback, $args);
     }
     // Get the storage handler and get callback cache data by id and group
     $data = parent::get($id);
     if ($data !== false) {
         $data = unserialize($data);
     } else {
         $data = call_user_func_array($callback, $args);
         $this->store(serialize($data), $id);
     }
     return $data;
 }
Example #3
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;
 }
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;
}
Example #5
0
        $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']);
        }
    } else {
        if ($setting['setting_cache_default'] == 'memcache') {
            $config['servers'] = array();
            foreach ($cache_options['servers'] as $server) {
                $config['servers'][] = $server['host'] . ':' . $server['port'];
            }
            $config['compress'] = false;
        }
    }
    SECache::config('default', $config);
}
/*
// CREATE SESSION OBJECT
$session_options = ( defined('SE_SESSION_RESUME') && !empty($session_id) ? array('id' => $session_id, 'security' => array()) : array() );
$session =& SESession::getInstance($session_options);
if( $session->getState() == 'expired' )
{
 $session->restart();
}
*
*/
// CREATE URL CLASS
$url = new se_url();
// CREATE DATETIME CLASS
$datetime = new se_datetime();
Example #6
0
 function store($data, $id, $group = NULL)
 {
     $serial_data = serialize($data);
     parent::store($serial_data, $id, $group);
 }
            $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;
}
Example #9
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];
 }
Example #10
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];
 }
Example #11
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;
 }
Example #12
0
    $sql = "\r\n    UPDATE\r\n      se_settings\r\n    SET\r\n      setting_cache_enabled='{$setting_cache_enabled}',\r\n      setting_cache_default='{$setting_cache_default}',\r\n      setting_cache_lifetime='{$setting_cache_lifetime}',\r\n      setting_cache_file_options='{$setting_cache_file_options}',\r\n      setting_cache_memcache_options='{$setting_cache_memcache_options}'\r\n  ";
    $database->database_query($sql) or die($database->database_error());
}
// Unserialize options for template/config generation
if ($setting['setting_cache_file_options'] && is_string($setting['setting_cache_file_options'])) {
    $cache_file_options = @unserialize($setting['setting_cache_file_options']);
}
if ($setting['setting_cache_memcache_options'] && is_string($setting['setting_cache_memcache_options'])) {
    $cache_memcache_options = @unserialize($setting['setting_cache_memcache_options']);
}
// GET AVAILABLE STORAGE OPTIONS IF NOT SAVING
if ($task != "dosave") {
    //var_dump($cache_file_options);
    $filecache_test_root = preg_replace('/^[.]/', SE_ROOT, $cache_file_options['root']);
    $memcache_test_servers = $cache_memcache_options['servers'];
    $available_storage = SECache::getStorageHandlers();
    if (!is_array($available_storage)) {
        $available_storage = array();
    }
}
/*
// Check if enabled and display error message
if( (!$setting['setting_cache_enabled'] || !in_array("file", $available_storage)) && $cache_options['storage']=="file" )
{
  $is_error = "Make sure the cache directory specified exists and is chmod 777";
}
elseif( (!$setting['setting_cache_enabled'] || !in_array("file", $available_storage)) && $cache_options['storage']=="memcache" )
{
  $is_error = "Make sure the memcache extension is installed and a memcache server is running.";
}
*/
Example #13
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;
     }
 }
Example #14
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;
 }