roundcubemail/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
public function activate_script($name)
    {
        // Kolab's KEP:14
        if ($this->rc->config->get('managesieve_kolab_master')) {
            $extension   = $this->rc->config->get('managesieve_filename_extension', '.sieve');
            $user_script = $_SESSION['managesieve_user_script'];

            // if the script is not active...
            if ($user_script && array_search($name, $this->active) === false) {
                // ...rewrite USER file adding appropriate include command
                if ($this->sieve->load($user_script)) {
                    $script = $this->sieve->script->as_array();
                    $list   = array();
                    $regexp = '/' . preg_quote($extension, '/') . '$/';

                    // Create new include entry
                    $rule = array(
                        'actions' => array(
                            0 => array(
                                'target'   => $name.$extension,
                                'type'     => 'include',
                                'personal' => true,
                    )));

                    // get all active scripts for sorting
                    foreach ($script as $rid => $rules) {
                        foreach ($rules['actions'] as $action) {
                            if ($action['type'] == 'include' && empty($action['global'])) {
                                $target = $extension ? preg_replace($regexp, '', $action['target']) : $action['target'];
                                $list[] = $target;
                            }
                        }
                    }
                    $list[] = $name;

                    // Sort and find current script position
                    asort($list, SORT_LOCALE_STRING);
                    $list = array_values($list);
                    $index = array_search($name, $list);

                    // add rule at the end of the script
                    if ($index === false || $index == count($list)-1) {
                        $this->sieve->script->add_rule($rule);
                    }
                    // add rule at index position
                    else {
                        $script2 = array();
                        foreach ($script as $rid => $rules) {
                            if ($rid == $index) {
                                $script2[] = $rule;
                            }
                            $script2[] = $rules;
                        }
                        $this->sieve->script->content = $script2;
                    }

                    $result = $this->sieve->save();
                    if ($result) {
                        $this->active[] = $name;
                    }
                }
            }
        }
        else {
            $result = $this->sieve->activate($name);
            if ($result)
                $this->active = array($name);
        }

        return $result;
    }
public function activate_script($name)
    {
        // Kolab's KEP:14
        if ($this->rc->config->get('managesieve_kolab_master')) {
            $extension   = $this->rc->config->get('managesieve_filename_extension', '.sieve');
            $user_script = $_SESSION['managesieve_user_script'];

            // if the script is not active...
            if ($user_script && array_search($name, $this->active) === false) {
                // ...rewrite USER file adding appropriate include command
                if ($this->sieve->load($user_script)) {
                    $script = $this->sieve->script->as_array();
                    $list   = array();
                    $regexp = '/' . preg_quote($extension, '/') . '$/';

                    // Create new include entry
                    $rule = array(
                        'actions' => array(
                            0 => array(
                                'target'   => $name.$extension,
                                'type'     => 'include',
                                'personal' => true,
                    )));

                    // get all active scripts for sorting
                    foreach ($script as $rid => $rules) {
                        foreach ($rules['actions'] as $action) {
                            if ($action['type'] == 'include' && empty($action['global'])) {
                                $target = $extension ? preg_replace($regexp, '', $action['target']) : $action['target'];
                                $list[] = $target;
                            }
                        }
                    }
                    $list[] = $name;

                    // Sort and find current script position
                    asort($list, SORT_LOCALE_STRING);
                    $list = array_values($list);
                    $index = array_search($name, $list);

                    // add rule at the end of the script
                    if ($index === false || $index == count($list)-1) {
                        $this->sieve->script->add_rule($rule);
                    }
                    // add rule at index position
                    else {
                        $script2 = array();
                        foreach ($script as $rid => $rules) {
                            if ($rid == $index) {
                                $script2[] = $rule;
                            }
                            $script2[] = $rules;
                        }
                        $this->sieve->script->content = $script2;
                    }

                    $result = $this->sieve->save();
                    if ($result) {
                        $this->active[] = $name;
                    }
                }
            }
        }
        else {
            $result = $this->sieve->activate($name);
            if ($result)
                $this->active = array($name);
        }

        return $result;
    }
public function activate_script ( $ name ) { // Kolab's KEP:14 if ( $ this -> rc -> config -> get ( 'managesieve_kolab_master' ) ) { $ extension = $ this -> rc -> config -> get ( 'managesieve_filename_extension' , '.sieve' ) ; $ user_script = $ _SESSION [ 'managesieve_user_script' ] ; // if the script is not active... if ( $ user_script && array_search ( $ name , $ this -> active ) === false ) { // ...rewrite USER file adding appropriate include command if ( $ this -> sieve -> load ( $ user_script ) ) { $ script = $ this -> sieve -> script -> as_array ( ) ; $ list = array ( ) ; $ regexp = '/' . preg_quote ( $ extension , '/' ) . '$/' ; // Create new include entry $ rule = array ( 'actions' => array ( 0 => array ( 'target' => $ name . $ extension , 'type' => 'include' , 'personal' => true , ) ) ) ; // get all active scripts for sorting foreach ( $ script as $ rid => $ rules ) { foreach ( $ rules [ 'actions' ] as $ action ) { if ( $ action [ 'type' ] == 'include' && empty ( $ action [ 'global' ] ) ) { $ target = $ extension ? preg_replace ( $ regexp , '' , $ action [ 'target' ] ) : $ action [ 'target' ] ; $ list [ ] = $ target ; } } } $ list [ ] = $ name ; // Sort and find current script position asort ( $ list , SORT_LOCALE_STRING ) ; $ list = array_values ( $ list ) ; $ index = array_search ( $ name , $ list ) ; // add rule at the end of the script if ( $ index === false || $ index == count ( $ list ) - 1 ) { $ this -> sieve -> script -> add_rule ( $ rule ) ; } // add rule at index position else { $ script2 = array ( ) ; foreach ( $ script as $ rid => $ rules ) { if ( $ rid == $ index ) { $ script2 [ ] = $ rule ; } $ script2 [ ] = $ rules ; } $ this -> sieve -> script -> content = $ script2 ; } $ result = $ this -> sieve -> save ( ) ; if ( $ result ) { $ this -> active [ ] = $ name ; } } } } else { $ result = $ this -> sieve -> activate ( $ name ) ; if ( $ result ) $ this -> active = array ( $ name ) ; } return $ result ; }
Activates sieve script

@param string $name Script name

@return bool True on success, False on failure
Activates sieve script