public BinaryStream fopen(Env env, StringValue path, StringValue mode, LongValue options) { boolean useIncludePath = (options.toLong() & StreamModule.STREAM_USE_PATH) != 0; Value pathComponent = UrlModule.parse_url(env, path, UrlModule.PHP_URL_PATH); if (!pathComponent.isset()) { log.info(L.l("no path component found in '{0}'", path.toString())); return null; } return ZlibModule.gzopen( env, pathComponent.toStringValue(env), mode.toString(), useIncludePath); }
public static void addFormValue( Env env, ArrayValue array, String key, Value formValue, String[] formValueList, boolean addSlashesToValues) { int p = -1; int q = -1; if (key != null) { p = key.indexOf('['); q = key.indexOf(']', p); } if (p >= 0 && p < q) { String index = key; Value keyValue; Value existingValue; if (p > 0) { key = key.substring(0, p); key = key.replaceAll("\\.", "_"); keyValue = env.createString(key); existingValue = array.get(keyValue); if (existingValue == null || !existingValue.isset()) { existingValue = new ArrayValueImpl(); array.put(keyValue, existingValue); } else if (!existingValue.isArray()) { // existing is overwritten // php/115g existingValue = new ArrayValueImpl(); array.put(keyValue, existingValue); } array = (ArrayValue) existingValue; } int p1; while ((p1 = index.indexOf('[', q)) > 0) { key = index.substring(p + 1, q); if (key.equals("")) { existingValue = new ArrayValueImpl(); array.put(existingValue); } else { keyValue = env.createString(key); existingValue = array.get(keyValue); if (existingValue == null || !existingValue.isset()) { existingValue = new ArrayValueImpl(); array.put(keyValue, existingValue); } else if (!existingValue.isArray()) { existingValue = new ArrayValueImpl().put(existingValue); array.put(keyValue, existingValue); } } array = (ArrayValue) existingValue; p = p1; q = index.indexOf(']', p); } if (q > 0) index = index.substring(p + 1, q); else index = index.substring(p + 1); if (index.equals("")) { if (formValueList != null) { for (int i = 0; i < formValueList.length; i++) { Value value; if (formValueList[i] != null) value = env.createString(formValueList[i]); else value = NullValue.NULL; put(array, null, value, addSlashesToValues); } } else array.put(formValue); } else if ('0' <= index.charAt(0) && index.charAt(0) <= '9') put(array, LongValue.create(StringValue.toLong(index)), formValue, addSlashesToValues); else put(array, env.createString(index), formValue, addSlashesToValues); } else { if (key != null) { key = key.replaceAll("\\.", "_"); put(array, env.createString(key), formValue, addSlashesToValues); } else { put(array, null, formValue, addSlashesToValues); } } }