diff --git a/views_handler_area_link.inc b/views_handler_area_link.inc
index c458224..7d3cd45 100644
--- a/views_handler_area_link.inc
+++ b/views_handler_area_link.inc
@@ -9,6 +9,7 @@ class views_handler_area_link extends views_handler_area {
     $options['querystring'] = array('default' => '');
     $options['anchor'] = array('default' => '');
     $options['class'] = array('default' => '');
+    $options['link_access_role'] = array('default' => '');
     return $options;
   }
 
@@ -44,6 +45,13 @@ class views_handler_area_link extends views_handler_area {
       '#default_value' => $this->options['class'],
       '#description' => t('A custom CSS class to add to the link'),
     );
+    $form['link_access_role'] = array(
+      '#type' => 'select',
+      '#title' => t('Link field access restrict'),
+      '#default_value' => $this->options['link_access_role'],
+      '#options' => array(''=> t('-All-')) + user_roles(),
+      '#description' => t('Show this link if user has specific role. Default will show to all users'),
+    );
 
     $count = 0; // This lets us prepare the key as we want it printed.
     foreach ($this->view->display_handler->get_handlers('argument') as $arg => $handler) {
@@ -89,19 +97,17 @@ class views_handler_area_link extends views_handler_area {
         // not work.  This should get switched to a multi-value interface of
         // some kind instead of ugly string parsing. @todo
         $querystring = strtr($this->options['querystring'], $tokens);
-        foreach (explode('&', $querystring) as $fragment) {
-          list($key, $value) = explode('=', $fragment);
-          $query[$key] = $value;
-        }
-        $link_options['query'] =$query;
+        $link_options['query'] = drupal_get_query_array($querystring);
       }
       if (!empty($this->options['anchor'])) {
         $link_options['anchor'] = strtr($this->options['anchor'], $tokens);
       }
       if (!empty($this->options['class'])) {
-        $link_options['attributes'] = array('class' => strtr($this->options['class'], $tokens));
+        $link_options['attributes'] = array('class' => explode(' ', strtr($this->options['class'], $tokens)));
+      }
+      if (!empty($this->options['link_access_role']) && $this->options['link_access_role'] != key($user->roles)) {
+       return '';
       }
-
       return l(strtr($this->options['text'], $tokens), strtr($this->options['path'], $tokens), $link_options);
     }
     return '';
