/** * 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); }
/** * * @return \Simplify\Config */ public static function config() { if (!self::$config) { self::$config = new Simplify\Config(); } return self::$config; }
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)); }
protected function getTablePrefix() { if (empty($this->tablePrefix) && $this->tablePrefix !== false) { $this->tablePrefix = \Simplify::config()->get('amp:tables_prefix'); } return $this->tablePrefix; }
/** * (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); }
/** * (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); } }
/** * 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; }
/** * (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()); }
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; }
/** */ public function __construct() { parent::__construct(); $this->path = \Simplify::config()->get('files:path'); }
/** * 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; }
/** * 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(); } }
/** * 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); }
/** * * @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; }
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; }
public function __construct() { $this->config = \Simplify::config(); $this->router = \Simplify::router(); }
/** * * @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; }
/** * Constructor * * @return void */ public function __construct() { $this->config = \Simplify::config(); $this->initialize(); }
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; }
/** * * @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; }
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); }
<?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';
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')); }
/** * * @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; }