function PclZip::privParseOptions in Loft Data Grids 7.2
Same name and namespace in other branches
- 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/PCLZip/pclzip.lib.php \PclZip::privParseOptions()
5 calls to PclZip::privParseOptions()
- PclZip::add in vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/PCLZip/pclzip.lib.php
- PclZip::create in vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/PCLZip/pclzip.lib.php
- PclZip::delete in vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/PCLZip/pclzip.lib.php
- PclZip::extract in vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/PCLZip/pclzip.lib.php
- PclZip::extractByIndex in vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/PCLZip/pclzip.lib.php
File
- vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/PCLZip/pclzip.lib.php, line 1426
Class
- PclZip
Code
function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options = false) {
$v_result = 1;
$i = 0;
while ($i < $p_size) {
if (!isset($v_requested_options[$p_options_list[$i]])) {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '" . $p_options_list[$i] . "' for this method");
return PclZip::errorCode();
}
switch ($p_options_list[$i]) {
case PCLZIP_OPT_PATH:
case PCLZIP_OPT_REMOVE_PATH:
case PCLZIP_OPT_ADD_PATH:
if ($i + 1 >= $p_size) {
PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
$v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i + 1], FALSE);
$i++;
break;
case PCLZIP_OPT_TEMP_FILE_THRESHOLD:
if ($i + 1 >= $p_size) {
PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '" . PclZipUtilOptionText($p_options_list[$i]) . "' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");
return PclZip::errorCode();
}
$v_value = $p_options_list[$i + 1];
if (!is_integer($v_value) || $v_value < 0) {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
$v_result_list[$p_options_list[$i]] = $v_value * 1048576;
$i++;
break;
case PCLZIP_OPT_TEMP_FILE_ON:
if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '" . PclZipUtilOptionText($p_options_list[$i]) . "' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");
return PclZip::errorCode();
}
$v_result_list[$p_options_list[$i]] = true;
break;
case PCLZIP_OPT_TEMP_FILE_OFF:
if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '" . PclZipUtilOptionText($p_options_list[$i]) . "' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'");
return PclZip::errorCode();
}
if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '" . PclZipUtilOptionText($p_options_list[$i]) . "' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'");
return PclZip::errorCode();
}
$v_result_list[$p_options_list[$i]] = true;
break;
case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION:
if ($i + 1 >= $p_size) {
PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
if (is_string($p_options_list[$i + 1]) && $p_options_list[$i + 1] != '') {
$v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i + 1], FALSE);
$i++;
}
else {
}
break;
case PCLZIP_OPT_BY_NAME:
if ($i + 1 >= $p_size) {
PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
if (is_string($p_options_list[$i + 1])) {
$v_result_list[$p_options_list[$i]][0] = $p_options_list[$i + 1];
}
else {
if (is_array($p_options_list[$i + 1])) {
$v_result_list[$p_options_list[$i]] = $p_options_list[$i + 1];
}
else {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
}
$i++;
break;
case PCLZIP_OPT_BY_EREG:
$p_options_list[$i] = PCLZIP_OPT_BY_PREG;
case PCLZIP_OPT_BY_PREG:
if ($i + 1 >= $p_size) {
PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
if (is_string($p_options_list[$i + 1])) {
$v_result_list[$p_options_list[$i]] = $p_options_list[$i + 1];
}
else {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
$i++;
break;
case PCLZIP_OPT_COMMENT:
case PCLZIP_OPT_ADD_COMMENT:
case PCLZIP_OPT_PREPEND_COMMENT:
if ($i + 1 >= $p_size) {
PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
if (is_string($p_options_list[$i + 1])) {
$v_result_list[$p_options_list[$i]] = $p_options_list[$i + 1];
}
else {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
$i++;
break;
case PCLZIP_OPT_BY_INDEX:
if ($i + 1 >= $p_size) {
PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
$v_work_list = array();
if (is_string($p_options_list[$i + 1])) {
$p_options_list[$i + 1] = strtr($p_options_list[$i + 1], ' ', '');
$v_work_list = explode(",", $p_options_list[$i + 1]);
}
else {
if (is_integer($p_options_list[$i + 1])) {
$v_work_list[0] = $p_options_list[$i + 1] . '-' . $p_options_list[$i + 1];
}
else {
if (is_array($p_options_list[$i + 1])) {
$v_work_list = $p_options_list[$i + 1];
}
else {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
}
}
$v_sort_flag = false;
$v_sort_value = 0;
for ($j = 0; $j < sizeof($v_work_list); $j++) {
$v_item_list = explode("-", $v_work_list[$j]);
$v_size_item_list = sizeof($v_item_list);
if ($v_size_item_list == 1) {
$v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];
$v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[0];
}
elseif ($v_size_item_list == 2) {
$v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];
$v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[1];
}
else {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) {
$v_sort_flag = true;
PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
$v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start'];
}
if ($v_sort_flag) {
}
$i++;
break;
case PCLZIP_OPT_REMOVE_ALL_PATH:
case PCLZIP_OPT_EXTRACT_AS_STRING:
case PCLZIP_OPT_NO_COMPRESSION:
case PCLZIP_OPT_EXTRACT_IN_OUTPUT:
case PCLZIP_OPT_REPLACE_NEWER:
case PCLZIP_OPT_STOP_ON_ERROR:
$v_result_list[$p_options_list[$i]] = true;
break;
case PCLZIP_OPT_SET_CHMOD:
if ($i + 1 >= $p_size) {
PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
$v_result_list[$p_options_list[$i]] = $p_options_list[$i + 1];
$i++;
break;
case PCLZIP_CB_PRE_EXTRACT:
case PCLZIP_CB_POST_EXTRACT:
case PCLZIP_CB_PRE_ADD:
case PCLZIP_CB_POST_ADD:
if ($i + 1 >= $p_size) {
PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
$v_function_name = $p_options_list[$i + 1];
if (!function_exists($v_function_name)) {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '" . $v_function_name . "()' is not an existing function for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'");
return PclZip::errorCode();
}
$v_result_list[$p_options_list[$i]] = $v_function_name;
$i++;
break;
default:
PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown parameter '" . $p_options_list[$i] . "'");
return PclZip::errorCode();
}
$i++;
}
if ($v_requested_options !== false) {
for ($key = reset($v_requested_options); $key = key($v_requested_options); $key = next($v_requested_options)) {
if ($v_requested_options[$key] == 'mandatory') {
if (!isset($v_result_list[$key])) {
PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter " . PclZipUtilOptionText($key) . "(" . $key . ")");
return PclZip::errorCode();
}
}
}
}
if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
}
return $v_result;
}