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();
     $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 _valid_perform(&$request, &$response)
 {
     $login = $this->dataspace->get('login');
     $password = $this->dataspace->get('password');
     $locale_id = $this->dataspace->get('locale_id');
     $autologin = $this->dataspace->get('autologin');
     $user_object =& site_object_factory::create($this->user_object_class_name);
     if ($user_object->login($login, $password, $locale_id)) {
         if ($autologin) {
             $user =& user::instance();
             $user->configure_autologin();
         }
         $request->set_status(REQUEST_STATUS_FORM_SUBMITTED);
         if ($redirect = $this->dataspace->get('redirect')) {
             $this->_login_redirect($redirect, $response);
             return;
         } elseif (isset($_SERVER['HTTP_REFERER']) && strpos(strtolower($_SERVER['HTTP_REFERER']), '/root/login') === false) {
             $response->redirect($_SERVER['HTTP_REFERER']);
             return;
         } else {
             $response->redirect('/');
             return;
         }
     }
     $request->set_status(REQUEST_STATUS_FAILURE);
 }
 function perform(&$request, &$response)
 {
     $request->set_status(REQUEST_STATUS_FAILURE);
     if ($request->has_attribute('popup')) {
         $response->write(close_popup_response($request));
     }
     if (!($id = $request->get_attribute('id'))) {
         return;
     }
     if (!($object_data =& fetch_one_by_node_id((int) $id))) {
         return;
     }
     $object =& site_object_factory::create($object_data['class_name']);
     if (!method_exists($object, 'get_cart_item')) {
         $request->set_status(REQUEST_STATUS_FAILURE);
         return;
     }
     $object->import_attributes($object_data);
     $cart_item =& $object->get_cart_item();
     $cart =& cart::instance();
     if ($quantity = (int) $request->get_attribute('quantity')) {
         $cart_item->set_amount($quantity);
     }
     $cart->add_item($cart_item);
     $request->set_status(REQUEST_STATUS_SUCCESS);
     $response->redirect('/root/cart?popup=1');
 }
  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 _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 & 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 &_getSiteObjectTestCase($site_object_class, $tester_postfix = '')
 {
     if ($tester_postfix) {
         $tester_postfix = '_' . $tester_postfix;
     }
     if (file_exists(PROJECT_DIR . '/tests/cases/site_objects_testers/' . $site_object_class . $tester_postfix . '_tester.class.php')) {
         include_once PROJECT_DIR . '/tests/cases/site_objects_testers/' . $site_object_class . $tester_postfix . '_tester.class.php';
         $tester_name = $site_object_class . $tester_postfix . '_tester';
         $test_case =& new $tester_name($site_object_class);
     } elseif (file_exists(LIMB_DIR . '/tests/cases/site_objects_testers/' . $site_object_class . $tester_postfix . '_tester.class.php')) {
         include_once LIMB_DIR . '/tests/cases/site_objects_testers/' . $site_object_class . $tester_postfix . '_tester.class.php';
         $tester_name = $site_object_class . $tester_postfix . '_tester';
         $test_case =& new $tester_name($site_object_class);
     } else {
         $site_object = site_object_factory::create($site_object_class);
         if (is_subclass_of($site_object, 'content_object')) {
             $tester_name = 'content_object' . $tester_postfix . '_tester';
             include_once LIMB_DIR . '/tests/cases/site_objects_testers/' . $tester_name . '.class.php';
             $test_case =& new $tester_name($site_object_class);
         } else {
             $tester_name = 'site_object' . $tester_postfix . '_tester';
             include_once LIMB_DIR . '/tests/cases/site_objects_testers/' . $tester_name . '.class.php';
             $test_case =& new $tester_name($site_object_class);
         }
     }
     return $test_case;
 }
 function _valid_perform(&$request, &$response)
 {
     if (!($objects_amounts = $this->dataspace->get('amount'))) {
         $request->set_status(REQUEST_STATUS_FAILURE);
         if ($request->has_attribute('popup')) {
             $response->write(close_popup_response($request));
         }
         return;
     }
     $objects_data =& fetch_by_node_ids(array_keys($objects_amounts), $this->_define_catalog_object(), $counter);
     if (!$objects_data) {
         $request->set_status(REQUEST_STATUS_FAILURE);
         if ($request->has_attribute('popup')) {
             $response->write(close_popup_response($request));
         }
         return;
     }
     $object =& site_object_factory::create($this->_define_catalog_object());
     if (!method_exists($object, 'get_cart_item')) {
         $request->set_status(REQUEST_STATUS_FAILURE);
         if ($request->has_attribute('popup')) {
             $response->write(close_popup_response($request));
         }
         return;
     }
     $cart =& cart::instance();
     foreach ($objects_data as $key => $object_data) {
         $object->import_attributes($object_data);
         $cart_item =& $object->get_cart_item();
         $cart_item->set_amount($objects_amounts[$key]);
         $cart->add_item($cart_item);
     }
     $response->redirect('/root/cart?popup=1');
 }
	function perform(&$request, &$response)
	{
		$user_object =& site_object_factory :: create($this->_site_object_name);
		$user_object->logout();
		
		$response->redirect('/');
	}
 function _valid_perform()
 {
     $object_data =& fetch_mapped_by_url();
     $data = $this->dataspace->export();
     $object =& site_object_factory::create('user_object');
     $object->save_membership($object_data['id'], $data['membership']);
     return new response(RESPONSE_STATUS_FORM_SUBMITTED);
 }
 function &get_site_objects()
 {
     $site_objects = array();
     foreach ($this->get_classes_list() as $class) {
         $site_objects[] =& site_object_factory::create($class);
     }
     return $site_objects;
 }
 function _valid_perform(&$request, &$response)
 {
     $object_data =& fetch_requested_object($request);
     $data = $this->dataspace->export();
     $object =& site_object_factory::create('user_object');
     $object->save_membership($object_data['id'], $data['membership']);
     $request->set_status(REQUEST_STATUS_FORM_SUBMITTED);
 }
 function _valid_perform()
 {
     $object_data =& fetch_mapped_by_url();
     $data = $this->_export();
     $object =& site_object_factory::create('user_object');
     $object->save_membership($object_data['id'], $data['membership']);
     return true;
 }
 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 _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 perform(&$request, &$response)
 {
     $object =& site_object_factory::create('user_object');
     if (!$object->activate_password()) {
         message_box::write_notice('Password activation failed!');
         $request->set_status(REQUEST_STATUS_FAILED);
         $response->redirect('/');
     }
 }
 function perform()
 {
     $object =& site_object_factory::create('user_object');
     if (!$object->activate_password()) {
         message_box::write_notice('Password activation failed!');
         reload('/');
     }
     return true;
 }
 function perform()
 {
     $object =& site_object_factory::create('user_object');
     if (!$object->activate_password()) {
         message_box::write_notice('Password activation failed!');
         return new redirect_response(RESPONSE_STATUS_FAILED, '/');
     }
     return new response();
 }
 function _valid_perform()
 {
     $data = $this->dataspace->export();
     $object =& site_object_factory::create('site_structure');
     if (isset($data['priority'])) {
         $object->save_priority($data['priority']);
     }
     return new close_popup_response();
 }
 function _valid_perform()
 {
     $object =& site_object_factory::create('poll_container');
     $data = $this->_export();
     if (!isset($data['answer'])) {
         message_box::write_notice(strings::get('no_answer', 'poll'));
         return false;
     }
     return $object->register_answer($data['answer']);
 }
 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(&$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 fetch_mapped_by_url()
 {
     $object_arr = fetch_mapped_by_url();
     if (isset($_REQUEST['version'])) {
         $site_object = site_object_factory::create($object_arr['class_name']);
         $site_object->import_attributes($object_arr);
         $object_arr = $site_object->fetch_version($_REQUEST['version']);
     }
     $this->import($object_arr);
 }
	function _valid_perform()
	{
		$data = $this->dataspace->export();
		$object =& site_object_factory :: create('user_object');
		
		$new_non_crypted_password = '';
		if($object->generate_password($data['email'], $new_non_crypted_password))
			return new response(RESPONSE_STATUS_FORM_SUBMITTED);
		else
			return new failed_response();
	}
 function _valid_perform(&$request, &$response)
 {
     $data = $this->dataspace->export();
     $object =& site_object_factory::create('user_object');
     $new_non_crypted_password = '';
     if ($object->generate_password($data['email'], $new_non_crypted_password)) {
         $request->set_status(REQUEST_STATUS_FORM_SUBMITTED);
     } else {
         $request->set_status(REQUEST_STATUS_FAILED);
     }
 }
 function _valid_perform()
 {
     $object_data =& fetch_mapped_by_url();
     $object =& site_object_factory::create($this->definition['site_object']);
     $object->import_attributes($object_data);
     if (!$object->delete()) {
         return false;
     }
     $parent_object_data = fetch_one_by_node_id($object_data['parent_id']);
     close_popup(null, true);
 }