Exemple #1
0
 function run()
 {
     /**@var tf_sat $sat */
     $sat = core::module('sat');
     $site = $sat->get_current_site();
     $json_file = loader::get_public('assets/' . $site->domain . '.json');
     $last_mod = @filemtime($json_file);
     $tree_last_mod = 0;
     if ($last_mod) {
         $last_node = $sat->get_node_handle()->set_where('site_id = %d', $sat->get_current_site_id())->set_order('updated_at DESC')->load_first();
         $tree_last_mod = $last_node ? $last_node->updated_at : 0;
         core::dprint(__METHOD__ . ': cached');
         // uptodate
         if ($tree_last_mod <= $last_mod) {
             $this->renderer->set_ajax_answer(file_get_contents($json_file))->ajax_flush();
             return;
         }
     }
     core::dprint(__METHOD__ . ': fetch!');
     $tree = $sat->get_current_site_tree();
     $allowedKeys = array('title', 'url');
     array_walk($tree, function (&$v) use($allowedKeys) {
         $v = array_intersect_key($v, array_flip($allowedKeys));
     });
     $tree = array_values($tree);
     // cache
     file_put_contents($json_file, functions::json_encode($tree));
     $this->renderer->set_ajax_answer($tree)->ajax_flush();
 }
Exemple #2
0
 /**
  * Constructor
  */
 function __construct($config)
 {
     $this->_config = $config;
     $this->persistency = @$config['persistency'];
     $this->user = @$config['login'];
     $this->password = @$config['password'];
     $this->server = isset($config['server']) ? $config['server'] : 'localhost';
     $this->dbname = @$config['database'];
     $this->prefix = @$config['prefix'];
     $this->root = loader::get_public();
     if (is_callable(array($this, 'configure'))) {
         $this->configure($config);
     }
 }
Exemple #3
0
<?php

/**
 * Runs test in concurrent queue
 *
 * @param chroot directory core/_tests/config
 */
use Symfony\Component\Process\Process;
require "loader.php";
ob_implicit_flush(true);
$out = array();
$sourceDir = __DIR__;
if (!empty($argv[1])) {
    $sourceDir = loader::get_public('modules/' . $argv[1]);
}
fs::build_tree($sourceDir, $out, false, '\\.php$');
// убираем loader и ru-all.php
foreach ($out['files'] as $k => $v) {
    if (preg_match('@(loader|run\\-all)\\.php$@', $v)) {
        unset($out['files'][$k]);
    }
}
// $files = array_splice($out['files'], 2);
$files = $out['files'];
test_assertions::$successed = 0;
test_assertions::$failed = 0;
test_assertions::$start_time = microtime(1);
$concurrent = 10;
$processes = [];
$file = null;
$kfile = 0;
Exemple #4
0
 /**
  * Called in non-debug mode!
  * Check for errors
  *     
  * @param mixed $node
  * @return string
  */
 function get_static_node_path($node)
 {
     // @todo on error, $node empty too!
     $domain = '';
     if (!$node) {
         // this is / index
         $url = '/';
         $domain = $this->get_current_site()->get_domain();
     } else {
         // node
         $url = $node->get_url();
         $domain = $node->get_site()->get_domain();
     }
     core::dprint(array('[!] Generate static %s', $url));
     $urls = explode('/', $url);
     foreach ($urls as &$u) {
         if (loader::is_windows()) {
             $u = iconv('UTF-8', 'WINDOWS-1251', $u);
             // @fixme windows?
         }
     }
     $url = join('/', $urls);
     if (substr($url, -1, 1) == '/') {
         $url .= 'index.html';
     }
     $url = loader::get_public() . 'static/' . $domain . '/' . substr($url, 1);
     return $url;
 }
Exemple #5
0
 /**
  * Check file presents
  * @param string file name
  * @param mixed FALSE(default) - filename must be full path, otherwise ROOT_PATH added
  */
 public static function file_exists($name, $prefix = false)
 {
     return file_exists(($prefix === false ? '' : loader::get_public()) . $name);
 }
