PclZip::privFileDescrParseAtt PHP Метод

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

--------------------------------------------------------------------------------
public privFileDescrParseAtt ( &$p_file_list, &$p_filedescr, $v_options, $v_requested_options = false )
    public function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options = false)
    {
        $v_result = 1;
        // ----- For each file in the list check the attributes
        foreach ($p_file_list as $v_key => $v_value) {
            // ----- Check if the option is supported
            if (!isset($v_requested_options[$v_key])) {
                // ----- Error log
                PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '" . $v_key . "' for this file");
                // ----- Return
                return PclZip::errorCode();
            }
            // ----- Look for attribute
            switch ($v_key) {
                case PCLZIP_ATT_FILE_NAME:
                    if (!is_string($v_value)) {
                        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, 'Invalid type ' . gettype($v_value) . ". String expected for attribute '" . PclZipUtilOptionText($v_key) . "'");
                        return PclZip::errorCode();
                    }
                    $p_filedescr['filename'] = PclZipUtilPathReduction($v_value);
                    if ($p_filedescr['filename'] == '') {
                        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '" . PclZipUtilOptionText($v_key) . "'");
                        return PclZip::errorCode();
                    }
                    break;
                case PCLZIP_ATT_FILE_NEW_SHORT_NAME:
                    if (!is_string($v_value)) {
                        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, 'Invalid type ' . gettype($v_value) . ". String expected for attribute '" . PclZipUtilOptionText($v_key) . "'");
                        return PclZip::errorCode();
                    }
                    $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value);
                    if ($p_filedescr['new_short_name'] == '') {
                        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '" . PclZipUtilOptionText($v_key) . "'");
                        return PclZip::errorCode();
                    }
                    break;
                case PCLZIP_ATT_FILE_NEW_FULL_NAME:
                    if (!is_string($v_value)) {
                        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, 'Invalid type ' . gettype($v_value) . ". String expected for attribute '" . PclZipUtilOptionText($v_key) . "'");
                        return PclZip::errorCode();
                    }
                    $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value);
                    if ($p_filedescr['new_full_name'] == '') {
                        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '" . PclZipUtilOptionText($v_key) . "'");
                        return PclZip::errorCode();
                    }
                    break;
                    // ----- Look for options that takes a string
                // ----- Look for options that takes a string
                case PCLZIP_ATT_FILE_COMMENT:
                    if (!is_string($v_value)) {
                        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, 'Invalid type ' . gettype($v_value) . ". String expected for attribute '" . PclZipUtilOptionText($v_key) . "'");
                        return PclZip::errorCode();
                    }
                    $p_filedescr['comment'] = $v_value;
                    break;
                case PCLZIP_ATT_FILE_MTIME:
                    if (!is_int($v_value)) {
                        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, 'Invalid type ' . gettype($v_value) . ". Integer expected for attribute '" . PclZipUtilOptionText($v_key) . "'");
                        return PclZip::errorCode();
                    }
                    $p_filedescr['mtime'] = $v_value;
                    break;
                case PCLZIP_ATT_FILE_CONTENT:
                    $p_filedescr['content'] = $v_value;
                    break;
                default:
                    // ----- Error log
                    PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown parameter '" . $v_key . "'");
                    // ----- Return
                    return PclZip::errorCode();
            }
            // ----- Look for mandatory options
            if ($v_requested_options !== false) {
                for ($key = reset($v_requested_options); $key = key($v_requested_options); $key = next($v_requested_options)) {
                    // ----- Look for mandatory option
                    if ($v_requested_options[$key] == 'mandatory') {
                        // ----- Look if present
                        if (!isset($p_file_list[$key])) {
                            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, 'Missing mandatory parameter ' . PclZipUtilOptionText($key) . '(' . $key . ')');
                            return PclZip::errorCode();
                        }
                    }
                }
            }
            // end foreach
        }
        // ----- Return
        return $v_result;
    }