Я создаю модуль для Drupal 6 (то, что он делает, не имеет большого значения; я потратил долго время на поиски других решений этой проблемы, и сворачивание собственного, безусловно, самое простое), и я столкнулся с чем-то вроде концептуального дорожного препятствия.
Так же, как модуль uploadpath
, я создаю каталог на основе ( через шаблон замены)свойства узла.Например, создавая узел с типом содержимого «assignmentindex» под названием «Foobar», мой модуль создаст папку sites/default/files/assignmentindex/Foobar
.
Проблема возникает (как и ожидалось) во время событий update
, когда целевой каталог ужесуществует или не может быть создан по какой-то другой странной причине (единственная, о которой я могу мечтать сейчас, - это исчерпание инодов, но я уверен, что есть другие условия сбоя).Очевидно, чтобы избежать потери данных, исходную папку нужно оставить в покое, но это нарушает связь между каталогом и узлом.Таким образом, я вижу 3 разные возможности:
- Откат всего узла
- Откат только измененного заголовка
- Ничего не откатывается (но показывает ошибку)
Первый Вопрос в том, какой из них лучше?Откат всего узла уничтожает потенциально огромный объем работы, откат только заголовка сбивает с толку, а откат ничего не означает, что имена не синхронизированы.В настоящее время я предпочитаю просто откатить заголовок, но я очень ценю мысли по этому поводу.
Вопрос second : как?Я уже переключил соответствующий $op
на presave
(с update
), чтобы исходный узел был доступен через
$old_node = node_load($node->id);
и откатил одно полепотенциально может просто сделать
$node->title = $old_node-title;
, но это кажется неоптимальным, и мне любопытно, есть ли лучший способ добиться этого.
Извините за длинный вопрос, изаранее большое спасибо за помощь.