Exemple #6
0
error_reporting(0);
// Set E_ALL for debuging
require "./Authorize.php";
if (!elFinderIsAuthed()) {
    die('You shall not pass!!!');
}
include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'elFinderConnector.class.php';
include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'elFinder.class.php';
include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'elFinderVolumeDriver.class.php';
include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'elFinderVolumeLocalFileSystem.class.php';
// Required for MySQL storage connector
// include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'elFinderVolumeMySQL.class.php';
// Required for FTP connector support
// include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'elFinderVolumeFTP.class.php';
/**
 * Simple function to demonstrate how to control file access using "accessControl" callback.
 * This method will disable accessing files/folders starting from  '.' (dot)
 *
 * @param  string  $attr  attribute name (read|write|locked|hidden)
 * @param  string  $path  file path relative to volume root directory started with directory separator
 * @return bool|null
 **/
function access($attr, $path, $data, $volume)
{
    return strpos(basename($path), '.') === 0 ? !($attr == 'read' || $attr == 'write') : null;
    // else elFinder decide it itself
}
$opts = array('roots' => array(array('driver' => 'LocalFileSystem', 'path' => loader::get_uploads(), 'URL' => '/uploads/', 'accessControl' => 'access'), array('driver' => 'LocalFileSystem', 'path' => loader::get_public('templates'), 'URL' => '/templates/', 'accessControl' => 'access')));
// run elFinder
$connector = new elFinderConnector(new elFinder($opts));
$connector->run();
Exemple #7
0
 /**
  * Register module
  * @throws modules_exception
  * @return core_module
  */
 public function register($module, $params = null)
 {
     $module_class = isset($params['class']) ? $params['class'] : $module;
     $module_class = (isset($params['prefix']) ? $params['prefix'] : loader::CLASS_PREFIX) . $module_class;
     $module_path_orig = loader::DIR_MODULES . $module . '/';
     $module_path = loader::get_public();
     $module_path .= isset($params['path']) ? $params['path'] : loader::DIR_MODULES . $module;
     $module_path .= '/';
     $module_file = $module_path;
     $module_file .= (isset($params['file']) ? $params['file'] : 'module') . loader::DOT_PHP;
     core::dprint(array('module::register %s, %s', $module, $module_class), core::E_DEBUG0);
     if (!fs::file_exists($module_file)) {
         core::dprint_r(array($module_class, $module_file));
         throw new module_exception('Failed to register module ' . $module . '. File does not exists');
     }
     require_once $module_file;
     if (!class_exists($module_class, 0)) {
         throw new module_exception('Cant load module ' . $module . ', wrong config?');
     }
     // autotag module, if alternative class used
     if (!isset($params['tag']) && !empty($params['class'])) {
         $params['tag'] = $module;
     }
     $module_path = loader::fix_path(loader::get_public() . (!empty($params['chroot']) ? $module_path : $module_path_orig));
     $this->set($module, new $module_class($module_path, $params));
     $newb = $this->get($module);
     $newb->init_config($this->_get_module_config($module), abs_config::INIT_APPEND);
     return $newb;
 }
