Файл: adm_scaner.php
Строк: 208
<?php
/**
* @author [FaNiska]
* @copyright 2009
* Загруз центр
* Предложения, идеи, вопросы и об ошибках писать в icq 65-64-538 или на mobi-m-ru@ya.ru
*/
if (function_exists('set_time_limit'))
{
set_time_limit(99999);
}
ignore_user_abort(1);
include 'inc/db_connect.php';
include 'inc/function.php';
include 'inc/set.php';
include 'inc/adm_head.php';
include 'inc/adm.php';
if (isset($_POST['start']) || isset($_GET['start']))
{
/// сканируемая папка
if (isset($_POST['p']))
{
$scan_p = $_POST['p'];
} else
{
$scan_p = 'files';
}
/// Уровень сканирования
if (isset($_POST['level']) && is_numeric($_POST['level']))
{
$scan_l = valid_int($_POST['level']);
} elseif (isset($_POST['l']))
{
$scan_l = valid_int($_POST['l']);
} else
{
$scan_l = 1;
}
/// Тип сканирования
if (isset($_POST['t']) && intval($_POST['t']) == 1)
{
$scan_t = 1; // только папки
} else
{
$scan_t = 2; // и папки, и файлы
}
if ($scan_p == 'files' && $scan_l == 1)
{
$reses = mysql_query('SELECT `id`,`s_name` FROM `category` WHERE `s_name`!="vlink" && `s_name`!="vrazdel" && `s_name`!="link"');
while ($arr = mysql_fetch_array($reses))
{
$array_cat[$arr['id']] = "$arr[s_name]";
}
} else
{
$table = str_replace('files/', '', $scan_p);
$table = strtok($table, '/');
$table = clean($table);
if (empty($table) or $table == 'files')
{
exit('Произошла ошибка при сканировании');
}
}
$count_f = 0;
$count_p = 0;
$count_r = 0;
require_once 'inc/scaner.php';
$scan_arr = scaner($scan_p, $scan_l, $scan_t);
foreach ($scan_arr as $value)
{
if ($scan_p == 'files' && $scan_l == 1)
{
if (!in_array("$value", $array_cat))
{
$pathinfo = pathinfo($value);
$name = str_replace('.' . $pathinfo['extension'], '', basename($value));
$folder = dirname($value) . '/';
if (is_dir($value))
{
include ('inc/great_cat.php'); /// Автоматически создаем новую таблицу для категории
}
$count_r++;
}
} else
{
$pathinfo = pathinfo($value);
$name = str_replace('.' . $pathinfo['extension'], '', basename($value));
$ras = $pathinfo['extension'];
$folder = dirname($value);
$size = filesize($value);
$strpos = strpos($name, '!');
if ($strpos !== false && $strpos == 0)
{
$name = preg_replace('/!/', '', $name, 1);
$name = translit($name);
} else
{
$name = retranslit($name);
}
if (is_dir($value))
{
if (mysql_query("INSERT INTO `$table` (`type`, `r_name`, `s_name`, `folder`, `up_time`) VALUES ('1', " . quote_smart($name) . ", '$value', '$folder', '$time')"))
{
$count_p++;
}
} elseif (in_array($ras, $arr_ext))
{
if (mysql_query("INSERT INTO `$table` (`type`, `r_name`, `s_name`, `f_ras`, `folder`, `size`, `up_time`) VALUES ('2', " . quote_smart($name) . ", '$value', '$ras', '$folder', '$size', '$time')"))
{
$count_f++;
}
}
}
}
if ($scan_l == 1 && $scan_p == 'files')
{
echo "Сканирование корневой папки завершено. Создано разделов и таблиц - $count_r <hr />";
} else
{
echo 'Обновление раздела <b>' . $table . '</b> завершено.<br />
Добавлено папок - ' . $count_p . '<br />
Добавлено файлов -' . $count_f . '<br />
<b>Не забудьте произвести ПРИСВОЕНИЕ ID</b><hr />';
}
} elseif (isset($_POST['go']) || isset($_POST['scan']) || isset($_POST['back']))
{
$scan_t = 2; // и папки, и файлы
if (isset($_POST['p']))
{
$scan_p = $_POST['p'];
$back = eregi_replace('/[^/]*$', null, $scan_p); // папка верх
$back = eregi_replace('/[^/]*$', null, $back); // папка верх
if (isset($_POST['back']))
{
$scan_p = $back;
}
$table = str_replace('files/', '', $scan_p);
$table = strtok($table, '/');
$table = clean($table);
}
if ($scan_p == 'files' || $table == 'files')
{
exit('Ошибка при сканировании!');
}
if (isset($_POST['go']) || isset($_POST['back']))
{
$scan_l = 1;
} elseif (isset($_POST['scan']))
{
$scan_l = 1000000;
}
$count_f = $count_p = $count_r = 0;
require_once 'inc/scaner.php';
$scan_arr = scaner($scan_p, $scan_l, $scan_t);
foreach ($scan_arr as $value)
{
$pathinfo = pathinfo($value);
$name = str_replace('.' . $pathinfo['extension'], '', basename($value));
$ras = $pathinfo['extension'];
$folder = dirname($value);
$size = filesize($value);
$strpos = strpos($name, '!');
if ($strpos !== false && $strpos == 0)
{
$name = preg_replace('/!/', '', $name, 1);
$name = translit($name);
} else
{
$name = retranslit($name);
}
if (is_dir($value))
{
if (mysql_query("INSERT INTO `$table` (`type`, `r_name`, `s_name`, `folder`, `up_time`) VALUES ('1', " . quote_smart($name) . ", '$value', '$folder', '$time')"))
{
$count_p++;
}
} elseif (in_array($ras, $arr_ext))
{
if (mysql_query("INSERT INTO `$table` (`type`, `r_name`, `s_name`, `f_ras`, `folder`, `size`, `up_time`) VALUES ('2', " . quote_smart($name) . ", '$value', '$ras', '$folder', '$size', '$time')"))
{
$count_f++;
}
}
}
echo 'Обновление каталога <b>' . clean($scan_p) . '</b>:<br />
Добавлено папок - ' . $count_p . '<br />
Добавлено файлов -' . $count_f . '<br />
<b>Не забудьте произвести ПРИСВОЕНИЕ ID</b><hr />';
}
echo '<div>Сканирование выполнять строго поэтапно! После сканирования<br />
<b>Не забудьте произвести ПРИСВОЕНИЕ ID</b><br />
<b>[1]</b> Для начала получите список корневых папок ЗЦ. Для этого нажмите<br />
<a href="?start&l=1&t=1&p=files">Создание разделов ЗЦ</a><hr />';
echo '<b>[2]</b> Если список разделов создан, то выполняем второй этап.<br />';
echo '<form method="post" action="">
<b>[*] Выберите раздел</b><br />
<select name="p" >';
$query = mysql_query('SELECT `id`, `s_name` FROM `category` WHERE `s_name`!="vlink" && `s_name`!="vrazdel" && `s_name`!="link"');
while ($papka = mysql_fetch_array($query))
{
echo '<option value="' . $papka['s_name'] . '">' . $papka['s_name'] . '</option>';
}
echo '</select><br /><b>[*] Тип сканирования</b><br />
<input type="radio" value="1" name="t" /> Только папки<br />
<input type="radio" value="2" checked="checked" name="t" /> Папки и файлы<br />
<b>[*] Уровень сканирования</b><br />
<input type="checkbox" value="1000000" name="l" /> Просканировать <b>всё</b><br />
или укажите уровень вложенности<br />
<input type="text" value="" name="level" /><br />';
echo '<input name="start" type="submit" value="старт"/>
</form>
<hr />';
echo '<b>[3]</b> Третий этап - сканируем отдельные папки. [<a href="inc/step3.txt">? - инструкция</a>]<br /><br />';
echo '» <a href="adm_scaner.php">В начало</a><br />';
echo '<form method="post" action="">
<b>[*] Выберите каталог</b><br />
<select name="p" >';
if (!isset($_POST['p']))
{
$query = mysql_query('SELECT `id`, `s_name` FROM `category` WHERE `s_name`!="vlink" && `s_name`!="vrazdel" && `s_name`!="link"');
} else
{
$query = mysql_query('SELECT `id`, `s_name` FROM `' . $table . '` WHERE type="1" and `folder`="' . clean($scan_p) . '"');
}
while ($papka = mysql_fetch_array($query))
{
echo '<option value="' . $papka['s_name'] . '">' . $papka['s_name'] . '</option>';
}
echo '</select><br />';
echo '<input name="scan" type="submit" value="СКАНИРОВАТЬ"/><br />';
if ($back != 'files/' . $table)
{
echo '<input name="back" type="submit" value="<<НАЗАД"/>';
}
echo '<input name="go" type="submit" value="ПЕРЕЙТИ>>"/>
</form>
<hr />';
echo '</div>';
echo '<div><img src="ext/back.gif" alt="|_" width="16" height="16" /> <a href="adm_index.php">Админка ЗЦ</a></div>';
include 'inc/adm_foot.php';
?>