public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     $profile = $arguments['profile'];
     if ('db' == $profile) {
         // db profile is always index 1.
         $profile = '1';
     } elseif ('full' == $profile) {
         // full profile is always index 2.
         $profile = '2';
     }
     if (is_numeric($profile)) {
         if (isset(pb_backupbuddy::$options['profiles'][$profile])) {
             $profileArray = pb_backupbuddy::$options['profiles'][$profile];
         } else {
             return array('api' => '0', 'status' => 'error', 'message' => 'Error #2332904: Invalid profile ID `' . htmlentities($profile) . '`. Profile with this number was not found. Try deactivating then reactivating the plugin. If this fails please reset the plugin Settings back to Defaults from the Settings page.');
         }
     } else {
         return array('api' => '0', 'status' => 'error', 'message' => 'Error #85489548955. Invalid profile ID not numeric: `' . htmlentities($profile) . '`.');
     }
     require_once pb_backupbuddy::plugin_path() . '/classes/backup.php';
     pb_backupbuddy::$classes['backup'] = new pb_backupbuddy_backup();
     // Set serial ahead of time so can be used by AJAX before backup procedure actually begins.
     $serial = pb_backupbuddy::random_string(10);
     $profileArray['backup_mode'] = '2';
     // Force modern mode when running under sync.
     // Run the backup!
     if (pb_backupbuddy::$classes['backup']->start_backup_process($profileArray, 'manual', array(), array(), 'it-sync', $serial, array()) !== true) {
         return array('api' => '0', 'status' => 'error', 'message' => 'Error #435832: Backup failed. See BackupBuddy log for details.');
     }
     return array('api' => '0', 'status' => 'ok', 'message' => 'Backup initiated successfully.');
 }
Esempio n. 2
0
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     include_once ABSPATH . WPINC . '/comment.php';
     $actions = array('add' => '', 'edit' => '', 'approve' => array($this, 'approve_comment'), 'unapprove' => array($this, 'unapprove_comment'), 'spam' => array($this, 'spam_comment'), 'unspam' => array($this, 'unspam_comment'), 'trash' => array($this, 'trash_comment'), 'restore' => array($this, 'restore_comment'), 'untrash' => array($this, 'restore_comment'), 'delete' => array($this, 'delete_comment'), 'emptyspam' => array($this, 'empty_spam'), 'emptytrash' => array($this, 'empty_trash'));
     foreach ($arguments as $action => $data) {
         if ('get-actions' == $action) {
             $this->response[$action] = array_keys($actions);
             continue;
         }
         if (!isset($actions[$action])) {
             $this->response[$action] = 'This action is not recognized.';
             continue;
         }
         if ('add' == $action) {
             $this->response[$action] = $this->add_comment($data);
         } else {
             if ('edit' == $action) {
                 $this->response[$action] = $this->edit_comments($data);
             } else {
                 if ('emptyspam' == $action) {
                     $function = $actions[$action];
                     if (!is_callable($actions[$action])) {
                         return new WP_Error("missing-function-{$function}", "Due to an unknown issue, the {$function} function is not available.");
                     }
                     $this->response[$action] = call_user_func($function);
                 } else {
                     $this->response[$action] = $this->run_function_on_ids($actions[$action], $data);
                 }
             }
         }
     }
     return $this->response;
 }
