diff -ur /home/rgo_main2013/home/rgo_main2013/patches/views_php/views_php/plugins/views/views_php_handler_area.inc /home/rgo_main2013/public_html/sites/all/modules/contrib/views_php/plugins/views/views_php_handler_area.inc --- a/plugins/views/views_php_handler_area.inc 2015-11-12 15:51:38.000000000 +0300 +++ b/plugins/views/views_php_handler_area.inc 2018-12-07 14:25:25.151928000 +0300 @@ -34,9 +34,9 @@ * Implements views_handler_area#render(). */ function render($empty = FALSE) { - // Ecexute output PHP code. + // Execute output PHP code. if ((!$empty || !empty($this->options['empty'])) && !empty($this->options['php_output'])) { - $function = create_function('$view, $handler, $results', ' ?>' . $this->options['php_output'] . '' . $this->options['php_output'] . 'view, $this, $this->view->result); return ob_get_clean(); diff -ur /home/rgo_main2013/home/rgo_main2013/patches/views_php/views_php/plugins/views/views_php_handler_field.inc /home/rgo_main2013/public_html/sites/all/modules/contrib/views_php/plugins/views/views_php_handler_field.inc --- a/plugins/views/views_php_handler_field.inc 2015-11-12 15:51:38.000000000 +0300 +++ b/plugins/views/views_php_handler_field.inc 2018-12-07 14:38:47.793261000 +0300 @@ -112,9 +112,9 @@ * @see self::php_post_execute() */ function php_pre_execute() { - // Ecexute static PHP code. + // Execute static PHP code. if (!empty($this->options['php_setup'])) { - $function = create_function('$view, $handler, &$static', $this->options['php_setup'] . ';'); + $function = views_php_create_function('$view, $handler, &$static', $this->options['php_setup'] . ';'); ob_start(); $function($this->view, $this, $this->php_static_variable); ob_end_clean(); @@ -126,9 +126,9 @@ * @see views_php_views_post_execute() */ function php_post_execute() { - // Ecexute value PHP code. + // Execute value PHP code. if (!empty($this->options['php_value'])) { - $function = create_function('$view, $handler, &$static, $row, $data', $this->options['php_value'] . ';'); + $function = views_php_create_function('$view, $handler, &$static, $row, $data', $this->options['php_value'] . ';'); ob_start(); foreach ($this->view->result as $i => &$row) { $normalized_row = new stdClass; @@ -144,7 +144,7 @@ if (!empty($this->options['use_php_click_sortable']) && !empty($this->php_click_sort_order)) { if ($this->options['use_php_click_sortable'] == self::CLICK_SORT_PHP) { if (!empty($this->options['php_click_sortable'])) { - $this->php_click_sort_function = create_function('$view, $handler, &$static, $row1, $row2', $this->options['php_click_sortable'] . ';'); + $this->php_click_sort_function = views_php_create_function('$view, $handler, &$static, $row1, $row2', $this->options['php_click_sortable'] . ';'); } } else { @@ -160,6 +160,7 @@ if (isset($this->php_click_sort_function)) { usort($this->view->result, array($this, 'php_click_sort')); + unset($this->php_click_sort_function); /* Closures are not serializable. */ } } } @@ -195,26 +196,17 @@ } /** - * Implements views_handler_field#pre_render(). - */ - function pre_render(&$values) { - if (!empty($this->options['php_output'])) { - $this->php_output_lamda_function = create_function('$view, $handler, &$static, $row, $data, $value', ' ?>' . $this->options['php_output'] . 'options['php_output']) && isset($this->php_output_lamda_function)) { + // Execute output PHP code. + if (!empty($this->options['php_output'])) { $normalized_row = new stdClass; foreach ($this->view->display_handler->get_handlers('field') as $field => $handler) { $normalized_row->$field = isset($values->{$handler->field_alias}) ? $values->{$handler->field_alias} : NULL; } - $function = $this->php_output_lamda_function; + $function = views_php_create_function('$view, $handler, &$static, $row, $data, $value', ' ?>' . $this->options['php_output'] . 'view, $this, $this->php_static_variable, $normalized_row, $values, isset($values->{$this->field_alias}) ? $values->{$this->field_alias} : NULL); $value = ob_get_clean(); diff -ur /home/rgo_main2013/home/rgo_main2013/patches/views_php/views_php/plugins/views/views_php_handler_filter.inc /home/rgo_main2013/public_html/sites/all/modules/contrib/views_php/plugins/views/views_php_handler_filter.inc --- a/plugins/views/views_php_handler_filter.inc 2015-11-12 15:51:38.000000000 +0300 +++ b/plugins/views/views_php_handler_filter.inc 2018-12-07 14:24:50.209215000 +0300 @@ -65,7 +65,7 @@ function php_pre_execute() { // Ecexute static PHP code. if (!empty($this->options['php_setup'])) { - $function = create_function('$view, $handler, &$static', $this->options['php_setup'] . ';'); + $function = views_php_create_function('$view, $handler, &$static', $this->options['php_setup'] . ';'); ob_start(); $function($this->view, $this, $this->php_static_variable); ob_end_clean(); @@ -79,7 +79,7 @@ function php_post_execute() { // Evaluate the PHP code. if (!empty($this->options['php_filter'])) { - $function = create_function('$view, $handler, &$static, $row, $data', $this->options['php_filter'] . ';'); + $function = views_php_create_function('$view, $handler, &$static, $row, $data', $this->options['php_filter'] . ';'); ob_start(); foreach ($this->view->result as $i => $row) { $normalized_row = new stdClass; diff -ur /home/rgo_main2013/home/rgo_main2013/patches/views_php/views_php/plugins/views/views_php_handler_sort.inc /home/rgo_main2013/public_html/sites/all/modules/contrib/views_php/plugins/views/views_php_handler_sort.inc --- a/plugins/views/views_php_handler_sort.inc 2015-11-12 15:51:38.000000000 +0300 +++ b/plugins/views/views_php_handler_sort.inc 2018-12-07 14:24:07.931029000 +0300 @@ -57,7 +57,7 @@ function php_pre_execute() { // Ecexute static PHP code. if (!empty($this->options['php_setup'])) { - $function = create_function('$view, $handler, &$static', $this->options['php_setup'] . ';'); + $function = views_php_create_function('$view, $handler, &$static', $this->options['php_setup'] . ';'); ob_start(); $function($this->view, $this, $this->php_static_variable); ob_end_clean(); @@ -70,9 +70,10 @@ */ function php_post_execute() { if (!empty($this->options['php_sort']) && $this->view->style_plugin->build_sort()) { - $this->php_sort_function = create_function('$view, $handler, &$static, $row1, $row2', $this->options['php_sort'] . ';'); + $this->php_sort_function = views_php_create_function('$view, $handler, &$static, $row1, $row2', $this->options['php_sort'] . ';'); ob_start(); usort($this->view->result, array($this, 'php_sort')); + unset($this->php_sort_function); /* Closure objects are not serializable. */ ob_end_clean(); } } diff -ur /home/rgo_main2013/home/rgo_main2013/patches/views_php/views_php/plugins/views/views_php_plugin_cache.inc /home/rgo_main2013/public_html/sites/all/modules/contrib/views_php/plugins/views/views_php_plugin_cache.inc --- a/plugins/views/views_php_plugin_cache.inc 2015-11-12 15:51:38.000000000 +0300 +++ b/plugins/views/views_php_plugin_cache.inc 2018-12-07 14:22:43.216475000 +0300 @@ -63,7 +63,7 @@ $cache = cache_get($this->get_results_key(), $this->table); $fresh = !empty($cache); if ($fresh && !empty($this->options['php_cache_results'])) { - $function = create_function('$view, $plugin, $cache', $this->options['php_cache_results'] . ';'); + $function = views_php_create_function('$view, $plugin, $cache', $this->options['php_cache_results'] . ';'); ob_start(); $fresh = $function($this->view, $this, $cache); ob_end_clean(); @@ -84,7 +84,7 @@ $cache = cache_get($this->get_output_key(), $this->table); $fresh = !empty($cache); if ($fresh && !empty($this->options['php_cache_output'])) { - $function = create_function('$view, $plugin, $cache', $this->options['php_cache_output'] . ';'); + $function = views_php_create_function('$view, $plugin, $cache', $this->options['php_cache_output'] . ';'); ob_start(); $fresh = $function($this->view, $this, $cache); ob_end_clean(); --- a/views_php.module 2015-11-12 15:51:38.000000000 +0300 +++ b/views_php.module 2018-12-07 15:25:23.858070000 +0300 @@ -27,7 +27,7 @@ } if (!isset($function[$view_name . ':' . $display_id])) { - $function[$view_name . ':' . $display_id] = create_function('$view_name, $display_id, $account', $php_access . ';'); + $function[$view_name . ':' . $display_id] = views_php_create_function('$view_name, $display_id, $account', $php_access . ';'); } ob_start(); @@ -158,3 +158,10 @@ $view->build_info['query']->range(); } } + +/** + * Internal support: create_function() emulation using anonymous functions. + */ +function views_php_create_function($args, $code) { + return eval('return function (' . $args . ') {' . $code . '};'); +}