示例#1
0
 /**
  * Instantiate a view
  *
  * @param string $class
  * @param RenderableInterface $object
  * @return ViewInterface
  */
 public static function factory($class = null, RenderableInterface $object = null)
 {
     if (empty($class)) {
         $class = \Simplify::config()->get('view:default', View::TWIG, \Simplify\Dictionary::FILTER_EMPTY);
     }
     return new $class($object);
 }
示例#2
0
 /**
  * 
  * @return \Simplify\Config
  */
 public static function config()
 {
     if (!self::$config) {
         self::$config = new Simplify\Config();
     }
     return self::$config;
 }
示例#3
0
function sy_log($file, $data, $lines = 300)
{
    static $logs;
    if (empty($logs)) {
        $logs = array();
    }
    if (!Simplify::config()) {
        return;
    }
    $file = APP_DIR . '/logs/' . $file . '.log';
    $a = @file($file, FILE_IGNORE_NEW_LINES);
    if ($lines && count($a) > $lines) {
        $a = array_slice($a, count($a) - $lines);
    }
    if (!isset($logs[$file])) {
        $logs[$file] = true;
        $a[] = "-> started " . date('Y-m-d H:i:s');
    }
    $output = date('Y-m-d H:i:s') . ' -> ';
    if (!empty($data)) {
        if (is_string($data)) {
            $output .= trim($data);
        } elseif ($data instanceof \Simplify\DictionaryInterface) {
            $data = $data->getAll();
            array_walk_recursive($data, 'sy_array_map');
            $output .= var_export($data, true);
        } else {
            $output .= var_export($data, true);
        }
    }
    $a[] = $output;
    file_put_contents($file, implode("\n", $a));
}
示例#4
0
 protected function getTablePrefix()
 {
     if (empty($this->tablePrefix) && $this->tablePrefix !== false) {
         $this->tablePrefix = \Simplify::config()->get('amp:tables_prefix');
     }
     return $this->tablePrefix;
 }
示例#5
0
 /**
  * (non-PHPdoc)
  * 
  * @see \Amplify\Controller\FormController::createElements()
  */
 protected function createElements(\Simplify\Form $form)
 {
     $password = new \Simplify\Form\Element\Password('user_password', __('Senha'));
     $username = new \Simplify\Form\Element\Text('user_username', __('Nome de Usuário'));
     $username->unique = Form::ACTION_FORM;
     $username->minLength = 5;
     $email = new \Simplify\Form\Element\Email('user_email', __('Email'));
     $email->unique = Form::ACTION_FORM;
     $email->required = true;
     $this->Form->addElement($username);
     $this->Form->addElement($email);
     $this->Form->addElement($password, \Simplify\Form::ACTION_ALL ^ \Simplify\Form::ACTION_LIST);
     if (Account::validate('admin', true)) {
         $groups = new Checkboxes('groups', __('Grupos'));
         $groups->table = \Simplify::config()->get('amp:tables:groups');
         $groups->foreignKey = 'group_id';
         $groups->associationPrimaryKey = 'user_id';
         $groups->associationForeignKey = 'group_id';
         $groups->associationTable = \Simplify::config()->get('amp:tables:groups_users');
         $groups->labelField = 'group_name';
         $this->Form->addElement($groups, \Simplify\Form::ACTION_LIST | \Simplify\Form::ACTION_EDIT);
         $permissions = new Checkboxes('permissions', __('Permissões'));
         $permissions->table = \Simplify::config()->get('amp:tables:permissions');
         $permissions->foreignKey = 'permission_id';
         $permissions->associationPrimaryKey = 'user_id';
         $permissions->associationForeignKey = 'permission_id';
         $permissions->associationTable = \Simplify::config()->get('amp:tables:permissions_users');
         $permissions->labelField = 'permission_description';
         $this->Form->addElement($permissions, \Simplify\Form::ACTION_LIST | \Simplify\Form::ACTION_EDIT);
     }
     $this->Form->label = 'user_email';
     $this->Form->title = __('Usuários');
     $this->Form->addListener(\Simplify\Form::ON_RENDER, $this);
     $this->Form->addListener(\Simplify\Form::ON_BEFORE_DELETE, $this);
 }