Esempio n. 3
0
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     include_once ABSPATH . WPINC . '/comment.php';
     $actions = array('add' => '', 'edit' => '', 'trash' => 'wp_trash_comment', 'untrash' => 'wp_untrash_comment', 'spam' => 'wp_spam_comment', 'unspam' => 'wp_unspam_comment', 'approve' => array($this, 'approve_comment'), 'unapprove' => array($this, 'unapprove_comment'), 'delete' => array($this, 'delete_comment'));
     foreach ($arguments as $action => $data) {
         if ('get-actions' == $action) {
             $this->response[$action] = array_keys($actions);
             continue;
         }
         if (!isset($actions[$action])) {
             $this->response[$action] = 'This action is not recognized.';
             continue;
         }
         if (!is_array($data)) {
             $this->response[$action] = new WP_Error('invalid-argument', 'This action requires an array.');
             continue;
         }
         if ('add' == $action) {
             $this->response[$action] = $this->add_comment($data);
         } else {
             if ('edit' == $action) {
                 $this->response[$action] = $this->edit_comments($data);
             } else {
                 $this->response[$action] = $this->run_function_on_ids($actions[$action], $data);
             }
         }
     }
     return $this->response;
 }
 public function run($arguments)
 {
     global $itsec_lockout;
     if (!isset($arguments['ip'])) {
         return new WP_Error('missing-argument-ip', __('The ip argument is missing.', 'better-wp-security'));
     }
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     $ip = sanitize_text_field($arguments['ip']);
     if (empty($ip)) {
         return new WP_Error('empty-ip', __('An empty ip argument was submitted.', 'better-wp-security'));
     }
     $direction = isset($arguments['direction']) ? $arguments['direction'] : 'add';
     if ('add' === $direction) {
         $itsec_lockout->add_to_temp_whitelist($ip);
     } else {
         if ('remove' === $direction) {
             $itsec_lockout->remove_from_temp_whitelist($ip);
         } else {
             if ('clear' === $direction) {
                 $itsec_lockout->clear_temp_whitelist();
             } else {
                 return new WP_Error('invalid-argument-value-for-direction', __('The direction argument must be either "add", "clear", or "remove".', 'better-wp-security'));
             }
         }
     }
     return true;
 }
Esempio n. 5
0
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     if (!is_callable('get_comments')) {
         include_once ABSPATH . WPINC . '/wp-includes/comment.php';
     }
     if (!is_callable('get_comments')) {
         return new WP_Error('missing-function-get_comments', 'Due to an unknown issue, the wp_comments function is not available.');
     }
     $comments = get_comments($arguments['args']);
     if (is_array($comments)) {
         $this->response['comments'] = array();
         foreach ($comments as $index => $comment) {
             $this->response['comments'][$comment->comment_ID] = (array) $comment;
         }
         if ($arguments['include-parent-details']) {
             $this->add_parent_details();
         }
         if ($arguments['include-post-details']) {
             $this->add_post_details();
         }
         if ($arguments['include-user-details']) {
             $this->add_user_details();
         }
     } else {
         $this->response = $comments;
     }
     return $this->response;
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     pb_backupbuddy::$options['remote_destinations'][] = $arguments['settings'];
     pb_backupbuddy::save();
     return array('api' => '0', 'status' => 'ok', 'message' => 'Destination added.');
 }
