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(); }
/** * 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); } }
<?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;
/** * 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; }
/** * 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); }
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();
/** * 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; }
/** * 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; }
/** * 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 } */ }
/** * Create uploads */ function create_upload_dir() { if ($dir = $this->get_uploads_path()) { $dir = loader::get_public() . $dir; return mkdir($dir, 0770); } return false; }
<?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() {
/** * 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; } } }
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 . '/'); }