roundcubemail/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
public function list_scripts()
    {
        if ($this->list !== null) {
            return $this->list;
        }

        $this->list = $this->sieve->get_scripts();

        // Handle active script(s) and list of scripts according to Kolab's KEP:14
        if ($this->rc->config->get('managesieve_kolab_master')) {
            // Skip protected names
            foreach ((array)$this->list as $idx => $name) {
                $_name = strtoupper($name);
                if ($_name == 'MASTER')
                    $master_script = $name;
                else if ($_name == 'MANAGEMENT')
                    $management_script = $name;
                else if($_name == 'USER')
                    $user_script = $name;
                else
                    continue;

                unset($this->list[$idx]);
            }

            // get active script(s), read USER script
            if ($user_script) {
                $extension = $this->rc->config->get('managesieve_filename_extension', '.sieve');
                $filename_regex = '/'.preg_quote($extension, '/').'$/';
                $_SESSION['managesieve_user_script'] = $user_script;

                $this->sieve->load($user_script);

                foreach ($this->sieve->script->as_array() as $rules) {
                    foreach ($rules['actions'] as $action) {
                        if ($action['type'] == 'include' && empty($action['global'])) {
                            $name = preg_replace($filename_regex, '', $action['target']);
                            // make sure the script exist
                            if (in_array($name, $this->list)) {
                                $this->active[] = $name;
                            }
                        }
                    }
                }
            }
            // create USER script if it doesn't exist
            else {
                $content = "# USER Management Script\n"
                    ."#\n"
                    ."# This script includes the various active sieve scripts\n"
                    ."# it is AUTOMATICALLY GENERATED. DO NOT EDIT MANUALLY!\n"
                    ."#\n"
                    ."# For more information, see http://wiki.kolab.org/KEP:14#USER\n"
                    ."#\n";
                if ($this->sieve->save_script('USER', $content)) {
                    $_SESSION['managesieve_user_script'] = 'USER';
                    if (empty($this->master_file))
                        $this->sieve->activate('USER');
                }
            }
        }
        else if (!empty($this->list)) {
            // Get active script name
            if ($active = $this->sieve->get_active()) {
                $this->active = array($active);
            }

            // Hide scripts from config
            $exceptions = $this->rc->config->get('managesieve_filename_exceptions');
            if (!empty($exceptions)) {
                $this->list = array_diff($this->list, (array)$exceptions);
            }
        }

        // reindex
        if (!empty($this->list)) {
            $this->list = array_values($this->list);
        }

        return $this->list;
    }
public function list_scripts()
    {
        if ($this->list !== null) {
            return $this->list;
        }

        $this->list = $this->sieve->get_scripts();

        // Handle active script(s) and list of scripts according to Kolab's KEP:14
        if ($this->rc->config->get('managesieve_kolab_master')) {
            // Skip protected names
            foreach ((array)$this->list as $idx => $name) {
                $_name = strtoupper($name);
                if ($_name == 'MASTER')
                    $master_script = $name;
                else if ($_name == 'MANAGEMENT')
                    $management_script = $name;
                else if($_name == 'USER')
                    $user_script = $name;
                else
                    continue;

                unset($this->list[$idx]);
            }

            // get active script(s), read USER script
            if ($user_script) {
                $extension = $this->rc->config->get('managesieve_filename_extension', '.sieve');
                $filename_regex = '/'.preg_quote($extension, '/').'$/';
                $_SESSION['managesieve_user_script'] = $user_script;

                $this->sieve->load($user_script);

                foreach ($this->sieve->script->as_array() as $rules) {
                    foreach ($rules['actions'] as $action) {
                        if ($action['type'] == 'include' && empty($action['global'])) {
                            $name = preg_replace($filename_regex, '', $action['target']);
                            // make sure the script exist
                            if (in_array($name, $this->list)) {
                                $this->active[] = $name;
                            }
                        }
                    }
                }
            }
            // create USER script if it doesn't exist
            else {
                $content = "# USER Management Script\n"
                    ."#\n"
                    ."# This script includes the various active sieve scripts\n"
                    ."# it is AUTOMATICALLY GENERATED. DO NOT EDIT MANUALLY!\n"
                    ."#\n"
                    ."# For more information, see http://wiki.kolab.org/KEP:14#USER\n"
                    ."#\n";
                if ($this->sieve->save_script('USER', $content)) {
                    $_SESSION['managesieve_user_script'] = 'USER';
                    if (empty($this->master_file))
                        $this->sieve->activate('USER');
                }
            }
        }
        else if (!empty($this->list)) {
            // Get active script name
            if ($active = $this->sieve->get_active()) {
                $this->active = array($active);
            }

            // Hide scripts from config
            $exceptions = $this->rc->config->get('managesieve_filename_exceptions');
            if (!empty($exceptions)) {
                $this->list = array_diff($this->list, (array)$exceptions);
            }
        }

        // reindex
        if (!empty($this->list)) {
            $this->list = array_values($this->list);
        }

        return $this->list;
    }
