Index: trunk/kernel/action.php
===================================================================
--- trunk/kernel/action.php	(revision 899)
+++ trunk/kernel/action.php	(revision 900)
@@ -1,2472 +1,2472 @@
 <?php
 
 $ro_perm = $objSession->HasSystemPermission("SYSTEM_ACCESS.READONLY");
 
 // ====== Debugger related: begin ======
 $script = basename($_SERVER['PATH_TRANSLATED']);
 $skipDebug = Array('index.php','tree.php','head.php','credits.php');
 if( admin_login() && !in_array($script, $skipDebug) )
 {
 	if( IsDebugMode() )
 	{
 		if($Action) $debugger->setHTMLByIndex(1,'Kernel Action: <b>'.$Action.'</b>','append');
 		echo '<a href="javascript:self.location.reload();">Reload Frame</a> || ';
 		echo '<a href="javascript:toggleDebugLayer();">Show Debugger</a><br>';
 	}
 }
 unset($script, $skipDebug);
 // ====== Debugger related: end ======
 
 	switch($Action)
 	{
 		case "m_save_import_config":
          	// Set New Import Category
          	if( GetVar('categorylist', true) !== false )
          	{
    		 		$cat_id = $_POST['categorylist'];
 			  	$objSession->SetVariable('categoryid', $cat_id); 		  	
    			  	
 			  	if($cat_id > 0)
 			  	{
 				  	$cat = $objCatList->GetByResource($cat_id);
 	    			if(is_object($cat))
 				    {    
 	      				$navbar = $cat->Get('CachedNavbar');
 	      				$objSession->SetVariable('catnavbar', $navbar);
 	      				$objSession->SetVariable('import_category_id', $cat->UniqueId() );
 				    }
 			  	}elseif($cat_id == 0)
 			  	{
 			  		global $objConfig;
 	      			$objSession->SetVariable('import_category_id', 0);
 			  	}
 			    
 			    $objSession->SetVariable('categorylist', $_POST['categorylist']);
 			}
 			
 			// Set Import Admin Group
 			if( GetVar('grouplist1', true) )
 			{              
 				$group_id = $_POST['grouplist1'];
 				$group = $objGroups->GetItemByField('ResourceId',$group_id);
                 $objSession->SetVariable('user_admin_names', $group->Get('Name')); 
                 $objSession->SetVariable('user_admin_values', $group->Get('GroupId'));
                 $objSession->SetVariable('grouplist1', $_POST['grouplist1']);
 			}   
               
 			// Set Import User Group
 			if( GetVar('grouplist2', true) )
 			{              
             	$group_id = $_POST['grouplist2'];
 				$group = $objGroups->GetItemByField('ResourceId', $group_id);
                 $objSession->SetVariable('user_regular_names', $group->Get('Name')); 
                 $objSession->SetVariable('user_regular_values', $group->Get('GroupId'));
                 $objSession->SetVariable('grouplist2', $_POST['grouplist2']);
 			}
         	break;
 		
 		case "m_add_user":		  
 	  	  	$dupe_user = '';
 			//$user_pending = (int)$_POST["user_pending"];
 			//$user_enabled = (int)$_POST["user_enabled"];
 			$CreatedOn = DateTimestamp($_POST["user_date"],GetDateFormat()); 
          	$CreatedOn += SecondsSinceMidnight($_POST["user_time"]);
          
 			$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()); 
          	//$CreatedOn += SecondsSinceMidnight($_POST["user_time"]);
             $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":		 
 		  	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($ro_perm) break;
 	     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], 0);
 					}
 				  }
 				  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": // not sure if action is used anywhere
 			if($ro_perm) break;
 			$useridlist = implode("-", $userlist);
 			$objSession->SetUserStatus($useridlist, "g_usergroup_status");
 			$g_usergroup_status = $useridlist;
 			break;
 			
 		case "m_group_assign": // not sure if action is used anywhere
 			if($ro_perm) break;
 			foreach($grouplist as $group) $objGroups->Add_Users_To_Group($group);
 			break;
 			
 		case "m_remove_group":
 			if($ro_perm) break;
 			$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":
 			if($ro_perm) break;
 			$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;
 	      $objSession->SetVariable("HasChanges", 1);
 	      $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;
          $objSession->SetVariable("HasChanges", 1);
          $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;
           $objSession->SetVariable("HasChanges", 1);
           $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;
            $objSession->SetVariable("HasChanges", 1);
            $user = $_POST["UserId"];
            //if($user>0)
            //{  
              foreach($_POST["itemlist"] as $groupid)
              {
                 $g = $objGroups->GetItem($groupid);
                 $g->DeleteUser($user);
              }
            //}
       break;
       case "m_sendmail":
           if($ro_perm) break;
 	      $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":
       	if($ro_perm) break;
      	RunDown($m_var_list["cat"],"UpdateCacheCounts");
      	break;
      	
      case "m_cat_delete":         
         if($ro_perm) break; 
      	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($ro_perm) break;    
      	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($ro_perm) break;    
      	if(isset($_POST["catlist"]))
         {
 			$objCatList->CopyToClipboard("COPY","CategoryId",$_POST["catlist"]);
         }
      break;
 
      case "m_paste":
 	    if($ro_perm) break; 
      	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($ro_perm) break; 
      	if (isset($_POST["catlist"]))
          {         
              foreach($_POST["catlist"] as $catid)
              {
                  $cat =& $objCatList->GetCategory($catid);
                  $cat->MoveUp();
              }
          }
      	break;
      	
      case "m_cat_move_down":
         if($ro_perm) break; 
      	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($ro_perm) break;
      	if (isset($_POST["catlist"]))
      	{
      		foreach($_POST["catlist"] as $catid)
      		{
      			$cat =& $objCatList->GetCategory($catid);
      			$cat->Approve();
      		}
      	}
      break;
      case "m_cat_decline":
 	     if($ro_perm) break;
 	     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":
          $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();
          $NewId = intval($ado->GetOne('SELECT MIN(RelationshipId) as MinValue FROM '.$RelList->SourceTable));
          if($NewId > 0) $NewId = 0;
          $NewId--;
          
          $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 = GetVar('cat_pick', true);
          $Status = (int)$_POST["status"];
          $Hot = false; //(int)$_POST["itemhot"];
          $Pop = false; //(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
          if( GetVar('CategoryId') > 0 )
          {
 	         $original_cats = new clsCatList();
 	         $original_cat = $original_cats->GetItemByField('CategoryId', GetVar('CategoryId'));
 	         if( $original_cat->Get('Name') != stripslashes($_POST['cat_name'] )) 
 	         	$objSession->SetVariable('PermCache_UpdateRequired', 1);
 	         unset($original_cat, $original_cats);
          }
          else
          {
          	$objSession->SetVariable('PermCache_UpdateRequired', 1);
          }
          // 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"];                   
 
             $objCustomEdit = new clsCustomDataList($objSession->GetEditTable("CustomMetaData"));
             $objCustomEdit->LoadResource($id);
             $CustomFields = new clsCustomFieldList($_POST['CustomType']);
             $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"),$id,$value);
             			$DataChanged = TRUE;
             		}
             	}
             }          	
             if($DataChanged)
             	$objCustomEdit->SaveData();                            
 /*		
      	$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);
         }
         
         $vals = $_POST["multiple"];
 
         if (count($vals) > 0) {
 	        foreach($vals as $var=>$value)
 	        {
 	            $cfg = "Search_ShowMultiple_".$var;
 	            $objConfig->Set($cfg,$value);
 	        }
 		}
 		else {
 			$cfg = "Search_ShowMultiple_".$_POST['cfg_var'];
 			$objConfig->Set($cfg, 0);
 		}
 		
 		if (isset($_POST['minkeyword'])) {
 			$objConfig->Set("Search_MinKeyword_Length", $_POST['minkeyword']);
 		}
         
         $objConfig->Save();
      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":
          $ado = &GetADODBConnection();
          $rs = $ado->Execute("SELECT COUNT(*) as c FROM ".GetTablePrefix().'Theme WHERE Name="'.$_POST["name"].'"');
          if(!$rs->fields["c"])
          {
 	         $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"],$Primary,
 	                                      (int)$_POST["CacheTimeout"]);
 	         $t->Files->ThemeId=$t->Get("ThemeId");
 	
 	         $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";
 	         $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($ro_perm) break;    
      	if (isset($_POST["itemlist"]))
          {   
              $Themes = new clsThemeList();
              foreach($_POST["itemlist"] as $id)
              {
                  $Themes->DeleteTheme($id);
              }
          }
      break;
      case "m_theme_primary":
      	if($ro_perm) break;
      	if( count($_POST['itemlist']) )
      	{
      		$ThemeId = array_shift( $_POST['itemlist'] );
      		$t = new clsThemeList();
      		$t->SetPrimaryTheme($ThemeId);
      	}
      	break;
      
      case "m_template_edit":
        	if($ro_perm) break;
        	$objSession->SetVariable("HasChanges", 1);
        	$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":
       	if($ro_perm) break;
       	$objSession->SetVariable("HasChanges", 1);
       	$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":
      	if($ro_perm) break;
      	$objSession->SetVariable("HasChanges", 1);
 		$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)
          {         	
             // Phrase import
 /*
          	$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();
             }
 */            
 			$sql='INSERT INTO '.$objSession->GetEditTable('Phrase').' SELECT Phrase, Translation, PhraseType, 0-PhraseId, '.$NewId.' FROM '.GetTablePrefix().'Phrase WHERE LanguageId='.$_POST['srcpack'];
             $ado->Execute($sql);
             // Events import
             $sql = "SELECT * FROM ".GetTablePrefix()."EmailMessage WHERE LanguageId=".$_POST["srcpack"];
             if($objSession->HasSystemPermission("DEBUG.LIST"))
                 echo $sql."<br>\n";
 
             $rs = $ado->Execute($sql); 
             
             $eList = new clsEmailMessageList();
             //$eList->SourceTable = $objSession->GetEditTable("EmailMessage");
             
        		if (!$l->TableExists($objSession->GetEditTable("EmailMessage"))) {
        			$eList->CreateEmptyEditTable("EmailMessageId", true);
        			$eList->SourceTable = $objSession->GetEditTable("EmailMessage");
        		}
        		else {
        			$eList->SourceTable = $objSession->GetEditTable("EmailMessage");
        		}
             
             $sql = "SELECT MIN(EmailMessageId) as MinId FROM ".$eList->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;
                 $eList->AddEmailEvent($data["Template"], $data["MessageType"], $NewId, $data["EventId"]);
                 
                 $sql = "UPDATE ".$eList->SourceTable." SET EmailMessageId=$MinId WHERE EmailMessageId=0 LIMIT 1";
                 $ado->Execute($sql);
                 
                 $MinId--;
                 
                 $rs->MoveNext();
             }            
          }
      break;
      case "m_lang_export":
      	if($ro_perm) break;
      	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"],
                                      $_POST['charset']);
                                      
          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);
             
             // Events import
             $sql = "SELECT * FROM ".GetTablePrefix()."EmailMessage WHERE LanguageId=".$_POST["srcpack"];
             if($objSession->HasSystemPermission("DEBUG.LIST"))
                 echo $sql."<br>\n";
 
             $rs = $ado->Execute($sql); 
             
             $eList = new clsEmailMessageList();
             //$eList->SourceTable = $objSession->GetEditTable("EmailMessage");
             $l = new clsEmailMessage();
        		if (!$l->TableExists($objSession->GetEditTable("EmailMessage"))) {
        			$eList->CreateEmptyEditTable("EmailMessageId", true);
        			$eList->SourceTable = $objSession->GetEditTable("EmailMessage");
        		}
        		else {
        			$eList->SourceTable = $objSession->GetEditTable("EmailMessage");
        		}
             
             $sql = "SELECT MIN(EmailMessageId) as MinId FROM ".$eList->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;
                 $eList->AddEmailEvent($data["Template"], $data["MessageType"], $_POST["LanguageId"], $data["EventId"]);
                 
                 $sql = "UPDATE ".$eList->SourceTable." SET EmailMessageId=$MinId WHERE EmailMessageId=0 LIMIT 1";
                 $ado->Execute($sql);
                 
                 $MinId--;
                 
                 $rs->MoveNext();
             }
             unset($eList);
          }
 
      break;
      case "m_lang_delete":
 	     if($ro_perm) break;
 	     if (isset($_POST["itemlist"]))
 	     {
 	     	$Phrases = new clsPhraseList();
 	     	$Messages = new clsEmailMessageList();
 	     	foreach($_POST["itemlist"] as $id)
 	     	{
 	     		$objLanguages->DeleteLanguage($id);
 	     		$Phrases->DeleteLanguage($id);
 	     		$Messages->DeleteLanguage($id);
 	     	}
 	     	unset($Phrases);
 	     	unset($Messages);
 	     }
 	     break;
 	     
      case "m_lang_select":
         if($ro_perm) break; 
      	$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": 
      	 $objSession->SetVariable("HasChanges", 1);    
          $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":
         if($ro_perm) break;
         $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":
      	$objSession->SetVariable("HasChanges", 1);
      	if (isset($_POST["itemlist"]))
         {   
            foreach($_POST["itemlist"] as $id)
            {
            	 $sql = "UPDATE ".$objSession->GetEditTable("Phrase")." SET LanguageId = 0 WHERE PhraseId = ".$id;
            	 $ado = &GetADODBConnection();
            	 $ado->Execute($sql);
            }
         }
         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: "._unhtmlentities($_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();
        $NewId = $ado->GetOne('SELECT MIN(ImageId) as MinValue FROM '.$objImageList->SourceTable);
        if($NewId > 0) $NewId = 0;
        $NewId--;
        $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 = $objImageList->GetItem($id);             
              $img->Set("ResourceId", 0);
              $img->Update();
              //$img->Delete();
          }
        }
      break;
      case "m_restore_delete":
      	if($ro_perm) break;
      	$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":
 		if($ro_perm) break;
     	$SqlQuery = $_POST["sql"];
 		$ado = &GetADODBConnection();
 		if(strlen($sql))
 		{
 		  $SqlResult = $ado->Execute(stripslashes($SqlQuery));
   	  	  $SqlError = $ado->ErrorMsg();
 		  $SqlErrorNum = $ado->ErrorNo();
 		}
     break;
     case "m_purge_email_log":
 	 	 if($ro_perm) break;
 	 	 $ado = &GetADODBConnection();       	
 
 		$sql = "DELETE FROM ".GetTablePrefix()."EmailLog";
 		$ado->Execute($sql);
     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>";
 //print_pre($objSession);
 //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 ParentId 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->CopyFromEditTable("ImageId");
