     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62

    <?php
    /**
     * @type FileHandler
     *
     * Minimal filehandler
     * for media types.
     */
    namespace Catapult;
    final class FileHandler extends Types {
        public static function save($as=null, $contents)
        {
          if (!self::try_directory($as)) {
            return -1;
          }

          return file_put_contents(realpath($as) . $as, $contents);
        }

        public static function read($filename)
        {
          if (!(is_file(realpath($filename)))) {
            throw new \CatapultApiException("File does not exist");
          }

          return file_get_contents(realpath($filename));
        }

        /**
         * make a directory
         * if needed
           * @param fully qualified path
         */
        public static function try_directory($file)
        {
          $matches = array();
          preg_match("/(.*\/).*$/", $file, $matches);

          try {
            if (sizeof($matches) >= 1) {
              $folder = $matches[1];

              if (!(is_dir($folder))) {
                mkdir($folder);
                return 1;
              }
            }
          } catch (Exception $e) {
            /** do not handle this exception it is low level and will be warned by the caller **/

            return -1;
          }

          return 1;
        }

        public function __toString()
        {
          return (string) $this->as;
        }
    }