diff -urp old/custom_pagers/custom_pagers.install new/custom_pagers/custom_pagers.install
--- old/custom_pagers/custom_pagers.install	2007-11-06 12:54:56.000000000 +0200
+++ new/custom_pagers/custom_pagers.install	2008-07-02 14:12:55.593750000 +0300
@@ -13,7 +13,8 @@ function custom_pagers_install() {
         title varchar(255) NOT NULL default '',
         list_php text,
         view varchar(255) NOT NULL default '',
-        args varchar(255) NOT NULL default '',
+        args varchar(255) NOT NULL default '',
+        args_type int(4) NOT NULL,
         position varchar(16) NOT NULL default 'bottom',
         visibility_php text,
         node_type varchar(255) default '',
@@ -28,7 +29,8 @@ function custom_pagers_install() {
         title varchar(255) NOT NULL default '',
         list_php text,
         view varchar(255) NOT NULL default '',
-        args varchar(255) NOT NULL default '',
+        args varchar(255) NOT NULL default '',
+        args_format smallint NOT NULL,
         position varchar(16) NOT NULL default 'bottom',
         visibility_php text,
         node_type varchar(255) default '',
@@ -70,7 +72,24 @@ function custom_pagers_update_2() {
       break;
   }
   return $ret;
-}
+}
+
+/**
+ * Add column to store arguments type.
+ */
+function custom_pagers_update_3() {
+  $ret = array();
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      $ret[] = update_sql("ALTER TABLE {custom_pager} ADD COLUMN args_type int(4) NOT NULL");
+      break;
+    case 'pgsql':
+      db_add_column($ret, 'custom_pager', 'args_type', 'smallint', array('not null' => TRUE));
+      break;
+  }
+  return $ret;
+}
 
 function custom_pagers_uninstall() {
   db_query('DROP TABLE {custom_pager}');
diff -urp old/custom_pagers/custom_pagers.module new/custom_pagers/custom_pagers.module
--- old/custom_pagers/custom_pagers.module	2008-01-05 00:39:08.000000000 +0200
+++ new/custom_pagers/custom_pagers.module	2008-07-02 14:36:12.781250000 +0300
@@ -278,13 +278,26 @@ function custom_pagers_form() {
       '#default_value' => $pid ? $pager->view : NULL
     );
 
-    $form['node_list']['args'] = array(
+    $form['node_list']['args_settings'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('View arguments'),      
+    );
+    $form['node_list']['args_settings']['args'] = array(
       '#type' => 'textarea',
-      '#title' => t('View arguments'),
+      '#title' => t('Arguments'),
       '#required' => FALSE,
-      '#description' => t('A return-delimited list of arguments to pass into the selected view. If Token.module is enabled, placeholder tokens like [type] and [author] can be used.'),
       '#default_value' => $pid ? $pager->args : NULL
-    );
+    );
+    
+   $form['node_list']['args_settings']['args_type'] = array(
+     '#type' => 'radios',
+     '#title' => t('Arguments format'),
+     '#options' => array(
+       t('A return-delimited list of arguments to pass into the selected view.'), 
+       t('An array of arguments, using PHP code. Should not include &lt;?php ?&gt; delimiters.')
+     ),
+     '#default_value' => $pid ? $pager->args_type : 0,
+    );    
 
     $form['help'] = array(
       '#type' => 'fieldset',
@@ -371,15 +384,15 @@ function _custom_pagers_load_all_pagers(
 function _custom_pagers_save_pager($pager = NULL) {
   if (isset($pager->pid)) {
     $sql  = "UPDATE {custom_pager} SET";
-    $sql .= " title = '%s', view = '%s', args = '%s', list_php = '%s', visibility_php = '%s', node_type = '%s', position = '%s', reverse_list = %d, cache_list = %d";
+    $sql .= " title = '%s', view = '%s', args = '%s', args_type = %d, node_type = '%s', position = '%s'";
     $sql .= " WHERE pid = %d";
-    db_query($sql, $pager->title, $pager->view, $pager->args, $pager->list_php, $pager->visibility_php, $pager->node_type, $pager->position, $pager->reverse_list, $pager->cache_list, $pager->pid);
+    db_query($sql, $pager->title, $pager->view, $pager->args, $pager->args_type, $pager->node_type, $pager->position, $pager->pid);
   }
   else {
     $sql  = "INSERT INTO {custom_pager}";
-    $sql .= " (title, view, args, position, list_php, visibility_php, node_type, reverse_list, cache_list)";
-    $sql .= " VALUES ('%s', '%s',  '%s',  '%s', '%s', '%s', '%s', '%s', '%s')";
-    db_query($sql, $pager->title, $pager->view, $pager->args, $pager->position, $pager->list_php, $pager->visibility_php, $pager->node_type, $pager->reverse_list, $pager->cache_list);
+    $sql .= " (title, view, args, args_type, position, node_type)";
+    $sql .= " VALUES ('%s', '%s', '%s', %d, '%s', '%s')";
+    db_query($sql, $pager->title, $pager->view, $pager->args, $pager->args_type, $pager->position, $pager->node_type);
   }
   cache_clear_all('custom_pagers_', 'cache', TRUE);
 }
@@ -448,9 +461,17 @@ function custom_pager_build_nav($pager, 
       ob_end_clean();
     }
     elseif (module_exists('views')) {
-      // Use a view to generate the list.
-      $args = explode("\n", $pager->args);
-      if (module_exists('token')) {
+     // Use a view to generate the list.
+     if ($pager->args_type == 0) {
+       $args = explode("\n", $pager->args);
+     }
+     // User PHP to get the views arguments.
+     elseif ($pager->args_type == 1) {
+       ob_start();
+       $args = eval($pager->args);
+       ob_end_clean();
+     }
+     if (module_exists('token')) {
         $args = token_replace($args, 'node', $node);
       }
       $view = views_get_view($pager->view);
