Ejemplo n.º 1
0
 function build($argv)
 {
     $input = new lmbCliInput();
     $input->setMinimumArguments(2);
     $input->read($argv, false);
     $arguments = $input->getArguments();
     if (!($dest_file = array_pop($arguments))) {
         echo "Error: You must specify output file.\n";
         return 1;
     }
     $src_files = array();
     foreach ($arguments as $src_file) {
         $src_files[] = realpath($src_file);
     }
     if (empty($src_files)) {
         echo "Error: You must specify at least one input file.\n";
         return 1;
     }
     $builder = new lmbJsPreprocessor();
     try {
         $contents = $builder->processFiles($src_files);
     } catch (lmbException $e) {
         echo 'Build error: ' . $e->getMessage();
         return 1;
     }
     lmbFs::safeWrite($dest_file, $contents);
     return 0;
 }
Ejemplo n.º 2
0
 protected function _generateContent($code)
 {
     $url = $this->getVersionUrl();
     $type = $this->has('type') ? $this->get('type') : 'echo';
     if ($this->has('gzip_static_dir')) {
         $zlevel = $this->has('gzip_level') ? $this->get('gzip_level') : 3;
         $file_source = lmbFs::normalizePath($this->get('gzip_static_dir'), lmbFs::UNIX) . '/' . str_replace('/', '-', lmbFs::normalizePath($this->getFileUrl(), lmbFs::UNIX));
         lmbFs::cp($this->getFilePath(), $this->getRootDir() . '/' . $file_source);
         $file_gz = $file_source . '.gz';
         lmbFs::safeWrite($this->getRootDir() . '/' . $file_gz, gzencode(file_get_contents($this->getFilePath()), $zlevel, FORCE_DEFLATE));
         $url = $this->addVersion($file_source);
     }
     switch ($type) {
         case 'echo':
             if ($this->has('to_var')) {
                 $code->writePhp($this->get('to_var') . ' = \'' . addslashes($url) . '\';');
             } else {
                 $code->writeHTML(htmlspecialchars($url, 3));
             }
             break;
         case 'js':
             $code->writeHTML('<script type="text/javascript" src="' . htmlspecialchars($url, 3) . '" ></script>');
             break;
         case 'css':
             $code->writeHTML('<link rel="stylesheet" type="text/css" href="' . htmlspecialchars($url, 3) . '" />');
             break;
         default:
             throw new lmbMacroException('Unknown type ' . $type);
     }
 }
Ejemplo n.º 3
0
 protected function _writeFile()
 {
     if ($this->_file_writed) {
         return;
     }
     $this->_file_writed = true;
     $file = lmbFs::normalizePath($this->get('src'), lmbFs::UNIX);
     $abs_file = $this->getRootDir() . '/' . $file;
     if (!file_exists($abs_file)) {
         if ($this->getBool('safe', false)) {
             $this->_file_path = $abs_file;
             $this->_file_url = $this->get('src');
             return;
         } else {
             throw new lmbMacroException('File ' . $abs_file . ' not found!');
         }
     }
     $contents = file_get_contents($abs_file);
     $css_dir = dirname($file);
     if (preg_match_all('~url\\(([^\\)]+)\\)~', $contents, $matches)) {
         $replaces = array();
         foreach ($matches[1] as $key => $match) {
             $match = trim($match, '\'" ');
             $replaces[$matches[0][$key]] = 'url(' . $this->addVersion(lmbFs::normalizePath($css_dir . '/' . $match, lmbFs::UNIX)) . ')';
         }
         $contents = str_replace(array_keys($replaces), array_values($replaces), $contents);
     }
     $url = lmbFs::normalizePath(ltrim($this->get('dir') . '/' . str_replace('/', '-', $file), '/'));
     $path = $this->getRootDir() . '/' . $url;
     lmbFs::safeWrite($path, trim($contents));
     $this->_file_path = $path;
     $this->_file_url = $url;
 }
Ejemplo n.º 4
0
 protected function _writeFile()
 {
     if ($this->_file_writed) {
         return;
     }
     $files = array();
     $join_contents = '';
     foreach ($this->children as $child) {
         if ($child instanceof lmbJsRequireOnceMacroTag) {
             $file = $child->getFilePath();
             if (!is_file($file) || !realpath($file) || null === ($content = file_get_contents($file))) {
                 if ($child->getBool('safe')) {
                     $join_contents .= "\n/* include " . basename($file) . " - NOT FOUND */\n";
                     continue;
                 } else {
                     throw new lmbMacroException('File "' . $file . '" not found in ' . $this->getRootDir() . ', src: "' . $child->get('src') . '"');
                 }
             }
             $file = lmbFs::normalizePath(realpath($file));
             if (!in_array($file, $files)) {
                 $files[] = $file;
                 $join_contents .= "\n/* include " . basename($file) . " */\n" . $content;
             }
         }
     }
     sort($files, SORT_STRING);
     $url = lmbFs::normalizePath(ltrim($this->get('dir') . '/' . md5(implode("\n", $files)) . '.js', '/'));
     $path = $this->getRootDir() . '/' . $url;
     lmbFs::safeWrite($path, trim($join_contents));
     $this->_file_path = $path;
     $this->_file_url = $url;
     $this->_file_writed = true;
 }
