git->current_branch(); $msg = sprintf( __( 'Checked out branch: %s.', 'revisr' ), $branch ); $email_msg = sprintf( __( '%s was switched to branch %s.', 'revisr' ), get_bloginfo(), $branch ); Revisr_Admin::alert( $msg ); Revisr_Admin::log( $msg, 'branch' ); Revisr_Admin::notify(get_bloginfo() . __( ' - Branch Changed', 'revisr'), $email_msg ); } /** * Callback for a failed checkout. * @access public */ public function null_checkout( $output = array(), $args = '' ) { $msg = __( 'There was an error checking out the branch. Check your configuration and try again.', 'revisr' ); Revisr_Admin::alert( $msg, true, $output ); Revisr_Admin::log( $msg, 'error' ); } /** * Callback for a successful commit. * @access public */ public function success_commit( $output = array(), $args = '' ) { $commit_hash = revisr()->git->current_commit(); $commit_msg = $_REQUEST['post_title']; $view_link = get_admin_url() . 'admin.php?page=revisr_view_commit&commit=' . $commit_hash . '&success=true'; // Log the event. $msg = sprintf( __( 'Committed #%s to the local repository.', 'revisr' ), $view_link, $commit_hash ); Revisr_Admin::log( $msg, 'commit' ); // Notify the admin. $email_msg = sprintf( __( 'A new commit was made to the repository:
#%s - %s', 'revisr' ), $commit_hash, $commit_msg ); Revisr_Admin::notify( get_bloginfo() . __( ' - New Commit', 'revisr' ), $email_msg ); // Add a tag if necessary. if ( isset( $_REQUEST['tag_name'] ) ) { revisr()->git->tag( $_POST['tag_name'] ); } // Fires after the commit has been made. do_action( 'revisr_post_commit', $output ); // Push if necessary. revisr()->git->auto_push(); // View the commit. Revisr_Admin::redirect( $view_link ); } /** * Callback for a failed commit. * @access public */ public function null_commit( $output = array(), $args = '' ) { $msg = __( 'There was an error committing the changes to the local repository.', 'revisr' ); $url = get_admin_url() . 'admin.php?page=revisr_new_commit&error=true'; Revisr_Admin::alert( $msg, true, $output ); Revisr_Admin::log( $msg, 'error' ); Revisr_Admin::redirect( $url ); } /** * Callback for successful branch deletion. * @access public */ public function success_delete_branch( $output = array(), $args = '' ) { $branch = $args; $msg = sprintf( __( 'Deleted branch %s.', 'revisr' ), $branch ); $url = get_admin_url() . 'admin.php?page=revisr_branches&status=delete_success&branch=' . $branch; $email_msg = sprintf( __( 'The branch "%s" on the repository for %s was deleted.', 'revisr' ), $branch, get_bloginfo() ); Revisr_Admin::log( $msg, 'branch' ); Revisr_Admin::notify( get_bloginfo() . __( ' - Branch Deleted', 'revisr' ), $email_msg ); Revisr_Admin::redirect( $url, true ); } /** * Callback for a failed branch deletion. * @access public */ public function null_delete_branch( $output = array(), $args = '' ) { $branch = $args; $url = get_admin_url() . 'admin.php?page=revisr_branches&status=delete_fail&branch=' . $branch; Revisr_Admin::redirect( $url, true ); } /** * Renders the number of unpushed/unpulled commits for the AJAX buttons. * @access public */ public function success_count_ajax_btn( $output = array(), $args = '' ) { $count = count( $output ); if ( 0 != $count && revisr()->git->has_remote() ) { echo "($count)"; } exit(); } /** * Returns nothing if there are no commits to push/pull. * @access public */ public function null_count_ajax_btn( $output = array(), $args = '' ) { exit(); } /** * Called if the repo initialization was successful. * Sets up the '.git/config' file for the first time. * @access public */ public function success_init_repo( $output, $args ) { // Updates the repository properties. revisr()->git->is_repo = true; revisr()->git->git_dir = revisr()->git->get_git_dir(); revisr()->git->work_tree = revisr()->git->get_work_tree(); // Clear out any errors. Revisr_Admin::clear_transients(); // Grab the current user. $user = wp_get_current_user(); // Set the default username to use in Git. if ( isset( revisr()->git->options['username'] ) && revisr()->git->options['username'] != '' ) { revisr()->git->set_config( 'user', 'name', revisr()->git->options['username'] ); } else { revisr()->git->set_config( 'user', 'name', $user->user_login ); } // Set the default email to use in Git. if ( isset( revisr()->git->options['email'] ) && revisr()->git->options['email'] != '' ) { revisr()->git->set_config( 'user', 'email', revisr()->git->options['email'] ); } else { revisr()->git->set_config( 'user', 'email', $user->user_email ); } // Set the default name of the remote. if ( isset( revisr()->git->options['remote_name'] ) && revisr()->git->options['remote_name'] != '' ) { $remote_name = revisr()->git->options['remote_name']; } else { $remote_name = 'origin'; } // Add the remote URL in Git if already set in the database. if ( isset( revisr()->git->options['remote_url'] ) && revisr()->git->options['remote_url'] != '' ) { revisr()->git->run( 'remote', array( 'add', $remote_name, revisr()->git->options['remote_url'] ) ); } // Adds an .htaccess file to the "/.git" directory to prevent public access. if ( is_writable( revisr()->git->git_dir ) ) { file_put_contents( revisr()->git->git_dir . DIRECTORY_SEPARATOR . '.htaccess', 'Deny from all' . PHP_EOL ); } // Fires after the repo has been created. do_action( 'revisr_post_init', $output ); // Alerts the user. Revisr_Admin::log( __( 'Successfully created a new repository.', 'revisr' ), 'init' ); // Redirect if necessary (through skipped/legacy setup). if ( ! defined( 'REVISR_SETUP_INIT' ) ) { Revisr_Admin::redirect( get_admin_url() . 'admin.php?page=revisr_settings&init=success' ); } // Return true if we haven't exited already. return true; } /** * Returns if an initialization failed. * @access public */ public function null_init_repo() { // Redirect if necessary (through skipped/legacy setup). if ( ! defined( 'REVISR_SETUP_INIT' ) ) { Revisr_Admin::log( __( 'Failed to initialize a new repository. Please make sure that Git is installed on the server and that Revisr has write permissons to the WordPress install.', 'revisr' ), 'error' ); Revisr_Admin::redirect(); } // Return false if we haven't exited already. return false; } /** * Returns if a merge was successful. * @access public */ public function success_merge( $output = array(), $args = '' ) { $alert_msg = sprintf( __( 'Successfully merged changes from branch %s into branch %s.', 'revisr' ), $_REQUEST['branch'], revisr()->git->branch ); $log_msg = sprintf( __( 'Merged branch %s into branch %s.', 'revisr' ), $_REQUEST['branch'], revisr()->git->branch ); Revisr_Admin::alert( $alert_msg ); Revisr_Admin::log( $log_msg, 'merge' ); // Fires after a successful merge. do_action( 'revisr_post_merge', $output ); Revisr_Admin::redirect(); } /** * Returns if a merge failed. * @access public */ public function null_merge( $output = array(), $args = '' ) { $log_msg = sprintf( __( 'Error merging branch %s into %s.', 'revisr'), $_REQUEST['branch'], revisr()->git->branch ); $alert_msg = sprintf( __( 'There was an error merging branch %s into your current branch. The merge was aborted to avoid conflicts.', 'revisr' ), $_REQUEST['branch'] ); Revisr_Admin::alert( $alert_msg, true, $output ); Revisr_Admin::log( $log_msg, 'error' ); Revisr_Admin::redirect(); } /** * Returns if a pull was successful. * @access public */ public function success_pull( $output = array(), $args = array() ) { $commits_since = $args; $num_commits = count( $commits_since ); if ( 0 === $num_commits ) { $msg = __( 'The local repository is already up-to-date with the remote repository.', 'revisr' ); Revisr_Admin::alert( $msg ); } else { foreach ( $commits_since as $commit ) { $commit_hash = substr( $commit, 0, 7 ); $view_link = get_admin_url() . 'admin.php?page=revisr_view_commit&commit=' . $commit_hash; $msg = sprintf( __( 'Pulled #%s from %s/%s.', 'revisr' ), $view_link, $commit_hash, revisr()->git->remote, revisr()->git->branch ); Revisr_Admin::log( $msg, 'pull' ); } $msg = sprintf( _n( 'Successfully pulled %s commit from %s/%s.', 'Successfully pulled %s commits from %s/%s.', $num_commits, 'revisr' ), $num_commits, revisr()->git->remote, revisr()->git->branch ); Revisr_Admin::alert( $msg ); // Fires just after a successful pull. do_action( 'revisr_post_pull', $output ); if ( revisr()->git->get_config( 'revisr', 'import-pulls' ) === 'true' ) { revisr()->db->import(); } } } /** * Returns if a pull failed. * @access public * @return boolean */ public function null_pull( $output = array(), $args = '' ) { $msg = __( 'There was an error pulling from the remote repository. The local repository could be ahead, or there may be an authentication issue.', 'revisr' ); Revisr_Admin::alert( $msg, true, $output ); Revisr_Admin::log( __( 'Error pulling changes from the remote repository.', 'revisr' ), 'error' ); return false; } /** * Returns if a push was successful. * @access public */ public function success_push( $output = array(), $args = '' ) { $msg = sprintf( _n( 'Successfully pushed %s commit to %s/%s.', 'Successfully pushed %s commits to %s/%s.', $args, 'revisr' ), $args, revisr()->git->remote, revisr()->git->branch ); Revisr_Admin::alert( $msg ); Revisr_Admin::log( $msg, 'push' ); // Fires after a successful push. do_action( 'revisr_post_push', $output ); if ( revisr()->git->get_config( 'revisr', 'webhook-url' ) !== false ) { $remote = new Revisr_Remote(); $remote->send_request(); } } /** * Returns if a push failed. * @access public */ public function null_push( $output = array(), $args = '' ) { $msg = __( 'Error pushing to the remote repository. The remote repository could be ahead, or there may be an authentication issue.', 'revisr' ); Revisr_Admin::alert( $msg, true, $output ); Revisr_Admin::log( __( 'Error pushing changes to the remote repository.', 'revisr' ), 'error' ); return; } /** * Returns "Success!" if the connection to remote was successful. * @access public */ public function success_verify_remote( $output = array(), $args = '' ) { _e( 'Success!', 'revisr' ); exit(); } /** * Returns if the connection to the remote was unsuccessful. * @access public */ public function null_verify_remote( $output = array(), $args = '' ) { _e( 'Remote not found...', 'revisr' ); exit(); } /** * Returns the Git version. * @access public */ public function success_version( $output = array(), $args = '' ) { return $output['0']; } /** * Returns if Revisr could not detect the Git version. * @access public */ public function null_version( $output = array(), $args = '' ) { return __( 'Unknown', 'revisr' ); } }