コード例 #1
0
 /**
  * Return the instantiated class object
  *
  * @since  1.5.1
  * @return GravityView_Delete_Entry
  */
 static function getInstance()
 {
     if (empty(self::$instance)) {
         self::$instance = new self();
     }
     return self::$instance;
 }
コード例 #2
0
 /**
  * @covers GravityView_Entry_Link_Shortcode::delete_shortcode
  */
 function _test_delete($view, $entry, $atts)
 {
     // NO CAPS
     $this->factory->user->create_and_set(array('user_login' => 'zero', 'role' => 'zero'));
     $zero_link = $this->object->delete_shortcode($atts);
     $this->assertNull($zero_link, 'user without caps shouldn\'t see delete link');
     // ADMIN
     $this->factory->user->create_and_set(array('user_login' => 'administrator', 'role' => 'administrator'));
     $delete_entry_delete_link = GravityView_Delete_Entry::get_delete_link($entry, $view->ID, $atts['post_id']);
     $atts['return'] = 'html';
     $delete_link = $this->object->delete_shortcode($atts);
     $atts['action'] = 'delete';
     $delete_link_backward_compat = $this->object->read_shortcode($atts);
     $this->assertEquals('<a onclick="return window.confirm(&#039;Are you sure you want to delete this entry? This cannot be undone.&#039;);" href="' . esc_url_raw($delete_entry_delete_link) . '">Delete Entry</a>', $delete_link, 'delete link');
     $this->assertEquals($delete_link, $delete_link_backward_compat);
     $atts['return'] = 'url';
     $delete_link_return_url = $this->object->delete_shortcode($atts);
     $this->assertEquals($delete_entry_delete_link, $delete_link_return_url, 'delete link URL only');
 }
コード例 #3
0
 /**
  * @param array $atts {
  *   @type string $view_id Define the ID for the View where the entry will
  *   @type string $entry_id ID of the entry to edit. If undefined, uses the current entry ID
  *   @type string $post_id ID of the base post or page to use for an embedded View
  *   @type string $link_atts Whether to open Edit Entry link in a new window or the same window
  *   @type string $return What should the shortcode return: link HTML (`html`) or the URL (`url`). Default: `html`
  *   @type string $field_values Parameters to pass in to the Edit Entry form to prefill data. Uses the same format as Gravity Forms "Allow field to be populated dynamically" {@see https://www.gravityhelp.com/documentation/article/allow-field-to-be-populated-dynamically/ }
  * }
  * @param string $content
  * @param string $context
  *
  * @return string|void
  */
 public function shortcode($atts = array(), $content = '', $context = 'gv_edit_entry')
 {
     // Make sure GV is loaded
     if (!class_exists('GravityView_frontend') || !class_exists('GravityView_View')) {
         return null;
     }
     $defaults = array('view_id' => 0, 'entry_id' => 0, 'post_id' => 0, 'link_atts' => '', 'return' => 'html', 'field_values' => '');
     $settings = shortcode_atts($defaults, $atts, $context);
     if (empty($settings['view_id'])) {
         $view_id = GravityView_View::getInstance()->getViewId();
     } else {
         $view_id = absint($settings['view_id']);
     }
     if (empty($view_id)) {
         do_action('gravityview_log_debug', __METHOD__ . ' A View ID was not defined');
         return null;
     }
     $post_id = empty($settings['post_id']) ? $view_id : absint($settings['post_id']);
     $form_id = gravityview_get_form_id($view_id);
     $backup_entry_id = GravityView_frontend::getInstance()->getSingleEntry() ? GravityView_frontend::getInstance()->getSingleEntry() : GravityView_View::getInstance()->getCurrentEntry();
     $entry_id = empty($settings['entry_id']) ? $backup_entry_id : absint($settings['entry_id']);
     if (empty($entry_id)) {
         do_action('gravityview_log_debug', __METHOD__ . ' No entry defined');
         return null;
     }
     // By default, show only current user
     $user = wp_get_current_user();
     if (!$user) {
         do_action('gravityview_log_debug', __METHOD__ . ' No user defined; edit entry requires logged in user');
         return null;
     }
     $entry = $this->get_entry($entry_id, $form_id);
     // No search results
     if (false === $entry) {
         do_action('gravityview_log_debug', __METHOD__ . ' No entries match the entry ID defined', $entry_id);
         return null;
     }
     // Check permissions
     if (false === GravityView_Edit_Entry::check_user_cap_edit_entry($entry, $view_id)) {
         do_action('gravityview_log_debug', __METHOD__ . ' User does not have the capability to edit this entry: ' . $entry_id);
         return null;
     }
     $href = GravityView_Delete_Entry::get_delete_link($entry, $view_id, $post_id, $settings);
     // Get just the URL, not the tag
     if ('url' === $settings['return']) {
         return $href;
     }
     $link_text = empty($content) ? __('Delete Entry', 'gravityview') : $content;
     return gravityview_get_link($href, $link_text, $settings['link_atts']);
 }
コード例 #4
0
 /**
  * Check whether the user has the capability to see the shortcode output, depending on the action ('read', 'edit', 'delete')
  *
  * @since 1.15
  * @return bool True: has cap.
  */
 private function has_cap()
 {
     switch ($this->settings['action']) {
         case 'edit':
             $has_cap = GravityView_Edit_Entry::check_user_cap_edit_entry($this->entry, $this->view_id);
             break;
         case 'delete':
             $has_cap = GravityView_Delete_Entry::check_user_cap_delete_entry($this->entry, array(), $this->view_id);
             break;
         case 'read':
         default:
             $has_cap = true;
             // TODO: add cap check for read_gravityview
     }
     return $has_cap;
 }
コード例 #5
0
ファイル: delete_link.php プロジェクト: mgratch/GravityView
<?php

$gravityview_view = GravityView_View::getInstance();
$view_id = $gravityview_view->getViewId();
extract($gravityview_view->getCurrentField());
// Only show the link to logged-in users with the rigth caps.
if (!GravityView_Delete_Entry::check_user_cap_delete_entry($entry, $field_settings)) {
    return;
}
$link_text = empty($field_settings['delete_link']) ? __('Delete Entry', 'gravityview') : $field_settings['delete_link'];
$link_text = apply_filters('gravityview_entry_link', GravityView_API::replace_variables($link_text, $form, $entry));
$href = GravityView_Delete_Entry::get_delete_link($entry, $view_id);
$attributes = array('onclick' => GravityView_Delete_Entry::get_confirm_dialog());
echo gravityview_get_link($href, $link_text, $attributes);