Esempio n. 7
0
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     if (!is_callable(array($GLOBALS['ithemes-sync-api'], 'run'))) {
         return new WP_Error('missing-method-api-run', 'The Ithemes_Sync_API::run function is not callable. Unable to generate status details.');
     }
     $status_elements = Ithemes_Sync_Functions::get_status_elements($arguments);
     if (!empty($arguments['status_elements'])) {
         if (is_array($arguments['status_elements'])) {
             $show_status_elements = $arguments['status_elements'];
         } else {
             trigger_error('A non-array status_elements argument was supplied. The argument will be ignored.');
         }
         unset($arguments['status_elements']);
     }
     if (!isset($show_status_elements)) {
         $show_status_elements = Ithemes_Sync_Functions::get_default_status_elements();
     }
     foreach ($show_status_elements as $element) {
         if (isset($status_elements[$element])) {
             $var = $status_elements[$element];
             $element_arguments = $arguments;
             if (isset($arguments[$var])) {
                 $element_arguments = $arguments[$var];
             }
             $data = $GLOBALS['ithemes-sync-api']->run($status_elements[$element], $element_arguments);
         } else {
             $data = "This element is not recognized";
         }
         $status[$element] = $data;
     }
     return $status;
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     pb_backupbuddy::$options['remote_destinations'][] = $arguments['settings'];
     pb_backupbuddy::save();
     $highest_destination_index = end(array_keys(pb_backupbuddy::$options['remote_destinations']));
     return array('api' => '1', 'status' => 'ok', 'message' => 'Destination added.', 'destination_id' => $highest_destination_index);
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     $profiles = array();
     foreach (pb_backupbuddy::$options['profiles'] as $profile_id => $profile) {
         $profiles[$profile_id] = array('title' => strip_tags($profile['title']), 'type' => $profile['type'], 'id' => $profile_id);
     }
     return array('api' => '0', 'status' => 'ok', 'message' => 'Profiles listed successfully.', 'profiles' => $profiles);
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     if (true !== backupbuddy_api::addSchedule($arguments['title'], $arguments['profile'], $arguments['interval'], $arguments['firstRun'], $arguments['destinations'], $arguments['deleteAfter'], $arguments['enabled'])) {
         return array('api' => '0', 'status' => 'error', 'message' => 'Error #378235: Creating schedule failed. A plugin may have blocked scheduling with WordPress. Details: ' . backupbuddy_api::$lastError);
     } else {
         return array('api' => '0', 'status' => 'ok', 'message' => 'Schedule added successfully.', 'scheduleID' => (int) (pb_backupbuddy::$options['next_schedule_index'] - 1));
     }
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     $schedules = array();
     foreach (pb_backupbuddy::$options['schedules'] as $schedule_id => $schedule) {
         $schedules[$schedule_id] = array('title' => strip_tags($schedule['title']), 'profileID' => $schedule['profile'], 'interval' => $schedule['interval'], 'lastRun' => $schedule['last_run'], 'enabled' => $schedule['on_off'], 'id' => $schedule_id);
     }
     return array('api' => '0', 'status' => 'ok', 'message' => 'Scheduled listed successfully.', 'schedules' => $schedules);
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     $destinations = array();
     foreach (pb_backupbuddy::$options['remote_destinations'] as $destination_id => $destination) {
         $destinations[$destination_id] = array('title' => strip_tags($destination['title']), 'type' => $destination['type'], 'id' => $destination_id);
     }
     return array('api' => '0', 'status' => 'ok', 'message' => 'Destinations listed successfully.', 'destinations' => $destinations);
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     if (false === ($currentBackupStats = backupbuddy_api::getLatestBackupStats())) {
         return array('api' => '0', 'status' => 'error', 'message' => 'Error #238923: Stats for the latest backup not found. One may have not started yet or stats file is missing.');
     } else {
         return array('version' => '4', 'status' => 'ok', 'message' => 'Latest backup process details retrieved successfully.', 'latestBackupProcess' => $currentBackupStats, 'localTime' => time());
     }
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     $result = backupbuddy_api::deleteSchedule($arguments['id'], $confirm = true);
     if (true !== $result) {
         return array('api' => '0', 'status' => 'error', 'message' => 'Error #32893: Failure deleting schedule.');
     } else {
         return array('api' => '0', 'status' => 'ok', 'message' => 'Schedule deleted.');
     }
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     $status = 'error';
     $schedules = backupbuddy_api::getSchedules();
     if (false !== $schedules) {
         $status = 'ok';
     }
     return array('api' => '0', 'status' => $status, 'message' => 'Schedules listed successfully.', 'schedules' => $schedules);
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     $results = backupbuddy_api::runBackup($arguments['profile'], 'iThemes Sync', $backupMode = '2');
     if (true !== $results) {
         return array('api' => '0', 'status' => 'error', 'message' => 'Error running backup. Details: ' . $results);
     } else {
         return array('api' => '0', 'status' => 'ok', 'message' => 'Backup initiated successfully.', 'serial' => $serial);
     }
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     if (isset(pb_backupbuddy::$options['remote_destinations'][$arguments['id']])) {
         return array('api' => '1', 'status' => 'ok', 'message' => 'Destination settings retrieved.', 'settings' => pb_backupbuddy::$options['remote_destinations'][$arguments['id']], 'destination_id' => $arguments['id']);
     } else {
         // Invalid destination ID.
         return array('api' => '1', 'status' => 'error', 'message' => 'Error #327783: Invalid destination ID.');
     }
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     if (!isset(pb_backupbuddy::$options['remote_destinations'][$arguments['id']])) {
         return array('api' => '1', 'status' => 'error', 'message' => 'Error #847383: Invalid destination ID. Not found.');
     }
     unset(pb_backupbuddy::$options['remote_destinations'][$arguments['id']]);
     pb_backupbuddy::save();
     return array('api' => '1', 'status' => 'ok', 'message' => 'Destination deleted.', 'destination_id' => $arguments['id']);
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     require_once pb_backupbuddy::plugin_path() . '/destinations/bootstrap.php';
     if (true === ($results = pb_backupbuddy_destinations::test($settings))) {
         return array('api' => '0', 'status' => 'ok', 'message' => 'Supported destinations retrieved.');
     } else {
         return array('api' => '0', 'status' => 'error', 'message' => $results);
     }
 }
