Exemplo n.º 1
0
 function get_main_links($second = false)
 {
     $links = array();
     $entity = new entity($this->id);
     $user = new entity($this->user_id);
     $links['Preview'] = array('title' => 'Preview', 'link' => $this->make_link(array('cur_module' => 'Preview')));
     $can_edit = $entity->get_value('state') == 'Pending' ? reason_user_has_privs($this->user_id, 'edit_pending') : reason_user_has_privs($this->user_id, 'edit');
     if ($can_edit && reason_site_can_edit_type($this->site_id, $this->type_id)) {
         $links['Edit'] = array('title' => 'Edit', 'link' => $this->make_link(array('cur_module' => 'Editor')), 'locked' => !$entity->user_can_edit($user, 'fields'));
         if ($second) {
             $rels = $second;
         } else {
             $rels = $this->get_rels();
         }
         foreach ($rels as $rel) {
             $ass_name = !empty($rel['display_name']) ? $rel['display_name'] : $rel['entity_name'];
             $index = $rel['id'];
             $links[$index] = array('title' => $ass_name, 'icon' => '<img src="' . reason_get_type_icon_url($rel['relationship_b']) . '" alt="" />', 'link' => $this->make_link(array('site_id' => $this->site_id, 'type_id' => $this->type_id, 'rel_id' => $rel['id'], 'id' => $this->id, 'user_id' => $this->user_id, 'cur_module' => 'Associator')), 'rel_info' => $rel, 'locked' => !$entity->user_can_edit_relationship($index, $user, 'right'));
         }
         if ($second) {
             $rels = $this->get_backward_rels('I AM A GOLDEN GOD!!!');
         } else {
             $rels = $this->get_backward_rels();
         }
         foreach ($rels as $rel) {
             $ass_name = !empty($rel['display_name_reverse_direction']) ? $rel['display_name_reverse_direction'] : $rel['entity_name'];
             $index = $rel['id'];
             $links[$index] = array('title' => $ass_name, 'icon' => '<img src="' . reason_get_type_icon_url($rel['relationship_a']) . '" alt="" />', 'link' => $this->make_link(array('site_id' => $this->site_id, 'type_id' => $this->type_id, 'rel_id' => $rel['id'], 'id' => $this->id, 'user_id' => $this->user_id, 'cur_module' => 'ReverseAssociator')), 'rel_info' => $rel, 'locked' => !$entity->user_can_edit_relationship($index, $user, 'left'));
         }
     }
     $links['Finish'] = array('title' => '<strong>Finish</strong>', 'link' => $this->make_link(array('cur_module' => 'Finish')));
     // if the entity is new, give the link to cancel its creation
     $e = new entity($this->id);
     if ($e->get_value('new') && $e->get_value('state') == 'Pending' && $can_edit && !$e->get_value('name') && $this->cur_module == 'Editor') {
         $links['Cancel'] = array('title' => 'Cancel', 'link' => $this->make_link(array('cur_module' => 'Cancel')));
     }
     // This is a hack because the 'new_entity' variable is getting passed around a little too promiscuously.  Really newness should be stored in the db with the entity and removed upon finish. MR 3/11/2004 */
     /*$e = new entity( $this->id );
     		$created = prettify_mysql_timestamp( $e->get_value('creation_date'), 'Y-m-d' );
     		$today = date('Y-m-d');
     		if( !empty( $this->request[ 'new_entity' ] ) && $created == $today )
     			$links[ 'Cancel' ] = array( 'title' => 'Cancel' ,
     										'link' => $this->make_link( array( 'cur_module' => 'Cancel' ) ) ); */
     return $links;
 }
Exemplo n.º 2
0
 function init()
 {
     if (!$this->should_run()) {
         trigger_error('Associator module needs an ID to run; none provided.');
         return;
     }
     reason_include_once('classes/filter.php');
     reason_include_once('content_listers/associate.php');
     include_once CARL_UTIL_INC . 'basic/misc.php';
     $this->head_items->add_javascript(JQUERY_URL, true);
     $this->head_items->add_stylesheet(REASON_ADMIN_CSS_DIRECTORY . 'assoc.css');
     $this->head_items->add_javascript(WEB_JAVASCRIPT_PATH . 'table_update.js');
     $this->head_items->add_javascript(WEB_JAVASCRIPT_PATH . 'associator.js');
     $this->get_associations();
     if (empty($this->associations[$this->admin_page->rel_id])) {
         trigger_error($this->admin_page->rel_id . ' is not a valid relationship type id');
         die;
     }
     $current_assoc = $this->associations[$this->admin_page->rel_id];
     $type = new entity($current_assoc['e_id']);
     // save the type entity in an object scope
     $this->rel_type = carl_clone($type);
     $this->admin_page->title = 'Selecting ' . $type->get_value('name');
     $entity = new entity($this->admin_page->id);
     $user = new entity($this->admin_page->user_id);
     if (!$entity->user_can_edit_relationship($this->admin_page->rel_id, $user, $this->_rel_direction)) {
         $this->_locked = true;
     } elseif ($entity->relationship_has_lock($this->admin_page->rel_id, $this->_rel_direction) && reason_user_has_privs($this->admin_page->user_id, 'manage_locks')) {
         $this->_show_lock_info = true;
     }
     $this->get_views($type->id());
     if (empty($this->views)) {
         //add generic lister if not already present
         $this->views = array();
     } else {
         reset($this->views);
         $c = current($this->views);
         if ($c) {
             $lister = $c->id();
             $this->admin_page->request['lister'] = $lister;
         } else {
             $lister = '';
         }
     }
     $lister = isset($lister) ? $lister : '';
     $this->get_viewer($this->admin_page->site_id, $type->id(), $lister);
     $this->filter = new filter();
     $this->filter->set_page($this->admin_page);
     $this->filter->grab_fields($this->viewer->filters);
 }
Exemplo n.º 3
0
 /**
  * check_permission uses the user manager class to validate that the site 
  * and user are valid, and that the user has access to the site
  *
  * @return boolean true if the user and site are valid, and the user has access to the site
  */
 function check_permission()
 {
     $user_manager = new User();
     if ($user_manager->set_site_id($this->site_id)) {
         if ($user_manager->is_site_user($this->user_netID)) {
             $user_id = get_user_id($this->user_netID);
             $e1 = new entity($this->entity_id);
             $e2 = new entity($this->left_entity_id);
             if ($e1->get_value('state') == 'Pending' || $e2->get_value('state') == 'Pending') {
                 $priv = 'edit_pending';
             } else {
                 $priv = 'edit';
             }
             if (reason_user_has_privs($user_id, $priv)) {
                 $user = new entity($user_id);
                 return $e2->user_can_edit_relationship($this->al_relationship_id, $user, 'right');
             }
         }
     }
     return false;
 }