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;
+ }
}
?>