function _get_theme_subscribers($theme_id)
  {
    $db_table	=  & db_table_factory :: instance('subscribe_member');
    $subscribers = $db_table->get_list(array('theme_id' => $theme_id), '', 'member_id');

    if (!count($subscribers))
      return array();

    $members_list = $this->_get_subscribers_from_branch('/root/admin/members');
    $users_list = $this->_get_subscribers_from_branch('/root/admin/users');

    $total_list = array_merge($members_list, $users_list);

    foreach($total_list as $key => $data)
    {
      if (!isset($data['email']) || !$data['email'])
        continue;

      $user_id = $data['id'];
      if(array_key_exists($user_id, $subscribers))
      {
        $subscribers[$user_id]['email'] = $data['email'];
        $subscribers[$user_id]['name'] = $data['name'];
      }
    }

    return $subscribers;
  }
 function &get_dataset(&$counter, $params = array())
 {
     $object_data = fetch_mapped_by_url();
     if (!count($object_data)) {
         return new array_dataset(array());
     }
     $db_table =& db_table_factory::instance('sys_object_version');
     $arr = $db_table->get_list('object_id=' . $object_data['id'], 'version DESC');
     $result = array();
     $users =& fetch_sub_branch('/root/users', 'user_object', $counter);
     foreach ($arr as $data) {
         $record = $data;
         $user = '';
         if (count($users)) {
             foreach ($users as $user_data) {
                 if ($user_data['id'] == $data['creator_id']) {
                     $user = $user_data;
                     break;
                 }
             }
         }
         if ($user) {
             $record['creator_identifier'] = $user['identifier'];
             $record['creator_email'] = $user['email'];
             $record['creator_name'] = $user['name'];
             $record['creator_lastname'] = isset($user['lastname']) ? $user['lastname'] : '';
         }
         $result[] = $record;
     }
     return new array_dataset($result);
 }
 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 _update_media_record($id, $tmp_file_path, $file_name, $mime_type)
 {
     if (!file_exists($tmp_file_path)) {
         debug::write_error('file doesnt exist', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__, array('tmp' => $tmp_file_path));
         return false;
     }
     if (function_exists('md5_file')) {
         $etag = md5_file($tmp_file_path);
     } else {
         $fd = fopen($data['tmp_name'], 'rb');
         $contents = fread($fd, filesize($tmp_file_path));
         fclose($fd);
         $etag = md5($contents);
     }
     if (!is_dir(MEDIA_DIR)) {
         dir::mkdir(MEDIA_DIR, 777, true);
     }
     if (!copy($tmp_file_path, MEDIA_DIR . $id . '.media')) {
         debug::write_error('temporary file copy failed', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__, array('src' => $tmp_file_path, 'dst' => MEDIA_DIR . $id . '.media'));
         return false;
     }
     $media_db_table = db_table_factory::instance('media');
     $media_db_table->update_by_id($id, array('file_name' => $file_name, 'mime_type' => $mime_type, 'size' => filesize($tmp_file_path), 'etag' => $etag));
     return true;
 }
 function setUp()
 {
     $this->image =& db_table_factory::instance('test_image');
     $this->image_variation =& db_table_factory::instance('test_image_variation');
     $this->media =& db_table_factory::instance('test_media');
     parent::setUp();
 }
 function load_metadata()
 {
     $ids_array = $this->_get_path_objects_ids_array();
     if (!count($ids_array)) {
         return false;
     }
     $sys_metadata_db_table =& db_table_factory::instance('sys_metadata');
     $objects_metadata = $sys_metadata_db_table->get_list(sql_in('object_id', $ids_array), '', 'object_id');
     if (!count($objects_metadata)) {
         return false;
     }
     $ids_array = array_reverse($ids_array);
     $got_keywords = false;
     $got_description = false;
     foreach ($ids_array as $object_id) {
         if ($got_keywords && $got_description) {
             break;
         }
         if (!$got_keywords && !empty($objects_metadata[$object_id]['keywords'])) {
             $this->object_metadata['keywords'] = $objects_metadata[$object_id]['keywords'];
             $got_keywords = true;
         }
         if (!$got_description && !empty($objects_metadata[$object_id]['description'])) {
             $this->object_metadata['description'] = $objects_metadata[$object_id]['description'];
             $got_description = true;
         }
     }
     return true;
 }
	function & get_dataset($params = array())
	{
		if(!$arr = fetch_requested_object())
			return new array_dataset();
		
		$db_table =& db_table_factory :: instance('sys_class');
		$classes = $db_table->get_list('', 'class_name');
		
		$result = array();
		$params = array();

		foreach($classes as $class_id => $class_data)
		{
			$result[$class_id] = $class_data;
			$result[$class_id]['path'] = $arr['path'];
			$params['class_id'] = $class_id;
			$result[$class_id]['node_id'] = $arr['node_id'];
			
			foreach($arr['actions'] as $action_name => $action_params)
				$arr['actions'][$action_name]['extra'] = $params;

			$result[$class_id]['actions'] = $arr['actions'];
		}
		
		return new array_dataset($result);
	}
  function & get_dataset($params = array())
  {
    $request = request :: instance();

    if(!$controller_id = $this->_get_controller_id())
      return new array_dataset();

    $db_table =& db_table_factory :: instance('sys_controller');
    $controller_data = $db_table->get_row_by_id($controller_id);

    if (!$controller_data)
      return new array_dataset();

    $site_object_controller =& site_object_controller :: create($controller_data['name']);

    $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())
 {
     $request = request::instance();
     if (!($controller_id = $request->get_attribute('controller_id'))) {
         return new array_dataset();
     }
     $db_table =& db_table_factory::instance('sys_controller');
     $controller_data = $db_table->get_row_by_id($controller_id);
     if (!$controller_data) {
         return new array_dataset();
     }
     $site_object_controller =& site_object_controller::create($controller_data['name']);
     $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 test_save()
  {
  	$metadata['id'] = 1;
  	$metadata['keywords'] = 'keywords';
  	$metadata['description'] = 'description';
  	
  	$o =& site_object_factory :: create('site_object');
  	
  	$o->import_attributes($metadata);
  	$result_id = $o->save_metadata();
  	
  	$this->assertNotNull($result_id);
  	
  	$sys_metadata_db_table =& db_table_factory :: instance('sys_metadata');
  	$metadata_row = $sys_metadata_db_table->get_row_by_id($result_id);
  	
  	$this->assertTrue(is_array($metadata_row));
  	$this->assertTrue(isset($metadata_row['object_id']));
  	$this->assertTrue(isset($metadata_row['keywords']));
  	$this->assertTrue(isset($metadata_row['description']));

  	$this->assertEqual($metadata_row['object_id'], 1);
  	$this->assertEqual($metadata_row['keywords'], 'keywords');
  	$this->assertEqual($metadata_row['description'], 'description');
	}
 function test_db_table_cascade_delete($name = 'db table test case')
 {
     $this->image =& db_table_factory::instance('test_image');
     $this->image_variation =& db_table_factory::instance('test_image_variation');
     $this->media =& db_table_factory::instance('test_media');
     parent::test_db_case($name);
 }
 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 db_cart_handler($cart_id)
	{
	  parent :: cart_handler($cart_id);
	  
	  $this->cart_db_table =& db_table_factory :: instance('cart');
	  
	  register_shutdown_function(array(&$this, '_db_cart_handler'));
	}
 function _insert_user_site_object_access_records()
 {
     $access_db_table =& db_table_factory::instance('sys_object_access');
     $data = array();
     for ($i = 8; $i <= 10; $i++) {
         $this->db->sql_insert('sys_object_access', array('object_id' => $i, 'accessor_id' => 200, 'r' => 1, 'w' => 1, 'accessor_type' => ACCESSOR_TYPE_USER));
     }
 }
 function &get_dataset($params = array())
 {
     if (!fetch_requested_object()) {
         return new array_dataset();
     }
     $db_table =& db_table_factory::instance('sys_controller');
     $controllers = $db_table->get_list('', 'name');
     return new array_dataset($controllers);
 }
 function _insert_object_version_records($object_id, $version_max)
 {
     $version_db_table =& db_table_factory::instance('sys_object_version');
     for ($i = 1; $i <= $version_max; $i++) {
         $data = array();
         $data['version'] = $i;
         $data['object_id'] = $object_id;
         $version_db_table->insert($data);
     }
 }
 function _create_version_record()
 {
     $version_db_table =& db_table_factory::instance('sys_object_version');
     $time = time();
     $data['object_id'] = $this->get_id();
     $data['version'] = $this->get_version();
     $data['created_date'] = $time;
     $data['modified_date'] = $time;
     $data['creator_id'] = user::get_id();
     $version_db_table->insert($data);
     return true;
 }
 function get_id($controller_name)
 {
     $db_table =& db_table_factory::instance('sys_controller');
     $list = $db_table->get_list('name="' . $controller_name . '"');
     if (count($list) == 1) {
         return key($list);
     } elseif (count($list) > 1) {
         error('there are more than 1 controller found', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__, array('controller_name' => $controller_name));
     }
     $db_table->insert(array('name' => $controller_name));
     return $db_table->get_last_insert_id();
 }
 function test_save_wrong_membership()
 {
     $membership = array(100 => 1, 103 => 1, ';drop user_in_group;' => 1);
     $obj =& site_object_factory::create('user_object');
     $obj->save_membership(10, $membership);
     $db_table =& db_table_factory::instance('user_in_group');
     $rows = $db_table->get_list('', 'id');
     $this->assertTrue(is_array($rows));
     $this->assertEqual(count($rows), 4);
     $record = end($rows);
     $this->assertEqual($record['group_id'], (int) ';drop user_in_group;');
 }
 function _init_dataspace()
 {
     $object_data =& fetch_mapped_by_url();
     $phpbb_users_db_table =& db_table_factory::create('phpbb_users');
     $conditions['user_id'] = $object_data['id'];
     $list = $phpbb_users_db_table->get_list($conditions);
     if (!count($list)) {
         return;
     }
     $phpbb_user_data = current($list);
     $data['rank'] = $phpbb_user_data['user_rank'];
     $this->dataspace->import($data);
 }
 function save_priority($params)
 {
     if (!count($params)) {
         return true;
     }
     $db_table =& db_table_factory::instance('sys_site_object_tree');
     foreach ($params as $node_id => $value) {
         $data = array();
         $data['priority'] = (int) $value;
         $db_table->update_by_id($node_id, $data);
     }
     return true;
 }
 function test_copy_group_objects_access()
 {
     $this->ac->copy_object_access($object_id = 304, $parent_id = 300, ACCESSOR_TYPE_GROUP);
     $db_table =& db_table_factory::instance('sys_object_access');
     $conditions['accessor_type'] = ACCESSOR_TYPE_GROUP;
     $conditions['object_id'] = $object_id;
     $rows = $db_table->get_list($conditions, 'id', null);
     $this->assertEqual(count($rows), 2);
     $this->assertEqual($rows, array(array('id' => $rows[0]['id'], 'object_id' => 304, 'accessor_id' => 100, 'access' => 1, 'accessor_type' => ACCESSOR_TYPE_GROUP), array('id' => $rows[1]['id'], 'object_id' => 304, 'accessor_id' => 110, 'access' => 1, 'accessor_type' => ACCESSOR_TYPE_GROUP)));
     $group_objects_access = $this->ac->get_object_access_by_ids(array(300, 301, 302, 303, 304), ACCESSOR_TYPE_GROUP);
     $this->assertEqual(sizeof($group_objects_access), 5);
     $this->assertEqual($group_objects_access[304], array(100 => 1, 110 => 1));
 }
 function &get_data_set($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(array(0 => $class_data));
     } else {
         return new array_dataset(array());
     }
 }
 function _insert_fake_sys_site_object_records()
 {
     $class_db_table = db_table_factory::instance('sys_class');
     $class_db_table->insert(array('id' => 1001, 'class_name' => 'fake_class'));
     $db_table =& db_table_factory::instance('sys_site_object');
     $tree =& limb_tree::instance();
     $data = array();
     for ($i = 11; $i <= 20; $i++) {
         $this->db->sql_insert('sys_site_object', array('id' => $i, 'class_id' => 1001, 'identifier' => 'object_' . $i, 'title' => 'object_' . $i . '_title', 'status' => 0, 'locale_id' => 'en'));
         $values['identifier'] = 'object_' . $i;
         $values['object_id'] = $i;
         $tree->create_sub_node($this->root_node_id, $values);
     }
 }
 function change_own_password($password)
 {
     if (!($node_id = user::get_node_id())) {
         debug::write_error('user not logged in - node id is not set', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__);
         return false;
     }
     $data['password'] = user::get_crypted_password(user::get_login(), $password);
     $user_db_table =& db_table_factory::create('user');
     if ($user_db_table->update($data, 'identifier="' . user::get_login() . '"')) {
         return user::login(user::get_login(), $password);
     } else {
         return false;
     }
 }
 function load_metadata()
 {
     $ids_array = $this->_get_path_objects_ids_array();
     if (!count($ids_array)) {
         return false;
     }
     $ids_array = array_reverse($ids_array);
     $metadata_db_table =& db_table_factory::instance($this->metadata_db_table_name);
     $objects_metadata = $metadata_db_table->get_list(sql_in('object_id', $ids_array), '', 'object_id');
     if (!count($objects_metadata)) {
         return false;
     }
     $this->_process_loaded_metadata($ids_array, $objects_metadata);
     return true;
 }
 function &get_dataset(&$counter, $params = array())
 {
     $counter = 0;
     $request = request::instance();
     if (!($controller_id = $request->get_attribute('controller_id'))) {
         return new array_dataset();
     }
     $db_table =& db_table_factory::instance('sys_controller');
     $controller_data = $db_table->get_row_by_id($controller_id);
     if ($controller_data) {
         $counter = 1;
         return new array_dataset(array(0 => $controller_data));
     } else {
         return new array_dataset(array());
     }
 }
 function test_save_user_actions_access_template()
 {
     $template = array('create' => array(200 => 1, 210 => 0), 'publish' => array(200 => 1, 210 => 1));
     $this->ac->save_action_access_template($controller_id = 11, $template, ACCESSOR_TYPE_USER);
     $db_table =& db_table_factory::instance('sys_access_template');
     $templates_rows = $db_table->get_list('', 'id', null);
     $items_db_table =& db_table_factory::instance('sys_access_template_item');
     $items_rows = $items_db_table->get_list('', 'id', null);
     $this->assertTrue(is_array($templates_rows));
     $this->assertEqual(count($templates_rows), 5);
     $this->assertTrue(is_array($items_rows));
     $this->assertEqual(count($items_rows), 9);
     $this->assertEqual($templates_rows, array(array('id' => $templates_rows[0]['id'], 'controller_id' => 10, 'action_name' => 'create', 'accessor_type' => ACCESSOR_TYPE_GROUP), array('id' => $templates_rows[1]['id'], 'controller_id' => 11, 'action_name' => 'create', 'accessor_type' => ACCESSOR_TYPE_GROUP), array('id' => $templates_rows[2]['id'], 'controller_id' => 12, 'action_name' => 'create', 'accessor_type' => ACCESSOR_TYPE_USER), array('id' => $templates_rows[3]['id'], 'controller_id' => 11, 'action_name' => 'create', 'accessor_type' => ACCESSOR_TYPE_USER), array('id' => $templates_rows[4]['id'], 'controller_id' => 11, 'action_name' => 'publish', 'accessor_type' => ACCESSOR_TYPE_USER)));
     $record = reset($items_rows);
     $this->assertEqual($record['accessor_id'], 100);
     $this->assertEqual($record['access'], 1);
     $record = end($items_rows);
     $this->assertEqual($record['accessor_id'], 210);
     $this->assertEqual($record['access'], 1);
 }
 function test_save_user_actions_access_template()
 {
     $template = array('create' => array(200 => array('r' => 1, 'w' => 1), 210 => array('r' => 0, 'w' => 0)), 'publish' => array(200 => array('r' => 1, 'w' => 0), 210 => array('r' => 1, 'w' => 0)));
     $this->ac->save_user_action_access_template($class_id = 11, $template);
     $db_table =& db_table_factory::instance('sys_user_object_access_template');
     $templates_rows = $db_table->get_list('', 'id', null);
     $items_db_table =& db_table_factory::instance('sys_user_object_access_template_item');
     $items_rows = $items_db_table->get_list('', 'id', null);
     $this->assertTrue(is_array($templates_rows));
     $this->assertEqual(count($templates_rows), 3);
     $this->assertTrue(is_array($items_rows));
     $this->assertEqual(count($items_rows), 5);
     $this->assertEqual($templates_rows, array(array('id' => $templates_rows[0]['id'], 'class_id' => 12, 'action_name' => 'create'), array('id' => $templates_rows[1]['id'], 'class_id' => 11, 'action_name' => 'create'), array('id' => $templates_rows[2]['id'], 'class_id' => 11, 'action_name' => 'publish')));
     $record = reset($items_rows);
     $this->assertEqual($record['user_id'], 200);
     $this->assertEqual($record['r'], 1);
     $this->assertEqual($record['w'], 0);
     $record = end($items_rows);
     $this->assertEqual($record['user_id'], 210);
     $this->assertEqual($record['r'], 1);
     $this->assertEqual($record['w'], 0);
 }
	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);
	}