original_string: protected function validate_files_layout() {
  
          if (!is_array($this->extractfiles) or count($this->extractfiles) < 4) {
              // We need the English language pack with the name of the plugin at least.
              $this->add_message(self::ERROR, 'filesnumber');
              return false;
          }
  
          foreach ($this->extractfiles as $filerelname => $filestatus) {
              if ($filestatus !== true) {
                  $this->add_message(self::ERROR, 'filestatus', array('file' => $filerelname, 'status' => $filestatus));
                  return false;
              }
          }
  
          foreach (array_keys($this->extractfiles) as $filerelname) {
              if (!file_exists($this->extractdir.'/'.$filerelname)) {
                  $this->add_message(self::ERROR, 'filenotexists', array('file' => $filerelname));
                  return false;
              }
          }
  
          foreach (array_keys($this->extractfiles) as $filerelname) {
              $matches = array();
              if (!preg_match("#^([^/]+)/#", $filerelname, $matches)
                      or (!is_null($this->rootdir) and $this->rootdir !== $matches[1])) {
                  $this->add_message(self::ERROR, 'onedir');
                  return false;
              }
              $this->rootdir = $matches[1];
          }
  
          if ($this->rootdir !== clean_param($this->rootdir, PARAM_PLUGIN)) {
              $this->add_message(self::ERROR, 'rootdirinvalid', $this->rootdir);
              return false;
          } else {
              $this->add_message(self::INFO, 'rootdir', $this->rootdir);
          }
  
          return is_dir($this->extractdir.'/'.$this->rootdir);
      }
code: protected function validate_files_layout() {
  
          if (!is_array($this->extractfiles) or count($this->extractfiles) < 4) {
              // We need the English language pack with the name of the plugin at least.
              $this->add_message(self::ERROR, 'filesnumber');
              return false;
          }
  
          foreach ($this->extractfiles as $filerelname => $filestatus) {
              if ($filestatus !== true) {
                  $this->add_message(self::ERROR, 'filestatus', array('file' => $filerelname, 'status' => $filestatus));
                  return false;
              }
          }
  
          foreach (array_keys($this->extractfiles) as $filerelname) {
              if (!file_exists($this->extractdir.'/'.$filerelname)) {
                  $this->add_message(self::ERROR, 'filenotexists', array('file' => $filerelname));
                  return false;
              }
          }
  
          foreach (array_keys($this->extractfiles) as $filerelname) {
              $matches = array();
              if (!preg_match("#^([^/]+)/#", $filerelname, $matches)
                      or (!is_null($this->rootdir) and $this->rootdir !== $matches[1])) {
                  $this->add_message(self::ERROR, 'onedir');
                  return false;
              }
              $this->rootdir = $matches[1];
          }
  
          if ($this->rootdir !== clean_param($this->rootdir, PARAM_PLUGIN)) {
              $this->add_message(self::ERROR, 'rootdirinvalid', $this->rootdir);
              return false;
          } else {
              $this->add_message(self::INFO, 'rootdir', $this->rootdir);
          }
  
          return is_dir($this->extractdir.'/'.$this->rootdir);
      }
code_tokens: protected function validate_files_layout ( ) { if ( ! is_array ( $ this -> extractfiles ) or count ( $ this -> extractfiles ) < 4 ) { // We need the English language pack with the name of the plugin at least. $ this -> add_message ( self :: ERROR , 'filesnumber' ) ; return false ; } foreach ( $ this -> extractfiles as $ filerelname => $ filestatus ) { if ( $ filestatus !== true ) { $ this -> add_message ( self :: ERROR , 'filestatus' , array ( 'file' => $ filerelname , 'status' => $ filestatus ) ) ; return false ; } } foreach ( array_keys ( $ this -> extractfiles ) as $ filerelname ) { if ( ! file_exists ( $ this -> extractdir . '/' . $ filerelname ) ) { $ this -> add_message ( self :: ERROR , 'filenotexists' , array ( 'file' => $ filerelname ) ) ; return false ; } } foreach ( array_keys ( $ this -> extractfiles ) as $ filerelname ) { $ matches = array ( ) ; if ( ! preg_match ( "#^([^/]+)/#" , $ filerelname , $ matches ) or ( ! is_null ( $ this -> rootdir ) and $ this -> rootdir !== $ matches [ 1 ] ) ) { $ this -> add_message ( self :: ERROR , 'onedir' ) ; return false ; } $ this -> rootdir = $ matches [ 1 ] ; } if ( $ this -> rootdir !== clean_param ( $ this -> rootdir , PARAM_PLUGIN ) ) { $ this -> add_message ( self :: ERROR , 'rootdirinvalid' , $ this -> rootdir ) ; return false ; } else { $ this -> add_message ( self :: INFO , 'rootdir' , $ this -> rootdir ) ; } return is_dir ( $ this -> extractdir . '/' . $ this -> rootdir ) ; }
docstring: Returns false if files in the ZIP do not have required layout.
  
  @return bool
docstring_tokens: Returns false if files in the ZIP do not have required layout .