-	    	//$objImages->PurgeEditTable("ImageId");
+	    	//$objImages->CopyFromEditTable("ImageId");
+	    	$objImages->PurgeEditTable("ImageId");
 	    }
 	    $objCatList->Clear();
 	}
 	
 	/* User Edit */
 	if( GetVar('UserEditStatus') == 1 )
 	{
 		$objUserGroupsList = new clsUserGroupList();
 	    $objUserGroupsList->CopyFromEditTable("PortalUserId");		
 	    $objUsers->CopyFromEditTable("PortalUserId");
 	    $objCustomDataList->CopyFromEditTable("CustomDataId");
 	    $objGroups->Clear();
 	    $objImages = new clsImageList();
 	    $objImages->CopyFromEditTable("ImageId");    
 	}
 	if( GetVar('UserEditStatus') == 2 )
 	{
 		$objUserGroupsList = new clsUserGroupList();
 	    $objGroups->PurgeEditTable("PortalUserId");
 	    $objUserGroupsList->PurgeEditTable("PortalUserId");
 	    $objCustomDataList->PurgeEditTable("CustomDataId");
 	    $objGroups->Clear();
 	}
 	
 	/* Group Edit */
 	if( GetVar('GroupEditStatus') == 1 )
 	{
 		$objUserGroupsList = new clsUserGroupList();
 	    $objUserGroupsList->CopyFromEditTable("GroupId");		
 	    $objGroups->CopyFromEditTable("GroupId");
 	    $objCustomDataList->CopyFromEditTable("CustomDataId");
 	    $objGroups->Clear();
 	}
 	if( GetVar('GroupEditStatus') == 2 )
 	{
 		$objUserGroupsList = new clsUserGroupList();
 	    $objGroups->PurgeEditTable("GroupId");
 	    $objCustomDataList->PurgeEditTable("CustomDataId");
 	    $objUserGroupsList->PurgeEditTable("PortalUserId");
 	    $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 )
 	{
 	    $objLanguages->CopyFromEditTable();
 	    $objLanguages->Clear();
 	    $objLanguages->PurgeEditTable();
 	
 	    $Phrases = new clsPhraseList();
 	    $Phrases->CopyFromEditTable();
 	    $Phrases->Clear();
 	    $Phrases->PurgeEditTable();
 	    
 	    $Messages = new clsEmailMessageList();
 	    $Messages->CopyFromEditTable();
 	    $Messages->Clear();	    
 	}          
 	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 IF EXISTS ".$objPhraseList->SourceTable);
 	}
 	
 	if( GetVar('MissingLangEditStatus') == 2 )
 	{
 	  $table = $objSession->GetSessionKey()."_".$ThemeId."_labels";
 	  $ado = &GetADODBConnection();
 	  $ado->Execute("DROP TABLE IF EXISTS ".$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>";
 
 ?>
\ No newline at end of file

Property changes on: trunk/kernel/action.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.62
\ No newline at end of property
+1.63
\ No newline at end of property
Index: trunk/kernel/include/itemdb.php
===================================================================
--- trunk/kernel/include/itemdb.php	(revision 899)
+++ trunk/kernel/include/itemdb.php	(revision 900)
@@ -1,611 +1,611 @@
 <?php
 
 define('FT_OPTION', 1); // option formatter
 
 class clsItemDB 
 { 
   var $Formatters = Array(); //  by Alex
   var $m_dirtyFieldsMap = array();
   var $Data = array();
   var $adodbConnection;
   var $tablename;
   var $BasePermission;
   var $id_field;
   var $NoResourceId;
   var $debuglevel;
 
   var $SelectSQL = 'SELECT * FROM %s WHERE %s';
   
   function clsItemDB()
   {
       $this->adodbConnection = &GetADODBConnection();
       $this->tablename="";
       $this->NoResourceId=0;  
       $this->debuglevel=0;
   }
   
   // ============================================================================================
   function GetFormatter($field)
   {
   	return $this->HasFormatter($field) ? $this->Formatters[$field] : false;
   }
   
   function SetFormatter($field, $type, $params)
   {
   	// by Alex
   	// all params after 2nd are formmater type specific
   	$this->Formatters[$field]['type'] = $type;
   	switch($type)
   	{
   		case FT_OPTION:
   			$this->Formatters[$field]['options'] = $params;
   			break;	
   	}
   }
   /*	
   function FormatFields()
   {
 	// format item in list data before printing
 	
 	foreach($this->Formatters as $field => $formatter)
 		$this->Data[$field] = $this->FormatField($field);
   }
   */
   function FormatField($field)
   {
   	// formats single field if it has formatter
   	if( $this->HasFormatter($field) )
   	{
   		$fmt = $this->Formatters[$field];
   		switch($fmt['type'])
 		{
 			case FT_OPTION:
 				return $fmt['options'][ $this->Data[$field] ];
 				break;	
 		}
   	}
   	else
   		return $this->Get($field);
   }
   
   function HasFormatter($field)
   {
   	// checks if formatter is set for field
   	return isset($this->Formatters[$field]) ? 1 : 0;
   }
   // ============================================================================================
   
   function UnsetIdField()
   {
     $f = $this->IdField();
     unset($this->Data[$f]);
     unset($this->m_dirtyFieldsMap[$f]);
   }
 
   function UnsetField($field)
   {
       unset($this->Data[$field]);
       unset($this->m_dirtyFieldsMap[$field]);
   }
 
   function IdField()
   {
       if(!strlen($this->id_field))
       {      
         return $this->tablename."Id";
       }
       else
           return $this->id_field;
   }
 
   function UniqueId()
   {
       return $this->Get($this->IdField());
   }
 
   function SetUniqueId($value)
   {
       $var = $this->IdField();	  
       $this->Set($var, $value);
   }
 
   function SetModified($UserId=NULL,$modificationDate=null)
   {
       global $objSession;
       
       $keys = array_keys($this->Data);
       if(in_array("Modified",$keys))
       {
           $this->Set("Modified", isset($modificationDate) ? $modificationDate : adodb_date("U") );
       }
       if(in_array("ModifiedById",$keys))
       {
           if(!$UserId)
               $UserId = $objSession->Get("PortalUserId");
           $this->Set("ModifiedById",$UserId);
       }
   }
 
   function PrintVars()
   {
       echo '<pre>'.print_r($this->Data, true).'</pre>';
   }
   
 // =================================================================
   function GetFormatted($name)
   {	
       // get formatted field value
       return $this->FormatField($name);
   }
 
   function Get($name)
   {	
       // get un-formatted field value
       //if( !isset($this->Data[$name]) ) print_pre( debug_backtrace() );
       return $this->HasField($name) ? $this->Data[$name] : '';
   }
 // =================================================================
 
 	function HasField($name)
 	{
 		// checks if field exists in item
 		return isset($this->Data[$name]) ? 1 : 0;	
 	}
 	
 	/**
 	 * Set's value(-s) of field(-s) specified.
 	 * Modifies HasChanges flag automatically.
 	 *
 	 * @param string/array $name
 	 * @param string/array $value
 	 * @access public
 	 */
 	function Set($name, $value)
 	{
 		//echo "Setting Field <b>$name</b>: = [$value]<br>";
 		if( is_array($name) )
 		{
 			for ($i=0; $i < sizeof($name); $i++)
 			{
 				$this->_Set($name[$i],$value[$i]);
 			}
 		}
 		else
 		{
 			$this->_Set($name,$value);
 		}
 	}
 	
 	
 	/**
 	 * Set's value(-s) of field(-s) specified.
 	 * Modifies HasChanges flag automatically.
 	 *
 	 * @param string $name
 	 * @param string $value
 	 * @access private
 	 */
 	function _Set($name,$value)
 	{
 		$var = 'm_'.$name;
 		if( !$this->HasField($name) || $this->Data[$name] != $value )
 		{
 			if( !(isset($_GET['new']) && $_GET['new']) ) {
 				$this->DetectChanges($name, $value);
 			}
 			$this->Data[$name] = $value;
 			$this->m_dirtyFieldsMap[$name] = $value;
 		}
 	}
 
   function Dirty($list=NULL)
   {
       if($list==NULL)
       {
         foreach($this->Data as $field => $value)
         {
         	$this->m_dirtyFieldsMap[$field] = $value;
         }
       }
       else
       {      
         foreach($list as $field) 
         {	
        		$this->m_dirtyFieldsMap[$field] = $this->Data[$field];
         }
       }
   }
 
   function Clean($list=NULL)
   {
       if($list == NULL)
       {
           unset($this->m_dirtyFieldsMap);
           $this->m_dirtyFieldsMap=array();
       }
       else
       {      
         foreach($list as $value) 
         {	
           $varname = "m_" . $value;
           unset($this->m_dirtyFieldsMap[$value]);
         }
       }
   }
 
   function SetDebugLevel($value)
   {
       $this->debuglevel = $value;
   }
 
   function SetFromArray($data, $dirty = false)
   { 
       if(is_array($data))
       {      
         $this->Data = $data;
         if($dirty) $this->m_dirtyFieldsMap = $data;
       }
   }
 
   function GetData()
   {
     return $this->Data;
   }
 
   function SetData($data, $dirty = false)
   {
       $this->SetFromArray($data, $dirty);
   }
 
   function Delete()
   { 
       global $Errors;
 
       if($this->Get($this->IdField())==0)
       {
           $Errors->AddError("error.AppError",NULL,'Internal error: Delete requires set id',"",get_class($this),"Delete");
           return false;
       }
 
       $sql = sprintf('DELETE FROM %s WHERE %s = %s', $this->tablename, $this->IdField(),
                       $this->UniqueId());
       if($this->debuglevel>0)
         echo $sql."<br>";
       if ($this->adodbConnection->Execute($sql) === false)
       {
           $Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Delete");
           return false;
       }
       return true;
   }
 
   function Update($UpdatedBy=NULL,$modificationDate = null)
   {
       global $Errors, $objSession;
 		
       if(count($this->m_dirtyFieldsMap) == 0)
           return true;
 
       $this->SetModified($UpdatedBy,$modificationDate);
       $sql = "UPDATE ".$this->tablename ." SET ";
       $first  = 1;
-      
+
       foreach ($this->m_dirtyFieldsMap as $key => $value)
       {
           if(!is_numeric($key) && $key != $this->IdField() && $key!='ResourceId')
           {          
             if($first)
             {
 				if(isset($GLOBALS['_CopyFromEditTable']))
     	          $sql = sprintf("%s %s=%s",$sql,$key,$this->adodbConnection->qstr(($value)));
     	        else
     	          $sql = sprintf("%s %s=%s",$sql,$key,$this->adodbConnection->qstr(stripslashes($value)));
               $first = 0;
             }
             else
             {
 				if(isset($GLOBALS['_CopyFromEditTable']))
 	              $sql = sprintf("%s, %s=%s",$sql,$key,$this->adodbConnection->qstr(($value)));
 	            else
 	              $sql = sprintf("%s, %s=%s",$sql,$key,$this->adodbConnection->qstr(stripslashes($value)));
             }
           }           	
       }
 
 		$sql = sprintf("%s WHERE %s = '%s'",$sql, $this->IdField(), $this->UniqueId());
 
      if($this->debuglevel>0)
           echo $sql."<br>";
       if ($this->adodbConnection->Execute($sql) === false)
       {
           $Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Update");
           return false;
       }
       
   	  if ($objSession->GetVariable("HasChanges") == 2)    {
   	  	$objSession->SetVariable("HasChanges", 1);
   	  }      
       
 /*      if ($this->adodbConnection->Affected_Rows() > 0) {
       	$objSession->SetVariable("HasChanges", 1);
   	  }*/
       
       return true;
   }
 	
 	function ReplaceID($new_id)
 	{
 		// replace item's id, because Update method 
 		// is too dummy to do this autommatically
 		// USED in temporary table editing stuff
 		$db =& $this->adodbConnection;
 		$sql = "UPDATE %1\$s SET `%2\$s` = %3\$s WHERE `%2\$s` = %4\$s"; 
 		$sql = sprintf($sql, $this->tablename, $this->IdField(), $new_id, (int)$this->UniqueId() );
 		if($this->debuglevel > 0) echo $sql.'<br>';
 		$db->Execute($sql);
 	}
 	
   function CreateSQL()
   {
   	 global $Errors;
   	 
      $sql = "INSERT IGNORE INTO ".$this->tablename." (";
      $first  = 1;
      foreach ($this->Data 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->Data as $key => $value)
      {
      	if( is_array($value) )
      	{
      		global $debugger;
      		$debugger->dumpVars($value);
      		$debugger->appendTrace();
      		trigger_error('Value of array type not allowed in method <b>CreateSQL</b> of <b>clsItemDB</b> class', E_USER_ERROR);
      	}
      	if($first)
      	{
 			if(isset($GLOBALS['_CopyFromEditTable']))
 	     		$sql = sprintf("%s %s",$sql,$this->adodbConnection->qstr(($value)));
 	     	else
 	     		$sql = sprintf("%s %s",$sql,$this->adodbConnection->qstr(stripslashes($value)));
      		$first = 0;
      	}
      	else
      	{
 			if(isset($GLOBALS['_CopyFromEditTable']))
 	     		$sql = sprintf("%s, %s",$sql,$this->adodbConnection->qstr(($value)));
 	     	else
 	     		$sql = sprintf("%s, %s",$sql,$this->adodbConnection->qstr(stripslashes($value)));
      	}
      }
      $sql = sprintf('%s)',$sql);
      
   	return $sql;
   }
   
   /**
    * Set's HasChanges flag based on new field
    * with $name with value $value.
    *
    * @param string $name
    * @param string $value
    * @access private
    */
   function DetectChanges($name, $value)
   {  	
   	global $objSession;
   	
   	//echo "<b>class: ".get_class($this)."</b><br>";
 	if ($this->Data[$name] != $value && $value != '') {		
 		//echo "$name Modified tt ".$this->Data[$name]." tt $value<br>";
 		if ($objSession->GetVariable("HasChanges") != 1) {
 			$objSession->SetVariable("HasChanges", 2);		
 		}
 	}
   }
   
   function Create()
   {
      global $Errors, $objSession;
      
 	if($this->debuglevel) echo "Creating Item: ".get_class($this)."<br>";
      if($this->NoResourceId!=1 && (int)$this->Get("ResourceId")==0)
      {
         $this->Set("ResourceId", GetNextResourceId());
      }
 	$sql = $this->CreateSql();
      
      if($this->debuglevel>0)
         echo $sql."<br>\n";
 
      if ($this->adodbConnection->Execute($sql) === false)
       {  
           $Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Create");
           return false;
       }
 
       $this->SetUniqueId($this->adodbConnection->Insert_ID());
       
   	  if ($objSession->GetVariable("HasChanges") == 2)    {
   	  	$objSession->SetVariable("HasChanges", 1);
   	  }         
       
       /*if ($this->adodbConnection->Affected_Rows() > 0) {
       	$objSession->SetVariable("HasChanges", 1);
   	  }  */ 
       
       return true;
   }
 
   function Increment($field)
   {	    
       global $Errors;
 
       $sql = "Update ".$this->tablename." set $field=$field+1 where ".$this->IdField()."=" . $this->UniqueId();
       if($this->debuglevel>0)
           echo $sql."<br>";
       $result = $this->adodbConnection->Execute($sql);
       if ($result === false)
       {
           $Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Increment");
           return false;
       }
       $this->Set($field,$this->Get($field)+1);
   }
 
   function Decrement($field)
   {	
       global $Errors;
 
       $sql = "Update ".$this->tablename." set $field=$field-1 where ".$this->IdField()."=" . $this->UniqueId();
       if($this->debuglevel>0)
           echo $sql;
       $result = $this->adodbConnection->Execute($sql);
       if ($result === false)
       {
           $Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Decrement");
           return false;
       }
       $this->Set($field,$this->Get($field)-1);
   }
   
   function GetFieldList($UseLoadedData=FALSE)
   {
   	if(count($this->Data) && $UseLoadedData==TRUE)
   	{
   		$res = array_keys($this->Data);
   	}
   	else
   	{
   		$res = $this->adodbConnection->MetaColumnNames($this->tablename);
   	}
   	return $res;
   }
   
   function UsingTempTable()
   {
   	global $objSession;
   	
   	$temp = $objSession->GetEditTable($this->tablename);
   	$p = GetTablePrefix()."ses";
   	$t = substr($temp,0,strlen($p));
   	$ThisTable = substr($this->tablename,0,strlen($p));  	
   	if($t==$ThisTable)
   	{
   		return TRUE;
   	}
   	else
   	  return FALSE;
   }
   
     function LoadFromDatabase($Id, $IdField = null) // custom IdField by Alex
     {
 		global $objSession,$Errors;
        
         if(!isset($Id))
         {
             $Errors->AddError("error.AppError",NULL,'Internal error: LoadFromDatabase id',"",get_class($this),"LoadFromDatabase");
             return false;
         }
        
        // --------- multiple ids allowed: begin -----------------
        $id_field = isset($IdField) ? $IdField : $this->IdField();
        if( !is_array($id_field) ) $id_field = Array($id_field);
        if( !is_array($Id) ) $Id = Array($Id);
        
        $i = 0; $id_count = count($id_field);
        $conditions = Array();
        while($i < $id_count)
        {
        		$conditions[] = "(`".$id_field[$i]."` = '".$Id[$i]."')";
        		$i++;
        }
        $sql = sprintf($this->SelectSQL, $this->tablename, implode(' AND ', $conditions) );
        // --------- multiple ids allowed: end --------------------
        if($this->debuglevel) echo "Load SQL: $sql<br>"; 
         $result = $this->adodbConnection->Execute($sql);
         if ($result === false)
         {
             $Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"LoadFromDatabase");
             return false;
         }
         $data = $result->fields;
 		if($this->debuglevel) print_pre($data);
 		if(is_array($data))
           $this->SetFromArray($data);
         $this->Clean();
         return TRUE;
     }
     
     function FieldExists($field)
     {
       $res = array_key_exists($field,$this->Data);
       return $res;	
     }
   
     function ValueExists($Field,$Value)
     {
     	$sql = "SELECT $Field FROM ".$this->tablename." WHERE $Field='$Value'";
     	$rs = $this->adodbConnection->Execute($sql);
     	if($rs && !$rs->EOF)
     	{
     		return TRUE;
     	}
     	else
     	  return FALSE;
     }
 
     function FieldMax($Field)
     {
     	$sql = "SELECT Max($Field) as m FROM ".$this->tablename;
     	$rs = $this->adodbConnection->Execute($sql);
     	if($rs && !$rs->EOF)
     	{
     		$ret = $rs->fields["m"];
     	}
     	else
     	  $ret = 0;
     }
     
     function FieldMin($Field)
     {
     	$sql = "SELECT Min($Field) as m FROM ".$this->tablename;
     	$rs = $this->adodbConnection->Execute($sql);
     	if($rs && !$rs->EOF)
     	{
     		$ret = $rs->fields["m"];
     	}
     	else
     	  $ret = 0;
     }
     
     function TableExists($table = null)
     {
     	// checks if table specified in item exists in db	
     	$db =& $this->adodbConnection;
     	$sql = "SHOW TABLES LIKE '%s'";
     	if($table == null) $table = $this->tablename;
     	$rs = $db->Execute( sprintf($sql, $table) );
     	
     	if( $rs->RecordCount() == 1 ) // table exists in normal case
     		return 1;
     	else // check if table exists in lowercase
     		$rs = $db->Execute( sprintf($sql, strtolower($table) ) );
     	
     	return ($rs->RecordCount() == 1) ? 1 : 0;
     }	
     	
 }
 ?>

Property changes on: trunk/kernel/include/itemdb.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.22
\ No newline at end of property
+1.23
\ No newline at end of property
Index: trunk/kernel/include/image.php
===================================================================
--- trunk/kernel/include/image.php	(revision 899)
+++ trunk/kernel/include/image.php	(revision 900)
@@ -1,1153 +1,1207 @@
 <?php
 
 class clsImage extends clsParsedItem
 {
 	var $Pending;
-	
+
 	function clsImage($id=NULL)
-	{	
-        global $objSession;
+	{
+		global $objSession;
+
+		$this->clsParsedItem();
+		$this->tablename = GetTablePrefix()."Images";
+		$this->Pending = FALSE;
+		$this->id_field = "ImageId";
+		$this->type=-30;
+		$this->TagPrefix = "image";
+		$this->NoResourceId=1;
+		if($id)
+		$this->LoadFromDatabase($id);
+		//$this->SetDebugLevel(0);
+	}
 
-        $this->clsParsedItem();
-        $this->tablename = GetTablePrefix()."Images";
-        $this->Pending = FALSE;
-        $this->id_field = "ImageId";
-        $this->type=-30;
-        $this->TagPrefix = "image";
-        $this->NoResourceId=1;
-        if($id)
-			$this->LoadFromDatabase($id); 
-        //$this->SetDebugLevel(0);
-	}
-	
-  function DetectChanges($name, $value)
-  {  	
-  	global $objSession;
-  	//print_pre($_POST);
-
-	if ($this->Data[$name] != $value) {		
-		//echo "$name Modified tt ".$this->Data[$name]." tt $value<br>";
-		if (!stristr($name, 'Resource') && !stristr($name, 'ImageId')) {
-			if ($objSession->GetVariable("HasChanges") != 1) {
-				$objSession->SetVariable("HasChanges", 2);		
+	function DetectChanges($name, $value)
+	{
+		global $objSession;
+		//print_pre($_POST);
+
+		if ($this->Data[$name] != $value) {
+			//echo "$name Modified tt ".$this->Data[$name]." tt $value<br>";
+			if (!stristr($name, 'Resource') && !stristr($name, 'ImageId')) {
+				if ($objSession->GetVariable("HasChanges") != 1) {
+					$objSession->SetVariable("HasChanges", 2);
+				}
 			}
 		}
 	}
-  } 	
-		
+
 	function GetFileName($thumb = 0)
 	{
 		global $pathtoroot;
 
 		if($thumb)
 		{
 			$p = $this->Get("ThumbPath");
 		}
 		else
 		{
-		  $p = $this->Get("LocalPath");		  
-		  if(!strlen($p) && $this->Get("SameImages"))
-		  {
-		  	$p = $this->Get("ThumbPath");
-		  }
+			$p = $this->Get("LocalPath");
+			if(!strlen($p) && $this->Get("SameImages"))
+			{
+				$p = $this->Get("ThumbPath");
+			}
 		}
-		
+
 		if(strlen($p))
 		{
 			$parts = pathinfo($pathtoroot.$p);
 			$filename = $parts["basename"];
 		}
 		else
-			$filename = "";
-		
+		$filename = "";
+
 		return $filename;
 	}
-		
+
 	function GetImageDir()
 	{
 		global $pathtoroot;
-		
+
 		$p = $this->Get("ThumbPath");
 		if(strlen($p))
 		{
 			$parts = pathinfo($pathtoroot.$p);
 			$d = $parts["dirname"]."/";
 		}
-  	  
+
 		if($this->Pending)
-		  $d .= "pending/";
-		  
-		return $d;  
+		$d .= "pending/";
+
+		return $d;
 	}
-	
-	
+
+
 	function Delete()
-	{	        	
-        $this->DeleteLocalImage();
-        parent::Delete();
+	{
+		$this->DeleteLocalImage();
+		parent::Delete();
 	}
+
+	function Update($UpdatedBy=NULL,$modificationDate = null)
+	{
+		global $Errors, $objSession;
+
+		if(count($this->m_dirtyFieldsMap) == 0)
+		return true;
+
+		$this->SetModified($UpdatedBy,$modificationDate);
+		$sql = "UPDATE ".$this->tablename ." SET ";
+		$first  = 1;
 		
+		foreach ($this->m_dirtyFieldsMap as $key => $value)
+		{
+			if(!is_numeric($key) && $key != $this->IdField())
+			{
+				if($first)
+				{
+					if(isset($GLOBALS['_CopyFromEditTable']))
+					$sql = sprintf("%s %s=%s",$sql,$key,$this->adodbConnection->qstr(($value)));
+					else
+					$sql = sprintf("%s %s=%s",$sql,$key,$this->adodbConnection->qstr(stripslashes($value)));
+					$first = 0;
+				}
+				else
+				{
+					if(isset($GLOBALS['_CopyFromEditTable']))
+					$sql = sprintf("%s, %s=%s",$sql,$key,$this->adodbConnection->qstr(($value)));
+					else
+					$sql = sprintf("%s, %s=%s",$sql,$key,$this->adodbConnection->qstr(stripslashes($value)));
+				}
+			}
+		}
+
+		$sql = sprintf("%s WHERE %s = '%s'",$sql, $this->IdField(), $this->UniqueId());
+
+		if($this->debuglevel>0)
+			echo $sql."<br>";
+		if ($this->adodbConnection->Execute($sql) === false)
+		{
+			$Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Update");
+			return false;
+		}
+
+		if ($objSession->GetVariable("HasChanges") == 2)    {
+			$objSession->SetVariable("HasChanges", 1);
+		}
+
+		/*      if ($this->adodbConnection->Affected_Rows() > 0) {
+		$objSession->SetVariable("HasChanges", 1);
+		}*/
+
+		return true;
+	}
+
 	function LoadFromDatabase($Id)
-    {
-        global $Errors;
+	{
+		global $Errors;
+
+		if(!isset($Id))
+		{
+			$Errors->AddError("error.AppError",NULL,'Internal error: LoadFromDatabase id',"",get_class($this),"LoadFromDatabase");
+			return false;
+		}
+
+		$sql = sprintf("SELECT * FROM ".$this->tablename." WHERE ImageId = '%s'",$Id);
+
+		$result = $this->adodbConnection->Execute($sql);
+		if ($result === false || $result->EOF)
+		{
+			$Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"LoadFromDatabase");
+			return false;
+		}
 
-        if(!isset($Id))
-        {
-            $Errors->AddError("error.AppError",NULL,'Internal error: LoadFromDatabase id',"",get_class($this),"LoadFromDatabase");
-            return false;
-        }
-                
-        $sql = sprintf("SELECT * FROM ".$this->tablename." WHERE ImageId = '%s'",$Id);
-
-        $result = $this->adodbConnection->Execute($sql);
-        if ($result === false || $result->EOF)
-        {
-            $Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"LoadFromDatabase");
-            return false;
-        }
-        
 		$data = $result->fields;
-       
-        $this->SetFromArray($data);
-        $this->Clean();
-        return true;
-    }
+
+		$this->SetFromArray($data);
+		$this->Clean();
+		return true;
+	}
 
 	function LoadFromResource($Id,$ImageIndex)
-    {
-        global $Errors;
+	{
+		global $Errors;
 
-        if(!isset($Id) || !isset($ImageIndex))
-        {
-            $Errors->AddError("error.AppError",NULL,'Internal error: LoadFromDatabase id',"",get_class($this),"LoadFromResource");
-            return false;
-        }
-
-        $sql = sprintf("SELECT * FROM ".$this->tablename." WHERE ResourceId = '%s'AND ImageIndex = '%s'",$Id,$ImageIndex);
-
-        $result = $this->adodbConnection->Execute($sql);
-        if ($result === false || $result->EOF)
-        {
-//            $Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"LoadFromResource");
-            return false;
-        }
+		if(!isset($Id) || !isset($ImageIndex))
+		{
+			$Errors->AddError("error.AppError",NULL,'Internal error: LoadFromDatabase id',"",get_class($this),"LoadFromResource");
+			return false;
+		}
+
+		$sql = sprintf("SELECT * FROM ".$this->tablename." WHERE ResourceId = '%s'AND ImageIndex = '%s'",$Id,$ImageIndex);
+
+		$result = $this->adodbConnection->Execute($sql);
+		if ($result === false || $result->EOF)
+		{
+			//            $Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"LoadFromResource");
+			return false;
+		}
 
 		$data = $result->fields;
 
-        $this->SetFromArray($data);
+		$this->SetFromArray($data);
 
-        return true;
-    }
+		return true;
+	}
 
-    function LocalImageExists()
-    {
-        global $objConfig, $pathtoroot;
-        $result=FALSE;
-        if($this->Get("LocalImage")==1 && $this->Get("SameImages")==0)
-        {        
+	function LocalImageExists()
+	{
+		global $objConfig, $pathtoroot;
+		$result=FALSE;
+		if($this->Get("LocalImage")==1 && $this->Get("SameImages")==0)
+		{
 			$imagepath = $pathtoroot.$this->Get("LocalPath");
-//          $imagepath = $this->GetImageDir().$this->GetFileName();
-          
-//          echo "PATH: ".$this->GetImageDir()."; FILE: ".$this->GetFileName()."<BR>";
-          
-          if(strlen($imagepath)>0)
-          {
-             $result = file_exists($imagepath);
-          }
-        }
-       return $result;
-    }
-
-    function LocalThumbExists()
-    {
-        $result=FALSE;
-        global $objConfig, $pathtoroot;
-
-        if($this->Get("LocalThumb")==1)
-        {        
-          //$imagepath = $pathtoroot.$this->Get("ThumbPath");   
-          $imagepath = $this->GetImageDir().$this->GetFileName(1);       
-          if(strlen($imagepath)>0)
-          {
-             $result = file_exists($imagepath);
-          }
-        }
-       return $result;
-    }
-
-    
-    function DeleteLocalImage($Thumb=TRUE,$Full=TRUE)
-    {
-        global $pathtoroot;
-        
-        if($Full)
-        {
-          if($this->LocalImageExists())
-          {
-//            $filename = $this->GetImageDir().$this->GetFileName(); 
-			$filename = $pathtoroot.$this->Get("LocalPath");
-//            echo "FULL: $filename<BR>\n"; 
-            @unlink($filename);
-          }
-        }
-        
-        if($Thumb)
-        {
-          if($this->LocalThumbExists())
-          {
-            $filename  = $this->GetImageDir().$this->GetFileName(1);
-//             echo "THUMB: $filename<BR>\n";
-            @unlink($filename);
-          }
-        }
-    }
-
-    function StoreUploadedImage($file, $rewrite_name=1,$DestDir,$IsThumb=0,$IsUpload=TRUE)
-    {   
-        /* move the uploaded image to its final location and update the LocalPath property */
-        /* returns the destination filename on success */
-        global $objConfig,$pathtoroot;
-
-        $Dest_Dir = $DestDir;
-        if($this->Pending)
-          $Dest_Dir .= "pending/";
-          
-        if(((int)$file["error"]==0) && (substr($file["type"],0,6)=="image/") && @getimagesize($file["tmp_name"]) )
-        {        
-          $parts = pathinfo($file["name"]);
-          $ext = strtolower($parts["extension"]);
-		
-		  if( $GLOBALS['debuglevel'] ) echo "Processing ".$file["tmp_name"]."<br>\n";
+			//          $imagepath = $this->GetImageDir().$this->GetFileName();
+
+			//          echo "PATH: ".$this->GetImageDir()."; FILE: ".$this->GetFileName()."<BR>";
+
+			if(strlen($imagepath)>0)
+			{
+				$result = file_exists($imagepath);
+			}
+		}
+		return $result;
+	}
+
+	function LocalThumbExists()
+	{
+		$result=FALSE;
+		global $objConfig, $pathtoroot;
+
+		if($this->Get("LocalThumb")==1)
+		{
+			//$imagepath = $pathtoroot.$this->Get("ThumbPath");
+			$imagepath = $this->GetImageDir().$this->GetFileName(1);
+			if(strlen($imagepath)>0)
+			{
+				$result = file_exists($imagepath);
+			}
+		}
+		return $result;
+	}
+
+
+	function DeleteLocalImage($Thumb=TRUE,$Full=TRUE)
+	{
+		global $pathtoroot;
+
+		if($Full)
+		{
+			if($this->LocalImageExists())
+			{
+				//            $filename = $this->GetImageDir().$this->GetFileName();
+				$filename = $pathtoroot.$this->Get("LocalPath");
+				//            echo "FULL: $filename<BR>\n";
+				@unlink($filename);
+			}
+		}
+
+		if($Thumb)
+		{
+			if($this->LocalThumbExists())
+			{
+				$filename  = $this->GetImageDir().$this->GetFileName(1);
+				//             echo "THUMB: $filename<BR>\n";
+				@unlink($filename);
+			}
+		}
+	}
+
+	function StoreUploadedImage($file, $rewrite_name=1,$DestDir,$IsThumb=0,$IsUpload=TRUE)
+	{
+		/* move the uploaded image to its final location and update the LocalPath property */
+		/* returns the destination filename on success */
+		global $objConfig,$pathtoroot;
+
+		$Dest_Dir = $DestDir;
+		if($this->Pending)
+		$Dest_Dir .= "pending/";
+
+		if(((int)$file["error"]==0) && (substr($file["type"],0,6)=="image/") && @getimagesize($file["tmp_name"]) )
+		{
+			$parts = pathinfo($file["name"]);
+			$ext = strtolower($parts["extension"]);
+
+			if( $GLOBALS['debuglevel'] ) echo "Processing ".$file["tmp_name"]."<br>\n";
+
+			if($rewrite_name==1)
+			{
+
+				if($IsThumb)
+				$filename = "th_";
+				$filename .= $this->Get("ResourceId")."_".$this->Get("ImageIndex").".".$ext;
+			}
+			else
+			{
+				$filename = $file["name"];
+			}
+			$destination = $pathtoroot.$Dest_Dir.$filename;
+			if( $GLOBALS['debuglevel'] ) echo $file["tmp_name"]."=>".$destination."<br>\n";
+			if($IsUpload==TRUE)
+			{
+				$result = @move_uploaded_file($file["tmp_name"],$destination);
+			}
+			else
+			$result = copy($file["tmp_name"],$destination);
+			if($result)
+			{
+				@chmod($Dest_Dir.$filename, 0666);
+				return $Dest_Dir.$filename;
+			}
+			else
+			return "";
+		}
+		else
+		return "";
+	}
+
+	function CopyToPending()
+	{
+		global $pathtoroot;
+
+		$ThumbPath = (strlen($this->Get("ThumbPath"))>0) ? $pathtoroot.$this->Get("ThumbPath") : '';
+		$FullPath =	strlen($this->Get("LocalPath")) ? $pathtoroot.$this->Get("LocalPath") : '';
+
+		$dest = $this->GetImageDir()."pending/";
+
+
+		//        echo "DESTIN DIR: $dest<BR>";
+		//        echo "THUMB PATH: $ThumbPath <BR>";
+
+		if(strlen($ThumbPath))
+		{
+			if(file_exists($ThumbPath))
+			{
+				$p = pathinfo($ThumbPath);
+				$d = $dest.$p["basename"];
+				if(file_exists($d))
+				unlink($d);
+				copy($ThumbPath,$d);
+				@chmod($ThumbPath.$d, 0666);
+			}
+		}
+
+
+		if(strlen($FullPath))
+		{
+			if(file_exists($FullPath))
+			{
+				$p = pathinfo($FullPath);
+				$d = $dest.$p["basename"];
+				if(file_exists($d))
+				unlink($d);
+				copy($FullPath,$d);
+				@chmod($FullPath.$d, 0666);
+			}
+		}
+	}
+
+	function CopyFromPending()
+	{
+		global $pathtoroot,$pathchar;
+
+		$ThumbPath = $this->Get("ThumbPath");
+		$FullPath = $this->Get("LocalPath");
+
+		//        $src = $this->GetImageDir()."pending/";
+		$src = $this->GetImageDir();
+
+		if(strlen($ThumbPath))
+		{
+			if(strpos($ThumbPath,"pending/"))
+			{
+				if(file_exists($pathtoroot.$ThumbPath))
+				{
+					$path = pathinfo($pathtoroot.$ThumbPath);
+					$p = explode("/",$ThumbPath);
+					unset($p[count($p)-2]);
+
+					$d = $pathtoroot.implode("/",$p);
+
+					if(file_exists($d))
+					unlink($d);
+
+					copy($pathtoroot.$ThumbPath,$d);
+					@chmod($pathtoroot.$ThumbPath.$d, 0666);
+					unlink($pathtoroot.$ThumbPath);
+				}
+
+			}
+		}
+		if(strlen($FullPath))
+		{
+			if(file_exists($pathtoroot.$FullPath))
+			{
+				if(strpos($FullPath,"pending/"))
+				{
+					$path = pathinfo($pathtoroot.$FullPath);
+					$p = explode("/",$FullPath);
+					unset($p[count($p)-2]);
+
+					$d = $pathtoroot.implode("/",$p);
+
+					if(file_exists($d))
+					unlink($d);
+					copy($pathtoroot.$FullPath,$d);
+					@chmod($pathtoroot.$FullPath.$d, 0666);
+					unlink($pathtoroot.$FullPath);
+				}
+			}
+		}
+	}
 
-          if($rewrite_name==1)
-          {
+	function DeleteFromPending()
+	{
+		global $pathtoroot;
+		$ThumbPath = $pathtoroot.$this->Get("ThumbPath");
+		$FullPath = $pathtoroot.$this->Get("LocalPath");
 
-            if($IsThumb)
-                $filename = "th_";
-            $filename .= $this->Get("ResourceId")."_".$this->Get("ImageIndex").".".$ext;
-          }
-          else
-          {
-            $filename = $file["name"];
-          }
-          $destination = $pathtoroot.$Dest_Dir.$filename;
-		  if( $GLOBALS['debuglevel'] ) echo $file["tmp_name"]."=>".$destination."<br>\n";
-          if($IsUpload==TRUE)
-          {          
-            $result = @move_uploaded_file($file["tmp_name"],$destination);
-          }
-          else
-              $result = copy($file["tmp_name"],$destination);
-          if($result)
-          {  
-          	 @chmod($Dest_Dir.$filename, 0666);
-             return $Dest_Dir.$filename;
-          }
-          else
-            return "";
-        }
-        else
-            return "";
-    }
-    
-    function CopyToPending()
-    {
-    	global $pathtoroot;
-    	
-    	$ThumbPath = (strlen($this->Get("ThumbPath"))>0) ? $pathtoroot.$this->Get("ThumbPath") : '';
-        $FullPath =	strlen($this->Get("LocalPath")) ? $pathtoroot.$this->Get("LocalPath") : '';
-        
-        $dest = $this->GetImageDir()."pending/";
-        
-        
-//        echo "DESTIN DIR: $dest<BR>";
-//        echo "THUMB PATH: $ThumbPath <BR>";
-        
-        if(strlen($ThumbPath))
-        {
-          if(file_exists($ThumbPath))
-          {
-        	$p = pathinfo($ThumbPath);
-        	$d = $dest.$p["basename"];
-        	if(file_exists($d))
-        		unlink($d);
-        	copy($ThumbPath,$d);
-        	@chmod($ThumbPath.$d, 0666);
-          }
-        } 
-             
-        
-        if(strlen($FullPath))
-        {
-          if(file_exists($FullPath))
-          {
-        	$p = pathinfo($FullPath);
-        	$d = $dest.$p["basename"];
-        	if(file_exists($d))
-        	  unlink($d);   
-        	copy($FullPath,$d); 
-        	@chmod($FullPath.$d, 0666);       	
-          }
-        }        
-    }
-    
-    function CopyFromPending()
-    {
-    	global $pathtoroot,$pathchar;
-    	
-        $ThumbPath = $this->Get("ThumbPath");
-        $FullPath = $this->Get("LocalPath");
-        
-//        $src = $this->GetImageDir()."pending/"; 
-        $src = $this->GetImageDir(); 
-              
-        if(strlen($ThumbPath))
-        {
-          if(strpos($ThumbPath,"pending/"))
-          {	
-            if(file_exists($pathtoroot.$ThumbPath))
-            {
-          		$path = pathinfo($pathtoroot.$ThumbPath);
-        		$p = explode("/",$ThumbPath);
-        		unset($p[count($p)-2]);
-        	
-        		$d = $pathtoroot.implode("/",$p);
-        		
-        		if(file_exists($d))
-        	  		unlink($d);
-        	
-    	    	copy($pathtoroot.$ThumbPath,$d);
-        		@chmod($pathtoroot.$ThumbPath.$d, 0666);       	
-        		unlink($pathtoroot.$ThumbPath);
-            }
-
-          }
-        }
-        if(strlen($FullPath))
-        {
-          if(file_exists($pathtoroot.$FullPath))
-          {
-            if(strpos($FullPath,"pending/"))
-            {	          	
-	         	$path = pathinfo($pathtoroot.$FullPath);
-    	    	$p = explode("/",$FullPath);
-        		unset($p[count($p)-2]);
-        	
-	        	$d = $pathtoroot.implode("/",$p);
-
-	        	if(file_exists($d))
-    	    	  unlink($d);
-    	    	copy($pathtoroot.$FullPath,$d);  
-    	    	@chmod($pathtoroot.$FullPath.$d, 0666);       	      	
-        		unlink($pathtoroot.$FullPath);
-            }
-          }
-        }            	
-    }
-    
-    function DeleteFromPending()
-    {
-        global $pathtoroot;
-        $ThumbPath = $pathtoroot.$this->Get("ThumbPath");
-        $FullPath = $pathtoroot.$this->Get("LocalPath");
-        
-        $src = $this->GetImageDir()."pending/";
-        $p = pathinfo($ThumbPath);
-        $d = $src.$p["basename"];
+		$src = $this->GetImageDir()."pending/";
+		$p = pathinfo($ThumbPath);
+		$d = $src.$p["basename"];
 		if(file_exists($d))
-		  @unlink($d);
+		@unlink($d);
 
-        $p = pathinfo($FullPath);
-        $d = $src.$p["basename"];
+		$p = pathinfo($FullPath);
+		$d = $src.$p["basename"];
 		if(file_exists($d))
-		  @unlink($d);		  
-    }
+		@unlink($d);
+	}
+
+	function RenameFiles($OldResId,$NewResId)
+	{
+		global $pathtoroot;
+
+		if($this->Pending)
+		{
+			$ThumbPath = $this->GetImageDir().$this->GetFileName(TRUE);
+		}
+		else
+		$ThumbPath = $pathtoroot.$this->Get("ThumbPath");
+		$parts = pathinfo($ThumbPath);
+		$ext = $parts["extension"];
+		$pending="";
+		if($this->Pending)
+		{
+			$pending="pending/";
+			$FullPath = $this->GetImageDir().$this->GetFileName(FALSE);
+		}
+		else
+		$FullPath = $pathtoroot.$this->Get("LocalPath");
+
+		$NewThumb = $pathtoroot."kernel/images/".$pending."th_$NewResId_".$this->Get("ImageIndex").".$ext";
+		$NewFull = $pathtoroot."kernel/images/".$pending."$NewResId_".$this->Get("ImageIndex").".$ext";
+		if(file_exists($ThumbPath))
+		{
+			@rename($ThumbPath,$NewThumb);
+		}
+
+		if(file_exists($FullPath))
+		{
+			@rename($FullPath,$NewFull);
+		}
+
+	}
+
+	function ReplaceImageFile($file)
+	{
+		global $objConfig;
+
+		if($file["error"]==0)
+		{
+			$this->DeleteLocalImage();
+			move_uploaded_file($file,$this->Get("LocalPath"));
+			@chmod($this->Get("LocalPath"), 0666);
+		}
+	}
+
+	function FullURL($ForceNoThumb=FALSE,$Default="kernel/images/noimage.gif")
+	{
+		global $rootURL, $objConfig,$pathtoroot;
+
+		if($this->Get("SameImages") && !$ForceNoThumb)
+		return $this->ThumbURL();
+
+		if(strlen($this->Get("Url")))
+		return $this->Get("Url");
+		if($this->Get("LocalImage")=="1")
+		{
+			$url = $this->Get("LocalPath");
+			//$url = $this->GetImageDir().$this->GetFileName();
+			if(file_exists($pathtoroot.$url))
+			{
+				if(strlen($url))
+				{
+					$url = $rootURL.$url;
+					return $url;
+				}
+				else
+				{
+					if(strlen($Default))
+					$url = $rootURL.$Default;
+					return $url;
+				}
+			}
+			else
+			{
+				if(strlen($Default))
+				{
+					return $rootURL.$Default;
+				}
+				else
+				return "";
+			}
+		}
+		else
+		{
+			if(strlen($Default))
+			{
+				return $rootURL.$Default;
+			}
+			else
+			return "";
+		}
+	}
+
+	function ThumbURL()
+	{
+		global $rootURL, $pathtoroot, $objConfig;
+
+		if(strlen($this->Get("ThumbUrl")))
+		return $this->Get("ThumbUrl");
+
+		if($this->Get("LocalThumb")=="1")
+		{
+			$url = $this->Get("ThumbPath");
+			//$url = $this->GetImageDir().$this->GetFileName();
+			if(file_exists($pathtoroot.$url))
+			{
+				if(strlen($url))
+				{
+					$url = $rootURL.$url;
+				}
+				else
+				$url = $rootURL."kernel/images/noimage.gif";
+				return $url;
+			}
+			else
+			return $rootURL."kernel/images/noimage.gif";
+		}
+		else
+		return $rootURL."kernel/images/noimage.gif";
+	}
+
+	function ParseObject($element)
+	{
+		$extra_attribs = ExtraAttributes($element->attributes);
+		if(strtolower($element->name)==$this->TagPrefix)
+		{
+			$field = strtolower($element->attributes["_field"]);
+			switch($field)
+			{
+				case "name":
+				$ret = $this->Get("Name");
+				break;
+				case "alt":
+				$ret = $this->Get("AltName");
+				break;
+				case "full_url":
+				$ret = $this->FullURL();
+				break;
+				case "thumb_url":
+				$ret = $this->ThumbURL();
+				break;
+			}
+		}
+		else
+		$ret = $element->Execute();
+		return $ret;
+	}
+
+	function parsetag($tag)
+	{
+		if(is_object($tag))
+		{
+			$tagname = $tag->name;
+		}
+		else
+		$tagname = $tag;
+		switch($tagname)
+		{
+			case "image_name":
+			$ret = $this->Get("Name");
+			break;
+			case "image_alt":
+			$ret = $this->Get("AltName");
+			break;
+			case "image_url":
+			$ret = $this->FullURL();
+			break;
+			case "thumb_url":
+			$ret = $this->ThumbURL();
+			break;
+		}
+		return $ret;
+	}
+
+	//Changes priority
+	function MoveUp()
+	{
+		$this->Increment("Priority");
+	}
+
+	function MoveDown()
+	{
+		$this->Decrement("Priority");
+	}
+
+	function GetMaxPriority()
+	{
+		$SourceId = $this->Get("ResourceId");
+		$sql = "SELECT MAX(Priority) as p from ".$this->tablename."WHERE ResourceId=$SourceId";
+		$result = $this->adodbConnection->Execute($sql);
+		return $result->fields["p"];
+	}
 
-    function RenameFiles($OldResId,$NewResId)
-    {
-        global $pathtoroot;
-
-        if($this->Pending)
-        {
-        	$ThumbPath = $this->GetImageDir().$this->GetFileName(TRUE);
-        }
-        else
-        	$ThumbPath = $pathtoroot.$this->Get("ThumbPath");
-        $parts = pathinfo($ThumbPath);
-        $ext = $parts["extension"];
-        $pending="";
-        if($this->Pending)
-        {
-          $pending="pending/";
-          $FullPath = $this->GetImageDir().$this->GetFileName(FALSE);
-        }
-        else
-          $FullPath = $pathtoroot.$this->Get("LocalPath");
-          
-        $NewThumb = $pathtoroot."kernel/images/".$pending."th_$NewResId_".$this->Get("ImageIndex").".$ext";
-        $NewFull = $pathtoroot."kernel/images/".$pending."$NewResId_".$this->Get("ImageIndex").".$ext";
-        if(file_exists($ThumbPath))
-        {
-          @rename($ThumbPath,$NewThumb);          
-        }
-        
-        if(file_exists($FullPath))
-        {
-        	@rename($FullPath,$NewFull);
-        }
-        
-    }
-
-    function ReplaceImageFile($file)
-    {
-        global $objConfig;
-
-        if($file["error"]==0)
-        {        
-          $this->DeleteLocalImage();
-          move_uploaded_file($file,$this->Get("LocalPath"));
-          @chmod($this->Get("LocalPath"), 0666);
-        }
-    }
-
-    function FullURL($ForceNoThumb=FALSE,$Default="kernel/images/noimage.gif")
-    {
-        global $rootURL, $objConfig,$pathtoroot;
-
-        if($this->Get("SameImages") && !$ForceNoThumb)
-            return $this->ThumbURL();
-
-        if(strlen($this->Get("Url")))
-            return $this->Get("Url");
-        if($this->Get("LocalImage")=="1")
-        {
-        	$url = $this->Get("LocalPath");        	
-            //$url = $this->GetImageDir().$this->GetFileName();
-            if(file_exists($pathtoroot.$url))
-            {            
-              if(strlen($url))
-              {                          	
-                $url = $rootURL.$url;
-                return $url;                
-              }
-              else
-              {
-              	if(strlen($Default))
-                	$url = $rootURL.$Default;
-                return $url;
-              }
-            }
-            else
-            {
-              if(strlen($Default))	
-              {
-              	return $rootURL.$Default;
-              }
-              else
-              	return "";
-            }
-        }
-        else
-        {
-          if(strlen($Default))
-          {
-            return $rootURL.$Default;
-          }
-          else 
-            return "";
-        }
-    }
-
-    function ThumbURL()
-    {
-        global $rootURL, $pathtoroot, $objConfig;
-
-        if(strlen($this->Get("ThumbUrl")))
-            return $this->Get("ThumbUrl");
-
-        if($this->Get("LocalThumb")=="1")
-        {
-            $url = $this->Get("ThumbPath");
-            //$url = $this->GetImageDir().$this->GetFileName();
-            if(file_exists($pathtoroot.$url))
-            {            
-              if(strlen($url))
-              {            
-                $url = $rootURL.$url;
-              }
-              else
-                $url = $rootURL."kernel/images/noimage.gif";
-              return $url;
-            }
-            else
-              return $rootURL."kernel/images/noimage.gif";
-        }
-        else
-          return $rootURL."kernel/images/noimage.gif";
-    }
-
-    function ParseObject($element)
-    {    
-        $extra_attribs = ExtraAttributes($element->attributes);
-        if(strtolower($element->name)==$this->TagPrefix)
-        {          
-            $field = strtolower($element->attributes["_field"]);          
-            switch($field)
-            {  
-            case "name":
-                $ret = $this->Get("Name");
-                break;
-            case "alt":
-                $ret = $this->Get("AltName");
-                break;
-            case "full_url":
-                $ret = $this->FullURL();
-                break;
-            case "thumb_url":
-                $ret = $this->ThumbURL();
-                break;
-            }
-        }
-        else
-            $ret = $element->Execute();
-        return $ret;
-    }
-
-    function parsetag($tag)
-    {
-        if(is_object($tag))
-        {        
-            $tagname = $tag->name;
-        }
-        else
-            $tagname = $tag;
-        switch($tagname)
-        {
-          case "image_name":
-            $ret = $this->Get("Name");
-            break;
-          case "image_alt":            
-            $ret = $this->Get("AltName");
-            break;
-          case "image_url":
-            $ret = $this->FullURL();
-            break;
-          case "thumb_url":
-            $ret = $this->ThumbURL();
-            break;
-        }
-        return $ret;
-    }
-
-    //Changes priority
-    function MoveUp()
-    {
-        $this->Increment("Priority");
-    }
-
-    function MoveDown()
-    {
-         $this->Decrement("Priority");
-    }
-
-    function GetMaxPriority()
-    {
-        $SourceId = $this->Get("ResourceId");
-        $sql = "SELECT MAX(Priority) as p from ".$this->tablename."WHERE ResourceId=$SourceId";
-        $result = $this->adodbConnection->Execute($sql);
-        return $result->fields["p"];
-    }
-
-    function GetMinPriority()
-    {
-        $SourceId = $this->Get("ResourceId");
-        $sql = "SELECT MIN(Priority) as p from ".$this->tablename."WHERE ResourceId=$SourceId";
-        $result = $this->adodbConnection->Execute($sql);
-        return $result->fields["p"];
-    }
-
-    function UpdatePriority()
-    {
-      $SourceId = $this->Get("ResourceId");
-      $sql = "SELECT MAX(Priority) as p from ".$this->tablename."WHERE ReourceId=$SourceId";
-      $result = $this->adodbConnection->Execute($sql);
-      $this->Set("Priority", $result->fields["p"]+1);
-    }
+	function GetMinPriority()
+	{
+		$SourceId = $this->Get("ResourceId");
+		$sql = "SELECT MIN(Priority) as p from ".$this->tablename."WHERE ResourceId=$SourceId";
+		$result = $this->adodbConnection->Execute($sql);
+		return $result->fields["p"];
+	}
+
+	function UpdatePriority()
+	{
+		$SourceId = $this->Get("ResourceId");
+		$sql = "SELECT MAX(Priority) as p from ".$this->tablename."WHERE ReourceId=$SourceId";
+		$result = $this->adodbConnection->Execute($sql);
+		$this->Set("Priority", $result->fields["p"]+1);
+	}
 }
 
 class clsImageList extends clsItemCollection
 {
-    var $Page;
-    var $PerPageVar;
+	var $Page;
+	var $PerPageVar;
+
+	function clsImageList()
+	{
+		$this->clsItemCollection();
+		$this->PerPageVar = "Perpage_Images";
+		$this->SourceTable = GetTablePrefix()."Images";
+		$this->classname = "clsImage";
+	}
+
+	function LoadImages($where="",$orderBy = "")
+	{
+		global $objConfig;
+
+		$this->Clear();
+		if($this->Page<1)
+		$this->Page=1;
+
+		if(is_numeric($objConfig->Get("Perpage_Images")))
+		{
+			$Start = ($this->Page-1)*$objConfig->Get("Perpage_Images");
+			$limit = "LIMIT ".$Start.",".$objConfig->Get("Perpage_Images");
+		}
+		else
+		$limit = NULL;
+
+
+		$this->QueryItemCount=TableCount("Images",$where,0);
+		//echo $this->QueryItemCount."<br>\n";
+		if(strlen(trim($orderBy))>0)
+		{
+			$orderBy = "Priority DESC, ".$orderBy;
+		}
+		else
+		$orderBy = "Priority DESC";
+
+		return $this->Query_Images($where,$orderBy,$limit);
+	}
+
+	function Query_Images($whereClause,$orderByClause=NULL,$limit=NULL)
+	{
+		global $objSession, $Errors;
+
+		$sql = "SELECT * FROM ".$this->SourceTable;
+
+		if(isset($whereClause))
+		$sql = sprintf('%s WHERE %s',$sql,$whereClause);
+		if(isset($orderByClause) && strlen(trim($orderByClause))>0)
+		$sql = sprintf('%s ORDER BY %s',$sql,$orderByClause);
+		if(isset($limit) && strlen(trim($limit)))
+		$sql .= " ".$limit;
+		//echo $sql;
+		return $this->Query_Item($sql);
+	}
 
-    function clsImageList()
-    {
-        $this->clsItemCollection();
-        $this->PerPageVar = "Perpage_Images";
-        $this->SourceTable = GetTablePrefix()."Images";
-        $this->classname = "clsImage";
-    }
-
-    function LoadImages($where="",$orderBy = "")
-    {
-      global $objConfig;
-
-      $this->Clear();
-      if($this->Page<1)
-          $this->Page=1;
-
-      if(is_numeric($objConfig->Get("Perpage_Images")))
-      {
-        $Start = ($this->Page-1)*$objConfig->Get("Perpage_Images");
-        $limit = "LIMIT ".$Start.",".$objConfig->Get("Perpage_Images");
-      }
-      else
-        $limit = NULL;
-
-
-      $this->QueryItemCount=TableCount("Images",$where,0);
-      //echo $this->QueryItemCount."<br>\n";
-      if(strlen(trim($orderBy))>0)
-      {
-        $orderBy = "Priority DESC, ".$orderBy;
-      }
-      else
-        $orderBy = "Priority DESC";
-
-     return $this->Query_Images($where,$orderBy,$limit);
-    }
-
-    function Query_Images($whereClause,$orderByClause=NULL,$limit=NULL)
-    {
-        global $objSession, $Errors;
-
-        $sql = "SELECT * FROM ".$this->SourceTable;
-
-        if(isset($whereClause))
-            $sql = sprintf('%s WHERE %s',$sql,$whereClause);
-        if(isset($orderByClause) && strlen(trim($orderByClause))>0)
-            $sql = sprintf('%s ORDER BY %s',$sql,$orderByClause);
-        if(isset($limit) && strlen(trim($limit)))
-            $sql .= " ".$limit;
-        //echo $sql;
-        return $this->Query_Item($sql);
-    }
-
-    function &Add($Name, $Alt, $ResourceId, $LocalImage, $LocalThumb,
-                 $Url, $ThumbUrl, $Enabled=1, $Priority=0, $DefaultImg=0, $ImageIndex=0,
-                 $SameImages=0, $ImageId=-999)
-    {
+	function &Add($Name, $Alt, $ResourceId, $LocalImage, $LocalThumb,
+	$Url, $ThumbUrl, $Enabled=1, $Priority=0, $DefaultImg=0, $ImageIndex=0,
+	$SameImages=0, $ImageId=-999)
+	{
 		if($DefaultImg==1)
 		{
-    		$sql = "UPDATE ".$this->SourceTable." SET DefaultImg=0 WHERE ResourceId=$ResourceId";
-    		$this->adodbConnection->Execute($sql);
-		}    	
-		
-        $img = new clsImage();
-        $img->tablename = $this->SourceTable;
-        $img->Set(array("Name","AltName","ResourceId","LocalImage","LocalThumb",
-                        "Url","ThumbUrl","Enabled","Priority","DefaultImg","ImageIndex","SameImages"),
-                  array($Name,$Alt,$ResourceId,$LocalImage,$LocalThumb,
-                        $Url,$ThumbUrl,$Enabled,$Priority,$DefaultImg,$ImageIndex,$SameImages));
-                        
-        if ($ImageId != -999)
-        {
-        	$img->Set("ImageId", $ImageId); 
-        }
-
-        if((int)$ImageIndex==0)        
-            $img->Set("ImageIndex",$this->GetNextImageIndex($ResourceId));
-        $img->Create();
-        array_push($this->Items,$img);
-        return $img;
-    }
-                 
-
-    function Edit($ImageId,$Name, $Alt, $ResourceId, $LocalImage, $LocalThumb,  
-                  $Url, $ThumbUrl, $Enabled=1, $Priority=0, $DefaultImg=0, $ImageIndex=0,
-                  $SameImages=0)
-    {
-        $img = $this->GetItem($ImageId);
-        
-        if((int)$ImageIndex==0)
-             $ImageIndex = $img->Get("ImageIndex");
-             
-        if(!strlen($ThumbUrl) && !$LocalThumb)
-            $ThumbUrl = $img->Get("ThumbUrl");
-            
-        $img->Set(array("Name","AltName","ResourceId","LocalImage","LocalThumb",
-                        "Url","ThumbUrl","Enabled","Priority","DefaultImg","ImageIndex","SameImages"),
-                  array($Name, $Alt, $ResourceId, $LocalImage, $LocalThumb,
-                        $Url, $ThumbUrl, $Enabled, $Priority, $DefaultImg, $ImageIndex,$SameImages));
-                        
-        if((int)$ImageIndex==0)        
-            $img->Set("ImageIndex",$this->GetNextImageIndex($ResourceId));
-            
-        $img->Update();
-        
-        if($DefaultImg==1)
-        {
-            $sql = "UPDATE ".$this->SourceTable." SET DefaultImg=0 WHERE ResourceId=".$ResourceId." AND ImageId !=$ImageId";
-            $this->adodbConnection->Execute($sql);
-        }
-        array_push($this->Items,$img);
-        
-        return $img;
-    }
-
-    function Delete_Image($ImageId)
-    {
-        $i = $this->GetItem($ImageId);
-        $i->Delete();
-    }
-
-    function DeleteResource($ResourceId)
-    {
-        $this->Clear();
-        $images = $this->Query_Images("ResourceId=".$ResourceId);
-        if(is_array($images))
-        {
-          foreach($images as $i)
-          {
-            $i->Delete();
-          }
-        }
-    }
-    
-    function LoadResource($ResourceId)
-    {
-        $sql = "SELECT * FROM ".$this->SourceTable." WHERE ResourceId=$ResourceId";
-        $this->Query_Item($sql);
-    }
-
-    function CopyResource($SourceId,$DestId)
-    {    	
-    	global $pathtoroot;
-    	
-        $this->Clear();
-        $this->LoadResource($SourceId);
-        foreach($this->Items as $i)
-        {
-           if($i->Get("LocalThumb"))
-           {
-           	 $f = $pathtoroot.$i->Get("ThumbPath");
-           	 if(file_exists($f))
-           	 {
-           	 	$p = pathinfo($f);
-           	 	$dir = $p["dirname"];
-           	 	$ext = $p["extension"];
-           	 	$newfile = $dir."/th_".$DestId."_".$i->Get("ImageIndex").".".$ext;
-           	 	if(file_exists($newfile))
-           	 	  @unlink($newfile);
-//           	 	echo $f." -> ".$newfile;  
-           	 	copy($f,$newfile);  
-           	 }           	 	
-           }	
-           if($i->Get("LocalImage"))
-           {
-           	 $f = $pathtoroot.$i->Get("LocalPath");
-           	 if(file_exists($f))
-           	 {
-           	 	$p = pathinfo($f);
-           	 	$dir = $p["dirname"];
-           	 	$ext = $p["extension"];
-           	 	$newfile = $dir."/".$DestId."_".$i->Get("ImageIndex").".".$ext;
-           	 	if(file_exists($newfile))
-           	 	  @unlink($newfile);
-           	 	  
-//           	 	echo $f." -> ".$newfile;
-           	 	copy($f,$newfile);  
-           	 }           	 	           	
-           }
-        }        
-        parent::CopyResource($SourceId,$DestId);        
-        $this->Clear();
-        $this->LoadResource($DestId);
-        foreach($this->Items as $img)
-        {
-        	if($img->Get("LocalThumb"))
-        	{
-        		$f = str_replace("th_$SourceId","th_$DestId",$img->Get("ThumbPath"));
-        		$img->Set("ThumbPath",$f);
-        	}	
-        	if($img->Get("LocalImage"))
-        	{
-        		$f = str_replace("/".$SourceId."_","/".$DestId."_",$img->Get("LocalPath"));
-        		$img->Set("LocalPath",$f);
-        	}
-        	$img->Update();
-        }
-    }
-
-    function GetImageByResource($ResourceId,$Index)
-    {
-      $found=FALSE;
-      if($this->NumItems()>0)
-      {
-        foreach($this->Items as $i)
-        {
-            if($i->Get("ResourceID")==$ResourceId and ($i->Get("ImageIndex")==$Index))
-            {
-                $found=TRUE;
-                break;
-            }
-          }
-        }
-        if(!$found)
-        {
-            $i = NULL;
-            $i = new clsImage();
-            if($i->LoadFromResource($ResourceId,$Index))
-            {
-              array_push($this->Items, $i);
-            }
-            else
-                unset($i);
-        }
-        if(is_object($i))
-        {
-          return $i;
-        }
-        else
-            return FALSE;
-    }
-
-    function &GetDefaultImage($ResourceId)
-    {
-        $sql = "SELECT * FROM ".$this->SourceTable." WHERE ResourceId=$ResourceId AND DefaultImg=1";
-        $rs = $this->adodbConnection->Execute($sql);
-        if($rs && ! $rs->EOF)
-        {
-            $data = $rs->fields;
-            $img= new clsImage();
-            $img->SetFromArray($data);
-            $img->Clean();            
-            return $img;
-        }
-        else
-            return FALSE;
-
-    }
-    function HandleImageUpload($FILE,$ResourceId,$RelatedTo,$DestDir, $Name="",$AltName="",$IsThumb=0)
-    {
-      global $objConfig;
-
-      $img = $this->GetImageByResource($ResourceId,$RelatedTo);
-
-      if(is_object($img) && $RelatedTo>0)
-      {
-        $img->Set("LocalImage",1);
-        $img->Set("Name",$Name);
-        $img->Set("AltName",$AltName);
-        $img->Set("IsThumbnail",$IsThumb);
-        $dest =  $img->StoreUploadedImage($FILE,1,$DestDir);
-        if(strlen($dest))
-        {        
-          $img->Set("Url", $objConfig->Get("Site_Path").$dest);
-          $img->Update();
-        }
-      }
-      else
-      {
-          $img=$this->NewLocalImage($ResourceId,$RelatedTo,$Name,$AltName,$IsThumb,$FILE,$DestDir);
-      }
-      return $img;
-    }
-
-    function GetResourceImages($ResourceId)
-    {
-        $sql = "SELECT * FROM ".$this->SourceTable." WHERE ResourceId=".$ResourceId;
-        $rs = $this->adodbConnection->Execute($sql);
-        while($rs && !$rs->EOF)
-        {
-            $img = new clsImage();
-            $img->LoadFromResource($ResourceId,$rs->fields["RelatedTo"]);
-            array_push($this->Images,$img);
-            $rs->MoveNext();
-        }
-    }
-
-    function GetResourceThumbnail($ResourceId)
-    {
-        $found=FALSE;
-        foreach($this->Images as $img)
-        {
-            if($img->Get("ResourceId")==$ResourceId && $img->Get("IsThumbnail")==1)
-            {
-                $found=TRUE;
-                break;
-            }
-        }
-        if($found)
-        {
-          return $img;
-        }
-        else
-            return FALSE;
-    }
-
-    function &GetImageByName($ResourceId,$name)
-    {
-        $found = FALSE;
-        foreach($this->Items as $img)
-        {
-            if($img->Get("ResourceId")==$ResourceId && $img->Get("Name")==$name)
-            {
-                $found=TRUE;
-                break;
-            }
-        }
-        if($found)
-        {
-            return $img;
-        }
-        else
-        {
-          $sql = "SELECT * FROM ".$this->SourceTable." WHERE ResourceId=$ResourceId AND Name LIKE '$name'";
-          //echo $sql;
-          $rs = $this->adodbConnection->Execute($sql);
-          if($rs && !$rs->EOF)
-          {
-            $img = $this->AddItemFromArray($rs->fields);            
-            return $img;
-          }
-          else
-              return FALSE;
-        }
-    }
-    
-    function CopyToPendingFiles()
-    {
-       $sql = "SELECT * FROM ".$this->SourceTable;
-       $this->Clear();
-       $this->Query_Item($sql);
-       foreach($this->Items as $i)
-       {
-       	  if(strlen($i->Get("LocalImage")) || strlen($i->Get("LocalThumb")))
-       	  {
-       	  	 $i->CopyToPending();
-       	  }
-       }
-    }
-
-    function CopyFromPendingFiles($edit_table)
-    {
-       $sql = "SELECT * FROM ".$edit_table;
-       $this->Clear();
-       $this->Query_Item($sql);
-       foreach($this->Items as $i)
-       {
-       	  
-       	  ## Delete original Images
-       	  $OrgImage = new clsImage($i->Get("ImageId"));
-       	  $OrgImage->DeleteLocalImage();
-       	
-       	 if($i->Get("LocalImage") || $i->Get("LocalThumb"))
-       	 {
-       	  	$i->CopyFromPending();
-       	  	 
-       	  	$t = $i->Get("LocalPath");
-       	  	
-       	  	$p = pathinfo($t);
-       	  	$p_arr = explode("/", $p['dirname']);
-       	  	if (eregi("pending", $p_arr[count($p_arr)-1]))
-     		{
-     		 	unset($p_arr[count($p_arr)-1]);
-     		 	$p['dirname'] = implode("/", $p_arr);
-     			$LocalPath = $p['dirname']."/".$p['basename'];     			
-     			$i->Set("LocalPath", $LocalPath); 	
-     		} 
-     		 
-       	  	$t = $i->Get("ThumbPath");       	  	  
-       	  	$p = pathinfo($t);
-       	  	 
-       	  	$p_arr = explode("/", $p['dirname']);
-       	  	if (eregi("pending", $p_arr[count($p_arr)-1]))
-     		{
-     		 	unset($p_arr[count($p_arr)-1]);
-     		 	$p['dirname'] = implode("/", $p_arr);
-     			$ThumbPath = $p['dirname']."/".$p['basename'];     			
-     			$i->Set("ThumbPath", $ThumbPath); 	
-     		 }        	  	 
-       	  	 
-       	  	 $i->tablename = $edit_table;
-       	  	 
-       	  	 $update = 1;       	  	 
-       	  }
-       	 
-       	 ## Empty the fields if are not used
-       	 if (!$i->Get("LocalImage"))
-	     {
-	       	$i->Set("LocalPath", "");
-	     	$update = 1;
-	     }
-	     
-       	 if (!$i->Get("LocalThumb"))
-       	 {
-       	 	$i->Set("ThumbPath", "");
-       	   	$update = 1;	
-       	 }
-       	  	
-       	 if ($update)
-       	 	$i->Update();  
-       	 
-       }
-    }    
-    
-    function DeletePendingFiles($edit_table)
-    {
-       $sql = "SELECT * FROM ".$edit_table;
-       $this->Clear();
-       $this->Query_Item($sql);
-       foreach($this->Items as $i)
-       {
-     	  	$i->DeleteFromPending();
-       }
-    }    	
-    
-    function CopyToEditTable($idfield, $idlist)
-    {
-        global $objSession;
-
-        $edit_table = $objSession->GetEditTable($this->SourceTable);
-        @$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
-        if(is_array($idlist))
-        {
-          $list = implode(",",$idlist);
-        }
-        else
-             $list  = $idlist;
-        $query = "SELECT * FROM ".$this->SourceTable." WHERE $idfield IN ($list)";
-        $insert = "CREATE TABLE ".$edit_table." ".$query;
-        if($objSession->HasSystemPermission("DEBUG.LIST"))
-            echo htmlentities($insert,ENT_NOQUOTES)."<br>\n";
-        $this->adodbConnection->Execute($insert);        
-        $this->SourceTable = $edit_table;
-        $this->CopyToPendingFiles();
-                
-        $this->UpdateFilenamesToPendings();
-    }    
-    
-    function UpdateFilenamesToPendings()
-    {
-    	global $objSession;
-    	
-    	$edit_table = $this->SourceTable;
-    	
-    	$sql = "SELECT * FROM ".$edit_table."  WHERE (LocalPath!='' AND LocalPath IS NOT NULL) OR (ThumbPath!='' AND ThumbPath IS NOT NULL)";
-       	$this->Clear();
-       	$this->Query_Item($sql);
-
-       	foreach($this->Items as $i)
-       	{
-       		$set = "";
-       		$ImageId = $i->Get("ImageId");
-       		
-       		## Update Local Image Path -> add "pending/" to PATH
-       		if (strlen($i->Get("LocalPath")))
-       		{
-       			$p = pathinfo($i->Get("LocalPath"));       			
-     			if (!eregi("/pending $", $p['dirname']))
-     			{
-     				$LocalPath = $p['dirname']."/pending/".$p['basename'];     			
-     				$set = "SET LocalPath='$LocalPath'";	
-     			}  
-       		}
-       		
-//       		echo "LocalImage: ".$i->Get("LocalImage").", PATH: ".$i->Get("LocalPath")."<BR>";
-       		
-       		## Update Local Thumb Path -> add "pending/" to PATH
-       		if (strlen($i->Get("ThumbPath")))
-       		{
-     			$p = pathinfo($i->Get("ThumbPath"));       			
-     			if (!eregi("/pending $", $p['dirname']))
-     			{
-     				$LocalThumb = $p['dirname']."/pending/".$p['basename'];
-     				if (strlen($set))
-     					$set.= ", ThumbPath='$LocalThumb'";	
-     				else
-     					$set = "SET ThumbPath='$LocalThumb'";	
-     			}   		    			
-       		}
-       		
-//       		echo "LocalThumb: ".$i->Get("LocalThumb").", PATH: ".$i->Get("ThumbPath")."<BR>";
-       		
-       		if (strlen($set))
-       		{
-       			$sql = "UPDATE $edit_table $set WHERE ImageId=$ImageId";
-       			if($objSession->HasSystemPermission("DEBUG.LIST"))
-            		echo htmlentities($sql,ENT_NOQUOTES)."<br>\n";
-        		$this->adodbConnection->Execute($sql);        
-       		}
-       	}	
-    }
-    
-    function CopyFromEditTable($idfield)
-    {    	
-        global $objSession;        
+			$sql = "UPDATE ".$this->SourceTable." SET DefaultImg=0 WHERE ResourceId=$ResourceId";
+			$this->adodbConnection->Execute($sql);
+		}
+
+		$img = new clsImage();
+		$img->tablename = $this->SourceTable;
+		$img->Set(array("Name","AltName","ResourceId","LocalImage","LocalThumb",
+		"Url","ThumbUrl","Enabled","Priority","DefaultImg","ImageIndex","SameImages"),
+		array($Name,$Alt,$ResourceId,$LocalImage,$LocalThumb,
+		$Url,$ThumbUrl,$Enabled,$Priority,$DefaultImg,$ImageIndex,$SameImages));
+
+		if ($ImageId != -999)
+		{
+			$img->Set("ImageId", $ImageId);
+		}
+
+		if((int)$ImageIndex==0)
+		$img->Set("ImageIndex",$this->GetNextImageIndex($ResourceId));
+		$img->Create();
+		array_push($this->Items,$img);
+		return $img;
+	}
+
+
+	function Edit($ImageId,$Name, $Alt, $ResourceId, $LocalImage, $LocalThumb,
+	$Url, $ThumbUrl, $Enabled=1, $Priority=0, $DefaultImg=0, $ImageIndex=0,
+	$SameImages=0)
+	{
+		$img = $this->GetItem($ImageId);
+
+		if((int)$ImageIndex==0)
+		$ImageIndex = $img->Get("ImageIndex");
+
+		if(!strlen($ThumbUrl) && !$LocalThumb)
+		$ThumbUrl = $img->Get("ThumbUrl");
+
+		$img->Set(array("Name","AltName","ResourceId","LocalImage","LocalThumb",
+		"Url","ThumbUrl","Enabled","Priority","DefaultImg","ImageIndex","SameImages"),
+		array($Name, $Alt, $ResourceId, $LocalImage, $LocalThumb,
+		$Url, $ThumbUrl, $Enabled, $Priority, $DefaultImg, $ImageIndex,$SameImages));
+
+		if((int)$ImageIndex==0)
+		$img->Set("ImageIndex",$this->GetNextImageIndex($ResourceId));
+
+		$img->Update();
+
+		if($DefaultImg==1)
+		{
+			$sql = "UPDATE ".$this->SourceTable." SET DefaultImg=0 WHERE ResourceId=".$ResourceId." AND ImageId !=$ImageId";
+			$this->adodbConnection->Execute($sql);
+		}
+		array_push($this->Items,$img);
+
+		return $img;
+	}
+
+	function Delete_Image($ImageId)
+	{
+		$i = $this->GetItem($ImageId);
+		$i->Delete();
+	}
+
+	function DeleteResource($ResourceId)
+	{
+		$this->Clear();
+		$images = $this->Query_Images("ResourceId=".$ResourceId);
+		if(is_array($images))
+		{
+			foreach($images as $i)
+			{
+				$i->Delete();
+			}
+		}
+	}
+
+	function LoadResource($ResourceId)
+	{
+		$sql = "SELECT * FROM ".$this->SourceTable." WHERE ResourceId=$ResourceId";
+		$this->Query_Item($sql);
+	}
+
+	function CopyResource($SourceId,$DestId)
+	{
+		global $pathtoroot;
+
+		$this->Clear();
+		$this->LoadResource($SourceId);
+		foreach($this->Items as $i)
+		{
+			if($i->Get("LocalThumb"))
+			{
+				$f = $pathtoroot.$i->Get("ThumbPath");
+				if(file_exists($f))
+				{
+					$p = pathinfo($f);
+					$dir = $p["dirname"];
+					$ext = $p["extension"];
+					$newfile = $dir."/th_".$DestId."_".$i->Get("ImageIndex").".".$ext;
+					if(file_exists($newfile))
+					@unlink($newfile);
+					//           	 	echo $f." -> ".$newfile;
+					copy($f,$newfile);
+				}
+			}
+			if($i->Get("LocalImage"))
+			{
+				$f = $pathtoroot.$i->Get("LocalPath");
+				if(file_exists($f))
+				{
+					$p = pathinfo($f);
+					$dir = $p["dirname"];
+					$ext = $p["extension"];
+					$newfile = $dir."/".$DestId."_".$i->Get("ImageIndex").".".$ext;
+					if(file_exists($newfile))
+					@unlink($newfile);
+
+					//           	 	echo $f." -> ".$newfile;
+					copy($f,$newfile);
+				}
+			}
+		}
+		parent::CopyResource($SourceId,$DestId);
+		$this->Clear();
+		$this->LoadResource($DestId);
+		foreach($this->Items as $img)
+		{
+			if($img->Get("LocalThumb"))
+			{
+				$f = str_replace("th_$SourceId","th_$DestId",$img->Get("ThumbPath"));
+				$img->Set("ThumbPath",$f);
+			}
+			if($img->Get("LocalImage"))
+			{
+				$f = str_replace("/".$SourceId."_","/".$DestId."_",$img->Get("LocalPath"));
+				$img->Set("LocalPath",$f);
+			}
+			$img->Update();
+		}
+	}
+
+	function GetImageByResource($ResourceId,$Index)
+	{
+		$found=FALSE;
+		if($this->NumItems()>0)
+		{
+			foreach($this->Items as $i)
+			{
+				if($i->Get("ResourceID")==$ResourceId and ($i->Get("ImageIndex")==$Index))
+				{
+					$found=TRUE;
+					break;
+				}
+			}
+		}
+		if(!$found)
+		{
+			$i = NULL;
+			$i = new clsImage();
+			if($i->LoadFromResource($ResourceId,$Index))
+			{
+				array_push($this->Items, $i);
+			}
+			else
+			unset($i);
+		}
+		if(is_object($i))
+		{
+			return $i;
+		}
+		else
+		return FALSE;
+	}
+
+	function &GetDefaultImage($ResourceId)
+	{
+		$sql = "SELECT * FROM ".$this->SourceTable." WHERE ResourceId=$ResourceId AND DefaultImg=1";
+		$rs = $this->adodbConnection->Execute($sql);
+		if($rs && ! $rs->EOF)
+		{
+			$data = $rs->fields;
+			$img= new clsImage();
+			$img->SetFromArray($data);
+			$img->Clean();
+			return $img;
+		}
+		else
+		return FALSE;
+
+	}
+	function HandleImageUpload($FILE,$ResourceId,$RelatedTo,$DestDir, $Name="",$AltName="",$IsThumb=0)
+	{
+		global $objConfig;
+
+		$img = $this->GetImageByResource($ResourceId,$RelatedTo);
+
+		if(is_object($img) && $RelatedTo>0)
+		{
+			$img->Set("LocalImage",1);
+			$img->Set("Name",$Name);
+			$img->Set("AltName",$AltName);
+			$img->Set("IsThumbnail",$IsThumb);
+			$dest =  $img->StoreUploadedImage($FILE,1,$DestDir);
+			if(strlen($dest))
+			{
+				$img->Set("Url", $objConfig->Get("Site_Path").$dest);
+				$img->Update();
+			}
+		}
+		else
+		{
+			$img=$this->NewLocalImage($ResourceId,$RelatedTo,$Name,$AltName,$IsThumb,$FILE,$DestDir);
+		}
+		return $img;
+	}
+
+	function GetResourceImages($ResourceId)
+	{
+		$sql = "SELECT * FROM ".$this->SourceTable." WHERE ResourceId=".$ResourceId;
+		$rs = $this->adodbConnection->Execute($sql);
+		while($rs && !$rs->EOF)
+		{
+			$img = new clsImage();
+			$img->LoadFromResource($ResourceId,$rs->fields["RelatedTo"]);
+			array_push($this->Images,$img);
+			$rs->MoveNext();
+		}
+	}
+
+	function GetResourceThumbnail($ResourceId)
+	{
+		$found=FALSE;
+		foreach($this->Images as $img)
+		{
+			if($img->Get("ResourceId")==$ResourceId && $img->Get("IsThumbnail")==1)
+			{
+				$found=TRUE;
+				break;
+			}
+		}
+		if($found)
+		{
+			return $img;
+		}
+		else
+		return FALSE;
+	}
+
+	function &GetImageByName($ResourceId,$name)
+	{
+		$found = FALSE;
+		foreach($this->Items as $img)
+		{
+			if($img->Get("ResourceId")==$ResourceId && $img->Get("Name")==$name)
+			{
+				$found=TRUE;
+				break;
+			}
+		}
+		if($found)
+		{
+			return $img;
+		}
+		else
+		{
+			$sql = "SELECT * FROM ".$this->SourceTable." WHERE ResourceId=$ResourceId AND Name LIKE '$name'";
+			//echo $sql;
+			$rs = $this->adodbConnection->Execute($sql);
+			if($rs && !$rs->EOF)
+			{
+				$img = $this->AddItemFromArray($rs->fields);
+				return $img;
+			}
+			else
+			return FALSE;
+		}
+	}
+
+	function CopyToPendingFiles()
+	{
+		$sql = "SELECT * FROM ".$this->SourceTable;
+		$this->Clear();
+		$this->Query_Item($sql);
+		foreach($this->Items as $i)
+		{
+			if(strlen($i->Get("LocalImage")) || strlen($i->Get("LocalThumb")))
+			{
+				$i->CopyToPending();
+			}
+		}
+	}
+
+	function CopyFromPendingFiles($edit_table)
+	{
+		$sql = "SELECT * FROM ".$edit_table;
+		$this->Clear();
+		$this->Query_Item($sql);
+		foreach($this->Items as $i)
+		{
+
+			## Delete original Images
+			$OrgImage = new clsImage($i->Get("ImageId"));
+			$OrgImage->DeleteLocalImage();
+
+			if($i->Get("LocalImage") || $i->Get("LocalThumb"))
+			{
+				$i->CopyFromPending();
+
+				$t = $i->Get("LocalPath");
+
+				$p = pathinfo($t);
+				$p_arr = explode("/", $p['dirname']);
+				if (eregi("pending", $p_arr[count($p_arr)-1]))
+				{
+					unset($p_arr[count($p_arr)-1]);
+					$p['dirname'] = implode("/", $p_arr);
+					$LocalPath = $p['dirname']."/".$p['basename'];
+					$i->Set("LocalPath", $LocalPath);
+				}
+
+				$t = $i->Get("ThumbPath");
+				$p = pathinfo($t);
+
+				$p_arr = explode("/", $p['dirname']);
+				if (eregi("pending", $p_arr[count($p_arr)-1]))
+				{
+					unset($p_arr[count($p_arr)-1]);
+					$p['dirname'] = implode("/", $p_arr);
+					$ThumbPath = $p['dirname']."/".$p['basename'];
+					$i->Set("ThumbPath", $ThumbPath);
+				}
+
+				$i->tablename = $edit_table;
+
+				$update = 1;
+			}
+
+			## Empty the fields if are not used
+			if (!$i->Get("LocalImage"))
+			{
+				$i->Set("LocalPath", "");
+				$update = 1;
+			}
+
+			if (!$i->Get("LocalThumb"))
+			{
+				$i->Set("ThumbPath", "");
+				$update = 1;
+			}
+
+			if ($update)
+			$i->Update();
+
+		}
+	}
+
+	function DeletePendingFiles($edit_table)
+	{
+		$sql = "SELECT * FROM ".$edit_table;
+		$this->Clear();
+		$this->Query_Item($sql);
+		foreach($this->Items as $i)
+		{
+			$i->DeleteFromPending();
+		}
+	}
+
+	function CopyToEditTable($idfield, $idlist)
+	{
+		global $objSession;
+
+		$edit_table = $objSession->GetEditTable($this->SourceTable);
+		@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
+		if(is_array($idlist))
+		{
+			$list = implode(",",$idlist);
+		}
+		else
+		$list  = $idlist;
+		$query = "SELECT * FROM ".$this->SourceTable." WHERE $idfield IN ($list)";
+		$insert = "CREATE TABLE ".$edit_table." ".$query;
+		if($objSession->HasSystemPermission("DEBUG.LIST"))
+		echo htmlentities($insert,ENT_NOQUOTES)."<br>\n";
+		$this->adodbConnection->Execute($insert);
+		$this->SourceTable = $edit_table;
+		$this->CopyToPendingFiles();
+
+		$this->UpdateFilenamesToPendings();
+	}
+
+	function UpdateFilenamesToPendings()
+	{
+		global $objSession;
+
+		$edit_table = $this->SourceTable;
+
+		$sql = "SELECT * FROM ".$edit_table."  WHERE (LocalPath!='' AND LocalPath IS NOT NULL) OR (ThumbPath!='' AND ThumbPath IS NOT NULL)";
+		$this->Clear();
+		$this->Query_Item($sql);
+
+		foreach($this->Items as $i)
+		{
+			$set = "";
+			$ImageId = $i->Get("ImageId");
+
+			## Update Local Image Path -> add "pending/" to PATH
+			if (strlen($i->Get("LocalPath")))
+			{
+				$p = pathinfo($i->Get("LocalPath"));
+				if (!eregi("/pending $", $p['dirname']))
+				{
+					$LocalPath = $p['dirname']."/pending/".$p['basename'];
+					$set = "SET LocalPath='$LocalPath'";
+				}
+			}
+
+			//       		echo "LocalImage: ".$i->Get("LocalImage").", PATH: ".$i->Get("LocalPath")."<BR>";
+
+			## Update Local Thumb Path -> add "pending/" to PATH
+			if (strlen($i->Get("ThumbPath")))
+			{
+				$p = pathinfo($i->Get("ThumbPath"));
+				if (!eregi("/pending $", $p['dirname']))
+				{
+					$LocalThumb = $p['dirname']."/pending/".$p['basename'];
+					if (strlen($set))
+					$set.= ", ThumbPath='$LocalThumb'";
+					else
+					$set = "SET ThumbPath='$LocalThumb'";
+				}
+			}
+
+			//       		echo "LocalThumb: ".$i->Get("LocalThumb").", PATH: ".$i->Get("ThumbPath")."<BR>";
+
+			if (strlen($set))
+			{
+				$sql = "UPDATE $edit_table $set WHERE ImageId=$ImageId";
+				if($objSession->HasSystemPermission("DEBUG.LIST"))
+				echo htmlentities($sql,ENT_NOQUOTES)."<br>\n";
+				$this->adodbConnection->Execute($sql);
+			}
+		}
+	}
+
+	function CopyFromEditTable($idfield)
+	{
+		global $objSession;
 		$GLOBALS['_CopyFromEditTable']=1;
-        
-        $edit_table = $objSession->GetEditTable($this->SourceTable);
-        $dummy =& $this->GetDummy();
-        if( !$dummy->TableExists($edit_table) )
-        {
-        	echo 'ERROR: Table "<b>'.$edit_table.'</b>" missing (class: <b>'.get_class($this).'</b>)<br>';	
-        	//exit;
-        	return;
-        }
-        
-        $rs = $this->adodbConnection->Execute("SELECT * FROM $edit_table WHERE ResourceId=0");
-        while($rs && !$rs->EOF)
-        {
-        	$id = $rs->fields["ImageId"];
-        	if($id>0)
-        	{
-        		$img = $this->GetItem($id);
-        		$img->Delete();
-        	}
-        	$rs->MoveNext();
-        }
-        $this->adodbConnection->Execute("DELETE FROM $edit_table WHERE ResourceId=0");
-        $this->CopyFromPendingFiles($edit_table);
-        parent::CopyFromEditTable($idfield);
+
+		$edit_table = $objSession->GetEditTable($this->SourceTable);
+		$dummy =& $this->GetDummy();
+		if( !$dummy->TableExists($edit_table) )
+		{
+			echo 'ERROR: Table "<b>'.$edit_table.'</b>" missing (class: <b>'.get_class($this).'</b>)<br>';
+			//exit;
+			return;
+		}
+
+		$rs = $this->adodbConnection->Execute("SELECT * FROM $edit_table WHERE ResourceId=0");
+		while($rs && !$rs->EOF)
+		{
+			$id = $rs->fields["ImageId"];
+			if($id>0)
+			{
+				$img = $this->GetItem($id);
+				$img->Delete();
+			}
+			$rs->MoveNext();
+		}
+		$this->adodbConnection->Execute("DELETE FROM $edit_table WHERE ResourceId=0");
+		$this->CopyFromPendingFiles($edit_table);
+		parent::CopyFromEditTable($idfield);
 		unset($GLOBALS['_CopyFromEditTable']);
-    }    
-    
-    function PurgeEditTable($idfield)
-    {
-      global $objSession;
-
-      $edit_table = $objSession->GetEditTable($this->SourceTable);
-	  $this->DeletePendingFiles($edit_table);
-      @$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
-    }    
-    
-    function GetNextImageIndex($ResourceId)
-    {
-        $sql = "SELECT MAX(ImageIndex) as MaxVal FROM ".$this->SourceTable." WHERE ResourceId=".$ResourceId;
-        $rs = $this->adodbConnection->Execute($sql);
-        if($rs)
-        {
-            $val = (int)$rs->fields["MaxVal"];
-            $val++;
-        }
-        return $val;
-    }
-
-    function GetMaxPriority($ResourceId)
-    {     
-      $sql = "SELECT MAX(Priority) as p from ".$this->SourceTable."WHERE ResourceId=$ResourceId";
-      $result = $this->adodbConnection->Execute($sql);
-      return $result->fields["p"];
-    }
-
-    function GetMinPriority($ResourceId)
-    {
-        $sql = "SELECT MIN(Priority) as p from ".$this->SourceTable."WHERE ResourceId=$ResourceId";
-        $result = $this->adodbConnection->Execute($sql);
-        return $result->fields["p"];
-    }
+	}
+
+	function PurgeEditTable($idfield)
+	{
+		global $objSession;
+
+		$edit_table = $objSession->GetEditTable($this->SourceTable);
+		$this->DeletePendingFiles($edit_table);
+		@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
+	}
+
+	function GetNextImageIndex($ResourceId)
+	{
+		$sql = "SELECT MAX(ImageIndex) as MaxVal FROM ".$this->SourceTable." WHERE ResourceId=".$ResourceId;
+		$rs = $this->adodbConnection->Execute($sql);
+		if($rs)
+		{
+			$val = (int)$rs->fields["MaxVal"];
+			$val++;
+		}
+		return $val;
+	}
+
+	function GetMaxPriority($ResourceId)
+	{
+		$sql = "SELECT MAX(Priority) as p from ".$this->SourceTable."WHERE ResourceId=$ResourceId";
+		$result = $this->adodbConnection->Execute($sql);
+		return $result->fields["p"];
+	}
+
+	function GetMinPriority($ResourceId)
+	{
+		$sql = "SELECT MIN(Priority) as p from ".$this->SourceTable."WHERE ResourceId=$ResourceId";
+		$result = $this->adodbConnection->Execute($sql);
+		return $result->fields["p"];
+	}
 
 } /*clsImageList*/
 
 ?>

Property changes on: trunk/kernel/include/image.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.11
\ No newline at end of property
+1.12
\ No newline at end of property