本文整理汇总了PHP中Safe::opendir方法的典型用法代码示例。如果您正苦于以下问题:PHP Safe::opendir方法的具体用法?PHP Safe::opendir怎么用?PHP Safe::opendir使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Safe
的用法示例。
在下文中一共展示了Safe::opendir方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: list_files
/**
* list files into one directory
*
* @param string the directory to look at
* @return an array of directory entries, or NULL
*/
public static function list_files($path)
{
global $context;
// we are looking for files
$files = array();
// look for directory entries
$path_translated = $context['path_to_root'] . $path;
if ($handle = Safe::opendir($path_translated)) {
// handle files one by one
while (($node = Safe::readdir($handle)) !== FALSE) {
// skip trivial entries
if ($node[0] == '.') {
continue;
}
// skip processed entries
if (preg_match('/\\.(done|bak)$/i', $node)) {
continue;
}
// make a real name
$target = $path . '/' . $node;
$target_translated = $path_translated . '/' . $node;
// scan a file
if (is_file($target_translated) && is_readable($target_translated)) {
$files[] = $target;
}
}
Safe::closedir($handle);
}
return $files;
}
示例2: delete_all
/**
* delete a directory and all of its content
*
* @param string the directory to delete
*/
function delete_all($path)
{
global $context;
$path_translated = str_replace('//', '/', $context['path_to_root'] . '/' . $path);
if ($handle = Safe::opendir($path_translated)) {
while (($node = Safe::readdir($handle)) !== FALSE) {
if ($node[0] == '.') {
continue;
}
// make a real name
$target = str_replace('//', '/', $path . '/' . $node);
$target_translated = str_replace('//', '/', $path_translated . '/' . $node);
// delete a sub directory
if (is_dir($target_translated)) {
delete_all($path . '/' . $node);
Safe::rmdir($target_translated);
// delete the node
} else {
Safe::unlink($target_translated);
}
// statistics
global $deleted_nodes;
$deleted_nodes++;
}
Safe::closedir($handle);
}
}
示例3: list_files_at
/**
* list all files below a certain path
*
* @param string the path to scan
* @return an array of file names
*/
function list_files_at($root, $path = '')
{
global $context;
// the list of files
$files = array();
$path_translated = rtrim(str_replace('//', '/', $context['path_to_root'] . '/' . $root . '/' . $path), '/');
if ($handle = Safe::opendir($path_translated)) {
while (($node = Safe::readdir($handle)) !== FALSE) {
if ($node[0] == '.') {
continue;
}
// skip transient files
if (preg_match('/\\.cache$/i', $node)) {
continue;
}
// make a real name
$target = str_replace('//', '/', $path . '/' . $node);
$target_translated = str_replace('//', '/', $path_translated . '/' . $node);
// extend the list recursively
if (is_dir($target_translated)) {
$files = array_merge($files, list_files_at($root, $target));
} elseif (is_readable($target_translated)) {
$files[] = $path . '/' . $node;
}
}
Safe::closedir($handle);
}
return $files;
}
示例4: natsort
$items[] = '<option value="' . $item . '"' . $checked . '>' . $item . "</option>\n";
}
Safe::closedir($dir);
// list items by alphabetical order
if (@count($items)) {
natsort($items);
foreach ($items as $item) {
$context['text'] .= $item;
}
}
}
$context['text'] .= '</select> ' . Skin::build_submit_button(i18n::s('Go')) . '</p></form>';
// list all cascaded style sheets and template.php for this skin
$context['text'] .= '<form method="get" action="' . $context['script_url'] . '"><p>' . '<input type="hidden" name="skin" value="' . encode_field($skin) . '" />';
$context['text'] .= i18n::s('Files') . ' <select name="file">';
if ($dir = Safe::opendir("../skins/" . $skin)) {
// list files in the skin directory
$items = array();
while (($item = Safe::readdir($dir)) !== FALSE) {
if ($item[0] == '.' || is_dir('../skins/' . $item . '/' . $file)) {
continue;
}
if (!preg_match('/(\\.css|template.php)$/i', $item)) {
continue;
}
$checked = '';
if ($file == $item) {
$checked = ' selected="selected"';
}
$items[] = '<option value="' . $item . '"' . $checked . '>skin/' . $skin . '/' . $item . "</option>\n";
}
示例5: delete_staging
/**
* delete staging files
*
* @param string the directory to start with
* @see scripts/update.php
*/
function delete_staging($path)
{
global $context;
$path_translated = str_replace('//', '/', $context['path_to_root'] . '/scripts/staging' . $path);
if ($handle = Safe::opendir($path_translated)) {
while (($node = Safe::readdir($handle)) !== FALSE) {
if ($node == '.' || $node == '..') {
continue;
}
// make a real name
$target = str_replace('//', '/', $path . '/' . $node);
$target_translated = str_replace('//', '/', $path_translated . '/' . $node);
// delete sub directory content
if (is_dir($target_translated)) {
delete_staging($target);
Safe::rmdir($target_translated);
// delete all files
} else {
$context['text'] .= sprintf(i18n::s('Deleting %s'), '/scripts/staging' . $target) . BR . "\n";
Safe::unlink($target_translated);
global $deleted_nodes;
$deleted_nodes++;
}
// ensure we have enough time
Safe::set_time_limit(30);
}
Safe::closedir($handle);
}
}
示例6: include_hook
function include_hook($path)
{
global $context, $hooks;
// animate user screen and take care of time
global $scanned_directories;
$scanned_directories++;
// ensure enough execution time
Safe::set_time_limit(30);
// open the directory
if (!($dir = Safe::opendir($path))) {
$context['text'] .= sprintf(i18n::s('Impossible to read %s.'), $path) . BR . "\n";
return;
}
// browse the directory
while (($item = Safe::readdir($dir)) !== FALSE) {
// skip some files
if ($item[0] == '.') {
continue;
}
// load any 'hook.php', or any file which names ends with 'hook.php'
$actual_item = str_replace('//', '/', $path . '/' . $item);
if (preg_match('/hook\\.php$/i', $item)) {
include_once $actual_item;
$context['text'] .= sprintf(i18n::s('Hook %s has been included'), $actual_item) . BR . "\n";
// scan any sub dir except at server root
} elseif (is_dir($actual_item) && $path != $context['path_to_root'] && !strpos($path, '/files/') && !strpos($path, '/images/')) {
include_hook($actual_item);
}
}
// close the directory
Safe::closedir($dir);
}
示例7: load_skin
* list available tools
*
* @author Bernard Paques
* @reference
* @license http://www.gnu.org/copyleft/lesser.txt GNU Lesser General Public License
*/
include_once '../shared/global.php';
// load localized strings
i18n::bind('tools');
// load the skin
load_skin('tools');
// the title of the page
$context['page_title'] = i18n::s('Tools');
// list tools available on this system
$context['text'] .= '<ul>';
if ($dir = Safe::opendir($context['path_to_root'] . 'tools')) {
// every php script is an overlay, except index.php, overlay.php, and hooks
while (($file = Safe::readdir($dir)) !== FALSE) {
if ($file[0] == '.') {
continue;
}
if ($file == 'index.php') {
continue;
}
if (preg_match('/hook\\.php$/i', $file)) {
continue;
}
if (strpos($file, '.') && !preg_match('/(.*)\\.php$/i', $file, $matches)) {
continue;
}
$tools[] = Skin::build_link('tools/' . $file, $file, 'basic');
示例8: walk_files_at
/**
* walk all files below a certain path
*
* @param string the absolute path to scan
* @param function the function to call back with the file found
*
* @see scripts/check.php
*/
public static function walk_files_at($path, $call_back = NULL)
{
global $context, $script_count;
// sanity check
$path = rtrim($path, '/');
// list all files at this level
$directories = array();
if ($handle = Safe::opendir($path)) {
// list all nodes
while (($node = Safe::readdir($handle)) !== FALSE) {
// special directory names
if ($node == '.' || $node == '..') {
continue;
}
// process special nodes
if ($node[0] == '.') {
continue;
}
// make a real name
$target = $path . '/' . $node;
// scan a sub directory
if (is_dir($target)) {
$directories[] = $target;
} elseif (is_readable($target)) {
$call_back($target);
}
}
Safe::closedir($handle);
}
// walk sub-directories as well
foreach ($directories as $directory) {
Scripts::walk_files_at($directory, $call_back);
}
}
示例9: load_skin
// load the skin
load_skin('scripts');
// the path to this page
$context['path_bar'] = array('control/' => i18n::s('Control Panel'));
// the title of the page
$context['page_title'] = i18n::s('Run one-time scripts');
// the list of script to take into account
global $scripts;
$scripts = array();
// if the user table exists, check that the user is an admin
$query = "SELECT count(*) FROM " . SQL::table_name('users');
if (SQL::query($query) !== FALSE && !Surfer::is_associate()) {
Safe::header('Status: 401 Unauthorized', TRUE, 401);
Logger::error(i18n::s('You are not allowed to perform this operation.'));
// open the directory
} elseif (!($dir = Safe::opendir($context['path_to_root'] . 'scripts/run_once'))) {
Logger::error(sprintf(i18n::s('Impossible to read %s.'), $context['path_to_run_once_scripts']));
} else {
while (($item = Safe::readdir($dir)) !== FALSE) {
// script name has to start with a number --actually, a date
if ($item[0] < '0' || $item[0] > '9') {
continue;
}
// we only consider php scripts, of course
if (strlen($item) < 5 || substr($item, -4) != '.php') {
continue;
}
// do not execute twins, to ensure that scripts are ran only once
if (file_exists($context['path_to_root'] . 'scripts/run_once/' . $item . '.done')) {
continue;
}
示例10: load_skin
* @author Bernard Paques
* @reference
* @license http://www.gnu.org/copyleft/lesser.txt GNU Lesser General Public License
*/
include_once '../../shared/global.php';
// load the skin
load_skin('users');
// the title of the page
$context['page_title'] = i18n::s('Authenticators');
// splash message
if (Surfer::is_associate()) {
$context['text'] .= '<p>' . i18n::s('Authenticators listed below can be used to link this server to an existing list of users.') . '</p>';
}
// list authenticators available on this system
$context['text'] .= '<ul>';
if ($dir = Safe::opendir($context['path_to_root'] . 'users/authenticators')) {
// every php script is an authenticator, except index.php and hooks
while (($file = Safe::readdir($dir)) !== FALSE) {
if ($file[0] == '.' || is_dir($context['path_to_root'] . 'authenticators/' . $file)) {
continue;
}
if ($file == 'index.php') {
continue;
}
if (preg_match('/hook\\.php$/i', $file)) {
continue;
}
if (!preg_match('/(.*)\\.php$/i', $file, $matches)) {
continue;
}
$authenticators[] = $matches[1];
示例11: _addList
function _addList($p_list, $p_add_dir, $p_remove_dir)
{
$v_result = true;
$v_header = array();
// ----- Remove potential windows directory separator
$p_add_dir = $this->_translateWinPath($p_add_dir);
$p_remove_dir = $this->_translateWinPath($p_remove_dir, false);
if (!$this->_file) {
$this->_error('Invalid file descriptor');
return false;
}
if (sizeof($p_list) == 0) {
return true;
}
foreach ($p_list as $v_filename) {
if (!$v_result) {
break;
}
// ----- Skip the current tar name
if ($v_filename == $this->_tarname) {
continue;
}
if ($v_filename == '') {
continue;
}
if (!file_exists($v_filename)) {
$this->_warning("File '{$v_filename}' does not exist");
continue;
}
// ----- Add the file or directory header
if (!$this->_addFile($v_filename, $v_header, $p_add_dir, $p_remove_dir)) {
return false;
}
if (@is_dir($v_filename)) {
if (!($p_hdir = Safe::opendir($v_filename))) {
$this->_warning("Directory '{$v_filename}' can not be read");
continue;
}
while (false !== ($p_hitem = Safe::readdir($p_hdir))) {
if ($p_hitem[0] != '.') {
if ($v_filename != ".") {
$p_temp_list[0] = $v_filename . '/' . $p_hitem;
} else {
$p_temp_list[0] = $p_hitem;
}
$v_result = $this->_addList($p_temp_list, $p_add_dir, $p_remove_dir);
}
}
unset($p_temp_list);
unset($p_hdir);
unset($p_hitem);
}
}
return $v_result;
}
示例12: array
// derive this skin
if (isset($skin) && Surfer::is_associate()) {
$context['page_menu'] += array('skins/derive.php?skin=' . $skin => i18n::s('Derive this theme'));
}
// $context['page_publisher'] - the publisher
$context['page_publisher'] = 'webmaestro again, still through some PHP script';
// page tags
$context['page_tags'] = i18n::s('<a>tag 1</a> <a>tag 2</a>');
// $context['page_title'] - the title of the page
$context['page_title'] = i18n::s('Theme test');
// $context['path_bar'] - back to other sections
$context['path_bar'] = array('skins/' => i18n::s('Themes'));
// $context['prefix'] - also list skins available on this system
$context['prefix'] .= '<form method="get" action="' . $context['script_url'] . '"><p>';
$context['prefix'] .= i18n::s('Theme to test') . ' <select name="skin">';
if ($dir = Safe::opendir("../skins")) {
// valid skins have a template.php
$skins = array();
while (($file = Safe::readdir($dir)) !== FALSE) {
if ($file[0] == '.' || !is_dir('../skins/' . $file)) {
continue;
}
if (!file_exists('../skins/' . $file . '/template.php')) {
continue;
}
$checked = '';
if ($context['skin'] == 'skins/' . $file) {
$checked = ' selected="selected"';
}
$skins[] = '<option value="' . $file . '"' . $checked . '>' . $file . "</option>\n";
}
示例13: elseif
$action = 'image:set_as_thumbnail';
$context['text'] .= '<p>' . i18n::s('This has become the thumbnail image of the page.') . '</p>';
} elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'set_as_both') {
$action = 'image:set_as_both';
$context['text'] .= '<p>' . i18n::s('The image has been added, and it also has been set as the page thumbnail.') . '</p>';
} else {
$action = 'image:create';
$context['text'] .= '<p>' . i18n::s('The image has been inserted.') . '</p>';
}
// touch the related anchor
$anchor->touch($action, $_REQUEST['id'], isset($_REQUEST['silent']) && $_REQUEST['silent'] == 'Y');
// process several files
} else {
// scan all image files for this anchor
$count = 0;
if ($handle = Safe::opendir($file_path)) {
// list all nodes
$nodes = array();
while (($node = Safe::readdir($handle)) !== FALSE) {
// special directory names
if ($node == '.' || $node == '..') {
continue;
}
// process special nodes
if ($node[0] == '.') {
continue;
}
// skip directories
if (is_dir($context['path_to_root'] . $file_path . '/' . $node)) {
continue;
}
示例14: while
// current type
$overlay_type = '';
if (is_object($overlay)) {
$overlay_type = $overlay->get_type();
}
// list overlays available on this system
$label = i18n::s('Change the overlay');
$input = '<select name="overlay_type">';
if ($overlay_type) {
$input .= '<option value="none">(' . i18n::s('none') . ")</option>\n";
$hint = i18n::s('If you change the overlay you may loose some data.');
} else {
$hint = i18n::s('No overlay has been selected yet.');
$input .= '<option value="" selected="selected">' . i18n::s('none') . "</option>\n";
}
if ($dir = Safe::opendir($context['path_to_root'] . 'overlays')) {
// every php script is an overlay, except index.php, overlay.php, and hooks
while (($file = Safe::readdir($dir)) !== FALSE) {
if ($file[0] == '.' || is_dir($context['path_to_root'] . 'overlays/' . $file)) {
continue;
}
if ($file == 'index.php') {
continue;
}
if ($file == 'overlay.php') {
continue;
}
if (preg_match('/hook\\.php$/i', $file)) {
continue;
}
if (!preg_match('/(.*)\\.php$/i', $file, $matches)) {
示例15: encode_field
// the image
$text .= '<input type="file" name="upload" id="upload" size="30" accesskey="i" title="' . encode_field(i18n::s('Press to select a local file')) . '" />';
$text .= ' ' . Skin::build_submit_button(i18n::s('Submit'), i18n::s('Press [s] to submit data'), 's');
$text .= BR . '<span class="details">' . i18n::s('Select a .png, .gif or .jpeg image.') . ' (< ' . Skin::build_number($image_maximum_size, i18n::s('bytes')) . ')</span>';
// end of the form
$text .= '</div></form>';
// the script used for form handling at the browser
Page::insert_script('$("#upload").focus();');
$context['text'] .= Skin::build_content(NULL, i18n::s('Upload an image'), $text);
}
// use the library
//
// where images are
$path = 'skins/_reference/avatars';
// browse the path to list directories and files
if ($dir = Safe::opendir($context['path_to_root'] . $path)) {
$text = '';
if (Surfer::may_upload()) {
$text .= '<p>' . i18n::s('Click on one image below to make it your new picture.') . '</p>' . "\n";
}
// build the lists
while (($image = Safe::readdir($dir)) !== FALSE) {
// skip some files
if ($image[0] == '.') {
continue;
}
if (is_dir($context['path_to_root'] . $path . '/' . $image)) {
continue;
}
// consider only images
if (!preg_match('/(\\.gif|\\.jpeg|\\.jpg|\\.png)$/i', $image)) {