示例#1
0
 function init()
 {
     $this->admin_page->set_show('leftbar', false);
     if (empty($this->admin_page->id)) {
         $this->_not_expungable_reason = 'no_id_provided';
         return false;
     }
     if (!reason_user_has_privs($this->admin_page->user_id, 'expunge')) {
         $this->_not_expungable_reason = 'insufficient_privileges';
         return false;
     }
     $item = new entity($this->admin_page->id);
     $user = new entity($this->admin_page->user_id);
     if (!$item->user_can_edit_field('state', $user)) {
         $this->_not_expungable_reason = 'state_field_locked';
         return false;
     }
     if ($item->get_value('state') != 'Deleted') {
         $this->_not_expungable_reason = 'not_deleted_yet';
         return false;
     }
     $this->expungable = $this->admin_page->is_deletable();
     if ($this->expungable) {
         $this->_set_up_form();
     } else {
         $this->_not_expungable_reason = 'dependencies';
         return false;
     }
 }
示例#2
0
 /**
  * Determines whether or not the user can inline edit. Only admin users may 
  * perform inline editing for the page title.
  *
  * @return boolean;
  */
 function user_can_inline_edit()
 {
     if (!isset($this->_user_can_inline_edit)) {
         // Additionally, check to see if the user has editing privileges for the 'name' field
         $page_entity = new entity($this->page_id);
         if ($netid = reason_check_authentication()) {
             if ($user_id = get_user_id($netid)) {
                 $user = new entity($user_id);
                 $field_check = $page_entity->user_can_edit_field('name', $user);
             }
         }
         $this->_user_can_inline_edit = $netid && reason_check_access_to_site($this->site_id) && $field_check;
     }
     return $this->_user_can_inline_edit;
 }
示例#3
0
 function init()
 {
     $this->admin_page->set_show('leftbar', false);
     if (empty($this->admin_page->id)) {
         $this->_not_undeletable_reason = 'no_id_provided';
         return false;
     }
     if (!reason_user_has_privs($this->admin_page->user_id, 'publish')) {
         $this->_not_undeletable_reason = 'insufficient_privileges';
         return false;
     }
     $item = new entity($this->admin_page->id);
     $user = new entity($this->admin_page->user_id);
     if (!$item->user_can_edit_field('state', $user)) {
         $this->_not_undeletable_reason = 'state_field_locked';
         return false;
     }
     if ($item->get_value('state') != 'Deleted') {
         $this->_not_undeletable_reason = 'not_deleted_yet';
         return false;
     }
     reason_update_entity($this->admin_page->id, $this->admin_page->user_id, array('state' => 'Live'), false);
     if ($this->admin_page->type_id == id_of('minisite_page')) {
         // zap nav cache so it reappears.
         reason_include_once('classes/object_cache.php');
         $cache = new ReasonObjectCache($this->admin_page->site_id . '_navigation_cache');
         $cache->clear();
     }
     $manager_site_id = $this->admin_page->site_id;
     if ($item->get_value('type') == id_of('site')) {
         $manager_site_id = $item->id();
     }
     //Updates the rewrites to prevent infinite redirection loop.
     reason_include_once('classes/url_manager.php');
     $urlm = new url_manager($manager_site_id);
     $urlm->update_rewrites();
     $link = unhtmlentities($this->admin_page->make_link(array('cur_module' => 'Lister', 'id' => '', 'state' => 'deleted')));
     header('Location: ' . $link);
     die;
 }
示例#4
0
    function run()
    {
        $type = new entity($this->admin_page->type_id);
        $entity = new entity($this->admin_page->id);
        $user = new entity($this->admin_page->user_id);
        $text = array('root_node' => 'This is a root ' . $type->get_value('name') . ', so you may not delete it.  If you wish to delete this item, please contact the <a href="' . $this->admin_page->make_link(array("cur_module" => "about_reason")) . '">web team</a>.', 'default' => 'You cannot currently delete this item because following items, which 
										are associated with it, must be associated with a ' . $type->get_value('name') . '. If 
										you wish to delete this item, you must first select a different ' . $type->get_value('name') . ' for each of the following items.<br /><br />', id_of('minisite_page') => 'This page has children.  In order to delete it, you must first either:
										<ul>
										<li>delete its children</li>
										<li>Select a different parent page for its children</li>
										</ul>If you wish to delete this item, please select a different parent for the pages listed below.<br /><br />', 'borrowed' => '<p>This item is currently borrowed by one or more sites.  Deleting it might break their sites.  If you still want to delete it, contact the sites\' maintainers to ask if they can stop borrowing the item.</p>', 'locks' => 'This ' . $type->get_value('name') . ' has had a lock applied to it that keeps it from being deleted. A reason administrator may have applied this lock in order to ensure that a site was not inadventently broken. Please contact a Reason administrator if you have any questions about the rationale for placing this lock on this ' . $type->get_value('name') . '.');
        if (!empty($this->borrowed_by)) {
            echo $text['borrowed'];
            echo '<h4>Sites borrowing this item</h4>' . "\n";
            echo '<ul>' . "\n";
            foreach ($this->borrowed_by as $site) {
                echo '<li><a href="' . $site->get_value('base_url') . '">' . $site->get_value('name') . '</a>' . "\n";
                echo '<div>Primary maintainer: ' . $site->get_value('name_cache') . ', <a href="mailto:' . $site->get_value('email_cache') . '" title="send email">' . $site->get_value('email_cache') . '</a></div></li>' . "\n";
            }
            echo '</ul>' . "\n";
        } elseif ($this->is_root_node()) {
            echo $text['root_node'];
        } elseif (!$entity->user_can_edit_field('state', $user)) {
            echo $text['locks'];
        } else {
            if (!empty($text[$this->admin_page->type_id])) {
                echo $text[$this->admin_page->type_id];
            } else {
                echo $text['default'];
            }
            foreach ($this->values as $v) {
                $link = $this->admin_page->make_link(array('cur_module' => 'Preview', 'id' => $v['e_id'], 'type_id' => $v['relationship_a']));
                echo '<a href="' . $link . '" target="' . $v['e_id'] . '">' . $v['e_name'] . '</a><span class="smallText"> (' . prettify_string($v['name']) . ')</span><br />';
            }
        }
    }
示例#5
0
 function is_deletable($id = 0)
 {
     $id = (int) $id;
     if (empty($id)) {
         $id = $this->id;
     }
     if (empty($id)) {
         return false;
     }
     //get all one-to-many required relationships that the current item is a part of
     $entity = new entity($id);
     $user = new entity($this->user_id);
     $subject_of_required_rels = array();
     $dbq = $this->get_required_ar_dbq($id);
     if (!empty($dbq)) {
         $subject_of_required_rels = $dbq->run();
     }
     $sites = get_sites_that_are_borrowing_entity($id);
     if ($subject_of_required_rels || !empty($sites) || !$entity->user_can_edit_field('state', $user)) {
         return false;
     } else {
         return true;
     }
 }