function &get_dataset($params = array())
 {
     $request = request::instance();
     if (!($class_id = $request->get_attribute('class_id'))) {
         return new array_dataset();
     }
     $db_table =& db_table_factory::instance('sys_class');
     $class_data = $db_table->get_row_by_id($class_id);
     if (!$class_data) {
         return new array_dataset();
     }
     $c =& site_object_factory::instance($class_data['class_name']);
     $site_object_controller =& $c->get_controller();
     $actions = $site_object_controller->get_actions_definitions();
     $user_groups =& fetch_sub_branch('/root/user_groups', 'user_group', $counter);
     $result = array();
     foreach ($user_groups as $group_id => $group_data) {
         foreach ($actions as $action => $action_params) {
             if (!isset($action_params['can_have_access_template']) || !$action_params['can_have_access_template']) {
                 continue;
             }
             if (isset($action_params['action_name'])) {
                 $result[$group_id]['actions'][$action]['action_name'] = $action_params['action_name'];
             } else {
                 $result[$group_id]['actions'][$action]['action_name'] = str_replace('_', ' ', strtoupper($action[0]) . substr($action, 1));
             }
             $result[$group_id]['group_name'] = $group_data['identifier'];
             $result[$group_id]['actions'][$action]['read_selector_name'] = 'template[' . $action . '][' . $group_id . '][r]';
             $result[$group_id]['actions'][$action]['write_selector_name'] = 'template[' . $action . '][' . $group_id . '][w]';
         }
     }
     return new array_dataset($result);
 }
 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 &get_dataset($params = array())
 {
     $request = request::instance();
     if (!($class_id = $request->get_attribute('class_id'))) {
         return new array_dataset();
     }
     $db_table =& db_table_factory::instance('sys_class');
     $class_data = $db_table->get_row_by_id($class_id);
     if (!$class_data) {
         return new array_dataset();
     }
     $c =& site_object_factory::instance($class_data['class_name']);
     $site_object_controller =& $c->get_controller();
     $actions = $site_object_controller->get_actions_definitions();
     $result = array();
     foreach ($actions as $action => $action_params) {
         if (!isset($action_params['can_have_access_template']) || !$action_params['can_have_access_template']) {
             continue;
         }
         if (isset($action_params['action_name'])) {
             $result[$action]['action_name'] = $action_params['action_name'];
         } else {
             $result[$action]['action_name'] = str_replace('_', ' ', strtoupper($action[0]) . substr($action, 1));
         }
     }
     return new array_dataset($result);
 }
	function & get_dataset($params = array())
	{
		if(!isset($_REQUEST['class_id']))
			return new array_dataset();
		
		$class_id = $_REQUEST['class_id'];
		$db_table =& db_table_factory :: instance('sys_class');
		$class_data = $db_table->get_row_by_id($class_id);
		
		if (!$class_data)
			return new array_dataset();

		$c =& site_object_factory :: instance($class_data['class_name']);	
		
		$site_object_controller =& $c->get_controller();
		
		$actions = $site_object_controller->get_actions_definitions();
		
		$result = array();
		foreach($actions as $action => $action_params)
		{
			if (!isset($action_params['can_have_access_template']) || !$action_params['can_have_access_template'])
				continue;

			if(isset($action_params['action_name']))
				$result[$action]['action_name'] = $action_params['action_name'];
			else
				$result[$action]['action_name'] = str_replace('_', ' ', strtoupper($action{0}) . substr($action, 1));				
		}
		
		return new array_dataset($result);
	}
 function &get_dataset($params = array())
 {
     if (!isset($_REQUEST['class_id'])) {
         return new array_dataset();
     }
     $class_id = $_REQUEST['class_id'];
     $db_table =& db_table_factory::instance('sys_class');
     $class_data = $db_table->get_row_by_id($class_id);
     if (!$class_data) {
         return new array_dataset();
     }
     $c =& site_object_factory::instance($class_data['class_name']);
     $site_object_controller =& $c->get_controller();
     $actions = $site_object_controller->get_actions_definitions();
     $user_groups =& fetch_sub_branch('/root/user_groups', 'user_group', $counter);
     $result = array();
     foreach ($actions as $action => $action_params) {
         if (isset($action_params['action_name'])) {
             $result[$action]['action_name'] = $action_params['action_name'];
         } else {
             $result[$action]['action_name'] = str_replace('_', ' ', strtoupper($action[0]) . substr($action, 1));
         }
         $result[$action]['permissions_required'] = $action_params['permissions_required'];
         foreach ($user_groups as $group_id => $group_data) {
             $result[$action]['groups'][$group_id]['selector_name'] = 'policy[' . $group_id . '][' . $action . ']';
         }
     }
     return new array_dataset($result);
 }
 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 _valid_perform(&$request, &$response)
 {
     $user_object =& site_object_factory::instance('user_object');
     $data = $this->dataspace->export();
     if ($user_object->change_own_password($data['password'])) {
         $request->set_status(REQUEST_STATUS_FORM_SUBMITTED);
     } else {
         $request->set_status(REQUEST_STATUS_FAILED);
     }
 }
 function _valid_perform()
 {
     $user_object =& site_object_factory::instance('user_object');
     $data = $this->dataspace->export();
     if ($user_object->change_own_password($data['password'])) {
         return new response(RESPONSE_STATUS_FORM_SUBMITTED);
     } else {
         return new failed_response();
     }
 }
 function validate(&$dataspace)
 {
     $old_password = $dataspace->get($this->field_name);
     $user_site_object =& site_object_factory::instance('user_object');
     if ($user_site_object->validate_password($old_password)) {
         return;
     } else {
         $this->error('WRONG_OLD_PASSWORD');
     }
 }
 function _valid_perform()
 {
     $user_object =& site_object_factory::instance('user_object');
     $data = $this->dataspace->export();
     if (!$user_object->validate_password($data['old_password'])) {
         $error_list =& error_list::instance();
         $error_list->add_error('old_password', 'WRONG_PASSWORD');
         $this->valid = false;
         return $this->valid;
     }
     return $user_object->change_own_password($data['password']);
 }
	function &_get_controller($class_name)
	{
		$site_object =& site_object_factory :: instance($class_name);
		$site_object_controller =& $site_object->get_controller();
		return $site_object_controller;
	}
