Index: trunk/kernel/units/general/cat_event_handler.php
===================================================================
--- trunk/kernel/units/general/cat_event_handler.php	(revision 1582)
+++ trunk/kernel/units/general/cat_event_handler.php	(revision 1583)
@@ -1,146 +1,146 @@
 <?php
 
 $application =& kApplication::Instance();
 $application->Factory->includeClassFile('kDBEventHandler');
 
 class kCatDBEventHandler extends InpDBEventHandler {
 	
 	function OnCopy(&$event)
 	{
 		$object = $event->getObject();
 		$this->StoreSelectedIDs($event);
 		$ids = $this->getSelectedIDs($event);
 		$this->Application->StoreVar($event->getPrefixSpecial().'_clipboard', implode(',', $ids));
 		$this->Application->StoreVar($event->getPrefixSpecial().'_clipboard_mode', 'copy');
 		
-		$this->Application->StoreVar('clipboard', 'COPY-0.'.TABLE_PREFIX.'Products.ResourceId=0');
+		$this->Application->StoreVar('clipboard', 'COPY-0.'.$object->TableName.'.ResourceId=0');
 		$event->redirect_params = Array('opener' => 's', 'pass_events'=>true); //do not go up - STAY
 	}
 	
 	function OnCut(&$event)
 	{
 		$object = $event->getObject();
 		$this->StoreSelectedIDs($event);
 		$ids = $this->getSelectedIDs($event);
 		$this->Application->StoreVar($event->getPrefixSpecial().'_clipboard', implode(',', $ids));
 		$this->Application->StoreVar($event->getPrefixSpecial().'_clipboard_mode', 'cut');
 		
-		$this->Application->StoreVar('clipboard', 'CUT-0.'.TABLE_PREFIX.'Products.ResourceId=0');
+		$this->Application->StoreVar('clipboard', 'CUT-0.'.$object->TableName.'.ResourceId=0');
 		$event->redirect_params = Array('opener' => 's', 'pass_events'=>true); //do not go up - STAY
 	}
 	
 	function OnPaste(&$event)
 	{
 		$ids = $this->Application->RecallVar($event->getPrefixSpecial().'_clipboard');
 		if ($ids == '') {
 			$event->redirect = false;
 			return;
 		}
 		
 		//recalling by different name, because we may get kDBList, if we recall just by prefix
 		$object =& $this->Application->recallObject($event->getPrefixSpecial().'.item', $event->Prefix);
 		$this->prepareObject($object,$event);
 		
 		if ($this->Application->RecallVar($event->getPrefixSpecial().'_clipboard_mode') == 'copy') {
 			$ids_arr = explode(',', $ids);
 			
 			$temp =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler');
 			
 			if($ids_arr)
 			{
 				$temp->CloneItems($event->Prefix, $event->Special, $ids_arr);
 			}
 		}
 		else { // mode == cut
 			$ids_arr = explode(',', $ids);
 			foreach ($ids_arr as $id) {
 				$object->Load($id);
 				$object->MoveToCat();				
 			}
 		}
 		$event->status = erSUCCESS;
 	}
 	
 	/**
 	 * Apply scope clause
 	 *
 	 * @param kEvent $event
 	 */
 	function SetCustomQuery(&$event)
 	{
 		$object =& $event->getObject();
 		
 		if ($event->Special != 'showall') {
 			if ( $event->getEventParam('parent_cat_id') ) {
 				$parent_cat_id = $event->getEventParam('parent_cat_id');
 			}
 			else {
 				$parent_cat_id = $this->Application->GetVar('c_id');
 				if (!$parent_cat_id) {
 					$parent_cat_id = $this->Application->GetVar('m_cat_id');
 				}
 				if (!$parent_cat_id) {
 					$parent_cat_id = 0;
 				}
 			}
 			
 			if ((string) $parent_cat_id != 'any') {
 				if ($event->getEventParam('recursive')) {
 					$current_path = $this->Conn->GetOne('SELECT ParentPath FROM '.TABLE_PREFIX.'Category WHERE CategoryId='.$parent_cat_id);
 					$subcats = $this->Conn->GetCol('SELECT CategoryId FROM '.TABLE_PREFIX.'Category WHERE ParentPath LIKE "'.$current_path.'%" ');
 					$object->addFilter('category_filter', TABLE_PREFIX.'CategoryItems.CategoryId IN ('.implode(', ', $subcats).')');
 				}
 				else {
 					$object->addFilter('category_filter', TABLE_PREFIX.'CategoryItems.CategoryId = '.$parent_cat_id );
 				}
 			}
 		}
 		else {
 			$object->addFilter('primary_filter', 'PrimaryCat = 1');
 		}
 		
 		$view_perm = 1;
 		$object->addFilter('perm_filter', 'perm.PermId = '.$view_perm);
 		if (!defined('ADMIN')) {
 			$groups = explode(',',$this->Application->RecallVar('UserGroups'));
 			foreach ($groups as $group) {
 				$view_filters[] = 'FIND_IN_SET('.$group.', perm.acl) || ((NOT FIND_IN_SET('.$group.',perm.dacl)) AND perm.acl=\'\')';
 			}
 			$view_filter = implode(' OR ', $view_filters);
 			$object->addFilter('perm_filter2', $view_filter);
 		}
 		
 		if (!defined('ADMIN')) {
 			$object->addFilter('status_filter', $object->TableName.'.Status = 1');
 		}
 		
 		/*$list_type = $event->getEventParam('ListType');
 		switch($list_type)
 		{
 			case 'favorites':
 				$fav_table = $this->Application->getUnitOption('fav','TableName');
 				$user_id =& $this->Application->GetVar('u_id');
 				
 				$sql = 'SELECT DISTINCT f.ResourceId
 						FROM '.$fav_table.' f
 						LEFT JOIN '.$object->TableName.' p ON p.ResourceId = f.ResourceId
 						WHERE f.PortalUserId = '.$user_id;
 				$ids = $this->Conn->GetCol($sql);
 				if(!$ids) $ids = Array(-1);
 				$object->addFilter('category_filter', TABLE_PREFIX.'CategoryItems.PrimaryCat = 1');
 				$object->addFilter('favorites_filter', '%1$s.`ResourceId` IN ('.implode(',',$ids).')');
 				break;
 			case 'search':
 				$search_results_table = TABLE_PREFIX.'ses_'.$this->Application->GetVar('sid').'_'.TABLE_PREFIX.'Search';
 				$sql = '	SELECT DISTINCT ResourceId
 							FROM '.$search_results_table.'
 							WHERE ItemType=11';
 				$ids = $this->Conn->GetCol($sql);
 				if(!$ids) $ids = Array(-1);
 				$object->addFilter('search_filter', '%1$s.`ResourceId` IN ('.implode(',',$ids).')');
 				break;
 		}		*/
 	}
 }
 
 ?>