Ejemplo n.º 5
0
 protected function _saveCache()
 {
     if (!$this->isCacheEnabled()) {
         return;
     }
     lmbFs::safeWrite($this->getCacheFile(), serialize($this->export()));
 }
 function saveCache()
 {
     if (!$this->_changed) {
         return;
     }
     $content = serialize($this->_cached_paths);
     lmbFs::safeWrite($this->getCacheFile(), $content);
 }
 function testOnceRender()
 {
     lmb_env_set('LIMB_DOCUMENT_ROOT', lmb_env_get('LIMB_VAR_DIR') . '/www');
     lmbFs::safeWrite(lmb_env_get('LIMB_VAR_DIR') . '/www/js/main.js', 'function() { alert(1); }');
     $template = '{{js:require_once src="js/main.js" }}{{js_once src="js/main.js" }}';
     $page = $this->_createMacroTemplate($template, 'tpl.html');
     $content = '<script type="text/javascript" src="' . $this->toolkit->addVersionToUrl('js/main.js') . '" ></script>';
     $this->assertEqual($content, $page->render());
 }
 protected function _addFile($dir, $name, $content, $always_override = false)
 {
     $file = $dir . '/' . $name;
     if (!$always_override && !$this->_override_files && file_exists($file)) {
         if (!lmb_cli_ask_for_accept("Overwrite '{$file}'")) {
             return false;
         }
     }
     return lmbFs::safeWrite($file, $content);
 }
 function save($cache, $contents)
 {
     $file = $this->_getFilePath($cache);
     $dir = dirname($file);
     //cache conflict
     if (basename($dir) == $this->cache_file) {
         return false;
     }
     lmbFs::mkdir($dir);
     lmbFs::safeWrite($file, $contents);
 }
Ejemplo n.º 10
0
    function _createConfig($name = 'conf.php', $content = false)
    {
        if (!$content) {
            $content = <<<EOD
<?php
\$conf = array('foo' => 1,
              'bar' => 2);
EOD;
        }
        lmbFs::safeWrite($this->_getConfigPath($name), $content);
        return new lmbConf($this->_getConfigPath($name));
    }
 function set($key, $value, $ttl = false)
 {
     $key = $this->_resolveKey($key);
     $this->delete($key);
     if ($ttl) {
         $ttl_file = $this->_getCacheTtlFileName($key);
         lmbFs::safeWrite($ttl_file, (string) ($ttl + time()));
     }
     $file = $this->_getCacheFileName($key);
     lmbFs::safeWrite($file, $this->_createContainer($value));
     return true;
 }
Ejemplo n.º 12
0
 function testOnceRender()
 {
     $root = lmb_env_get('LIMB_VAR_DIR') . '/www/';
     lmb_env_set('LIMB_DOCUMENT_ROOT', $root);
     lmbFs::safeWrite($root . 'style/main.css', 'body {background-url: url("../images/one.jpg");}');
     lmbFs::safeWrite($root . 'images/one.jpg', 'simple content');
     $template = '{{css_compiled src="style/main.css" dir="media/css" /}}';
     $page = $this->_createMacroTemplate($template, 'tpl.html');
     $content = $page->render();
     $src = $this->toolkit->addVersionToUrl('media/css/style-main.css');
     $this->assertEqual('<link rel="stylesheet" type="text/css" href="' . $src . '" />', $content);
     $compiled_file = $root . 'media/css/style-main.css';
     $src = $this->toolkit->addVersionToUrl('images/one.jpg');
     $this->assertEqual('body {background-url: url(' . $src . ');}', file_get_contents($compiled_file));
 }
 function testGzipStatic()
 {
     if (!function_exists('gzencode')) {
         return print "Skip: function gzencode not exists.\n";
     }
     lmb_env_set('LIMB_DOCUMENT_ROOT', lmb_env_get('LIMB_VAR_DIR') . '/www/');
     lmbFs::safeWrite(lmb_env_get('LIMB_VAR_DIR') . '/www/one.js', 'var window = {};');
     $doc_root = lmb_env_get('LIMB_DOCUMENT_ROOT');
     $template = '{{file:version src="one.js" gzip_static_dir="media/var/gz" gzip_level="9" }}';
     $page = $this->_createMacroTemplate($template, 'tpl.html');
     $content = $page->render();
     $file = 'media/var/gz/one.js';
     $this->assertEqual($content, $this->toolkit->addVersionToUrl($file, false));
     $this->assertEqual('var window = {};', file_get_contents($doc_root . $file));
     $gz_file = $doc_root . $file . '.gz';
     $this->assertTrue(file_exists($gz_file));
     $this->assertEqual(gzencode('var window = {};', 9, FORCE_DEFLATE), file_get_contents($gz_file));
 }
 function testNotFoundFile()
 {
     $root = lmb_env_get('LIMB_VAR_DIR') . '/www';
     lmb_env_set('LIMB_DOCUMENT_ROOT', $root);
     lmbFs::rm($root);
     $template = '{{js_combined dir="media/"}}{{js_once src="js/main.js" }}{{/js_combined}}';
     $page = $this->_createMacroTemplate($template, 'tpl.html');
     try {
         $page->render();
         $this->assertTrue(false);
     } catch (lmbException $e) {
         $this->assertTrue(true);
     }
     lmbFs::safeWrite($root . '/js/blog.js', 'function blog() {};');
     $template = '{{js_combined dir="media"}}{{js_once src="js/main.js" safe="true" }}{{js_once src="js/blog.js" }}{{/js_combined}}';
     $page = $this->_createMacroTemplate($template, 'tpl.html');
     $page->render();
     $file = array_shift(lmbFs::ls($root . '/media/'));
     $js_content = "/* include main.js - NOT FOUND */\n\n/* include blog.js */\nfunction blog() {};";
     $this->assertEqual(file_get_contents($root . '/media/' . $file), $js_content);
 }