Exemple #8
0
 /**
  * Process upload
  * Return data for saving
  *
  * @param abs_collection $citem
  * @param array $vf
  * @param array $fld
  * @param array $current
  * @return array|string
  * @throws collection_exception
  */
 static function process_modify($citem, $vf, $fld, $current)
 {
     /** @var tf_uploader $uploader */
     $uploader = core::lib('uploader');
     // remove file
     if ($fld == 'remove' && !empty($current['file'])) {
         core::dprint('[COLLECTION] delete file ');
         // function format_field_on_remove($vf, &$fld, $current) {
         $citem->format_field_on_remove($vf, $fld, $current);
         $fld = '';
         return $fld;
     }
     if (!is_array($fld)) {
         core::dprint('Field must be submitted via multipart from enctype="multipart/form-data", add _FILES to submit vars: ');
         $fld = '';
     } else {
         $error = core::lib('uploader')->get_upload_error(@$fld['error']);
         if (false !== $error) {
             core::dprint(array('Upload error : %s', $error), core::E_ERROR);
             $fld = '';
         }
     }
     $pinfo = array();
     if (!empty($fld['name'])) {
         $pinfo = isset($fld['name']) ? pathinfo($fld['name']) : false;
         $pinfo['extension'] = strtolower($pinfo['extension']);
     }
     if (!empty($fld) && !empty($fld['size']) && (empty($vf['allow']) || !empty($vf['allow']) && in_array($pinfo['extension'], $vf['allow']))) {
         $path = loader::get_uploads($vf['storage']);
         // reuse name, if it here already
         if (!empty($current['file'])) {
             // unlink?
             $citem->format_field_on_remove($vf, $fld, $current);
         }
         // $naming = isset($vf['unique']) ? (md5(microtime(true)) . '.' . $pinfo['extension']) : false;
         $naming = functions::url_hash() . '.' . $pinfo['extension'];
         // dd($naming, $path);
         if (!empty($vf['spacing'])) {
             $path .= '/' . substr($naming, 0, $vf['spacing']);
         }
         if (!is_dir($path) && !@mkdir($path, 0777, 1)) {
             throw new collection_exception('Upload error. Cant create directory: ' . $path);
         }
         $file = $uploader->upload_file($fld, $path, $naming, array('force_override' => true));
         // check for bad image
         $exists = false;
         if (!$file || !($exists = file_exists($file)) || !getimagesize($file)) {
             if ($exists) {
                 unlink($file);
             }
             throw new collection_exception('Upload error. invalid file');
         }
         // fix bad \\
         $fld['file'] = str_replace(array('\\\\', '\\'), '/', $file);
         // override type with extension
         $fld['type'] = $pinfo['extension'];
         if (!empty($vf['original'])) {
             copy($fld['file'], preg_replace('@\\.([^\\.]+)$@', '.orig.$1', $fld['file']));
         }
         // make max_width
         if (!empty($vf['max_width']) || !empty($vf['max_height'])) {
             core::lib('images')->resample_image_bigger($fld['file'], $fld['file'], @$vf['max_width'], @$vf['max_height']);
         }
         // {{{thumbnail}}}
         // ------------------------------------------------
         if (!empty($vf['thumbnail'])) {
             $t_props = $vf['thumbnail'];
             $t_file = preg_replace('@\\.([^\\.]+)$@', '.thumb.$1', $fld['file']);
             $t_height = false;
             $t_filter = false;
             if (is_array($t_props)) {
                 if (isset($t_props['width'])) {
                     //fullpros
                     $t_height = @intval($t_props['height']);
                     $t_width = @intval($t_props['width']);
                     $t_filter = @$t_props['filter'];
                 } elseif (isset($t_props['format'])) {
                     // see below, for b.c.
                 } else {
                     //(x,y)
                     $t_height = $t_props[1];
                     $t_width = $t_props[0];
                 }
             } else {
                 $t_width = (int) $t_props;
             }
             if (isset($t_props['format'])) {
                 // with Wideimage
                 self::runWideImage($fld['file'], $t_file, $t_props['format']);
             } else {
                 // resample_image($src, $dst, $new_width, $new_height = false)
                 if ($t_width > 0) {
                     core::lib('images')->resample_image($fld['file'], $t_file, $t_width, $t_height);
                 } else {
                     // just copy
                     copy($fld['file'], $t_file);
                 }
             }
             // filter for thumbnail
             if (isset($t_filter['id'])) {
                 core::lib('images')->image_filter($t_file, $t_file, $t_filter['id'], @$t_filter['params']);
             }
         }
         // {{{/thumbnail}}}
         // make width
         if (!empty($vf['width']) && !empty($vf['height'])) {
             core::lib('images')->resample_image($fld['file'], $fld['file'], $vf['width'], $vf['height']);
         }
         if (isset($vf['format'])) {
             // with Wideimage
             self::runWideImage($fld['file'], $fld['file'], $vf['format']);
         }
         // filter
         if (isset($vf['filter'])) {
             core::lib('images')->image_filter($fld['file'], $fld['file'], $vf['filter']['id'], @$vf['filter']['params']);
         }
         if (!empty($vf['watermark'])) {
             $wm_file = loader::get_public($vf['watermark']['file']);
             core::lib('images')->watermark($fld['file'], $fld['file'], $wm_file, @$vf['watermark']['options']);
         }
         unset($fld['error']);
         unset($fld['tmp_name']);
         // relative to app-path?
         // what if on another server
     } else {
         $fld = $current;
     }
     return $fld;
 }
