Index: trunk/kernel/include/item.php =================================================================== diff -u -r288 -r302 --- trunk/kernel/include/item.php (.../item.php) (revision 288) +++ trunk/kernel/include/item.php (.../item.php) (revision 302) @@ -774,6 +774,7 @@ } // check if not exists + $db =& $this->adodbConnection; $sql = sprintf('SELECT * FROM %s WHERE CategoryId = %s AND ItemResourceId = %s', $SourceTable, $CatId, $this->Get("ResourceId")); $rs = $db->Execute($sql); @@ -785,6 +786,7 @@ $this->adodbConnection->Execute($sql); } + $c = $objCatList->GetCategory($CatId); } } Index: trunk/kernel/include/parseditem.php =================================================================== diff -u -r295 -r302 --- trunk/kernel/include/parseditem.php (.../parseditem.php) (revision 295) +++ trunk/kernel/include/parseditem.php (.../parseditem.php) (revision 302) @@ -41,11 +41,11 @@ */ function ParseTimeStamp($d,$attribs=array()) { - if($attribs["_tz"]) + if( isset($attribs["_tz"]) ) { $d = GetLocalTime($d,$objSession->Get("tz")); } - $part = strtolower($attribs["_part"]); + $part = isset($attribs["_part"]) ? strtolower($attribs["_part"]) : ''; if(strlen($part)) { $ret = ExtractDatePart($part,$d); @@ -179,7 +179,7 @@ break; case "rating": - $style = $element->attributes["_displaymode"]; + $style = $element->GetAttributeByName("_displaymode"); if(!strlen($style)) $style = "numerical"; switch($style) @@ -212,7 +212,7 @@ if(method_exists($this,"ReviewCount")) { - if($element->attributes["_today"]) + if($element->GetAttributeByName("_today")) $today = TRUE; $ret = $this->ReviewCount($today); } @@ -271,7 +271,7 @@ { if($this->IsHotItem()) { - $ret = $element->attributes["_label"]; + $ret = $element->GetAttributeByName("_label"); if(!strlen($ret)) $ret = "lu_hot"; $ret = language($ret); @@ -294,7 +294,7 @@ case "admin_icon": if(method_exists($this,"StatusIcon")) { - if($element->attributes["fulltag"]) + if($element->GetAttributeByName("fulltag")) { $ret = "StatusIcon()."\">"; } @@ -1160,7 +1160,7 @@ function CopyFromEditTable($idfield = null) { global $objSession; - + echo "INM
"; $dropRelTableFlag = false; if($idfield == null) $idfield = $this->GetIDField(); $edit_table = $objSession->GetEditTable($this->SourceTable); @@ -1229,17 +1229,18 @@ $c->Set("OrgId",0); } } - + if(method_exists($c,"CategoryMemberList")) { $cats = $c->CategoryMemberList($objSession->GetEditTable("CategoryItems")); - //echo "CATS: [$cats]
"; + $ci_table = $objSession->GetEditTable('CategoryItems'); + $primary_cat = $c->GetPrimaryCategory($ci_table); $c->Update(); - UpdateCategoryItems($c,$cats); + UpdateCategoryItems($c,$cats,$primary_cat); } else $c->Update(); - + unset($c); unset($r); @@ -1252,7 +1253,7 @@ $objRelGlobal->PurgeEditTable(); } - @$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table"); + if($edit_table) @$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table"); @$this->adodbConnection->Execute("DROP TABLE IF EXISTS ".$objSession->GetEditTable("CategoryItems")); } @@ -1769,7 +1770,7 @@ return $ret; } -function UpdateCategoryItems($item,$NewCatList) +function UpdateCategoryItems($item,$NewCatList,$PrimaryCatId = false) { global $objCatList; @@ -1809,6 +1810,7 @@ $cat = $del_list[$i]; $item->RemoveFromCategory($cat); } + if($PrimaryCatId !== false) $item->SetPrimaryCategory($PrimaryCatId); } class clsCatItemList extends clsItemList Index: trunk/globals.php =================================================================== diff -u -r289 -r302 --- trunk/globals.php (.../globals.php) (revision 289) +++ trunk/globals.php (.../globals.php) (revision 302) @@ -884,23 +884,19 @@ { global $objCountCache, $objItemTypes; - if(is_numeric($ItemName)) - { - $item = $objItemTypes->GetItem($ItemName); - } - else - $item = $objItemTypes->GetTypeByName($ItemName); - if(is_object($item)) - { - $ItemType = $item->Get("ItemType"); + if(is_numeric($ItemTypeName)) + $item = $objItemTypes->GetItem($ItemTypeName); + else + $item = $objItemTypes->GetTypeByName($ItemTypeName); + + if(is_object($item)) + { + $ItemType = $item->Get("ItemType"); - $sql = "DELETE FROM ".$objCountCache->SourceTable." WHERE ItemType=$ItemType"; - if(is_numeric($ListType)) - { - $sql .= " AND ListType=$ListType"; - } - $objCountCache->adodbConnection->Execute($sql); - } + $sql = "DELETE FROM ".$objCountCache->SourceTable." WHERE ItemType=$ItemType"; + if( is_numeric($ListType) ) $sql .= " AND ListType=$ListType"; + $objCountCache->adodbConnection->Execute($sql); + } } function UpdateModifiedCategoryCount($ItemTypeName,$CatId=NULL,$Modifier=0,$ExtraId=NULL) @@ -1362,4 +1358,41 @@ } +// functions for dealign with enviroment variable construction +function GenerateModuleEnv($prefix, $var_list) +{ + // globalize module varible arrays + $main =& $GLOBALS[$prefix.'_var_list']; + $update =& $GLOBALS[$prefix.'_var_list_update']; + + //echo "VAR: [$main]; VAR_UPDATE: [$update]
"; + + // enshure that we have no empty values in enviroment variable + foreach($update as $vl_key => $vl_value) + if(!$vl_value) $update[$vl_key] = '0'; // unset($update[$vl_key]); + + // if update var count is zero, then do nothing + if(count($update) == 0) return ''; + + foreach($main as $vl_key => $vl_value) + if(!$vl_value) $main[$vl_key] = '0'; // unset($main[$vl_key]); + + $ret = Array(); + foreach($var_list as $var_name) + $ret[] = GetEnvVar($prefix, $var_name); + + return ':'.$prefix.implode('-',$ret); +} + +function GetEnvVar($prefix, $name) +{ + // get variable from template variable's list + // (used in module parsers to build env string) + $main =& $GLOBALS[$prefix.'_var_list']; + $update =& $GLOBALS[$prefix.'_var_list_update']; + return isset($update[$name]) ? $update[$name] : ( isset($main[$name]) ? $main[$name] : ''); +} + + + ?> Index: trunk/kernel/parser.php =================================================================== diff -u -r289 -r302 --- trunk/kernel/parser.php (.../parser.php) (revision 289) +++ trunk/kernel/parser.php (.../parser.php) (revision 302) @@ -30,21 +30,11 @@ function m_BuildEnv() { - global $m_var_list, $m_var_list_update, $objLanguages; - - $str = ":m"; - - if( is_array($m_var_list_update) ) - foreach($m_var_list_update as $m_var => $m_value) - if($m_value == '0') $m_var_list_update[$m_var] = ''; - - $str .= m_GetVar('cat'); - if( isset($m_var_list_update['cat']) ) unset($m_var_list_update['cat']); - $str .= '-'.m_GetVar('p'); - $str .= '-'.m_GetVar('lang'); - $str .= '-'.m_GetVar('theme'); - - return $str; + global $m_var_list, $m_var_list_update; + $module_vars = Array('cat','p','lang','theme'); + $ret = GenerateModuleEnv('m', $module_vars); + if( isset($GLOBALS['m_var_list_update']['cat']) ) unset($GLOBALS['m_var_list_update']['cat']); + return $ret; } function m_GetVar($name) Index: trunk/admin/include/elements.php =================================================================== diff -u -r295 -r302 --- trunk/admin/include/elements.php (.../elements.php) (revision 295) +++ trunk/admin/include/elements.php (.../elements.php) (revision 302) @@ -136,7 +136,7 @@ load_module_javascript($sectionname, $skip_modules); if(is_object($toolbar)) print $toolbar->GetInitScript(); - print "