예제 #1
0
  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);
  }
예제 #2
0
파일: Post.java 프로젝트: hofmeister/Webi
  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);
      }
    }
  }