<?php
switch($Action)
{ 
	case 'n_add_favorite':
		$id = $n_var_list['id'];
		$userid = $objSession->Get('PortalUserId');
		$a =& $objArticleList->GetItem($id);
		$a->AddFavorite($userid);

		$cat_id = $a->GetPrimaryCategory();
		UpdateCategoryCount('Article', $cat_id, $objArticleList->CacheListType('favorites'));
		DeleteModuleTagCache('innews');
    	break;
    	
    case "n_del_favorite":
	    $id = $n_var_list["id"];
	    $userid = $objSession->Get("PortalUserId");
	    $a =& $objArticleList->GetItem($id);
	    $a->DeleteFavorite($userid);
	    $cat_id = $a->GetPrimaryCategory();
	    UpdateCategoryCount('Article', $cat_id, $objArticleList->CacheListType('favorites'));
	    DeleteModuleTagCache('innews');
    	break;
    	
    case "n_rate_article":	
         $id = $n_var_list["id"];
         $news =& $objArticleList->GetItem($id);
         if($objSession->InSpamControl($news->Get("ResourceId"),"Ratinge"))
         {
           $StatusMessage["rating"] = language("la_Rating_AlreadyVoted");
         }
         else
         {     
           $ValName = "News_RatingDelay_Value";
           $IntName = "News_RatingDelay_Interval";
           $exp_secs = $objConfig->Get($ValName) * $objConfig->Get($IntName);
           $objSession->AddToSpamControl($news->Get("ResourceId"),$exp_secs,"Rating");

           $vote = $_POST["frmRateVote"];                     
           $news->SubmitVote($vote,"");
           $StatusMessage["rating"] = language("la_Vote_Added");
         }   		
         DeleteModuleTagCache('innews');
    break;
  case "n_sort_articles":
      if(is_numeric($_POST["Perpage_News"]))
      {            
        $objSession->SetPersistantVariable("Perpage_News",$_POST["Perpage_News"]);
      }
      else
      {
          $objSession->SetPersistantVariable("Perpage_News", $objConfig->Get("Perpage_News"));          
      }
      
      if (strlen($_POST["News_SortField"]))
      { 
      	//$objSession->SetPersistantVariable("News_ArticleSort", $_POST["article_sort_field"]. " ".$_POST["article_sort_order"]);
      	$objSession->SetPersistantVariable("News_SortField",$_POST["News_SortField"]);      
      	$objSession->SetPersistantVariable("News_SortField2","");
      }
      if (strlen($_POST["News_SortOrder"]))
      {
      	$objSession->SetPersistantVariable("News_SortOrder",$_POST["News_SortOrder"]);      
      	$objSession->SetPersistantVariable("News_SortOrder2","");		
      }
       
      $n_var_list["p"] = 1;
      $objArticleList->Page = 1;
      DeleteModuleTagCache('innews');
  break;    
    case "n_add_review":
        //phpinfo(INFO_VARIABLES);
        $perm = 0;
        $CategoryId=$objCatList->CurrentCategoryID();
        if ($objSession->HasCatPermission("NEWS.REVIEW.PENDING"))
          $perm = 2; 
        if ($objSession->HasCatPermission("NEWS.REVIEW")) 
          $perm = 1;  
        if ($perm == 0) 
        {
          $MissingCount++;
          $FormError["n_addreview"]["review"] = language("lu_ferror_no_access");
        }
        else
        {   
	        $id = $n_var_list["id"];          
	        $article =& $objArticleList->GetItem($id);   
	        
	        $value = $objSession->InSpamControl($article->Get("ResourceId"),"Review");
	            
            //if($article->ReviewIPExists($_SERVER["REMOTE_ADDR"]))
            if ($value)
            {
                $MissingCount++;
                $FormError["n_addreview"]["review"] = language("lu_ferror_review_duplicate");
            }
            else
            {   
	            $ValName = "News_ReviewDelay_Value";
	          	$IntName = "News_ReviewDelay_Interval";
	            
	          	$exp_secs = $objConfig->Get($ValName) * $objConfig->Get($IntName);
	          	$objSession->AddToSpamControl($article->Get("ResourceId"),$exp_secs,"Review");            	    
            	   
              $CreatedOn = adodb_date("U");            
              $ReviewText = inp_escape($_POST["review"]);
              $id = $n_var_list["id"];
              $userid = $objSession->Get("PortalUserId");            	
              $article->AddReview($userid,$ReviewText,($perm==2),$_SERVER["REMOTE_ADDR"]);
              if(strlen($_GET["Confirm"]))
              {               
                $var_list["t"] = $_GET["Confirm"];
              }
              else
                $var_list["t"] = $_GET["DestTemplate"];                         
            }
        }
        DeleteModuleTagCache('kernel');
    break;			
   
    case "n_rate_news":	   
        //phpinfo();
        if ($objSession->HasCatPermission("NEWS.RATE")) 
          $perm = 1;  
        if ($perm == 0) 
        {
          $MissingCount++;
          $FormError["l_rate"]["review"] = language("lu_ferror_no_access");
        }
        else
        {   
          $MissingCount = SetMissingDataErrors("n_rate");
          $id = $n_var_list["id"];          
          $article =& $objArticleList->GetItem($id);
          
          if (is_object($objSession)) {
          	$value = $objSession->InSpamControl($article->Get("ResourceId"),"Rating");
          }

          if($value)
          {
             $MissingCount++;
             $FormError["n_rate"]["review"] = language("lu_rating_alreadyvoted");
             if(strlen($_GET["Duplicate"]))
             {               
               $var_list["t"] = $_GET["Duplicate"];
             }
             else
                 $var_list["t"] = $_GET["DestTemplate"];

          }
          if($MissingCount==0)
          {
            $ValName = "News_RatingDelay_Value";
            $IntName = "News_RatingDelay_Interval";

            $exp_secs = $objConfig->Get($ValName) * $objConfig->Get($IntName);
            $objSession->AddToSpamControl($article->Get("ResourceId"),$exp_secs,"Rating");
            $vote = $_POST["rating"];                     
            $article->SubmitVote($vote,"");
            if(strlen($_GET["Confirm"]))
            {               
              $var_list["t"] = $_GET["Confirm"];
            }
            else
              $var_list["t"] = $_GET["DestTemplate"];    
          }            
        }
        DeleteModuleTagCache('innews');
    break;
    case "n_email_article":	

        if($objSession->Get("PortalUserId"))
        {
            $u =& $objSession->CurrentUser;
            $email = $u->Get("Email");
        }
        else
            $email = "Guest";

        $n = $objArticleList->GetItem($newid);

        $email_subject=$objConfig->Get("n_email_subject");
        if($objConfig->Get("n_email_sender"))
            $email_subject .= $email;
        $email_subject = str_replace("%sender%",$email,$email_subject);
        $message = str_replace("%sender%",$email,$objConfig->Get("n_email_body"));
        $message = str_replace("%except%",$n->Get("Excerpt"),$message);
        $message = str_replace("%news_link%",$n->parsetag("news_link"),$message);

        mail($email_to, $email_subject, $message,
             "From: ".$objConfig->Get("email_from")."\r\n"
            ."Reply-To: ".$objConfig->Get("email_replyto")."\r\n"
            ."X-Mailer: In-Portal");
    break;
    case "m_simple_search":
      $type = $objItemTypes->GetTypeByName("Article");
      $keywords = trim($_POST["keywords"]);
      $length = $objConfig->Get('Search_MinKeyword_Length');

      $isExact = (substr($keywords, 0, 2) == '\"' && substr($keywords, strlen($keywords) - 2, 2) == '\"');

      if ($isExact) {
      	$performSearch = (strlen(trim(str_replace('\"', '', $keywords))) >= $length);
      }
      else {
      	$key_arr = explode(' ', $keywords);

      	/*foreach($key_arr as $value) {
      		if (strlen($value) < $length) {
      			$keywords = str_replace(' '.$value, '', $keywords);
      			$keywords = str_replace($value.' ', '', $keywords);
      		}
      	}

      	$keywords = str_replace('  ', ' ', $keywords);*/

      	$performSearch = (strlen($keywords) >= $length);
      }
      
      if ($performSearch) {
        $objNewsSearch = new clsSearchResults("News",$objArticleList->classname);
        $objNewsSearch->SetKeywords($keywords);
        $objNewsSearch->AddSimpleFields('n');
        
        if (is_numeric($objConfig->Get("SearchRel_Pop_articles"))) {
            $objNewsSearch->PctPop = ($objConfig->Get("SearchRel_Pop_articles")/100);
        }
        if(is_numeric($objConfig->Get("SearchRel_Keyword_articles"))) {
            $objNewsSearch->PctRelevance = ($objConfig->Get("SearchRel_Keyword_articles")/100);
        }
        if(is_numeric($objConfig->Get("SearchRel_Rating_articles"))) {
            $objNewsSearch->PctRating = ($objConfig->Get("SearchRel_Rating_articles")/100);
        }

        $objNewsSearch->PerformSearch($type->Get("ItemType"),$SortOrder,FALSE);
        //$objNewsSearch->SetRelevence($type->Get("ItemType"), "NewsId");
      }
    break;
  case "m_adv_search":
     	switch($_GET["type"])
     	{
     		case 2: /* article */
     			//echo "Searching Articles<br>";
     			$objAdvSearch = new clsAdvancedSearchResults("News",$objArticleList->classname, $_GET["type"]);
				foreach($objSearchConfig->Items as $field)
				{
					$fld = $field->Get("FieldName");

 					$Verb = $_POST["verb"][$field->Get("FieldName")];
 					if(!strlen($Verb) && $field->Get("FieldType")=="boolean")
 					{
 						if($_POST["value"][$field->Get("FieldName")]!=-1)
 						{
 						  $Value = $_POST["value"][$field->Get("FieldName")];
						  $Verb = "is";
 						}
 					}
 					else
 					{ 						
 						$Value = $_POST["value"][$field->Get("FieldName")];
 					}
 					switch( $_POST["andor"][$field->Get("FieldName")])
 					{
 						case 1:
 							$Conjuction = "AND";
 						break;
 						case 2:
 							$Conjuction = "OR";
 						break; 								
 						default:
 							$Conjuction = "";
 						break;
 					} 
 					
 					if (strlen($Value) && $Verb=="any") 
 					{
 						$Verb = 'contains';
 					}
 					
 					if(strlen($Value) && strlen($Verb)>0 && $Verb!="any")
 					{				  
 						//echo "Adding ARTICLE SearchField: [".$field->Get("TableName")."]; [".$field->Get("FieldName")."]; [$Verb]; [$Value]; [$Conjuction]<br>";
 						$objAdvSearch->AddAdvancedField($field->Get("TableName"),$field->Get("FieldName"),$Verb,$Value,$Conjuction, 'n');
 					}
				}
				$objAdvSearch->PerformSearch(2,NULL,TRUE); 	
     	}		
	break;      
    case "m_simple_subsearch":
        $keywords = $_POST["keywords"];
        $type = $objItemTypes->GetTypeByName("Article"); 

        if(strlen($keywords))
        {   
            $objNewsSearch = new clsSearchResults("News",$objArticleList->classname);              
            $objNewsSearch->SetKeywords($keywords);
            $objNewsSearch->AddSimpleFields('n');
            if (is_numeric($objConfig->Get("SearchRel_Pop_articles"))) {
                $objNewsSearch->PctPop = ($objConfig->Get("SearchRel_Pop_articles")/100);
            }
            if (is_numeric($objConfig->Get("SearchRel_Keyword_articles"))) {
                $objNewsSearch->PctRelevance = ($objConfig->Get("SearchRel_Keyword_articles")/100);
            }
            if (is_numeric($objConfig->Get("SearchRel_Rating_articles"))) {
                $objNewsSearch->PctRating = ($objConfig->Get("SearchRel_Rating_articles")/100);
            }
            if(count($SearchResultIdList)>0)
            {             
              $objNewsSearch->PerformSearch($type->Get("ItemType"),$SortOrder,FALSE,$SearchResultIdList);
              //$objNewsSearch->SetRelevence($type->Get("ItemType"), "NewsId");  
            }
        }
    break;
    }
?>