function photos_access_update_8401 in Album Photos 6.0.x
Same name and namespace in other branches
- 8.5 photos_access/photos_access.install \photos_access_update_8401()
- 8.4 photos_access/photos_access.install \photos_access_update_8401()
Add collaborate column to {photos_access_user}.
File
- photos_access/
photos_access.install, line 91 - Install, update, and uninstall functions for the Photos Access module.
Code
function photos_access_update_8401() {
// @todo test update, update code, test migration...
// @todo test, how will this affect migration?
// - Either update migration or backport this update to 7.x.
// Add collaborate column to {'photos_access_user'}.
$schema = Database::getConnection()
->schema();
$spec = [
'type' => 'int',
'size' => 'tiny',
'length' => 1,
'default' => 0,
];
$schema
->addField('photos_access_user', 'collaborate', $spec);
// Update {'photos_access_user'}.collaborate to match
// {'photos_access_album'}.updateid.
// Attempt to clean up {photos_access_album} duplicate entries.
// Update {photos_access_user}.id to match the correct
// {photos_access_album}.id for nid.
$new_id = [];
$db = \Drupal::database();
$results = $db
->select('photos_access_album', 'a')
->fields('a')
->execute();
foreach ($results as $result) {
if (isset($new_id[$result->nid])) {
$id = $new_id[$result->nid];
// Update {photos_access_user}.id.
$db
->update('photos_access_user')
->fields([
'id' => $id,
'collaborate' => $result->updateid,
])
->condition('id', $result->id)
->execute();
// Make sure new records are not set to open by default.
if ($result->viewid > 0) {
$db
->update('photos_access_album')
->fields([
'viewid' => $result->viewid,
])
->condition('id', $id)
->execute();
}
// Preserve album passwords.
if ($result->pass != 1) {
$db
->update('photos_access_album')
->fields([
'pass' => $result->pass,
])
->condition('id', $id)
->execute();
}
// Delete duplicate entries in {photos_access_album}.
$db
->delete('photos_access_album')
->condition('id', $result->id)
->execute();
}
else {
$new_id[$result->nid] = $result->id;
$db
->update('photos_access_user')
->fields([
'collaborate' => $result->updateid,
])
->condition('id', $result->id)
->execute();
}
}
// Remove updateid from {'photos_access_album'}.
$schema
->dropField('photos_access_album', 'updateid');
// Rebuild permissions.
node_access_rebuild(TRUE);
}