Exemple #9
0
 /**
  * Set root
  */
 static function set_template($template)
 {
     if (core::in_editor()) {
         self::$template_dir = loader::get_public() . loader::DIR_EDITOR . loader::DIR_TEMPLATES;
     } else {
         self::$template_dir = loader::get_public() . loader::DIR_TEMPLATES . $template;
     }
     self::$parser->template_dir = self::$template_dir;
     /*
      * If using template, compile directory must exists /cache/tpl/{template}
      */
     $c_postfix = core::in_editor() ? 'editor/' : $template . '/';
     self::$parser->compile_dir = loader::get_root(loader::DIR_TEMPLATES_C . $c_postfix);
     self::$parser->cache_dir = loader::get_root(loader::DIR_TEMPLATES_C . $c_postfix);
     if (!file_exists(self::$parser->compile_dir)) {
         mkdir(self::$parser->compile_dir, 0777, true);
         // chmod this right
     }
     /*
     if (!file_exists(self::$parser->cache_dir)) {            
         mkdir(self::$parser->cache_dir, 0777, true); // chmod this right
     }
     */
 }
Exemple #10
0
 /**
  * Create uploads
  */
 function create_upload_dir()
 {
     if ($dir = $this->get_uploads_path()) {
         $dir = loader::get_public() . $dir;
         return mkdir($dir, 0770);
     }
     return false;
 }
Exemple #11
0
<?php

/**
 * Sape interface
 * 
 * @package    SatCMS
 * @author     Golovkin Vladimir <*****@*****.**> http://www.skillz.ru
 * @copyright  SurSoft (C) 2008
 * @version    $Id: sape.php,v 1.2 2009/08/05 08:45:21 surg30n Exp $
 */
$_su = core::get_instance()->get_cfg_var('sape_user');
if (!empty($_su)) {
    if (!defined('_SAPE_USER')) {
        define(_SAPE_USER, $_su);
    }
    require_once loader::get_public($_su . '/sape.php');
}
if (!class_exists('SAPE_client')) {
    class SAPE_client
    {
        function SAPE_client($p = array())
        {
            // mock
            core::dprint('[LIB_SAPE] Using mock', core::E_ERROR);
        }
    }
}
class sape extends SAPE_client
{
    function __construct()
    {
Exemple #12
0
 /**
  * Parse module langwords into one
  * huge array. Used in templates later.
  * Module lang start with m_
  * [lang.var]
  */
 public function import_langwords($module)
 {
     $lang = $this->cfg('lang');
     $lang_file = loader::get_public(loader::DIR_MODULES) . $module . '/' . loader::DIR_LANGS . $lang;
     if (fs::file_exists($lang_file)) {
         $temp = parse_ini_file($lang_file, true);
         //self::dprint('..language ' . $lang_file . " (x" . count($temp) . ")", core::E_DEBUG1);
         if ('core' == $module) {
             $this->langwords = array_merge_recursive($this->langwords, $temp);
         } else {
             $this->langwords['_' . $module] = $temp;
         }
     }
 }
Exemple #13
0
 function get_template_root($template = null)
 {
     if (!isset($template)) {
         return $this->template_root;
     }
     return loader::fix_path(loader::get_public() . core::get_instance()->get_cfg_var('site_url') . loader::DIR_TEMPLATES . $template . '/');
 }