Esempio n. 20
0
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     if (!isset($arguments['show_sync'])) {
         return new WP_Error('missing-show_sync-argument', 'The show_sync argument is missing. The new show_sync value should be sent in the show_sync argument.');
     }
     $options = $GLOBALS['ithemes-sync-settings']->get_options();
     $options['show_sync'] = $arguments['show_sync'];
     $GLOBALS['ithemes-sync-settings']->update_options($options);
     return array('success' => 1);
 }
Esempio n. 21
0
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     $posts = get_posts($arguments);
     // Add some additional data
     foreach ($posts as &$post) {
         $post->permalink = get_permalink($post->ID);
         $post->author_display_name = get_the_author_meta('display_name', $post->post_author);
     }
     return $posts;
 }
Esempio n. 22
0
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     require_once $GLOBALS['ithemes_sync_path'] . '/notice-handler.php';
     $normal = $GLOBALS['ithemes_sync_notice_handler']->get_notices($arguments);
     $urgent = $GLOBALS['ithemes_sync_notice_handler']->get_urgent_notices();
     if ($arguments['clear-urgent-notices']) {
         $GLOBALS['ithemes_sync_notice_handler']->clear_urgent_notices();
     }
     return compact('normal', 'urgent');
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     require_once pb_backupbuddy::plugin_path() . '/destinations/bootstrap.php';
     $response = pb_backupbuddy_destinations::delete($arguments['id'], true);
     if (true === $response) {
         return array('api' => '0', 'status' => 'ok', 'message' => 'Destination deleted.');
     } else {
         return array('api' => '0', 'status' => 'error', 'message' => 'Error #384783783: Failure deleting destination.');
     }
 }
Esempio n. 24
0
 public function init()
 {
     require_once dirname(__FILE__) . '/settings.php';
     $show_sync = $GLOBALS['ithemes-sync-settings']->get_option('show_sync');
     if (is_array($show_sync)) {
         $show_sync = in_array(get_current_user_id(), $show_sync);
     }
     if (!$show_sync && current_user_can('manage_options')) {
         $user_id = get_current_user_id();
         if (isset($_GET['ithemes-sync-force-display'])) {
             if (!empty($_GET['ithemes-sync-force-display'])) {
                 $show_sync = true;
                 set_site_transient("ithemes-sync-force-display-{$user_id}", true, 600);
                 add_action('all_admin_notices', array($this, 'show_force_display_notice'), 0);
             } else {
                 delete_site_transient("ithemes-sync-force-display-{$user_id}");
                 add_action('all_admin_notices', array($this, 'show_force_display_disable_notice'), 0);
             }
         } else {
             if (false !== get_site_transient("ithemes-sync-force-display-{$user_id}")) {
                 $show_sync = true;
                 add_action('all_admin_notices', array($this, 'show_force_display_notice'), 0);
             }
         }
     }
     if ($show_sync) {
         if (!is_multisite() || is_super_admin()) {
             add_action('admin_menu', array($this, 'add_admin_pages'));
         }
         add_action('network_admin_menu', array($this, 'add_network_admin_pages'));
         if (current_user_can('manage_options')) {
             if (!get_site_option('ithemes-sync-authenticated') && (empty($_GET['page']) || $this->page_name != $_GET['page']) && !get_site_option('ithemes_sync_hide_authenticate_notice')) {
                 require_once dirname(__FILE__) . '/functions.php';
                 $path_url = Ithemes_Sync_Functions::get_url(dirname(__FILE__));
                 wp_enqueue_style('ithemes-updater-admin-notice-style', "{$path_url}/css/admin-notice.css");
                 wp_enqueue_script('ithemes-updater-admin-notice-script', "{$path_url}/js/admin-notice.js", array('jquery'));
                 add_action('all_admin_notices', array($this, 'show_authenticate_notice'), 0);
                 delete_site_transient('ithemes-sync-activated');
             } else {
                 if (!empty($_GET['activate']) && get_site_transient('ithemes-sync-activated')) {
                     require_once dirname(__FILE__) . '/functions.php';
                     $path_url = Ithemes_Sync_Functions::get_url(dirname(__FILE__));
                     wp_enqueue_style('ithemes-updater-admin-notice-style', "{$path_url}/css/admin-notice.css");
                     wp_enqueue_script('ithemes-updater-admin-notice-script', "{$path_url}/js/admin-notice.js", array('jquery'));
                     add_action('all_admin_notices', array($this, 'show_activate_notice'), 0);
                     delete_site_transient('ithemes-sync-activated');
                 }
             }
         }
     } else {
         add_action('load-plugins.php', array($this, 'modify_plugins_page'));
     }
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     pb_backupbuddy::$options['remote_destinations'][] = $arguments['settings'];
     pb_backupbuddy::save();
     $newDestination = array();
     $newDestination['title'] = $arguments['settings']['title'];
     $newDestination['type'] = $arguments['settings']['type'];
     backupbuddy_core::addNotification('destination_created', 'Remote destination created', 'A new remote destination "' . $newDestination['title'] . '" has been created.', $newDestination);
     $highest_destination_index = end(array_keys(pb_backupbuddy::$options['remote_destinations']));
     return array('api' => '1', 'status' => 'ok', 'message' => 'Destination added.', 'destination_id' => $highest_destination_index);
 }
