function _init_dataspace(&$request)
  {
    $access_policy =& access_policy :: instance();
    $data['policy'] = $access_policy->get_object_access_by_ids($this->object_ids, ACCESSOR_TYPE_GROUP);

    $this->dataspace->merge($data);
  }
 function _valid_perform(&$request, &$response)
 {
     $data = $this->dataspace->export();
     $access_policy =& access_policy::instance();
     $access_policy->save_group_object_access($data['policy']);
     $request->set_status(REQUEST_STATUS_FORM_SUBMITTED);
 }
 function _valid_perform()
 {
     $tree =& tree::instance();
     $params = array();
     $params['identifier'] = $this->dataspace->get('identifier');
     $params['parent_path'] = $this->dataspace->get('parent_path');
     $params['class'] = $this->dataspace->get('class_name');
     $params['title'] = $this->dataspace->get('title');
     $object =& site_object_factory::create($params['class']);
     $is_root = false;
     if (!($parent_data = fetch_one_by_path($params['parent_path']))) {
         if ($params['parent_path'] == '/') {
             $is_root = true;
         } else {
             error("parent wasn't retrieved", __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__);
         }
     }
     if (!$is_root) {
         $params['parent_node_id'] = $parent_data['node_id'];
     } else {
         $params['parent_node_id'] = 0;
     }
     $object->import_attributes($params);
     if (!$object->create($is_root)) {
         error("object wasn't registered", __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__);
     }
     if (!$is_root) {
         $parent_object =& site_object_factory::instance($parent_data['class_name']);
         $parent_object->import_attributes($parent_data);
         $access_policy =& access_policy::instance();
         $access_policy->save_object_access($object, $parent_object);
     }
     return new close_popup_response(RESPONSE_STATUS_FORM_SUBMITTED);
 }
 function _valid_perform()
 {
     $data = $this->dataspace->export();
     $access_policy =& access_policy::instance();
     $access_policy->save_group_object_access($data['policy']);
     return new response(RESPONSE_STATUS_FORM_SUBMITTED);
 }
  function _process_loaded_items(& $items)
  {
    if (!count($items))
      return $items;

    $parent_node_ids = array();

    foreach($items as $key => $data)
      if (!isset($parent_node_ids[$data['parent_node_id']]))
      {
        $parent_node_ids[$data['parent_node_id']] = $data['parent_node_id'];
      }

    $fetcher =& fetcher :: instance();
    $access_policy =& access_policy :: instance();

    $params = array(
      'restrict_by_class' => false
    );

    $parents =& $fetcher->fetch_by_node_ids($parent_node_ids, 'site_object', $parents_counter, $params, 'fetch_by_ids');

    foreach($items as $key => $data)
    {
      $parent_data = $parents[$data['parent_node_id']];
      $items[$key]['parent_title'] = $parent_data['title'];
      $items[$key]['parent_path'] = $parent_data['path'];
    }
  }
 function _valid_perform()
 {
     $data = $this->_export();
     $access_policy =& access_policy::instance();
     $access_policy->save_group_object_access($data['policy']);
     return true;
 }
 function _apply_access_policy($object, $action)
 {
     $access_policy =& access_policy::instance();
     if (!$access_policy->save_object_access_for_action($object, $action)) {
         error('access template for action not defined', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__, array('action' => $action));
     }
 }
 function _valid_perform(&$request, &$response)
 {
     $tree =& tree::instance();
     $params = array();
     $params['identifier'] = $this->dataspace->get('identifier');
     $params['class'] = $this->dataspace->get('class_name');
     $params['title'] = $this->dataspace->get('title');
     $params['parent_node_id'] = $this->dataspace->get('parent_node_id');
     $params['controller_id'] = site_object_controller::get_id($this->dataspace->get('controller_name'));
     $object =& site_object_factory::create($params['class']);
     if (!($parent_data = fetch_one_by_node_id($params['parent_node_id']))) {
         error("parent wasn't retrieved", __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__);
     }
     $object->merge_attributes($params);
     if (!$object->create()) {
         error("object wasn't registered", __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__);
     }
     $parent_object =& site_object_factory::create($parent_data['class_name']);
     $parent_object->merge_attributes($parent_data);
     $access_policy =& access_policy::instance();
     $access_policy->save_initial_object_access($object, $parent_object);
     $request->set_status(REQUEST_STATUS_FORM_SUBMITTED);
     if ($request->has_attribute('popup')) {
         $response->write(close_popup_response($request));
     }
 }
 function perform()
 {
     $access_policy =& access_policy::instance();
     $data['policy'] = $access_policy->get_group_object_access();
     $this->dataspace->import($data);
     return parent::perform();
 }
 function _write_create_access_policy()
 {
     $parent_data =& $this->_load_parent_object_data();
     $parent_object =& site_object_factory::instance($parent_data['class_name']);
     $parent_object->import_attributes($parent_data);
     $access_policy =& access_policy::instance();
     $access_policy->save_object_access($this->object, $parent_object);
 }
 function _write_create_access_policy(&$object)
 {
     $parent_data =& fetch_mapped_by_url();
     $parent_object =& site_object_factory::instance($parent_data['class_name']);
     $parent_object->import_attributes($parent_data);
     $access_policy =& access_policy::instance();
     $access_policy->save_object_access($object, $parent_object);
 }
 function perform()
 {
     if (!parent::perform()) {
         return false;
     }
     $access_policy =& access_policy::instance();
     $data['policy'] = $access_policy->get_group_object_access();
     $this->_import($data);
     return true;
 }
	function perform(&$request, &$response)
	{				
		$access_policy =& access_policy :: instance();
	
		$data['policy'] = $access_policy->get_group_object_access();

		$this->dataspace->import($data);
		
		parent :: perform($request, $response);
	}
 function _valid_perform()
 {
     if (!isset($_REQUEST['class_id'])) {
         return false;
     }
     $data = $this->_export();
     $access_policy =& access_policy::instance();
     $access_policy->save_group_action_access_template($_REQUEST['class_id'], $data['template']);
     close_popup_no_parent_reload();
 }
 function _valid_perform()
 {
     if (!isset($_REQUEST['class_id'])) {
         return false;
     }
     $data = $this->_export();
     $access_policy =& access_policy::instance();
     $access_policy->save_group_action_access($_REQUEST['class_id'], $data['policy']);
     close_popup();
 }
 function _valid_perform()
 {
     if (!isset($_REQUEST['class_id'])) {
         error('class_id not defined', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__);
     }
     $data = $this->dataspace->export();
     $access_policy =& access_policy::instance();
     $access_policy->save_group_action_access_template($_REQUEST['class_id'], $data['template']);
     return new close_popup_no_reload_response(RESPONSE_STATUS_FORM_SUBMITTED);
 }
 function _valid_perform(&$request, &$response)
 {
     $data = $this->dataspace->export();
     if ($groups = $this->dataspace->get('filter_groups')) {
         session::set('filter_groups', $groups);
     }
     if (isset($data['update']) && isset($data['policy'])) {
         $access_policy =& access_policy::instance();
         $access_policy->save_group_object_access($data['policy'], $groups);
     }
     $this->_set_template_tree();
     $request->set_status(REQUEST_STATUS_FORM_SUBMITTED);
 }
 function _valid_perform(&$request, &$response)
 {
     if (!($class_id = $request->get_attribute('class_id'))) {
         error('class_id not defined', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__);
     }
     $data = $this->dataspace->export();
     $access_policy =& access_policy::instance();
     $access_policy->save_group_action_access_template($class_id, $data['template']);
     $request->set_status(REQUEST_STATUS_FORM_SUBMITTED);
     if ($request->has_attribute('popup')) {
         $response->write(close_popup_no_parent_reload_response());
     }
 }
 function setUp()
 {
     parent::setUp();
     $this->ac =& access_policy::instance();
     $this->object =& new Mocksite_object($this);
     $this->parent_object =& new Mocksite_object($this);
     $this->parent_object_controller =& new Mocksite_object_controller($this);
     $this->object->expectOnce('get_id');
     $this->parent_object->expectOnce('get_id');
     $this->parent_object->expectOnce('get_class_id');
     $this->parent_object->expectOnce('get_controller');
     $this->parent_object->setReturnReference('get_controller', $this->parent_object_controller);
 }
 function set_publish_status($status)
 {
     $object_data = fetch_mapped_by_url();
     $object_data['status'] = $status;
     $object =& site_object_factory::create($object_data['class_name']);
     $object->import_attributes($object_data);
     $access_policy =& access_policy::instance();
     $site_object_controller =& $object->get_controller();
     $action = $site_object_controller->determine_action();
     if (!$access_policy->save_object_access_for_action($object, $action)) {
         return false;
     }
     return $object->update(false, false);
 }
 function set_publish_status($status)
 {
     $object_data = fetch_mapped_by_url();
     $object_data['status'] = $status;
     $object =& site_object_factory::create($object_data['class_name']);
     $object->import_attributes($object_data);
     $access_policy =& access_policy::instance();
     $site_object_controller =& $object->get_controller();
     $action = $site_object_controller->determine_action();
     if (!$access_policy->save_object_access_for_action($object, $action)) {
         error('access template for action not defined', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__, array('action' => $action));
     }
     return $object->update(false, false);
 }
  function _valid_perform(&$request, &$response)
  {
    if (!$controller_id = $request->get_attribute('controller_id'))
    {
      error('controller_id not defined',
       __FILE__ . ' : ' . __LINE__ . ' : ' .  __FUNCTION__);
    }

    $data = $this->dataspace->export();
    $access_policy =& access_policy :: instance();

    $access_policy->save_action_access($controller_id, $data['policy'], ACCESSOR_TYPE_GROUP);

    $request->set_status(REQUEST_STATUS_FORM_SUBMITTED);

    if($request->has_attribute('popup'))
      $response->write(close_popup_no_parent_reload_response());
  }
 function &_fetch(&$counter, $params)
 {
     $result =& parent::_fetch($counter, $params);
     if (!count($result)) {
         return $result;
     }
     $parent_node_ids = array();
     foreach ($result as $key => $data) {
         if (!isset($parent_node_ids[$data['parent_node_id']])) {
             $parent_node_ids[$data['parent_node_id']] = $data['parent_node_id'];
         }
     }
     $fetcher =& fetcher::instance();
     $access_policy =& access_policy::instance();
     $params = array('restrict_by_class' => false);
     $parents =& $fetcher->fetch_by_node_ids($parent_node_ids, 'site_object', $parents_counter, $params, 'fetch_by_ids');
     foreach ($result as $key => $data) {
         $parent_data = $parents[$data['parent_node_id']];
         $result[$key]['parent_title'] = $parent_data['title'];
         $result[$key]['parent_path'] = $parent_data['path'];
     }
     return $result;
 }
  function count_accessible_children($node, $add_sql=array())
  {
    if (!($parent = $this->get_node($node)))
      return false;

    if(!$this->_is_table_joined('sys_site_object', $add_sql))
      $add_sql['join'][] = ', sys_site_object as sso ';

    if(!$this->_is_table_joined('sys_object_access', $add_sql))
      $add_sql['join'][] = ', sys_object_access as soa ';

    $add_sql['append'][] = ' AND sso.id = ' . $this->_node_table . '.object_id AND sso.id = soa.object_id AND soa.access = 1';

    $access_policy =& access_policy :: instance();
    $accessor_ids = implode(',', $access_policy->get_accessor_ids());

    $add_sql['append'][] = " AND soa.accessor_id IN ({$accessor_ids})";
    $add_sql['group'][] = ' GROUP BY ' . $this->_node_table . '.id';

    $sql = sprintf('SELECT count(*) as counter FROM %s %s
                    WHERE %s.root_id=%s AND %s.parent_id=%s %s %s',
                    $this->_node_table,
                    $this->_add_sql($add_sql, 'join'),
                    $this->_node_table,
                    $parent['root_id'],
                    $this->_node_table,
                    $parent['id'],
                    $this->_add_sql($add_sql, 'append'),
                    $this->_add_sql($add_sql, 'group')
                  );

    $this->_db->sql_exec($sql);

    return count($this->_db->get_array());
  }
 function setUp()
 {
     parent::setUp();
     $this->ac =& access_policy::instance();
 }
 function setUp()
 {
     parent::setUp();
     $this->fetcher =& fetcher::instance();
     $user_id = 10;
     $this->_login_user($user_id, array(103 => 'visitors', 104 => 'admin'));
     $obj1 = site_object_factory::create('fetching_test_object1');
     $obj2 = site_object_factory::create('fetching_test_object2');
     $obj1->set_identifier('root');
     $obj1->set_title('Root');
     $obj1->create(true);
     $access[$obj1->get_id()] = array($user_id => array('r' => 1, 'w' => 1));
     $this->root_node_id = $obj1->get_node_id();
     $this->_add_object($obj1);
     $obj1->set_parent_id($this->root_node_id);
     $obj1->set_identifier('articles');
     $obj1->set_title('Articles');
     $obj1->create();
     $access[$obj1->get_id()] = array($user_id => array('r' => 1, 'w' => 1));
     $this->_add_object($obj1);
     $this->articles_object = $obj1;
     $obj2->set_parent_id($obj1->get_node_id());
     $obj2->set_identifier('article1');
     $obj2->set_title('Article1');
     $obj2->create();
     $access[$obj2->get_id()] = array($user_id => array('r' => 1, 'w' => 1));
     $this->child_node_ids[] = $obj2->get_node_id();
     $this->_add_object($obj2);
     $this->article_object = $obj2;
     $obj2->set_parent_id($obj1->get_node_id());
     $obj2->set_identifier('article2');
     $obj2->set_title('Article2');
     $obj2->create();
     $access[$obj2->get_id()] = array($user_id => array('r' => 1, 'w' => 1));
     $this->child_node_ids[] = $obj2->get_node_id();
     $this->_add_object($obj2);
     $obj2->set_parent_id($obj1->get_node_id());
     $obj2->set_identifier('article3');
     $obj2->set_title('Article3');
     $obj2->create();
     $access[$obj2->get_id()] = array($user_id => array('r' => 0, 'w' => 0));
     $this->child_node_ids[] = $obj2->get_node_id();
     $this->_add_object($obj2);
     $this->access_policy =& access_policy::instance();
     $this->access_policy->save_user_object_access($access);
     $actions = array($user_id => array('display' => 1));
     $this->access_policy->save_user_action_access($obj1->get_class_id(), $actions);
     $this->access_policy->save_user_action_access($obj2->get_class_id(), $actions);
 }
	function & search_fetch_by_ids($object_ids, $loader_class_name, &$counter, $params = array(), $fetch_method = 'fetch_by_ids')
	{
		if (!$this->_query_object)
		{
			 debug :: write_error('search_query is empty',
    		 __FILE__ . ' : ' . __LINE__ . ' : ' .  __FUNCTION__, 
    		array()
    	);
    	return array();
    }	

		$search =& new full_text_search();
		$search_result = $search->find_by_ids($object_ids, $this->_query_object);

		if(!count($search_result))
			return array();
		
		$counter = 0;
		$count_method = $fetch_method . '_count';
		
		$site_object =& site_object_factory :: instance($loader_class_name);
		$counter = $site_object->$count_method(array_keys($search_result), $params);
		$fetched_objects =& $site_object->$fetch_method(array_keys($search_result),$params);

		if(!count($fetched_objects))
			return array();
		
		foreach($search_result as $key => $score)
			if (isset($fetched_objects[$key]))
			{
				$result[$key] = $fetched_objects[$key];
				$result[$key]['score'] = $score;
			}	
		
		$access_policy = access_policy :: instance();
		$access_policy->assign_actions_to_objects($result);

		$this->_assign_paths($result);
		$this->_assign_search_paths($result, isset($params['offset']) ? $params['offset'] : 0);
		
		return $result;
	}
 function count_accessible_children($id, $add_sql = array())
 {
     if (!($parent = $this->get_node($id))) {
         debug::write_error('node not found', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__, array('id' => $id));
         return false;
     }
     if (!$this->_is_table_joined('sys_site_object', $add_sql)) {
         $add_sql['join'][] = ', sys_site_object as sso ';
     }
     if (!$this->_is_table_joined('sys_object_access', $add_sql)) {
         $add_sql['join'][] = ', sys_object_access as soa ';
     }
     $add_sql['append'][] = ' AND sso.id = ' . $this->_node_table . '.object_id AND sso.id = soa.object_id AND soa.r = 1';
     $access_policy =& access_policy::instance();
     $accessor_ids = implode(',', $access_policy->get_accessor_ids());
     $add_sql['append'][] = " AND soa.accessor_id IN ({$accessor_ids})";
     $add_sql['group'][] = ' GROUP BY ' . $this->_node_table . '.id';
     $sql = sprintf('SELECT count(*) as counter FROM %s %s
                 WHERE %s.root_id=%s AND %s.parent_id=%s %s %s', $this->_node_table, $this->_add_sql($add_sql, 'join'), $this->_node_table, $parent['root_id'], $this->_node_table, $id, $this->_add_sql($add_sql, 'append'), $this->_add_sql($add_sql, 'group'));
     $this->_db->sql_exec($sql);
     return count($this->_db->get_array());
 }
	function & _get_access_policy()
	{
	  include_once(LIMB_DIR . 'core/model/access_policy.class.php');
	  $access_policy =& access_policy :: instance();
	  return $access_policy;
	}
 function _init_dataspace(&$request)
 {
     $access_policy =& access_policy::instance();
     $data['policy'] = $access_policy->get_group_object_access_by_ids($this->object_ids);
     $this->dataspace->merge($data);
 }