update_authorize_batch_copy_project($project, $updater_name, $local_url, $filetransfer, &$context)
Implements callback_batch_operation().
Copies project to its proper place when authorized to do so.
Parameters
string $project: The canonical short name of the project being installed.
string $updater_name: The name of the Drupal\Core\Updater\Updater class to use for installing this project.
string $local_url: The URL to the locally installed temp directory where the project has already been downloaded and extracted into.
FileTransfer $filetransfer: The FileTransfer object to use for performing this operation.
array $context: Reference to an array used for Batch API storage.
File
- core/modules/update/update.authorize.inc, line 141
- Callbacks and related functions invoked by authorize.php to update projects.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | function update_authorize_batch_copy_project( $project , $updater_name , $local_url , $filetransfer , & $context ) { // Initialize some variables in the Batch API $context array. if (!isset( $context [ 'results' ][ 'log' ])) { $context [ 'results' ][ 'log' ] = array (); } if (!isset( $context [ 'results' ][ 'log' ][ $project ])) { $context [ 'results' ][ 'log' ][ $project ] = array (); } if (!isset( $context [ 'results' ][ 'tasks' ])) { $context [ 'results' ][ 'tasks' ] = array (); } // The batch API uses a session, and since all the arguments are serialized // and unserialized between requests, although the FileTransfer object itself // will be reconstructed, the connection pointer itself will be lost. However, // the FileTransfer object will still have the connection variable, even // though the connection itself is now gone. So, although it's ugly, we have // to unset the connection variable at this point so that the FileTransfer // object will re-initiate the actual connection. unset( $filetransfer ->connection); if (! empty ( $context [ 'results' ][ 'log' ][ $project ][ '#abort' ])) { $context [ 'finished' ] = 1; return ; } $updater = new $updater_name ( $local_url , \Drupal::getContainer()->get( 'update.root' )); try { if ( $updater ->isInstalled()) { // This is an update. $tasks = $updater ->update( $filetransfer ); } else { $tasks = $updater ->install( $filetransfer ); } } catch (UpdaterException $e ) { _update_batch_create_message( $context [ 'results' ][ 'log' ][ $project ], t( 'Error installing / updating' ), FALSE); _update_batch_create_message( $context [ 'results' ][ 'log' ][ $project ], $e ->getMessage(), FALSE); $context [ 'results' ][ 'log' ][ $project ][ '#abort' ] = TRUE; return ; } _update_batch_create_message( $context [ 'results' ][ 'log' ][ $project ], t( 'Installed %project_name successfully' , array ( '%project_name' => $project ))); if (! empty ( $tasks )) { $context [ 'results' ][ 'tasks' ] += $tasks ; } // This particular operation is now complete, even though the batch might // have other operations to perform. $context [ 'finished' ] = 1; } |
Please login to continue.