\ No newline at end of file

Property changes on: trunk/kernel/units/general/cat_event_handler.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.4
\ No newline at end of property
+1.5
\ No newline at end of property
Index: trunk/kernel/units/general/my_application.php
===================================================================
--- trunk/kernel/units/general/my_application.php	(revision 1582)
+++ trunk/kernel/units/general/my_application.php	(revision 1583)
@@ -1,46 +1,46 @@
-<?php
-
-	k4_include_once(MODULES_PATH.'/kernel/units/general/inp_db_event_handler.php');
-	
-	class MyApplication extends kApplication {
-	
-		function RegisterDefaultClasses()
-		{
-			parent::RegisterDefaultClasses();
-			
-			$this->registerClass('Inp1Parser',MODULES_PATH.'/kernel/units/general/inp1_parser.php','Inp1Parser');
-			
-			$this->registerClass('InpSession',MODULES_PATH.'/kernel/units/general/inp_ses_storage.php','Session');
-			$this->registerClass('InpSessionStorage',MODULES_PATH.'/kernel/units/general/inp_ses_storage.php','SessionStorage');
-			
-			$this->registerClass('kCatDBItem',MODULES_PATH.'/kernel/units/general/cat_dbitem.php');
-			$this->registerClass('kCatDBList',MODULES_PATH.'/kernel/units/general/cat_dblist.php');
-			$this->registerClass('kCatDBEventHandler',MODULES_PATH.'/kernel/units/general/cat_event_handler.php');
-			$this->registerClass('InpLoginEventHandler',MODULES_PATH.'/kernel/units/general/inp_login_event_handler.php','login_EventHandler');
-			$this->registerClass('InpDBEventHandler',MODULES_PATH.'/kernel/units/general/inp_db_event_handler.php','kDBEventHandler');
-			$this->registerClass('InpTempTablesHandler',MODULES_PATH.'/kernel/units/general/inp_temp_handler.php','kTempTablesHandler');
-			$this->registerClass('InpUnitConfigReader',MODULES_PATH.'/kernel/units/general/inp_unit_config_reader.php','kUnitConfigReader');
-			
-			$this->registerClass('InpCustomFieldsHelper',MODULES_PATH.'/kernel/units/general/custom_fields.php','InpCustomFieldsHelper');
-			$this->registerClass('kCountryStatesHelper',MODULES_PATH.'/kernel/units/general/country_states.php','CountryStatesHelper');
-		}
-								
-		/**
-		 * Checks if user is logged in, and creates
-		 * user object if so. User object can be recalled
-		 * later using "u" prefix. Also you may
-		 * get user id by getting "u_id" variable.
-		 *
-		 * @access private
-		 */
-		function ValidateLogin()
-		{			
-			$session =& $this->recallObject('Session');
-			$user_id = $session->GetField('PortalUserId');
-			if (!$user_id) $user_id = -2;
-			$this->SetVar('u_id', $user_id);
-			$this->StoreVar('user_id', $user_id);
-		}
-	}
-
+<?php
+
+	k4_include_once(MODULES_PATH.'/kernel/units/general/inp_db_event_handler.php');
+	
+	class MyApplication extends kApplication {
+	
+		function RegisterDefaultClasses()
+		{
+			parent::RegisterDefaultClasses();
+			
+			$this->registerClass('Inp1Parser',MODULES_PATH.'/kernel/units/general/inp1_parser.php','Inp1Parser');
+			
+			$this->registerClass('InpSession',MODULES_PATH.'/kernel/units/general/inp_ses_storage.php','Session');
+			$this->registerClass('InpSessionStorage',MODULES_PATH.'/kernel/units/general/inp_ses_storage.php','SessionStorage');
+			
+			$this->registerClass('kCatDBItem',MODULES_PATH.'/kernel/units/general/cat_dbitem.php');
+			$this->registerClass('kCatDBList',MODULES_PATH.'/kernel/units/general/cat_dblist.php');
+			$this->registerClass('kCatDBEventHandler',MODULES_PATH.'/kernel/units/general/cat_event_handler.php');
+			$this->registerClass('InpLoginEventHandler',MODULES_PATH.'/kernel/units/general/inp_login_event_handler.php','login_EventHandler');
+			$this->registerClass('InpDBEventHandler',MODULES_PATH.'/kernel/units/general/inp_db_event_handler.php','kDBEventHandler');
+			$this->registerClass('InpTempTablesHandler',MODULES_PATH.'/kernel/units/general/inp_temp_handler.php','kTempTablesHandler');
+			$this->registerClass('InpUnitConfigReader',MODULES_PATH.'/kernel/units/general/inp_unit_config_reader.php','kUnitConfigReader');
+			
+			$this->registerClass('InpCustomFieldsHelper',MODULES_PATH.'/kernel/units/general/custom_fields.php','InpCustomFieldsHelper');
+			$this->registerClass('kCountryStatesHelper',MODULES_PATH.'/kernel/units/general/country_states.php','CountryStatesHelper');
+		}
+								
+		/**
+		 * Checks if user is logged in, and creates
+		 * user object if so. User object can be recalled
+		 * later using "u" prefix. Also you may
+		 * get user id by getting "u_id" variable.
+		 *
+		 * @access private
+		 */
+		function ValidateLogin()
+		{			
+			$session =& $this->recallObject('Session');
+			$user_id = $session->GetField('PortalUserId');
+			if (!$user_id) $user_id = -2;
+			$this->SetVar('u_id', $user_id);
+			$this->StoreVar('user_id', $user_id);
+		}
+	}
+
 ?>