Beispiel #13
0
require_once LIMB_DIR . '/core/model/search/full_text_indexer.class.php';
require_once LIMB_DIR . '/core/lib/db/db_factory.class.php';
set_time_limit(3000);
$tree =& tree::instance();
$indexer =& new full_text_indexer();
$db =& db_factory::instance();
echo "getting nodes from {$path}...\n";
$nodes =& $tree->get_sub_branch_by_path($path);
echo "nodes retrieved...\n";
$total = sizeof($nodes);
echo 'total nodes count = ' . $total . "...\n";
$counter = 0;
$missed_objects = array();
foreach ($nodes as $node) {
    $db->sql_exec('SELECT sc.class_name FROM sys_site_object sso, sys_class sc 
		WHERE sso.class_id=sc.id AND sso.id=' . $node['object_id']);
    if (!($row = $db->fetch_row())) {
        $missed_objects[] = $node['object_id'];
        continue;
    }
    $site_object =& site_object_factory::instance($row['class_name']);
    $object_data = current($site_object->fetch_by_ids(array($node['object_id'])));
    $site_object->import_attributes($object_data);
    $counter++;
    echo "indexing {$counter} of {$total}...\n";
    $indexer->add($site_object);
}
foreach ($missed_objects as $id) {
    echo "missed object_id: {$id}...\n";
}
echo 'done';
 function &fetch_one_by_node_id($node_id)
 {
     $tree =& limb_tree::instance();
     if (!($node = $tree->get_node($node_id))) {
         return false;
     }
     $access_policy = access_policy::instance();
     $object_ids = $access_policy->get_accessible_objects(array($node['object_id']));
     if (!count($object_ids)) {
         return false;
     }
     $object_id = reset($object_ids);
     if ($class_name = $this->_get_object_class_name_by_id($object_id)) {
         $site_object =& site_object_factory::instance($class_name);
         $result =& $site_object->fetch_by_ids(array($object_id));
         if (!count($result)) {
             return false;
         }
         $access_policy->assign_actions_to_objects($result);
         $this->_assign_paths($result);
         return reset($result);
     } else {
         return false;
     }
 }
	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;
	}
Beispiel #16
0
        debug::write_error('content object not allowed or retrieved', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__);
        ob_end_clean();
        if (debug::is_console_enabled()) {
            echo debug::parse_html_console();
        }
        header("HTTP/1.1 403 Access denied");
        exit;
    }
}
if (isset($object_data['locale_id']) && $object_data['locale_id']) {
    define('CONTENT_LOCALE_ID', $object_data['locale_id']);
} else {
    define('CONTENT_LOCALE_ID', DEFAULT_CONTENT_LOCALE_ID);
}
define('MANAGEMENT_LOCALE_ID', user::get_management_locale_id());
$site_object =& site_object_factory::instance($object_data['class_name']);
debug::add_timing_point('object fetched');
$site_object_controller =& $site_object->get_controller();
if (($action = $site_object_controller->determine_action()) === false) {
    debug::write_error('"' . $action . '" action not found', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__);
    ob_end_clean();
    if (debug::is_console_enabled()) {
        echo debug::parse_html_console();
    }
    header("HTTP/1.1 404 Not found");
    exit;
}
$actions = $object_data['actions'];
if (!isset($actions[$action])) {
    debug::write_error('"' . $action . '" action is not accessible', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__);
    ob_end_clean();
	function & fetch_one_by_id($object_id)
	{
	  if($object_data =& $this->_get_object_from_cache('id', $object_id))
	    return $object_data;
	  
	  $access_policy =& $this->_get_access_policy();
		$object_ids = $access_policy->get_accessible_objects(array($object_id));
		
		if (!is_array($object_ids) || !count($object_ids))
			return false;
		
		$object_id = reset($object_ids);
		if (!$class_name = $this->_get_object_class_name_by_id($object_id))
		  return false;

		$site_object =& site_object_factory :: instance($class_name);
		
		$result =& $site_object->fetch_by_ids(array($object_id));
					
		if (!is_array($result) || !count($result))
			return false;

    $this->_assign_actions($result);

		$this->_assign_paths($result);
		
		$object_data = reset($result);
		
		$this->_place_object_to_cache($object_data);

		return $object_data;
	}
 function _can_add_node_to_parent($parent_id)
 {
     $tree =& limb_tree::instance();
     if (!$tree->can_add_node($parent_id)) {
         return false;
     }
     $sql = "SELECT sys_class.class_name\r\n\t\tFROM sys_site_object as sso, sys_class, sys_site_object_tree as ssot\r\n\t\tWHERE ssot.id={$parent_id} \r\n\t\tAND sso.class_id=sys_class.id\r\n\t\tAND sso.id=ssot.object_id";
     $db =& db_factory::instance();
     $db->sql_exec($sql);
     $row =& $db->fetch_row();
     if (!is_array($row) || !count($row)) {
         return false;
     }
     $parent_object = site_object_factory::instance($row['class_name']);
     return $parent_object->can_be_parent();
 }