示例#6
0
 /**
  * (non-PHPdoc)
  * @see Localization::add()
  */
 public function add($name, $domain = Localization::DOMAIN_DEFAULT)
 {
     $filename = \Simplify::config()->get('locale_dir', \Simplify::config()->get('app:dir') . '/language', Dictionary::FILTER_EMPTY);
     $filename .= '/' . $this->locale . '/' . $domain . '.php';
     if (file_exists($filename)) {
         $lang = (require_once $filename);
         $this->lang[$domain] = array_merge((array) $this->lang[$domain], (array) $lang);
     }
 }
示例#7
0
 /**
  * Return a new instance of \Simplify\Thumb with optional params
  *
  * @param mixed $params
  * @return \Simplify\Thumb
  */
 public static function factory($params = null)
 {
     $thumb = new self();
     if ($params !== false) {
         $thumb->baseDir = sy_get_param($params, 'baseDir', \Simplify::config()->get('www_dir'));
         $thumb->filesPath = sy_get_param($params, 'filesPath', \Simplify::config()->get('files_path'));
         $thumb->cachePath = sy_get_param($params, 'cachePath', $thumb->filesPath . 'cache/');
     }
     return $thumb;
 }
示例#8
0
 /**
  * (non-PHPdoc)
  * 
  * @see \Simplify\Controller::indexAction()
  */
 protected function indexAction()
 {
     try {
         $this->Form = new \Simplify\Form('options', __('Opções'));
         $this->Form->showMenu = false;
         $this->Form->addAction(new \Simplify\Form\Action\Config('config', __('Gerais'), \Simplify::config()->get('amp:tables:options'), 'option_name', 'option_value'));
         $this->Form->addElement(new \Simplify\Form\Element\Text('site_name', __('Nome do site')), \Simplify\Form::ACTION_CONFIG);
         $url = new \Simplify\Form\Element\Text('site_url', __('URL do site'));
         $this->Form->addElement($url, \Simplify\Form::ACTION_CONFIG);
         $this->Form->execute();
     } catch (\Simplify\ValidationException $e) {
         \Simplify::session()->warnings(__('Ocorreram erros'));
     }
     $this->set('formBody', $this->Form->render());
 }
示例#9
0
 public static function getAllModules()
 {
     $modules = array();
     $base = \Simplify::config()->get('app:dir') . 'modules';
     $path = '/';
     if (!is_dir($base . $path) && !mkdir($base . $path, 0655)) {
         throw new AmplifyException('Application modules dir not found and could not be created: ' . $base . $path);
     }
     $it = new \DirectoryIterator($base . $path);
     while ($it->valid()) {
         if (!$it->isDot()) {
             if ($it->isDir()) {
                 $filename = $path . $it->getFilename() . '/Module.php';
                 if (file_exists($base . $filename)) {
                     require_once $base . $filename;
                     $class = \Simplify\Inflector::camelize($it->getFilename()) . '\\Module';
                     if (class_exists($class) && is_subclass_of($class, '\\Amplify\\Module')) {
                         $modules[addslashes($class)] = new $class();
                         $modules[addslashes($class)]->active = \Amplify\Modules::isActive($class);
                     }
                 }
             }
             /*
              * elseif (strrpos($it->getFilename(), 'Module.php') !== false) {
              * $filename = $path . $it->getFilename();
              *
              * require_once ($base . $filename);
              *
              * $class = $it->getBasename('.php');
              *
              * if (class_exists($class) && is_subclass_of($class, '\Amplify\Module')) {
              * $modules[$filename] = new $class();
              * $modules[$filename]->active = \Amplify\Modules::isActive($filename);
              * }
              * }
              */
         }
         $it->next();
     }
     return $modules;
 }
示例#10
0
 /**
  */
 public function __construct()
 {
     parent::__construct();
     $this->path = \Simplify::config()->get('files:path');
 }
示例#11
0
 /**
  * Get a list of paths where templates can be found
  *
  * @return string|string[] array of file paths
  */
 public function getTemplatesPath()
 {
     if (empty($this->templatesPath)) {
         $this->templatesPath = \Simplify::config()->get('templates:path');
         foreach ($this->templatesPath as &$value) {
             $value = \Simplify::config()->resolveReferences($value);
         }
     }
     return $this->templatesPath;
 }