public function list_scripts ( ) { if ( $ this -> list !== null ) { return $ this -> list ; } $ this -> list = $ this -> sieve -> get_scripts ( ) ; // Handle active script(s) and list of scripts according to Kolab's KEP:14 if ( $ this -> rc -> config -> get ( 'managesieve_kolab_master' ) ) { // Skip protected names foreach ( ( array ) $ this -> list as $ idx => $ name ) { $ _name = strtoupper ( $ name ) ; if ( $ _name == 'MASTER' ) $ master_script = $ name ; else if ( $ _name == 'MANAGEMENT' ) $ management_script = $ name ; else if ( $ _name == 'USER' ) $ user_script = $ name ; else continue ; unset ( $ this -> list [ $ idx ] ) ; } // get active script(s), read USER script if ( $ user_script ) { $ extension = $ this -> rc -> config -> get ( 'managesieve_filename_extension' , '.sieve' ) ; $ filename_regex = '/' . preg_quote ( $ extension , '/' ) . '$/' ; $ _SESSION [ 'managesieve_user_script' ] = $ user_script ; $ this -> sieve -> load ( $ user_script ) ; foreach ( $ this -> sieve -> script -> as_array ( ) as $ rules ) { foreach ( $ rules [ 'actions' ] as $ action ) { if ( $ action [ 'type' ] == 'include' && empty ( $ action [ 'global' ] ) ) { $ name = preg_replace ( $ filename_regex , '' , $ action [ 'target' ] ) ; // make sure the script exist if ( in_array ( $ name , $ this -> list ) ) { $ this -> active [ ] = $ name ; } } } } } // create USER script if it doesn't exist else { $ content = "# USER Management Script\n" . "#\n" . "# This script includes the various active sieve scripts\n" . "# it is AUTOMATICALLY GENERATED. DO NOT EDIT MANUALLY!\n" . "#\n" . "# For more information, see http://wiki.kolab.org/KEP:14#USER\n" . "#\n" ; if ( $ this -> sieve -> save_script ( 'USER' , $ content ) ) { $ _SESSION [ 'managesieve_user_script' ] = 'USER' ; if ( empty ( $ this -> master_file ) ) $ this -> sieve -> activate ( 'USER' ) ; } } } else if ( ! empty ( $ this -> list ) ) { // Get active script name if ( $ active = $ this -> sieve -> get_active ( ) ) { $ this -> active = array ( $ active ) ; } // Hide scripts from config $ exceptions = $ this -> rc -> config -> get ( 'managesieve_filename_exceptions' ) ; if ( ! empty ( $ exceptions ) ) { $ this -> list = array_diff ( $ this -> list , ( array ) $ exceptions ) ; } } // reindex if ( ! empty ( $ this -> list ) ) { $ this -> list = array_values ( $ this -> list ) ; } return $ this -> list ; }
List sieve scripts

@return array Scripts list
List sieve scripts