Прописать в ChrootDirectory /var/www/site_dev/assets. не могу, поскольку права на запись в /var/www/ нужны многим группам пользователям.Не совсем понимаю, как права других пользователей связаны с Chroot'ом, в Вашем случае... Ну да не суть.
Есть вариант забирать кроном каждую секунду фаилы из /home/%u/ и перемешать в кнечную папку, но это както не правильно.Крон изначально запускается 1 раз в минуту (минимум) и не очень приспособлен для того, что бы делать что-то каждую секунду. В этом случае, проще было бы написать скрипт с бесконечным циклом и не забивать крон как минимум 60-ю заданиями (что бы они запускались через секунду). А если правильнее - использовать для этого какую-то систему синхронизации, например, Rsync.
$text =<<<EOL
<g id="L-14-st-230" display="inline" opacity="1">
<text transform="matrix(1 0 0 1 226.6597 827.2749)" enable-background="new "><tspan x="0" y="0" fill="#191919" font-family="'PTSans-Regular'" font-size="16">Деловой центр</tspan><tspan x="31.6" y="14" fill="#191919" font-family="'PTSans-Regular'" font-size="16">(МЦК)</tspan></text>
</g>
<g id="L-14-st-228" display="inline" opacity="1">
<text transform="matrix(1 0 0 1 444.9458 1066.8765)" fill="#191919" font-family="'PTSans-Regular'" font-size="16">Лужники</text>
</g>
EOL;
$text = str_replace('</text>', '</text>|||', $text);
$text = strip_tags($text);
$lines = explode('|||', $text);
foreach($lines as $key => &$line)
{
$line = trim($line);
if(empty($line))
unset($lines[$key]);
}
var_dump($lines);
Выводите для каждого изображения в форме скрытое поле. Туда будете писать значение сортировки.отправляешь форму на сервер и уже обрабатываешь данные так чтобы получился массив с ID файлов в нужном порядке. И сохраняешь, а для этого понадобится использовать один из методов для сохранения свойств:
$arr_file = array(
"name" =>$_FILES['file']['name'],
"size" =>$_FILES['file']['size'],
"tmp_name" =>$_FILES['file']['tmp_name'],
"type" => "",
"old_file" => "",
"del" => "Y",
"MODULE_ID" => ""
);
$fid = CFile::SaveFile($arr_file, "patch");
$fields = Array( "PERSONAL_PHOTO" => $arFile2 );
var stateMonitor = new ymaps.Monitor(myPolygon.editor.state);
stateMonitor.add("drawing", function (newValue) {
myPolygon.options.set("strokeColor", newValue ? '#FF0000' : '#0000FF');
});
${"GLOBALS"}["gieqhjiyejrg"]="uri";${"GLOBALS"}["piwdysvikh"]="dummy_page";
var maps = {};
maps["marker" + 0] = ...;
maps["marker" + 1] = ...;
for (var prop in maps) {
console.log(maps[prop]);
}