Ejemplo n.º 15
0
 function testAddVersionToUrl()
 {
     $toolkit = lmbToolkit::merge(new lmbWebAppTools());
     lmb_env_set('LIMB_DOCUMENT_ROOT', null);
     try {
         $toolkit->addVersionToUrl('js/main.js');
         $this->assertTrue(false);
     } catch (lmbException $e) {
         $this->assertTrue(true);
     }
     lmb_env_set('LIMB_DOCUMENT_ROOT', lmb_env_get('LIMB_VAR_DIR') . '/www');
     lmbFs::rm(lmb_env_get('LIMB_DOCUMENT_ROOT') . '/js/main.js');
     try {
         $toolkit->addVersionToUrl('js/main.js');
         $this->assertTrue(false);
     } catch (lmbException $e) {
         $this->assertTrue(true);
     }
     lmbFs::safeWrite(lmb_env_get('LIMB_DOCUMENT_ROOT') . '/js/main.js', '(function() {})()');
     $url = $toolkit->addVersionToUrl('js/main.js');
     $url_abs = $toolkit->addVersionToUrl(lmb_env_get('LIMB_HTTP_BASE_PATH') . 'js/main.js');
     $this->assertEqual($url, $url_abs);
 }
Ejemplo n.º 16
0
 protected function _writeToFileCache($db_info)
 {
     lmbFs::safeWrite($this->cache_file, serialize(new lmbSerializable($db_info)));
 }
Ejemplo n.º 17
0
 protected function _saveCache()
 {
     lmbFs::safeWrite($this->getCacheFile(), serialize($this->export()));
 }
Ejemplo n.º 18
0
 protected function _send($recipients, $content)
 {
     lmbFs::safeWrite(lmb_env_get('LIMB_VAR_DIR') . '/mail/' . (pow(2, 31) - time()) . '_' . $recipients . '_' . microtime(true) . '.txt', $content);
 }
 protected function _saveCache()
 {
     $cache_file = $this->cache_dir . '/filters.cache';
     lmbFs::safeWrite($cache_file, serialize($this->info));
 }
Ejemplo n.º 20
0
 function _saveCache()
 {
     if ($this->map_changed && $this->isCacheEnabled()) {
         lmbFs::safeWrite(lmb_env_get('LIMB_VAR_DIR') . '/locators/controller_action2tpl.cache', serialize($this->action_template_map));
     }
 }
Ejemplo n.º 21
0
 protected function _saveCache()
 {
     lmb_require('limb/fs/src/lmbFs.class.php');
     $cache_file = $this->cache_dir . '/tags.cache';
     lmbFs::safeWrite($cache_file, serialize($this->info));
 }
Ejemplo n.º 22
0
    function testGetYamlConf_WithPhpCodeInside()
    {
        $content = <<<YAML
test:
<?php for(\$i=1; \$i<4; \$i++){ ?>
  bar<?php echo \$i; ?>: <?php echo \$i*2; ?> #enshure that spase exists after closed php tag
<?php } ?>

YAML;
        lmbFs::safeWrite($this->package_configs_dir . '/php.yml', $content);
        $conf = $this->toolkit->getConf('php.yml');
        if ($this->assertTrue($conf->has('test'))) {
            $test = $conf->get('test');
            $this->assertEqual(count($test), 3);
            $this->assertEqual($test['bar1'], 2);
            $this->assertEqual($test['bar2'], 4);
            $this->assertEqual($test['bar3'], 6);
            $this->assertFalse(isset($test['bar4']));
        }
    }
Ejemplo n.º 23
0
 function testRemoveFile()
 {
     lmbFs::safeWrite($file = LIMB_VAR_DIR . '/test', 'test');
     $this->assertTrue(lmbFs::rm($file));
     $this->assertFalse(file_exists($file));
 }