Index: trunk/kernel/include/portalgroup.php =================================================================== diff -u -r1606 -r2082 --- trunk/kernel/include/portalgroup.php (.../portalgroup.php) (revision 1606) +++ trunk/kernel/include/portalgroup.php (.../portalgroup.php) (revision 2082) @@ -209,15 +209,28 @@ function parsetag($tag) { - global $var_list_update, $objConfig; - if(is_object($tag)) - { - $tagname = $tag->name; - } - else - $tagname = $tag; + global $var_list_update, $objConfig, $objSession; + $tagname = is_object($tag) ? $tag->name : $tag; + + $is_temp = strpos($this->SourceTable, $objSession->Get('SessionKey') ) !== false; + switch($tagname) { + case 'GroupName': + $db =& GetADODBConnection(); + $table = $is_temp ? $objSession->GetEditTable('PortalGroup') : GetTablePrefix().'PortalGroup'; + $sql = 'SELECT Name FROM '.$table.' WHERE GroupId = '.$this->Get('GroupId'); + return $db->GetOne($sql); + break; + + case 'membership_expires_date': + return $this->Get('MembershipExpires') <= 0 ? '' : LangDate( $this->Get('MembershipExpires') ); + break; + + case 'membership_expires_time': + return $this->Get('MembershipExpires') <= 0 ? '' : LangTime( $this->Get('MembershipExpires') ); + break; + case "group_id": return $this->Get("GroupId"); break; @@ -502,35 +515,49 @@ function CopyFromEditTable($idfield) { - global $objSession; - $GLOBALS['_CopyFromEditTable']=1; + global $objSession; + $GLOBALS['_CopyFromEditTable']=1; - $edit_table = $objSession->GetEditTable($this->SourceTable); - $sql = "SELECT * FROM $edit_table"; - $rs = $this->adodbConnection->Execute($sql); - - //echo $sql."
"; - - $clear_old = true; - while($rs && !$rs->EOF) - { - $data = $rs->fields; - - if ($clear_old) { - $sql = "DELETE FROM ".$this->SourceTable." WHERE $idfield = ".$data[$idfield]; - @$this->adodbConnection->Execute($sql); - $clear_old = false; - } - - $sql = "INSERT INTO ".$this->SourceTable." (PortalUserId, GroupId, PrimaryGroup) VALUES (".$data['PortalUserId'].", ".$data['GroupId'].", ".$data['PrimaryGroup'].")"; - @$this->adodbConnection->Execute($sql); - - $rs->MoveNext(); - } - - @$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table"); - unset($GLOBALS['_CopyFromEditTable']); - } + $edit_table = $objSession->GetEditTable($this->SourceTable); + $sql = "SELECT * FROM $edit_table"; + $rs = $this->adodbConnection->Execute($sql); + + //echo $sql."
"; + + $clear_old = true; + $insert_sql = 'INSERT INTO %s (PortalUserId,GroupId,MembershipExpires,PrimaryGroup) VALUES (%s,%s,%s,%s)'; + while($rs && !$rs->EOF) + { + $data = $rs->fields; + + if($clear_old) + { + $sql = "DELETE FROM ".$this->SourceTable." WHERE $idfield = ".$data[$idfield]; + @$this->adodbConnection->Execute($sql); + $clear_old = false; + } + + if(!$data['MembershipExpires']) $data['MembershipExpires'] = 'NULL'; + $sql = sprintf($insert_sql, $this->SourceTable, $data['PortalUserId'], $data['GroupId'], $data['MembershipExpires'], $data['PrimaryGroup'] ); + + @$this->adodbConnection->Execute($sql); + + $rs->MoveNext(); + } + + @$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table"); + unset($GLOBALS['_CopyFromEditTable']); + } + + function &Edit_UserGroup($group_id, $user_id, $membership_expires) + { + $ug =& $this->GetItemByField( Array('GroupId','PortalUserId'), Array($group_id,$user_id) ); + if($membership_expires == 0) $membership_expires = null; + + $ug->Set('MembershipExpires', $membership_expires); + $ug->Update(); + return $ug; + } } ?>