Drupal 7 Views, List, Filters and User
I've done with hook_views_query_alter().

function mymodule_views_api() { // your module name into hook_views_api
    return array(
        'api' =&gt; 3,
        // might not need the line below, but in any case, the last arg is the name of your module
        'path' =&gt; drupal_get_path('module', 'mymodule'),
    );
}

function mymodule_views_query_alter(&amp;$view, &amp;$query){
    global $user;
    switch($view-&gt;name){
        case 'my_view_name' :   
            if(!in_array('administrator', $user-&gt;roles) || array_key_exists(4, $user-&gt;roles)){
                $result = db_query('my_query_here');
                $nodes = array();                   
                foreach($result as $row){
                    $nodes[] = $row-&gt;entity_id;
                }
                $query-&gt;where[0]['conditions'][] = array(
                    'field' =&gt; 'node.nid',
                    'value' =&gt; $nodes,
                    'operator' =&gt; 'in'
                );
            }
            break;
}