\ No newline at end of file

Property changes on: trunk/kernel/units/general/my_application.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.4
\ No newline at end of property
+1.5
\ No newline at end of property
Index: trunk/core/kernel/processors/main_processor.php
===================================================================
--- trunk/core/kernel/processors/main_processor.php	(revision 1582)
+++ trunk/core/kernel/processors/main_processor.php	(revision 1583)
@@ -1,735 +1,736 @@
 <?php
 
 class MainProcessor extends TagProcessor {
 	
 	function Init($prefix,$special)
 	{
 		parent::Init($prefix,$special);
 		
 		$actions =& $this->Application->recallObject('kActions');
 		$actions->Set('t', $this->Application->GetVar('t'));
 		$actions->Set('sid', $this->Application->GetSID());
 		$actions->Set('m_opener', $this->Application->GetVar('m_opener') );
     
 	}
 	
 	/**
 	 * Used to handle calls where tag name
 	 * match with existing php function name
 	 *
 	 * @param Tag $tag
 	 * @return string
 	 */
 	function ProcessTag(&$tag)
 	{
 		if ($tag->Tag=='include') $tag->Tag='MyInclude';
 		return parent::ProcessTag($tag);
 	}
 	
 	/**
 	 * Creates <base href ..> HTML tag for all templates
 	 * affects future css, js files and href params of links
 	 *
 	 * @return string
 	 * @access public
 	 */
 	function Base_Ref()
 	{
 		$url = $this->Application->BaseURL().substr(THEMES_PATH,1).'/';
 		return '<base href="'.$url.'" />';
 	}
 	
 	/**
 	 * Returns base url for web-site
 	 *
 	 * @return string
 	 * @access public
 	 */
 	function BaseURL()
 	{
 		return $this->Application->BaseURL();
 	}
 	
 	function TemplatesBase($params)
 	{
 		return $this->Application->BaseURL().THEMES_PATH;
 	}
 	
 	function ProjectBase($params)
 	{
 		return $this->Application->BaseURL();
 	}
 		
 	/*function Base($params)
 	{
 		return $this->Application->BaseURL().$params['add'];
 	}*/
 
 	/**
 	 * Used to create link to any template.
 	 * use "pass" paramter if "t" tag to specify
 	 * prefix & special of object to be represented
 	 * in resulting url
 	 *
 	 * @param Array $params
 	 * @return string
 	 * @access public
 	 */
 	function T($params)
 	{
 		//by default link to current template
 		$t = $this->SelectParam($params, 't,template');
 		if ($t === false) {
 			$t =  $this->Application->GetVar('t');
 		}
 		unset($params['t']);
 		unset($params['template']);
 		$prefix=isset($params['prefix']) ? $params['prefix'] : ''; unset($params['prefix']);
 		$index_file = isset($params['index_file']) ? $params['index_file'] : null; unset($params['index_file']);
 		
 		/*$pass=isset($params['pass']) ? $params['pass'] : $this->Application->GetVar('t_pass'); unset($params['pass']);
 		$this->Application->SetVar('t_pass', $pass);
 		
 		$pass_events = isset($params['pass_events']) && $params['pass_events'] ? 1 : 0; unset($params['pass_events']);
 		$this->Application->SetVar('t_pass_events', $pass_events);*/
 		
 		//Use only implicit params passing, do not set into APP
 //		$this->Set($params); // set other params as application vars
 		return str_replace('&', '&amp;', $this->Application->HREF($t,$prefix,$params,$index_file));
 	}
 	
 	function Link($params)
 	{
 		if (isset($params['template'])) {
 			$params['t'] = $params['template'];
 			unset($params['template']);
 		}
-		if (!isset($params['pass'])) $params['pass'] = 'm';
+		if (!isset($params['pass']) && !isset($params['no_pass'])) $params['pass'] = 'm';
+		if (isset($params['no_pass'])) unset($params['no_pass']);
 		return $this->T($params);
 	}
 	
 	function Env($params)
 	{
 		$t = $params['template'];
 		unset($params['template']);
 		return $this->Application->BuildEnv($t, $params, 'm', null, false);
 	}
 	
 	function FormAction($params)
 	{
 		return $this->Application->ProcessParsedTag('m', 't', 	Array( 'pass'=>'all,m' ) );
 	}
 	
 	/*// NEEDS TEST
 	function Config($params)
 	{
 		return $this->Application->ConfigOption($params['var']);
 	}
 	
 	function Object($params)
 	{
 		$name = $params['name'];
 		$method = $params['method'];
 		
 		$tmp =& $this->Application->recallObject($name);
 		if ($tmp != null) {
 			if (method_exists($tmp, $method)) 
 				return $tmp->$method($params);
 			else
 				echo "Method $method does not exist in object ".get_class($tmp)." named $name<br>";
 		}
 		else
 			echo "Object $name does not exist in the appliaction<br>";
 	}*/
 	
 	/**
 	 * Tag, that always returns true.
 	 * For parser testing purposes
 	 *
 	 * @param Array $params
 	 * @return bool
 	 * @access public
 	 */
 	function True($params)
 	{
 		return true;
 	}
 	
 	/**
 	 * Tag, that always returns false.
 	 * For parser testing purposes
 	 *
 	 * @param Array $params
 	 * @return bool
 	 * @access public
 	 */
 	function False($params)
 	{
 		return false;
 	}
 	
 	/**
 	 * Returns block parameter by name
 	 *
 	 * @param Array $params
 	 * @return stirng
 	 * @access public
 	 */
 	function Param($params)
 	{
 		//$parser =& $this->Application->recallObject('TemplateParser');
 		$res = $this->Application->Parser->GetParam($params['name']);
 		if ($res === false) $res = '';
 		if (isset($params['plus'])) 
 			$res += $params['plus'];
 		return $res;
 	}
 		
 	/**
 	 * Compares block parameter with value specified
 	 *
 	 * @param Array $params
 	 * @return bool
 	 * @access public
 	 */
 	function ParamEquals($params)
 	{
 		//$parser =& $this->Application->recallObject('TemplateParser');
 		$name = $this->SelectParam($params, 'name,var,param');
 		$value = $params['value'];
 		return ($this->Application->Parser->GetParam($name) == $value);
 	}
 	
 	/*function PHP_Self($params)
 	{
 		return $HTTP_SERVER_VARS['PHP_SELF'];
 	}
 	*/
 	
 	/**
 	 * Returns session variable value by name
 	 *
 	 * @param Array $params
 	 * @return string
 	 * @access public
 	 */
 	function Recall($params)
 	{
 		$ret = $this->Application->RecallVar( $this->SelectParam($params,'name,var,param') );
 		$ret = ($ret === false && isset($params['no_null'])) ? '' : $ret;
 		if( getArrayValue($params,'special') || getArrayValue($params,'htmlchars')) $ret = htmlspecialchars($ret);
 		return $ret;
 	}
 
 	// bad style to store something from template to session !!! (by Alex)
 	// Used here only to test how session works, nothing more
 	function Store($params)
 	{
 		//echo"Store $params[name]<br>";
 		$name = $params['name'];
 		$value = $params['value'];
 		$this->Application->StoreVar($name,$value);
 	}
 	
 	/**
 	 * Sets application variable value(-s)
 	 *
 	 * @param Array $params
 	 * @access public
 	 */
 	function Set($params)
 	{
 		foreach ($params as $param => $value) {
 			$this->Application->SetVar($param, $value);
 		}
 	}
 	
 	/**
 	 * Increment application variable
 	 * specified by number specified
 	 *
 	 * @param Array $params
 	 * @access public
 	 */
 	function Inc($params)
 	{
 		$this->Application->SetVar($params['param'], $this->Application->GetVar($params['param']) + $params['by']);
 	}
 	
 	/**
 	 * Retrieves application variable
 	 * value by name
 	 *
 	 * @param Array $params
 	 * @return string
 	 * @access public
 	 */
 	function Get($params)
 	{
 		$ret = $this->Application->GetVar($this->SelectParam($params, 'name,var,param'), EMPTY_ON_NULL);
 		return getArrayValue($params, 'htmlchars') ? htmlspecialchars($ret) : $ret;		 
 	}
 	
 	/**
 	 * Retrieves application constant
 	 * value by name
 	 *
 	 * @param Array $params
 	 * @return string
 	 * @access public
 	 */
 	function GetConst($params)
 	{
 		return defined($this->SelectParam($params, 'name,const')) ? constant($this->SelectParam($params, 'name,const,param')) : '';
 	}
 	
 	/*function Config_Equals($params)
 	{
 		foreach ($params as $name => $val) {
 			if (in_array($name, Array( 'prefix', 'function'))) continue;
 			return $this->Application->ConfigOption($name) == $val;
 		}
 		return false;
 	}*/
 	
 	/**
 	 * Creates all hidden fields
 	 * needed for kernel_form
 	 *
 	 * @param Array $params
 	 * @return string
 	 * @access public
 	 */
 	function DumpSystemInfo($params)
 	{
 		$actions =& $this->Application->recallObject('kActions');
 		$actions->Set('t', $this->Application->GetVar('t') );
 		
 		$params = $actions->GetParams();
 		$o='';
 		foreach ($params AS $name => $val)
 		{
 			$o .= "<input type='hidden' name='$name' id='$name' value='$val'>\n";
 		}
 		return $o;
 	}
 	
 	function GetFormHiddens($params)
 	{
 		$sid = $this->Application->GetSID();
 		$t = $this->SelectParam($params, 'template,t');
 		unset($params['template']);
 		$env = $this->Application->BuildEnv($t, $params, 'm', null, false);
 		$o = '';
 		if (defined('MOD_REWRITE') && MOD_REWRITE) {
 			$session =& $this->Application->recallObject('Session');
 			if ($session->NeedQueryString()) {
 				$o .= "<input type='hidden' name='sid' id='sid' value='$sid'>\n";
 			}
 		}
 		else {
 			$o .= "<input type='hidden' name='env' id='env' value='$env'>\n";
 		}
 		return $o;
 	}
 	
 	function Odd_Even($params)
 	{
 		$odd = $params['odd'];
 		$even = $params['even'];
 		if (!isset($params['var'])) {
 			$var = 'odd_even';
 		}
 		else {
 			$var = $params['var'];
 		}
 		
 		if ($this->Application->GetVar($var) == 'even') {
 			$this->Application->SetVar($var, 'odd');
 			return $even;
 		}
 		else {
 			$this->Application->SetVar($var, 'even');
 			return $odd;
 		}
 	}
 	
 	/**
 	 * Returns phrase translation by name
 	 *
 	 * @param Array $params
 	 * @return string
 	 * @access public
 	 */
 	function Phrase($params)
 	{
 		// m:phrase name="phrase_name" default="Tr-alala" updated="2004-01-29 12:49"
 		if (array_key_exists('default', $params)) return $params['default']; //backward compatibility
 		return $this->Application->Phrase($this->SelectParam($params, 'label,name,title'));
 	}
 
 	// for tabs
 	function is_active($params)
 	{
 		$test_templ =  $this->SelectParam($params, 'templ,template,t');
 		if ( !getArrayValue($params,'allow_empty') )
 		{
 			$if_true=getArrayValue($params,'true') ? $params['true'] : 1;
 			$if_false=getArrayValue($params,'false') ? $params['false'] : 0;
 		}
 		else
 		{
 			$if_true=$params['true'];
 			$if_false=$params['false'];
 		}
 		
 		if ( preg_match("/^".str_replace('/', '\/', $test_templ)."/", $this->Application->GetVar('t'))) {
 			return $if_true;
 		}
 		else {
 			return $if_false;
 		}
 	}
 	
 	function IsNotActive($params)
 	{
 		return !$this->is_active($params);
 	}
 	
 	function IsActive($params)
 	{
 		return $this->is_active($params);
 	}
 	
 	function is_t_active($params)
 	{
 		return $this->is_active($params);
 	}
 	
 	function CurrentTemplate($params)
 	{
 		return $this->is_active($params);
 	}
 	
 	/**
 	 * Checks if session variable
 	 * specified by name value match
 	 * value passed as parameter
 	 *
 	 * @param Array $params
 	 * @return string
 	 * @access public
 	 */
 	function RecallEquals($params)
 	{
 		$name = $params['var'];
 		$value = $params['value'];
 		return ($this->Application->RecallVar($name) == $value);
 	}
 
 	/**
 	 * Checks if application variable
 	 * specified by name value match
 	 * value passed as parameter
 	 *
 	 * @param Array $params
 	 * @return bool
 	 * @access public
 	 */
 	function GetEquals($params)
 	{
 		$name = $this->SelectParam($params, 'var,name,param');
 		$value = $params['value'];
 		if ($this->Application->GetVar($name) == $value) {
 			return 1;
 		}
 	}
 	
 	/**
 	 * Includes template
 	 * and returns it's
 	 * parsed version
 	 *
 	 * @param Array $params
 	 * @return string
 	 * @access public
 	 */
 	function MyInclude($params)
 	{
 		$BlockParser =& $this->Application->makeClass('TemplateParser');
 		$BlockParser->SetParams($params);
 		$parser =& $this->Application->Parser;
 		$this->Application->Parser =& $BlockParser;
 		
 		$t = $this->SelectParam($params, 't,template,block,name');
 		$t = eregi_replace("\.tpl$", '', $t);
 		
 		$templates_cache =& $this->Application->recallObject('TemplatesCache');
 		
 		$res = $BlockParser->Parse(	$templates_cache->GetTemplateBody($t), $t );
 		
 		if ( !$BlockParser->DataExists && (isset($params['data_exists']) || isset($params['block_no_data'])) ) {
 			if ($block_no_data = getArrayValue($params, 'block_no_data')) {
 				$res = $BlockParser->Parse(
 					$templates_cache->GetTemplateBody($block_no_data, $silent), 
 					$t
 				);
 			}
 			else {
 				$res = '';
 			}
 		}
 		$this->Application->Parser =& $parser;
 		$this->Application->Parser->DataExists = $this->Application->Parser->DataExists || $BlockParser->DataExists;
 		return $res;
 	}
 	
 	/*function Kernel_Scripts($params)
 	{
 		return '<script type="text/javascript" src="'.PROTOCOL.SERVER_NAME.BASE_PATH.'/kernel3/js/grid.js"></script>';
 	}*/	
 
 
 	/*function GetUserPermission($params)
 	{
 		// echo"GetUserPermission $params[name]";
 		if ($this->Application->RecallVar('user_type') == 1)
 			return 1;
 		else {
 			$perm_name = $params[name];
 			$aPermissions = unserialize($this->Application->RecallVar('user_permissions'));
 			if ($aPermissions)
 				return $aPermissions[$perm_name];
 		}
 	}*/
 	
 		
 	/**
 	 * Set's parser block param value
 	 *
 	 * @param Array $params
 	 * @access public
 	 */
 	function AddParam($params)
 	{
 		$parser =& $this->Application->Parser; // recallObject('TemplateParser');
 		foreach ($params as $param => $value) {
 			$this->Application->SetVar($param, $value);
 			$parser->SetParam($param, $value);
 			$parser->AddParam('/\$'.$param.'/', $value);
 		}
 	}
 	
 	/*function ParseToVar($params)
 	{
 		$var = $params['var'];
 		$tagdata = $params['tag'];
 		$parser =& $this->Application->Parser; //recallObject('TemplateParser');
 		$res = $this->Application->ProcessTag($tagdata);
 		
 		$parser->SetParam($var, $res);
 		$parser->AddParam('/\$'.$var.'/', $res);
 		return '';
 	}*/
 	
 	/*function TagNotEmpty($params)
 	{
 		$tagdata = $params['tag'];
 		$res = $this->Application->ProcessTag($tagdata);
 		return $res != '';
 	}*/
 	
 	/*function TagEmpty($params)
 	{
 		return !$this->TagNotEmpty($params);
 	}*/
 	
 	/**
 	 * Parses block and returns result
 	 *
 	 * @param Array $params
 	 * @return string
 	 * @access public
 	 */
 	function ParseBlock($params)
 	{
 		$parser =& $this->Application->Parser; // recallObject('TemplateParser');
 		return $parser->ParseBlock($params);
 	}
 	
 	/**
 	 * Checks if debug mode is on
 	 *
 	 * @return bool
 	 * @access public
 	 */
 	function IsDebugMode()
 	{
 		return $this->Application->isDebugMode();
 	}
 	
 	function MassParse($params)
 	{
 		$qty = $params['qty'];
 		$block = $params['block'];
 		$mode = $params['mode'];
 
 		$o = '';
 		if ($mode == 'func') {
 			$func = create_function('$params', '
 					$o = \'<tr>\'; 
 					$o.= \'<td>a\'.$params[\'param1\'].\'</td>\';
 					$o.= \'<td>a\'.$params[\'param2\'].\'</td>\';
 					$o.= \'<td>a\'.$params[\'param3\'].\'</td>\';
 					$o.= \'<td>a\'.$params[\'param4\'].\'</td>\';
 					$o.= \'</tr>\';
 					return $o;
 				');
 			for ($i=1; $i<$qty; $i++) {
 				$block_params['param1'] = rand(1, 10000);
 				$block_params['param2'] = rand(1, 10000);
 				$block_params['param3'] = rand(1, 10000);
 				$block_params['param4'] = rand(1, 10000);
 				$o .= $func($block_params);	
 			}
 			return $o;
 		}
 		
 		$block_params['name'] = $block;
 		
 		for ($i=0; $i<$qty; $i++) {
 			$block_params['param1'] = rand(1, 10000);
 			$block_params['param2'] = rand(1, 10000);
 			$block_params['param3'] = rand(1, 10000);
 			$block_params['param4'] = rand(1, 10000);
 			$block_params['passed'] = $params['passed'];
 			$block_params['prefix'] = 'm';
 						
 			$o.= $this->Application->ParseBlock($block_params, 1);
 		}
 		return $o;
 	}
 	
 	function AfterScript($params)
 	{
 		$after_script = $this->Application->GetVar('after_script');
 		if ( $after_script ) {
 			return '<script type="text/javascript">'.$after_script.'</script>';
 		}
 		return '';
 	}
 	
 	function LoggedIn($params)
 	{
 		return $this->Application->LoggedIn();
 	}
 	
 	/**
 	 * Checks if user is logged in and if not redirects it to template passed
 	 *
 	 * @param Array $params
 	 */
 	function RequireLogin($params)
 	{
 		if($permission_groups = getArrayValue($params, 'permissions'))
 		{
 			$permission_groups = explode('|', $permission_groups);
 			$group_has_permission = false;
 			foreach($permission_groups as $permission_group)
 			{
 				$permissions = explode(',', $permission_group);
 				$has_permission = true;
 				foreach($permissions as $permission)
 				{
 					$has_permission = $has_permission && $this->Application->CheckPermission($permission);
 				}
 				$group_has_permission = $group_has_permission || $has_permission;
 				
 				if($group_has_permission)
 				{
 					return;
 				}
 			}
 			
 			if( !$this->Application->LoggedIn() )
 			{
 				$t = $this->Application->GetVar('t');
 				$this->Application->Redirect( $params['login_template'], Array('next_template'=>$t) );
 			}
 			else 
 			{
 				$this->Application->Redirect( $params['no_permissions_template'] );
 			}
 		}
 		
 		$condition = getArrayValue($params,'condition');
 		if(!$condition)
 		{
 			$condition = true;
 		}
 		else
 		{
 			if( substr($condition,0,1) == '!' )
 			{
 				$condition = !$this->Application->ConfigValue( substr($condition,1) );
 			}
 			else
 			{
 				$condition = $this->Application->ConfigValue($condition);
 			}
 			
 		}
 		
 		if( !$this->Application->LoggedIn() && $condition )
 		{
 			$t = $this->Application->GetVar('t');
 			$this->Application->Redirect( $params['login_template'], Array('next_template'=>$t) );
 		}
 	}
 	
 	function SaveReturnScript($params)
 	{
 		// admin/save_redirect.php?do=
 		$url =  str_replace($this->Application->BaseURL(), '', $this->T($params) );
 		$url = explode('?', $url, 2);
 		$url = 'save_redirect.php?'.$url[1].'&do='.$url[0];
 		
 		$this->Application->StoreVar('ReturnScript', $url);
 	}
 		
 /*
 	function Login($params)
 	{
 		$user_prefix = 'users';
 		$this->parser->registerprefix($user_prefix);
 		$user_class = $this->parser->processors[$user_prefix]->item_class;
 		
 		$candidate = new $user_class(NULL, $this->parser->processors[$user_prefix]);
 		//print_pre($this->Session->Property);
 		
 		$special = array_shift($params);
 		//echo"$special<br>";
 		$candidate_id = $candidate->Login($this->Session->GetProperty('username'), $this->Session->GetProperty('password'), $special);
 		
 		if ($candidate_id !== false) {
 			$this->Session->SetField('user_id', $candidate_id);
 			$this->Session->Update();
 			$this->Session->AfterLogin();			
 			
 			$this->parser->register_prefix('m');
 			$template = array_shift($params);
 			if ($template == '') $template = 'index';
 			$location = $this->parser->do_process_tag('m', 't', Array($template));
 			header("Location: $location");
 			exit;
 		}
 		elseif ($this->Session->GetProperty('username') != '') {
 			$this->Session->SetProperty('login_error', 'Incorrect username or password');
 		}
 	}
 	*/
 
 }
 
 
 ?>
\ No newline at end of file

Property changes on: trunk/core/kernel/processors/main_processor.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.7
\ No newline at end of property
+1.8
\ No newline at end of property
Index: trunk/core/units/general/cat_event_handler.php
===================================================================
--- trunk/core/units/general/cat_event_handler.php	(revision 1582)
+++ trunk/core/units/general/cat_event_handler.php	(revision 1583)
@@ -1,146 +1,146 @@
 <?php
 
 $application =& kApplication::Instance();
 $application->Factory->includeClassFile('kDBEventHandler');
 
 class kCatDBEventHandler extends InpDBEventHandler {
 	
 	function OnCopy(&$event)
 	{
 		$object = $event->getObject();
 		$this->StoreSelectedIDs($event);
 		$ids = $this->getSelectedIDs($event);
 		$this->Application->StoreVar($event->getPrefixSpecial().'_clipboard', implode(',', $ids));
 		$this->Application->StoreVar($event->getPrefixSpecial().'_clipboard_mode', 'copy');
 		
-		$this->Application->StoreVar('clipboard', 'COPY-0.'.TABLE_PREFIX.'Products.ResourceId=0');
+		$this->Application->StoreVar('clipboard', 'COPY-0.'.$object->TableName.'.ResourceId=0');
 		$event->redirect_params = Array('opener' => 's', 'pass_events'=>true); //do not go up - STAY
 	}
 	
 	function OnCut(&$event)
 	{
 		$object = $event->getObject();
 		$this->StoreSelectedIDs($event);
 		$ids = $this->getSelectedIDs($event);
 		$this->Application->StoreVar($event->getPrefixSpecial().'_clipboard', implode(',', $ids));
 		$this->Application->StoreVar($event->getPrefixSpecial().'_clipboard_mode', 'cut');
 		
-		$this->Application->StoreVar('clipboard', 'CUT-0.'.TABLE_PREFIX.'Products.ResourceId=0');
+		$this->Application->StoreVar('clipboard', 'CUT-0.'.$object->TableName.'.ResourceId=0');
 		$event->redirect_params = Array('opener' => 's', 'pass_events'=>true); //do not go up - STAY
 	}
 	
 	function OnPaste(&$event)
 	{
 		$ids = $this->Application->RecallVar($event->getPrefixSpecial().'_clipboard');
 		if ($ids == '') {
 			$event->redirect = false;
 			return;
 		}
 		
 		//recalling by different name, because we may get kDBList, if we recall just by prefix
 		$object =& $this->Application->recallObject($event->getPrefixSpecial().'.item', $event->Prefix);
 		$this->prepareObject($object,$event);
 		
 		if ($this->Application->RecallVar($event->getPrefixSpecial().'_clipboard_mode') == 'copy') {
 			$ids_arr = explode(',', $ids);
 			
 			$temp =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler');
 			
 			if($ids_arr)
 			{
 				$temp->CloneItems($event->Prefix, $event->Special, $ids_arr);
 			}
 		}
 		else { // mode == cut
 			$ids_arr = explode(',', $ids);
 			foreach ($ids_arr as $id) {
 				$object->Load($id);
 				$object->MoveToCat();				
 			}
 		}
 		$event->status = erSUCCESS;
 	}
 	
 	/**
 	 * Apply scope clause
 	 *
 	 * @param kEvent $event
 	 */
 	function SetCustomQuery(&$event)
 	{
 		$object =& $event->getObject();
 		
 		if ($event->Special != 'showall') {
 			if ( $event->getEventParam('parent_cat_id') ) {
 				$parent_cat_id = $event->getEventParam('parent_cat_id');
 			}
 			else {
 				$parent_cat_id = $this->Application->GetVar('c_id');
 				if (!$parent_cat_id) {
 					$parent_cat_id = $this->Application->GetVar('m_cat_id');
 				}
 				if (!$parent_cat_id) {
 					$parent_cat_id = 0;
 				}
 			}
 			
 			if ((string) $parent_cat_id != 'any') {
 				if ($event->getEventParam('recursive')) {
 					$current_path = $this->Conn->GetOne('SELECT ParentPath FROM '.TABLE_PREFIX.'Category WHERE CategoryId='.$parent_cat_id);
 					$subcats = $this->Conn->GetCol('SELECT CategoryId FROM '.TABLE_PREFIX.'Category WHERE ParentPath LIKE "'.$current_path.'%" ');
 					$object->addFilter('category_filter', TABLE_PREFIX.'CategoryItems.CategoryId IN ('.implode(', ', $subcats).')');
 				}
 				else {
 					$object->addFilter('category_filter', TABLE_PREFIX.'CategoryItems.CategoryId = '.$parent_cat_id );
 				}
 			}
 		}
 		else {
 			$object->addFilter('primary_filter', 'PrimaryCat = 1');
 		}
 		
 		$view_perm = 1;
 		$object->addFilter('perm_filter', 'perm.PermId = '.$view_perm);
 		if (!defined('ADMIN')) {
 			$groups = explode(',',$this->Application->RecallVar('UserGroups'));
 			foreach ($groups as $group) {
 				$view_filters[] = 'FIND_IN_SET('.$group.', perm.acl) || ((NOT FIND_IN_SET('.$group.',perm.dacl)) AND perm.acl=\'\')';
 			}
 			$view_filter = implode(' OR ', $view_filters);
 			$object->addFilter('perm_filter2', $view_filter);
 		}
 		
 		if (!defined('ADMIN')) {
 			$object->addFilter('status_filter', $object->TableName.'.Status = 1');
 		}
 		
 		/*$list_type = $event->getEventParam('ListType');
 		switch($list_type)
 		{
 			case 'favorites':
 				$fav_table = $this->Application->getUnitOption('fav','TableName');
 				$user_id =& $this->Application->GetVar('u_id');
 				
 				$sql = 'SELECT DISTINCT f.ResourceId
 						FROM '.$fav_table.' f
 						LEFT JOIN '.$object->TableName.' p ON p.ResourceId = f.ResourceId
 						WHERE f.PortalUserId = '.$user_id;
 				$ids = $this->Conn->GetCol($sql);
 				if(!$ids) $ids = Array(-1);
 				$object->addFilter('category_filter', TABLE_PREFIX.'CategoryItems.PrimaryCat = 1');
 				$object->addFilter('favorites_filter', '%1$s.`ResourceId` IN ('.implode(',',$ids).')');
 				break;
 			case 'search':
 				$search_results_table = TABLE_PREFIX.'ses_'.$this->Application->GetVar('sid').'_'.TABLE_PREFIX.'Search';
 				$sql = '	SELECT DISTINCT ResourceId
 							FROM '.$search_results_table.'
 							WHERE ItemType=11';
 				$ids = $this->Conn->GetCol($sql);
 				if(!$ids) $ids = Array(-1);
 				$object->addFilter('search_filter', '%1$s.`ResourceId` IN ('.implode(',',$ids).')');
 				break;
 		}		*/
 	}
 }
 
 ?>
\ No newline at end of file

Property changes on: trunk/core/units/general/cat_event_handler.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.4
\ No newline at end of property
+1.5
\ No newline at end of property
Index: trunk/core/units/general/my_application.php
===================================================================
--- trunk/core/units/general/my_application.php	(revision 1582)
+++ trunk/core/units/general/my_application.php	(revision 1583)
@@ -1,46 +1,46 @@
-<?php
-
-	k4_include_once(MODULES_PATH.'/kernel/units/general/inp_db_event_handler.php');
-	
-	class MyApplication extends kApplication {
-	
-		function RegisterDefaultClasses()
-		{
-			parent::RegisterDefaultClasses();
-			
-			$this->registerClass('Inp1Parser',MODULES_PATH.'/kernel/units/general/inp1_parser.php','Inp1Parser');
-			
-			$this->registerClass('InpSession',MODULES_PATH.'/kernel/units/general/inp_ses_storage.php','Session');
-			$this->registerClass('InpSessionStorage',MODULES_PATH.'/kernel/units/general/inp_ses_storage.php','SessionStorage');
-			
-			$this->registerClass('kCatDBItem',MODULES_PATH.'/kernel/units/general/cat_dbitem.php');
-			$this->registerClass('kCatDBList',MODULES_PATH.'/kernel/units/general/cat_dblist.php');
-			$this->registerClass('kCatDBEventHandler',MODULES_PATH.'/kernel/units/general/cat_event_handler.php');
-			$this->registerClass('InpLoginEventHandler',MODULES_PATH.'/kernel/units/general/inp_login_event_handler.php','login_EventHandler');
-			$this->registerClass('InpDBEventHandler',MODULES_PATH.'/kernel/units/general/inp_db_event_handler.php','kDBEventHandler');
-			$this->registerClass('InpTempTablesHandler',MODULES_PATH.'/kernel/units/general/inp_temp_handler.php','kTempTablesHandler');
-			$this->registerClass('InpUnitConfigReader',MODULES_PATH.'/kernel/units/general/inp_unit_config_reader.php','kUnitConfigReader');
-			
-			$this->registerClass('InpCustomFieldsHelper',MODULES_PATH.'/kernel/units/general/custom_fields.php','InpCustomFieldsHelper');
-			$this->registerClass('kCountryStatesHelper',MODULES_PATH.'/kernel/units/general/country_states.php','CountryStatesHelper');
-		}
-								
-		/**
-		 * Checks if user is logged in, and creates
-		 * user object if so. User object can be recalled
-		 * later using "u" prefix. Also you may
-		 * get user id by getting "u_id" variable.
-		 *
-		 * @access private
-		 */
-		function ValidateLogin()
-		{			
-			$session =& $this->recallObject('Session');
-			$user_id = $session->GetField('PortalUserId');
-			if (!$user_id) $user_id = -2;
-			$this->SetVar('u_id', $user_id);
-			$this->StoreVar('user_id', $user_id);
-		}
-	}
-
+<?php
+
+	k4_include_once(MODULES_PATH.'/kernel/units/general/inp_db_event_handler.php');
+	
+	class MyApplication extends kApplication {
+	
+		function RegisterDefaultClasses()
+		{
+			parent::RegisterDefaultClasses();
+			
+			$this->registerClass('Inp1Parser',MODULES_PATH.'/kernel/units/general/inp1_parser.php','Inp1Parser');
+			
+			$this->registerClass('InpSession',MODULES_PATH.'/kernel/units/general/inp_ses_storage.php','Session');
+			$this->registerClass('InpSessionStorage',MODULES_PATH.'/kernel/units/general/inp_ses_storage.php','SessionStorage');
+			
+			$this->registerClass('kCatDBItem',MODULES_PATH.'/kernel/units/general/cat_dbitem.php');
+			$this->registerClass('kCatDBList',MODULES_PATH.'/kernel/units/general/cat_dblist.php');
+			$this->registerClass('kCatDBEventHandler',MODULES_PATH.'/kernel/units/general/cat_event_handler.php');
+			$this->registerClass('InpLoginEventHandler',MODULES_PATH.'/kernel/units/general/inp_login_event_handler.php','login_EventHandler');
+			$this->registerClass('InpDBEventHandler',MODULES_PATH.'/kernel/units/general/inp_db_event_handler.php','kDBEventHandler');
+			$this->registerClass('InpTempTablesHandler',MODULES_PATH.'/kernel/units/general/inp_temp_handler.php','kTempTablesHandler');
+			$this->registerClass('InpUnitConfigReader',MODULES_PATH.'/kernel/units/general/inp_unit_config_reader.php','kUnitConfigReader');
+			
+			$this->registerClass('InpCustomFieldsHelper',MODULES_PATH.'/kernel/units/general/custom_fields.php','InpCustomFieldsHelper');
+			$this->registerClass('kCountryStatesHelper',MODULES_PATH.'/kernel/units/general/country_states.php','CountryStatesHelper');
+		}
+								
+		/**
+		 * Checks if user is logged in, and creates
+		 * user object if so. User object can be recalled
+		 * later using "u" prefix. Also you may
+		 * get user id by getting "u_id" variable.
+		 *
+		 * @access private
+		 */
+		function ValidateLogin()
+		{			
+			$session =& $this->recallObject('Session');
+			$user_id = $session->GetField('PortalUserId');
+			if (!$user_id) $user_id = -2;
+			$this->SetVar('u_id', $user_id);
+			$this->StoreVar('user_id', $user_id);
+		}
+	}
+
 ?>
\ No newline at end of file

Property changes on: trunk/core/units/general/my_application.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.4
\ No newline at end of property
+1.5
\ No newline at end of property