示例#12
0
 /**
  * Upgrade database tables to last version
  */
 protected static function upgrade()
 {
     $query = 'CREATE TABLE IF NOT EXISTS `' . \Simplify::config()->get('amp:tables:options') . '` (
             `option_id` mediumint(8) NOT NULL AUTO_INCREMENT,
             `option_name` varchar(255) NOT NULL,
             `option_value` text NOT NULL,
             `option_modified_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
             `option_autoload` tinyint(1) unsigned NOT NULL DEFAULT \'0\',
             PRIMARY KEY (`option_id`),
             UNIQUE KEY `option_name` (`option_name`),
             KEY `option_autoload` (`option_autoload`)
         ) ENGINE=MyISAM DEFAULT CHARSET=utf8;';
     \Simplify::db()->query($query)->executeRaw();
     $version = intval(\Amplify\Options::value('db_version', 0));
     if ($version <= 0) {
         $queries = array('CREATE TABLE IF NOT EXISTS `' . \Simplify::config()->get('amp:tables:groups') . '` (
                 `group_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
                 `group_name` varchar(255) NOT NULL,
                 PRIMARY KEY (`group_id`),
                 UNIQUE KEY `group_name` (`group_name`)
             ) ENGINE=InnoDB DEFAULT CHARSET=utf8;', 'CREATE TABLE IF NOT EXISTS `' . \Simplify::config()->get('amp:tables:groups_permissions') . '` (
                 `group_id` mediumint(8) unsigned NOT NULL,
                 `permission_id` mediumint(8) unsigned NOT NULL,
                 UNIQUE KEY `group_id_permission_id` (`group_id`,`permission_id`),
                 KEY `FK_groups_permissions_permissions` (`permission_id`),
                 CONSTRAINT `FK_groups_permissions_groups` FOREIGN KEY (`group_id`) REFERENCES `' . \Simplify::config()->get('amp:tables:groups') . '` (`group_id`) ON DELETE CASCADE ON UPDATE CASCADE,
                 CONSTRAINT `FK_groups_permissions_permissions` FOREIGN KEY (`permission_id`) REFERENCES `' . \Simplify::config()->get('amp:tables:permissions') . '` (`permission_id`) ON DELETE CASCADE ON UPDATE CASCADE
             ) ENGINE=InnoDB DEFAULT CHARSET=utf8;', 'CREATE TABLE IF NOT EXISTS `' . \Simplify::config()->get('amp:tables:groups_users') . '` (
                 `user_id` mediumint(8) unsigned NOT NULL,
                 `group_id` mediumint(8) unsigned NOT NULL,
                 UNIQUE KEY `user_id_group_id` (`user_id`,`group_id`),
                 KEY `FK_groups_users_groups` (`group_id`),
                 CONSTRAINT `FK_groups_users_groups` FOREIGN KEY (`group_id`) REFERENCES `' . \Simplify::config()->get('amp:tables:groups') . '` (`group_id`) ON DELETE CASCADE ON UPDATE CASCADE,
                 CONSTRAINT `FK_groups_users_users` FOREIGN KEY (`user_id`) REFERENCES `' . \Simplify::config()->get('amp:tables:users') . '` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
             ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;', 'CREATE TABLE IF NOT EXISTS `' . \Simplify::config()->get('amp:tables:permissions') . '` (
                 `permission_id` mediumint(255) unsigned NOT NULL AUTO_INCREMENT,
                 `permission_name` varchar(255) NOT NULL,
                 `permission_description` varchar(255) DEFAULT NULL,
                 PRIMARY KEY (`permission_id`),
                 UNIQUE KEY `permission_name` (`permission_name`)
             ) ENGINE=InnoDB DEFAULT CHARSET=utf8;', 'CREATE TABLE IF NOT EXISTS `' . \Simplify::config()->get('amp:tables:permissions_users') . '` (
                 `user_id` mediumint(8) unsigned NOT NULL,
                 `permission_id` mediumint(8) unsigned NOT NULL,
                 UNIQUE KEY `user_id_permission_id` (`user_id`,`permission_id`),
                 KEY `FK_permissions_users_permissions` (`permission_id`),
                 CONSTRAINT `FK_permissions_users_permissions` FOREIGN KEY (`permission_id`) REFERENCES `' . \Simplify::config()->get('amp:tables:permissions') . '` (`permission_id`) ON DELETE CASCADE ON UPDATE CASCADE,
                 CONSTRAINT `FK_permissions_users_users` FOREIGN KEY (`user_id`) REFERENCES `' . \Simplify::config()->get('amp:tables:users') . '` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
             ) ENGINE=InnoDB DEFAULT CHARSET=utf8;', 'CREATE TABLE IF NOT EXISTS `' . \Simplify::config()->get('amp:tables:users') . '` (
                 `user_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
                 `user_username` varchar(255) NOT NULL,
                 `user_email` varchar(255) NOT NULL,
                 `user_password` char(60) NOT NULL,
                 `access_token` char(60) DEFAULT NULL,
                 PRIMARY KEY (`user_id`),
                 INDEX `user_password` (`user_password`),
                 INDEX `access_token` (`access_token`),
                 UNIQUE KEY `user_username` (`user_username`)
             ) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
         \Simplify::db()->beginTransaction();
         \Simplify::db()->query('SET FOREIGN_KEY_CHECKS=0')->executeRaw();
         foreach ($queries as $query) {
             \Simplify::db()->query($query)->executeRaw();
         }
         \Simplify::db()->commit();
     }
 }
示例#13
0
 /**
  * Check if the file exists
  *
  * @param string $file
  * @return string
  */
 protected function fileExists($file)
 {
     $file = \Simplify::config()->get('www:dir') . $file;
     return !empty($file) && file_exists($file) && !is_dir($file);
 }
示例#14
0
 /**
  *
  * @throws UploadException
  */
 protected function moveFile()
 {
     $path = $this->getUploadPath();
     if (!sy_path_is_absolute($path)) {
         $path = \Simplify::config()->get('www:dir') . $path;
     }
     $filename = empty($this->filename) ? $this->file['name'] : $this->filename;
     $subpath = '';
     if ($this->useDateBasedPath) {
         $subpath = $this->findDateBasedPath($path);
     }
     $subpath .= '/';
     $dir = sy_fix_path($path . '/' . $subpath) . '/';
     if (!is_dir($dir)) {
         if (!mkdir($dir, 0777, true)) {
             $this->error = __('Could not create upload path: <b>' . sy_fix_path($path . $subpath) . '</b>');
             throw new \Simplify\UploadException($this->error);
         }
     }
     if (!is_writable($dir)) {
         $this->error = __('Upload path does not exist or is not writable: <b>' . sy_fix_path($path . $subpath) . '</b>');
         throw new \Simplify\UploadException($this->error);
     }
     if ($this->hashFilename) {
         $filename = $this->genHashFilename($dir, '/' . $filename);
     } elseif ($this->replaceIfExists === false) {
         $filename = $this->findUniqueFilename($dir, '/' . $filename);
     }
     if (!@move_uploaded_file($this->file['tmp_name'], $dir . $filename)) {
         $this->error = __('Could not move uploaded file');
         throw new \Simplify\UploadException($this->error);
     }
     chmod($dir . $filename, 0644);
     $this->uploadedPath = $subpath . $filename;
 }
示例#15
0
function sy_absolute_url($url, $relative = null, $base = null)
{
    if (empty($base)) {
        $base = Simplify::config()->get('www:url');
    }
    if (empty($relative)) {
        $relative = $base;
    }
    if (strpos($url, '/') === 0) {
        $url = sy_fix_url($base . $url);
    } elseif (!sy_url_is_absolute($url)) {
        $url = sy_fix_url($base . $relative . '/' . $url);
    } else {
        $url = sy_fix_url($url);
    }
    return $url;
}
示例#16
0
 public function __construct()
 {
     $this->config = \Simplify::config();
     $this->router = \Simplify::router();
 }
示例#17
0
 /**
  *
  * @return \Simplify\Db\RepositoryInterface
  */
 public function repository()
 {
     if (empty(self::$repository)) {
         self::$repository = \Simplify\Db\TableDataGateway::getInstance(\Simplify::config()->get('amp:tables:options'), 'option_id');
     }
     return self::$repository;
 }
示例#18
0
 /**
  * Constructor
  *
  * @return void
  */
 public function __construct()
 {
     $this->config = \Simplify::config();
     $this->initialize();
 }
示例#19
0
 public static function loadAsset($asset, $group = null, $priority = 0, $minify = true)
 {
     if (empty($asset)) {
         throw new \Exception("Empty asset name");
     }
     if (empty(self::$assets[$asset])) {
         $paths = \Simplify::config()->get('app:assets:path');
         do {
             $path = array_shift($paths);
             $dir = \Simplify::config()->resolveReferences((sy_path_is_absolute($path) ? '' : '{www:dir}') . $path);
         } while (!empty($paths) && !file_exists($dir . $asset));
         if (!file_exists($dir . $asset)) {
             throw new \Exception("Asset file not found: {$asset}. Search path: " . implode(';', \Simplify::config()->get('app:assets:path')));
         }
         $url = \Simplify::config()->resolveReferences('{www:url}' . $path);
         self::$assets[$asset] = array('asset' => $asset, 'dir' => $dir . $asset, 'url' => $url . $asset, 'group' => $group, 'priority' => $priority, 'minify' => $minify);
     }
     return $asset;
 }
示例#20
0
 /**
  *
  * @return array
  */
 protected function findFiles()
 {
     $baseUrl = \Simplify::config()->get('www:url');
     $baseDir = \Simplify::config()->get('www:dir');
     $files = glob($baseDir . $this->path . '/' . '*.{' . implode(',', $this->extensions) . '}', GLOB_BRACE);
     $selectUrl = \Simplify\URL::make(null, null, true)->set('browserAction', self::ACTION_SELECT);
     foreach ($files as &$file) {
         $file = substr($file, strlen($baseDir));
         $file = array('filename' => $file, 'url' => $baseUrl . $file, 'selectUrl' => $selectUrl->extend()->set('file', $file), 'thumbUrl' => $this->getThumbUrl($file, 128, 128), 'imageUrl' => $this->getThumbUrl($file));
     }
     return $files;
 }
示例#21
0
 public static function addGroupPermission($group_id, $permission_id)
 {
     if (is_string($permission_id)) {
         $permission_id = \Simplify::db()->query()->from(\Simplify::config()->get('amp:tables:permissions'))->select('permission_id')->where('permission_name = ?')->execute($permission_id)->fetchOne();
         if (empty($permission_id)) {
             throw new \Exception("Could not add group permission: invalid permission id");
         }
     }
     $data = array('permission_id' => $permission_id, 'group_id' => $group_id);
     \Simplify::db()->query('INSERT IGNORE INTO ' . \Simplify::config()->get('amp:tables:groups_permissions') . ' VALUES (:permission_id, :group_id)')->execute($data);
 }
示例#22
0
<?php

$config = Simplify::config();
define('FORM_DIR', preg_replace('#[\\\\/]+#', '/', __DIR__ . '/'));
$config['forms:dir'] = FORM_DIR;
$config['templates:path:'] = '{forms:dir}templates';
$config['app:assets:path:'] = 'vendor/rutkoski/simplify-form/lib/assets/';
require_once 'functions.php';
示例#23
0
 protected static function loadExtensions(\Twig_Environment $twig)
 {
     foreach ((array) \Simplify::config()->get('view:twig:globals') as $name => $value) {
         $twig->addGlobal($name, $value);
     }
     $twig->addGlobal('config', \Simplify::config());
     $twig->addGlobal('request', \Simplify::request());
     $twig->addGlobal('router', \Simplify::router());
     $twig->addFunction(new \Twig_SimpleFunction('makeUrl', array('\\Simplify\\URL', 'make')));
     $twig->addFunction(new \Twig_SimpleFunction('optionsValue', array('\\Amplify\\Options', 'value')));
     $twig->addFunction(new \Twig_SimpleFunction('thumb', array('\\Simplify\\Thumb', 'factory')));
     $twig->addFunction(new \Twig_SimpleFunction('asset', array('\\Simplify\\AssetManager', 'asset')));
     $twig->addFunction(new \Twig_SimpleFunction('assets', array('\\Simplify\\AssetManager', 'assets')));
     $twig->addFilter(new \Twig_SimpleFilter('truncate', 'sy_truncate'));
 }
示例#24
0
 /**
  *
  * @param string $value
  * @return string
  */
 protected function makeUrlsAbsolute($value)
 {
     $base = \Simplify::config()->get('www:url');
     $value = preg_replace('# src="(?!(' . preg_quote($base) . '|http))#', ' src="' . $base, $value);
     return $value;
 }