Esempio n. 26
0
 private function delete_report($filename)
 {
     if (!empty($filename) && !is_string($filename)) {
         return new WP_Error('invalid-argument', 'The delete-report function takes a string representing an individual report.');
     }
     $upload_path = Ithemes_Sync_Functions::get_upload_reports_dir();
     if (!empty($upload_path) && wp_is_writable($upload_path)) {
         @unlink($upload_path . '/' . $filename);
         return true;
     }
     return false;
 }
 public function run($arguments = array())
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     if (true === backupbuddy_api::runLiveSnapshot()) {
         $status = 'ok';
         $message = 'Snapshot initiated. Scanning for changes first.';
     } else {
         $status = 'error';
         $message = 'Snapshot failed to initiate. A scan is currently in progress.';
     }
     return array('version' => '1', 'status' => $status, 'message' => $message);
 }
Esempio n. 28
0
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     require_once ABSPATH . 'wp-admin/includes/user.php';
     $roles = get_editable_roles();
     if ($arguments['just-names']) {
         foreach ($roles as $index => $data) {
             $roles[$index] = $data['name'];
         }
     }
     return $roles;
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     if (!class_exists('backupbuddy_core')) {
         require_once pb_backupbuddy::plugin_path() . '/classes/core.php';
     }
     $overview = backupbuddy_api0::getOverview();
     // If archive file is set but actual file does not exist then clear out value.
     if (isset($overview['lastBackupStats']['archiveFile']) && !file_exists($overview['lastBackupStats']['archiveFile'])) {
         $overview['lastBackupStats']['archiveFile'] = '';
     }
     return array('version' => '4', 'status' => 'ok', 'message' => 'Overview retrieved successfully.', 'overview' => $overview);
 }
 public function run($arguments)
 {
     $arguments = Ithemes_Sync_Functions::merge_defaults($arguments, $this->default_arguments);
     if ('' == $arguments['id'] || !is_numeric($arguments['id'])) {
         return array('api' => '1', 'status' => 'error', 'message' => 'Missing destination ID setting or not numeric.');
     }
     if (!isset(pb_backupbuddy::$options['remote_destinations'][$arguments['id']])) {
         return array('api' => '1', 'status' => 'error', 'message' => 'Invalid destination ID. Not found.');
     }
     // Merge passed settings over current ones.
     pb_backupbuddy::$options['remote_destinations'][$arguments['id']] = array_merge(pb_backupbuddy::$options['remote_destinations'][$arguments['id']], $arguments['settings']);
     pb_backupbuddy::save();
     return array('api' => '1', 'status' => 'ok', 'message' => 'Destination updated.', 'destination_id' => $arguments['id']);
 }