Index: trunk/kernel/action.php =================================================================== --- trunk/kernel/action.php (revision 268) +++ trunk/kernel/action.php (revision 269) @@ -1,2219 +1,2222 @@ <?php $ro_perm = $objSession->HasSystemPermission("SYSTEM_ACCESS.READONLY"); if( defined('DEBUG_ACTIONS') && (DEBUG_ACTIONS & KERNEL_ACTIONS) == KERNEL_ACTIONS ) { if($Action) echo "Kernel Action [<b>$Action</b>]<br>\n"; } if( defined('DEBUG_ACTIONS') && (DEBUG_ACTIONS & SHOW_REQUEST) == SHOW_REQUEST ) { // don't show debug output in tree & header of admin & while logging in $script = basename($_SERVER['PHP_SELF']); $skip_debug = Array('index.php','tree.php','head.php','credits.php'); if( !in_array($script, $skip_debug) ) { echo "ScriptName: <b>$script</b> (<b>".dirname($_SERVER['PHP_SELF'])."</b>)<br><br>"; + $div_height = (count($_REQUEST)+1)*26; + if($div_height > 300) $div_height = 300; + echo '<div class="debug_layer" style="height: '.$div_height.'px;">'; echo '<table border="0" cellspacing="0" cellpadding="4" class="debug_table">'; echo '<thead style="font-weight: bold;"><td>Src</td><td>Name</td><td>Value</td></thead>'; foreach($_REQUEST as $key => $value) { if( !is_array($value) && trim($value) == '' ) $value = ' '; $src = isset($_GET[$key]) ? 'GE' : (isset($_POST[$key]) ? 'PO' : (isset($_COOKIE[$key]) ? 'CO' : '?') ); echo '<tr><td>'.$src.'</td><td>'.$key.'</td><td>'.print_r($value, true).'</td></tr>'; } - echo '</table>'; + echo '</table></div>'; } unset($script, $skip_debug); } switch($Action) { case "m_add_user": $dupe_user = ''; $user_pending = (int)$_POST["user_pending"]; $user_enabled = (int)$_POST["user_enabled"]; $CreatedOn = DateTimestamp($_POST["user_date"],GetDateFormat()); $dob = DateTimestamp($_POST["user_dob"],GetDateFormat()); $objEditItems = new clsUserManager(); $objEditItems->SourceTable = $objSession->GetEditTable("PortalUser"); if(strlen($_POST["user_login"])) $id = $objUsers->GetUserId($_POST["user_login"]); else $dob = 0; if($id) { $lvErrorString = language('la_error_duplicate_username'); $dupe_user = $_POST["user_login"]; $_POST["user_login"] = ''; } $password = md5($_POST["password"]); $u = $objEditItems->Add_User($_POST["user_login"], $password, $_POST["user_email"], $CreatedOn, $_POST["user_firstname"], $_POST["user_lastname"], $_POST["status"], $_POST["user_phone"], $_POST["user_street"], $_POST["user_city"], $_POST["user_state"], $_POST["user_zip"], $_POST["user_country"], $dob); $objCustomEdit = new clsCustomDataList(); //$objSession->GetEditTable("CustomMetaData")); $objCustomEdit->SetTable('edit'); $objCustomEdit->LoadResource($u->Get("ResourceId")); $CustomFields = new clsCustomFieldList(6); $DataChanged = FALSE; foreach($_POST as $key=>$value) { if(substr($key,0,1)=="_") { $field = substr($key,1); $cvalue = $CustomFields->GetItemByField("FieldName",$field,FALSE); if(is_object($cvalue)) { $objCustomEdit->SetFieldValue($cvalue->Get("CustomFieldId"),$u->Get("ResourceId"),$value); $DataChanged = TRUE; } } } if($DataChanged) $objCustomEdit->SaveData(); $objCustomEdit->SetTable('live'); break; case "m_edit_user": $CreatedOn = DateTimestamp($_POST["user_date"],GetDateFormat()); $dob = DateTimestamp($_POST["user_dob"],GetDateFormat()); $objEditItems = new clsUserManager(); $objEditItems->SourceTable = $objSession->GetEditTable("PortalUser"); $user_pending = (int)$_POST["user_pending"]; $user_enabled = (int)$_POST["user_enabled"]; $UserId=(int)$_POST["user_id"]; //echo $UserId."<br>\n"; if(!strlen($_POST["user_login"])) $dob = 0; if(strlen($_POST["password"])) { $password = md5($_POST["password"]); } else $password = ""; $u = $objEditItems->Edit_User($UserId, $_POST["user_login"], $password, $_POST["user_email"], $CreatedOn, $_POST["user_firstname"], $_POST["user_lastname"], $_POST["status"], $_POST["user_phone"], $_POST["user_street"], $_POST["user_city"], $_POST["user_state"], $_POST["user_zip"], $_POST["user_country"], $dob); $objCustomEdit = new clsCustomDataList(); //$objSession->GetEditTable("CustomMetaData")); $objCustomEdit->SetTable('edit'); $DataChanged = false; $objCustomEdit->LoadResource($u->Get("ResourceId")); $CustomFields = new clsCustomFieldList(6); foreach($_POST as $key=>$value) { if(substr($key,0,1)=="_") { $field = substr($key,1); $cvalue = $CustomFields->GetItemByField("FieldName",$field,FALSE); if(is_object($cvalue)) { //echo "Saving CF: (".$cvalue->Get("CustomFieldId")." ; ".$u->Get("ResourceId")." ; $value)<br>"; $objCustomEdit->SetFieldValue($cvalue->Get("CustomFieldId"),$u->Get("ResourceId"),$value); $DataChanged = TRUE; } } } if($DataChanged) $objCustomEdit->SaveData(); $objCustomEdit->SetTable('live'); break; case "m_user_primarygroup": //print_pre($_REQUEST); if($ro_perm) break; $users = explode(',', $_POST["userlist"]); $GroupResourceId = $_POST['grouplist']; $g = $objGroups->GetItemByField("ResourceId", $GroupResourceId); $GroupId = $g->UniqueId(); if( is_array($users) ) foreach($users as $user_id) { $u = $objUsers->GetItemByField("ResourceId", $user_id); $g->AddUser($u->Get("PortalUserId"), 1); } break; case "m_edit_group": $objEditItems = new clsGroupList(); $objEditItems->SourceTable = $objSession->GetEditTable("PortalGroup"); $objEditItems->Edit_Group($_POST["group_id"], $_POST["group_name"],$_POST["group_comments"]); break; case "m_add_group": $objEditItems = new clsGroupList(); $objEditItems->SourceTable = $objSession->GetEditTable("PortalGroup"); $objEditItems->Add_Group($_POST["group_name"], $_POST["group_comments"],0); break; case "m_group_sysperm": if($_POST["GroupEditStatus"]==0) { $objSession->ResetSysPermCache(); $GroupId = $_POST["GroupId"]; if($GroupId) { $objEditItems = new clsGroupList(); $objEditItems->SourceTable = $objSession->GetEditTable("PortalGroup"); $g = $objEditItems->GetItemByField("ResourceId",$GroupId); if(is_object($g)) { $PermList = explode(",",$_POST["PermList"]); for($i=0;$i<count($PermList);$i++) { if(@in_array($PermList[$i],$_POST["inherit"])) { $value = -1; } else { $value = 0; if(@in_array($PermList[$i],$_POST["permvalue"])) $value = 1; } $g->SetSystemPermission($PermList[$i],$value); } } } } break; case "m_user_sysperm": if($ro_perm) break; if($_POST["UserEditStatus"]==0) { $UserId = $_POST["ItemId"]; if($UserId) { $objEditItems = new clsUserManager(); $objEditItems->SourceTable = $objSession->GetEditTable("PortalUser"); $u = $objEditItems->GetItemByField("ResourceId",$UserId); unset($g); if(is_object($u)) { $objSession->ResetSysPermCache(); $g = $u->GetPersonalGroup(FALSE); $PermList = explode(",",$_POST["PermList"]); for($i=0;$i<count($PermList);$i++) { if(!@in_array($PermList[$i],$_POST["inherit"])) { if(!is_object($g)) $g = $u->GetPersonalGroup(TRUE); $value = 0; if(is_array($_POST["permvalue"])) { if(in_array($PermList[$i],$_POST["permvalue"])) $value =1; $g->SetSystemPermission($PermList[$i],$value); } else $g->SetSystemPermission($PermList[$i],-1); } else { if(is_object($g)) $g->SetSystemPermission($PermList[$i],-1); } } } } } break; case "m_approve_user": if($ro_perm) break; foreach($_POST["itemlist"] as $userid) { $user = $objUsers->GetItemByField("ResourceId",$userid); $user->Approve(); } $objUsers->Clear(); break; case "m_deny_user": if($ro_perm) break; foreach($_POST["itemlist"] as $userid) { $user = $objUsers->GetItemByField("ResourceId",$userid); $user->Deny(); } $objUsers->Clear(); break; case "m_delete_user": if($ro_perm) break; foreach($_POST["itemlist"] as $userid) $objUsers->Delete_User($userid); break; case "m_delete_group": if($ro_perm) break; foreach($_POST["itemlist"] as $groupid) { $objGroups->Delete_Group($groupid); } break; case "m_user_assign": $useridlist = implode("-", $userlist); $objSession->SetUserStatus($useridlist, "g_usergroup_status"); $g_usergroup_status = $useridlist; break; case "m_group_assign": foreach($grouplist as $group) $objGroups->Add_Users_To_Group($group); break; case "m_remove_group": $adodbConnection = GetAdodbConnection(); $adodbConnection->Execute("DELETE FROM UserGroup where UserId='$UserId' AND GroupId='$GroupId'"); break; case "m_SetVariable": $objSession->SetPersistantVariable($_POST["fieldname"], $_POST["varvalue"]); break; case "m_SetSessionVariable": $objSession->SetVariable($_POST["fieldname"], $_POST["varvalue"]); //echo "Setting $fieldname to $varvalue<br>\n"; if($_POST["fieldname"]=="SearchType") $objSession->SetVariable("SearchWord",""); break; case "m_edit_permissions": if($ro_perm) break; if($_POST["CatEditStatus"] != -1) { $objSession->SetVariable('PermCache_UpdateRequired', 1); $GroupId = $_POST["GroupId"]; $CatId = $_POST["CategoryId"]; $Module = $_POST["Module"]; $ado = GetADODBConnection(); $sql = "SELECT * FROM ".GetTablePrefix()."PermissionConfig WHERE ModuleId='$Module'"; $rs = $ado->Execute($sql); $PermNames = array(); while($rs && !$rs->EOF) { $data = $rs->fields; $PermNames[] = $data["PermissionName"]; $rs->MoveNext(); } $inherit = array(); if(is_array($_POST["inherit"])) { foreach($_POST["inherit"] as $perm) { $inherit[$perm] = 1; } } $access = array(); if(is_array($_POST["permvalue"])) { foreach($_POST["permvalue"] as $perm) { $access[$perm] = 1; } } $objPermList = new clsPermList($CatId,$GroupId); $objPermList->LoadCategory($CatId); for($i=0;$i<count($PermNames);$i++) { if(!array_key_exists($PermNames[$i],$inherit)) { $PermValue = (int)$access[$PermNames[$i]]; $Perm = $objPermList->GetPermByName($PermNames[$i]); if($Perm) { $Id = $Perm->Get("PermissionId"); //echo "Editing $Id<br>\n"; $objPermList->Edit_Permission($Id,$CatId,$GroupId,$PermNames[$i],$PermValue,0); } else { //echo "Adding ".$PermNames[$i]; $objPermList->Add_Permission($CatId,$GroupId,$PermNames[$i],$PermValue,0); } } else { $Perm = $objPermList->GetPermByName($PermNames[$i]); if($Perm) { $Id = $Perm->Get("PermissionId"); $objPermList->Delete_Permission($Id); } } } //$c = $objCatList->GetItem($CatId); //$glist = $objGroups->GetAllGroupList(); //$ViewList = $objPermList->GetGroupPermList($c,"CATEGORY.VIEW",$glist ); //$c->SetViewPerms("CATEGORY.VIEW",$ViewList,$glist); //$c->Update(); } break; case "m_perm_delete_group": $ado = GetADODBConnection(); $CatId = $_POST["CategoryId"]; foreach($_POST["itemlist"] as $groupid) { $g = $objGroups->GetItemByField("ResourceId",$groupid); if(is_object($g)) { $sql = "DELETE FROM ".GetTablePrefix()."Permissions WHERE CatId=$CatId AND GroupId=".$g->Get("GroupId"); if($objSession->HasSystemPermission("DEBUG.LIST")) echo $sql."<br>\n"; $ado->Execute($sql); } } break; case "m_user_addto_group": if($ro_perm) break; $user = $_POST["UserId"]; if(is_numeric($user)) { if(strlen($_POST["grouplist"])) { $groups = explode(",",$_POST["grouplist"]); if(is_array($groups)) { for($i=0; $i<count($groups);$i++) { $g = $objGroups->GetItemByField("ResourceId",$groups[$i]); $g->AddUser($user); } } else { $g = $objGroups->GetItem($groups); $g->AddUser($user); } } } break; case "m_group_add_user": if($ro_perm) break; $group = $_POST["GroupId"]; $EditGroups = new clsGroupList(); $EditGroups->SourceTable = $objSession->GetEditTable($objGroups->SourceTable); $g = $EditGroups->GetItem($group); // echo "Group: $group <br>\n"; if(is_numeric($group)) { $users = explode(",",$_POST["userlist"]); foreach($users as $userid) { $u = $objUsers->GetItemByField("ResourceId",$userid); $g->AddUser($u->Get("PortalUserId")); } } break; case "m_group_removeuser": if($ro_perm) break; $group = $_POST["GroupId"]; $g = $objGroups->GetItem($group); if($group>0) { foreach($_POST["itemlist"] as $user_id) { $u = $objUsers->GetItemByField("ResourceId",$user_id); $g->DeleteUser($u->Get("PortalUserId")); } } break; case "m_user_removegroup": if($ro_perm) break; $user = $_POST["UserId"]; if($user>0) { foreach($_POST["itemlist"] as $groupid) { $g = $objGroups->GetItem($groupid); $g->DeleteUser($user); } } break; case "m_sendmail": $idlist = explode(",",$_POST["idlist"]); $html = (int)$_POST["html_enable"]; $body = inp_escape($_POST["email_body"],$html); $subject = inp_escape($_POST["email_body"],$html); $Email = new clsEmailMessage(); $Email->Set("Subject",$subject); $Email->Set("Template",$body); if($html) $Email->Set("MessageType","HTML"); if(count($idlist)>0) { switch($_POST["IdType"]) { case "group": foreach($idlist as $id) $Email->SendToGroup($id); break; case "user": foreach($idlist as $id) $Email->SendToUser($id); break; }/*switch*/ } break; case "m_item_recount": RunDown($m_var_list["cat"],"UpdateCacheCounts"); break; case "m_cat_delete": if($objSession->HasCatPermission("CATEGORY.DELETE",$objCatList->CurrentCategoryID())) { if(isset($_POST["catlist"])) { if(is_array($_POST["catlist"])) foreach($_POST["catlist"] as $catid) { $objCatList->Delete_Category($catid); } } } break; case "m_cat_cut": if(isset($_POST["catlist"])) { if($objSession->HasCatPermission("CATEGORY.DELETE",$catid)) { $objCatList->CopyToClipboard("CUT","CategoryId",$_POST["catlist"]); } else $objCatList->CopyToClipboard("COPY","CategoryId",$_POST["catlist"]); } break; case "m_cat_copy": if(isset($_POST["catlist"])) { $objCatList->CopyToClipboard("COPY","CategoryId",$_POST["catlist"]); } break; case "m_paste": if($objCatList->ItemsOnClipboard()>0) { /* category's paste function populates a sparse array where array[old_id]=new_id */ $PastedCatIds = array(); $objCatList->PasteFromClipboard($objCatList->CurrentCategoryID(),"Name"); } else { $clip = $objSession->GetVariable("ClipBoard"); if(strlen($clip)) { $ClipBoard = ParseClipboard($clip); $Action= strtolower($ClipBoard["table"])."_paste"; } } break; case "m_cat_move_up": if (isset($_POST["catlist"])) { foreach($_POST["catlist"] as $catid) { $cat =& $objCatList->GetCategory($catid); $cat->MoveUp(); } } break; case "m_cat_move_down": if (isset($_POST["catlist"])) { $catlist=array_reverse($_POST["catlist"]); foreach($catlist as $catid) { $cat =& $objCatList->GetCategory($catid); $cat->MoveDown(); } } break; case "m_cat_approve": if (isset($_POST["catlist"])) { foreach($_POST["catlist"] as $catid) { $cat =& $objCatList->GetCategory($catid); $cat->Approve(); } } break; case "m_cat_decline": if (isset($_POST["catlist"])) { foreach($_POST["catlist"] as $catid) { $cat =& $objCatList->GetCategory($catid); // $cat->Deny(); RunDown($catid,"Deny"); } } break; case "m_rel_delete": $adodbConnection= GetADODBConnection(); $table = $objSession->GetEditTable("Relationship"); if(isset($_POST["itemlist"])) { if(is_array($_POST["itemlist"])) { foreach($_POST["itemlist"] as $id) { $sql = "DELETE FROM ".$table." WHERE RelationshipId=".$id; $adodbConnection->Execute($sql); if($objSession->HasSystemPermission("DEBUG.LIST")) echo $sql."<br>\n"; } } else { $sql = "DELETE FROM ".$table." WHERE RelationshipId=".$_POST["itemlist"]; $adodbConnection->Execute($sql); if($objSession->HasSystemPermission("DEBUG.LIST")) echo $sql."<br>\n"; } } break; case "m_add_relation": if($_POST["CatEditStatus"]==0) { $RelList = new clsRelationshipList(); $RelList->SourceTable = $objSession->GetEditTable("Relationship"); //$r = $RelList->Add($_POST["SourceId"],$_POST["SourceType"],$_POST["TargetId"],$_POST["TargetType"], // 0,(int)$_POST["Enabled"],$_POST["RelType"], $Rel); $ado = GetADODBConnection(); $rs = $ado->Execute("SELECT MIN(RelationshipId) as MinValue FROM ".$RelList->SourceTable); $NewId = $rs->fields["MinValue"]-1; $r = $RelList->Add($_POST["SourceId"],$_POST["SourceType"],$_POST["TargetId"],$_POST["TargetType"], 0,(int)$_POST["Enabled"],$_POST["RelType"], $NewId); $sql = "UPDATE ".$RelList->SourceTable." SET RelationshipId=".$NewId." WHERE RelationshipId=".$r->Get("RelationshipId"); if($objSession->HasSystemPermission("DEBUG.LIST")) echo $sql."<br>\n"; $ado->Execute($sql); } break; case "m_edit_relation": if($_POST["CatEditStatus"]==0) { $RelList = new clsRelationshipList(); $RelList->SourceTable = $objSession->GetEditTable("Relationship"); $r = $RelList->GetItem($_POST["RelationshipId"]); if(is_object($r)) { $r->Set("Enabled",(int)$_POST["Enabled"]); $r->Set("Type",(int)$_POST["RelType"]); $r->Set("Priority",(int)$_POST["priority"]); $r->Update(); } } break; case "m_rel_move_up": $objRelList = new clsRelationshipList(); $objRelList->SourceTable = $objSession->GetEditTable("Relationship"); if (isset($_POST["itemlist"])) { foreach($_POST["itemlist"] as $id) { $r = $objRelList->GetItem($id); $r->MoveUp($_POST["SourceId"]); } } break; case "m_rel_move_down": $objRelList = new clsRelationshipList(); $objRelList->SourceTable = $objSession->GetEditTable("Relationship"); if (isset($_POST["itemlist"])) { $itemlist=array_reverse($_POST["itemlist"]); foreach($itemlist as $id) { $r = $objRelList->GetItem($id); $r->MoveDown($_POST["SourceId"]); } } break; case "m_add_category": if(ValidDate($_POST["cat_date"],GetDateFormat())) { $CreatedOn = DateTimestamp($_POST["cat_date"],GetDateFormat()); } else $CreatedOn = time(); $html = (int)$_POST["html_enable"]; $cat_pick = $_POST["cat_pick"]; $Status = (int)$_POST["status"]; $Hot=(int)$_POST["itemhot"]; $Pop = (int)$_POST["itempop"]; $New = (int)$_POST["itemnew"]; $objEditItems = new clsCatList(); $objEditItems->SourceTable = $objSession->GetEditTable("Category"); $cat = $objEditItems->Add($_POST["ParentId"], $_POST["cat_name"], inp_escape($_POST["cat_desc"],$html), $CreatedOn, $cat_pick, $Status, $Hot, $New, $Pop, $_POST["Priority"], $_POST["meta_keywords"],$_POST["meta_desc"]); $objCustomEdit = new clsCustomDataList($objSession->GetEditTable("CustomMetaData")); $objCustomEdit->LoadResource($cat->Get("ResourceId")); $CustomFields = new clsCustomFieldList(1); $DataChanged = FALSE; foreach($_POST as $key=>$value) { if(substr($key,0,1)=="_") { $field = substr($key,1); $cvalue = $CustomFields->GetItemByField("FieldName",$field,FALSE); if(is_object($cvalue)) { $objCustomEdit->SetFieldValue($cvalue->Get("CustomFieldId"),$cat->Get("ResourceId"),$value); $DataChanged = TRUE; } } } if($DataChanged) $objCustomEdit->SaveData(); break; case "m_edit_category": $CreatedOn = DateTimestamp($_POST["cat_date"],GetDateFormat()); $cat_pick = $_POST["cat_pick"]; $Status = (int)$_POST["status"]; $Hot=(int)$_POST["itemhot"]; $Pop = (int)$_POST["itempop"]; $New = (int)$_POST["itemnew"]; $html = (int)$_POST["html_enable"]; $objEditItems = new clsCatList(); $objEditItems->SourceTable = $objSession->GetEditTable("Category"); // check if name of cat isn't changed: begin $original_cats = new clsCatList(); $original_cat = $original_cats->GetItemByField('CategoryId', $_POST['CategoryId']); if( $original_cat->Get('Name') != $_POST['cat_name'] ) $objSession->SetVariable('PermCache_UpdateRequired', 1); unset($original_cat, $original_cats); // check if name of cat isn't changed: end $cat = $objEditItems->Edit_Category($_POST["CategoryId"],inp_escape($_POST["cat_name"],$html), inp_escape($_POST["cat_desc"],$html), $CreatedOn, $cat_pick, $Status, $Hot, $New, $Pop, $_POST["Priority"], $_POST["meta_keywords"], $_POST["meta_desc"]); $objCustomEdit = new clsCustomDataList($objSession->GetEditTable("CustomMetaData")); $objCustomEdit->LoadResource($cat->Get("ResourceId")); $CustomFields = new clsCustomFieldList(1); $DataChanged = FALSE; foreach($_POST as $key=>$value) { if(substr($key,0,1)=="_") { $field = substr($key,1); $cvalue = $CustomFields->GetItemByField("FieldName",$field,FALSE); if(is_object($cvalue)) { $objCustomEdit->SetFieldValue($cvalue->Get("CustomFieldId"),$cat->Get("ResourceId"),$value); $DataChanged = TRUE; } } } if($DataChanged) $objCustomEdit->SaveData(); break; case "m_edit_custom_data": $id = $_POST["ItemId"]; $objEditData = new clsCustomDataList(); //$objSession->GetEditTable("CustomMetaData")); $objEditData->SetTable('edit'); $ado = GetADODBConnection(); if($id && is_array($_POST["CustomData"])) { foreach($_POST["CustomData"] as $FieldId => $Value) { $sql = "SELECT count(*) as reccount FROM ".$objEditData->SourceTable." WHERE CustomFieldId=$FieldId AND ResourceId=".$_POST["ItemId"]; $rs = $ado->Execute($sql); $intable = $rs->fields["reccount"]; if(!$intable) { $sql = "INSERT INTO ".$objEditData->SourceTable." (ResourceId,CustomFieldId,Value) VALUES ('".$id."','$FieldId','$Value')"; $ado->Execute($sql); //echo $sql."<br>\n"; } else { $sql = "UPDATE ".$objEditData->SourceTable." SET Value='".$Value."' WHERE CustomFieldId=$FieldId AND ResourceId=".$_POST["ItemId"]; $ado->Execute($sql); //echo $sql."<br>\n"; } } } $objEditData->SetTable('live'); break; case "m_customfield_edit": if($ro_perm) break; $DataType = $_POST["DataType"]; $FieldId = $_POST["CustomFieldId"]; $FieldName = $_POST["fieldname"]; //$FieldLabel = $_POST["fieldlabel"]; if(strlen($FieldName)) { $objCustomFields = new clsCustomFieldList($DataType); $objCustomFields->EditField($FieldId,$DataType,$FieldName,"",(int)$_POST["generaltab"], $_POST["heading"],$_POST["fieldprompt"],$_POST["input_type"], $_POST["valuelist"]); } unset($objCustomFields); break; case "m_customfield_add": if($ro_perm) break; $DataType = $_POST["DataType"]; $FieldName = $_POST["fieldname"]; //$FieldLabel = $_POST["fieldlabel"]; if(strlen($FieldName)) { $objCustomFields = new clsCustomFieldList($DataType); $objCustomFields->AddField($DataType,$FieldName,"",(int)$_POST["generaltab"], $_POST["heading"],$_POST["fieldprompt"],$_POST["input_type"], $_POST["valuelist"]); unset($objCustomFields); } break; case "m_customfield_delete": if($ro_perm) break; $DataType = $_POST["DataType"]; $objCustomFields = new clsCustomFieldList($DataType); foreach($_POST["itemlist"] as $f) { $objCustomFields->DeleteField($f); //$c = $objCustomFields->GetItem($f); //$c->Delete(); } unset($objCustomFields); break; case "m_SearchConfig_Edit": if($ro_perm) break; $SimpleValues = $_POST["simple"]; $AdvValues = $_POST["advanced"]; $module = $_POST["module"]; $priority = $_POST["pri"]; //phpinfo(INFO_VARIABLES); $objSearchConfig = new clsSearchConfigList($module); foreach($objSearchConfig->Items as $i) { $id = $i->Get("SearchConfigId"); $objSearchConfig->EditFieldSettings($id,(int)$SimpleValues[$id],(int)$AdvValues[$id],$priority[$id]); } $objSearchConfig->Clear(); /* save relevence settings */ $vals = $_POST["req_increase"]; foreach($vals as $var=>$value) { $cfg = "SearchRel_Increase_".$var; $objConfig->Set($cfg,$value); } $vals = $_POST["rel_keyword"]; foreach($vals as $var=>$value) { $cfg = "SearchRel_Keyword_".$var; $objConfig->Set($cfg,$value); } $vals = $_POST["rel_pop"]; foreach($vals as $var=>$value) { $cfg = "SearchRel_Pop_".$var; $objConfig->Set($cfg,$value); } $vals = $_POST["rel_rating"]; foreach($vals as $var=>$value) { $cfg = "SearchRel_Rating_".$var; $objConfig->Set($cfg,$value); } break; case "m_keyword_reset": if($ro_perm) break; $objSearchList = new clsSearchLogList(); foreach($_POST["itemlist"] as $k) { $c = $objSearchList->GetItem($k); $c->Delete(); } break; case "m_review_add": $post_info = GetSubmitVariable($_POST, 'EditStatus'); if($post_info['variable'] > -1) { $objReviews = new clsItemReviewList(); $objReviews->SourceTable = $objSession->GetEditTable("ItemReview"); $Pending = (int)$_POST["review_pending"]; $Enabled = (int)$_POST["review_enabled"]; $Status = (int)$_POST["status"]; $CreatedOn = DateTimestamp($_POST["review_date"],GetDateFormat()); $CreatedOn += SecondsSinceMidnight($_POST["review_time"]); $html = (int)$_POST["html_enable"]; $ReviewText = inp_escape($_POST["review_body"],1); $CreatedById = 0; if(strlen($_POST["createdby"])>0) { if(strtolower($_POST["createdby"])=="root") { $CreatedById = -1; } else { $u = $objUsers->GetItemByField("Login",$_POST["createdby"]); if(is_object($u)) { $CreatedById = $u->Get("PortalUserId"); if($CreatedById<1) { $CreatedById = $objSession->Get("PortalUserId"); } } else $CreatedById = $objSession->Get("PortalUserId"); } } else $CreatedById = $objSession->Get("PortalUserId"); $r = $objReviews->AddReview($CreatedOn,$ReviewText,$Status, $IPAddress, (int)$_POST["review_priority"], $_POST["ItemId"],$_POST["ItemType"], $CreatedById,$html, $post_info['Module']); $ado = GetADODBConnection(); $rs = $ado->Execute("SELECT MIN(ReviewId) as MinValue FROM ".$objReviews->SourceTable); $NewId = $rs->fields["MinValue"]-1; $sql = "UPDATE ".$objReviews->SourceTable." SET ReviewId=".$NewId." WHERE ReviewId=".$r->Get("ReviewId"); if($objSession->HasSystemPermission("DEBUG.LIST")) echo $sql."<br>\n"; $ado->Execute($sql); } break; case "m_review_edit": $post_info = GetSubmitVariable($_POST, 'EditStatus'); if($post_info['variable'] > -1) { $objReviews = new clsItemReviewList(); $objReviews->SourceTable = $objSession->GetEditTable("ItemReview"); $Status = (int)$_POST["status"]; $CreatedOn = DateTimestamp($_POST["review_date"],GetDateFormat()); $CreatedOn += SecondsSinceMidnight($_POST["review_time"]); $html = (int)$_POST["html_enable"]; $ReviewText = inp_escape($_POST["review_body"],1); $ReviewId = $_POST["ReviewId"]; $CreatedById = 0; if(strlen($_POST["createdby"])>0) { if(strtolower($_POST["createdby"])=="root") { $CreatedById = -1; } else { $u = $objUsers->GetItemByField("Login",$_POST["createdby"]); if(is_object($u)) { $CreatedById = $u->Get("PortalUserId"); if($CreatedById<1) { $CreatedById = $objSession->Get("PortalUserId"); } } else $CreatedById = $objSession->Get("PortalUserId"); } } $r = $objReviews->EditReview($ReviewId,$CreatedOn,$ReviewText,$Status, $IPAddress, (int)$_POST["review_priority"],$_POST["ItemId"],$_POST["ItemType"], $CreatedById,$html, $post_info['Module']); } break; case "m_review_delete": $objReviews = new clsItemReviewList(); $objReviews->SourceTable = $objSession->GetEditTable("ItemReview"); foreach($_POST["itemlist"] as $id) { $objReviews->DeleteReview($id); } break; case "m_review_approve": if (isset($_POST["itemlist"])) { $objReviews = new clsItemReviewList(); $objReviews->SourceTable = $objSession->GetEditTable("ItemReview"); foreach($_POST["itemlist"] as $id) { $i = $objReviews->GetItem($id); $i->Set("Status",1); $i->Update(); } } break; case "m_review_deny": if (isset($_POST["itemlist"])) { $objReviews = new clsItemReviewList(); $objReviews->SourceTable = $objSession->GetEditTable("ItemReview"); foreach($_POST["itemlist"] as $id) { $i = $objReviews->GetItem($id); $i->Set("Status",0); $i->Update(); } } break; case "m_review_move_up": if (isset($_POST["itemlist"])) { $objReviews = new clsItemReviewList(); $objReviews->SourceTable = $objSession->GetEditTable("ItemReview"); foreach($_POST["itemlist"] as $id) { $i = $objReviews->GetItem($id); $i->MoveUp(); } } break; case "m_review_move_down": if (isset($_POST["itemlist"])) { $objReviews = new clsItemReviewList(); $objReviews->SourceTable = $objSession->GetEditTable("ItemReview"); $itemlist=array_reverse($_POST["itemlist"]); foreach($itemlist as $id) { $i = $objReviews->GetItem($id); $i->MoveDown(); } } break; case "m_theme_add": $objEditItems = new clsThemeList(); $objEditItems->SourceTable = $objSession->GetEditTable("Theme"); $Primary = (int)$_POST["primary"]; if(!(int)$_POST["enabled"]) $Primary = 0; $t = $objEditItems->AddTheme($_POST["name"],$_POST["description"],(int)$_POST["enabled"], (int)$_POST["CacheTimeout"],$Primary); $ado = GetADODBConnection(); $rs = $ado->Execute("SELECT MIN(ThemeId) as MinValue FROM ".$objEditItems->SourceTable); $NewId = $rs->fields["MinValue"]-1; $sql = "UPDATE ".$objEditItems->SourceTable." SET ThemeId=".$NewId." WHERE ThemeId=".$t->Get("ThemeId"); if($objSession->HasSystemPermission("DEBUG.LIST")) echo $sql."<br>\n"; if ($Primary==1) { $objEditItems->SetPrimaryTheme($_POST["ThemeId"]); } $ado->Execute($sql); break; case "m_theme_edit": $objEditItems = new clsThemeList(); $objEditItems->SourceTable = $objSession->GetEditTable("Theme"); $Primary = (int)$_POST["primary"]; if(!(int)$_POST["enabled"]) $Primary = 0; $objEditItems->EditTheme($_POST["ThemeId"],$_POST["name"],$_POST["description"], (int)$_POST["enabled"],$Primary,(int)$_POST["CacheTimeout"]); if ($Primary==1) { $objEditItems->SetPrimaryTheme($_POST["ThemeId"]); } break; case "m_theme_delete": if (isset($_POST["itemlist"])) { $Themes = new clsThemeList(); foreach($_POST["itemlist"] as $id) { $Themes->DeleteTheme($id); } } break; case "m_theme_primary": if( count($_POST['itemlist']) ) { $ThemeId = array_shift( $_POST['itemlist'] ); $t = new clsThemeList(); $t->SetPrimaryTheme($ThemeId); } break; case "m_template_edit": $ThemeId = $_POST["ThemeId"]; $FileId = $_POST["FileId"]; $f = new clsThemeFile($FileId); $f->Set("Description", $_POST["Description"] ); $f->Update(); $c = stripslashes($_POST["contents"]); $f->SaveFileContents($c); break; case "m_template_add": $ThemeId = $_POST["ThemeId"]; if( !is_object($f) ) $f = new clsThemeFile(); $FilePath = $_POST['name']; if(!$FilePath) { $f->SetError('Template Name is required',3); break; } else { if( substr($FilePath,1) != '/' ) $FilePath = '/'.$FilePath; if( substr($FilePath,-3) != '.tpl' ) $FilePath .= '.tpl'; $FileName = basename($FilePath); $FilePath = dirname($FilePath); // test if such file not already created $f->LoadFromDataBase( Array($FilePath,$FileName), Array('FilePath','FileName') ); if( !$f->Get('FileId') ) { $f->Set( Array('FilePath','FileName','ThemeId', 'Description'), Array($FilePath, $FileName,$_POST['ThemeId'], $_POST["Description"]) ); if( $f->IsWriteablePath(true) ) { $f->Create(); $c = stripslashes($_POST["contents"]); $f->SaveFileContents($c, true); } } else $f->SetError('Template with this name already exists',4); } break; case "m_template_delete": $dummy = new clsThemeFile(); foreach($_POST["itemlist"] as $FileId) { $dummy->LoadFromDatabase($FileId); $dummy->Delete(); } break; case "m_lang_add": $objEditItems = new clsLanguageList(); $objEditItems->SourceTable = $objSession->GetEditTable("Language"); $l = $objEditItems->AddLanguage($_POST["packname"],$_POST["localname"], (int)$_POST["enabled"],(int)$_POST["primary"], $_POST["icon"],$_POST["date_format"],$_POST["time_format"], $_POST["decimal"],$_POST["thousand"]); $ado = GetADODBConnection(); $rs = $ado->Execute("SELECT MIN(LanguageId) as MinValue FROM ".$objEditItems->SourceTable); $NewId = $rs->fields["MinValue"]-1; $sql = "UPDATE ".$objEditItems->SourceTable." SET LanguageId=".$NewId." WHERE LanguageId=".$l->Get("LanguageId"); if($objSession->HasSystemPermission("DEBUG.LIST")) echo $sql."<br>\n"; $ado->Execute($sql); if($_POST["importlabels"]==1 && $_POST["srcpack"]>0) { $sql = "SELECT * FROM ".GetTablePrefix()."Phrase WHERE LanguageId=".$_POST["srcpack"]; if($objSession->HasSystemPermission("DEBUG.LIST")) echo $sql."<br>\n"; $rs = $ado->Execute($sql); $plist = new clsPhraseList(); $plist->SourceTable = $objSession->GetEditTable("Phrase"); $sql = "SELECT MIN(PhraseId) as MinId FROM ".$plist->SourceTable; $as = $ado->Execute($sql); if($as && !$as->EOF) { $MinId = (int)$as->fields["MinId"]; } else $MinId = 0; $MinId--; while($rs && !$rs->EOF) { $data = $rs->fields; $plist->AddPhrase($data["Phrase"],$NewId,$data["Translation"],$data["PhraseType"]); $sql = "UPDATE ".$plist->SourceTable." SET PhraseId=$MinId WHERE PhraseId=0 LIMIT 1"; $ado->Execute($sql); $MinId--; $rs->MoveNext(); } } break; case "m_lang_export": include_once($pathtoroot."kernel/include/xml.php"); $Ids = $_POST["LangList"]; // language ids list to export phrases from $phrase_types = GetVar('langtypes'); $phrase_types = ($phrase_types !== false) ? implode(',',$phrase_types) : null; $filename=$_POST["filename"]; if(strlen($filename)>0) { $ExportFilename = $pathtoroot.$admin."/export/".$filename; $ExportResult = $objLanguages->ExportPhrases($ExportFilename,$Ids, $phrase_types); } break; case "m_lang_edit": $objEditItems = new clsLanguageList(); $objEditItems->SourceTable = $objSession->GetEditTable("Language"); $objEditItems->EditLanguage($_POST["LanguageId"],$_POST["packname"], $_POST["localname"],(int)$_POST["enabled"], (int)$_POST["primary"], $_POST["icon"],$_POST["date_format"], $_POST["time_format"], $_POST["decimal"],$_POST["thousand"]); if($_POST["importlabels"]==1 && $_POST["srcpack"]>0) { $ado = GetADODBConnection(); $rs = $ado->Execute("SELECT * FROM ".GetTablePrefix()."Phrase WHERE LanguageId=".$_POST["srcpack"]); $plist = new clsPhraseList(); $plist->SourceTable = $objSession->GetEditTable("Phrase"); $sql = "SELECT MIN(PhraseId) as MinId FROM ".$plist->SourceTable; $as = $ado->Execute($sql); if($as && !$as->EOF) { $MinId = (int)$as->fields["MinId"]; } else $MinId = 0; $MinId--; while($rs && !$rs->EOF) { $data = $rs->fields; $plist->AddPhrase($data["Phrase"],$_POST["LanguageId"],$data["Translation"],$data["PhraseType"]); $sql = "UPDATE ".$plist->SourceTable." SET PhraseId=$MinId WHERE PhraseId=0 LIMIT 1"; $ado->Execute($sql); $MinId--; $rs->MoveNext(); } unset($plist); } break; case "m_lang_delete": if($ro_perm) break; if (isset($_POST["itemlist"])) { $Phrases = new clsPhraseList(); foreach($_POST["itemlist"] as $id) { $objLanguages->DeleteLanguage($id); $Phrases->DeleteLanguage($id); } unset($Phrases); } break; case "m_lang_select": $LangId = (int)$_POST["langselect"]; if($LangId) { if($objSession->Get("PortalUserId")>0) { //echo "$LangId"; $objSession->SetPersistantVariable("Language",$LangId); } $objSession->Set("Language",$LangId); $objSession->Update(); $m_var_list_update["lang"] = $LangId; $m_var_list["lang"] = $LangId; } break; case "m_phrase_edit": $objPhraseList = new clsPhraseList(); if((int)$_POST["direct"] != 1) $objPhraseList->SourceTable = $objSession->GetEditTable("Phrase"); $Phrases = $_POST["name"]; foreach($Phrases as $PhraseId =>$name) { if($PhraseId>0) { $objPhraseList->EditPhrase($PhraseId,$_POST["name"][$PhraseId],$_POST["LanguageId"],$_POST["translation"][$PhraseId],$_POST["phrasetype"][$PhraseId]); } } if(strlen($_POST["name"][0]) && strlen($_POST["translation"][0]) && $_POST['Action1'] == "new") { $r = $objPhraseList->AddPhrase($_POST["name"][0],$_POST["LanguageId"],$_POST["translation"][0],$_POST["phrasetype"][0]); if ($r != "Error") { $ado = GetADODBConnection(); $rs = $ado->Execute("SELECT MIN(PhraseId) as MinValue FROM ".$objPhraseList->SourceTable); $NewId = $rs->fields["MinValue"]-1; $sql = "UPDATE ".$objPhraseList->SourceTable." SET PhraseId=".$NewId." WHERE PhraseId=$PhraseId"; if($objSession->HasSystemPermission("DEBUG.LIST")) echo $sql."<br>\n"; $ado->Execute($sql); } else { $add_error = "Language tag with the same name already exists!"; } } else if ($_POST['Action1'] == "new") { $add_error = "Fields name and translation are required!"; } unset($objPhraseList); break; case "m_config_missing_phrase": //phpinfo(INFO_VARIABLES); $LangId = $_POST["LangId"]; $ThemeId = $_POST["ThemeId"]; if(is_array($_POST["Phrase"])) { $objPhraseList = new clsPhraseList(); $objPhraseList->SourceTable = $objSession->GetSessionKey()."_".$ThemeId."_labels"; foreach($_POST["Phrase"] as $p => $value) { if(strlen($value)) { $obj = $objPhraseList->GetItemByField("Phrase",$p,TRUE); if(is_object($obj)) { if($obj->Get("Phrase")==$p) { $obj->Set("Translation",$value); $obj->Update(); } else $objPhraseList->AddPhrase($p,$LangId,$value,1); } else $objPhraseList->AddPhrase($p,$LangId,$value,1); } } } break; case "m_phrase_delete": $objPhraseList = new clsPhraseList(); $objPhraseList->SourceTable = $objSession->GetEditTable("Phrase"); if (isset($_POST["itemlist"])) { foreach($_POST["itemlist"] as $id) { $objPhraseList->DeletePhrase($id); } } unset($objPhraseList); break; case "m_emailevent_disable": if($ro_perm) break; $objEvents = new clsEventList(); if (isset($_POST["itemlist"])) { foreach($_POST["itemlist"] as $id) { $m =& $objEvents->GetItem($id); $m->Set("Enabled",0); $m->Update(); } } unset($objEvents); break; case "m_emailevent_enable": if($ro_perm) break; $objEvents = new clsEventList(); if (isset($_POST["itemlist"])) { foreach($_POST["itemlist"] as $id) { $m =& $objEvents->GetItem($id); $m->Set("Enabled",1); $m->Update(); } } unset($objEvents); break; case "m_emailevent_frontonly": if($ro_perm) break; $objEvents = new clsEventList(); if (isset($_POST["itemlist"])) { foreach($_POST["itemlist"] as $id) { $m =& $objEvents->GetItem($id); $m->Set("Enabled",2); $m->Update(); } } unset($objEvents); break; case "m_dlid": echo $Action.":".$DownloadId; die(); break; case "m_emailevent_user": if($ro_perm) break; $objEvents = new clsEventList(); //phpinfo(INFO_VARIABLES); //$objEvents->SourceTable = $objSession->GetEditTable("Events"); $ids = $_POST["EventId"]; $ids = str_replace("[","",$ids); $ids = str_replace("]","",$ids); $ids = str_replace("\"","",$ids); $ids = str_replace("\\","",$ids); $idlist = explode(",",$ids); foreach($idlist as $EventId) { $id = (int)stripslashes($EventId); $e =& $objEvents->GetItem((int)$EventId); $e->Set("FromUserId", $_POST["FromUserId"]); $e->Update(); } $objEvents->Clear(); unset($objEvents); break; case "m_emailevent_edit": $Template = $_POST["headers"]; if(strlen($Template)) { $Template .= "\n"; } $Template = str_replace("\n\n","",$Template); $Template .= "Subject: ".$_POST["subject"]."\n\n"; $Template .= $_POST["messageBody"]; $objMessages = new clsEmailMessageList(); $objMessages->SourceTable = $objSession->GetEditTable("EmailMessage"); $m =& $objMessages->GetItem($_POST["MessageId"]); if(is_object($m)) { if($_POST["sendhtml"]==1) { $m->Set("MessageType","html"); } else $m->Set("MessageType","text"); $m->Set("Template",$Template); $m->Update(); } break; case "m_config_edit": //phpinfo(INFO_VARIABLES); if($ro_perm) break; $objAdmin = new clsConfigAdmin(); $objAdmin->module = $_POST["module"]; $objAdmin->section = $_POST["section"]; if($objAdmin->section=="in-portal:configure_users") { if(strlen($_POST["RootPass"]) && strlen($_POST["RootPassVerify"])) { if($_POST["RootPass"]==$_POST["RootPassVerify"]) { $_POST["RootPass"] = md5($_POST["RootPass"]); } } else { $_POST["RootPass"] = $objConfig->Get("RootPass"); $_POST["RootPassVerify"] = $objConfig->Get("RootPassVerify"); } } $objAdmin->LoadItems(FALSE); $objAdmin->SaveItems($_POST); break; case "m_mod_enable": if($ro_perm) break; if (isset($_POST["itemlist"])) { foreach($_POST["itemlist"] as $id) { $m =& $objModules->GetItemByField("Name",$id); if(is_object($m)) { $m->Set("Loaded",1); $m->Update(); } } $_GET["Refresh"] = 1; } break; case "m_mod_disable": if($ro_perm) break; if (isset($_POST["itemlist"])) { foreach($_POST["itemlist"] as $id) { if($id != "In-Portal") { $m =& $objModules->GetItemByField("Name",$id); if(is_object($m)) { $m->Set("Loaded",0); $m->Update(); } } } $_GET["Refresh"] = 1; } break; case "m_img_add": $objImageList = new clsImageList(); $objImageList->SourceTable = $objSession->GetEditTable("Images"); $LocalImage=0; $LocalThumb=0; $DestDir = "kernel/images/"; $UserThumbSource = (int)$_POST["imgLocalThumb"]; $LocalThumb = $UserThumbSource; $thumb_url = !$LocalThumb? $_POST["imgThumbUrl"] : ""; if($_POST["imgSameImages"]) { $LocalImage = $LocalThumb; $full_url = $thumb_url; } else { $LocalImage = (int)$_POST["imgLocalFull"]; $file = $_FILES["imgFullFile"]; $full_url = $LocalImage? "" : $_POST["imgFullUrl"]; } if((!strlen($thumb_url) && !$LocalThumb) || (!strlen($full_url) && !$LocalImage)) { break; } $ado = GetADODBConnection(); $sql = "SELECT MIN(ImageId) as MinValue FROM ".$objImageList->SourceTable; $rs = $ado->Execute($sql); $NewId = ($rs->fields["MinValue"]<0)? $rs->fields["MinValue"]-1 : -1; $img = $objImageList->Add($_POST["imgName"], $_POST["imgAlt"], $_POST["ResourceId"], $LocalImage, $LocalThumb, $full_url, $thumb_url, (int)$_POST["imgEnabled"], 0, (int)$_POST["imgDefault"], 0,(int)$_POST["imgSameImages"], $NewId); $img->Set("ImageId", $NewId); // $img->debuglevel=1; /* $sql = "UPDATE ".$objImageList->SourceTable." SET ImageId=".$NewId." WHERE ImageId=0"; $ado->Execute($sql); // $img->Update(); */ // echo "SL: $sql $NewId<BR>"; // $img->debuglevel=1; $img->Pending=TRUE; if($LocalImage) { $file = $_FILES["imgFullFile"]; if(is_array($file)) { if($file["size"]>0) { $img->Set("LocalPath",$img->StoreUploadedImage($file,1, $DestDir,0)); $uploaded=1; } } } if($LocalThumb) { $thumb = $_FILES["imgThumbFile"]; if(is_array($thumb)) { if($thumb["size"]>0) { $img->Set("ThumbPath",$img->StoreUploadedImage($thumb,1, $DestDir,1)); $uploaded=1; } } } if($uploaded==1) $img->Update(); break; case "m_img_edit": $objImageList = new clsImageList(); $objImageList->SourceTable = $objSession->GetEditTable("Images"); // $img->debuglevel=1; $img = $objImageList->GetItem($_POST["ImageId"]); ## Get original values $LocalImage = $img->Get("LocalImage"); $LocalThumb = $img->Get("LocalThumb"); $SameImages = $img->Get("SameImages"); $ThumbPath = $img->Get("ThumbPath"); ## New values $LocalThumbN = (int)$_POST["imgLocalThumb"]; $LocalImageN = (int)$_POST["imgLocalFull"]; $FULLFile = $_FILES["imgFullFile"]; $THFile = $_FILES["imgThumbFile"]; $DestDir = "kernel/images/"; $img->Pending = FALSE; $SameImagesN = 0; $uploaded = 0; ## Images were the same, but not any more if ($SameImages && !$_POST["imgSameImages"]) { ## TH was a local file if ($LocalThumb) { ## TH image { ## Try to Delete OLD FULL $img->DeleteLocalImage(FALSE, TRUE); ## FULL image select, but field EMPTY - make a copy of old TH as FULL if ($LocalImageN && !(int)$FULLFile["size"]) { // echo $pathToPending = $img->GetImageDir(); if (!eregi("pending/$", $pathToPending)) $pathToPending.= "pending/"; $LocalThumb_File = $img->GetFileName(1); // echo "<b>CAN'T FIND FILE:</b> ".$pathToPending.$LocalThumb_File."<BR>"; if (file_exists($pathToPending.$LocalThumb_File)) { $LocalThumb_FileN = eregi_replace("^th_", "", $LocalThumb_File); $LocalThumb_FullFileN = $pathToPending.$LocalThumb_FileN; @unlink($LocalThumb_FullFileN); @copy($pathToPending.$LocalThumb_File, $LocalThumb_FullFileN); $uploaded = 1; $copied = 1; // echo "COPING: ".$DestDir."pending/".$LocalThumb_FileN." <BR>"; } else { // echo "CAN'T FIND FILE: ".$pathToPending.$LocalThumb_File."<BR>"; } } ## Upload new FULL image elseif ($LocalImageN && (int)$FULLFile['size']) { $FULL_FileToUpload = $FULLFile; $FULL_URL = ""; // echo " Upload new FULL image"; } ## Full is URL elseif (!$LocalImageN) { $img->DeleteLocalImage(FALSE, TRUE); $FULL_URL = $_POST['imgFullUrl']; $FULL_FileToUpload = ""; } else { // echo " ## Unknow condition"; } ## Take care of Thumbnail here if ($LocalThumbN) { ## Delete old if NEW TH image selected if ((int)$THFile['size']) { $img->DeleteLocalImage(TRUE, FALSE); $TH_FileToUpload = $THFile; } else $TH_FileToUpload = ""; } else { $img->DeleteLocalImage(TRUE, FALSE); $TH_FileToUpload = ""; $TH_URL = $_POST['imgThumbUrl']; } } } ## TH was URL else { ## Take care of FULL image here if ($LocalImageN && (int)$FULLFile["size"]) { $FULL_FileToUpload = $FULLFile; $FULL_URL = ""; } ## Full is URL (or image size 0) else { $FULL_FileToUpload = ""; $FULL_URL = $_POST['imgFullUrl']; } ## Take care of Thumbnail here if ($LocalThumbN) { $TH_FileToUpload = (int)$THFile['size']? $THFile : ""; $TH_URL = ""; } else { $TH_FileToUpload = ""; $TH_URL = $_POST['imgThumbUrl']; } } } ## Images were the same, and still the same elseif ($SameImages && $_POST['imgSameImages']) { ## Take care of Thumbnail & FULL here if ($LocalThumbN) { if ((int)$THFile['size']) { $img->DeleteLocalImage(TRUE, FALSE); $TH_FileToUpload = $THFile; } else $TH_FileToUpload = ""; $FULL_URL = $TH_URL = ""; } else { $TH_FileToUpload = $FULL_FileToUpload = ""; $FULL_URL = $TH_URL = $_POST['imgThumbUrl']; } ## Delete old FULL image $img->DeleteLocalImage(FALSE,TRUE); $SameImagesN = 1; } ## Images were NOT the same, and selected as the same now elseif (!$SameImages && $_POST["imgSameImages"]) { ## Take care of Thumbnail & FULL here if ($LocalThumbN) { if ((int)$THFile['size']) { $img->DeleteLocalImage(TRUE, FALSE); $TH_FileToUpload = $THFile; } else $TH_FileToUpload = ""; $FULL_URL = $TH_URL = ""; } else { $img->DeleteLocalImage(TRUE, FALSE); $TH_FileToUpload = $FULL_FileToUpload = ""; $FULL_URL = $TH_URL = $_POST['imgThumbUrl']; } ## Clean up FULL image $img->DeleteLocalImage(FALSE, TRUE); $SameImagesN = 1; } ## Images were NOT the same, and selected as NOT the same elseif (!$SameImages && !$_POST["imgSameImages"]) { ## Take care of Thumbnail if ($LocalThumbN) { if ((int)$THFile['size']) { $img->DeleteLocalImage(TRUE, FALSE); $TH_FileToUpload = $THFile; } else $TH_FileToUpload = ""; $TH_URL = ""; } else { $img->DeleteLocalImage(TRUE, FALSE); $TH_FileToUpload = ""; $TH_URL = $_POST['imgThumbUrl']; } ## Take care of FULL here if ($LocalImageN) { if ((int)$FULLFile['size']) { $img->DeleteLocalImage(FALSE, TRUE); $FULL_FileToUpload = $FULLFile; } else $FULL_FileToUpload = ""; $FULL_URL = ""; } else { $img->DeleteLocalImage(FALSE, TRUE); $FULL_FileToUpload = ""; $FULL_URL = $_POST['imgFullUrl']; } } ## Unknow condition else { ; } $img = $objImageList->Edit($_POST["ImageId"],$_POST["imgName"], $_POST["imgAlt"], $_POST["ResourceId"], $LocalImageN, $LocalThumbN, $FULL_URL, $TH_URL, (int)$_POST["imgEnabled"], (int)$_POST["imgPriority"], (int)$_POST["imgDefault"], 0, $SameImagesN); // echo "<B>DATA:</B> <BR> LocalImageN: $LocalImageN, LocalThumbN: $LocalThumbN, FULL_URL: $FULL_URL, TH_URL: $TH_URL, SameImagesN: $SameImagesN <BR>"; $img->Pending = TRUE; if (!empty($FULL_FileToUpload)) { $img->Set("LocalPath",$img->StoreUploadedImage($FULL_FileToUpload, 1, $DestDir, 0)); $uploaded = 1; } /* elseif (!$LocalImageN) { $img->Set("LocalPath", ""); $uploaded = 1; } */ if (!empty($TH_FileToUpload)) { $img->Set("ThumbPath", $img->StoreUploadedImage($TH_FileToUpload, 1, $DestDir, 1)); $uploaded = 1; } if ($copied) { $img->Set("LocalPath", $DestDir."pending/".$LocalThumb_FileN); $uploaded = 1; } if($uploaded==1) $img->Update(); break; case "m_img_move_up": if (isset($_POST["itemlist"])) { $objImageList = new clsImageList(); $objImageList->SourceTable = $objSession->GetEditTable("Images"); foreach($_POST["itemlist"] as $id) { $img = $objImageList->GetItem($id); $img->MoveUp(); } } break; case "m_img_move_down": if (isset($_POST["itemlist"])) { $objImageList = new clsImageList(); $objImageList->SourceTable = $objSession->GetEditTable("Images"); $itemlist=array_reverse($_POST["itemlist"]); foreach($itemlist as $id) { $img = $objImageList->GetItem($id); $img->MoveDown(); } } break; case "m_img_delete": if(isset($_POST["itemlist"])) { $objImageList = new clsImageList(); $objImageList->SourceTable = $objSession->GetEditTable("Images"); foreach($_POST["itemlist"] as $id) { $img = $objImageList->GetItem($id); $img->Set("ResourceId", 0); $img->Update(); //$img->Delete(); } } break; case "m_restore_delete": $bdate = $_POST["backupdate"]; if($bdate>0) { $BackupFile = $objConfig->Get("Backup_Path")."/dump".$bdate.".txt"; if(file_exists($BackupFile)) unlink($BackupFile); } break; case "m_taglib": include($pathtoroot."kernel/include/tag-class.php"); ParseTagLibrary(); break; case "m_sql_query": $SqlQuery = $_POST["sql"]; $ado = GetADODBConnection(); if(strlen($sql)) { $SqlResult = $ado->Execute(stripslashes($SqlQuery)); $SqlError = $ado->ErrorMsg(); $SqlErrorNum = $ado->ErrorNo(); } break; case "m_session_delete": if($ro_perm) break; $ado = GetADODBConnection(); if (count($_POST['itemlist']) > 0) { foreach($_POST["itemlist"] as $id) { $sql = "DELETE FROM ".GetTablePrefix()."UserSession WHERE SessionKey='$id'"; $ado->Execute($sql); } } else { $sql = "DELETE FROM ".GetTablePrefix()."UserSession WHERE Status='0'"; $ado->Execute($sql); } break; case "m_add_rule": $objEditItems = new clsBanRuleList(); $objEditItems->SourceTable = $objSession->GetEditTable("BanRules"); //$ItemType,$RuleType,$ItemField,$ItemVerb,$ItemValue,$Priority,$Status; $objEditItems->AddRule($_POST["rule_itemtype"],$_POST["rule_type"],$_POST["rule_field"], $_POST["rule_verb"],$_POST["rule_value"],(int)$_POST["rule_priority"], (int)$_POST["rule_status"], $_POST['rule_error']); break; case "m_edit_rule": $objEditItems = new clsBanRuleList(); $objEditItems->SourceTable = $objSession->GetEditTable("BanRules"); //$ItemType,$RuleType,$ItemField,$ItemVerb,$ItemValue,$Priority,$Status; $objEditItems->EditRule($_POST["rule_id"],$_POST["rule_itemtype"],$_POST["rule_type"],$_POST["rule_field"], $_POST["rule_verb"],$_POST["rule_value"],(int)$_POST["rule_priority"], (int)$_POST["rule_status"], $_POST['rule_error']); break; case "m_rule_move_up": if($ro_perm) break; if(isset($_POST["itemlist"])) { foreach($_POST["itemlist"] as $id) { $i = $objBanList->GetItem($id); $i->Increment("Priority"); } } break; case "m_rule_move_down": if($ro_perm) break; if(isset($_POST["itemlist"])) { foreach($_POST["itemlist"] as $id) { $i = $objBanList->GetItem($id); $i->Decrement("Priority"); } } break; case "m_rule_delete": if($ro_perm) break; if(isset($_POST["itemlist"])) { foreach($_POST["itemlist"] as $id) { $i = $objBanList->GetItem($id); $i->Delete(); } } break; case "m_ban_user": if($ro_perm) break; if($_POST["UserEditStatus"]==1) { $UserId = $_POST["user_id"]; $u = $objUsers->GetItem($UserId); if(is_object($u)) { if((int)$_POST["ban_login"]) { if(strlen($_POST["user_login"])) $objBanList->AddRule(6,0,"Login",3,$_POST["user_login"],0,1); } if((int)$_POST["ban_email"]) { if(strlen($_POST["user_email"])) $objBanList->AddRule(6,0,"Email",3,$_POST["user_email"],0,1); } if((int)$_POST["ban_ip"]) { if(strlen($_POST["user_ip"])) $objBanList->AddRule(6,0,"ip",3,$_POST["user_ip"],0,1); } $u->Deny(); } } break; } /* image upload management */ if( isset($_POST['img']) && $_POST['img'] == 1 ) { foreach($_FILES as $img => $FILE) { $name = $_POST["img_Name_$img"]; $alt = $_POST["img_Alt_$img"]; $url = $_POST["img_Url_$img"]; $res_id = $_POST["img_Res_$img"]; $relvalue = $_POST["img_Rel_$img"]; $thumb = (int)$_POST["img_Thumb_$img"]; $dest = AddSlash($_POST["img_DestDir_$img"]); if($_POST["img_Del_$img"]=="Delete") { $img = $objImageList->GetImageByResource($res_id,$relvalue); $img->Delete(); unset($img); $objImageList->Clear(); } else { if($FILE["size"]>0) { /* an image was uploaded */ $objImageList->HandleImageUpload($FILE,$res_id,$relvalue,$dest, $name,$alt,$thumb); } else { /* remote images handled here */ if(strlen($url)>0) { if($relvalue>0) { $img = $objImageList->GetImageByResource($res_id,$relvalue); $img->Set("Name",$name); $img->Set("AltName", $alt); $img->Set("IsThumbnail",$thumb); $img->Set("Url",$url); $img->Update(); } else { $relvalue = $objImageList->GetNextRelateValue($res_id); $objImageList->NewRemoteImage($url,$res_id,$relvalue, $name, $alt, $thumb); } } } } } } // ALL Saving Stuff From Temp Tables Heppens Here //echo "==== BEGIN ==== <br>"; $has_perm = $objSession->HasSystemPermission("SYSTEM_ACCESS.READONLY"); //echo "PortalUserID: [".$objSession->Get("PortalUserId")."]<br>"; //echo "PermSet: [".$has_perm."]<br>"; if( !$has_perm ) { /* category Edit */ if( GetVar('CatEditStatus') == 1 ) { $adodbConnection = GetADODBConnection(); // $sql = "SELECT * FROM ".$objSession->GetEditTable("Category")." WHERE CategoryId=0"; $sql = "SELECT * FROM ".$objSession->GetEditTable("Category")." WHERE CategoryId=-1"; $rs = $adodbConnection->Execute($sql); while ($rs && !$rs->EOF) { if($rs->fields["ParentId"]>0) RunUp($rs->fields["ParentId"],"Increment_Count"); $rs->MoveNext(); } $objCatList->CopyFromEditTable("CategoryId"); $objCustomDataList->CopyFromEditTable("CustomDataId"); $objCatList->Clear(); if($_REQUEST['CategoryId'] > 0) // not root category is updated { $objImages = new clsImageList(); $objImages->CopyFromEditTable("ImageId"); } } if( GetVar('CatEditStatus') == 2 ) { $objCatList->PurgeEditTable("CategoryId"); $objCustomDataList->PurgeEditTable("CustomDataId"); if($_REQUEST['CategoryId'] > 0) // not root category is updated { $objImages = new clsImageList(); $objImages->PurgeEditTable("ImageId"); } $objCatList->Clear(); } /* User Edit */ if( GetVar('UserEditStatus') == 1 ) { $objUsers->CopyFromEditTable("PortalUserId"); $objCustomDataList->CopyFromEditTable("CustomDataId"); $objGroups->Clear(); $objImages = new clsImageList(); $objImages->CopyFromEditTable("ImageId"); } if( GetVar('UserEditStatus') == 2 ) { $objGroups->PurgeEditTable("PortalUserId"); $objCustomDataList->PurgeEditTable("CustomDataId"); $objGroups->Clear(); } /* Group Edit */ if( GetVar('GroupEditStatus') == 1 ) { $objGroups->CopyFromEditTable("GroupId"); $objCustomDataList->CopyFromEditTable("CustomDataId"); $objGroups->Clear(); } if( GetVar('GroupEditStatus') == 2 ) { $objGroups->PurgeEditTable("GroupId"); $objCustomDataList->PurgeEditTable("CustomDataId"); $objGroups->Clear(); } /* Theme Edit */ if( GetVar('ThemeEditStatus') == 1 ) { $objThemes->CopyFromEditTable(); $objThemes->Clear(); } if( GetVar('ThemeEditStatus') == 2 ) { $objThemes->PurgeEditTable(); $objThemes->Clear(); } /* Language Edit */ if( GetVar('LangEditStatus') == 1 ) { $Messages = new clsEmailMessageList(); $Messages->CopyFromEditTable(); $Messages->Clear(); $objLanguages->CopyFromEditTable(); $objLanguages->Clear(); $Phrases = new clsPhraseList(); $Phrases->CopyFromEditTable(); $Phrases->Clear(); $Phrases->PurgeEditTable(); } if( GetVar('LangEditStatus') == 2 ) { $objLanguages->PurgeEditTable(); $objLanguages->Clear(); $Phrases = new clsPhraseList(); $Phrases->PurgeEditTable(); $Messages = new clsEmailMessageList(); $Messages->PurgeEditTable(); } if( GetVar('MissingLangEditStatus') == 1 ) { $objPhraseList = new clsPhraseList(); $objPhraseList->SourceTable = $objSession->GetSessionKey()."_".$ThemeId."_labels"; $objEditList = new clsPhraseList(); $objEditList->SourceTable = $objSession->GetEditTable("Phrase"); $ado = GetADODBConnection(); $rs = $ado->Execute("SELECT MIN(PhraseId) as MinValue FROM ".$objEditList->SourceTable); $NewId = $rs->fields["MinValue"]-1; $objPhraseList->Query_Item("SELECT * FROM ".$objPhraseList->SourceTable); foreach($objPhraseList->Items as $p) { if(strlen($p->Get("Translation"))>0) { $p->tablename = $objEditList->SourceTable; $p->Dirty(); $p->UnsetIDField(); $p->Set("PhraseId",$NewId); $NewId--; $p->Create(); } } $ado->Execute("DROP TABLE ".$objPhraseList->SourceTable); } if( GetVar('MissingLangEditStatus') == 2 ) { $table = $objSession->GetSessionKey()."_".$ThemeId."_labels"; $ado = GetADODBConnection(); $ado->Execute("DROP TABLE ".$table); } /* Ban Rule Edit */ if( GetVar('RuleEditStatus') == 1 ) { $objBanList->CopyFromEditTable("RuleId"); $objBanList->Clear(); } if( GetVar('RuleEditStatus') == 2 ) { $objBanList->PurgeEditTable("RuleId"); $objBanList->Clear(); } } elseif( defined('DEBUG_ACTIONS') ) { if( isset($_REQUEST['Action']) && $_REQUEST['Action'] ) echo "<b>USER HAS RO-ACCESS</b> on action [<b>".$_REQUEST['Action']."</b>]<br>"; } //echo "==== END ==== <br>"; ?> Property changes on: trunk/kernel/action.php ___________________________________________________________________ Modified: cvs2svn:cvs-rev ## -1 +1 ## -1.21 \ No newline at end of property +1.22 \ No newline at end of property Index: trunk/kernel/include/usersession.php =================================================================== --- trunk/kernel/include/usersession.php (revision 268) +++ trunk/kernel/include/usersession.php (revision 269) @@ -1,1128 +1,1129 @@ <?php class clsUserSession { //Common DB operation class variables var $m_dirtyFieldsMap = array(); //Identity var $m_SessionKey; var $m_CurrentTempKey; var $m_PrevTempKey; //Required attributes var $m_LastAccessed; var $m_PortalUserId; var $m_Language; var $m_Theme; var $m_GroupId; var $adodbConnection; var $m_Errors; var $m_GroupList; var $PermCache; var $SysPermCache; var $PermCacheGroups; var $CurrentUser; var $UseTempKeys; function clsUserSession($id=NULL, $TempKeys=FALSE) { global $objConfig, $objLanguages, $objThemes, $m_var_list; $this->m_Errors = new clsErrorManager(); $this->adodbConnection = GetADODBConnection(); $this->PermCache = array(); $this->PermCacheGroups =""; $this->UseTempKeys = $TempKeys; if( GetVar('help_usage') == 'install' ) return; if(!$this->UseTempKeys || strlen($id)==0) { //echo "with cookies"; if( !isset($_SERVER['HTTP_REFERER']) ) $_SERVER['HTTP_REFERER'] = ''; - + if(!isset($_GET['destform'])) $_GET['destform'] = null; + if(!isset($_GET['continue_sess'])) $_GET['continue_sess'] = null; if( strlen($id) && (strstr($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME'].$objConfig->Get("Site_Path")) || $_GET['destform'] == 'popup' || $_GET['continue_sess'] == 1)) { $this->Set("SessionKey",$id); return $this->LoadFromDatabase($id); } else { $this->Set("PortalUserId", 0); $this->Set("Language", $objLanguages->GetPrimary()); $ThemeId = $m_var_list["theme"]; $this->SetThemeName($ThemeId); //$this->Set("Theme", $objConfig->Get("Default_Theme")); $this->Set("GroupList",0); $this->Set("SessionKey",""); $this->Set("GroupList",$objConfig->Get("User_GuestGroup")); } } else { //echo "without cookies"; return $this->LoadFromTempKey($id); } } function CopyToNewSession() { $OldKey = $this->GetSessionKey(); $this->GetNewSession(); if($OldKey != $this->GetSessionKey()) { $this->Set("PortalUserId",$this->Get("PortalUserId")); $this->Set("GroupId",$this->Get("GroupId")); $this->Set("GroupList",$this->Get("GroupList")); $this->Set("Language",$this->Get("Language")); $this->Set("tz",$this->Get("tz")); $this->Set("LastAccessed",date("U")); $this->Update(); } } function Get($name) { $var = "m_" . $name; return isset($this->$var) ? $this->$var : ''; } function Set($name, $value) { if (is_array($name)) { for ($i=0; $i<sizeof($name); $i++) { $var = "m_" . $name[$i]; $this->$var = $value[$i]; $this->m_dirtyFieldsMap[$name[$i]] = $value[$i]; } } else { $var = "m_" . $name; $this->$var = $value; $this->m_dirtyFieldsMap[$name] = $value; //echo "Set: $var = $value <br>\n"; } } function Validate() { $dataValid = true; if(!isset($this->m_LastAccessed)) { $this->m_Errors->AddError("error.fieldIsRequired",'LastAccessed',"","",get_class($this),"Validate"); $dataValid = false; } if(!isset($this->m_PortalUserId)) { $this->m_Errors->AddError("error.fieldIsRequired",'PortalUserId',"","",get_class($this),"Validate"); $dataValid = false; } if(!isset($this->m_Language)) { $this->m_Errors->AddError("error.fieldIsRequired",'Language',"","",get_class($this),"Validate"); $dataValid = false; } if(!isset($this->m_Theme)) { $this->m_Errors->AddError("error.fieldIsRequired",'Theme',"","",get_class($this),"Validate"); $dataValid = false; } return $dataValid; } function Delete() { if(!isset($this->m_SessionKey)) { $this->m_Errors->AddError("error.AppError",NULL,'Internal error: Delete requires set id',"",get_class($this),"Delete"); return false; } //Delete associated adata first $sql = sprintf("DELETE FROM ".GetTablePrefix()."SessionData WHERE SessionKey = '%s'", $this->Get("SessionKey")); $this->adodbConnection->Execute($sql); $sql = sprintf("DROP TABLE %s%s_search",GetTablePrefix(), $this->Get("SessionKey")); $this->adodbConnection->Execute($sql); $sql = sprintf("DELETE FROM ".GetTablePrefix()."UserSession WHERE SessionKey = '%s'", $this->Get("SessionKey")); $this->adodbConnection->Execute($sql); if ($this->adodbConnection->Execute($sql) === false) { $this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Delete"); return false; } $this->Set("SessionKey",""); $this->Set("SessionDataLoaded",false); return true; } function Update() { global $objConfig; //$this->Set("LastAccessed",date("U")); $this->Set("IpAddress",$_SERVER["REMOTE_ADDR"]); if(!isset($this->m_SessionKey)) { $this->m_Errors->AddError("error.AppError",NULL,'Internal error: Update requires set id',"",get_class($this),"Update"); return false; } if(!is_numeric($this->Get("PortalUserId"))) { $this->Set("PortalUserId",0); } if(!strlen($this->Get("GroupList"))) { $this->Set("GroupList",$objConfig->Get("User_GuestGroup")); } if(count($this->m_dirtyFieldsMap) == 0) return true; $sql = "UPDATE ".GetTablePrefix()."UserSession SET "; $first = 1; foreach ($this->m_dirtyFieldsMap as $key => $value) { if($first) { $sql = sprintf("%s %s=%s",$sql,$key,$this->adodbConnection->qstr($value)); $first = 0; } else { $sql = sprintf("%s, %s=%s",$sql,$key,$this->adodbConnection->qstr($value)); } } $sql = sprintf("%s WHERE SessionKey = '%s'",$sql, $this->Get("SessionKey")); //echo $sql; if ($this->adodbConnection->Execute($sql) === false) { $this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Update"); return false; } return true; } function Create() { global $objConfig; $this->Set("LastAccessed", time()); if(!is_numeric($this->Get("PortalUserId"))) { $this->Set("PortalUserId",0); } if(!strlen($this->Get("GroupList"))) { $this->Set("GroupList",$objConfig->Get("User_GuestGroup")); } $sql = "INSERT INTO ".GetTablePrefix()."UserSession ("; $first = 1; foreach ($this->m_dirtyFieldsMap as $key => $value) { if($first) { $sql = sprintf("%s %s",$sql,$key); $first = 0; } else { $sql = sprintf("%s, %s",$sql,$key); } } $sql = sprintf('%s ) VALUES (',$sql); $first = 1; foreach ($this->m_dirtyFieldsMap as $key => $value) { if($first) { $sql = sprintf("%s %s",$sql,$this->adodbConnection->qstr($value)); $first = 0; } else { $sql = sprintf("%s, %s",$sql,$this->adodbConnection->qstr($value)); } } $sql = sprintf('%s)',$sql); //echo $sql."<br>\n"; if ($this->adodbConnection->Execute($sql) === false) { $this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Create"); return false; } return true; } function LoadFromTempKey($id=NULL) { global $objLanguages, $objConfig,$m_var_list; $referer = $_SERVER["HTTP_REFERER"]; //echo "Referer: $referer <br>\n"; if(strlen($referer) && strpos($referer,"env=")) { $keystart = strpos($referer,"env=")+4; $referer = substr($referer,$keystart); $keyend = strpos($referer,"-"); $LastKey = substr($referer,0,$keyend); if(strlen($LastKey)) { $sql = "SELECT * FROM ".GetTablePrefix()."UserSession WHERE (CurrentTempKey = '$id' OR PrevTempKey='$id' OR CurrentTempKey='$LastKey' OR PrevTempKey='$LastKey') "; } else $sql = "SELECT * FROM ".GetTablePrefix()."UserSession WHERE CurrentTempKey = '$id' AND PrevTempKey IS NULL"; } else $sql = "SELECT * FROM ".GetTablePrefix()."UserSession WHERE CurrentTempKey = '$id' AND PrevTempKey IS NULL"; $result = $this->adodbConnection->Execute($sql); if ($result === false) { $this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"LoadFromDatabase"); return false; } $data = $result->fields; if (is_array($data)) { foreach($data as $field => $value) { $mname = "m_" . $field; $this->$mname = $data[$field]; } if($this->Get("CurrentTempKey")) { $this->Set("PrevTempKey",$this->Get("CurrentTempKey")); $this->UseTempKeys=TRUE; } if (!$this->Get("CurrentTempKey") || !strstr($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME'].$objConfig->Get("Site_Path"))) { //$this->Set("PrevTempKey",$this->Get("CurrentTempKey")); //$this->Set("CurrentTempKey",$this->GetUniqueKey()); $this->UseTempKeys=FALSE; $this->Set("PortalUserId", 0); $this->Set("Language", $objLanguages->GetPrimary()); $ThemeId = $m_var_list["theme"]; $this->SetThemeName($ThemeId); //$this->Set("Theme", $objConfig->Get("Default_Theme")); $this->Set("GroupList",0); $this->Set("SessionKey",""); $this->Set("GroupList",$objConfig->Get("User_GuestGroup")); } //$this->UseTempKeys=TRUE; $this->Update(); return true; } else { $this->Set("PortalUserId", 0); $this->Set("Language", $objLanguages->GetPrimary()); $ThemeId = $m_var_list["theme"]; $this->SetThemeName($ThemeId); //$this->Set("Theme", $objConfig->Get("Default_Theme")); $this->Set("GroupList",0); $this->Set("SessionKey",""); $this->Set("GroupList",$objConfig->Get("User_GuestGroup")); $this->Set("CurrentTempKey",$this->GetUniqueKey()); return false; } } function LoadFromDatabase($id) { if(!isset($id)) { $this->m_Errors->AddError("error.AppError",NULL,'Internal error: LoadFromDatabase id',"",get_class($this),"LoadFromDatabase"); return false; } $sql = sprintf("SELECT * FROM ".GetTablePrefix()."UserSession WHERE SessionKey = '%s'",$id); $result = $this->adodbConnection->Execute($sql); if ($result === false) { $this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"LoadFromDatabase"); return false; } $data = $result->fields; if (is_array($data)) { foreach($data as $field => $value) { $mname = "m_" . $field; $this->$mname = $data[$field]; } return true; } else { return false; } } function Login($userLogin, $userPassword) { global $expired, $objConfig; if($userLogin == "root") { // logging in "root" (admin only) $rootpass = $objConfig->Get("RootPass"); if($rootpass!=$userPassword) { return FALSE; } else { if(!strlen($this->GetSessionKey())) $this->GetNewSession(); $this->Set("PortalUserId",-1); $this->Update(); return TRUE; } } else { // logging in any user (admin & front) $pre = GetTablePrefix(); $sql = "SELECT *,MD5(".$pre."PortalUser.Password) as md5pw FROM ".$pre."PortalUser LEFT JOIN ".$pre."UserGroup USING (PortalUserId) " ."LEFT JOIN ".$pre."PortalGroup ON (".$pre."UserGroup.GroupId=".$pre."PortalGroup.GroupId) WHERE ".$pre."PortalUser.Login='$userLogin' AND ".$pre."PortalUser.Status=1 AND (".$pre."PortalUser.Password='$userPassword' OR MD5(".$pre."PortalUser.Password)='$userPassword' OR ".$pre."PortalUser.Password='".md5($userPassword)."') ORDER BY ".$pre."UserGroup.PrimaryGroup DESC, ".$pre."PortalGroup.Personal DESC"; //echo $sql."<br>\n"; $result = $this->adodbConnection->Execute($sql); if ($result === false) { $this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Login"); return false; } if($result->EOF) return false; } if(!strlen($this->GetSessionKey())) { $this->GetNewSession(); } $this->Set("PortalUserId", $result->fields["PortalUserId"]); if(strlen($result->fields["tz"])>0) $this->Set("tz",$result->fields["tz"]); $PrimaryGroup=0; $PersonalGroup=0; $GroupList = array(); while($result && !$result->EOF) { $skipadd=0; $g = $result->fields["GroupId"]; if($result->fields["PrimaryGroup"]==1) { $PrimaryGroup = $g; $skipadd=1; } if($result->fields["Personal"]==1) { $PersonalGroup=$g; $skipadd=0; } if(!$skipadd) $GroupList[] = $g; $result->MoveNext(); } $extra_groups = implode(",",$GroupList); if($PrimaryGroup) $extra_groups = $PrimaryGroup.",".$extra_groups; if($PersonalGroup) { $this->Set("GroupId",$PersonalGroup); //$extra_groups .= ",".$PersonalGroup; } else { $this->Set("GroupId",$PrimaryGroup); } $this->Set("GroupList", $extra_groups); $this->Set("LastAccessed",date("U")); $this_login = $this->GetPersistantVariable("ThisLogin"); $this->SetPersistantVariable("LastLogin", $this_login); $this->SetPersistantVariable("ThisLogin", time()); $this->ResetSysPermCache(); $this->PermCache = array(); $this->Update(); if($userLogin != 'root') { if( ! $this->HasSystemPermission('LOGIN') ) { $this->Logout(); return false; } } return true; } function Logout() { global $objConfig; $this->Set("PortalUserId", 0); $this->Set("GroupId", $objConfig->Get("User_GuestGroup")); #$this->SetPersistantVariable("LastLogin", time()); $this->Set("GroupList",$objConfig->Get("User_GuestGroup")); $this->Set("IpAddress",$_SERVER['REMOTE_ADDR']); $this->DeleteSessionData($this->GetSessionKey()); $this->Update(); $this->Delete(); $this->ResetSysPermCache(); $this->PermCache = array(); } function SetVariable( $variableName, $variableValue) { global $objConfig, $FrontEnd; $objConfig->Set($variableName,$variableValue,2); //if(!(int)$FrontEnd==1) //{ $sessionkey = $this->GetSessionKey(); $sql = "SELECT * FROM ".GetTablePrefix()."SessionData WHERE VariableName='$variableName' AND SessionKey='$sessionkey'"; $rs = $this->adodbConnection->Execute($sql); if($rs && !$rs->EOF) { $sql = "UPDATE ".GetTablePrefix()."SessionData SET VariableValue='$variableValue' WHERE VariableName='$variableName' AND SessionKey='$sessionkey'"; } else $sql = "INSERT INTO ".GetTablePrefix()."SessionData (VariableName,VariableValue,SessionKey) VALUES ('$variableName','$variableValue','$sessionkey')"; $this->adodbConnection->Execute($sql); // echo "<BR>UPDATE: $sql<BR>"; //} } function SetPersistantVariable($variableName, $variableValue) { global $objConfig, $objUsers; $userid = (int)$this->Get("PortalUserId"); if($userid > 0) { if(!is_object($this->CurrentUser)) $this->CurrentUser = $objUsers->GetItem($this->Get("PortalUserId")); if(!$this->CurrentUser->VarsLoaded) $this->CurrentUser->LoadPersistantVars(); //echo "setting current user' $variableName, $variableValue<br>"; $this->CurrentUser->SetPersistantVariable($variableName, $variableValue); //$this->SetVariable($variableName,$variableValue); } else $this->SetVariable($variableName,$variableValue); } function GetPersistantVariable($variableName) { global $objConfig, $objUsers; if(is_numeric($this->Get("PortalUserId"))) { if(!is_object($this->CurrentUser)) $this->CurrentUser = $objUsers->GetItem($this->Get("PortalUserId")); if(!$this->CurrentUser->VarsLoaded) $this->CurrentUser->LoadPersistantVars(); $val = $this->CurrentUser->GetPersistantVariable($variableName); } if(!strlen($val)) $val = $objConfig->Get($variableName); return $val; } function GetVariable($variableName) { global $objConfig; return $objConfig->Get($variableName); } function LoadSessionData() { global $objConfig, $objUsers; if(is_numeric($this->Get("PortalUserId"))) { $sql = "SELECT VariableName, VariableValue FROM ".GetTablePrefix()."SessionData where SessionKey='" . $this->Get("SessionKey") . "'"; //echo $sql."<br>\n"; $result = $this->adodbConnection->Execute($sql); while ($result && !$result->EOF) { $data = $result->fields; //echo "<PRE>"; print_r($data); echo "</PRE>"; $objConfig->Set($data["VariableName"],$data["VariableValue"],FALSE); $result->MoveNext(); } if(!is_object($this->CurrentUser)) $this->CurrentUser = $objUsers->GetItem($this->Get("PortalUserId")); if(!$this->CurrentUser->VarsLoaded) $this->CurrentUser->LoadPersistantVars(); } if((int)$this->GetPersistantVariable("Language")) $this->Set("Language",$objConfig->Get("Language")); $this->DeleteExpiredSessions(); return true; } function DeleteSessionData($key) { $sql = "DELETE FROM ".GetTablePrefix()."SessionData WHERE SessionKey='$key'"; $this->adodbConnection->Execute($sql); } function SaveSessionData() { global $objConfig; //echo "Saving Session Data..<br>\n"; if($this->SessionEnabled()) { $data = $objConfig->GetDirtySessionValues(2); //session data //echo "<PRE>"; print_r($data); echo "</PRE>"; $sessionkey = $this->GetSessionKey(); foreach($data as $field=>$value) { $sql = "UPDATE ".GetTablePrefix()."SessionData SET VariableValue='$value' WHERE VariableName='$field' AND SessionKey='$sessionkey'"; $this->adodbConnection->Execute($sql); //echo $sql."<br>\n"; if($this->adodbConnection->Affected_Rows()==0) { $sql = "INSERT INTO ".GetTablePrefix()."SessionData (VariableName,VariableValue,SessionKey) VALUES ('$field','$value','$sessionkey')"; $this->adodbConnection->Execute($sql); } // echo $sql."<br>\n"; } } } function DeleteEditTables() { $tables = $this->adodbConnection->MetaTables(); $sql = "SHOW TABLES"; //echo "<PRE>";print_r($tables); echo "</PRE>"; for($i=0;$i<count($tables);$i++) { $t = strtoupper($tables[$i]); $p = strtoupper(GetTablePrefix()."ses_ad"); $k = substr($t,0,strlen($p)); if($k == $p && strpos($t,"FD_")>0) { $key = "AD".strtoupper(substr($t,strlen($p),strpos($t,"FD_")-strlen($p)))."FD"; $sql = "SELECT * FROM ".GetTablePrefix()."UserSession WHERE SessionKey='$key'"; //echo $sql."<br>\n"; $rs = $this->adodbConnection->Execute($sql); if(!$rs || $rs->EOF) { //echo "Dropping Table $tables[$i] <br>\n"; @$this->adodbConnection->Execute("DROP TABLE ".$tables[$i]); } } } } function DeleteExpiredSessions() { global $objConfig; $cutoff = time()-$objConfig->Get("SessionTimeout"); $thiskey = $this->GetSessionKey(); $sql = "SELECT SessionKey from ".GetTablePrefix()."UserSession WHERE LastAccessed<$cutoff AND SessionKey != '$thiskey'"; $result = $this->adodbConnection->Execute($sql); $keys = array(); while ($result && !$result->EOF) { $keys[] = "SessionKey='" . $result->fields["SessionKey"] . "'"; $result->MoveNext(); } if(count($keys)>0) { $keywhere = implode(" OR ", $keys); $sql = "DELETE FROM ".GetTablePrefix()."SessionData WHERE $keywhere"; //echo $sql; $this->adodbConnection->Execute($sql); $this->adodbConnection->Execute("DELETE FROM ".GetTablePrefix()."UserSession WHERE LastAccessed<$cutoff"); $this->DeleteEditTables(); } } function SetSysPermCache() { unset($this->SysPermCache); $GroupList = $this->Get("GroupList"); if(strlen($GroupList) && $GroupList !="0") { $this->SysPermCache = array(); $sql = "SELECT * FROM ".GetTablePrefix()."Permissions WHERE Type=1 AND PermissionValue=1 AND GroupId IN (".$GroupList.")"; //echo $sql."<br>\n"; $rs = $this->adodbConnection->Execute($sql); while($rs && !$rs->EOF) { $val = $rs->fields["PermissionValue"]; if($val==1) $this->SysPermCache[$rs->fields["Permission"]] = 1; $PermList[] = $rs->fields["Permission"]; $rs->MoveNext(); } if( isset($PermList) && count($PermList) > 0) // I think this is never issued (comment by Alex) $this->SetVariable("SysPerm",implode(",",$PermList)); } } function GetSysPermCache() { $perms = trim($this->GetVariable("SysPerm")); if(!strlen($perms)) { $this->SetSysPermCache(); } else { $p = explode(",",$perms); $this->SysPermCache = array(); for($i=0;$i<count($p);$i++) { $n = $p[$i]; $this->SysPermCache[$n]=1; } } } function SysPermCacheLoaded() { return (isset($this->SysPermCache)); } function ResetSysPermCache() { // echo "Resetting Perm Cache<br>\n"; $this->SetVariable("SysPerm",""); unset($this->SysPermCache); //$this->SysPermCache=array(); } function HasSystemPermission($PermissionName) { global $objGroups; if($this->Get("PortalUserId")==-1 && ($PermissionName=="ADMIN" || $PermissionName=="LOGIN")) return TRUE; //echo "Looking up $PermissionName:".$this->Get("GroupList")."<br>\n"; //echo $this->Get("GroupList")." - ".$this->PermCacheGroups; $GroupList = $this->Get("GroupList"); if(substr($GroupList,-1)==",") { $GroupList = substr($GroupList,0,-1); $this->Set("GroupList",$GroupList); } //print_pre( $GroupList); if($this->Get("GroupList")!=$this->PermCacheGroups) $this->ResetSysPermCache(); if(!$this->SysPermCacheLoaded()) { //echo "Loading Perm Cache<br>\n"; $this->GetSysPermCache(); $this->PermCacheGroups = $this->Get("GroupList"); } //echo "SysPerm $PermissionName: [". $this->SysPermCache[$PermissionName]."]<br>\n"; return isset($this->SysPermCache[$PermissionName]) ? $this->SysPermCache[$PermissionName] == 1 : false; } function HasCatPermission($PermissionName,$CatId=NULL) { global $objCatList, $objUsers; $PermSet =FALSE; $Value = 0; if($this->Get("PortalUserId")==-1) return TRUE; if(!strlen($PermissionName)) return FALSE; $GroupList = $this->Get("GroupList"); if(substr($GroupList,-1)==",") { $GroupList = substr($GroupList,0,-1); $this->Set("GroupList",$GroupList); } if(!strlen($this->Get("SessionKey"))) $this->Set("GroupId",0); if(strlen(trim($GroupList))) { if(strlen($this->Get("GroupId"))) { $GroupList = $this->Get("GroupId").",".$GroupList; } } else { $GroupList = $this->Get("GroupId"); } if($CatId == NULL) { $CatId = $objCatList->CurrentCategoryID(); } $Cat = &$objCatList->GetCategory($CatId); $Value=""; for($p=0;$p<count($this->PermCache);$p++) { $pItem = $this->PermCache[$p]; if($pItem["perm"]==$PermissionName && $pItem["cat"]==$CatId) { $Value=$pItem["value"]; break; } } if(is_object($Cat) && !is_numeric($Value)) { $Value = 0; $CatList = $Cat->Get("ParentPath"); $CatList = substr($CatList,1,-1); $CatList = str_replace("|",",",$CatList); if(strlen($CatList)) { $CatList ="0,".$CatList; } else $CatList = "0"; $sql = "SELECT * FROM ".GetTablePrefix()."Permissions WHERE Permission LIKE '$PermissionName' AND CatId IN ($CatList) AND GroupId IN ($GroupList)"; // echo $sql."<br>\n"; $rs = $this->adodbConnection->Execute($sql); $PermValue = array(); while($rs && !$rs->EOF) { $index = $rs->fields["CatId"]; if(!is_numeric($PermValue[$index])) $PermValue[$index] = $rs->fields["PermissionValue"]; $rs->MoveNext(); } $cats = array_reverse(explode(",",$CatList)); for($c=0;$c<count($cats);$c++) { $index = $cats[$c]; if(is_numeric($PermValue[$index])) { $Value = $PermValue[$index]; break; } } $perm = array(); $perm["perm"] = $PermissionName; $perm["cat"] = $CatId; $perm["value"] = $Value; array_push($this->PermCache, $perm); } //echo $GroupList." Has Permission $PermissionName = $Value<br>\n"; return $Value; } function HasCatPermInList($PermList,$CatId=NULL, $System=FALSE) { $value = 0; if(strlen($PermList)) { $plist = explode(",",$PermList); $value=0; for($p=0;$p<count($plist);$p++) { if($this->HasCatPermission($plist[$p])) { $value = 1; break; } else { if($System) { if($this->HasSystemPermission($plist[$p])) { $value = 1; break; } } } } } return $value; } function GetACLClause() { $GroupList = $this->Get("GroupList"); if(strlen($GroupList)) $Groups = explode(",",$GroupList); $acl_where = ""; if(@count($Groups)>0 && is_array($Groups)) { $acl_where = array(); for($i=0;$i<count($Groups);$i++) { $g = $Groups[$i]; if(strlen($g)>0) $acl_where[] = "(FIND_IN_SET($g,acl) OR ((NOT FIND_IN_SET($g,dacl)) AND acl='')) "; } if(count($acl_where)) { $acl_where = "(".implode(" OR ",$acl_where).")"; } else $acl_where = "(FIND_IN_SET(0,acl))"; } else $acl_where = "(FIND_IN_SET(0,acl))"; return $acl_where; } function GetEditTable($base_table) { $prefix = GetTablePrefix(); if(strlen($prefix)) { if(substr($base_table,0,strlen($prefix))!=$prefix) $base_table = $prefix.$base_table; } $table = $prefix."ses_".$this->GetSessionKey()."_edit_".$base_table; //echo "Table: $table <br>\n"; return $table; } function GetSessionTable($base_table,$name) { $prefix = GetTablePrefix(); if(strlen($prefix)) { if(substr($base_table,0,strlen($prefix))!=$prefix) $base_table = $prefix.$base_table; } $table = $prefix."ses_".$this->GetSessionKey()."_".$name.$base_table; //echo "Table: $table <br>\n"; return $table; } function GetSearchTable($base_table="") { $prefix = GetTablePrefix(); if(strlen($base_table)) { if(strlen($prefix)) { if(substr($base_table,0,strlen($prefix))!=$prefix) $base_table = $prefix.$base_table; } $table = $prefix."ses_".$this->GetSessionKey()."_search_".$base_table; } else $table = $this->GetSessionTable('Search',''); //$prefix."ses_".$this->GetSessionKey()."_search"; return $table; } function GetTotalSessions() { # $time = time() - 900; $sql = "SELECT count(*) as SesCount FROM ".GetTablePrefix()."UserSession"; $result = $this->adodbConnection->Execute($sql); if ($result === false) { $this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"GetTotalSessions"); return false; } return $result->fields["SesCount"]; } function Query_UserSession($whereClause,$orderByClause) { $resultSet = array(); $sql = "SELECT ".GetTablePrefix()."* FROM ".GetTablePrefix()."UserSession "; if(isset($whereClause)) $sql = sprintf('%s WHERE %s',$sql,$whereClause); if(isset($orderByClause)) $sql = sprintf('%s ORDER BY %s',$sql,$orderByClause); $result = $this->adodbConnection->Execute($sql); if ($result === false) { $this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Query_UserSession"); return false; } while (!$result->EOF) { $item = new clsUserSession(NULL); $item->Set("SessionKey",$result->fields["SessionKey"]); $item->Set("LastAccessed", $result->fields["LastAccessed"]); $item->Set("PortalUserId", $result->fields["PortalUserId"]); $item->Set("Language", $result->fields["Language"]); $item->Set("Theme" , $result->fields["Theme"]); array_push($resultSet,$item); $result->MoveNext(); } return $resultSet; } function GetUniqueKey() { while(true) { /* create the new session key here */ mt_srand(100000000*(double)microtime()); $sessionId=strtoupper(sprintf("AD%xFD",mt_rand(100000000,999999999))); //9 digit hex session id $query = "select SessionKey from ".GetTablePrefix()."UserSession "; $query .= "where SessionKey='$sessionId' OR CurrentTempKey='$sessionId' OR PrevTempKey='$sessionId'"; $rs = $this->adodbConnection->Execute($query); if($rs->EOF) break; if($i>100) { return ""; } $i++; } //echo "Getting Unique Key: $sessionId<br>"; return $sessionId; } function GetNewSession() { global $sessionId, $objConfig, $objLanguages, $m_var_list; $i=0; if($this->Get("PortalUserId")>0 || $objConfig->Get("GuestSessions")==1) { //echo "Creating Session<br>\n"; $sessionId = $this->GetUniqueKey(); $this->Set("SessionKey", $sessionId); $this->Set("CurrentTempKey",$sessionId); if($m_var_list["lang"]) { $this->Set("Language",$m_var_list["lang"]); } else $this->Set("Language", $objLanguages->GetPrimary()); $this->SetThemeName(); //$this->Set("Theme", $objConfig->Get("Default_Theme")); $this->UpdateAccessTime(); $this->Set("IpAddress", $_SERVER['REMOTE_ADDR'] ); $this->Create(); } else $this->Set("SessionKey",""); } function SessionEnabled() { $res = FALSE; $key = $this->GetSessionKey(); if(strlen($key)>0) $res = TRUE; return $res; } function GetSessionKey() { return $this->Get("SessionKey"); } function SetThemeName($id=0) { global $objThemes; if($id==0) $id = $objThemes->GetPrimaryTheme(); $Theme = $objThemes->GetItem($id); $name = $Theme->Get("Name"); $this->Set("Theme",$name); //$this->Update(); } function ValidSession($SessionKey=NULL) { global $objConfig; $a = $this->Get("LastAccessed"); $cutoff = time()-$objConfig->Get("SessionTimeout"); //echo $a." ".$cutoff."<br>"; //$ip = ($_SERVER['REMOTE_ADDR'] == $this->Get("IpAddress")); //echo $this->Get("IpAddress"); //$ip = TRUE; if ($a < $cutoff) { //$this->UpdateAccessTime(); } return ($a >= $cutoff); } function UpdateAccessTime() { $now = time(); $this->Set("LastAccessed",$now); } function InSpamControl($ResourceId,$DataType=NULL) { static $ClearStat; if(!$ClearStat) $this->PurgeSpamControl(); $ClearStat=1; if(strlen($DataType)) $DataType="'".$DataType."'"; $sql = "SELECT count(*) as SpamCount FROM ".GetTablePrefix()."SpamControl WHERE ItemResourceId=$ResourceId AND DataType=$DataType"; if($this->Get("PortalUserId")==0) { $sql .= " AND PortalUserId=0 AND IPaddress='".$_SERVER["REMOTE_ADDR"]."'"; } else { $sql .= " AND PortalUserId=".$this->Get("PortalUserId"); } $rs = $this->adodbConnection->Execute($sql); $value = (int)$rs->fields["SpamCount"]; if($value>0) { return TRUE; } else return FALSE; } function AddToSpamControl($ResourceId,$secstoexpire,$DataType=NULL) { $expire = adodb_date("U") + $secstoexpire; if(strlen($DataType)) $DataType = "'".$DataType."'"; $sql = "INSERT INTO ".GetTablePrefix()."SpamControl (ItemResourceId,IPaddress,Expire,PortalUserId,DataType) VALUES ("; $sql .= $ResourceId.",'".$_SERVER["REMOTE_ADDR"]."',$expire,".$this->Get("PortalUserId").",$DataType)"; //echo $sql; $this->adodbConnection->Execute($sql); } function PurgeSpamControl() { $sql = "DELETE FROM ".GetTablePrefix()."SpamControl WHERE Expire<".adodb_date("U"); $this->adodbConnection->Execute($sql); } }/* clsUserSession */ ?> Property changes on: trunk/kernel/include/usersession.php ___________________________________________________________________ Modified: cvs2svn:cvs-rev ## -1 +1 ## -1.8 \ No newline at end of property +1.9 \ No newline at end of property Index: trunk/admin/include/style.css =================================================================== --- trunk/admin/include/style.css (revision 268) +++ trunk/admin/include/style.css (revision 269) @@ -1,461 +1,469 @@ .CURRENT_PAGE {font-size:12px; background-color: #C4C4C4; font-family: verdana; font-weight:bold; padding-left:1px; padding-right:1px} .NAV_URL {font-size:12px; color: #1F569A; font-family: verdana; font-weight:bold; } .NAV_ARROW {font-size:12px; color: #1F569A; font-family: verdana; font-weight:normal; padding-left:3px; padding-right:3px} .NAV_CURRENT_ITEM {font-size:12px; color:#666666; font-family: verdana; font-weight:normal; font-weight:bold; } .priority {color: #ff0000; padding-left:1px; padding-right:1px; font-size:11px; } .validation_error { FONT-WEIGHT: bold; FONT-SIZE: 12px; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none; color: red; } .checksection { BORDER-RIGHT: 1px; BORDER-TOP: 1px; LEFT: 0px; VISIBILITY: hidden; BORDER-LEFT: 1px; BORDER-BOTTOM: 1px; POSITION: absolute; TOP: 0px; BACKGROUND-COLOR: #acacac } .text { FONT-WEIGHT: normal; FONT-SIZE: 12px; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .small { FONT-SIZE: 9px; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif } .tab { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: verdana, arial, helvetica; TEXT-DECORATION: none } .tab2 { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ffffff; FONT-FAMILY: verdana, arial, helvetica; TEXT-DECORATION: none } .tab2:hover { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: verdana, arial, helvetica; TEXT-DECORATION: none } .tab:hover { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: verdana, arial, helvetica; TEXT-DECORATION: none } .tab_border { BORDER-RIGHT: #000000 0px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 0px solid; BORDER-BOTTOM: #000000 0px solid } .table_tab { FONT-WEIGHT: bold; FONT-SIZE: 20px; COLOR: #ffffff; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #666666; TEXT-DECORATION: none } .button { FONT-WEIGHT: normal; FONT-SIZE: 12px; BACKGROUND: url(../images/button_back.gif) #f9eeae repeat-x; COLOR: black; FONT-FAMILY: arial, verdana; TEXT-DECORATION: none } .button1 { FONT-SIZE: 9px; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #a3d799 } .button2 { FONT-SIZE: 9px; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #fe8b7e } .button3 { FONT-SIZE: 9px; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #999999 } .buttonsmall { FONT-SIZE: 9px; CURSOR: hand; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #f9eeae } .toolbar { BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 0px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #f0f1eb } .actionborder_full { BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; FONT-SIZE: 10pt; BORDER-LEFT: #999999 1px solid; BORDER-BOTTOM: #999999 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif } .actiontitle { FONT-SIZE: 8pt; COLOR: #ffffff; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #999999 } .action_link { FONT-SIZE: 10px; COLOR: black; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif } .action_link:hover { FONT-SIZE: 10px; COLOR: #009ff0; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif } .pagenav { BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 0px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #e0e0da } .navbar { FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #006699; FONT-FAMILY: verdana, arial, sans-serif; TEXT-DECORATION: none } .navbar:hover { FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #009ff0; FONT-FAMILY: verdana, arial, sans-serif; TEXT-DECORATION: none } .navbar_selected { FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #ffffff; FONT-FAMILY: verdana, arial, sans-serif; BACKGROUND-COLOR: #006699; TEXT-DECORATION: none } .tablenav { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #73c4f5; TEXT-DECORATION: none; } .tablenav_link { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .tablenav_link:hover { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #ffcc00; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .selection { BACKGROUND-COLOR: #c6d6ef } .error { FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #ff0000; FONT-FAMILY: Arial, Helvetica, sans-serif } .error2 { FONT-WEIGHT: bold; FONT-SIZE: 7pt; COLOR: #ff0000; FONT-FAMILY: Arial, Helvetica, sans-serif } .disabled_text { FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #CCCCCC; FONT-FAMILY: Arial, Helvetica, sans-serif } .marg { MARGIN: 5px } .table_header_text { MARGIN-BOTTOM: 2px; MARGIN-LEFT: 5px } .table_text { PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 8px; PADDING-TOP: 8px } .divider { BACKGROUND-COLOR: #999999 } .divider_tab { BACKGROUND-COLOR: #999999 } .admintitle, .admintitle-white { FONT-WEIGHT: bold; FONT-SIZE: 20px; COLOR: #009ff0; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .admintitle-white { color: #fff } .tabletitle { FONT-WEIGHT: bold; FONT-SIZE: 17px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #73c4f5; TEXT-DECORATION: none } .subsectiontitle { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none; height: 24px } .subsectiontitle:hover { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #ffcc00; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none } .columntitle { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none } .columntitle:hover { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #ffcc00; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none } .columntitle_small { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none } .columntitle_small:hover { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ffcc00; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none } .permissions1 { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #bb0000; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .permissions1:hover { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #bb0000; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .permissions2 { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #c8601a; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .permissions2:hover { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #c8601a; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .permissions3 { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ea8c00; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .permissions3:hover { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ea8c00; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .permissions4 { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #e6b800; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .permissions4:hover { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #e6b800; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .permissions5 { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #92bc2e; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .permissions5:hover { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #92bc2e; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .permissions6 { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #339900; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .permissions6:hover { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #339900; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .permissions1_cell { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #bb0000; TEXT-DECORATION: none } .permissions2_cell { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #c8601a; TEXT-DECORATION: none } .permissions3_cell { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #ea8c00; TEXT-DECORATION: none } .permissions4_cell { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #e6b800; TEXT-DECORATION: none } .permissions5_cell { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #92bc2e; TEXT-DECORATION: none } .permissions6_cell { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #339900; TEXT-DECORATION: none } .table_color1 { FONT-WEIGHT: normal; FONT-SIZE: 14px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #f6f6f6; TEXT-DECORATION: none } .table_color2 { FONT-WEIGHT: normal; FONT-SIZE: 14px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #ebebeb; TEXT-DECORATION: none } .head_version { PADDING-RIGHT: 5px; FONT-WEIGHT: normal; FONT-SIZE: 10px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .form_note { FONT-WEIGHT: normal; FONT-SIZE: 10px; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .tree_head { FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .tree_head_credits { FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } .tree_head_credits:hover { FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none } H1.selector { FONT-WEIGHT: bold; FONT-SIZE: 18pt; FONT-FAMILY: Arial } BODY { SCROLLBAR-FACE-COLOR: #009ffd; FONT-SIZE: 12px; SCROLLBAR-HIGHLIGHT-COLOR: #009ffd; SCROLLBAR-SHADOW-COLOR: #009ffd; COLOR: #000000; SCROLLBAR-3DLIGHT-COLOR: #333333; SCROLLBAR-ARROW-COLOR: #ffffff; SCROLLBAR-TRACK-COLOR: #88d2f8; FONT-FAMILY: Verdana, Arial, Helvetica, Sans-serif; SCROLLBAR-DARKSHADOW-COLOR: #333333; OVERFLOW-X: auto; OVERFLOW-Y: auto; } TD { FONT-SIZE: 10pt; FONT-FAMILY: verdana,helvetica; TEXT-DECORATION: none } .tableborder { BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 0px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif } .tableborder_full { BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif; background-image: url(../images/tab_middle.gif); background-repeat: repeat-x; } .header_left_bg { background-image: url(../images/tabnav_left.jpg); background-repeat: no-repeat; } .tableborder_full_a { BORDER-RIGHT: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif } A { COLOR: #006699; TEXT-DECORATION: none } A:hover { COLOR: #009ff0; TEXT-DECORATION: none } .control_link {font-size:12px; color: #1F569A; font-family: verdana; font-weight:bold; } .control_link:hover { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #009ff0; FONT-FAMILY: verdana, arial } .header_link { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #003399; FONT-FAMILY: verdana, arial } .header_link:hover { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #009ff0; FONT-FAMILY: verdana, arial } .tree { FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: helvetica, arial, verdana, helvetica; TEXT-DECORATION: none } .cat { FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #003399; FONT-FAMILY: arial, helvetica, sans-serif } .cat:hover { FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #009ff0; FONT-FAMILY: arial, helvetica, sans-serif } .catsub { FONT-SIZE: 8pt; COLOR: #000090; FONT-FAMILY: arial, helvetica, sans-serif } .catsub:hover { FONT-SIZE: 8pt; COLOR: #9d9ddc; FONT-FAMILY: arial, helvetica, sans-serif } .cat_no { FONT-SIZE: 10px; COLOR: #707070; FONT-FAMILY: arial, verdana, sans-serif } .cat_desc { FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: arial,verdana,sans-serif } .cat_new { FONT-SIZE: 12px; VERTICAL-ALIGN: super; COLOR: blue; FONT-FAMILY: arial, verdana, sans-serif } .cat_pick { FONT-SIZE: 12px; VERTICAL-ALIGN: super; COLOR: #009900; FONT-FAMILY: arial, helvetica, sans-serif } .cats_stats { FONT-SIZE: 11px; COLOR: #707070; FONT-FAMILY: arial,verdana,sans-serif; } .cat_detail { FONT-SIZE: 8pt; COLOR: #707070; FONT-FAMILY: arial,verdana,sans-serif } .cat_fullpath { FONT-SIZE: 8pt; COLOR: #707070; FONT-FAMILY: arial,verdana,sans-serif } .action1 { FONT-SIZE: 12px; COLOR: #006600; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action1:link { FONT-SIZE: 12px; COLOR: #006600; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action1:unknown { FONT-SIZE: 12px; COLOR: #006600; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action1:unknown { FONT-SIZE: 12px; COLOR: #006600; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action1:hover { FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action2 { FONT-WEIGHT: normal; FONT-SIZE: 12px; COLOR: #990000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action2:link { FONT-SIZE: 12px; COLOR: #990000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action2:unknown { FONT-SIZE: 12px; COLOR: #990000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action2:unknown { FONT-SIZE: 12px; COLOR: #990000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action2:hover { FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action3 { FONT-SIZE: 12px; COLOR: #a27900; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action3:link { FONT-SIZE: 12px; COLOR: #a27900; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action3:unknown { FONT-SIZE: 12px; COLOR: #a27900; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action3:unknown { FONT-SIZE: 12px; COLOR: #a27900; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action3:hover { FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action4 { FONT-SIZE: 12px; COLOR: #800080; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action4:link { FONT-SIZE: 12px; COLOR: #800080; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action4:unknown { FONT-SIZE: 12px; COLOR: #800080; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action4:unknown { FONT-SIZE: 12px; COLOR: #800080; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action4:hover { FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action5 { FONT-SIZE: 12px; COLOR: #0079a2; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action5:link { FONT-SIZE: 12px; COLOR: #0079a2; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action5:unknown { FONT-SIZE: 12px; COLOR: #0079a2; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action5:unknown { FONT-SIZE: 12px; COLOR: #0079a2; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .action5:hover { FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none } .hint { FONT-SIZE: 12px; COLOR: #666666; FONT-STYLE: normal; FONT-FAMILY: Arial, Helvetica, sans-serif } .hint_red { FONT-SIZE: 10px; COLOR: #FF0000; FONT-STYLE: normal; FONT-FAMILY: Arial, Helvetica, sans-serif } .tabTable { background-color: #d7d7d7; border-width: 1px; border-style: solid; border-color: black; } .navbar_link { FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #006699; FONT-FAMILY: verdana, arial, sans-serif; TEXT-DECORATION: underline; } form{ display : inline; } .admintitle-white { color: #fff } .tableborder { BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 0px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif } .tableborder_full { BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif } .tableborder_full_a { BORDER-RIGHT: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif } .link { cursor: hand; } .cat_link { font-family: arial, helvetica, sans-serif; font-size: 10pt; color: #006699; } .help_box { padding: 5px 10px 5px 10px; } /* debug output styles */ .debug_table { border: 1px solid green; border-width: 0 0 1 1; } .debug_table TD, .debug_text { color: #000000; font-family: Arial, Helvetica; font-size: 13px; } .debug_table TD { border: 1px solid green; border-width: 1 1 0 0; +} + +.debug_layer { + position: relative; + overflow: auto; + + height: 300px; + width: 600px; } \ No newline at end of file Property changes on: trunk/admin/include/style.css ___________________________________________________________________ Modified: cvs2svn:cvs-rev ## -1 +1 ## -1.7 \ No newline at end of property +1.8 \ No newline at end of property