本文整理汇总了PHP中unslashify函数的典型用法代码示例。如果您正苦于以下问题:PHP unslashify函数的具体用法?PHP unslashify怎么用?PHP unslashify使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了unslashify函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的PHP代码示例。
示例1: replace
/**
* Replace emoticon icons <img> 'src' attribute, so it can
* be replaced with real file by Mail_Mime.
*
* @param string &$html HTML content
*
* @return array List of image files
*/
public static function replace(&$html)
{
// Replace this:
// <img src="http[s]://.../tinymce/plugins/emoticons/img/smiley-cool.gif" ... />
// with this:
// <img src="/path/on/server/.../tinymce/plugins/emoticons/img/smiley-cool.gif" ... />
$rcube = rcube::get_instance();
$assets_dir = $rcube->config->get('assets_dir');
$path = unslashify($assets_dir ?: INSTALL_PATH) . '/' . self::IMG_PATH;
$offset = 0;
$images = array();
// remove any null-byte characters before parsing
$html = preg_replace('/\\x00/', '', $html);
if (preg_match_all('# src=[\'"]([^\'"]+)#', $html, $matches, PREG_OFFSET_CAPTURE)) {
foreach ($matches[1] as $m) {
// find emoticon image tags
if (preg_match('#' . self::IMG_PATH . '(.*)$#', $m[0], $imatches)) {
$image_name = $imatches[1];
// sanitize image name so resulting attachment doesn't leave images dir
$image_name = preg_replace('/[^a-zA-Z0-9_\\.\\-]/i', '', $image_name);
$image_file = $path . $image_name;
// Add the same image only once
$images[$image_name] = $image_file;
$html = substr_replace($html, $image_file, $m[1] + $offset, strlen($m[0]));
$offset += strlen($image_file) - strlen($m[0]);
}
}
}
return $images;
}
开发者ID:JotapePinheiro,项目名称:roundcubemail,代码行数:38,代码来源:emoticons_engine.php
示例2: load
/**
* Load config from local config file
*
* @todo Remove global $CONFIG
*/
private function load()
{
// load main config file
if (!$this->load_from_file(RCMAIL_CONFIG_DIR . '/main.inc.php')) {
$this->errors[] = 'main.inc.php was not found.';
}
// load database config
if (!$this->load_from_file(RCMAIL_CONFIG_DIR . '/db.inc.php')) {
$this->errors[] = 'db.inc.php was not found.';
}
// load host-specific configuration
$this->load_host_config();
// set skin (with fallback to old 'skin_path' property)
if (empty($this->prop['skin'])) {
if (!empty($this->prop['skin_path'])) {
$this->prop['skin'] = str_replace('skins/', '', unslashify($this->prop['skin_path']));
} else {
$this->prop['skin'] = self::DEFAULT_SKIN;
}
}
// larry is the new default skin :-)
if ($this->prop['skin'] == 'default') {
$this->prop['skin'] = self::DEFAULT_SKIN;
}
// fix paths
$this->prop['log_dir'] = $this->prop['log_dir'] ? realpath(unslashify($this->prop['log_dir'])) : INSTALL_PATH . 'logs';
$this->prop['temp_dir'] = $this->prop['temp_dir'] ? realpath(unslashify($this->prop['temp_dir'])) : INSTALL_PATH . 'temp';
// fix default imap folders encoding
foreach (array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox') as $folder) {
$this->prop[$folder] = rcube_charset::convert($this->prop[$folder], RCMAIL_CHARSET, 'UTF7-IMAP');
}
if (!empty($this->prop['default_folders'])) {
foreach ($this->prop['default_folders'] as $n => $folder) {
$this->prop['default_folders'][$n] = rcube_charset::convert($folder, RCMAIL_CHARSET, 'UTF7-IMAP');
}
}
// set PHP error logging according to config
if ($this->prop['debug_level'] & 1) {
ini_set('log_errors', 1);
if ($this->prop['log_driver'] == 'syslog') {
ini_set('error_log', 'syslog');
} else {
ini_set('error_log', $this->prop['log_dir'] . '/errors');
}
}
// enable display_errors in 'show' level, but not for ajax requests
ini_set('display_errors', intval(empty($_REQUEST['_remote']) && $this->prop['debug_level'] & 4));
// set timezone auto settings values
if ($this->prop['timezone'] == 'auto') {
$this->prop['_timezone_value'] = $this->client_timezone();
} else {
if (is_numeric($this->prop['timezone'])) {
$this->prop['timezone'] = timezone_name_from_abbr("", $this->prop['timezone'] * 3600, 0);
}
}
// remove deprecated properties
unset($this->prop['dst_active']);
// export config data
$GLOBALS['CONFIG'] =& $this->prop;
}
开发者ID:nmrugg,项目名称:roundcubemail,代码行数:65,代码来源:rcube_config.php
示例3: do_messagemove
function do_messagemove($uids, $spam)
{
$rcmail = rcmail::get_instance();
if ($spam) {
$dest_dir = unslashify($rcmail->config->get('markasjunk2_spam_dir'));
} else {
$dest_dir = unslashify($rcmail->config->get('markasjunk2_ham_dir'));
}
if (!$dest_dir) {
return;
}
$filename = $rcmail->config->get('markasjunk2_filename');
$filename = str_replace('%u', $_SESSION['username'], $filename);
$filename = str_replace('%t', $spam ? 'spam' : 'ham', $filename);
if (strpos($_SESSION['username'], '@') !== false) {
$parts = explode("@", $_SESSION['username'], 2);
$filename = str_replace(array('%l', '%d'), array($parts[0], $parts[1]), $filename);
}
foreach (explode(",", $uids) as $uid) {
$tmpfname = tempnam($dest_dir, $filename);
file_put_contents($tmpfname, $rcmail->imap->get_raw_body($uid));
if ($rcmail->config->get('markasjunk2_debug')) {
write_log('markasjunk2', $tmpfname);
}
}
}
开发者ID:ehmedov,项目名称:www,代码行数:26,代码来源:dir_learn.php
示例4: test_unslashify
/**
* rcube_shared.inc: unslashify()
*/
function test_unslashify()
{
$data = array('test' => 'test', 'test/' => 'test', '/' => '', "\\/" => "\\", 'test/test' => 'test/test', 'test//' => 'test');
foreach ($data as $value => $expected) {
$result = unslashify($value);
$this->assertEquals($expected, $result, "Invalid unslashify() result for {$value}");
}
}
开发者ID:netcon-source,项目名称:roundcubemail,代码行数:11,代码来源:Shared.php
示例5: load
/**
* Load config from local config file
*
* @todo Remove global $CONFIG
*/
private function load()
{
// start output buffering, we don't need any output yet,
// it'll be cleared after reading of config files, etc.
ob_start();
// load main config file
if (include RCMAIL_CONFIG_DIR . '/main.inc.php') {
$this->prop = (array) $rcmail_config;
} else {
$this->errors[] = 'main.inc.php was not found.';
}
// load database config
if (include RCMAIL_CONFIG_DIR . '/db.inc.php') {
$this->prop += (array) $rcmail_config;
} else {
$this->errors[] = 'db.inc.php was not found.';
}
// load host-specific configuration
$this->load_host_config();
// set skin (with fallback to old 'skin_path' property)
if (empty($this->prop['skin']) && !empty($this->prop['skin_path'])) {
$this->prop['skin'] = str_replace('skins/', '', unslashify($this->prop['skin_path']));
} else {
if (empty($this->prop['skin'])) {
$this->prop['skin'] = 'default';
}
}
// fix paths
$this->prop['log_dir'] = $this->prop['log_dir'] ? unslashify($this->prop['log_dir']) : INSTALL_PATH . 'logs';
$this->prop['temp_dir'] = $this->prop['temp_dir'] ? unslashify($this->prop['temp_dir']) : INSTALL_PATH . 'temp';
// fix default imap folders encoding
foreach (array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox') as $folder) {
$this->prop[$folder] = rcube_charset_convert($this->prop[$folder], RCMAIL_CHARSET, 'UTF-7');
}
if (!empty($this->prop['default_imap_folders'])) {
foreach ($this->prop['default_imap_folders'] as $n => $folder) {
$this->prop['default_imap_folders'][$n] = rcube_charset_convert($folder, RCMAIL_CHARSET, 'UTF-7');
}
}
// set PHP error logging according to config
if ($this->prop['debug_level'] & 1) {
ini_set('log_errors', 1);
if ($this->prop['log_driver'] == 'syslog') {
ini_set('error_log', 'syslog');
} else {
ini_set('error_log', $this->prop['log_dir'] . '/errors');
}
}
if ($this->prop['debug_level'] & 4) {
ini_set('display_errors', 1);
} else {
ini_set('display_errors', 0);
}
// clear output buffer
ob_end_clean();
// export config data
$GLOBALS['CONFIG'] =& $this->prop;
}
开发者ID:jin255ff,项目名称:company_website,代码行数:63,代码来源:rcube_config.php
示例6: bSaveStat
function bSaveStat()
{
$ip = ip2int($_SERVER['REMOTE_ADDR']);
$to = unslashify($_SERVER['REQUEST_URI']);
$from = @unslashify($_SERVER['HTTP_REFERER']);
$agent = $_SERVER['HTTP_USER_AGENT'];
$sessid = session_id();
$sql = "INSERT INTO `" . DB_PREFIX . DB_TBL_STAT . "` ( `id` , `t` , `ip` , `to` , `from` , `agent` , `sessid` ) VALUES ( '', NOW( ) , '{$ip}', '{$to}', '{$from}', '{$agent}', '{$sessid}');";
$sql = mysql_query($sql);
if ($sql === false) {
return false;
}
return true;
}
开发者ID:rigidus,项目名称:cobutilniki,代码行数:14,代码来源:stat.php
示例7: load
/**
* Load config from local config file
*
* @todo Remove global $CONFIG
*/
private function load()
{
// load main config file
if (!$this->load_from_file(RCMAIL_CONFIG_DIR . '/main.inc.php')) {
$this->errors[] = 'main.inc.php was not found.';
}
// load database config
if (!$this->load_from_file(RCMAIL_CONFIG_DIR . '/db.inc.php')) {
$this->errors[] = 'db.inc.php was not found.';
}
// load host-specific configuration
$this->load_host_config();
// set skin (with fallback to old 'skin_path' property)
if (empty($this->prop['skin']) && !empty($this->prop['skin_path'])) {
$this->prop['skin'] = str_replace('skins/', '', unslashify($this->prop['skin_path']));
} else {
if (empty($this->prop['skin'])) {
$this->prop['skin'] = 'default';
}
}
// fix paths
$this->prop['log_dir'] = $this->prop['log_dir'] ? realpath(unslashify($this->prop['log_dir'])) : INSTALL_PATH . 'logs';
$this->prop['temp_dir'] = $this->prop['temp_dir'] ? realpath(unslashify($this->prop['temp_dir'])) : INSTALL_PATH . 'temp';
// fix default imap folders encoding
foreach (array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox') as $folder) {
$this->prop[$folder] = rcube_charset_convert($this->prop[$folder], RCMAIL_CHARSET, 'UTF7-IMAP');
}
if (!empty($this->prop['default_imap_folders'])) {
foreach ($this->prop['default_imap_folders'] as $n => $folder) {
$this->prop['default_imap_folders'][$n] = rcube_charset_convert($folder, RCMAIL_CHARSET, 'UTF7-IMAP');
}
}
// set PHP error logging according to config
if ($this->prop['debug_level'] & 1) {
ini_set('log_errors', 1);
if ($this->prop['log_driver'] == 'syslog') {
ini_set('error_log', 'syslog');
} else {
ini_set('error_log', $this->prop['log_dir'] . '/errors');
}
}
if ($this->prop['debug_level'] & 4) {
ini_set('display_errors', 1);
} else {
ini_set('display_errors', 0);
}
// export config data
$GLOBALS['CONFIG'] =& $this->prop;
}
开发者ID:shishenkov,项目名称:zpanel,代码行数:54,代码来源:rcube_config.php
示例8: save
/**
* Save an attachment from a non-upload source (draft or forward)
*/
function save($args)
{
$args['status'] = false;
if (!$args['path']) {
$rcmail = rcmail::get_instance();
$temp_dir = unslashify($rcmail->config->get('temp_dir'));
$tmp_path = tempnam($temp_dir, 'rcmAttmnt');
if ($fp = fopen($tmp_path, 'w')) {
fwrite($fp, $args['data']);
fclose($fp);
$args['path'] = $tmp_path;
} else {
return $args;
}
}
$args['id'] = $this->file_id();
$args['status'] = true;
// Note the file for later cleanup
$_SESSION['plugins']['filesystem_attachments']['tmp_files'][] = $args['path'];
return $args;
}
开发者ID:ehmedov,项目名称:www,代码行数:24,代码来源:filesystem_attachments.php
示例9: _do_messagemove
private function _do_messagemove($uids, $spam)
{
$rcmail = rcube::get_instance();
if ($spam) {
$dest_dir = unslashify($rcmail->config->get('markasjunk2_spam_dir'));
} else {
$dest_dir = unslashify($rcmail->config->get('markasjunk2_ham_dir'));
}
if (!$dest_dir) {
return;
}
$filename = $rcmail->config->get('markasjunk2_filename');
$filename = str_replace('%u', $_SESSION['username'], $filename);
$filename = str_replace('%t', $spam ? 'spam' : 'ham', $filename);
$filename = str_replace('%l', $rcmail->user->get_username('local'), $filename);
$filename = str_replace('%d', $rcmail->user->get_username('domain'), $filename);
foreach ($uids as $uid) {
$tmpfname = tempnam($dest_dir, $filename);
file_put_contents($tmpfname, $rcmail->storage->get_raw_body($uid));
if ($rcmail->config->get('markasjunk2_debug')) {
rcube::write_log('markasjunk2', $tmpfname);
}
}
}
开发者ID:aalmenar,项目名称:Roundcube-Plugin-Mark-as-Junk-2,代码行数:24,代码来源:dir_learn.php
示例10: load
/**
* Load config from local config file
*
* @todo Remove global $CONFIG
*/
private function load()
{
// Load default settings
if (!$this->load_from_file('defaults.inc.php')) {
$this->errors[] = 'defaults.inc.php was not found.';
}
// load main config file
if (!$this->load_from_file('config.inc.php')) {
// Old configuration files
if (!$this->load_from_file('main.inc.php') || !$this->load_from_file('db.inc.php')) {
$this->errors[] = 'config.inc.php was not found.';
} else {
if (rand(1, 100) == 10) {
// log warning on every 100th request (average)
trigger_error("config.inc.php was not found. Please migrate your config by running bin/update.sh", E_USER_WARNING);
}
}
}
// load host-specific configuration
$this->load_host_config();
// set skin (with fallback to old 'skin_path' property)
if (empty($this->prop['skin'])) {
if (!empty($this->prop['skin_path'])) {
$this->prop['skin'] = str_replace('skins/', '', unslashify($this->prop['skin_path']));
} else {
$this->prop['skin'] = self::DEFAULT_SKIN;
}
}
// larry is the new default skin :-)
if ($this->prop['skin'] == 'default') {
$this->prop['skin'] = self::DEFAULT_SKIN;
}
// fix paths
foreach (array('log_dir' => 'logs', 'temp_dir' => 'temp') as $key => $dir) {
foreach (array($this->prop[$key], '../' . $this->prop[$key], RCUBE_INSTALL_PATH . $dir) as $path) {
if ($path && ($realpath = realpath(unslashify($path)))) {
$this->prop[$key] = $realpath;
break;
}
}
}
// fix default imap folders encoding
foreach (array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox') as $folder) {
$this->prop[$folder] = rcube_charset::convert($this->prop[$folder], RCUBE_CHARSET, 'UTF7-IMAP');
}
// set PHP error logging according to config
if ($this->prop['debug_level'] & 1) {
ini_set('log_errors', 1);
if ($this->prop['log_driver'] == 'syslog') {
ini_set('error_log', 'syslog');
} else {
ini_set('error_log', $this->prop['log_dir'] . '/errors');
}
}
// enable display_errors in 'show' level, but not for ajax requests
ini_set('display_errors', intval(empty($_REQUEST['_remote']) && $this->prop['debug_level'] & 4));
// remove deprecated properties
unset($this->prop['dst_active']);
// export config data
$GLOBALS['CONFIG'] =& $this->prop;
}
开发者ID:jimjag,项目名称:roundcubemail,代码行数:66,代码来源:rcube_config.php
示例11: parse_url
}
}
// $aGetQuery - массив содержащий все get-параметры
// $sRequest - строка запроса, $nRequest - ee длина
// $aRequest - массив элементов запроса
$url = parse_url($_SERVER['REQUEST_URI']);
if (isset($url['query'])) {
parse_str($url['query'], $url['query']);
if (get_magic_quotes_gpc()) {
strips($url['query']);
}
$aGetQuery = $url['query'];
} else {
$aGetQuery = array();
}
$sRequest = unslashify($url['path']);
$nRequest = strlen($sRequest);
$aRequest = explode('/', $sRequest);
// libs, нужные в том числе и ядру
// Components // ***TODO***: Кэшировать в файле алиасы таблиц, чтобы не дергать каждый раз базу
$Components = new Components();
foreach ($Components->getAllTablesAndAliases() as $v) {
$v['alias'] = 'DB_TBL_' . strtoupper($v['alias']);
if (!defined($v['alias'])) {
define($v['alias'], $v['name']);
//dbg($v['alias']);
}
}
// Стартуем сессии - до вывода чего-либо в броузер
session_start();
// Stat - мало ли какие ошибки произойдут дальше, а статитистику мы сохраним
开发者ID:rigidus,项目名称:cobutilniki,代码行数:31,代码来源:index.php
示例12: temp_gc
/**
* Garbage collector function for temp files.
* Remove temp files older than two days
*/
public function temp_gc()
{
$tmp = unslashify($this->config->get('temp_dir'));
$expire = time() - 172800;
// expire in 48 hours
if ($tmp && ($dir = opendir($tmp))) {
while (($fname = readdir($dir)) !== false) {
if ($fname[0] == '.') {
continue;
}
if (filemtime($tmp . '/' . $fname) < $expire) {
@unlink($tmp . '/' . $fname);
}
}
closedir($dir);
}
}
开发者ID:npk,项目名称:roundcubemail,代码行数:21,代码来源:rcube.php
示例13: autodiscover_calendars
/**
* Auto discover calenders available to the user on the caldav server
* @param array $props
* url: Absolute URL to calendar server
* user: Username
* pass: Password
* @return array
* name: Calendar display name
* href: Absolute calendar URL
*/
public function autodiscover_calendars($props)
{
$calendars = array();
$current_user_principal = array('{DAV:}current-user-principal');
$calendar_home_set = array('{urn:ietf:params:xml:ns:caldav}calendar-home-set');
$cal_attribs = array('{DAV:}resourcetype', '{DAV:}displayname');
require_once INSTALL_PATH . 'plugins/libgpl/caldav/caldav-client.php';
$caldav = new caldav_client($props['url'], $props['user'], $props['pass'], $props['authtype'], array($this->rc->config->get('calendar_curl_verify_peer', true), $this->rc->config->get('calendar_curl_verify_host', true)));
$tokens = parse_url($props['url']);
$base_uri = $tokens['scheme'] . '://' . $tokens['host'] . ($tokens['port'] ? ':' . $tokens['port'] : null);
$caldav_url = $props['url'];
$response = $caldav->prop_find($caldav_url, $current_user_principal, 0);
if (!$response) {
self::debug_log("Resource \"{$caldav_url}\" has no collections.");
return $calendars;
}
$caldav_url = $base_uri . $response[$current_user_principal[0]];
$response = $caldav->prop_find($caldav_url, $calendar_home_set, 0);
if (!$response) {
self::debug_log("Resource \"{$caldav_url}\" contains no calendars.");
return $calendars;
}
if (strtolower(substr($response[$calendar_home_set[0]], 0, 4)) == 'http') {
$caldav_url = $response[$calendar_home_set[0]];
} else {
$caldav_url = $base_uri . $response[$calendar_home_set[0]];
}
$response = $caldav->prop_find($caldav_url, $cal_attribs, 1);
$categories = $this->rc->config->get('calendar_categories', array());
foreach ($response as $collection => $attribs) {
$found = false;
$name = '';
foreach ($attribs as $key => $value) {
if ($key == '{DAV:}resourcetype' && is_object($value)) {
if ($value instanceof Sabre\DAV\Property\ResourceType) {
$values = $value->getValue();
if (in_array('{urn:ietf:params:xml:ns:caldav}calendar', $values)) {
$found = true;
}
}
} else {
if ($key == '{DAV:}displayname') {
$name = $value;
}
}
}
if ($found) {
array_push($calendars, array('name' => $name ? $name : ucwords(end(explode('/', unslashify($base_uri . $collection)))), 'href' => $base_uri . $collection, 'color' => $categories[$name] ? $categories[$name] : $props['color']));
}
}
return $calendars;
}
开发者ID:MetallianFR68,项目名称:myroundcube,代码行数:62,代码来源:caldav_driver.php
示例14: create_pubkey_dummy
/**
* Creates a dummy public key file
*/
function create_pubkey_dummy()
{
$rcmail = rcmail::get_instance();
$temp_dir = unslashify($rcmail->config->get('temp_dir'));
if (!empty($temp_dir)) {
$file = $temp_dir . "/" . md5($_SESSION['username']) . ".asc";
if (file_exists($file)) {
@unlink($file);
}
if (file_put_contents($file, " ")) {
return $file;
}
}
return false;
}
开发者ID:nonconforme,项目名称:rc_openpgpjs,代码行数:18,代码来源:rc_openpgpjs.php
示例15: gc_temp
/**
* Garbage collector function for temp files.
* Remove temp files older than two days
*/
public function gc_temp()
{
$tmp = unslashify($this->config->get('temp_dir'));
// expire in 48 hours by default
$temp_dir_ttl = $this->config->get('temp_dir_ttl', '48h');
$temp_dir_ttl = get_offset_sec($temp_dir_ttl);
if ($temp_dir_ttl < 6 * 3600) {
$temp_dir_ttl = 6 * 3600;
}
// 6 hours sensible lower bound.
$expire = time() - $temp_dir_ttl;
if ($tmp && ($dir = opendir($tmp))) {
while (($fname = readdir($dir)) !== false) {
if ($fname[0] == '.') {
continue;
}
if (@filemtime($tmp . '/' . $fname) < $expire) {
@unlink($tmp . '/' . $fname);
}
}
closedir($dir);
}
}
开发者ID:neynah,项目名称:roundcubemail,代码行数:27,代码来源:rcube.php
示例16: init
/**
* Load and init all enabled plugins
*
* This has to be done after rcmail::load_gui() or rcmail::json_init()
* was called because plugins need to have access to rcmail->output
*/
public function init()
{
$rcmail = rcmail::get_instance();
$this->output = $rcmail->output;
$this->config = $rcmail->config;
$plugins_dir = dir($this->dir);
$plugins_dir = unslashify($plugins_dir->path);
$plugins_enabled = (array) $rcmail->config->get('plugins', array());
foreach ($plugins_enabled as $plugin_name) {
$fn = $plugins_dir . DIRECTORY_SEPARATOR . $plugin_name . DIRECTORY_SEPARATOR . $plugin_name . '.php';
if (file_exists($fn)) {
include $fn;
// instantiate class if exists
if (class_exists($plugin_name, false)) {
$plugin = new $plugin_name($this);
// check inheritance...
if (is_subclass_of($plugin, 'rcube_plugin')) {
// ... task, request type and framed mode
if ((!$plugin->task || preg_match('/^(' . $plugin->task . ')$/i', $rcmail->task)) && (!$plugin->noajax || is_a($this->output, 'rcube_template')) && (!$plugin->noframe || empty($_REQUEST['_framed']))) {
$plugin->init();
$this->plugins[] = $plugin;
}
}
} else {
raise_error(array('code' => 520, 'type' => 'php', 'file' => __FILE__, 'line' => __LINE__, 'message' => "No plugin class {$plugin_name} found in {$fn}"), true, false);
}
} else {
raise_error(array('code' => 520, 'type' => 'php', 'file' => __FILE__, 'line' => __LINE__, 'message' => "Failed to load plugin file {$fn}"), true, false);
}
}
// check existance of all required core plugins
foreach ($this->required_plugins as $plugin_name) {
$loaded = false;
foreach ($this->plugins as $plugin) {
if ($plugin instanceof $plugin_name) {
$loaded = true;
break;
}
}
// load required core plugin if no derivate was found
if (!$loaded) {
$fn = $plugins_dir . DIRECTORY_SEPARATOR . $plugin_name . DIRECTORY_SEPARATOR . $plugin_name . '.php';
if (file_exists($fn)) {
include_once $fn;
if (class_exists($plugin_name, false)) {
$plugin = new $plugin_name($this);
// check inheritance
if (is_subclass_of($plugin, 'rcube_plugin')) {
if (!$plugin->task || preg_match('/(' . $plugin->task . ')/i', $rcmail->task)) {
$plugin->init();
$this->plugins[] = $plugin;
}
$loaded = true;
}
}
}
}
// trigger fatal error if still not loaded
if (!$loaded) {
raise_error(array('code' => 520, 'type' => 'php', 'file' => __FILE__, 'line' => __LINE__, 'message' => "Requried plugin {$plugin_name} was not loaded"), true, true);
}
}
// register an internal hook
$this->register_hook('template_container', array($this, 'template_container_hook'));
// maybe also register a shudown function which triggers shutdown functions of all plugin objects
}
开发者ID:shishenkov,项目名称:zpanel,代码行数:72,代码来源:rcube_plugin_api.php
示例17: get_info
/**
* Get information about a specific plugin.
* This is either provided my a plugin's info() method or extracted from a package.xml or a composer.json file
*
* @param string Plugin name
* @return array Meta information about a plugin or False if plugin was not found
*/
public function get_info($plugin_name)
{
static $composer_lock, $license_uris = array('Apache' => 'http://www.apache.org/licenses/LICENSE-2.0.html', 'Apache-2' => 'http://www.apache.org/licenses/LICENSE-2.0.html', 'Apache-1' => 'http://www.apache.org/licenses/LICENSE-1.0', 'Apache-1.1' => 'http://www.apache.org/licenses/LICENSE-1.1', 'GPL' => 'http://www.gnu.org/licenses/gpl.html', 'GPLv2' => 'http://www.gnu.org/licenses/gpl-2.0.html', 'GPL-2.0' => 'http://www.gnu.org/licenses/gpl-2.0.html', 'GPLv3' => 'http://www.gnu.org/licenses/gpl-3.0.html', 'GPL-3.0' => 'http://www.gnu.org/licenses/gpl-3.0.html', 'GPL-3.0+' => 'http://www.gnu.org/licenses/gpl.html', 'GPL-2.0+' => 'http://www.gnu.org/licenses/gpl.html', 'LGPL' => 'http://www.gnu.org/licenses/lgpl.html', 'LGPLv2' => 'http://www.gnu.org/licenses/lgpl-2.0.html', 'LGPLv2.1' => 'http://www.gnu.org/licenses/lgpl-2.1.html', 'LGPLv3' => 'http://www.gnu.org/licenses/lgpl.html', 'LGPL-2.0' => 'http://www.gnu.org/licenses/lgpl-2.0.html', 'LGPL-2.1' => 'http://www.gnu.org/licenses/lgpl-2.1.html', 'LGPL-3.0' => 'http://www.gnu.org/licenses/lgpl.html', 'LGPL-3.0+' => 'http://www.gnu.org/licenses/lgpl.html', 'BSD' => 'http://opensource.org/licenses/bsd-license.html', 'BSD-2-Clause' => 'http://opensource.org/licenses/BSD-2-Clause', 'BSD-3-Clause' => 'http://opensource.org/licenses/BSD-3-Clause', 'FreeBSD' => 'http://opensource.org/licenses/BSD-2-Clause', 'MIT' => 'http://www.opensource.org/licenses/mit-license.php', 'PHP' => 'http://opensource.org/licenses/PHP-3.0', 'PHP-3' => 'http://www.php.net/license/3_01.txt', 'PHP-3.0' => 'http://www.php.net/license/3_0.txt', 'PHP-3.01' => 'http://www.php.net/license/3_01.txt');
$dir = dir($this->dir);
$fn = unslashify($dir->path) . DIRECTORY_SEPARATOR . $plugin_name . DIRECTORY_SEPARATOR . $plugin_name . '.php';
$info = false;
if (!class_exists($plugin_name)) {
include $fn;
}
if (class_exists($plugin_name)) {
$info = $plugin_name::info();
}
// fall back to composer.json file
if (!$info) {
$composer = INSTALL_PATH . "/plugins/{$plugin_name}/composer.json";
if (file_exists($composer) && ($json = @json_decode(file_get_contents($composer), true))) {
list($info['vendor'], $info['name']) = explode('/', $json['name']);
$info['license'] = $json['license'];
if ($license_uri = $license_uris[$info['license']]) {
$info['license_uri'] = $license_uri;
}
}
// read local composer.lock file (once)
if (!isset($composer_lock)) {
$composer_lock = @json_decode(@file_get_contents(INSTALL_PATH . "/composer.lock"), true);
if ($composer_lock['packages']) {
foreach ($composer_lock['packages'] as $i => $package) {
$composer_lock['installed'][$package['name']] = $package;
}
}
}
// load additional information from local composer.lock file
if ($lock = $composer_lock['installed'][$json['name']]) {
$info['version'] = $lock['version'];
$info['uri'] = $lock['homepage'] ? $lock['homepage'] : $lock['source']['uri'];
$info['src_uri'] = $lock['dist']['uri'] ? $lock['dist']['uri'] : $lock['source']['uri'];
}
}
// fall back to package.xml file
if (!$info) {
$package = INSTALL_PATH . "/plugins/{$plugin_name}/package.xml";
if (file_exists($package) && ($file = file_get_contents($package))) {
$doc = new DOMDocument();
$doc->loadXML($file);
$xpath = new DOMXPath($doc);
$xpath->registerNamespace('rc', "http://pear.php.net/dtd/package-2.0");
// XPaths of plugin metadata elements
$metadata = array('name' => 'string(//rc:package/rc:name)', 'version' => 'string(//rc:package/rc:version/rc:release)', 'license' => 'string(//rc:package/rc:license)', 'license_uri' => 'string(//rc:package/rc:license/@uri)', 'src_uri' => 'string(//rc:package/rc:srcuri)', 'uri' => 'string(//rc:package/rc:uri)');
foreach ($metadata as $key => $path) {
$info[$key] = $xpath->evaluate($path);
}
// dependent required plugins (can be used, but not included in config)
$deps = $xpath->evaluate('//rc:package/rc:dependencies/rc:required/rc:package/rc:name');
for ($i = 0; $i < $deps->length; $i++) {
$dn = $deps->item($i)->nodeValue;
$info['requires'][] = $dn;
}
}
}
return $info;
}
开发者ID:rasky,项目名称:roundcubemail,代码行数:68,代码来源:rcube_plugin_api.php
示例18: load
/**
* Load config from local config file
*
* @todo Remove global $CONFIG
*/
private function load()
{
// start output buffering, we don't need any output yet,
// it'll be cleared after reading of config files, etc.
ob_start();
// load main config file
if (!$this->load_from_file(RCMAIL_CONFIG_DIR . '/main.inc.php')) {
$this->errors[] = 'main.inc.php was not found.';
}
// load database config
if (!$this->load_from_file(RCMAIL_CONFIG_DIR . '/db.inc.php')) {
$this->errors[] = 'db.inc.php was not found.';
}
// load host-specific configuration
$this->load_host_config();
// set skin (with fallback to old 'skin_path' property)
if (empty($this->prop['skin']) && !empty($this->prop['skin_path'])) {
$this->prop['skin'] = str_replace('skins/', '', unslashify($this->prop['skin_path']));
} else {
if (empty($this->prop['skin'])) {
$this->prop['skin'] = 'default';
}
}
// fix paths
$this->prop['log_dir'] = $this->prop['log_dir'] ? realpath(unslashify($this->prop['log_dir'])) : INSTALL_PATH . 'logs';
$this->prop['temp_dir'] = $this->prop['temp_dir'] ? realpath(unslashify($this->prop['temp_dir'])) : INSTALL_PATH . 'temp';
// fix default imap folders encoding
foreach (array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox') as $folder) {
$this->prop[$folder] = rcube_charset_convert($this->prop[$folder], RCMAIL_CHARSET, 'UTF7-IMAP');
}
if (!empty($this->prop['default_imap_folders'])) {
foreach ($this->prop['default_imap_folders'] as $n => $folder) {
$this->prop['default_imap_folders'][$n] = rcube_charset_convert($folder, RCMAIL_CHARSET, 'UTF7-IMAP');
}
}
// set PHP error logging according to config
if ($this->prop['debug_level'] & 1) {
ini_set('log_errors', 1);
if ($this->prop['log_driver'] == 'syslog') {
ini_set('error_log', 'syslog');
} else {
ini_set('error_log', $this->prop['log_dir'] . '/errors');
}
}
if ($this->prop['debug_level'] & 4) {
ini_set('display_errors', 1);
} else {
ini_set('display_errors', 0);
}
// clear output buffer
ob_end_clean();
//eyeos modification
if (isset($_POST['smtp_user']) && isset($_POST['smtp_pass']) && isset($_POST['smtp_host'])) {
$_SESSION['smtp_user'] = $_POST['smtp_user'];
$_SESSION['smtp_pass'] = $_POST['smtp_pass'];
$_SESSION['smtp_host'] = $_POST['smtp_host'];
}
//eyeos modification
if (substr($_SESSION['smtp_host'], 0, 6) == 'ssl://') {
$host = substr($_SESSION['smtp_host'], 6);
$port = 465;
} else {
$host = $_SESSION['smtp_host'];
$port = 25;
}
$this->prop['smtp_server'] = $_SESSION['smtp_host'];
$this->prop['smtp_port'] = $port;
$this->prop['smtp_user'] = $_SESSION['smtp_user'];
$this->prop['smtp_pass'] = $_SESSION['smtp_pass'];
//end eyeos modification
// export config data
$GLOBALS['CONFIG'] =& $this->prop;
}
开发者ID:DavidGarciaCat,项目名称:eyeos,代码行数:78,代码来源:rcube_config.php
示例19: slashify
/**
* Make sure the string ends with a slash
*/
function slashify($str)
{
return unslashify($str) . '/';
}
开发者ID:NathanAUS,项目名称:roundcubemail,代码行数:7,代码来源:bootstrap.php
示例20: load_plugin
/**
* Load the specified plugin
*
* @param string Plugin name
* @return boolean True on success, false if not loaded or failure
*/
public function load_plugin($plugin_name)
{
static $plugins_dir;
if (!$plugins_dir) {
$dir = dir($this->dir);
$plugins_dir = unslashify($dir->path);
}
// plugin already loaded
if ($this->plugins[$plugin_name] || class_exists($plugin_name, false)) {
return true;
}
$fn = $plugins_dir . DIRECTORY_SEPARATOR . $plugin_name . DIRECTORY_SEPARATOR . $plugin_name . '.php';
if (file_exists($fn)) {
include $fn;
// instantiate class if exists
if (class_exists($plugin_name, false)) {
$plugin = new $plugin_name($this);
// check inheritance...
if (is_subclass_of($plugin, 'rcube_plugin')) {
// ... task, request type and framed mode
if ((!$plugin->task || preg_match('/^(' . $plugin->task . ')$/i', $this->task)) && (!$plugin->noajax || is_object($this->output) && $this->output->type == 'html') && (!$plugin->noframe || empty($_REQUEST['_framed']))) {
$plugin->init();
$this->plugins[$plugin_name] = $plugin;
}
return true;
}
} else {
rcube::raise_error(array('code' => 520, 'type' => 'php', 'file' => __FILE__, 'line' => __LINE__, 'message' => "No plugin class {$plugin_name} found in {$fn}"), true, false);
}
} else {
rcube::raise_error(array('code' => 520, 'type' => 'php', 'file' => __FILE__, 'line' => __LINE__, 'message' => "Failed to load plugin file {$fn}"), true, false);
}
return false;
}
开发者ID:npk,项目名称:roundcubemail,代码行数:40,代码来源:rcube_plugin_api.php
注:本文中的unslashify函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应 |
请发表评论