PclZip::extractByIndex PHP Метод

extractByIndex() публичный Метод

..)
public extractByIndex ( $p_index )
    public function extractByIndex($p_index)
    {
        $v_result = 1;
        // ----- Reset the error handler
        $this->privErrorReset();
        // ----- Check archive
        if (!$this->privCheckFormat()) {
            return 0;
        }
        // ----- Set default values
        $v_options = array();
        //    $v_path = "./";
        $v_path = '';
        $v_remove_path = '';
        $v_remove_all_path = false;
        // ----- Look for variable options arguments
        $v_size = func_num_args();
        // ----- Default values for option
        $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = false;
        // ----- Look for arguments
        if ($v_size > 1) {
            // ----- Get the arguments
            $v_arg_list = func_get_args();
            // ----- Remove form the options list the first argument
            array_shift($v_arg_list);
            $v_size--;
            // ----- Look for first arg
            if (is_int($v_arg_list[0]) && $v_arg_list[0] > 77000) {
                // ----- Parse the options
                $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array(PCLZIP_OPT_PATH => 'optional', PCLZIP_OPT_REMOVE_PATH => 'optional', PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', PCLZIP_OPT_ADD_PATH => 'optional', PCLZIP_CB_PRE_EXTRACT => 'optional', PCLZIP_CB_POST_EXTRACT => 'optional', PCLZIP_OPT_SET_CHMOD => 'optional', PCLZIP_OPT_REPLACE_NEWER => 'optional', PCLZIP_OPT_STOP_ON_ERROR => 'optional', PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', PCLZIP_OPT_TEMP_FILE_ON => 'optional', PCLZIP_OPT_TEMP_FILE_OFF => 'optional'));
                if ($v_result != 1) {
                    return 0;
                }
                // ----- Set the arguments
                if (isset($v_options[PCLZIP_OPT_PATH])) {
                    $v_path = $v_options[PCLZIP_OPT_PATH];
                }
                if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {
                    $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];
                }
                if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
                    $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];
                }
                if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {
                    // ----- Check for '/' in last path char
                    if (strlen($v_path) > 0 && substr($v_path, -1) != '/') {
                        $v_path .= '/';
                    }
                    $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];
                }
                if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) {
                    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = false;
                } else {
                }
            } else {
                // ----- Get the first argument
                $v_path = $v_arg_list[0];
                // ----- Look for the optional second argument
                if ($v_size == 2) {
                    $v_remove_path = $v_arg_list[1];
                } elseif ($v_size > 2) {
                    // ----- Error log
                    PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, 'Invalid number / type of arguments');
                    // ----- Return
                    return 0;
                }
            }
        }
        // ----- Trace
        // ----- Trick
        // Here I want to reuse extractByRule(), so I need to parse the $p_index
        // with privParseOptions()
        $v_arg_trick = array(PCLZIP_OPT_BY_INDEX, $p_index);
        $v_options_trick = array();
        $v_result = $this->privParseOptions($v_arg_trick, count($v_arg_trick), $v_options_trick, array(PCLZIP_OPT_BY_INDEX => 'optional'));
        if ($v_result != 1) {
            return 0;
        }
        $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX];
        // ----- Look for default option values
        $this->privOptionDefaultThreshold($v_options);
        // ----- Call the extracting fct
        if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) {
            return 0;
        }
        // ----- Return
        return $p_list;
    }

Usage Example

Пример #1
0
 public function extractTo($Path, $Names)
 {
     $Indexes = array();
     // Convert the name(s) to indexes.
     foreach ((array) $Names as $Name) {
         if (!isset($this->_Names[$Name])) {
             continue;
         }
         $Indexes[] = $this->_Names[$Name]['index'];
     }
     $IndexesStr = implode(',', $Indexes);
     $Result = $this->PclZip->extractByIndex($IndexesStr, $Path);
     return $Result != 0;
 }
All Usage Examples Of PclZip::extractByIndex