Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Sat, Feb 1, 11:00 PM

in-portal

This file is larger than 256 KB, so syntax highlighting was skipped.
Index: trunk/kernel/include/parseditem.php
===================================================================
--- trunk/kernel/include/parseditem.php (revision 136)
+++ trunk/kernel/include/parseditem.php (revision 137)
@@ -1,2780 +1,2780 @@
<?php
global $ItemTypePrefixes;
$ItemTypePrefixes = array();
$ItemTagFiles = array();
function RegisterPrefix($class,$prefix,$file)
{
global $ItemTypePrefixes, $ItemTagFiles;
$ItemTypePrefixes[$class] = $prefix;
$ItemTagFiles[$prefix] = $file;
}
class clsParsedItem extends clsItemDB
{
var $TagPrefix;
var $Parser;
var $AdminParser;
function clsParsedItem($id=NULL)
{
global $TemplateRoot;
$this->clsItemDB();
$this->Parser = new clsTemplateList($TemplateRoot);
$this->AdminParser = new clsAdminTemplateList();
}
/* function ParseObject($element)
{
$extra_attribs = ExtraAttributes($element->attributes);
if(strtolower($element->name)==$this->TagPrefix)
{
$field = strtolower($element->attributes["_field"]);
$tag = $this->TagPrefix."_".$field;
$ret = $this->parsetag($tag);
}
return $ret;
}
*/
function ParseTimeStamp($d,$attribs=array())
{
if($attribs["_tz"])
{
$d = GetLocalTime($d,$objSession->Get("tz"));
}
$part = strtolower($attribs["_part"]);
if(strlen($part))
{
$ret = ExtractDatePart($part,$d);
}
else
{
if($d<=0)
{
$ret = "";
}
else
$ret = LangDate($d);
}
return $ret;
}
function ParseObject($element)
{
global $objConfig, $objCatList, $var_list_update, $var_list, $n_var_list_update, $m_var_list_update;
$extra_attribs = ExtraAttributes($element->attributes);
$ret = "";
if ($this->TagPrefix == "email" && strtolower($element->name) == "touser") {
$this->TagPrefix = "touser";
}
if(strtolower($element->name)==$this->TagPrefix)
{
$field = strtolower($element->attributes["_field"]);
switch($field)
{
case "id":
$ret = $this->Get($this->id_field);
break;
case "resourceid":
if(!$this->NoResourceId)
$ret = $this->Get("ResourceId");
break;
case "category":
$c = $objCatList->GetItem($this->Get("CategoryId"));
if(is_object($c))
{
$ret = $c->parsetag($element->attributes["_cattag"]);
}
break;
case "priority":
if($this->Get("Priority")!=0)
{
$ret = (int)$this->Get("Priority");
}
else
$ret = "";
break;
case "link":
if(method_exists($this,"ItemURL"))
{
$ret = $this->ItemURL($element->attributes["_template"],FALSE,"");
}
break;
case "cat_link":
if(method_exists($this,"ItemURL"))
{
$ret = $this->ItemURL($element->attributes["_template"],TRUE,"");
}
break;
case "fullpath":
$ret = $this->Get("CachedNavbar");
if(!strlen($ret))
{
if(is_numeric($this->Get("CategoryId")))
{
$c = $objCatList->GetItem($this->Get("CategoryId"));
if(is_object($c))
$ret = $c->Get("CachedNavbar");
}
else
{
if(method_exists($this,"GetPrimaryCategory"))
{
$cat = $this->GetPrimaryCategory();
$c = $objCatList->GetItem($cat);
if(is_object($c))
$ret = $c->Get("CachedNavbar");
}
}
}
// $ret = $this->HighlightText($ret);
break;
case "relevance":
$style = $element->attributes["_displaymode"];
if(!strlen($style))
$style = "numerical";
switch ($style)
{
case "numerical":
$ret = (100 * LangNumber($this->Get("Relevance"),1))."%";
break;
case "bar":
$OffColor = $element->attributes["_offbackgroundcolor"];
$OnColor = $element->attributes["_onbackgroundcolor"];
$percentsOff = (int)(100 - (100 * $this->Get("Relevance"))); if ($percentsOff)
{
$percentsOn = 100 - $percentsOff;
$ret = "<td width=\"$percentsOn%\" bgcolor=\"$OnColor\"><img src=\"img/s.gif\"></td><td width=\"$percentsOff%\" bgcolor=\"$OffColor\"><img src=\"img/s.gif\"></td>";
}
else
$ret = "<td width=\"100%\" bgcolor=\"$OnColor\"><img src=\"img/s.gif\"></td>";
break;
case "graphical":
$OnImage = $element->attributes["_onimage"];
if (!strlen($OnImage))
break;
// Get image extension
$image_data = explode(".", $OnImage);
$image_ext = $image_data[count($image_data)-1];
unset($image_data[count($image_data)-1]);
$rel = (10 * LangNumber($this->Get("Relevance"),1));
$OnImage1 = join(".", $image_data);
if ($rel)
$img_src = $OnImage1."_".$rel.".".$image_ext;
else
$img_src = $OnImage;
$ret = "<img src=\"$img_src\" border=\"0\" alt=\"".(10*$rel)."\">";
break;
}
break;
case "rating":
$style = $element->attributes["_displaymode"];
if(!strlen($style))
$style = "numerical";
switch($style)
{
case "numerical":
$ret = LangNumber($this->Get("CachedRating"),1);
break;
case "text":
$ret = RatingText($this->Get("CachedRating"));
break;
case "graphical":
$OnImage = $element->attributes["_onimage"];
$OffImage = $element->attributes["_offimage"];
$images = RatingTickImage($this->Get("CachedRating"),$OnImage,$OffImage);
for($i=1;$i<=count($images);$i++)
{
$url = $images[$i];
if(strlen($url))
{
$ret .= "<IMG src=\"$url\" $extra_attribs >";
$ret .= $element->attributes["_separator"];
}
}
break;
}
break;
case "reviews":
$today = FALSE;
if(method_exists($this,"ReviewCount"))
{
if($element->attributes["_today"])
$today = TRUE;
$ret = $this->ReviewCount($today);
}
else
$ret = "";
break;
case "votes":
$ret = (int)$this->Get("CachedVotesQty");
break;
case "favorite":
if(method_exists($this,"IsFavorite"))
{
if($this->IsFavorite())
{
$ret = $element->attributes["_label"];
if(!strlen($ret))
$ret = "lu_favorite";
$ret = language($ret);
}
else
$ret = "";
}
break;
case "new":
if(method_exists($this,"IsNewItem"))
{
if($this->IsNewItem())
{
$ret = $element->attributes["_label"];
if(!strlen($ret))
$ret = "lu_new";
$ret = language($ret);
}
else
$ret = "";
}
break;
case "pop":
if(method_exists($this,"IsPopItem"))
{
if($this->IsPopItem())
{
$ret = $element->attributes["_label"];
if(!strlen($ret))
$ret = "lu_pop";
$ret = language($ret);
}
else
$ret = "";
}
break;
case "hot":
if(method_exists($this,"IsHotItem"))
{
if($this->IsHotItem())
{
$ret = $element->attributes["_label"];
if(!strlen($ret))
$ret = "lu_hot";
$ret = language($ret);
}
else
$ret = "";
}
break;
case "pick":
if($this->Get("EditorsPick")==1)
{
$ret = $element->attributes["_label"];
if(!strlen($ret))
$ret = "lu_pick";
$ret = language($ret);
}
else
$ret = "";
break;
case "admin_icon":
if(method_exists($this,"StatusIcon"))
{
if($element->attributes["fulltag"])
{
$ret = "<IMG $extra_attribs SRC=\"".$this->StatusIcon()."\">";
}
else
$ret = $this->StatusIcon();
}
break;
case "custom":
if(method_exists($this,"GetCustomFieldValue"))
{
$field = $element->attributes["_customfield"];
$default = $element->attributes["_default"];
if (strlen($field))
$ret = $this->GetCustomFieldValue($field,$default);
}
break;
case "image":
$default = $element->attributes["_primary"];
$name = $element->attributes["_name"];
if(strlen($name))
{
$img = $this->GetImageByName($name);
}
else
{
if($default)
$img = $this->GetDefaultImage();
}
if(is_object($img))
{
if(strlen($element->attributes["_imagetemplate"]))
{
$ret = $img->ParseTemplate($element->attributes["_imagetemplate"]);
break;
}
else
{
if($element->attributes["_thumbnail"])
{
$url = $img->parsetag("thumb_url");
}
else
{
if(!$element->attributes["_nothumbnail"])
{
$url = $img->parsetag("image_url");
}
else
{
$url = $img->FullURL(TRUE,"");
}
}
}
}
else
{
$url = $element->attributes["_defaulturl"];
}
if($element->attributes["_imagetag"])
{
if(strlen($url))
{
$ret = "<IMG src=\"$url\" $extra_attribs >";
}
else
$ret = "";
}
else
$ret = $url;
break;
default:
$ret = "Undefined:".$element->name;
break;
}
}
else if ($this->TagPrefix == 'email'){
$ret = "Undefined:".$element->name;
}
return $ret;
}
function ParseString($name)
{
$el = new clsHtmlTag();
$el->Clear();
$el->prefix = "inp";
$el->name = $name;
$numargs = func_num_args();
$arg_list = func_get_args();
for ($i = 1; $i < $numargs; $i++)
{
$attr = $arg_list[$i];
$parts = explode("=",$attr,2);
$name = $parts[0];
$val = $parts[1];
$el->attributes[$name] = $val;
}
return $this->ParseObject($el);
}
/* pass attributes as strings
ie: ParseStringEcho('tagname','_field="something" _data="somethingelse"');
*/
function ParseStringEcho($name)
{
$el = new clsHtmlTag();
$el->Clear();
$el->prefix = "inp";
$el->name = $name;
$numargs = func_num_args();
$arg_list = func_get_args();
for ($i = 1; $i < $numargs; $i++)
{
$attr = $arg_list[$i];
$parts = explode("=",$attr,2);
$name = $parts[0];
$val = $parts[1];
$el->attributes[$name] = $val;
}
echo $this->ParseObject($el);
}
function ParseElement($raw, $inner_html ="")
{
$tag = new clsHtmlTag($raw);
$tag->inner_html = $inner_html;
if($tag->parsed)
{
if($tag->name=="include" || $tag->name=="perm_include" || $tag->name=="lang_include")
{
$output = $this->Parser->IncludeTemplate($tag);
}
else
{
$output = $this->ParseObject($tag);
//echo $output."<br>";
if(substr($output,0,9)=="Undefined")
{
$output = $tag->Execute();
// if(substr($output,0,8)="{Unknown")
// $output = $raw;
} return $output;
}
}
else
return "";
}
function AdminParseTemplate($file)
{
$html = "";
$t = $this->AdminParser->GetTemplate($file);
if(is_object($t))
{
array_push($this->AdminParser->stack,$file);
$html = $t->source;
$next_tag = strpos($html,"<inp:");
while($next_tag)
{
$end_tag = strpos($html,"/>",$next_tag);
$tagtext = substr($html,$next_tag,($end_tag - $next_tag)+2);
$pre = substr($html,0,$next_tag);
$post = substr($html,$end_tag+2);
$inner = $this->ParseElement($tagtext);
$html = $pre.$inner.$post;
$next_tag = strpos($html,"<inp:");
}
array_pop($this->AdminParser->stack);
}
return $html;
}
function ParseTemplateText($text)
{
$html = $text;
$search = "<inp:".$this->TagPrefix;
$next_tag = strpos($html,"<inp:");
//$next_tag = strpos($html,$search);
while($next_tag)
{
$closer = strpos(strtolower($html),">",$next_tag);
$end_tag = strpos($html,"/>",$next_tag);
if($end_tag < $closer || $closer == 0)
{
$tagtext = substr($html,$next_tag,($end_tag - $next_tag)+2);
$pre = substr($html,0,$next_tag);
$post = substr($html,$end_tag+2);
$inner = $this->ParseElement($tagtext);
$html = $pre.$inner.$post;
}
else
{
$OldTagStyle = "</inp>";
## Try to find end of TagName
$TagNameEnd = strpos($html, " ", $next_tag);
## Support Old version
// $closer = strpos(strtolower($html),"</inp>",$next_tag);
if ($TagNameEnd)
{
$Tag = strtolower(substr($html, $next_tag, $TagNameEnd-$next_tag));
$TagName = explode(":", $Tag);
if (strlen($TagName[1]))
$CloserTag = "</inp:".$TagName[1].">";
}
else
{
$CloserTag = $OldTagStyle;
}
$closer = strpos(strtolower($html), $CloserTag, $next_tag);
## Try to find old tag closer
if (!$closer && ($CloserTag != $OldTagStyle))
{
$CloserTag = $OldTagStyle;
$closer = strpos(strtolower($html), $CloserTag, $next_tag);
}
$end_tag = strpos($html,">",$next_tag);
$tagtext = substr($html,$next_tag,($end_tag - $next_tag)+1);
$pre = substr($html,0,$next_tag);
$inner = substr($html,$end_tag+1,$closer-($end_tag+1));
$post = substr($html,$end_tag+1+strlen($inner) + strlen($CloserTag));
//echo "PRE:". htmlentities($pre,ENT_NOQUOTES);
//echo "INNER:". htmlentities($inner,ENT_NOQUOTES);
//echo "POST:". htmlentities($post,ENT_NOQUOTES);
$parsed = $this->ParseElement($tagtext);
if(strlen($parsed))
{
$html = $pre.$this->ParseTemplateText($inner).$post;
}
else
$html = $pre.$post;
}
$next_tag = strpos($html,$search);
}
return $html;
}
function ParseTemplate($tname)
{
global $objTemplate, $LogLevel,$ptime,$timestart;
LogEntry("Parsing $tname\n");
$LogLevel++;
$html = "";
$t = $objTemplate->GetTemplate($tname);
//$t = $this->Parser->GetTemplate($tname);
if(is_object($t))
{
array_push($this->Parser->stack,$tname);
$html = $t->source;
$html = $this->ParseTemplateText($html);
array_pop($this->Parser->stack);
}
$LogLevel--;
LogEntry("Finished Parsing $tname\n");
$ptime = round(getmicrotime() - $timestart,6);
$xf = 867530; //Download ID
if($xf != 0)
{
$x2 = substr($ptime,-6);
$ptime .= $xf ^ $x2; //(1/1000);
}
return $html;
}
function SendUserEventMail($EventName,$ToUserId,$LangId=NULL,$RecptName=NULL)
{
global $objMessageList,$FrontEnd;
$Event =& $objMessageList->GetEmailEventObject($EventName,0,$LangId);
if(is_object($Event))
{
if($Event->Get("Enabled")=="1" || ($Event->Get("Enabled")==2 && $FrontEnd))
{
$Event->Item = $this;
if(is_numeric($ToUserId))
{
return $Event->SendToUser($ToUserId);
}
else
return $Event->SendToAddress($ToUserId,$RecptName);
}
}
}
function SendAdminEventMail($EventName,$LangId=NULL)
{
global $objMessageList,$FrontEnd;
//echo "Firing Admin Event $EventName <br>\n";
$Event =& $objMessageList->GetEmailEventObject($EventName,1,$LangId);
if(is_object($Event))
{
if($Event->Get("Enabled")=="1" || ($Event->Get("Enabled")==2 && $FrontEnd))
{
$Event->Item = $this;
//echo "Admin Event $EventName Enabled <br>\n";
return $Event->SendAdmin($ToUserId);
}
}
}
function parse_template($t)
{
}
}
class clsItemCollection
{
var $Items;
var $CurrentItem;
var $adodbConnection;
var $classname;
var $SourceTable;
var $LiveTable;
var $QueryItemCount;
var $AdminSearchFields = array();
var $SortField;
var $debuglevel;
var $id_field = null; // id field for list item
var $BasePermission;
var $Dummy = null;
function SetTable($action, $table_name = null) // new by Alex
{
// $action = {'live', 'restore','edit'}
switch($action)
{
case 'live':
$this->LiveTable = $table_name;
$this->SourceTable = $this->LiveTable;
break;
case 'restore':
$this->SourceTable = $this->LiveTable;
break;
case 'edit':
global $objSession;
$this->SourceTable = $objSession->GetEditTable($this->LiveTable);
break;
}
}
function &GetDummy() // new by Alex
{
if( !isset($this->Dummy) )
$this->Dummy =& new $this->classname();
$this->Dummy->tablename = $this->SourceTable;
return $this->Dummy;
}
function clsItemCollection()
{
$this->adodbConnection = GetADODBConnection();
$this->Clear();
$this->BasePermission="";
}
function GetIDField() // new by Alex
{
// returns id field for list item
if( !isset($this->id_field) )
{
$dummy =& $this->GetDummy();
$this->id_field = $dummy->IdField();
}
return $this->id_field;
}
function &GetNewItemClass()
{
return new $this->classname();
}
function Clear()
{
unset($this->Items);
$this->Items = array();
$this->CurrentItem=0;
}
function &SetCurrentItem($id)
{
$this->CurrentItem=$id;
return $this->GetItem($id);
}
function &GetCurrentItem()
{
if($this->CurrentItem>0)
{
return $this->GetItem($this->CurrentItem);
}
else
return FALSE;
}
function NumItems()
{
if(is_array($this->Items))
{
// echo "TEST COUNT: ".count($this->Items)."<BR>";
return count($this->Items);
}
else
return 0;
}
function ItemLike($index, $string)
{
// check if any of the item field
// even partially matches $string
$found = false;
$string = strtolower($string);
$item_data = $this->Items[$index]->GetData();
foreach($item_data as $field => $value)
if( in_array($field, $this->AdminSearchFields) )
if( strpos(strtolower($value), $string) !== false)
{
$found = true;
break;
}
return $found;
}
function DeleteItem($index) // by Alex
{
// deletes item with specific index from list
$i = $index; $item_count = $this->NumItems();
while($i < $item_count - 1)
{
$this->Items[$i] = $this->Items[$i + 1];
$i++;
}
unset($this->Items[$i]);
}
function ShowItems()
{
$i = 0; $item_count = $this->NumItems();
while($i < $item_count)
{
echo "Item No <b>$i</b>:<br>";
$this->Items[$i]->PrintVars();
$i++;
}
}
function SwapItems($Index,$Index2)
{
$temp = $this->Items[$Index]->GetData();
$this->Items[$Index]->SetData($this->Items[$Index2]->GetData());
$this->Items[$Index2]->SetData($temp);
}
function CopyResource($OldId,$NewId)
{
$this->Clear();
$sql = "SELECT * FROM ".$this->SourceTable." WHERE ResourceId=$OldId";
$this->Query_Item($sql);
// echo $sql."<br>\n";
if($this->NumItems()>0)
{
foreach($this->Items as $item)
{
$item->UnsetIdField();
$item->Set("ResourceId",$NewId);
$item->Create();
}
}
}
function ItemsOnClipboard()
{
global $objSession;
$clip = $objSession->GetPersistantVariable("ClipBoard");
$count = 0;
$table = $this->SourceTable;
$prefix = GetTablePrefix();
if(substr($table,0,strlen($prefix))==$prefix)
$table = substr($table,strlen($prefix));
if(strlen($clip))
{
$clipboard = ParseClipboard($clip);
if($clipboard["table"] == $table)
{
$count = count(explode(",",$clipboard["ids"]));
}
else
$count = 0;
}
else
$count = 0;
return $count;
}
function CopyToClipboard($command,$idfield, $idlist)
{
global $objSession,$objCatList;
if(is_array($idlist))
{
$list = implode(",",$idlist);
}
else
$list = $idlist;
$clip = $command."-".$objCatList->CurrentCategoryID().".".$this->SourceTable.".$idfield=".$list;
$objSession->SetVariable("ClipBoard",$clip);
}
function SortItems($asc=TRUE)
{
$done = FALSE;
$field = $this->SortField;
$ItemCount = $this->NumItems();
while(!$done)
{
$done=TRUE;
for($i=1;$i<$this->NumItems();$i++)
{
$doswap = FALSE;
if($asc)
{
$val1 = $this->Items[$i-1]->Get($field);
$val2 = $this->Items[$i]->Get($field);
$doswap = ($val1 > $val2);
}
else
{
$val1 = $this->Items[$i-1]->Get($field);
$val2 = $this->Items[$i]->Get($field);
$doswap = ($val1 < $val2);
}
if($doswap)
{
$this->SwapItems($i-1,$i);
$done = FALSE;
}
}
}
}
function &GetItem($ID,$LoadFromDB=TRUE)
{
$found=FALSE;
if(is_array($this->Items) && count($this->Items) )
{
for($x=0;$x<count($this->Items);$x++)
{
$i =& $this->GetItemRefByIndex($x);
if($i->UniqueID()==$ID)
{
$found=TRUE;
break;
}
}
}
if(!$found)
{
if($LoadFromDB)
{
$n = NULL;
$n = new $this->classname();
$n->tablename = $this->SourceTable;
$n->LoadFromDatabase($ID);
$index = array_push($this->Items, $n);
$i =& $this->Items[count($this->Items)-1];
}
else
$i = FALSE;
}
return $i;
}
function GetItemByIndex($index)
{
return $this->Items[$index];
}
function &GetItemRefByIndex($index)
{
return $this->Items[$index];
}
function &GetItemByField($Field,$Value,$LoadFromDB=TRUE)
{
$found=FALSE;
if(is_array($this->Items))
{
foreach($this->Items as $i)
{
if($i->Get($Field)==$Value)
{
$found = TRUE;
break;
}
}
}
if(!$found && $LoadFromDB==TRUE)
{
$sql = "SELECT * FROM ".$this->SourceTable." WHERE $Field = '$Value'";
//echo $sql;
$res = $this->adodbConnection->Execute($sql);
if($res && !$res->EOF)
{
$i = $this->AddItemFromArray($res->fields);
$i->tablename = $this->SourceTable;
$i->Clean();
}
else
$i = FALSE;
}
return $i;
}
function GetPage($Page, $ItemsPerPage)
{
$result = array_slice($this->Items, ($Page * $ItemsPerPage) - $ItemsPerPage, $ItemsPerPage);
return $result;
}
function GetNumPages($ItemsPerPage)
{
if ($_GET['reset'] == 1) {
$this->Page = 1;
}
return GetPageCount($ItemsPerPage,$this->QueryItemCount);
}
function &AddItemFromArray($data, $clean=FALSE)
{
$class = new $this->classname;
$class->SetFromArray($data);
$class->tablename = $this->SourceTable;
if($clean==TRUE)
$class->Clean();
//array_push($this->Items,$class);
$this->Items[] =& $class;
return $class;
}
function Query_Item($sql, $offset=-1,$rows=-1)
{
global $Errors;
-
- $dummy =& $this->GetDummy();
+
+ $dummy =& $this->GetDummy();
if( !$dummy->TableExists() )
{
if($this->debuglevel) echo "ERROR: table <b>".$dummy->tablename."</b> missing.<br>";
$this->Clear();
return false;
}
if($rows>-1 && $offset>-1)
{
//echo "<b>Executing SelectLimit</b> $sql <b>Offset:</b> $offset,$rows<br>\n";
$result = $this->adodbConnection->SelectLimit($sql, $rows,$offset);
}
else {
$result = $this->adodbConnection->Execute($sql);
}
if ($result === false)
{
$Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Query_Item");
echo '<br><br>'.$sql.'<br><br>';
echo "Error: ".$this->adodbConnection->ErrorMsg()."<br>";
return false;
}
$this->Clear();
if($this->debuglevel > 0)
{
echo "This SQL: $sql<br>";
if( ($this->debuglevel > 1) && ($result->RecordCount() > 0) )
{
echo '<pre>'.print_r($result->GetRows(), true).'</pre>';
$result->MoveFirst();
}
}
LogEntry("SQL Loop Start\n");
$count = 0;
while ($result && !$result->EOF)
{
$count++;
$data = $result->fields;
$this->AddItemFromArray($data,TRUE);
if( defined('ADODB_EXTENSION') && constant('ADODB_EXTENSION') > 0 )
adodb_movenext($result);
else
$result->MoveNext();
}
LogEntry("SQL Loop End ($count iterations)\n");
return $this->Items;
}
function GetOrderClause($FieldVar,$OrderVar,$DefaultField,$DefaultVar,$Priority=TRUE,$UseTableName=FALSE)
{
global $objConfig, $objSession;
if($UseTableName)
{
$TableName = $this->SourceTable.".";
}
else
$TableName = "";
$PriorityClause = $TableName."EditorsPick DESC, ".$TableName."Priority DESC";
if(strlen(trim($FieldVar))>0)
{
if(is_object($objSession))
{
if(strlen($objSession->GetPersistantVariable($FieldVar))>0)
{
$OrderBy = trim($TableName.$objSession->GetPersistantVariable($FieldVar) . " ".
$objSession->GetPersistantVariable($OrderVar));
$FieldUsed = $objSession->GetPersistantVariable($FieldVar);
}
}
$OrderBy = trim($OrderBy);
if (strlen(trim($OrderBy))==0)
{
if(!$UseTableName)
{
$OrderBy = trim($DefaultField." ".$DefaultVar);
}
else
{
if(strlen(trim($DefaultField))>0)
{
$OrderBy = $this->SourceTable.".".$DefaultField.".".$DefaultVar;
}
$FieldUsed=$DefaultField;
}
}
}
if(($FieldUsed != "Priority" || strlen($OrderBy)==0) && $Priority==TRUE)
{
if(strlen($OrderBy)==0)
{
$OrderBy = $PriorityClause;
}
else
$OrderBy = $PriorityClause.", ".$OrderBy;
}
return $OrderBy;
}
function GetResourceIDList()
{
$ret = array();
foreach($this->Items as $i)
array_push($ret,$i->Get("ResourceId"));
return $ret;
}
function GetFieldList($field)
{
$ret = array();
foreach($this->Items as $i)
array_push($ret,$i->Get($field));
return $ret;
}
function SetCommonField($FieldName,$FieldValue)
{
for($i=0;$i<$this->NumItems();$i++)
{
$this->Items[$i]->Set($FieldName,$fieldValue);
$this->Items[$i]->Update();
}
}
function ClearCategoryItems($CatId,$CatTable = "CategoryItems")
{
$CatTable = AddTablePrefix($CatTable);
$sql = "SELECT * FROM ".$this->SourceTable." INNER JOIN $CatTable ".
" ON (".$this->SourceTable.".ResourceId=$CatTable.ItemResourceId) WHERE CategoryId=$CatId";
$this->Clear();
$this->Query_Item($sql);
if($this->NumItems()>0)
{
foreach($this->Items as $i)
{
$i->DeleteCategoryItems($CatId,$CatTable);
}
}
}
function CopyToEditTable($idfield = null, $idlist = 0)
{
global $objSession;
if($idfield == null) $idfield = $this->GetIDField();
$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);
}
function CreateEmptyEditTable($idfield = null)
{
global $objSession;
if($idfield == null) $idfield = $this->GetIDField();
$edit_table = $objSession->GetEditTable($this->SourceTable);
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
$query = "SELECT * FROM ".$this->SourceTable." WHERE $idfield = -1";
$insert = "CREATE TABLE ".$edit_table." ".$query;
if($objSession->HasSystemPermission("DEBUG.LIST"))
echo htmlentities($insert,ENT_NOQUOTES)."<br>\n";
$this->adodbConnection->Execute($insert);
}
function CopyFromEditTable($idfield = null)
{
global $objSession;
$dropRelTableFlag = false;
if($idfield == null) $idfield = $this->GetIDField();
$edit_table = $objSession->GetEditTable($this->SourceTable);
$sql = "SELECT * FROM $edit_table";
$rs = $this->adodbConnection->Execute($sql);
// echo $sql."<BR>";
while($rs && !$rs->EOF)
{
$data = $rs->fields;
$c = new $this->classname;
$c->SetFromArray($data);
$c->idfield = $idfield;
$c->Dirty();
if($c->Get($idfield)<1)
{
$old_id = $c->Get($idfield);
$c->UnsetIdField();
if(!is_numeric($c->Get("OrgId")) || $c->Get("OrgId")==0)
{
$c->Clean(array("OrgId"));
}
else
{
if($c->Get("Status") != -2)
{
$org = new $this->classname();
$org->LoadFromDatabase($c->Get("OrgId"));
$org->DeleteCustomData();
$org->Delete(TRUE);
$c->Set("OrgId",0);
}
}
$c->Create();
}
if(is_numeric($c->Get("ResourceId")))
{
if( isset($c->Related) && is_object($c->Related) )
{
$r = $c->Related;
$r->CopyFromEditTable($c->Get("ResourceId"));
$dropRelTableFlag = true;
}
unset($r);
if( isset($c->Reviews) && is_object($c->Reviews) )
{
$r = $c->Reviews;
$r->CopyFromEditTable($c->Get("ResourceId"));
}
}
if(!is_numeric($c->Get("OrgId")) || $c->Get("OrgId")==0)
{
$c->Clean(array("OrgId"));
}
else
{
if($c->Get("Status") != -2)
{
$org = new $this->classname();
$org->LoadFromDatabase($c->Get("OrgId"));
$org->DeleteCustomData();
$org->Delete(TRUE);
$c->Set("OrgId",0);
}
}
if(method_exists($c,"CategoryMemberList"))
{
$cats = $c->CategoryMemberList($objSession->GetEditTable("CategoryItems"));
//echo "CATS: [$cats]<br>";
$c->Update();
UpdateCategoryItems($c,$cats);
}
else
$c->Update();
unset($c);
unset($r);
$rs->MoveNext();
}
if ($dropRelTableFlag)
{
$objRelGlobal = new clsRelationshipList();
$objRelGlobal->PurgeEditTable();
}
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS ".$objSession->GetEditTable("CategoryItems"));
}
function GetNextTempID()
{
// get next temporary id (lower then zero) from temp table
$db =& $this->adodbConnection;
$sql = 'SELECT MIN(%s) AS MinValue FROM %s';
return $db->GetOne( sprintf($sql, $this->GetIDField(), $this->SourceTable) ) - 1;
}
function PurgeEditTable($idfield = null)
{
global $objSession;
if($idfield == null) $idfield = $this->GetIDField();
$edit_table = $objSession->GetEditTable($this->SourceTable);
/* $rs = $this->adodbConnection->Execute("SELECT * FROM $edit_table");
while($rs && !$rs->EOF)
{
$data = $rs->fields;
$c = new $this->classname;
$c->SetFromArray($data);
$c->id_field = $idfield;
$c->tablename = $edit_table;
$c->Delete();
$rs->MoveNext();
}*/
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS ".$objSession->Get("CategoryItems"));
}
function CopyCatListToEditTable($idfield, $idlist)
{
global $objSession;
$edit_table = $objSession->GetEditTable("CategoryItems");
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
if(is_array($idlist))
{
$list = implode(",",$idlist);
}
else
$list = $idlist;
$query = "SELECT * FROM ".GetTablePrefix()."CategoryItems 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);
}
function CreateEmptyCatListTable($idfield)
{
global $objSession;
$edit_table = $objSession->GetEditTable("CategoryItems");
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
$query = "SELECT * FROM ".GetTablePrefix()."CategoryItems WHERE $idfield = -1";
$insert = "CREATE TABLE ".$edit_table." ".$query;
if($objSession->HasSystemPermission("DEBUG.LIST"))
echo htmlentities($insert,ENT_NOQUOTES)."<br>\n";
$this->adodbConnection->Execute($insert);
}
function PurgeCatListEditTable()
{
global $objSession;
$edit_table = $objSession->GetEditTable("CategoryItems");
$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
}
function AdminSearchWhereClause($SearchList)
{
$sql = "";
if( !is_array($SearchList) ) $SearchList = explode(",",$SearchList);
if( !count($SearchList) || !count($this->AdminSearchFields) ) return '';
for($f = 0; $f < count($SearchList); $f++)
{
$value = $SearchList[$f];
if( strlen($value) )
{
$inner_sql = "";
for($i = 0; $i < count($this->AdminSearchFields); $i++)
{
$field = $this->AdminSearchFields[$i];
if( strlen( trim($value) ) )
{
if( strlen($inner_sql) ) $inner_sql .= " OR ";
$inner_sql .= $field." LIKE '%".$value."%'";
}
}
if( strlen($inner_sql) )
{
$sql .= '('.$inner_sql.') ';
if($f < count($SearchList) - 1) $sql .= " AND ";
}
}
}
return $sql;
}
function BackupData($OutFileName,$Start,$Limit)
{
$fp=fopen($Outfile,"a");
if($fp)
{
if($Start==1)
{
$sql = "DELETE FROM ".$this->SourceTable;
fputs($fp,$sql);
}
$this->Query_Item("SELECT * FROM ".$this->SourceTable." LIMIT $Start, $Limit");
foreach($this->Items as $i)
{
$sql = $i->CreateSQL();
fputs($fp,$sql);
}
fclose($fp);
$this->Clear();
}
}
function RestoreData($InFileName,$Start,$Limit)
{
$res = -1;
$fp=fopen($InFileName,"r");
if($fp)
{
fseek($fp,$Start);
$Line = 0;
while($Line < $Limit)
{
$sql = fgets($fp,16384);
$this->adodbConnection->Execute($sql);
$Line++;
}
$res = ftell($fp);
fclose($fp);
}
return $res;
}
function Delete_Item($Id)
{
global $objCatList;
$l =& $this->GetItem($Id);
$l->BasePermission=$this->BasePermission;
$l->DeleteCategoryItems($objCatList->CurrentCategoryID());
}
function Move_Item($Id, $OldCat, $ParentTo)
{
global $objCatList;
$l = $this->GetItem($Id);
$l->BasePermission=$this->BasePermission;
$l->AddtoCategory($ParentTo);
$l->RemoveFromCategory($OldCat);
}
function Copy_Item($Id, $ParentTo)
{
$l = $this->GetItem($Id);
$l->BasePermission=$this->BasePermission;
$l->AddtoCategory($ParentTo);
}
}/* clsItemCollection */
class clsItemList extends clsItemCollection
{
var $Page;
var $PerPageVar;
var $DefaultPerPage; // use this perpage value in case if no found in config
var $EnablePaging;
var $MaxListCount = 0;
var $PageEnvar;
var $PageEnvarIndex;
var $ListType;
function clsItemList()
{
$this->clsItemCollection();
$this->EnablePaging = TRUE;
$this->PageEnvarIndex = "p";
}
function GetPageLimitSQL()
{
global $objConfig;
$limit = NULL;
if($this->EnablePaging)
{
if($this->Page<1)
$this->Page=1;
//echo "Limited to ".$objConfig->Get($this->PerPageVar)." items per page<br>\n";
if(is_numeric($objConfig->Get($this->PerPageVar)))
{
$Start = ($this->Page-1)*$objConfig->Get($this->PerPageVar);
$limit = "LIMIT ".$Start.",".$objConfig->Get($this->PerPageVar);
}
else
$limit = NULL;
}
else
{
if($this->MaxListCount)
{
$limit = "LIMIT 0, $MaxListCount";
}
}
return $limit;
}
function GetPageOffset()
{
$Start = 0;
if($this->EnablePaging)
{
if($this->Page < 1) $this->Page = 1;
$PerPage = $this->GetPerPage();
$Start = ($this->Page - 1) * $PerPage;
}
else
{
if((int)$this->MaxListCount == 0) $Start = -1;
}
return $Start;
}
function GetPageRowCount()
{
if($this->EnablePaging)
{
if($this->Page < 1) $this->Page = 1;
return $this->GetPerPage();
}
else
return (int)$this->MaxListCount;
}
function Query_Item($sql,$limit = null, $fix_method = 'set_first')
{
// query itemlist (module items) using $sql specified
// apply direct limit clause ($limit) or calculate it if not specified
// fix invalid page in case if needed by method specified in $fix_method
if(strlen($limit))
{
$sql .= " ".$limit;
return parent::Query_Item($sql);
}
else
{
//echo "page fix pre (class: ".get_class($this).")<br>";
$this->QueryItemCount = QueryCount($sql); // must get total item count before fixing
$this->FixInvalidPage($fix_method);
return parent::Query_Item($sql,$this->GetPageOffset(),$this->GetPageRowCount());
}
}
function Query_List($whereClause,$orderByClause=NULL,$JoinCats=TRUE)
{
global $objSession, $Errors;
if($JoinCats)
{
$cattable = GetTablePrefix()."CategoryItems";
$t = $this->SourceTable;
$sql = "SELECT *,CategoryId FROM $t INNER JOIN $cattable ON $cattable.ItemResourceId=$t.ResourceId";
}
else
$sql = "SELECT * FROM ". $this->SourceTable;
if(trim($whereClause)!="")
{
if(isset($whereClause))
$sql = sprintf('%s WHERE %s',$sql,$whereClause);
}
if(strlen($orderByClause)>0)
{
if(substr($orderByClause,0,8)=="ORDER BY")
{
$sql .= " ".$orderByClause;
}
else
{
$sql .= " ORDER BY $orderByClause";
}
}
if($objSession->HasSystemPermission("DEBUG.LIST"))
echo $sql."<br>\n";
return $this->Query_Item($sql);
}
function GetPerPage()
{
// return category perpage
global $objConfig;
$PerPage = $objConfig->Get( $this->PerPageVar );
if( !is_numeric($PerPage) ) $PerPage = $this->DefaultPerPage ? $this->DefaultPerPage : 10;
return $PerPage;
}
function FixInvalidPage($fix_method = 'set_first')
{
// in case if current page > total page count,
// then set current page to last possible "set_last"
// or first possible "set_first"
$PerPage = $this->GetPerPage();
$NumPages = ceil( $this->GetNumPages($PerPage) );
- /*
+/*
echo "=====<br>";
echo "Class <b>".get_class($this)."</b>: Page ".$this->Page." of $NumPages<br>";
echo "PerPage: $PerPage<br>";
echo "Items Queries: ".$this->QueryItemCount."<br>";
echo "=====<br>";
- */
+*/
if($this->Page > $NumPages)
{
switch($fix_method)
{
case 'set_first': $this->Page = 1; break;
case 'set_last': $this->Page = $NumPages; break;
}
$this->SaveNewPage();
}
}
function SaveNewPage()
{
// redefine in each list, should save to env array new page value
}
function GetPageLinkList($dest_template=NULL,$page = "",$PagesToList=10, $HideEmpty=TRUE)
{
global $objConfig, $var_list_update, $var_list;
$v= $this->PageEnvar;
global ${$v};
if(!strlen($page))
$page = GetIndexURL();
$PerPage = $objConfig->Get($this->PerPageVar);
if($PerPage<1)
$PerPage=20;
$NumPages = ceil($this->GetNumPages($PerPage));
if($NumPages==1 && $HideEmpty)
return "";
if(strlen($dest_template))
{
$var_list_update["t"] = $dest_template;
}
else
$var_list_update["t"] = $var_list["t"];
$o = "";
if($this->Page==0 || !is_numeric($this->Page))
$this->Page=1;
if($this->Page>$NumPages)
$this->Page=$NumPages;
$StartPage = (int)$this->Page - ($PagesToList/2);
if($StartPage<1)
$StartPage=1;
$EndPage = $StartPage+($PagesToList-1);
if($EndPage>$NumPages)
{
$EndPage = $NumPages;
$StartPage = $EndPage-($PagesToList-1);
if($StartPage<1)
$StartPage=1;
}
$o = "";
if($StartPage>1)
{
${$v}[$this->PageEnvarIndex] = $this->Page-$PagesToList;
$prev_url = $page."?env=".BuildEnv();
$o .= "<A HREF=\"$prev_url\">&lt;&lt;</A>";
}
for($p=$StartPage;$p<=$EndPage;$p++)
{
if($p!=$this->Page)
{
${$v}[$this->PageEnvarIndex]=$p;
$href = $page."?env=".BuildEnv();
$o .= " <A HREF=\"$href\">$p</A> ";
}
else
{
$o .= " <SPAN class=\"current-page\">$p</SPAN>";
}
}
if($EndPage<$NumPages && $EndPage>0)
{
${$v}[$this->PageEnvarIndex]=$this->Page+$PagesToList;
$next_url = $page."?env=".BuildEnv();
$o .= "<A HREF=\"$next_url\"> &gt;&gt;</A>";
}
unset(${$v}[$this->PageEnvarIndex],$var_list_update["t"] );
return $o;
}
function GetAdminPageLinkList($url)
{
global $objConfig, $var_list_update, $var_list;
$v = $this->PageEnvar;
global ${$v};
if(strlen($this->PerPageVar)==0)
$this->PerPageVar = "Perpage_Links";
$PerPage = $objConfig->Get($this->PerPageVar);
if($PerPage<1)
$PerPage=20;
$NumPages = ceil($this->GetNumPages($PerPage));
//echo $this->CurrentPage." of ".$NumPages." Pages";
$o = "";
if($this->Page>$NumPages)
$this->Page=$NumPages;
$StartPage = $this->Page - 5;
if($StartPage<1)
$StartPage=1;
$EndPage = $StartPage+9;
if($EndPage>$NumPages)
{
$EndPage = $NumPages;
$StartPage = $EndPage-9;
if($StartPage<1)
$StartPage=1;
}
$o = "";
if($StartPage>1)
{
${$v}[$this->PageEnvarIndex]= $this->Page-10;
$prev_url = $url."?env=".BuildEnv();
$o .= "<A HREF=\"$prev_url\">&lt;&lt;</A>";
}
for($p=$StartPage;$p<=$EndPage;$p++)
{
if($p!=$this->Page)
{
${$v}[$this->PageEnvarIndex]=$p;
$href = $url."?env=".BuildEnv();
$o .= " <A HREF=\"$href\" class=\"NAV_URL\">$p</A> ";
}
else
{
$o .= "<SPAN class=\"CURRENT_PAGE\">$p</SPAN>";
}
}
if($EndPage<$NumPages)
{
${$v}[$this->PageEnvarIndex]=$this->Page+10;
$next_url = $url."?env=".BuildEnv();
$o .= "<A HREF=\"$next_url\"> &gt;&gt;</A>";
}
unset( ${$v}[$this->PageEnvarIndex]);
return $o;
}
}
function ParseClipboard($clip)
{
$ret = array();
$parts = explode(".",$clip,3);
$command = $parts[0];
$table = $parts[1];
$prefix = GetTablePrefix();
if(substr($table,0,strlen($prefix))==$prefix)
$table = substr($table,strlen($prefix));
$subparts = explode("=",$parts[2],2);
$idfield = $subparts[0];
$idlist = $subparts[1];
$cmd = explode("-",$command);
$ret["command"] = $cmd[0];
$ret["source"] = $cmd[1];
$ret["table"] = $table;
$ret["idfield"] = $idfield;
$ret["ids"] = $idlist;
//print_pre($ret);
return $ret;
}
function UpdateCategoryItems($item,$NewCatList)
{
global $objCatList;
$CurrentList = explode(",",$item->CategoryMemberList());
$del_list = array();
$ins_list = array();
if(!is_array($NewCatList))
{
if(strlen(trim($NewCatList))==0)
$NewCatList = $objCatList->CurrentCategoryID();
$NewCatList = explode(",",$NewCatList);
}
//print_r($NewCatList);
for($i=0;$i<count($NewCatList);$i++)
{
$cat = $NewCatList[$i];
if(!in_array($cat,$CurrentList))
$ins_list[] = $cat;
}
for($i=0;$i<count($CurrentList);$i++)
{
$cat = $CurrentList[$i];
if(!in_array($cat,$NewCatList))
$del_list = $cat;
}
for($i=0;$i<count($ins_list);$i++)
{
$cat = $ins_list[$i];
$item->AddToCategory($cat);
}
for($i=0;$i<count($del_list);$i++)
{
$cat = $del_list[$i];
$item->RemoveFromCategory($cat);
}
}
class clsCatItemList extends clsItemList
{
var $PerPageVarLong;
var $PerPageShortVar;
var $Query_SortField;
var $Query_SortOrder;
var $ItemType;
function clsCatItemList()
{
$this->ClsItemList();
$this->Query_SortField = array();
$this->Query_SortOrder = array();
}
function QueryOrderByClause($EditorsPick=FALSE,$Priority=FALSE,$UseTableName=FALSE)
{
global $objSession;
if($UseTableName)
{
$TableName = $this->SourceTable.".";
}
else {
$TableName = "";
}
$Orders = array();
if($EditorsPick)
{
$Orders[] = $TableName."EditorsPick DESC";
}
if($Priority)
{
$Orders[] = $TableName."Priority DESC";
}
if(count($this->Query_SortField)>0)
{
for($x=0; $x<count($this->Query_SortField); $x++)
{
$FieldVar = $this->Query_SortField[$x];
$OrderVar = $this->Query_SortOrder[$x];
if(is_object($objSession))
{
$FieldVarData = $objSession->GetPersistantVariable($FieldVar);
if(strlen($FieldVarData)>0)
{
$Orders[] = trim($TableName.$objSession->GetPersistantVariable($FieldVar) . " ".
$objSession->GetPersistantVariable($OrderVar));
}
}
}
}
if(count($Orders)>0)
{
$OrderBy = "ORDER BY ".implode(", ",$Orders);
}
else
$OrderBy="";
return $OrderBy;
}
function AddSortField($SortField, $SortOrder)
{
if(strlen($SortField))
{
$this->Query_SortField[] = $SortField;
$this->Query_SortOrder[] = $SortOrder;
}
}
function ClearSortFields()
{
$this->Query_SortField = array();
$this->Query_SortOrder = array();
}
/* skeletons in this closet */
function GetNewValue($CatId=NULL)
{
return 0;
}
function GetPopValue($CategoryId=NULL)
{
return 0;
}
/* end of skeletons */
function GetCountSQL($PermName,$CatId=NULL, $GroupId=NULL, $AdditonalWhere="")
{
global $objSession, $objPermissions, $objCatList;
$ltable = $this->SourceTable;
$acl = $objSession->GetACLClause();
$cattable = GetTablePrefix()."CategoryItems";
$CategoryTable = GetTablePrefix()."Category";
$ptable = GetTablePrefix()."PermCache";
$VIEW = $objPermissions->GetPermId($PermName);
$sql = "SELECT count(*) as CacheVal FROM $ltable ";
$sql .="INNER JOIN $cattable ON ($cattable.ItemResourceId=$ltable.ResourceId) ";
$sql .="INNER JOIN $CategoryTable ON ($CategoryTable.CategoryId=$cattable.CategoryId) ";
$sql .="INNER JOIN $ptable ON ($cattable.CategoryId=$ptable.CategoryId) ";
$sql .="WHERE ($acl AND PermId=$VIEW AND $cattable.PrimaryCat=1 AND $CategoryTable.Status=1) ";
if(strlen($AdditonalWhere)>0)
{
$sql .= "AND (".$AdditonalWhere.")";
}
return $sql;
}
function SqlCategoryList($attribs = array())
{
$CatTable = GetTablePrefix()."CategoryItems";
$t = $this->SourceTable;
$sql = "SELECT *,$CatTable.CategoryId FROM $t INNER JOIN $CatTable ON $CatTable.ItemResourceId=$t.ResourceId ";
$sql .="WHERE ($CatTable.CategoryId=".$catid." AND $t.Status=1)";
return $sql;
}
function CategoryCount($attribs=array())
{
global $objCatList, $objCountCache;
$cat = $attribs["_catid"];
if(!is_numeric($cat))
{
$cat = $objCatList->CurrentCategoryID();
}
if((int)$cat>0)
$c = $objCatList->GetCategory($cat);
$CatTable = GetTablePrefix()."CategoryItems";
$t = $this->SourceTable;
$sql = "SELECT count(*) as MyCount FROM $t INNER JOIN $CatTable ON ($CatTable.ItemResourceId=$t.ResourceId) ";
if($attribs["_subcats"])
{
$ctable = $objCatList->SourceTable;
$sql .= "INNER JOIN $ctable ON ($CatTable.CategoryId=$ctable.CategoryId) ";
$sql .= "WHERE (ParentPath LIKE '".$c->Get("ParentPath")."%' ";
if(!$attribs["_countcurrent"])
{
$sql .=" AND $ctable.CategoryId != $cat) ";
}
else
$sql .=") ";
}
else
$sql .="WHERE ($CatTable.CategoryId=".$cat." AND $t.Status=1) ";
if($attribs["_today"])
{
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
$sql .= "AND ($t.CreatedOn>=$today) ";
}
//echo $sql."<br><br>\n";
$rs = $this->adodbConnection->Execute($sql);
$ret = "";
if($rs && !$rs->EOF)
$ret = (int)$rs->fields["MyCount"];
return $ret;
}
function SqlGlobalCount($attribs=array())
{
global $objSession;
$p = $this->BasePermission.".VIEW";
$t = $this->SourceTable;
if($attribs["_today"])
{
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
$where = "($t.CreatedOn>=$today)";
}
if($attribs["_grouponly"])
{
$GroupList = $objSession->Get("GroupList");
}
else
$GroupList = NULL;
$sql = $this->GetCountSQL($p,NULL,$GroupList,$where);
return $sql;
}
function DoGlobalCount($attribs)
{
global $objCountCache;
$cc = $objCountCache->GetValue($this->CacheListType("_"),$this->ItemType,$this->CacheListExtraId("_"),(int)$attribs["_today"], 3600);
if(!is_numeric($cc))
{
$sql = $this->SqlGlobalCount($attribs);
$ret = QueryCount($sql);
$objCountCache->SetValue($this->CacheListType("_"),$this->ItemType,$this->CacheListExtraId("_"),(int)$attribs["_today"],$ret);
}
else
$ret = $cc;
return $ret;
}
function CacheListExtraId($ListType)
{
global $objSession;
if(!strlen($ListType))
$ListType="_";
switch($ListType)
{
case "_":
$ExtraId = $objSession->Get("GroupList");
break;
case "category":
$ExtraId = $objSession->Get("GroupList");
break;
case "myitems":
$ExtraId = $objSession->Get("PortalUserId");
break;
case "hot":
$ExtraId = $objSession->Get("GroupList");
break;
case "pop":
$ExtraId = $objSession->Get("GroupList");
break;
case "pick":
$ExtraId = $objSession->Get("GroupList");
break;
case "favorites":
$ExtraId = $objSession->Get("PortalUserId");
break;
case "new":
$ExtraId = $objSession->Get("GroupList");
break;
}
return $ExtraId;
}
function CacheListType($ListType)
{
if(!strlen($ListType))
$ListType="_";
switch($ListType)
{
case "_":
$ListTypeId = 0;
break;
case "category":
$ListTypeId = 1;
break;
case "myitems":
$ListTypeId = 2;
break;
case "hot":
$ListTypeId = 3;
break;
case "pop":
$ListTypeId = 4;
break;
case "pick":
$ListTypeId = 5;
break;
case "favorites":
$ListTypeId = 6;
break;
case "new":
$ListTypeId = 8;
break;
}
return $ListTypeId;
}
function PerformItemCount($attribs=array())
{
global $objCountCache, $objSession;
$ret = "";
$ListType = $attribs["_listtype"];
if(!strlen($ListType))
$ListType="_";
$ListTypeId = $this->CacheListType($ListType);
//echo "ListType: $ListType ($ListTypeId)<br>\n";
$ExtraId = $this->CacheListExtraId($ListType);
switch($ListType)
{
case "_":
$ret = $this->DoGlobalCount($attribs);
break;
case "category":
$ret = $this->CategoryCount($attribs);
break;
case "myitems":
$sql = $this->SqlMyItems($attribs);
break;
case "hot":
$sql = $this->SqlHotItems($attribs);
break;
case "pop":
$sql = $this->SqlPopItems($attribs);
break;
case "pick":
$sql = $this->SqlPickItems($attribs);
break;
case "favorites":
$sql = $this->SqlFavorites($attribs);
break;
case "search":
$sql = $this->SqlSearchItems($attribs);
break;
case "new":
$sql = $this->SqlNewItems($attribs);
break;
}
//echo "SQL: $sql<br>";
if(strlen($sql))
{
if(is_numeric($ListTypeId))
{
$cc = $objCountCache->GetValue($ListTypeId,$this->ItemType,$ExtraId,(int)$attribs["_today"], 3600);
if(!is_numeric($cc) || $attribs['_nocache'] == 1)
{
$ret = QueryCount($sql);
$objCountCache->SetValue($ListTypeId,$this->ItemType,$ExtraId,(int)$attribs["_today"],$ret);
}
else
$ret = $cc;
}
else
$ret = QueryCount($sql);
}
return $ret;
}
function GetJoinedSQL($PermName, $CatId=NULL, $AdditionalWhere="")
{
global $objSession, $objPermissions;
$ltable = $this->SourceTable;
$acl = $objSession->GetACLClause();
$cattable = GetTablePrefix()."CategoryItems";
$CategoryTable = GetTablePrefix()."Category";
$ptable = GetTablePrefix()."PermCache";
$VIEW = $objPermissions->GetPermId($PermName);
$sql ="INNER JOIN $cattable ON ($cattable.ItemResourceId=$ltable.ResourceId) ";
$sql .="INNER JOIN $CategoryTable ON ($CategoryTable.CategoryId=$cattable.CategoryId) ";
$sql .= "INNER JOIN $ptable ON ($cattable.CategoryId=$ptable.CategoryId) ";
$sql .="WHERE ($acl AND PermId=$VIEW AND PrimaryCat=1 AND $CategoryTable.Status=1) ";
if(is_numeric($CatId))
{
$sql .= " AND ($CategoryTable.CategoryId=$CatId) ";
}
if(strlen($AdditionalWhere)>0)
{
$sql .= "AND (".$AdditionalWhere.")";
}
return $sql;
}
function CountFavorites($attribs)
{
if($attribs["_today"])
{
global $objSession, $objConfig, $objPermissions;
$acl = $objSession->GetACLClause();
$favtable = GetTablePrefix()."Favorites";
$ltable = $this->SourceTable;
$cattable = GetTablePrefix()."CategoryItems";
$CategoryTable = GetTablePrefix()."Category";
$ptable = GetTablePrefix()."PermCache";
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
$where = "PortalUserId=".$objSession->Get("PortalUserId")." AND $ltable.Status=1";
$where .= " AND $favtable.Modified >= $today AND ItemTypeId=".$this->ItemType;
$p = $this->BasePermission.".VIEW";
$sql = "SELECT $ltable.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $favtable INNER JOIN $ltable ON ($favtable.ResourceId=$ltable.ResourceId) ";
$sql .= $this->GetJoinedSQL($p,NULL,$where);
$ret = QueryCount($sql);
}
else
{
if (!$this->ListType == "favorites")
{
$this->ListType = "favorites";
$this->LoadFavorites($attribs);
$ret = $this->QueryItemCount;
}
else
$ret = $this->QueryItemCount;
}
return $ret;
}
function CountPickItems($attribs)
{
if (!$this->ListType == "pick")
{
$this->ListType = "pick";
$this->LoadPickItems($attribs);
$ret = $this->QueryItemCount;
}
else
$ret = $this->QueryItemCount;
return $ret;
}
function CountMyItems($attribs)
{
if (!$this->ListType == "myitems")
{
$this->ListType = "myitems";
$this->LoadMyItems($attribs);
$ret = $this->QueryItemCount;
}
else
$ret = $this->QueryItemCount;
return $ret;
}
function CountHotItems($attribs)
{
if (!$this->ListType == "hotitems")
{
$this->ListType = "hotitems";
$this->LoadHotItems($attribs);
$ret = $this->QueryItemCount;
}
else
$ret = $this->QueryItemCount;
return $ret;
}
function CountNewItems($attribs)
{
if (!$this->ListType == "newitems")
{
$this->ListType = "newitems";
$this->LoadNewItems($attribs);
$ret = $this->QueryItemCount;
}
else
$ret = $this->QueryItemCount;
return $ret;
}
function CountPopItems($attribs)
{
if (!$this->ListType == "popitems")
{
$this->ListType = "popitems";
$this->LoadPopItems($attribs);
$ret = $this->QueryItemCount;
}
else
$ret = $this->QueryItemCount;
return $ret;
}
function CountSearchItems($attribs)
{
if (!$this->ListType == "search")
{
$this->ListType = "search";
$this->LoadSearchItems($attribs);
$ret = $this->QueryItemCount;
}
else
$ret = $this->QueryItemCount;
return $ret;
}
function SqlFavorites($attribs)
{
global $objSession, $objConfig, $objPermissions;
$acl = $objSession->GetACLClause();
$favtable = GetTablePrefix()."Favorites";
$ltable = $this->SourceTable;
$cattable = GetTablePrefix()."CategoryItems";
$CategoryTable = GetTablePrefix()."Category";
$ptable = GetTablePrefix()."PermCache";
$where = "PortalUserId=".$objSession->Get("PortalUserId")." AND $ltable.Status=1";
if($attribs["_today"])
{
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
$where .= " AND $favtable.Modified >= $today AND ItemTypeId=".$this->ItemType;
}
$p = $this->BasePermission.".VIEW";
$sql = "SELECT $ltable.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $favtable INNER JOIN $ltable ON ($favtable.ResourceId=$ltable.ResourceId) ";
$sql .= $this->GetJoinedSQL($p,NULL,$where);
$OrderBy = $this->QueryOrderByClause(TRUE,TRUE,TRUE);
$sql .= " ".$OrderBy;
return $sql;
}
function LoadFavorites($attribs)
{
global $objSession, $objCountCache;
$sql = $this->SqlFavorites($attribs);
if($objSession->HasSystemPermission("DEBUG.LIST"))
echo htmlentities($sql,ENT_NOQUOTES)."<br>\n";
if($attribs["_shortlist"])
{
$this->PerPageVar = $this->PerPageShortVar;
}
else
$this->PerPageVar = $this->PerPageVarLong;
$CachedCount = $objCountCache->GetValue($this->CacheListType("favorites"),$this->ItemType,$this->CacheListExtraId("favorites"),(int)$attribs["_today"],3600);
if(!is_numeric($CachedCount))
{
$this->QueryItemCount = QueryCount($sql);
$objCountCache->SetValue($this->CacheListType("favorites"),$this->ItemType,$this->CacheListExtraId("favorites"),(int)$attribs["_today"],$this->QueryItemCount);
}
else
$this->QueryItemCount = (int)$CachedCount;
return $this->Query_Item($sql);
}
function SqlPickItems($attribs)
{
global $objSession, $objCatList;
$catid = (int)$attribs["_catid"];
$scope = (int)$attribs["_scope"];
//$JoinCats = (int)$attribs["_catinfo"] || $scope;
$TableName = $this->SourceTable;
if($scope)
{
if (!$catid)
{
$catid = $objCatList->CurrentCategoryID();
}
$where = "CategoryId =".$catid." AND ".$TableName.".EditorsPick=1 AND ".$TableName.".Status=1";
}
else
{
$where = $TableName.".EditorsPick=1 AND ".$TableName.".Status=1 ";
$catid=NULL;
}
if($attribs["_today"])
{
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
$where .= " AND ($TableName.CreatedOn>=$today)";
}
$CategoryTable = GetTablePrefix()."Category";
$sql = "SELECT $TableName.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $TableName ";
$p = $this->BasePermission.".VIEW";
$sql .= $this->GetJoinedSQL($p,$CatUd,$where);
$OrderBy = $this->QueryOrderByClause(TRUE,TRUE,TRUE);
$sql .= " ".$OrderBy;
return $sql;
}
function LoadPickItems($attribs)
{
global $objSession, $objCountCache;
$sql = $this->SqlPickItems($attribs);
if($objSession->HasSystemPermission("DEBUG.LIST"))
echo htmlentities($sql,ENT_NOQUOTES)."<br>\n";
if($attribs["_shortlist"])
{
$this->PerPageVar = $this->PerPageShortVar;
}
else
$this->PerPageVar = $this->PerPageVarLong;
$CachedCount = $objCountCache->GetValue($this->CacheListType("pick"),$this->ItemType,$this->CacheListExtraId("pick"),(int)$attribs["_today"],3600);
if(!is_numeric($CachedCount))
{
$this->QueryItemCount= QueryCount($sql);
$objCountCache->SetValue($this->CacheListType("pick"),$this->ItemType,$this->CacheListExtraId("pick"),(int)$attribs["_today"],$this->QueryItemCount);
}
else
$this->QueryItemCount=$CachedCount;
return $this->Query_Item($sql);
}
function SqlMyItems($attribs= array())
{
global $objSession;
$TableName = $this->SourceTable;
$where = " ".$TableName.".Status>-1 AND ".$TableName.".CreatedById=".$objSession->Get("PortalUserId");
if($attribs["_today"])
{
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
$where .= " AND ($TableName.CreatedOn>=$today)";
}
$CategoryTable = GetTablePrefix()."Category";
$sql = "SELECT $TableName.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $TableName ";
$p = $this->BasePermission.".VIEW";
$sql .= $this->GetJoinedSQL($p,$CatUd,$where);
$OrderBy = $this->QueryOrderByClause(TRUE,TRUE,TRUE);
$sql .= " ".$OrderBy;
return $sql;
}
function LoadMyItems($attribs=array())
{
global $objSession,$objCountCache;
$sql = $this->SqlMyItems($attribs);
if($objSession->HasSystemPermission("DEBUG.LIST"))
echo htmlentities($sql,ENT_NOQUOTES)."<br>\n";
if($attribs["_shortlist"])
{
$this->PerPageVar = $this->PerPageShortVar;
}
else
$this->PerPageVar = $this->PerPageVarLong;
$CachedCount = $objCountCache->GetValue($this->CacheListType("myitems"),$this->ItemType,$this->CacheListExtraId("myitems"),(int)$attribs["_today"],3600);
if(!is_numeric($CachedCount))
{
$this->QueryItemCount= QueryCount($sql);
$objCountCache->SetValue($this->CacheListType("myitems"),$this->ItemType,$this->CacheListExtraId("myitems"),(int)$attribs["_today"],$this->QueryItemCount);
}
else
$this->QueryItemCount=$CachedCount;
return $this->Query_Item($sql);
}
function SqlNewItems($attribs = array())
{
global $objSession, $objCatList;
$catid = (int)$attribs["_catid"];
$scope = (int)$attribs["_scope"];
//$JoinCats = (int)$attribs["_catinfo"] || $scope;
$TableName = $this->SourceTable;
if($attribs["_today"])
{
$cutoff = mktime(0,0,0,date("m"),date("d"),date("Y"));
}
else
{
if($scope)
{
if (!$catid)
{
$catid = $objCatList->CurrentCategoryID();
}
$cutoff = $this->GetNewValue($catid);
}
else
$cutoff = $this->GetNewValue();
}
if($scope)
{
if (!$catid)
{
$catid = $objCatList->CurrentCategoryID();
}
$where = "CategoryId =".$catid." AND ((".$TableName.".CreatedOn >=".$cutoff." AND ".$TableName.".NewItem != 0) OR ".$TableName.".NewItem=1 ) AND ".$TableName.".Status=1 ";
}
else
{
$where = "((".$TableName.".CreatedOn >=".$this->GetNewValue()." AND ".$TableName.".NewItem != 0) OR ".$TableName.".NewItem=1 ) AND ".$TableName.".Status=1 ";
}
$CategoryTable = GetTablePrefix()."Category";
$sql = "SELECT $TableName.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $TableName ";
$p = $this->BasePermission.".VIEW";
$sql .= $this->GetJoinedSQL($p,$CatUd,$where);
$OrderBy = $this->QueryOrderByClause(TRUE,TRUE,TRUE);
$sql .= " ".$OrderBy;
return $sql;
}
function LoadNewItems($attribs)
{
global $objSession,$objCountCache;
$sql = $this->SqlNewItems($attribs);
if($objSession->HasSystemPermission("DEBUG.LIST"))
echo htmlentities($sql,ENT_NOQUOTES)."<br>\n";
if($attribs["_shortlist"])
{
$this->PerPageVar = $this->PerPageShortVar;
}
else
$this->PerPageVar = $this->PerPageVarLong;
$CachedCount = $objCountCache->GetValue($this->CacheListType("new"),$this->ItemType,$this->CacheListExtraId("new"),(int)$attribs["_today"],3600);
if(!is_numeric($CachedCount))
{
$this->QueryItemCount= QueryCount($sql);
$objCountCache->SetValue($this->CacheListType("new"),$this->ItemType,$this->CacheListExtraId("new"),(int)$attribs["_today"],$this->QueryItemCount);
}
else
$this->QueryItemCount=$CachedCount;
return $this->Query_Item($sql);
}
function SqlPopItems($attribs)
{
global $objSession, $objCatList;
$catid = (int)$attribs["_catid"];
$scope = (int)$attribs["_scope"];
//$JoinCats = (int)$attribs["_catinfo"] || $scope;
$TableName = $this->SourceTable;
if($scope)
{
if (!$catid)
{
$catid = $objCatList->CurrentCategoryID();
}
$where = "CategoryId =".$catid." AND ((".$TableName.".Hits >=".$this->GetLinkPopValue()." AND ".$TableName.".PopItem !=0) OR ".$TableName.".PopItem=1) AND ".$TableName.".Status=1";
}
else
{
$where = "((".$TableName.".CachedRating >=".$this->GetPopValue()." AND ".$TableName.".PopItem !=0 ) OR ".$TableName.".PopItem=1) AND ".$TableName.".Status=1 ";
$where = "((".$TableName.".Hits >=".$this->GetPopValue()." AND ".$TableName.".PopItem !=0) OR ".$TableName.".PopItem=1) AND ".$TableName.".Status=1 ";
}
if($attribs["_today"])
{
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
$where .= " AND ($TableName.CreatedOn>=$today)";
}
$CategoryTable = GetTablePrefix()."Category";
$sql = "SELECT $TableName.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $TableName ";
$p = $this->BasePermission.".VIEW";
$sql .= $this->GetJoinedSQL($p,$catid,$where);
$OrderBy = $this->QueryOrderByClause(TRUE,TRUE,TRUE);
$sql .= " ".$OrderBy;
return $sql;
}
function LoadPopItems($attribs)
{
global $objSession,$objCountCache;
$sql = $this->SqlPopItems($attribs);
if($objSession->HasSystemPermission("DEBUG.LIST"))
echo htmlentities($sql,ENT_NOQUOTES)."<br>\n";
if($attribs["_shortlist"])
{
$this->PerPageVar = $this->PerPageShortVar;
}
else
$this->PerPageVar = $this->PerPageVarLong;
$CachedCount = $objCountCache->GetValue($this->CacheListType("pop"),$this->ItemType,$this->CacheListExtraId("pop"),(int)$attribs["_today"],3600);
if(!is_numeric($CachedCount))
{
$this->QueryItemCount= QueryCount($sql);
$objCountCache->SetValue($this->CacheListType("pop"),$this->ItemType,$this->CacheListExtraId("pop"),(int)$attribs["_today"],$this->QueryItemCount);
}
else
$this->QueryItemCount=$CachedCount;
return $this->Query_Item($sql);
}
function SqlHotItems($attribs)
{
global $objSession, $objCatList;
$catid = (int)$attribs["_catid"];
$scope = (int)$attribs["_scope"];
// $JoinCats = (int)$attribs["_catinfo"] || $scope;
$TableName = $this->SourceTable;
$OrderBy = $TableName.".CachedRating DESC";
if($scope)
{
if (!$catid)
{
$catid = $objCatList->CurrentCategoryID();
}
$where = "CategoryId =".$catid." AND ((".$TableName.".CachedRating >=".$this->GetHotValue()." AND ".$TableName.".PopItem !=0) OR ".$TableName.".PopItem=1) AND ".$TableName.".Status=1";
}
else
{
$where = "((".$TableName.".CachedRating >=".$this->GetPopValue()." AND ".$TableName.".PopItem !=0 ) OR ".$TableName.".PopItem=1) AND ".$TableName.".Status=1 ";
}
if($attribs["_today"])
{
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
$where .= " AND ($TableName.CreatedOn>=$today)";
}
$CategoryTable = GetTablePrefix()."Category";
$sql = "SELECT $TableName.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $TableName ";
$p = $this->BasePermission.".VIEW";
$CatId = !$scope? NULL : $catid;
$sql .= $this->GetJoinedSQL($p,$CatId,$where);
if(strlen($OrderBy))
$sql .= " ORDER BY $OrderBy ";
return $sql;
}
function LoadHotItems($attribs)
{
global $objSession,$objCountCache;
$sql = $this->SqlHotItems($attribs);
if($objSession->HasSystemPermission("DEBUG.LIST"))
echo htmlentities($sql,ENT_NOQUOTES)."<br>\n";
if($attribs["_shortlist"])
{
$this->PerPageVar = $this->PerPageShortVar;
}
else
$this->PerPageVar = $this->PerPageVarLong;
$CachedCount = $objCountCache->GetValue($this->CacheListType("hot"),$this->ItemType,$this->CacheListExtraId("hot"),(int)$attribs["_today"], 0);
if(!is_numeric($CachedCount))
{
$this->QueryItemCount= QueryCount($sql);
$objCountCache->SetValue($this->CacheListType("hot"),$this->ItemType,$this->CacheListExtraId("hot"),(int)$attribs["_today"],$this->QueryItemCount);
}
else
$this->QueryItemCount=$CachedCount;
return $this->Query_Item($sql);
}
function SqlSearchItems($attribs = array())
{
global $objConfig, $objItemTypes, $objSession, $objPermissions, $CountVal;
$acl = $objSession->GetACLClause();
$this->Clear();
//$stable = "ses_".$objSession->GetSessionKey()."_Search";
$stable = $objSession->GetSearchTable();
$ltable = $this->SourceTable;
$catitems = GetTablePrefix()."CategoryItems";
$cattable = GetTablePrefix()."Category";
$ptable = GetTablePrefix()."PermCache";
$p = $this->BasePermission.".VIEW";
$i = new $this->classname();
$sql = "SELECT $cattable.CategoryId,$cattable.CachedNavbar,$ltable.*, Relevance FROM $stable ";
$sql .= "INNER JOIN $ltable ON ($stable.ItemId=$ltable.".$i->id_field.") ";
$where = "ItemType=".$this->ItemType." AND $ltable.Status=1";
$sql .= $this->GetJoinedSQL($p,NULL,$where);
$sql .= " ORDER BY EdPick DESC,Relevance DESC ";
$tmp = $this->QueryOrderByClause(FALSE,TRUE,TRUE);
$tmp = substr($tmp,9);
if(strlen($tmp))
{
$sql .= ", ".$tmp." ";
}
return $sql;
}
function LoadSearchItems($attribs = array())
{
global $CountVal, $objSession;
//echo "Loading <b>".get_class($this)."</b> Search Items<br>";
$sql = $this->SqlSearchItems($attribs);
//echo "$sql<br>";
$this->Query_Item($sql);
$Keywords = GetKeywords($objSession->GetVariable("Search_Keywords"));
//echo "SQL Loaded ItemCount (<b>".get_class($this).'</b>): '.$this->NumItems().'<br>';
for($i = 0; $i < $this->NumItems(); $i++)
{
$this->Items[$i]->Keywords = $Keywords;
}
if(is_numeric($CountVal[$this->ItemType]))
{
$this->QueryItemCount = $CountVal[$this->ItemType];
//echo "CACHE: <pre>"; print_r($CountVal); echo "</pre><BR>";
}
else
{
$this->QueryItemCount = QueryCount($sql);
//echo "<b>SQL</b>: ".$sql."<br><br>";
$CountVal[$this->ItemType] = $this->QueryItemCount;
}
}
function PasteFromClipboard($TargetCat,$NameField="")
{
global $objSession,$objCatList;
$clip = $objSession->GetVariable("ClipBoard");
if(strlen($clip))
{
$ClipBoard = ParseClipboard($clip);
$IsCopy = (substr($ClipBoard["command"],0,4)=="COPY") || ($ClipBoard["source"] == $TargetCat);
$item_ids = explode(",",$ClipBoard["ids"]);
for($i=0;$i<count($item_ids);$i++)
{
$item = $this->GetItem($item_ids[$i]);
if(!$IsCopy) // paste to other category then current
{
$item->MoveToCategory($ClipBoard["source"],$TargetCat);
$clip = str_replace("CUT","COPY",$clip);
$objSession->SetVariable("ClipBoard",$clip);
}
else
{
$item->CopyToNewResource($TargetCat,$NameField); // create item copy, but with new ResourceId
$item->AddToCategory($TargetCat);
UpdateCategoryCount($item->type,$TargetCat);
}
}
}
}
}
?>
Property changes on: trunk/kernel/include/parseditem.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.9
\ No newline at end of property
+1.10
\ No newline at end of property
Index: trunk/kernel/include/portaluser.php
===================================================================
--- trunk/kernel/include/portaluser.php (revision 136)
+++ trunk/kernel/include/portaluser.php (revision 137)
@@ -1,995 +1,998 @@
<?php
RegisterPrefix("clsPortalUser","user","kernel/include/portaluser.php");
class clsPortalUser extends clsItem
{
var $Vars; //contains the PersistantSessionData for the user
var $VarsLoaded;
var $PrimeGroup;
function clsPortalUser($UserId=NULL)
{
$this->clsParsedItem();
$this->tablename=GetTablePrefix()."PortalUser";
$this->type=6;
$this->BasePermission="USER";
$this->id_field = "PortalUserId";
$this->TagPrefix="user";
$this->Vars = array();
$VarsLoaded = FALSE;
$this->debuglevel = 0;
if(isset($UserId))
$this->LoadFromDatabase($UserId);
}
function Delete()
{
global $objGroups, $objFavorites;
$g = $objGroups->GetPersonalGroup($this->Get("Login"));
if(is_object($g))
$g->Delete();
$objFavorites->DeleteUser($this->Get("PortalUserId")); //delete favorites
parent::Delete();
}
function RemoveFromAllGroups()
{
$sql = "DELETE FROM ".GetTablePrefix()."UserGroup WHERE PortaluserId=".$this->Get("PortalUserId");
$this->adodbConnection->Execute($sql);
}
function RemoveFromGroup($GroupId)
{
$sql = "DELETE FROM ".GetTablePrefix()."UserGroup WHERE PortaluserId=".$this->Get("PortalUserId");
$sql .= " AND GroupId=$GroupId";
$this->adodbConnection->Execute($sql);
}
function PrimaryGroup($ReturnField = "GroupId")
{
global $objGroups;
$ret = "";
if(!is_object($this->PrimeGroup))
{
if((int)$this->Get("GroupId")>0)
{
$this->PrimeGroup =& $objGroups->GetItem($this->Get("GroupId"));
}
else
{
$this->PrimeGroup = new clsPortalGroup();
$sql = "SELECT * FROM ".GetTablePrefix()."UserGroup INNER JOIN ".GetTablePrefix()."PortalGroup ON (".GetTablePrefix()."UserGroup.GroupId=".GetTablePrefix()."PortalGroup.GroupId) WHERE PrimaryGroup = 1 AND PortalUserId=".$this->Get("PortalUserId");
//echo $sql;
$rs = $this->adodbConnection->Execute($sql);
if($rs && !$rs->EOF)
$this->PrimeGroup->SetFromArray($rs->fields);
}
}
$ret = $this->PrimeGroup->Get($ReturnField);
return $ret;
}
function SetPrimaryGroup($GroupId)
{
if($this->IsInGroup($GroupId))
{
$sql = "UPDATE ".GetTablePrefix()."UserGroup SET PrimaryGroup=0 WHERE PortalUserId=".$this->Get("PortalUserId");
$this->adodbConnection->Execute($sql);
$sql = "UPDATE ".GetTablePrefix()."UserGroup SET PrimaryGroup=1 WHERE GroupId=$GroupId AND PortalUserId=".$this->Get("PortalUserId");
$this->adodbConnection->Execute($sql);
}
}
function GetGroupList()
{
$ret = array();
$sql = "SELECT GroupId FROM %sUserGroup WHERE PortalUserId = %s ORDER BY PrimaryGroup";
$sql = sprintf($sql, GetTablePrefix(), $this->Get("PortalUserId"));
$ret = $this->adodbConnection->GetCol($sql);
return $ret;
}
function IsInGroup($GroupId)
{
$groups = $this->GetGroupList();
if( $groups === false ) return false;
return in_array($GroupId, $groups) ? true : false;
}
function GetPersonalGroup($CreateIfMissing = FALSE)
{
global $objGroups;
$n = "_".$this->Get("Login");
$g = $objGroups->GetItemByField("Name",$n);
if(!is_object($g) && $CreateIfMissing)
$g = $this->CreatePersonalGroup();
return $g;
}
function CreatePersonalGroup()
{
global $objGroups;
$Description = $this->Get("FirstName")." ".$this->Get("LastName");
$CreatedOn=time();
$n = "_".$this->Get("Login");
$g = $objGroups->Add_Group($n, $Description, $CreatedOn, 1, 0);
$g->Set("Personal",1);
$g->Set("System",0);
$g->Set("Enabled",1);
$g->Update();
if(is_object($g))
$g->AddUser($this->Get("PortalUserId"));
return $g;
}
function Validate()
{
global $Errors;
$dataValid = true;
if(!strlen($this->Get("Login")))
{
$Errors->AddError("error.fieldIsRequired",'Login',"","",get_class($this),"Validate");
$dataValid = false;
}
if(!strlen($this->Get("Email")))
{
$Errors->AddError("error.fieldIsRequired",'Email',"","",get_class($this),"Validate");
$dataValid = false;
}
return $dataValid;
}
function Approve()
{
$this->Set("Status", 1);
$this->Update();
$this->SendUserEventMail("USER.APPROVE",$this->Get("PortalUserId"));
$this->SendAdminEventMail("USER.APPROVE");
}
function Deny($IsBanned = 0)
{
$this->Set( Array('Status','IsBanned'), Array(0,$IsBanned) );
$this->Update();
$this->SendUserEventMail("USER.DENY",$this->Get("PortalUserId"));
$this->SendAdminEventMail("USER.DENY");
}
function HasSystemPermission($PermissionName)
{
global $objGroups;
$GroupList = $this->GetGroupList();
for($i=0;$i<count($GroupList);$i++)
{
$g = $objGroups->GetItem($GroupList[$i]);
$value = $g->HasSystemPermission($PermissionName);
if($value != -1)
break;
}
return $value;
}
function LoadPersistantVars()
{
unset($this->Vars);
$this->Vars = array();
$user_id = $this->HasField('PortalUserId') ? $this->Get('PortalUserId') : 0;
$sql = "SELECT VariableName, VariableValue FROM ".GetTablePrefix()."PersistantSessionData WHERE PortalUserId = 0 OR PortalUserId = ".$user_id." ORDER BY PortalUserId ASC";
$result = $this->adodbConnection->Execute($sql);
while ($result && !$result->EOF)
{
$data = $result->fields;
$this->Vars[$data["VariableName"]] = $data["VariableValue"];
$result->MoveNext();
}
$this->VarsLoaded=TRUE;
}
function SetPersistantVariable($variableName, $variableValue)
{
global $objConfig;
if(!$this->VarsLoaded)
$this->LoadPersistantVars();
$userid = $this->Get("PortalUserId");
$objConfig->Set($variableName,$variableValue,1);
$fields = array_keys($this->Vars);
if(strlen($variableValue)>0)
{
if(in_array($variableName,$fields))
{
$sql = "UPDATE ".GetTablePrefix()."PersistantSessionData SET VariableValue='$variableValue' WHERE VariableName='$variableName' AND PortalUserId=$userid";
}
else
$sql = "INSERT INTO ".GetTablePrefix()."PersistantSessionData (VariableName,VariableValue,PortalUserId) VALUES ('$variableName','$variableValue',$userid)";
}
else
$sql = "DELETE FROM ".GetTablePrefix()."PersistantSessionData WHERE VariableName='$variableName' AND PortalUserId=$userid";
$this->Vars[$variableName] = $variableValue;
// echo "<BR>SQL: $sql<BR>";
$this->adodbConnection->Execute($sql);
}
function GetPersistantVariable($variableName)
{
global $objConfig;
if(!$this->VarsLoaded)
$this->LoadPersistantVars();
$fields = array_keys($this->Vars);
if(in_array($variableName,$fields))
{
$val = $this->Vars[$variableName];
}
else
$val = $objConfig->Get($variableName);
return $val;
}
function GetAllPersistantVars()
{
if(!$this->VarsLoaded)
$this->LoadPersistantVars();
return $this->Vars;
}
function GetIcon()
{
}
function StatusIcon()
{
global $imagesURL;
$url = $imagesURL."/itemicons/icon16_user";
if($this->Get("Status")==0)
{
$url .= "_disabled";
}
else
if($this->Get("Status")==2)
{
$url .= "_pending";
}
$url .= ".gif";
return $url;
}
function IsFriend($UserId)
{
$ftable = GetTablePrefix()."Favorites";
$sql = "SELECT count(*) as FriendCount FROM $ftable WHERE PortalUserId=$UserId AND ResourceId=";
$sql .=$this->Get("ResourceId")." AND ItemTypeId=6";
$rs = $this->adodbConnection->Execute($sql);
if($rs && !$rs->EOF)
return ($rs->fields["FriendCount"]>0);
return FALSE;
}
function GetUserTime($timestamp)
{
if(is_numeric($this->Get("tz")))
{
return GetLocalTime($timestamp,$this->Get("tz"));
}
else
return GetLocalTime($timestamp);
}
function ParseObject($element)
{
global $objConfig, $objUsers, $objCatList,$objSession, $var_list_update, $var_list, $m_var_list_update;
//echo "<PRE>"; print_r($element); echo "</pre>";
if (strtolower($element->name) == 'touser') {
$this->TagPrefix = "touser";
}
$extra_attribs = ExtraAttributes($element->attributes);
if(strtolower($element->name)==$this->TagPrefix)
{
$field = strtolower($element->attributes["_field"]);
if(substr($field,0,3)=="pp_")
{
$perm = $objSession->GetPersistantVariable($field);
if($perm)
{
$field = substr($field,3);
}
else
$field = "";
}
switch($field)
{
/*
@field:user.login
@description:User's login name
*/
case "username":
case "login":
$ret = $this->Get("Login");
break;
case "firstname":
$ret = $this->Get("FirstName");
break;
case "lastname":
$ret = $this->Get("LastName");
break;
case "password":
/*
@field:user.password
@description:User password
*/
$ret = $this->Get("Password");
break;
case "email":
$ret = $this->Get("Email");
break;
case "street":
$ret = $this->Get("Street");
break;
case "city":
$ret = $this->Get("City");
break;
case "state":
$ret = $this->Get("State");
break;
case "zip":
$ret = $this->Get("Zip");
break;
case "phone":
$ret = $this->Get("Phone");
break;
case "country":
$ret = $this->Get("Country");
break;
case "primarygroup":
/*
@field:user.primarygroup
@description:Parses a field from the user's primary group
@attrib:_groupfield::group field name to parse, defaults to group name
*/
$groupfield = $element->attributes["_groupfield"];
if(!strlen($groupfield))
$groupfield="Name";
$ret = $this->PrimaryGroup($groupfield);
break;
case "date":
/*
@field:user.date
@description:Returns the date/time the user was created
@attrib:_tz:bool:Convert the date to the user's local time
@attrib:_part::Returns part of the date. The following options are available: month,day,year,time_24hr,time_12hr
*/
$d = $this->Get("CreatedOn");
if($element->attributes["_tz"])
{
$d = GetLocalTime($d,$objSession->Get("tz"));
}
$part = strtolower($element->attributes["_part"]);
if(strlen($part))
{
$ret = ExtractDatePart($part,$d);
}
else
{
if($d<=0)
{
$ret = "";
}
else
$ret = LangDate($d);
}
break;
case "dob":
/*
@field:user.dob
@description:Returns the date/time of the users date of birth
@attrib:_tz:bool:Convert the date to the user's local time
@attrib:_part::Returns part of the date. The following options are available: month,day,year,time_24hr,time_12hr
*/
$d = $this->Get("dob");
if($element->attributes["_tz"])
{
$d = GetLocalTime($d,$objSession->Get("tz"));
}
$part = strtolower($element->attributes["_part"]);
if(strlen($part))
{
$ret = ExtractDatePart($part,$d);
}
else
{
if($d<=0)
{
$ret = "";
}
else
$ret = LangDate($d);
}
break;
case "modified":
/*
@field:user.modified
@description:Returns the date/time the user was last modified
@attrib:_tz:bool:Convert the date to the user's local time
@attrib:_part::Returns part of the date. The following options are available: month,day,year,time_24hr,time_12hr
*/
$d = $this->Get("Modified");
if($d<=0)
$d = $this->Get("CreatedOn");
if($element->attributes["_tz"])
{
$d = GetLocalTime($d,$objSession->Get("tz"));
}
$part = strtolower($element->attributes["_part"]);
if(strlen($part))
{
$ret = ExtractDatePart($part,$d);
}
else
{
if($d<=0)
{
$ret = "";
}
else
$ret = LangDate($d);
}
break;
case "profile_link":
/*
@field:user.profile_link
@description:Create a link to the user's profile
@attrib:_template:tpl:template the link should point to
*/
$t = $element->attributes["_template"];
if(strlen($t))
{
$var_list_update["t"] = $t;
}
else
$var_list_update["t"] = $var_list["t"];
$ret = GetIndexURL()."?env=" . BuildEnv()."&UserId=".$this->Get("PortalUserId");
break;
case "add_friend_link":
/*
@field:user.add_friend_link
@description:link to add a user to the friends list
@attrib:_template:tpl:Template link shoukd point to
*/
if($element->attributes["_force"] || !$this->IsFriend($objSession->Get("PortalUserId")) &&
$this->Get("PortalUserId") != $objSession->Get("PortalUserId"))
{
$t = $element->attributes["_template"];
if(strlen($t))
{
$var_list_update["t"] = $t;
}
else
$var_list_update["t"] = $var_list["t"];
$action = "m_add_friend";
$ret = GetIndexURL()."?env=" . BuildEnv()."&Action=".$action."&UserId=".$this->Get("PortalUserId");
}
else
$ret = "";
break;
case "del_friend_link":
/*
@field:user.del_friend_link
@description:link to remove a user from the friends list
@attrib:_template:tpl:Template link shoukd point to
*/
if($element->attributes["_force"] || $this->IsFriend($objSession->Get("PortalUserId")) &&
$this->Get("PortalUserId") != $objSession->Get("PortalUserId"))
{
$t = $element->attributes["_template"];
if(strlen($t))
{
$var_list_update["t"] = $t;
}
else
$var_list_update["t"] = $var_list["t"];
$action = "m_del_friend";
$ret = GetIndexURL()."?env=" . BuildEnv()."&Action=".$action."&UserId=".$this->Get("PortalUserId");
}
else
$ret = "";
break;
case "icon":
$ret = $this->GetIcon();
break;
case "image":
/*
@field:user.image
@description:Return an image associated with the user
@attrib:_default:bool:If true, will return the default image if the requested image does not exist
@attrib:_name::Return the image with this name
@attrib:_thumbnail:bool:If true, return the thumbnail version of the image
@attrib:_imagetag:bool:If true, returns a complete image tag. exta html attributes are passed to the image tag
*/
$default = $element->attributes["_primary"];
$name = $element->attributes["_name"];
if(strlen($name))
{
$img = $this->GetImageByName($name);
// echo "<PRE>";print_r($img); echo "</PRE>";
}
else
{
if($default)
$img = $this->GetDefaultImage();
}
if($img)
{
if($element->attributes["_thumbnail"])
{
$url = $img->parsetag("thumb_url");
}
else
$url = $img->parsetag("image_url");
}
else
{
$url = $element->attributes["_defaulturl"];
}
if($element->attributes["_imagetag"])
{
if(strlen($url))
{
$ret = "<IMG src=\"$url\" $extra_attribs >";
}
else
$ret = "";
}
else
$ret = $url;
break;
case "custom":
/*
@field:cat.custom
@description:Returns a custom field
@attrib:_customfield::field name to return
@attrib:_default::default value
*/
$field = $element->attributes["_customfield"];
$default = $element->attributes["
"];
$ret = $this->GetPersistantVariable($field);
if(!strlen($ret))
$ret = $this->GetCustomFieldValue($field,$default);
break;
}
}
else
{
$ret = $this->parsetag($element->name);
}
return $ret;
}
function parsetag($tag)
{
global $m_var_list_update, $var_list_update, $var_list, $objConfig;
if(is_object($tag))
{
$tagname = $tag->name;
}
else
$tagname = $tag;
switch($tagname)
{
case "user_id":
return $this->Get("ResourceId");
break;
case "user_login":
return $this->Get("Login");
break;
case "user_group":
return $this->Get("PrimaryGroupName");
break;
case "user_firstname":
return $this->Get("FirstName");
break;
case "user_lastname":
return $this->Get("LastName");
break;
case "user_email":
return $this->Get("Email");
break;
case "user_date":
return LangDate($this->Get("CreatedOn"));
break;
case "user_dob":
return LangDate($this->Get("dob"));
break;
case "user_password":
return $this->Get("Password");
break;
case "user_phone":
return $this->Get("Phone");
break;
case "user_street":
return $this->Get("Street");
break;
case "user_city":
return $this->Get("City");
break;
case "user_state":
return $this->Get("State");
break;
case "user_zip":
return $this->Get("Zip");
break;
case "user_country":
return $this->Get("Country");
break;
case "user_resourceid":
return $this->Get("ResourceId");
break;
case "user_icon":
return $this->GetIcon();
break;
case "user_profile_link":
$var_list_update["t"] = "user_profile";
$m_var_list_update["action"] = $this->Get("UserId");
$ret = GetIndexURL()."?env=" . BuildEnv();
unset($m_var_list_update["action"], $var_list_update["t"]);
return $ret;
break;
case "user_messages":
return $this->NewMessages();
break;
case "user_messages_link":
$var_list_update["t"] = "inbulletin/bb_private_msg_list";
return GetIndexURL()."?env=" . BuildEnv();
unset($var_list_update);
break;
default:
return "Undefined:$tagname";
break;
}
}
} /* class clsPortalUser*/
class clsUserManager extends clsItemList //clsItemCollection
{
/*this class wraps common user-related functions */
// var $Page;
function clsUserManager()
{
$this->clsItemCollection(); // clsItemList() // need to use this, but double limit clause being created (normal+default 0,100)
$this->classname = "clsPortalUser";
$this->SourceTable = GetTablePrefix()."PortalUser";
- $this->AdminSearchFields = array("Login","FirstName","LastName","Email","Street","City","State","Zip","Country","Phone");
+ $this->Page = $_GET['lpn'];
+ $this->EnablePaging = true;
+ $this->PerPageVar = "Perpage_User";
+ $this->AdminSearchFields = array("Login","FirstName","LastName","Email","Street","City", "State","Zip","Country","Phone");
}
function GetPageLinkList($dest_template=NULL,$link_template=NULL,$page = "")
{
global $objConfig, $m_var_list_update, $var_list_update, $var_list;
if(!strlen($page))
$page = GetIndexURL();
$NumPages = $this->GetNumPages($objConfig->Get("Perpage_Topics"));
if(strlen($dest_template)>0)
{
$var_list_update["t"]=$dest_template;
}
else
{
$var_list_update["t"] = $var_list["t"];
}
$o = "";
if($this->Page>1)
{
$m_var_list_update["p"]=$this->Page-1;
$prev_url = $page."?env=".BuildEnv();
}
if($this->Page<$NumPages)
{
$m_var_list_update["p"]=$this->Page+1;
$next_url = $page."?env=".BuildEnv();
}
for($p=1;$p<=$NumPages;$p++)
{
$t = template($link_template);
if($p!=$this->Page)
{
$m_var_list_update["p"]=$p;
$href = $page."?env=".BuildEnv();
$t = str_replace("<%page_link%>", $href, $t);
$t = str_replace("<%page_number%>",$p,$t);
$t = str_replace("<%prev_url%>",$prev_url,$t);
$t = str_replace("<%next_url%>",$next_url,$t);
$o .= $t;
}
else
{
$o .= "<SPAN class=\"CURRENT_PAGE\">$p</SPAN>";
}
}
return $o;
}
function GetUser($ID)
{
$u = $this->GetItem($ID);
return $u;
}
function GetUserName($Id)
{
$rs = $this->adodbConnection->Execute("SELECT Login from ".$this->SourceTable." where PortalUserId=$Id");
return $rs->fields["Login"];
}
function GetUserId($Login)
{
$rs = $this->adodbConnection->Execute("SELECT PortalUserId from ".$this->SourceTable." where Login LIKE '$Login'");
return $rs->fields["PortalUserId"];
}
function GetTotalUsers()
{
return $this->UserCount("1");
}
function GetLatestUser()
{
global $Errors;
$sql = "SELECT max(CreatedOn) as LastDate FROM ".$this->SourceTable;
$result = $this->adodbConnection->Execute($sql);
if ($result === false || !is_object($result))
{
$Errors->AddError("error.DatabaseError",NULL,$adodbConnection->ErrorMsg(),"",get_class($this),"GetLatestUser");
return false;
}
$sql = "SELECT PortalUserId FROM ".$this->SourceTable." WHERE CreatedOn >= ".$result->fields["LastDate"];
$result = $this->adodbConnection->Execute($sql);
if (!rs || $rs->EOF)
{
$Errors->AddError("error.DatabaseError",NULL,$adodbConnection->ErrorMsg(),"",get_class($this),"GetLatestUser");
return false;
}
$u = $this->GetUser($result->fields["PortalUserId"]);
return $u;
}
function &Add_User($Login, $Password, $Email, $CreatedOn, $FirstName="", $LastName="", $Status=2,
$Phone="", $Street="", $City="", $State="", $Zip="", $Country="", $dob=0, $ip="", $CheckBanned=FALSE)
{
$u = new clsPortalUser(NULL);
$u->tablename = $this->SourceTable;
//echo "Creating User..<br>\n";
$u->Set(array("Login", "Password", "FirstName", "LastName", "Email", "Status",
"Phone","Street", "City", "State", "Zip", "Country", "CreatedOn","dob"),
array($Login, $Password, $FirstName, $LastName, $Email, $Status,
$Phone, $Street, $City, $State, $Zip, $Country, $CreatedOn, $dob));
if($CheckBanned)
{
$BrokenRule = $u->CheckBanned();
}
if(!$BrokenRule)
{
$u->Create();
return $u;
}
return $BrokenRule;
/*md5($Password)*/
}
function &Edit_User($UserId, $Login, $Password, $Email, $CreatedOn, $FirstName="", $LastName="",
$Status=2, $Phone="", $Street="", $City="", $State="", $Zip="", $Country="", $dob=0)
{
//echo "<font color=\"red\">Editing User: [$UserId]</font><br>";
$u =& $this->GetItem($UserId);
if(!$CreatedOn)
$CreatedOn = $u->Get("CreatedOn");
// $u->debuglevel=1;
if (is_object($u))
{
$IsBanned = $u->Get('IsBanned');
if($Status == 1) $IsBanned = 0;
$u->Set(array("Login", "FirstName", "LastName", "Email", "Status",
"Phone", "Street", "City", "State", "Zip", "Country", "CreatedOn","dob","IsBanned"),
array($Login, $FirstName, $LastName, $Email, $Status,
$Phone, $Street, $City, $State, $Zip, $Country, $CreatedOn,$dob,$IsBanned));
if(strlen($Password))
$u->Set("Password",$Password);
$u->Update();
}
return $u;
}
function Delete_User($UserId)
{
$u = $this->GetItemByField("ResourceId",$UserId);
if(is_object($u))
{
$u->RemoveFromAllGroups();
$u->Delete();
}
}
function LoadUsers($where = "",$orderBy = "")
{
global $objConfig;
$this->Clear();
if($this->Page<1)
$this->Page=1;
if(is_numeric($objConfig->Get("Perpage_Users")))
{
$Start = ($this->Page-1)*$objConfig->Get("Perpage_Users");
$limit = "LIMIT ".$Start.",".$objConfig->Get("Perpage_Users");
}
else
$limit = NULL;
$where = trim($where);
$orderBy = trim($orderBy);
if(!strlen($where))
$where = "1";
$this->QueryItemCount=TableCount($this->SourceTable,$where,0);
if($this->QueryItemCount>0)
{
if ($orderBy!="")
{
$this->Query_PortalUser($where,$orderBy,$limit);
}
else
{
$this->Query_PortalUser($where,"Login DESC",$limit);
}
}
}
function Query_PortalUser($whereClause,$orderByClause="", $limitClause="")
{
global $m_var_list,$Errors, $objSession;
$resultSet = array();
$utable = $this->SourceTable;
$gtable = GetTablePrefix()."UserGroup";
$sql = "SELECT * FROM $utable LEFT JOIN $gtable ON ($utable.PortalUserId=$gtable.PortalUserId)";
if(isset($whereClause))
$sql = sprintf('%s WHERE %s',$sql,$whereClause);
if(isset($orderByClause))
if(strlen(trim($orderByClause))>0)
$sql = sprintf('%s ORDER BY %s',$sql,$orderByClause);
if(isset($limitClause))
$sql = sprintf('%s %s',$sql,$limitClause);
return $this->Query_Item($sql);
}
function Query_GroupPortalUser($whereClause,$orderByClause)
{
global $m_var_list,$objSession,$Errors;
$resultSet = array();
$table = $this->SourceTable;
$sql = "SELECT * FROM $table LEFT JOIN ".GetTablePrefix()."UserGroup USING (PortalUserId) ";
if(isset($whereClause))
$sql = sprintf('%s WHERE %s',$sql,$whereClause);
if(isset($orderByClause))
$sql = sprintf('%s ORDER BY %s',$sql,$orderByClause);
return $this->query_item($sql);
}
function UserCount($whereClause)
{
$count = TableCount($this->SourceTable,$whereClause,0);
return $count;
}
function CountActive()
{
return $this->UserCount("Status=1");
}
function CountPending()
{
return $this->UserCount("Status=2");
}
function CountDisabled()
{
return $this->UserCount("Status=0");
}
function CopyFromEditTable($idfield)
{
global $objSession;
$edit_table = $objSession->GetEditTable($this->SourceTable);
$sql = "SELECT * FROM $edit_table";
$rs = $this->adodbConnection->Execute($sql);
// echo $sql."<BR>";
while($rs && !$rs->EOF)
{
$data = $rs->fields;
$c = new $this->classname;
$c->SetFromArray($data);
$c->idfield = $idfield;
$c->Dirty();
if($c->Get($idfield)<1)
{
$old_id = $c->Get($idfield);
$c->UnsetIdField();
$c->Create();
$sql = "UPDATE ".GetTablePrefix()."UserGroup SET PortalUserId=".$c->Get("PortalUserId");
$sql .=" WHERE PortalUserId=0";
$this->adodbConnection->Execute($sql);
}
else
$c->Update();
unset($c);
$rs->MoveNext();
}
@$this->adodbConnection->Execute("DROP TABLE $edit_table");
}
function PurgeEditTable()
{
parent::PurgeEditTable();
$sql = "DELETE FROM ".GetTablePrefix()."UserGroup WHERE PortalUserId=0";
$this->adodbConnection->Execute($sql);
}
} /*clsUserManager*/
?>
Property changes on: trunk/kernel/include/portaluser.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.3
\ No newline at end of property
+1.4
\ No newline at end of property
Index: trunk/admin/users/user_list.php
===================================================================
--- trunk/admin/users/user_list.php (revision 136)
+++ trunk/admin/users/user_list.php (revision 137)
@@ -1,363 +1,366 @@
<?php
##############################################################
##In-portal ##
##############################################################
## In-portal ##
## Intechnic Corporation ##
## All Rights Reserved, 1998-2002 ##
## ##
## No portion of this code may be copied, reproduced or ##
## otherwise redistributed without proper written ##
## consent of Intechnic Corporation. Violation will ##
## result in revocation of the license and support ##
## privileges along maximum prosecution allowed by law. ##
##############################################################
if(!strlen($pathtoroot))
{
$path=dirname(realpath($_SERVER['SCRIPT_FILENAME']));
if(strlen($path))
{
/* determine the OS type for path parsing */
$pos = strpos($path,":");
if ($pos === false)
{
$gOS_TYPE="unix";
$pathchar = "/";
}
else
{
$gOS_TYPE="win";
$pathchar="\\";
}
$p = $path.$pathchar;
/*Start looking for the root flag file */
while(!strlen($pathtoroot) && strlen($p))
{
$sub = substr($p,strlen($pathchar)*-1);
if($sub==$pathchar)
{
$filename = $p."root.flg";
}
else
$filename = $p.$pathchar."root.flg";
if(file_exists($filename))
{
$pathtoroot = $p;
}
else
{
$parent = realpath($p.$pathchar."..".$pathchar);
if($parent!=$p)
{
$p = $parent;
}
else
$p = "";
}
}
if(!strlen($pathtoroot))
$pathtoroot = ".".$pathchar;
}
else
{
$pathtoroot = ".".$pathchar;
}
}
$sub = substr($pathtoroot,strlen($pathchar)*-1);
if($sub!=$pathchar)
{
$pathtoroot = $pathtoroot.$pathchar;
}
//echo $pathtoroot;
require_once($pathtoroot."kernel/startup.php");
if (!admin_login())
{
if(!headers_sent())
setcookie("sid"," ",time()-3600);
$objSession->Logout();
header("Location: ".$adminURL."/login.php");
die();
//require_once($pathtoroot."admin/login.php");
}
$admin = $objConfig->Get("AdminDirectory");
if(!strlen($admin))
$admin = "admin";
$rootURL="http://".ThisDomain().$objConfig->Get("Site_Path");
$localURL=$rootURL."kernel/";
$adminURL = $rootURL.$admin;
$imagesURL = $adminURL."/images";
$pathtolocal = $pathtoroot."kernel/";
require_once ($pathtoroot.$admin."/include/elements.php");
require_once ($pathtoroot."kernel/admin/include/navmenu.php");
//require_once ($pathtolocal."admin/include/navmenu.php");
require_once($pathtoroot.$admin."/toolbar.php");
require_once($pathtoroot.$admin."/listview/listview.php");
$pathtolocal = $pathtoroot;
/* -------------------------------------- Section configuration ------------------------------------------- */
$section = 'in-portal:user_list';
$envar = "env=" . BuildEnv();
$SortFieldVar = "User_SortField";
$SortOrderVar = "User_SortOrder";
$DefaultSortField = "Login";
$PerPageVar = "Perpage_User";
$CurrentPageVar = "Page_UserList";
$CurrentFilterVar = "User_View";
$ListForm = "userlistform";
$CheckClass = "UserChecks";
/* ------------------------------------- Configure the toolbar ------------------------------------------- */
$objListToolBar = new clsToolBar();
$objListToolBar->Set("section",$section);
$objListToolBar->Set("load_menu_func","");
$objListToolBar->Set("CheckClass",$CheckClass);
$objListToolBar->Set("CheckForm",$ListForm);
$listImages = array();
//$img, $alt, $link, $onMouseOver, $onMouseOut, $onClick
$objListToolBar->Add("new_user", "la_ToolTip_New_User",$adminURL."/users/adduser.php?$envar&new=1","swap('new_user','toolbar/tool_new_user_f2.gif');",
"swap('new_user', 'toolbar/tool_new_user.gif');","");
$objListToolBar->Add("user_edit","la_ToolTip_Edit","#", "if (UserChecks.itemChecked()) swap('user_edit','toolbar/tool_edit_f2.gif');",
"if (UserChecks.itemChecked()) swap('user_edit', 'toolbar/tool_edit.gif');","if (UserChecks.itemChecked()) UserChecks.check_submit('adduser', '');",
"tool_edit.gif",TRUE,TRUE);
$listImages[] = "UserChecks.addImage('user_edit','$imagesURL/toolbar/tool_edit.gif','$imagesURL/toolbar/tool_edit_f3.gif',1); ";
$objListToolBar->Add("user_del","la_ToolTip_Delete","#", "if (UserChecks.itemChecked()) swap('user_del','toolbar/tool_delete_f2.gif');",
"if (UserChecks.itemChecked()) swap('user_del', 'toolbar/tool_delete.gif');","if (UserChecks.itemChecked()) UserChecks.check_submit('user_list', 'm_delete_user');",
"tool_delete.gif",FALSE,TRUE);
$listImages[] = "UserChecks.addImage('user_del','$imagesURL/toolbar/tool_delete.gif','$imagesURL/toolbar/tool_delete_f3.gif',1); ";
$objListToolBar->Add("user_primary","la_ToolTip_PrimaryGroup","#", "if (UserChecks.itemChecked()) swap('user_primary','toolbar/tool_primary_user_group_f2.gif');",
"if (UserChecks.itemChecked()) swap('user_primary', 'toolbar/tool_primary_user_group.gif');","if (UserChecks.itemChecked()) SelectPrimaryGroup();",
"tool_primary_user_group.gif",FALSE,TRUE);
$listImages[] = "UserChecks.addImage('user_primary','$imagesURL/toolbar/tool_primary_user_group.gif','$imagesURL/toolbar/tool_primary_user_group_f3.gif',1); ";
$objListToolBar->Add("divider");
$objListToolBar->Add("user_app","la_ToolTip_Approve","#","if (UserChecks.itemChecked()) swap('user_app','toolbar/tool_approve_f2.gif');",
"if (UserChecks.itemChecked()) swap('user_app', 'toolbar/tool_approve.gif');","if (UserChecks.itemChecked()) UserChecks.check_submit('user_list', 'm_approve_user');",
"tool_approve.gif",FALSE,TRUE);
$listImages[] = "UserChecks.addImage('user_app','$imagesURL/toolbar/tool_approve.gif','$imagesURL/toolbar/tool_approve_f3.gif',1); ";
$objListToolBar->Add("user_deny","la_ToolTip_Deny","#","if (UserChecks.itemChecked()) swap('user_deny','toolbar/tool_decline_f2.gif');",
"if (UserChecks.itemChecked()) swap('user_deny', 'toolbar/tool_decline.gif');","if (UserChecks.itemChecked()) UserChecks.check_submit('user_list', 'm_deny_user');",
"tool_deny.gif",FALSE,TRUE);
$listImages[] = "UserChecks.addImage('user_deny','$imagesURL/toolbar/tool_decline.gif','$imagesURL/toolbar/tool_decline_f3.gif',1); ";
$objListToolBar->Add("user_ban","la_ToolTip_Ban","#","if (UserChecks.itemChecked()) swap('user_ban','toolbar/tool_ban_user_f2.gif');",
"if (UserChecks.itemChecked()) swap('user_ban', 'toolbar/tool_ban_user.gif');","if (UserChecks.itemChecked()) UserChecks.check_submit('banuser', '');",
"tool_deny.gif",FALSE,TRUE);
$listImages[] = "UserChecks.addImage('user_ban','$imagesURL/toolbar/tool_ban_user.gif','$imagesURL/toolbar/tool_ban_user_f3.gif',1); ";
$objListToolBar->Add("divider");
$objListToolBar->Add("user_mail","la_ToolTip_SendMail","#", "if (UserChecks.itemChecked()) swap('user_mail','toolbar/tool_e-mail_f2.gif');",
"if (UserChecks.itemChecked()) swap('user_mail', 'toolbar/tool_e-mail.gif');","if (UserChecks.itemChecked()) openEmailPopup('','sendmail',$CheckClass);",
"tool_e-mail.gif",FALSE,TRUE);
$listImages[] = "UserChecks.addImage('user_mail','$imagesURL/toolbar/tool_e-mail.gif','$imagesURL/toolbar/tool_e-mail_f3.gif',1); ";
$objListToolBar->Add("user_print", "la_ToolTip_Print","#","swap('user_print','toolbar/tool_print_f2.gif');",
"swap('user_print', 'toolbar/tool_print.gif');","window.print();","tool_print.gif");
$objListToolBar->Add("viewmenubutton", "la_ToolTip_View","#","swap('viewmenubutton','toolbar/tool_view_f2.gif'); ",
"swap('viewmenubutton', 'toolbar/tool_view.gif');",
"ShowViewMenu();","tool_view.gif");
$objListToolBar->AddToInitScript($listImages);
/* ----------------------------------------- Set the View Filter ---------------------------------------- */
/* bit place holders for category view menu */
$Bit_Pending=4;
$Bit_Disabled=2;
$Bit_Valid=1;
$Bit_All = 7;
$FilterLabels = array();
$FilterLabels[0] = admin_language("la_Text_Enabled");
$FilterLabels[1] = admin_language("la_Text_Disabled");
$FilterLabels[2] = admin_language("la_Text_Pending");
/* determine current view menu settings */
$UserView = $objConfig->Get("User_View");
if(!is_numeric($UserView))
{
$UserView = $Bit_All; //Set all bits ON
$UserFilter = "";
}
if($UserView & $Bit_Valid)
$Status[] = 1;
if($UserView & $Bit_Disabled)
$Status[] = 0;
if($UserView & $Bit_Pending)
$Status[] = 2;
if(count($Status)>0)
{
$UserFilter = "Status IN (".implode(",",$Status).")";
}
else
$UserFilter = "Status = -1";
$order = $objConfig->Get($SortOrderVar);
$SearchWords = $objSession->GetVariable("UserSearchWord");
$where = "(ug.PrimaryGroup!=0 OR ug.PrimaryGroup IS NULL)";
if(strlen($SearchWords))
{
$SearchWhere = $objUsers->AdminSearchWhereClause($SearchWords);
}
if(strlen($SearchWhere))
{
$where .= " AND (".$SearchWhere.")";
}
if(strlen($UserFilter))
$where .= " AND (".$UserFilter.")";
/* ------------------------------------ Build the SQL statement to populate the list ---------------------------*/
$sql = "SELECT u.*,g.Name as GroupName,ELT(u.status+1,'".admin_language("la_Text_Disabled")." ','".admin_language("la_Text_Enabled")." ','".admin_language("la_Text_Pending")."') as UserStatus, ";
$sql .="FROM_UNIXTIME(u.CreatedOn,'%m-%d-%Y') as DateCreated FROM ".GetTablePrefix()."PortalUser as u ";
$sql .="LEFT JOIN ".GetTablePrefix()."UserGroup as ug ON (u.PortalUserId=ug.PortalUserId) ";
$sql .="LEFT JOIN ".GetTablePrefix()."PortalGroup as g ON (ug.GroupId=g.GroupId) WHERE $where";
if(!strlen($objConfig->Get($SortFieldVar)))
$objConfig->Set($SortFieldVar,$DefaultSortField);
$orderBy = trim($objConfig->Get($SortFieldVar)." ".$objConfig->Get($SortOrderVar));
if(strlen($orderBy))
$sql .=" ORDER BY ".$orderBy;
if((int)$_GET["resetpage"])
{
$page = 1;
$objSession->SetVariable($CurrentPageVar,1);
}
else
{
if((int)$_GET["lpn"])
{
$objSession->SetVariable($CurrentPageVar,(int)$_GET["lpn"]);
$page = (int)$_GET["lpn"];
}
else
{
$page = $objSession->GetVariable($CurrentPageVar);
}
}
-$sql .=" ".GetLimitSQL($page,(int)$objConfig->Get($PerPageVar));
+//$sql .=" ".GetLimitSQL($page,(int)$objConfig->Get($PerPageVar));
if($objSession->HasSystemPermission("DEBUG.LIST"))
echo htmlentities($sql,ENT_NOQUOTES)."<br>\n";
-//echo "SQL: $sql<br>";
-$objUsers->Query_Item($sql);
+$objListView = new clsListView($objListToolBar);
+$objListView->CurrentPageVar = $CurrentPageVar;
+$objListView->PerPageVar = $PerPageVar;
+ //echo "SQL: $sql<br>";
+
+$objUsers->Query_Item($sql, false, 'set_first');
+$objSession->SetVariable($CurrentPageVar, 1);
$itemcount = QueryCount($sql);
//$title = prompt_language("la_Text_ShowingUsers")." (".$objUsers->NumItems().")";
//removed by PSK 2004-10-21
if(strlen($SearchWords))
{
$title = prompt_language("la_Text_Search_Results")." (".$itemcount.")";
}
else
$title = prompt_language("la_Text_ShowingUsers")." (".$itemcount.")";
-
+ $objListView->SetListItems($objUsers);
/* ---------------------------------------- Configure the list view ---------------------------------------- */
-$objListView = new clsListView($objListToolBar,$objUsers);
+
$objListView->IdField = "ResourceId";
$objListView->PageLinkTemplate = $pathtoroot.$admin."/templates/user_page_link.tpl";
$objListView->ColumnHeaders->Add("Login",admin_language("la_prompt_Username"),1,0,$order,"width=\"15%\"",$SortFieldVar,$SortOrderVar,"Login");
$objListView->ColumnHeaders->Add("LastName",admin_language("la_prompt_Last_Name"),1,0,$order,"width=\"15%\"",$SortFieldVar,$SortOrderVar,"LastName");
$objListView->ColumnHeaders->Add("FirstName",admin_language("la_prompt_First_Name"),1,0,$order,"width=\"15%\"",$SortFieldVar,$SortOrderVar,"FirstName");
$objListView->ColumnHeaders->Add("Email",admin_language("la_prompt_Email"),1,0,$order,"width=\"20%\"",$SortFieldVar,$SortOrderVar,"Email");
$objListView->ColumnHeaders->Add("GroupName",admin_language("la_prompt_PrimaryGroup"),1,0,$order,"width=\"20%\"",$SortFieldVar,$SortOrderVar,"GroupName");
$objListView->ColumnHeaders->Add("DateCreated",admin_language("la_prompt_CreatedOn"),1,0,$order,"width=\"15%\"",$SortFieldVar,$SortOrderVar,"u.CreatedOn");
$objListView->ColumnHeaders->SetSort($objConfig->Get($SortFieldVar), $objConfig->Get($SortOrderVar));
$objListView->PrintToolBar = FALSE;
$objListView->SearchBar = TRUE;
$objListView->SearchKeywords = $SearchWords;
$objListView->SearchAction="m_user_search";
-$objListView->CurrentPageVar = $CurrentPageVar;
-$objListView->PerPageVar = $PerPageVar;
$objListView->CheckboxName = "itemlist[]";
$objListView->TotalItemCount = $itemcount;
$objListView->ConfigureViewMenu($SortFieldVar,$SortOrderVar,$DefaultSortField,
$CurrentFilterVar,$UserView,$Bit_All);
foreach($FilterLabels as $Bit=>$Label)
{
$objListView->AddViewMenuFilter($Label,$Bit);
}
for($i=0;$i<count($objUsers->Items);$i++)
{
$u =& $objUsers->GetItemRefByIndex($i);
$objListView->RowIcons[] = $u->StatusIcon();
}
$objListToolBar->AddToInitScript("fwLoadMenus();");
$h = "\n\n<SCRIPT Language=\"JavaScript1.2\">\n".$objListView->GetViewMenu($imagesURL)."\n</SCRIPT>\n";
int_header($objListToolBar,NULL, $title,NULL,$h);
?>
<FORM method="POST" ACTION="" NAME="userlistform" ID="userlistform">
<?php
print $objListView->PrintList();
?>
<input type="hidden" name="Action" value="">
</FORM>
<FORM method=POST NAME="sendmail" ID="sendmail" target="sendmail" ACTION="<?php echo $adminURL."/email/sendmail.php?env=".BuildEnv(); ?>">
<INPUT TYPE="HIDDEN" NAME="idlist" ID="idlist" VALUE="">
<INPUT TYPE="hidden" NAME="idtype" ID="idtype" VALUE="user">
</FORM>
<!-- CODE FOR VIEW MENU -->
<form ID="viewmenu" method="post" action="user_list.php?env=<?php echo BuildEnv(); ?>" name="viewmenu">
<input type="hidden" name="fieldname" value="">
<input type="hidden" name="varvalue" value="">
<input type="hidden" name="varvalue2" value="">
<input type="hidden" name="Action" value="">
</form>
<form ID="popup" method="post" action="user_list.php?env=<?php echo BuildEnv(); ?>" name="popup">
<INPUT TYPE="hidden" NAME="grouplist">
<input TYPE="hidden" NAME="Action" VALUE="m_user_primarygroup">
<input type="hidden" NAME="userlist">
</FORM>
<FORM ID="ListSearchForm" NAME="ListSearchForm" method="POST" action="<?php echo $_SERVER["PHP_SELF"]."?env=".BuildEnv(); ?>">
<INPUT TYPE="HIDDEN" NAME="Action" VALUE="">
<INPUT TYPE="HIDDEN" NAME="list_search">
</FORM>
<script src="<?php echo $adminURL; ?>/listview/listview.js"></script>
<script>
initSelectiorContainers();
<?php echo $objListToolBar->Get("CheckClass").".setImages();"; ?>
</script>
<!-- END CODE-->
<?php int_footer(); ?>
Property changes on: trunk/admin/users/user_list.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.1
\ No newline at end of property
+1.2
\ No newline at end of property
Index: trunk/admin/install.php
===================================================================
--- trunk/admin/install.php (revision 136)
+++ trunk/admin/install.php (revision 137)
@@ -1,1917 +1,1922 @@
<?php
error_reporting(0);
//$new_version = '1.0.2';
-define("GET_LICENSE_URL", "http://www.intechnic.com/myaccount/license.php");
+//define("GET_LICENSE_URL", "http://www.intechnic.com/myaccount/license.php");
+define("GET_LICENSE_URL", "http://maris.prod.intechnic.lv/in-business/license.php");
define('BACKUP_NAME', 'dump(.*).txt'); // how backup dump files are named
$general_error = '';
if ($_POST['install_type'] != '') {
$install_type = $_POST['install_type'];
}
else if ($_GET['install_type'] != '') {
$install_type = $_GET['install_type'];
}
$force_finish = isset($_REQUEST['ff']) ? true : false;
$pathtoroot = "";
if(!strlen($pathtoroot))
{
//$path=dirname(realpath($_SERVER['SCRIPT_FILENAME']));PATH_TRANSLATED
$path=dirname(realpath($_SERVER['PATH_TRANSLATED']));
if(strlen($path))
{
/* determine the OS type for path parsing */
$pos = strpos($path,":");
if ($pos === false)
{
$gOS_TYPE="unix";
$pathchar = "/";
}
else
{
$gOS_TYPE="win";
$pathchar="\\";
}
$p = $path.$pathchar;
/*Start looking for the root flag file */
while(!strlen($pathtoroot) && strlen($p))
{
$sub = substr($p,strlen($pathchar)*-1);
if($sub==$pathchar)
{
$filename = $p."root.flg";
}
else
$filename = $p.$pathchar."root.flg";
if(file_exists($filename))
{
$pathtoroot = $p;
}
else
{
$parent = realpath($p.$pathchar."..".$pathchar);
if($parent!=$p)
{
$p = $parent;
}
else
$p = "";
}
}
if(!strlen($pathtoroot))
$pathtoroot = ".".$pathchar;
}
else
{
$pathtoroot = ".".$pathchar;
}
}
if( file_exists($pathtoroot.'debug.php') && !defined('DEBUG_MODE') ) include_once($pathtoroot.'debug.php');
if( defined('DEBUG_MODE') )
{
error_reporting(E_ALL & E_NOTICE);
ini_set('display_errors', 1);
}
else
error_reporting(0);
$path_char = GetPathChar();
//phpinfo(INFO_VARIABLES);
$sub = substr($pathtoroot,strlen($pathchar)*-1);
if($sub!=$pathchar)
{
$pathtoroot = $pathtoroot.$pathchar;
}
$is_install = TRUE;
$admin = substr($path,strlen($pathtoroot));
$state = isset($_GET["state"]) ? $_GET["state"] : '';
if(!strlen($state))
{
$state = $_POST["state"];
}
include($pathtoroot.$admin."/install/install_lib.php");
$ini_file = $pathtoroot."config.php";
if(file_exists($ini_file))
{
$write_access = is_writable($ini_file);
$ini_vars = inst_parse_portal_ini($ini_file,TRUE);
foreach($ini_vars as $secname => $section)
{
foreach($section as $key => $value)
{
- $key = "g_".$key;
+ $key = "g_".str_replace('-', '', $key);
global $$key;
$$key = $value;
}
}
}
else
{
$state="";
$write_access = is_writable($pathtoroot);
if($write_access)
{
set_ini_value("Database", "DBType", "");
set_ini_value("Database", "DBHost", "");
set_ini_value("Database", "DBUser", "");
set_ini_value("Database", "DBUserPassword", "");
set_ini_value("Database", "DBName", "");
- set_ini_value("Modules", "In-Portal", "");
+ set_ini_value("Module Versions", "In-Portal", "");
save_values();
}
}
$titles[1] = "General Site Setup";
$configs[1] = "in-portal:configure_general";
$mods[1] = "In-Portal";
$titles[2] = "User Setup";
$configs[2] = "in-portal:configure_users";
$mods[2] = "In-Portal:Users";
$titles[3] = "Category Display Setup";
$configs[3] = "in-portal:configure_categories";
$mods[3] = "In-Portal";
// simulate rootURL variable: begin
$rootURL = 'http://'.dirname($_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']);
$tmp = explode('/', $rootURL);
if( $tmp[ count($tmp) - 1 ] == $admin) unset( $tmp[ count($tmp) - 1 ] );
$rootURL = implode('/', $tmp).'/';
unset($tmp);
//echo "RU: $rootURL<br>";
// simulate rootURL variable: end
$db_savings = Array('dbinfo', 'db_config_save', 'db_reconfig_save'); //, 'reinstall_process'
if(strlen($g_DBType)>0 && strlen($state)>0 && !in_array($state, $db_savings) )
{
require_once($pathtoroot."kernel/startup.php");
$localURL=$rootURL."kernel/";
$adminURL = $rootURL.$admin;
$imagesURL = $adminURL."/images";
//admin only util
$pathtolocal = $pathtoroot."kernel/";
require_once ($pathtoroot.$admin."/include/elements.php");
//require_once ($pathtoroot."kernel/admin/include/navmenu.php");
require_once ($pathtolocal."admin/include/navmenu.php");
require_once($pathtoroot.$admin."/toolbar.php");
}
function GetPathChar($path = null)
{
if( !isset($path) ) $path = $GLOBALS['pathtoroot'];
$pos = strpos($path, ':');
return ($pos === false) ? "/" : "\\";
}
function SuperStrip($str, $inverse = false)
{
$str = $inverse ? str_replace("%5C","\\",$str) : str_replace("\\","%5C",$str);
return stripslashes($str);
}
require_once($pathtoroot.$admin."/install/inst_ado.php");
$helpURL = $rootURL.$admin.'/help/install_help.php?destform=popup&help_usage=install';
?>
<html>
<head>
<title>In-Portal Installation</title>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta name="generator" content="Notepad">
<link rel="stylesheet" type="text/css" href="include/style.css">
<LINK REL="stylesheet" TYPE="text/css" href="install/2col.css">
<SCRIPT LANGUAGE="JavaScript1.2">
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function swap(imgid, src){
var ob = document.getElementById(imgid);
ob.src = 'images/' + src;
}
function Continue() {
document.iform1.submit();
}
function CreatePopup(window_name, url, width, height)
{
// creates a popup window & returns it
if(url == null && typeof(url) == 'undefined' ) url = '';
if(width == null && typeof(width) == 'undefined' ) width = 750;
if(height == null && typeof(height) == 'undefined' ) height = 400;
return window.open(url,window_name,'width='+width+',height='+height+',status=yes,resizable=yes,menubar=no,scrollbars=yes,toolbar=no');
}
function ShowHelp(section)
{
var frm = document.getElementById('help_form');
frm.section.value = section;
frm.method = 'POST';
CreatePopup('HelpPopup','<?php echo $rootURL.$admin; ?>/help/blank.html'); // , null, 600);
frm.target = 'HelpPopup';
frm.submit();
}
</SCRIPT>
</head>
<body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" style="height: 100%">
<form name="help_form" id="help_form" action="<?php echo $helpURL; ?>" method="post"><input type="hidden" id="section" name="section" value=""></form>
<form enctype="multipart/form-data" name="iform1" id="iform1" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
<tr>
<td height="90">
<table cellpadding="0" cellspacing="0" border="0" width="100%" height="90">
<tr>
<td rowspan="3" valign="top"><a href="http://www.in-portal.net" target="_top"><img alt="In-portal" src="images/globe.gif" width="84" height="91" border="0"></a></td>
<td rowspan="3" valign="top"><a href="http://www.in-portal.net" target="_top"><img alt="In-portal" src="images/logo.gif" width="150" height="91" border="0"></a></td>
<td rowspan="3" width="100000" align="right">&nbsp;</td>
<td width="400"><img alt="" src="images/blocks.gif" width="400" height="73"></td>
</tr>
<tr><td align="right" background="images/version_bg.gif" class="head_version" valign="top"><img alt="" src="images/spacer.gif" width="1" height="14">In-Portal Version <?php echo GetMaxPortalVersion($pathtoroot.$admin)?>: English US</td></tr>
<tr><td><img alt="" src="images/blocks2.gif" width="400" height="2"><br></td></tr>
<tr><td bgcolor="black" colspan="4"><img alt="" src="images/spacer.gif" width="1" height="1"><br></td></tr>
</table>
</td>
</tr>
<?php
require_once($pathtoroot."kernel/include/adodb/adodb.inc.php");
if(!strlen($state))
$state = @$_POST["state"];
//echo $state;
if(strlen($state)==0)
{
$ado = inst_GetADODBConnection();
if($ado)
{
$installed = TableExists($ado,"ConfigurationAdmin,Category,Permissions");
}
if(!minimum_php_version("4.1.2"))
{
$general_error = "You have version ".phpversion()." - please upgrade!";
//die();
}
if(!$write_access)
{
if ($general_error != '') {
$general_error .= '<br /><br />';
}
$general_error .= "Install cannot write to config.php in the root directory of your in-portal installation ($pathtoroot).";
//die();
}
if(!is_writable($pathtoroot."themes/"))
{
if ($general_error != '') {
$general_error .= '<br /><br />';
}
$general_error .= "In-portal's Theme directory must be writable (".$pathtoroot."themes/).";
//die();
}
if(!is_writable($pathtoroot."kernel/images/"))
{
if ($general_error != '') {
$general_error .= '<br /><br />';
}
$general_error .= "In-portal's Image Upload directory must be writable (".$pathtoroot."kernel/images/).";
//die();
}
if(!is_writable($pathtoroot."admin/backupdata/"))
{
if ($general_error != '') {
$general_error .= '<br /><br />';
}
$general_error .= "In-portal's Backup directory must be writable (".$pathtoroot."admin/backupdata/).";
//die();
}
if(!is_writable($pathtoroot."admin/export/"))
{
if ($general_error != '') {
$general_error .= '<br /><br />';
}
$general_error .= "In-portal's Exportd directory must be writable (".$pathtoroot."admin/export/).";
//die();
}
if($installed)
- {
- $state="reinstall";
+ {
+ $state="reinstall";
}
else {
$state="dbinfo";
}
}
if($state=="reinstall_process")
{
$lic = base64_decode($g_License);
if(strlen($lic))
{
inst_ParseLicense($lic);
$ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0));
}
$LoggedIn = FALSE;
if($_POST["UserName"]=="root")
{
$ado = inst_GetADODBConnection();
$sql = "SELECT * FROM ".$g_TablePrefix."ConfigurationValues WHERE VariableName='RootPass'";
$rs = $ado->Execute($sql);
if($rs && !$rs->EOF)
{
$RootPass = $rs->fields["VariableValue"];
if(strlen($RootPass)>0)
$LoggedIn = ($RootPass==md5($_POST["UserPass"]));
}
}
else
{
- $rfile = @fopen(GET_LICENSE_URL."?login=".md5($_POST['UserName'])."&password=".md5($_POST['UserPass'])."&action=check&license_code=".base64_encode($g_LicenseCode)."&version=".str_replace('.', '', GetMaxPortalVersion($pathtoroot.$admin))."&domain=".base64_encode($_SERVER['SERVER_NAME']), "r");
+ $act = '';
+ if (str_replace('.', '', $g_InPortal) >= 105) {
+ $act = 'check';
+ }
+ $rfile = @fopen(GET_LICENSE_URL."?login=".md5($_POST['UserName'])."&password=".md5($_POST['UserPass'])."&action=$act&license_code=".base64_encode($g_LicenseCode)."&version=".str_replace('.', '', GetMaxPortalVersion($pathtoroot.$admin))."&domain=".base64_encode($_SERVER['SERVER_NAME']), "r");
if (!$rfile) {
$LoggedIn = false;
}
else {
$rcontents = '';
while (!feof($rfile)) {
$line = fgets($rfile, 10000);
$rcontents .= $line;
}
@fclose($rfile);
if (substr($rcontents, 0, 5) == 'Error') {
$LoggedIn = false;
}
else {
$LoggedIn = true;
}
}
//$LoggedIn = ($i_User == $_POST["UserName"] && ($i_Pswd == $_POST["UserPass"]) && strlen($i_User)>0) || strlen($i_User)==0;
}
if($LoggedIn)
{
if (!(int)$_POST["inp_opt"]) {
$state="reinstall";
$inst_error = "Please select one of the options above!";
}
else {
switch((int)$_POST["inp_opt"])
{
case 0:
$inst_error = "Please select an option above";
break;
case 1:
/* clean out all tables */
$install_type = 4;
$ado = inst_GetADODBConnection();
$filename = $pathtoroot.$admin."/install/inportal_remove.sql";
RunSchemaFile($ado,$filename);
/* run install again */
$state="license";
break;
case 2:
$install_type = 3;
$state="dbinfo";
break;
case 3:
$install_type = 5;
$state="license";
break;
case 4:
$install_type = 6;
/* clean out all tables */
$ado = inst_GetADODBConnection();
//$filename = $pathtoroot.$admin."/install/inportal_remove.sql";
//RunSchemaFile($ado,$filename);
/* run install again */
$state="restore_select";
break;
case 5:
$install_type = 7;
/* change DB config */
$state="db_reconfig";
break;
case 6:
$install_type = 8;
$state = "upgrade";
break;
}
}
}
else
{
$state="reinstall";
$login_error = "Invalid Username or Password - Try Again";
}
}
if ($state == "upgrade") {
$ado = inst_GetADODBConnection();
$Modules = array();
$Texts = array();
if (str_replace('.', '', GetMaxPortalVersion($pathtoroot.$admin)) >= 105 && $g_LicenseCode == '') {
$state = 'reinstall';
$inst_error = "Please upgrade your license before upgrade!";
}
else {
$sql = "SELECT Name, Version FROM ".$g_TablePrefix."Modules";
$rs = $ado->Execute($sql);
//echo '<pre>'.print_r($rs->GetRows(), true).'</pre>';
$i = 0;
while ($rs && !$rs->EOF) {
$p = strtolower($rs->fields['Name']);
// $modules .= strtolower($rs->fields['Name']).',';
// $rs->MoveNext();
// }
// $mod_arr = explode(",", substr($modules, 0, strlen($modules) - 1));
// foreach($mod_arr as $p)
// {
if ($p == 'in-portal') {
$p = '';
}
$dir_name = $pathtoroot.$p."/admin/install/upgrades/";
$dir = @dir($dir_name);
//echo "<pre>"; print_r($dir); echo "</pre>";
while ($file = $dir->read()) {
if ($file != "." && $file != ".." && !is_dir($dir_name.$file))
{
$file = str_replace("inportal_upgrade_v", "", $file);
$file = str_replace(".sql", "", $file);
if ($file != '' && !strstr($file, 'changelog')) {
$sql = "SELECT count(*) AS count FROM ".$g_TablePrefix."Modules WHERE Name = '".$rs->fields['Name']."' AND Version = '$file'";
$rs1 = $ado->Execute($sql);
if ($rs1->fields['count'] == 0 && str_replace('.', '', $file) > str_replace('.', '', $rs->fields['Version'])) {
//$sql = "SELECT Version FROM ".$g_TablePrefix."Modules WHERE Name = '".$p."'";
//$rs2 = $ado->Execute($sql);
if ($Modules[$i-1] == $rs->fields['Name']) {
$Texts[$i-1] = $rs->fields['Name']." (".$rs->fields['Version']." ".prompt_language("la_to")." ".$file.")";
//$Modules[] = $rs->fields['Name'];
$i--;
}
else {
$Texts[$i] = $rs->fields['Name']." (".$rs->fields['Version']." ".prompt_language("la_to")." ".$file.")";
$Modules[$i] = $rs->fields['Name'];
}
$i++;
}
}
}
}
$rs->MoveNext();
}
$include_file = $pathtoroot.$admin."/install/upgrade.php";
}
}
if ($state == "upgrade_process") {
$ado = inst_GetADODBConnection();
$mod_arr = $_POST['modules'];
foreach($mod_arr as $p)
{
$mod_name = strtolower($p);
$sql = "SELECT Version FROM ".$g_TablePrefix."Modules WHERE Name = '$p'";
$rs = $ado->Execute($sql);
$current_version = $rs->fields['Version'];
if ($mod_name == 'in-portal') {
$mod_name = '';
}
$dir_name = $pathtoroot.$mod_name."/admin/install/upgrades/";
$dir = @dir($dir_name);
$new_version = '';
$tmp1 = 0;
$tmp2 = 0;
while ($file = $dir->read()) {
if ($file != "." && $file != ".." && !is_dir($dir_name.$file))
{
$file = str_replace("inportal_upgrade_v", "", $file);
$file = str_replace(".sql", "", $file);
if ($file != '' && !strstr($file, 'changelog')) {
$tmp1 = str_replace(".", "", $file);
if ($tmp1 > $tmp2) {
$new_version = $file;
}
}
}
$tmp2 = $tmp1;
}
$version_nrs = explode(".", $new_version);
for ($i = 0; $i < $version_nrs[0] + 1; $i++) {
for ($j = 0; $j < $version_nrs[1] + 1; $j++) {
for ($k = 0; $k < $version_nrs[2] + 1; $k++) {
$try_version = "$i.$j.$k";
if (str_replace('.', '', $try_version) > str_replace('.', '', $current_version)) {
$filename = $pathtoroot.$mod_name."/admin/install/upgrades/inportal_upgrade_v$try_version.sql";
//echo "Trying Version: $try_version<br>";
if(file_exists($filename))
{
RunSQLFile($ado, $filename);
- set_ini_value("Modules", $p, $try_version);
+ set_ini_value("Module Versions", $p, $try_version);
save_values();
}
}
}
}
}
$state = 'languagepack_upgrade';
}
}
// upgrade language pack
if($state=='languagepack_upgrade')
{
$state = 'lang_install_init';
$_POST['lang'][] = 'english.lang';
$force_finish = true;
}
if($state=="db_reconfig_save")
{
$ini_vars = inst_parse_portal_ini($ini_file,TRUE);
foreach($ini_vars as $secname => $section)
{
foreach($section as $key => $value)
{
$key = "g_".str_replace("-", "", $key);
global $$key;
$$key = $value;
}
}
unset($ado);
$ado = VerifyDB('db_reconfig', 'finish', 'SaveDBConfig', true);
}
if($state=="db_reconfig")
{
$include_file = $pathtoroot.$admin."/install/db_reconfig.php";
}
if($state=="restore_file")
{
if($_POST["submit"]=="Update")
{
$filepath = $_POST["backupdir"];
$state="restore_select";
}
else
{
$filepath = stripslashes($_POST['backupdir']);
$backupfile = $filepath.$path_char.str_replace('(.*)', $_POST['backupdate'], BACKUP_NAME);
if(file_exists($backupfile) && is_readable($backupfile))
{
$ado = inst_GetADODBConnection();
$show_warning = false;
if (!$_POST['warning_ok']) {
// Here we comapre versions between backup and config
$file_contents = file_get_contents($backupfile);
$file_tmp_cont = explode("#------------------------------------------", $file_contents);
$tmp_vers = $file_tmp_cont[0];
$vers_arr = explode(";", $tmp_vers);
$ini_values = inst_parse_portal_ini($ini_file);
foreach ($ini_values as $key => $value) {
foreach ($vers_arr as $k) {
if (strstr($k, $key)) {
if (!strstr($k, $value)) {
$show_warning = true;
}
}
}
}
//$show_warning = true;
}
if (!$show_warning) {
$filename = $pathtoroot.$admin.$path_char.'install'.$path_char.'inportal_remove.sql';
RunSchemaFile($ado,$filename);
$state="restore_run";
}
else {
$state = "warning";
$include_file = $pathtoroot.$admin."/install/warning.php";
}
}
else {
if ($_POST['backupdate'] != '') {
$include_file = $pathtoroot.$admin."/install/restore_select.php";
$restore_error = "$backupfile not found or could not be read";
}
else {
$include_file = $pathtoroot.$admin."/install/restore_select.php";
$restore_error = "No backup selected!!!";
}
}
}
//echo $restore_error;
}
if($state=="restore_select")
{
if( isset($_POST['backupdir']) ) $filepath = stripslashes($_POST['backupdir']);
$include_file = $pathtoroot.$admin."/install/restore_select.php";
}
if($state=="restore_run")
{
$ado = inst_GetADODBConnection();
$FileOffset = (int)$_GET["Offset"];
if(!strlen($backupfile))
$backupfile = SuperStrip($_GET['File'], true);
$include_file = $pathtoroot.$admin."/install/restore_run.php";
}
if($state=="db_config_save")
{
set_ini_value("Database", "DBType",$_POST["ServerType"]);
set_ini_value("Database", "DBHost",$_POST["ServerHost"]);
set_ini_value("Database", "DBName",$_POST["ServerDB"]);
set_ini_value("Database", "DBUser",$_POST["ServerUser"]);
set_ini_value("Database", "DBUserPassword",$_POST["ServerPass"]);
set_ini_value("Database","TablePrefix",$_POST["TablePrefix"]);
save_values();
$ini_vars = inst_parse_portal_ini($ini_file,TRUE);
foreach($ini_vars as $secname => $section)
{
foreach($section as $key => $value)
{
$key = "g_".str_replace("-", "", $key);
global $$key;
$$key = $value;
}
}
unset($ado);
$ado = VerifyDB('dbinfo', 'license');
}
if($state=="dbinfo")
{
if ($install_type == '') {
$install_type = 1;
}
$include_file = $pathtoroot.$admin."/install/dbinfo.php";
}
if ($state == "download_license") {
$ValidLicense = FALSE;
if ($_POST['login'] != '' && $_POST['password'] != '') {
// Here we determine weather login is ok & check available licenses
$rfile = @fopen(GET_LICENSE_URL."?login=".md5($_POST['login'])."&password=".md5($_POST['password'])."&version=".str_replace('.', '', GetMaxPortalVersion($pathtoroot.$admin))."&domain=".base64_encode($_SERVER['SERVER_NAME']), "r");
if (!$rfile) {
$get_license_error = "Unable to connect to the Intechnic server! Please try again later!";
$state = "get_license";
$include_file = $pathtoroot.$admin."/install/get_license.php";
}
else {
$rcontents = '';
while (!feof($rfile)) {
$line = fgets($rfile, 10000);
$rcontents .= $line;
}
@fclose($rfile);
if (substr($rcontents, 0, 5) == 'Error') {
$get_license_error = substr($rcontents, 6);
$state = "get_license";
$include_file = $pathtoroot.$admin."/install/get_license.php";
}
else {
if (substr($rcontents, 0, 3) == "SEL") {
$state = "download_license";
$license_select = substr($rcontents, 4);
$include_file = $pathtoroot.$admin."/install/download_license.php";
}
else {
// Here we get one license
$tmp_data = explode('Code==:', $rcontents);
$data = base64_decode(str_replace("In-Portal License File - do not edit!\n", "", $tmp_data[0]));
inst_ParseLicense($data);
$ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0));
if($ValidLicense)
{
set_ini_value("Intechnic","License",base64_encode($data));
set_ini_value("Intechnic","LicenseCode",$tmp_data[1]);
save_values();
$state="domain_select";
$got_license = 1;
}
else {
$license_error="Invalid License File";
}
if(!$ValidLicense)
{
$state="license";
}
}
}
}
}
else if ($_POST['licenses'] == '') {
$state = "get_license";
$get_license_error = "Username and / or password not specified!!!";
$include_file = $pathtoroot.$admin."/install/get_license.php";
}
else {
// Here we download license
$rfile = @fopen(GET_LICENSE_URL."?license_id=".md5($_POST['licenses'])."&dlog=".md5($_POST['dlog'])."&dpass=".md5($_POST['dpass'])."&version=".str_replace('.', '', GetMaxPortalVersion($pathtoroot.$admin))."&domain=".base64_encode($_POST['domain']), "r");
if (!$rfile) {
$get_license_error = "Unable to connect to the Intechnic server! Please try again later!";
$state = "get_license";
$include_file = $pathtoroot.$admin."/install/get_license.php";
}
else {
$rcontents = '';
while (!feof($rfile)) {
$line = fgets($rfile, 10000);
$rcontents .= $line;
}
@fclose($rfile);
if (substr($rcontents, 0, 5) == 'Error') {
$download_license_error = substr($rcontents, 6);
$state = "download_license";
$include_file = $pathtoroot.$admin."/install/download_license.php";
}
else {
$tmp_data = explode('Code==:', $rcontents);
$data = base64_decode(str_replace("In-Portal License File - do not edit!\n", "", $tmp_data[0]));
inst_ParseLicense($data);
$ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0));
if($ValidLicense)
{
set_ini_value("Intechnic","License",base64_encode($data));
set_ini_value("Intechnic","LicenseCode",$tmp_data[1]);
save_values();
$state="domain_select";
}
else {
$license_error="Invalid License File";
}
if(!$ValidLicense)
{
$state="license";
}
}
}
}
}
if($state=="license_process")
{
$ValidLicense = FALSE;
switch($_POST["lic_opt"])
{
case 1: /* download from intechnic */
$include_file = $pathtoroot.$admin."/install/get_license.php";
$state = "get_license";
//if(!$ValidLicense)
//{
// $state="license";
//}
break;
case 2: /* upload file */
$file = $_FILES["licfile"];
if(is_array($file))
{
move_uploaded_file($file["tmp_name"],$pathtoroot."themes/tmp.lic");
$fp = @fopen($pathtoroot."themes/tmp.lic","rb");
if($fp)
{
$lic = fread($fp,filesize($pathtoroot."themes/tmp.lic"));
fclose($fp);
}
$tmp_data = inst_LoadLicense(FALSE,$pathtoroot."themes/tmp.lic");
$data = $tmp_data[0];
@unlink($pathtoroot."themes/tmp.lic");
inst_ParseLicense($data);
$ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0));
if($ValidLicense)
{
set_ini_value("Intechnic","License",base64_encode($data));
set_ini_value("Intechnic","LicenseCode",$tmp_data[1]);
save_values();
$state="domain_select";
}
else
$license_error="Invalid License File";
}
if(!$ValidLicense)
{
$state="license";
}
break;
case 3: /* existing */
if(strlen($g_License))
{
$lic = base64_decode($g_License);
inst_ParseLicense($lic);
$ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0));
if($ValidLicense)
{
$state="domain_select";
}
else
{
$state="license";
$license_error="Invalid or corrupt license detected";
}
}
else
{
$state="license";
$license_error="Missing License File";
}
if(!$ValidLicense)
{
$state="license";
}
break;
case 4:
$state="domain_select";
break;
}
if($ValidLicense)
$state="domain_select";
}
if($state=="license")
{
$include_file = $pathtoroot.$admin."/install/sel_license.php";
}
if($state=="reinstall")
{
$ado = inst_GetADODBConnection();
$show_upgrade = false;
$sql = "SELECT Name FROM ".$g_TablePrefix."Modules";
$rs = $ado->Execute($sql);
$modules = '';
while ($rs && !$rs->EOF) {
$modules .= strtolower($rs->fields['Name']).',';
$rs->MoveNext();
}
$mod_arr = explode(",", substr($modules, 0, strlen($modules) - 1));
foreach($mod_arr as $p)
{
if ($p == 'in-portal') {
$p = '';
}
$dir_name = $pathtoroot.$p."/admin/install/upgrades/";
$dir = @dir($dir_name);
//echo "<pre>"; print_r($dir); echo "</pre>";
while ($file = $dir->read()) {
if ($file != "." && $file != ".." && !is_dir($dir_name.$file))
{
$file = str_replace("inportal_upgrade_v", "", $file);
$file = str_replace(".sql", "", $file);
if ($file != '' && !strstr($file, 'changelog')) {
if ($p == '') {
$p = 'in-portal';
}
$sql = "SELECT Version FROM ".$g_TablePrefix."Modules WHERE Name = '".$p."'";
$rs = $ado->Execute($sql);
if (str_replace(".", "", $rs->fields['Version']) < str_replace(".", "", $file)) {
$show_upgrade = true;
}
}
}
}
}
if ($install_type == '') {
$install_type = 2;
}
$include_file = $pathtoroot.$admin."/install/reinstall.php";
}
if($state=="login")
{
$lic = base64_decode($g_License);
if(strlen($lic))
{
inst_ParseLicense($lic);
$ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0));
}
if(!$ValidLicense)
{
$state="license";
}
else
if($i_User == $_POST["UserName"] || $i_Pswd == $_POST["UserPass"])
{
$state = "domain_select";
}
else
{
$state="getuser";
$login_error = "Invalid User Name or Password. If you don't know your username or password, contact Intechnic Support";
}
//die();
}
if($state=="getuser")
{
$include_file = $pathtoroot.$admin."/install/login.php";
}
if($state=="set_domain")
{
if(!is_array($i_Keys))
{
$lic = base64_decode($g_License);
if(strlen($lic))
{
inst_ParseLicense($lic);
$ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0));
}
}
if($_POST["domain"]==1)
{
$domain = $_SERVER['HTTP_HOST'];
if (strstr($domain, $i_Keys[0]['domain'])) {
set_ini_value("Intechnic","Domain",$domain);
save_values();
$state="runsql";
}
else {
$DomainError = 'Domain name selected does not match domain name in the license!';
$state = "domain_select";
}
}
else
{
$domain = str_replace(" ", "", $_POST["other"]);
if ($domain != '') {
if (strstr($domain, $i_Keys[0]['domain'])) {
set_ini_value("Intechnic","Domain",$domain);
save_values();
$state="runsql";
}
else {
$DomainError = 'Domain name entered does not match domain name in the license!';
$state = "domain_select";
}
}
else {
$DomainError = 'Please enter valid domain!';
$state = "domain_select";
}
}
}
if($state=="domain_select")
{
if(!is_array($i_Keys))
{
$lic = base64_decode($g_License);
if(strlen($lic))
{
inst_ParseLicense($lic);
$ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0));
}
}
$include_file = $pathtoroot.$admin."/install/domain.php";
}
if($state=="runsql")
{
$ado = inst_GetADODBConnection();
$installed = TableExists($ado,"ConfigurationAdmin,Category,Permissions");
if(!$installed)
{
// create tables
$filename = $pathtoroot.$admin."/install/inportal_schema.sql";
RunSchemaFile($ado,$filename);
// insert default info
$filename = $pathtoroot.$admin."/install/inportal_data.sql";
RunSQLFile($ado,$filename);
$sql = "SELECT Version FROM ".$g_TablePrefix."Modules WHERE Name = 'In-Portal'";
$rs = $ado->Execute($sql);
- set_ini_value("Modules", "In-Portal", $rs->fields['Version']);
+ set_ini_value("Module Versions", "In-Portal", $rs->fields['Version']);
save_values();
require_once $pathtoroot.'kernel/include/tag-class.php';
if( !is_object($objTagList) ) $objTagList = new clsTagList();
// install kernel specific tags
$objTagList->DeleteTags(); // delete all existing tags in db
// create 3 predifined tags (because there no functions with such names
$t = new clsTagFunction();
$t->Set("name","include");
$t->Set("description","insert template output into the current template");
$t->Create();
$t->AddAttribute("_template","tpl","Template to insert","",TRUE);
$t->AddAttribute("_supresserror","bool","Supress missing template errors","",FALSE);
$t->AddAttribute("_dataexists","bool","Only include template output if content exists (content is defined by the tags in the template)","",FALSE);
$t->AddAttribute("_nodatatemplate","tpl","Template to include if the nodataexists condition is true","",FALSE);
unset($t);
$t = new clsTagFunction();
$t->Set("name","perm_include");
$t->Set("description","insert template output into the current template if permissions are set");
$t->Create();
$t->AddAttribute("_template","tpl","Template to insert","",TRUE);
$t->AddAttribute("_noaccess","tpl","Template to insert if access is denied","",FALSE);
$t->AddAttribute("_permission","","Comma-separated list of permissions, any of which will grant access","",FALSE);
$t->AddAttribute("_module","","Used in place of the _permission attribute, this attribute verifies the module listed is enabled","",FALSE);
$t->AddAttribute("_system","bool","Must be set to true if any permissions in _permission list is a system permission","",FALSE);
$t->AddAttribute("_supresserror","bool","Supress missing template errors","",FALSE);
$t->AddAttribute("_dataexists","bool","Only include template output if content exists (content is defined by the tags in the template)","",FALSE);
$t->AddAttribute("_nodatatemplate","tpl","Template to include if the nodataexists condition is true","",FALSE);
unset($t);
$t = new clsTagFunction();
$t->Set("name","mod_include");
$t->Set("description","insert templates from all enabled modules. No error occurs if the template does not exist.");
$t->Create();
$t->AddAttribute("_template","tpl","Template to insert. This template path should be relative to the module template root directory","",TRUE);
$t->AddAttribute("_modules","","Comma-separated list of modules. Defaults to all enabled modules if not set","",FALSE);
$t->AddAttribute("_supresserror","bool","Supress missing template errors","",FALSE);
$t->AddAttribute("_dataexists","bool","Only include template output if content exists (content is defined by the tags in the template)","",FALSE);
$t->AddAttribute("_nodatatemplate","tpl","Template to include if the nodataexists condition is true","",FALSE);
$objTagList->ParseFile($pathtoroot.'kernel/parser.php'); // insert module tags
if( is_array($ItemTagFiles) )
foreach($ItemTagFiles as $file)
$objTagList->ParseItemFile($pathtoroot.$file);
$state="RootPass";
}
else {
$include_file = $pathtoroot.$admin."/install/install_finish.php";
$state="finish";
}
}
if ($state == "finish") {
$include_file = $pathtoroot.$admin."/install/install_finish.php";
}
if($state=="RootSetPass")
{
$pass = $_POST["RootPass"];
if(strlen($pass)<4)
{
$PassError = "Root Password must be at least 4 characters";
$state = "RootPass";
}
else if ($pass != $_POST["RootPassConfirm"]) {
$PassError = "Passwords does not match";
$state = "RootPass";
}
else
{
$pass = md5($pass);
$sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '$pass' WHERE VariableName='RootPass' OR VariableName='RootPassVerify'";
$ado = inst_GetADODBConnection();
$ado->Execute($sql);
$state="modselect";
}
}
if($state=="RootPass")
{
$include_file = $pathtoroot.$admin."/install/rootpass.php";
}
if($state=="lang_install_init")
{
include_once($pathtoroot."kernel/include/xml.php");
$ado = inst_GetADODBConnection();
if (TableExists($ado, "Language,Phrase")) {
$MaxInserts = 200;
$PhraseTable = GetTablePrefix()."ImportPhrases";
$EventTable = GetTablePrefix()."ImportEvents";
$sql = "CREATE TABLE $PhraseTable SELECT Phrase,Translation,PhraseType,LanguageId FROM ".GetTablePrefix()."Phrase WHERE PhraseId=-1";
$ado->Execute($sql);
$sql = "CREATE TABLE $EventTable SELECT Template,MessageType,EventId,LanguageId FROM ".GetTablePrefix()."EmailMessage WHERE EmailMessageId=-1";
$ado->Execute($sql);
$sql = "SELECT EventId,Event,Type FROM ".GetTablePrefix()."Events";
$rs = $ado->Execute($sql);
$Events = array();
while($rs && !$rs->EOF)
{
$Events[$rs->fields["Event"]."_".$rs->fields["Type"]] = $rs->fields["EventId"];
$rs->MoveNext();
}
if(count($_POST["lang"])>0)
{
$Langs = $_POST["lang"];
for($x=0;$x<count($Langs);$x++)
{
$lang = $Langs[$x];
$p = $pathtoroot.$admin."/install/langpacks/".$lang;
/* parse xml file */
$fp = fopen($p,"r");
$xml = fread($fp,filesize($p));
fclose($fp);
unset($objInXML);
$objInXML = new xml_doc($xml);
$objInXML->parse();
$objInXML->getTag(0,$name,$attribs,$contents,$tags);
if(is_array($tags))
{
foreach($tags as $t)
{
$LangRoot =& $objInXML->getTagByID($t);
$PackName = $LangRoot->attributes["PACKNAME"];
$l = $objLanguages->GetItemByField("PackName",$PackName);
if(is_object($l))
{
$LangId = $l->Get("LanguageId");
}
else
{
$l = new clsLanguage();
$l->Set("Enabled",1);
$l->Create();
$NewLang = TRUE;
$LangId = $l->Get("LanguageId");
}
foreach($LangRoot->children as $tag)
{
switch($tag->name)
{
case "PHRASES":
foreach($tag->children as $PhraseTag)
{
$Phrase = $ado->qstr($PhraseTag->attributes["LABEL"]);
$Translation = $ado->qstr(base64_decode($PhraseTag->contents));
$PhraseType = $PhraseTag->attributes["TYPE"];
$psql = "INSERT INTO $PhraseTable (Phrase,Translation,PhraseType,LanguageId) VALUES ($Phrase,$Translation,$PhraseType,$LangId)";
$ado->Execute($psql);
//echo "$psql <br>\n";
}
break;
case "DATEFORMAT":
$DateFormat = $tag->contents;
break;
case "TIMEFORMAT":
$TimeFormat = $tag->contents;
break;
case "DECIMAL":
$Decimal = $tag->contents;
break;
case "THOUSANDS":
$Thousands = $tag->contents;
break;
case "EVENTS":
foreach($tag->children as $EventTag)
{
$event = $EventTag->attributes["EVENT"];
$MsgType = strtolower($EventTag->attributes["MESSAGETYPE"]);
$template = base64_decode($EventTag->contents);
$Type = $EventTag->attributes["TYPE"];
$EventId = $Events[$event."_".$Type];
$esql = "INSERT INTO $EventTable (Template,MessageType,EventId,LanguageId) VALUES ('$template','$MsgType',$EventId,$LangId)";
$ado->Execute($esql);
//echo htmlentities($esql)."<br>\n";
}
break;
}
if($NewLang)
{
$l->Set("PackName",$PackName);
$l->Set("LocalName",$PackName);
$l->Set("DateFormat",$DateFormat);
$l->Set("TimeFormat",$TimeFormat);
$l->Set("DecimalPoint",$Decimal);
$l->Set("ThousandSep",$Thousands);
$l->Update();
}
}
}
}
}
$state="lang_install";
}
else {
$state="lang_select";
}
}
else {
$general_error = 'Database error! No language tables found!';
}
}
if($state=="lang_install")
{
/* do pack install */
$Offset = (int)$_GET["Offset"];
$Status = (int)$_GET["Status"];
$PhraseTable = GetTablePrefix()."ImportPhrases";
$EventTable = GetTablePrefix()."ImportEvents";
if($Status==0)
{
$Total = TableCount($PhraseTable,"",0);
}
else
{
$Total = TableCount($EventTable,"",0);
}
if($Status==0)
{
$Offset = $objLanguages->ReadImportTable($PhraseTable, 1,"0,1,2", $force_finish ? false : true, 200,$Offset);
if($Offset>=$Total)
{
$Offset=0;
$Status=1;
}
if ($_POST['next_step']) {
$next_step = $_POST['next_step'];
}
else if ($_GET['next_step']) {
$next_step = $_GET['next_step'];
}
if($force_finish == true) $next_step = 3;
$NextUrl = $_SERVER['PHP_SELF']."?Offset=$Offset&Status=$Status&state=lang_install&next_step=$next_step&install_type=$install_type";
if($force_finish == true) $NextUrl .= '&ff=1';
$include_file = $pathtoroot.$admin."/install/lang_run.php";
}
else
{
if(!is_object($objMessageList))
$objMessageList = new clsEmailMessageList();
$Offset = $objMessageList->ReadImportTable($EventTable, $force_finish ? false : true,100,$Offset);
if($Offset>$Total)
{
if ($_POST['next_step']) {
$next_step = $_POST['next_step'];
}
else if ($_GET['next_step']) {
$next_step = $_GET['next_step'];
}
if($force_finish == true) $next_step = 3;
$NextUrl = $_SERVER['PHP_SELF']."?Offset=$Offset&Status=$Status&State=lang_install&next_step=$next_step&install_type=$install_type";
if($force_finish == true) $NextUrl .= '&ff=1';
$include_file = $pathtoroot.$admin."/install/lang_run.php";
}
else
{
if( !$force_finish )
{
$state = 'lang_default';
}
else
{
$_POST['next_step'] = 4;
$state = 'finish';
$include_file = $pathtoroot.$admin."/install/install_finish.php";
}
}
}
}
if($state=="lang_default_set")
{
// phpinfo(INFO_VARIABLES);
$ado = inst_GetADODBConnection();
$PhraseTable = GetTablePrefix()."ImportPhrases";
$EventTable = GetTablePrefix()."ImportEvents";
$ado->Execute("DROP TABLE $PhraseTable");
$ado->Execute("DROP TABLE $EventTable");
$Id = $_POST["lang"];
$objLanguages->SetPrimary($Id);
$state="postconfig_1";
}
if($state=="lang_default")
{
$Packs = Array();
$objLanguages->Clear();
$objLanguages->LoadAllLanguages();
foreach($objLanguages->Items as $l)
{
$Packs[$l->Get("LanguageId")] = $l->Get("PackName");
}
$include_file = $pathtoroot.$admin."/install/lang_default.php";
}
if($state=="modinstall")
{
$doms = $_POST["domain"];
if(is_array($doms))
{
$ado = inst_GetADODBConnection();
require_once $pathtoroot.'kernel/include/tag-class.php';
if( !is_object($objTagList) ) $objTagList = new clsTagList();
foreach($doms as $p)
{
$filename = $pathtoroot.$p."/admin/install.php";
if(file_exists($filename))
{
include($filename);
}
}
}
$sql = "SELECT Name FROM ".GetTablePrefix()."Modules";
$rs = $ado->Execute($sql);
while($rs && !$rs->EOF)
{
$p = $rs->fields['Name'];
$mod_name = strtolower($p);
if ($mod_name == 'in-portal') {
$mod_name = '';
}
$dir_name = $pathtoroot.$mod_name."/admin/install/upgrades/";
$dir = @dir($dir_name);
$new_version = '';
$tmp1 = 0;
$tmp2 = 0;
while ($file = $dir->read()) {
if ($file != "." && $file != ".." && !is_dir($dir_name.$file))
{
$file = str_replace("inportal_upgrade_v", "", $file);
$file = str_replace(".sql", "", $file);
if ($file != '' && !strstr($file, 'changelog')) {
$tmp1 = str_replace(".", "", $file);
if ($tmp1 > $tmp2) {
$new_version = $file;
}
}
}
$tmp2 = $tmp1;
}
$version_nrs = explode(".", $new_version);
for ($i = 0; $i < $version_nrs[0] + 1; $i++) {
for ($j = 0; $j < $version_nrs[1] + 1; $j++) {
for ($k = 0; $k < $version_nrs[2] + 1; $k++) {
$try_version = "$i.$j.$k";
$filename = $pathtoroot.$mod_name."/admin/install/upgrades/inportal_upgrade_v$try_version.sql";
if(file_exists($filename))
{
RunSQLFile($ado, $filename);
- set_ini_value("Modules", $p, $try_version);
+ set_ini_value("Module Versions", $p, $try_version);
save_values();
}
}
}
}
$rs->MoveNext();
}
$state="lang_select";
}
if($state=="lang_select")
{
$Packs = GetLanguageList();
$include_file = $pathtoroot.$admin."/install/lang_select.php";
}
if($state=="modselect")
{
/* /admin/install.php */
$UrlLen = (strlen($admin) + 12)*-1;
$pathguess =substr($_SERVER["SCRIPT_NAME"],0,$UrlLen);
$sitepath = $pathguess;
$esc_path = str_replace("\\","/",$pathtoroot);
$esc_path = str_replace("/","\\",$esc_path);
//set_ini_value("Site","DomainName",$_SERVER["SERVER_NAME"]);
//$g_DomainName= $_SERVER["SERVER_NAME"];
save_values();
$ado = inst_GetADODBConnection();
if(substr($sitepath,0,1)!="/")
$sitepath="/".$sitepath;
if(substr($sitepath,-1)!="/")
$sitepath .= "/";
$sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '$sitepath' WHERE VariableName='Site_Path'";
$ado->Execute($sql);
$sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '$g_Domain' WHERE VariableName='Server_Name'";
$ado->Execute($sql);
$sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '".$_SERVER['DOCUMENT_ROOT'].$sitepath."admin/backupdata' WHERE VariableName='Backup_Path'";
$ado->Execute($sql);
$Modules = inst_GetModuleList();
$include_file = $pathtoroot.$admin."/install/modselect.php";
}
if(substr($state,0,10)=="postconfig")
{
$p = explode("_",$state);
$step = $p[1];
if ($_POST['Site_Path'] != '') {
$sql = "SELECT Name, Version FROM ".$g_TablePrefix."Modules";
$rs = $ado->Execute($sql);
$modules_str = '';
while ($rs && !$rs->EOF) {
$modules_str .= $rs->fields['Name'].' ('.$rs->fields['Version'].'),';
$rs->MoveNext();
}
$modules_str = substr($modules_str, 0, strlen($modules_str) - 1);
$rfile = @fopen(GET_LICENSE_URL."?url=".base64_encode($_SERVER['SERVER_NAME'].$_POST['Site_Path'])."&modules=".base64_encode($modules_str)."&license_code=".base64_encode($g_LicenseCode)."&version=".str_replace('.', '', GetMaxPortalVersion($pathtoroot.$admin))."&domain=".md5($_SERVER['SERVER_NAME']), "r");
if (!$rfile) {
//$get_license_error = "Unable to connect to the Intechnic server! Please try again later!";
//$state = "postconfig_1";
//$include_file = $pathtoroot.$admin."/install/postconfig.php";
}
else {
$rcontents = '';
while (!feof($rfile)) {
$line = fgets($rfile, 10000);
$rcontents .= $line;
}
@fclose($rfile);
}
}
if(strlen($_POST["oldstate"])>0)
{
$s = explode("_",$_POST["oldstate"]);
$oldstep = $s[1];
if($oldstep<count($configs))
{
$section = $configs[$oldstep];
$module = $mods[$oldstep];
$title = $titles[$oldstep];
$objAdmin = new clsConfigAdmin($module,$section,TRUE);
$objAdmin->SaveItems($_POST,TRUE);
}
}
$section = $configs[$step];
$module = $mods[$step];
$title = $titles[$step];
$step++;
if($step <= count($configs)+1)
{
$include_file = $pathtoroot.$admin."/install/postconfig.php";
}
else
$state = "theme_sel";
}
if($state=="theme_sel")
{
$objThemes->CreateMissingThemes();
$include_file = $pathtoroot.$admin."/install/theme_select.php";
}
if($state=="theme_set")
{
## get & define Non-Blocking & Blocking versions ##
$blocking_sockets = minimum_php_version("4.3.0")? 0 : 1;
$ado = inst_GetADODBConnection();
$sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '$blocking_sockets' WHERE VariableName='SocketBlockingMode'";
$ado->Execute($sql);
## get & define Non-Blocking & Blocking versions ##
$theme_id = $_POST["theme"];
$pathchar="/";
//$objThemes->SetPrimaryTheme($theme_id);
$t = $objThemes->GetItem($theme_id);
$t->Set("Enabled",1);
$t->Set("PrimaryTheme",1);
$t->Update();
$t->VerifyTemplates();
$include_file = $pathtoroot.$admin."/install/install_finish.php";
$state="finish";
}
if ($state == "adm_login") {
echo "<script>window.location='index.php';</script>";
}
switch($state)
{
case "modselect":
$title = "Select Modules";
$help = "<p>Select the In-Portal modules you wish to install. The modules listed to the right ";
$help .="are all modules included in this installation that are licensed to run on this server. </p>";
break;
case "reinstall":
$title = "Installation Maintenance";
$help = "<p>A Configuration file has been detected on your system and it appears In-Portal is correctly installed. ";
$help .="In order to work with the maintenance functions provided to the left you must provide the Intechnic ";
$help .="Username and Password you used when obtaining the license file residing on the server, or your admin Root password. ";
$help .=" <i>(Use Username 'root' if using your root password)</i></p>";
$help .= "<p>To removing your existing database and start with a fresh installation, select the first option ";
$help .= "provided. Note that this operation cannot be undone and no backups are made! Use at your own risk.</p>";
$help .="<p>If you wish to scrap your current installation and install to a new location, choose the second option. ";
$help .="If this option is selected you will be prompted for new database configuration information.</p>";
$help .="<p>The <i>Update License Information</i> option is used to update your In-Portal license data. Select this option if you have ";
$help .="modified your licensing status with Intechnic, or you have received new license data via email</p>";
break;
case "RootPass":
$title = "Set Admin Root Password";
$help = "<p>The Root Password is initially required to access the admin sections of In-Portal. ";
$help .="The root user cannot be used to access the front-end of the system, so it is recommended that you ";
$help .="create additional users with admin privlidges.</p>";
break;
case "finish":
$title = "Thank You!";
$help ="<P>Thanks for using In-Portal! Be sure to visit <A TARGET=\"_new\" HREF=\"http://www.in-portal.net\">www.in-portal.net</A> ";
$help.=" for the latest news, module releases and support. </p>";
break;
case "license":
$title = "License Configuration";
$help ="<p>A License is required to run In-Portal on a server connected to the Internet. You ";
$help.="can run In-Portal on localhost, non-routable IP addresses, or other computers on your LAN. ";
$help.="If Intechnic has provided you with a license file, upload it here. Otherwise select the first ";
$help.="option to allow Install to download your license for you.</p>";
$help.="<p>If a valid license has been detected on your server, you can choose the <i>Use Existing License</i> ";
$help.="and continue the installation process</p>";
break;
case "domain_select":
$title="Select Licensed Domain";
$help ="<p>Select the domain you wish to configure In-Portal for. The <i>Other</i> option ";
$help.=" can be used to configure In-Portal for use on a local domain.</p>";
$help.="<p>For local domains, enter the hostname or LAN IP Address of the machine running In-Portal.</p>";
break;
case "db_reconfig":
case "dbinfo":
$title="Database Configuration";
$help = "<p>In-Portal needs to connect to your Database Server. Please provide the database server type*, ";
$help .="host name (<i>normally \"localhost\"</i>), Database user name, and database Password. ";
$help .="These fields are required to connect to the database.</p><p>If you would like In-Portal ";
$help .="to use a table prefix, enter it in the field provided. This prefix can be any ";
$help .=" text which can be used in the names of tables on your system. The characters entered in this field ";
$help .=" are placed <i>before</i> the names of the tables used by In-Portal. For example, if you enter \"inp_\"";
$help .=" into the prefix field, the table named Category will be named inp_Category.</p>";
break;
case "lang_select":
$title="Language Pack Installation";
$help = "<p>Select the language packs you wish to install. Each language pack contains all the phrases ";
$help .="used by the In-Portal administration and the default template set. Note that at least one ";
$help .="pack <b>must</b> be installed.</p>";
break;
case "lang_default":
$title="Select Default Language";
$help = "<p>Select which language should be considered the \"default\" language. This is the language ";
$help .="used by In-Portal when a language has not been selected by the user. This selection is applicable ";
$help .="to both the administration and front-end.</p>";
break;
case "lang_install":
$title="Installing Language Packs";
$help = "<p>The language packs you have selected are being installed. You may install more languages at a ";
$help.="later time from the Regional admin section.</p>";
break;
case "postconfig_1":
$help = "<P>These options define the general operation of In-Portal. Items listed here are ";
$help .="required for In-Portal's operation.</p><p>When you have finished, click <i>save</i> to continue.</p>";
break;
case "postconfig_2":
$help = "<P>User Management configuration options determine how In-Portal manages your user base.</p>";
$help .="<p>The groups listed to the right are pre-defined by the installation process and may be changed ";
$help .="through the Groups section of admin.</p>";
break;
case "postconfig_3":
$help = "<P>The options listed here are used to control the category list display functions of In-Portal. </p>";
break;
case "theme_sel":
$title="Select Default Theme";
$help = "<P>This theme will be used whenever a front-end session is started. ";
$help .="If you intend to upload a new theme and use that as default, you can do so through the ";
$help .="admin at a later date. A default theme is required for session management.</p>";
break;
case "get_license":
$title="Download License from Intechnic";
$help ="<p>A License is required to run In-Portal on a server connected to the Internet. You ";
$help.="can run In-Portal on localhost, non-routable IP addresses, or other computers on your LAN.</p>";
$help.="<p>Here as you have selected download license from Intechnic you have to input your username and ";
$help.="password of your In-Business account in order to download all your available licenses.</p>";
break;
case "download_license":
$title="Download License from Intechnic";
$help ="<p>A License is required to run In-Portal on a server connected to the Internet. You ";
$help.="can run In-Portal on localhost, non-routable IP addresses, or other computers on your LAN.</p>";
$help.="<p>Please choose the license from the drop down for this site! </p> ";
break;
case "restore_select":
$title="Select Restore File";
$help = "<P>Select the restore file to use to reinstall In-Portal. If your backups are not performed ";
$help .= "in the default location, you can enter the location of the backup directory and click the ";
$help .="<i>Update</i> button.</p>";
case "restore_run":
$title= "Restore in Progress";
$help = "<P>Restoration of your system is in progress. When the restore has completed, the installation ";
$help .="will continue as normal. Hitting the <i>Cancel</i> button will restart the entire installation process. ";
break;
case "warning":
$title = "Restore in Progress";
$help = "<p>Please approve that you understand that you are restoring your In-Portal data base from other version of In-Portal.</p>";
break;
case "update":
$title = "Update In-Portal";
$help = "<p>Select modules from the list, you need to update to the last downloaded version of In-Portal</p>";
break;
}
if ($_POST['next_step']) {
$tmp_step = $_POST['next_step'];
}
else if ($_GET['next_step']) {
$tmp_step = $_GET['next_step'];
}
if (!$tmp_step) {
$tmp_step = 1;
}
if ($got_license == 1) {
$tmp_step++;
}
$next_step = $tmp_step + 1;
if ($general_error != '') {
$state = '';
$title = '';
$help = '';
$general_error = $general_error.'<br /><br />Installation cannot continue!';
}
if ($include_file == '' && $general_error == '' && $state == '') {
$state = '';
$title = '';
$help = '';
$filename = $pathtoroot.$admin."/install/inportal_remove.sql";
RunSQLFile($ado,$filename);
$general_error = 'Unexpected installation error! <br /><br />Installation has been stopped!';
}
if ($restore_error != '') {
$next_step = 3;
$tmp_step = 2;
}
if ($PassError != '') {
$tmp_step = 4;
$next_step = 5;
}
if ($DomainError != '') {
$tmp_step--;
$next_step = $tmp_step + 1;
}
if ($db_error != '') {
$tmp_step--;
$next_step = $tmp_step + 1;
}
if ($state == "warning") {
$tmp_step--;
$next_step = $tmp_step + 1;
}
?>
<tr height="100%">
<td valign="top">
<table cellpadding=10 cellspacing=0 border=0 width="100%" height="100%">
<tr valign="top">
<td style="width: 200px; background: #009ff0 url(images/bg_install_menu.gif) no-repeat bottom right; border-right: 1px solid #000">
<img src="images/spacer.gif" width="180" height="1" border="0" alt=""><br>
<span class="admintitle-white">Installation</span>
<!--<ol class="install">
<li class="current">Licence Verification
<li>Configuration
<li>File Permissions
<li>Security
<li>Integrity Check
</ol>
</td>-->
<?php if ($general_error == '') { ?>
<?php if ($install_type == 1) { ?>
<ol class="install">
<li <?php if ($tmp_step == 1) { ?>class="current"<?php } ?>>Database Configuration
<li <?php if ($tmp_step == 2 || $_POST['lic_opt'] == 1) { ?>class="current"<?php } ?>>Select License
<li <?php if ($tmp_step == 3 && $_POST['lic_opt'] != 1) { ?>class="current"<?php } ?>>Select Domain
<li <?php if ($tmp_step == 4 ) { ?>class="current"<?php } ?>>Set Root Password
<li <?php if ($tmp_step == 5) { ?>class="current"<?php } ?>>Select Modules to Install
<li <?php if ($tmp_step == 6) { ?>class="current"<?php } ?>>Install Language Packs
<li <?php if ($tmp_step == 7) { ?>class="current"<?php } ?>>Post-Install Configuration
<li <?php if ($tmp_step == 8) { ?>class="current"<?php } ?>>Finish
</ol>
<?php } else if ($install_type == 2) { ?>
<ol class="install">
<li <?php if ($tmp_step == 1 || $login_error != '' || $inst_error != '') { ?>class="current"<?php } ?>>License Verification
<!--<li <?php if (($tmp_step == 2 && $login_error == '' && $inst_error == '') || $_POST['lic_opt'] == 1) { ?>class="current"<?php } ?>>Select License
<li <?php if ($tmp_step == 3 && $_POST['lic_opt'] != 1) { ?>class="current"<?php } ?>>Select Domain
<li <?php if ($tmp_step == 4) { ?>class="current"<?php } ?>>Set Root Password
<li <?php if ($tmp_step == 5) { ?>class="current"<?php } ?>>Select Modules to Install
<li <?php if ($tmp_step == 6) { ?>class="current"<?php } ?>>Install Language Packs
<li <?php if ($tmp_step == 7) { ?>class="current"<?php } ?>>Post-Install Configuration
<li <?php if ($tmp_step == 8) { ?>class="current"<?php } ?>>Finish-->
</ol>
<?php } else if ($install_type == 3) { ?>
<ol class="install">
<li>License Verification
<li <?php if ($tmp_step == 2) { ?>class="current"<?php } ?>>Database Configuration
<li <?php if ($tmp_step == 3 || $_POST['lic_opt'] == 1) { ?>class="current"<?php } ?>>Select License
<li <?php if ($tmp_step == 4 && $_POST['lic_opt'] != 1) { ?>class="current"<?php } ?>>Select Domain
<li <?php if ($tmp_step == 5) { ?>class="current"<?php } ?>>Set Root Password
<li <?php if ($tmp_step == 6) { ?>class="current"<?php } ?>>Select Modules to Install
<li <?php if ($tmp_step == 7) { ?>class="current"<?php } ?>>Install Language Packs
<li <?php if ($tmp_step == 8) { ?>class="current"<?php } ?>>Post-Install Configuration
<li <?php if ($tmp_step == 9) { ?>class="current"<?php } ?>>Finish
</ol>
<?php } else if ($install_type == 4) { ?>
<ol class="install">
<li <?php if ($tmp_step == 1 || $login_error != '' || $inst_error != '') { ?>class="current"<?php } ?>>License Verification
<li <?php if (($tmp_step == 2 && $login_error == '' && $inst_error == '') || $_POST['lic_opt'] == 1) { ?>class="current"<?php } ?>>Select License
<li <?php if ($tmp_step == 3 && $_POST['lic_opt'] != 1) { ?>class="current"<?php } ?>>Select Domain
<li <?php if ($tmp_step == 4) { ?>class="current"<?php } ?>>Set Root Password
<li <?php if ($tmp_step == 5) { ?>class="current"<?php } ?>>Select Modules to Install
<li <?php if ($tmp_step == 6) { ?>class="current"<?php } ?>>Install Language Packs
<li <?php if ($tmp_step == 7) { ?>class="current"<?php } ?>>Post-Install Configuration
<li <?php if ($tmp_step == 8) { ?>class="current"<?php } ?>>Finish
</ol>
<?php } else if ($install_type == 5) { ?>
<ol class="install">
<li <?php if ($tmp_step == 1 || $login_error != '' || $inst_error != '') { ?>class="current"<?php } ?>>License Verification
<li <?php if (($tmp_step == 2 && $login_error == '' && $inst_error == '') || $_POST['lic_opt'] == 1) { ?>class="current"<?php } ?>>Select License
<li <?php if ($tmp_step == 3 && $_POST['lic_opt'] != 1) { ?>class="current"<?php } ?>>Select Domain
<li <?php if ($tmp_step == 4) { ?>class="current"<?php } ?>>Finish
</ol>
<?php } else if ($install_type == 6) { ?>
<ol class="install">
<li <?php if ($tmp_step == 1 || $login_error != '' || $inst_error != '') { ?>class="current"<?php } ?>>License Verification
<li <?php if (($tmp_step == 2 && $login_error == '' && $inst_error == '') || $_GET['show_prev'] == 1 || $_POST['backupdir']) { ?>class="current"<?php } ?>>Select Backup File
<li <?php if ($tmp_step == 3 && $_POST['lic_opt'] != 1 && $_GET['show_prev'] != 1 && !$_POST['backupdir']) { ?>class="current"<?php } ?>>Finish
</ol>
<?php } else if ($install_type == 7) { ?>
<ol class="install">
<li <?php if ($tmp_step == 1 || $login_error != '' || $inst_error != '') { ?>class="current"<?php } ?>>License Verification
<li <?php if ($tmp_step == 2 && $login_error == '' && $inst_error == '') { ?>class="current"<?php } ?>>Database Configuration
<li <?php if ($tmp_step == 3) { ?>class="current"<?php } ?>>Finish
</ol>
<?php } else if ($install_type == 8) { ?>
<ol class="install">
<li <?php if ($tmp_step == 1 || $login_error != '' || $inst_error != '') { ?>class="current"<?php } ?>>License Verification
<li <?php if ($tmp_step == 2 && $login_error == '' && $inst_error == '') { ?>class="current"<?php } ?>>Select Modules to Upgrade
<li <?php if ($tmp_step == 3) { ?>class="current"<?php } ?>>Language Pack Upgrade
<li <?php if ($tmp_step == 4) { ?>class="current"<?php } ?>>Finish
</ol>
<?php } ?>
<?php include($include_file); ?>
<?php } else { ?>
<?php include("install/general_error.php"); ?>
<?php } ?>
<td width="40%" style="border-left: 1px solid #000; background: #f0f0f0">
<table width="100%" border="0" cellspacing="0" cellpadding="4">
<tr>
<td class="subsectiontitle" style="border-bottom: 1px solid #000000; background-color:#999"><?php echo $title;?></td>
</tr>
<tr>
<td class="text"><?php echo $help;?></td>
</tr>
</table>
</td>
</tr>
</table>
<br>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="footer">
Powered by In-portal &copy; 1997-2004, Intechnic Corporation. All rights reserved.
<br><img src="images/spacer.gif" width="1" height="10" alt="">
</td>
</tr>
</table>
</form>
</body>
</html>
\ No newline at end of file
Property changes on: trunk/admin/install.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.23
\ No newline at end of property
+1.24
\ No newline at end of property
Index: trunk/admin/listview/listview.php
===================================================================
--- trunk/admin/listview/listview.php (revision 136)
+++ trunk/admin/listview/listview.php (revision 137)
@@ -1,473 +1,473 @@
<?php
require($pathtoroot.$admin."/listview/columnheader.php");
require($pathtoroot.$admin."/listview/viewmenu.php");
class clsListView
{
var $Formatters = Array(); // formatters to apply while printing list
var $ColumnHeaders;
var $ToolBar;
var $ListItems;
var $PageLinkTemplate;
var $PerPageVar;
var $CurrentPageVar;
var $CurrentPage;
var $TotalItemCount;
var $SortField;
var $SortOrder;
var $IdField;
var $PrintToolBar=TRUE;
var $ShowColumnHeaders=TRUE;
var $checkboxes=TRUE;
var $SelectorType;
var $CheckboxName;
var $CheckArray;
var $RowIcons;
var $SearchBar=FALSE;
var $SearchKeywords;
var $SearchAction;
var $SearchDropdownId="";
var $PageLinks;
var $extra_env;
var $PriorityField;
var $PageURL;
var $ViewMenu;
var $JSCheckboxName;
function clsListView($ToolBar=NULL,$ListItems=NULL)
{
$this->SetToolBar($ToolBar);
$this->SetListItems($ListItems);
$this->ColumnHeaders = new clsColumnHeaderList();
$this->CurrentPage=1;
$this->CheckboxName = "itemlist[]";
$this->SelectorType="checkbox";
$this->RowIcons = array();
$this->PageLinks = "";
$this->SearchAction = "";
$this->extra_env="";
$this->PriorityField="Priority";
$this->TotalItemCount = 0;
if (!is_null($ToolBar))
$this->JSCheckboxName = $ToolBar->Get("CheckClass");
$this->SetFormatters(); // for setting custom formatters
}
function SetToolbar($ToolBar)
{
$this->ToolBar=$ToolBar;
if(is_object($this->ToolBar))
$this->CheckArray=$this->ToolBar->Get("CheckClass");
}
function GetPage()
{
// get current page
$this->RefreshPageVar();
return $this->CurrentPage;
}
function GetLimitSQL()
{
return GetLimitSQL($this->GetPage(), $this->GetPerPage() );
}
function SetListItems($ListItems)
{
$this->ListItems = $ListItems;
}
function SetIDfield($field)
{
$this->IdField = $field;
}
function SetSort($SortField,$SortOrderVariable)
{
$this->ColumnHeaders->SetSort($SortField,$SortOrder);
}
function SetRowIcon($index,$url)
{
$this->RowIcons[$index] = $url;
}
function ConfigureViewMenu($SortFieldVar,$SortOrderVar,$DefaultSort,$FilterVar,$FilterValue,$FilterMax)
{
global $objConfig;
//$FilterVal = $this->CurrentFilter;
//$fMax = $this->Filtermax;
//$sOrder = $this->CurrentSortOrder;
//$sOrderVar = $this->OrderVar;
//$sField = $this->CurrentSortField;
//$sDefault = $this->DefaultSortField;
$this->ViewMenu = new clsViewMenu();
$this->ViewMenu->PerPageVar = $this->PerPageVar;
$this->ViewMenu->PerPageValue = (int)$objConfig->Get($this->PerPageVar);
if($this->ViewMenu->PerPageValue==0)
$this->ViewMenu->PerPageValue = 20;
$this->ViewMenu->CurrentSortField = $objConfig->Get($SortFieldVar);
$this->ViewMenu->CurrentSortOrder = $objConfig->get($SortOrderVar);
$this->ViewMenu->SortVar = $SortFieldVar;
$this->ViewMenu->OrderVar = $SortOrderVar;
$this->ViewMenu->CurrentFilter= $FilterValue;
$this->ViewMenu->FilterVar = $FilterVar;
$this->ViewMenu->FilterMax = $FilterMax;
foreach($this->ColumnHeaders->Columns as $col)
{
$this->ViewMenu->AddSortField($col->field,$col->label,$DefaultSort==$col->field);
}
}
function AddViewMenuFilter($Label,$Bit)
{
if(is_object($this->ViewMenu))
$this->ViewMenu->AddFilterField($Label,$Bit);
}
function GetViewMenu($imagesURL)
{
if(is_object($this->ViewMenu))
{
$this->ViewMenu->CheckboxName = $this->JSCheckboxName;
return $this->ViewMenu->GetViewMenuJS($imagesURL);
}
else
return "";
}
function SetFormatters()
{
// for setting custom formatters
// abstract
}
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 PrintItem($index)
{
if( !isset($this->ListItems->Items[$index]) ) return '';
$li = $this->ListItems->Items[$index];
$o = "";
$first=1;
if(is_object($li))
{
// ==== new by Alex: begin ====
$li->Formatters =& $this->Formatters;
// ==== new by Alex: end ====
$id_field = $this->IdField;
$row_id = $li->Get($id_field);
if(is_numeric($li->Get($this->PriorityField)))
{
$Priority = (int)$li->Get($this->PriorityField);
}
else
$Priority=0;
$o = "<TR ".int_table_color_ret()." ID=\"$row_id\">\n";
foreach($this->ColumnHeaders->Columns as $col)
{
$width="";
$ColId = $row_id."_col_".$col->field;
if($first==1)
{
if(strlen($col->width))
{
$width = $col->width;
}
$o .= "<TD $width valign=\"top\" class=\"text\">";
if($this->checkboxes)
{
$onclick = "onclick=\"if (this.checked) {".$this->CheckArray.".addCheck('$row_id');} else {".$this->CheckArray.".removeCheck('$row_id');}\"";
$onclicksrc = "onclicksrc=\"if (this.checked) {".$this->CheckArray.".addCheck('$row_id');} else {".$this->CheckArray.".removeCheck('$row_id');}\"";
$o .= "<input rowId='".$row_id."' checkArrayName='".$this->CheckArray."' isSelector=\"true\" type=\"".$this->SelectorType."\" name=\"".$this->CheckboxName."\" value=\"$row_id\" $onclick $onclicksrc>";
}
if(isset($this->RowIcons[$index]))
{
$url = $this->RowIcons[$index];
if(strlen($url))
$o .= "<img src=\"".$url."\"> ";
}
$first=0;
}
else
{
if(strlen($col->width))
{
$o .= "<TD ".$col->width.">";
}
else
$o .= "<TD>";
}
if($Priority!=0)
{
$o .= "<span class=\"priority\"><sup>$Priority</sup></span>";
$Priority=0;
}
$o .= "<SPAN ID=\"$ColId\">".stripslashes($li->GetFormatted($col->field))."</SPAN></TD>\n";
}
$o .= "</TR>\n";
}
return $o;
}
function PrintItems()
{
$o = '';
$numitems = $this->ListItems->NumItems();
for($index=0;$index<=$numitems;$index++)
{
$o .= $this->PrintItem($index);
}
return $o;
}
function TotalPageNumbers()
{
if($this->PerPage>0)
{
$ret = $this->ListItems->NumItems() / $this->PerPage;
$ret = (int)$ret;
}
else
$ret = 1;
return $ret;
}
function GetPerPage()
{
global $objConfig;
$PerPage = $objConfig->Get($this->PerPageVar);
if($PerPage < 1)
{
if( defined('DEBUG_MODE') ) echo 'PerPage Variable [<b>'.$this->PerPageVar.'</b>] not defined in Config<br>';
$PerPage = 20;
//$objConfig->Set($this->PerPageVar,20);
//$objConfig->Save();
}
return $PerPage;
}
function GetAdminPageLinkList($url)
{
global $objConfig;
$PerPage = $this->GetPerPage();
if($this->TotalItemCount>0)
{
$NumPages = ceil($this->TotalItemCount / $PerPage);
}
else
$NumPages = ceil($this->ListItems->NumItems() / $PerPage);
if($NumPages<1)
$NumPages =1;
//echo $this->CurrentPage." of ".$NumPages." Pages";
$o = "";
if($this->CurrentPage>$NumPages)
$this->CurrentPage=$NumPages;
$StartPage = $this->CurrentPage - 5;
if($StartPage<1)
$StartPage=1;
$EndPage = $StartPage+9;
if($EndPage>$NumPages)
{
$EndPage = $NumPages;
$StartPage = $EndPage-10;
if($StartPage<1)
$StartPage=1;
}
$o .= "<b class=\"text\">".admin_language("la_Page")."</b> ";
if($StartPage>1)
{
$target = $this->CurrentPage-10;
$prev_url = str_replace("{TargetPage}",$target,$url);
$o .= "<A HREF=\"$prev_url\" class=\"NAV_URL\"><<</A>";
}
for($p=$StartPage;$p<=$EndPage;$p++)
{
- if($p!=$this->CurrentPage)
+ if($p!=$this->CurrentPage)
{
$href = str_replace("{TargetPage}",$p,$url);
$o .= " <A HREF=\"$href\" class=\"NAV_URL\">$p</A> ";
}
else
{
$o .= " <SPAN class=\"CURRENT_PAGE\">$p</SPAN> ";
}
}
if($EndPage<$NumPages-1)
{
$target = $this->CurrentPage+10;
$next_url = str_replace("{TargetPage}",$target,$url);
$o .= "<A HREF=\"$next_url\" class=\"NAV_URL\"> &gt;&gt;</A>";
}
return $o;
}
function SliceItems()
{
global $objConfig;
$PerPage = (int)$objConfig->Get($this->PerPageVar);
if($PerPage<1)
$PerPage=20;
$NumPages = ceil($this->ListItems->NumItems() / $PerPage);
if($NumPages>1)
{
$Start = ($this->CurrentPage-1)*$PerPage;
$this->ListItems->Items = array_slice($this->ListItems->Items,$Start,$PerPage);
}
}
function RefreshPageVar()
{
global $objSession;
if( (int)GetVar('lpn') > 0)
{
$this->CurrentPage = $_GET["lpn"];
$objSession->SetVariable($this->CurrentPageVar,$this->CurrentPage);
}
else
$this->CurrentPage = $objSession->GetVariable($this->CurrentPageVar);
$this->ListItems->Page = $this->CurrentPage;
}
function PrintPageLinks()
{
global $imagesURL, $objSession, $lvErrorString;
if(strlen($this->PageLinks)>0)
{
return $this->PageLinks;
}
$this->RefreshPageVar();
if($this->CurrentPage<1)
$this->CurrentPage = 1;
if(!strlen($this->PageURL))
{
$this->PageURL = $_SERVER["PHP_SELF"]."?env=".BuildEnv();
if(strlen($this->extra_env))
$this->PageURL .= "&".$this->extra_env;
$this->PageURL .= "&lpn={TargetPage}";
}
$cols = $this->ColumnHeaders->Count();
$o = "<TABLE cellSpacing=0 cellPadding=2 width=\"100%\" class=\"pagenav\"><tbody><TR >\n";
if(strlen($lvErrorString))
{
$o .= "<TD STYLE=\"border-bottom: 1px solid #000000;\" colspan=2><span class=\"validation_error\">$lvErrorString</SPAN></TD></TR><TR>";
}
if($this->SearchBar==FALSE)
{
$o .= "<TD colspan=2>";
$o .= $this->GetAdminPageLinkList($this->PageURL);
$o .= "</TD>\n";
}
else
{
$val = str_replace(","," ", $this->SearchKeywords);
$o .= "<TD>";
$o .= $this->GetAdminPageLinkList($this->PageURL)."</TD>";
$o .= "<TD align=\"right\" valign=\"top\">".admin_language("la_prompt_Search");
$o .= " <INPUT TYPE=\"TEXT\" ID=\"ListSearchWord\" NAME=\"ListSearchWord\" VALUE=\"$val\">";
$o .= " <IMG align=\"middle\" height=24 width=24 name=\"imgSearch\" ID=\"imgSearch\" src=\"$imagesURL/itemicons/icon16_search.gif\" ";
$o .= " onMouseOut=\"swap('imgSearch', '$imagesURL/itemicons/icon16_search.gif');\" ";
$o .= " onMouseOver=\"swap('imgSearch','$imagesURL/itemicons/icon16_search_f2.gif');\" ";
$o .= " onClick=\"Submit_ListSearch('".$this->SearchAction."');\">";
$o .= " <IMG align=\"middle\" height=24 width=24 name=\"imgResetSearch\" ID=\"imgResetSearch\" src=\"$imagesURL/itemicons/icon16_search_reset.gif\" ";
$o .= " onMouseOut=\"swap('imgResetSearch', '$imagesURL/itemicons/icon16_search_reset.gif');\" ";
$o .= " onMouseOver=\"swap('imgResetSearch','$imagesURL/itemicons/icon16_search_reset_f2.gif');\" ";
$o .= " onClick=\"Submit_ListSearch('".$this->SearchAction."_reset');\">";
if(strlen($this->SearchDropdownId)>0)
{
$o .= " <IMG height=16 width=16 name=\"imgSearchDropDown\" src=\"$imagesURL/itemicons/icon16_search_dropdown.gif\" ";
$o .= " onMouseOut=\"swap('imgResetDropDown', '$imagesURL/itemicons/icon16_search_dropdown.gif');\" ";
$o .= " onMouseOver=\"swap('imgResetDropDown','$imagesURL/itemicons/icon16_search_dropdown.gif');\" ";
$o .= " onClick=\"ListSearch_PopUp('".$this->SearchDropdownId."');\">";
}
$o .= "</TD>";
}
$o .= "</TR></TABLE>";
return $o;
}
function PrintJavaScriptInit()
{
$o = '';
if($this->checkboxes)
{
$o = "<script language=\"javascript\">\n";
$o .="<!--\n";
foreach($this->ListItems->Items as $li)
{
$o .= $this->CheckArray.".CheckList[".$this->CheckArray.".CheckList.length] = '".$li->Get($this->IdField)."';\n";
}
$o .= $this->CheckArray.".setImages();\n";
$o .="//-->\n";
$o .="</script>";
}
return $o;
}
function PrintList()
{
global $objSession;
if((int)$this->CurrentPage<1)
$this->CurrentPage=1;
$o = "\n";
if(is_object($this->ToolBar))
{
if($this->PrintToolBar)
$o .= $this->ToolBar->Build();
}
$o .= $this->PrintPageLinks();
$o .= "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"4\" class=\"tableborder\">\n";
if($this->ShowColumnHeaders)
{
$o .= $this->ColumnHeaders->PrintColumns();
}
if($this->ListItems->NumItems()>0)
{
$o .= $this->PrintItems();
}
$o .= "</TABLE>";
if($this->ListItems->NumItems()>0)
$o .= $this->PrintJavaScriptInit();
return $o;
}
}
Property changes on: trunk/admin/listview/listview.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.2
\ No newline at end of property
+1.3
\ No newline at end of property
Index: trunk/admin/install/install_lib.php
===================================================================
--- trunk/admin/install/install_lib.php (revision 136)
+++ trunk/admin/install/install_lib.php (revision 137)
@@ -1,652 +1,652 @@
<?php
function minimum_php_version( $vercheck )
{
$minver = explode(".", $vercheck);
$curver = explode(".", phpversion());
if (($curver[0] < $minver[0])
|| (($curver[0] == $minver[0])
&& ($curver[1] < $minver[1]))
|| (($curver[0] == $minver[0]) && ($curver[1] == $minver[1])
&& ($curver[2][0] < $minver[2][0])))
return false;
else
return true;
}
function GetMaxPortalVersion($admindirname)
{
$dir = @dir($admindirname.'/install/upgrades');
$version = '';
while ($file = $dir->read()) {
if ($file != "." && $file != ".." && !is_dir($dir_name.$file))
{
$file = str_replace("inportal_upgrade_v", "", $file);
$file = str_replace(".sql", "", $file);
if ($file != '' && !strstr($file, 'changelog')) {
if (str_replace('.', '', $file) > str_replace('.', '', $version)) {
$version = $file;
}
}
}
}
return $version;
}
function TableExists($ado, $tables)
{
global $g_TablePrefix;
$t = explode(",",$tables);
$i = $ado->MetaTables();
for($x=0;$x<count($i);$x++)
$i[$x] = strtolower($i[$x]);
$AllFound = TRUE;
for($tIndex=0;$tIndex<count($t);$tIndex++)
{
$table = $g_TablePrefix.$t[$tIndex];
$table = strtolower($table);
if(!in_array($table,$i))
{
$AllFound = FALSE;
}
}
return $AllFound;
}
function set_ini_value($section, $key, $newvalue)
{
global $ini_vars;
$ini_vars[$section][$key] = $newvalue;
}
function save_values()
{
// Should write something to somwere, but it doesn't :(
global $ini_file,$ini_vars;
//if( file_exists($ini_file) )
//{
$fp = fopen($ini_file, "w");
foreach($ini_vars as $secname => $section)
{
fwrite($fp,"[".$secname."]\n");
foreach($section as $key => $value) fwrite($fp,"$key = \"$value\"\n");
fwrite($fp,"\n");
}
fclose($fp);
//}
}
function RunSchemaFile($ado,$filename)
{
if(file_exists($filename))
{
$fp = fopen($filename, "r");//open file
$sql = fread($fp, filesize($filename));
fclose($fp);
if(strlen($sql))
RunSchemaText($ado,$sql);
}
}
function RunSchemaText($ado,$sql)
{
global $g_TablePrefix;
if(strlen($g_TablePrefix))
{
$what = "CREATE TABLE ";
$replace = "CREATE TABLE ".$g_TablePrefix;
$sql = ereg_replace($what, $replace, $sql);
$what = "DROP TABLE ";
$replace = "DROP TABLE ".$g_TablePrefix;
$sql = ereg_replace($what, $replace, $sql);
$what = "INSERT INTO ";
$replace = "INSERT INTO ".$g_TablePrefix;
$sql = ereg_replace($what, $replace, $sql);
$what = "UPDATE ";
$replace = "UPDATE ".$g_TablePrefix;
$sql = ereg_replace($what, $replace, $sql);
$what = "ALTER TABLE ";
$replace = "ALTER TABLE ".$g_TablePrefix;
$sql = ereg_replace($what, $replace, $sql);
}
$commands = explode("# --------------------------------------------------------",$sql);
if(count($commands)>0)
{
for($i=0;$i<count($commands);$i++)
{
$cmd = $commands[$i];
$cmd = trim($cmd);
if(strlen($cmd)>0)
{
$ado->Execute($cmd);
if($ado->ErrorNo()!=0)
{
$db_error = $ado->ErrorMsg()." COMMAND:<PRE>$cmd</PRE>";
//echo "<br><p class=\"error\">$db_error</p>";
//break;
}
}
}
}
}
function RunSQLText($ado,$allsql)
{
global $g_TablePrefix;
$line = 0;
while($line<count($allsql))
{
$sql = $allsql[$line];
if(strlen(trim($sql))>0 && substr($sql,0,1)!="#")
{
if(strlen($g_TablePrefix))
{
$what = "CREATE TABLE ";
$replace = "CREATE TABLE ".$g_TablePrefix;
$sql = ereg_replace($what, $replace, $sql);
$what = "DROP TABLE ";
$replace = "DROP TABLE ".$g_TablePrefix;
$sql = ereg_replace($what, $replace, $sql);
$what = "INSERT INTO ";
$replace = "INSERT INTO ".$g_TablePrefix;
$sql = ereg_replace($what, $replace, $sql);
$what = "UPDATE ";
$replace = "UPDATE ".$g_TablePrefix;
$sql = ereg_replace($what, $replace, $sql);
$what = "ALTER TABLE ";
$replace = "ALTER TABLE ".$g_TablePrefix;
$sql = ereg_replace($what, $replace, $sql);
}
$sql = trim($sql);
if(strlen($sql)>0)
{
$ado->Execute($sql);
if($ado->ErrorNo()!=0)
{
$db_error = $ado->ErrorMsg()." COMMAND:<PRE>$sql</PRE>";
//echo "<br><p class=\"error\">$db_error</p>";
$error = TRUE;
}
}
}
$line++;
}
}
function RunSQLFile($ado,$filename)
{
if(file_exists($filename))
{
$allsql = file($filename);
RunSQLText($ado,$allsql);
}
}
function RunRestoreFile($ado,$filename,$FileOffset,$MaxLines)
{
$size = filesize($filename);
if($FileOffset > $size)
return -2;
$fp = fopen($filename,"r");
if(!$fp)
return -1;
if($FileOffset>0)
{
fseek($fp,$FileOffset);
}
else
{
$EndOfSQL = FALSE;
$sql = "";
while(!feof($fp) && !$EndOfSQL)
{
$l = fgets($fp,16384);
if(substr($l,0,11)=="INSERT INTO")
{
$EndOfSQL = TRUE;
}
else
{
$sql .= $l;
$FileOffset = ftell($fp) - strlen($l);
}
}
if(strlen($sql))
{
RunSchemaText($ado,$sql);
}
fseek($fp,$FileOffset);
}
$LinesRead = 0;
$sql = "";
$AllSql = array();
while($LinesRead < $MaxLines && !feof($fp))
{
$sql = fgets($fp, 16384);
if(strlen($sql))
{
$AllSql[] = $sql;
$LinesRead++;
}
}
if(!feof($fp))
{
$FileOffset = ftell($fp);
}
else
{
$FileOffset = $TotalSize;
}
fclose($fp);
if(count($AllSql)>0)
RunSQLText($ado,$AllSql);
return (int)$FileOffset;
}
function inst_keyED($txt,$encrypt_key)
{
$encrypt_key = md5($encrypt_key);
$ctr=0;
$tmp = "";
for ($i=0;$i<strlen($txt);$i++)
{
if ($ctr==strlen($encrypt_key)) $ctr=0;
$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
$ctr++;
}
return $tmp;
}
function inst_decrypt($txt,$key)
{
$txt = inst_keyED($txt,$key);
$tmp = "";
for ($i=0;$i<strlen($txt);$i++)
{
$md5 = substr($txt,$i,1);
$i++;
$tmp.= (substr($txt,$i,1) ^ $md5);
}
return $tmp;
}
function inst_LoadFromRemote()
{
return "";
}
function mod_DLid()
{
global $DownloadId;
echo $DownloadId."\n";
die();
}
function inst_LoadLicense($LoadRemote=FALSE,$file="")
{
global $path,$admin;
$data = Array();
if(!strlen($file))
{
$f = $path.$admin."/include/inportal.dat";
}
else
$f = $file;
if(file_exists($f))
{
$contents = file($f);
$data[0] = base64_decode($contents[1]);
$data[1] = $contents[2];
}
else
if($LoadRemote)
return $LoadFromRemote;
return $data;
}
function inst_SaveLicense($data)
{
}
function inst_VerifyKey($domain,$k)
{
$key = md5($domain);
$lkey = substr($key,0,strlen($key)/2);
$rkey = substr($key,strlen($key)/2);
$r = $rkey.$lkey;
if($k==$r)
return TRUE;
return FALSE;
}
function inst_ParseLicense($txt)
{
global $i_User, $i_Pswd, $i_Keys;
$data = inst_decrypt($txt,"beagle");
$i_Keys = array();
$lines = explode("\n",$data);
for($x=0;$x<count($lines);$x++)
{
$l = $lines[$x];
$p = explode("=",$l,2);
switch($p[0])
{
case "Username":
$i_User = $p[1];
break;
case "UserPass":
$i_Pswd = $p[1];
break;
default:
if(substr($p[0],0,3)=="key")
{
$parts = explode("|",$p[1]);
if(inst_VerifyKey($parts[0],$parts[1]))
{
unset($K);
$k["domain"]=$parts[0];
$k["key"]=$parts[1];
$k["desc"]=$parts[2];
$k["mod"]=$parts[3];
$i_Keys[] = $k;
}
}
break;
}
}
}
function inst_IsLocalSite($domain)
{
$localb = FALSE;
if(substr($domain,0,3)=="172")
{
$b = substr($domain,0,6);
$p = explode(".",$domain);
$subnet = $p[1];
if($p[1]>15 && $p[1]<32)
$localb=TRUE;
}
$localname = (strpos($domain,".")==0);
if($domain=="localhost" || $domain=="127.0.0.1" || substr($domain,0,7)=="192.168" ||
substr($domain,0,3)=="10." || $localb || $localname)
{
return TRUE;
}
return FALSE;
}
function inst_ModuleLicensed($name)
{
global $i_Keys, $objConfig, $g_License, $g_Domain;
//$lic = LoadLicense();
$lic = base64_decode($g_License);
inst_ParseLicense($lic);
// echo "Checking $g_Domain..<br>\n";
// echo "<PRE>";print_r($i_Keys); echo "</PRE><br>";
$modules = array();
if(!inst_IsLocalSite($g_Domain))
{
for($x=0;$x<count($i_Keys);$x++)
{
$key = $i_Keys[$x];
if($key["domain"]==$g_Domain)
{
$modules = explode(",",strtolower($key["mod"]));
}
}
if(in_array($name,$modules))
{
// echo "Module $name is licensed<br>\n";
return TRUE;
}
else
{
// echo "Module $name is not licensed<br>\n";
return FALSE;
}
}
else
return TRUE;
return FALSE;
}
function inst_parse_portal_ini($file, $parse_section = false) {
if(!file_exists($file) && !is_readable($file))
die('Could Not Open Ini File');
$contents = file($file);
$retval = array();
$section = '';
foreach($contents as $line) {
$line = trim($line);
$line = eregi_replace(';[.]*','',$line);
if(strlen($line) > 0) {
//echo $line . " - ";
- if(eregi('^[[a-z]+]$',$line)) {
+ if(eregi('^[[a-z]+]$',str_replace(' ', '', $line))) {
//echo 'section';
$section = substr($line,1,(strlen($line)-2));
if ($parse_section) {
$retval[$section] = array();
}
continue;
} elseif(eregi('=',$line)) {
//echo 'main element';
list($key,$val) = explode(' = ',$line);
if (!$parse_section) {
$retval[trim($key)] = str_replace('"', '', $val);
}
else {
$retval[$section][trim($key)] = str_replace('"', '', $val);
}
} //end if
//echo '<br />';
} //end if
} //end foreach
return $retval;
}
function inst_GetModuleList()
{
global $rootpath,$pathchar,$admin, $pathtoroot;
$path = $pathtoroot;
$new = array();
if ($dir = @opendir($path))
{
while (($file = readdir($dir)) !== false)
{
if($file !="." && $file !=".." && substr($file,0,1)!="_")
{
if(is_dir($path."/".$file))
{
$inst_file = $path.$file."/admin/install.php";
if(file_exists($inst_file))
{
// if(inst_ModuleLicensed($file))
// {
$new[$file] = $inst_file;
// }
}
}
}
}
closedir($dir);
}
return array_keys($new);
}
function GetDirList ($dirName)
{
$filedates = array();
$d = dir($dirName);
while($entry = $d->read())
{
if ($entry != "." && $entry != "..")
{
if (!is_dir($dirName."/".$entry))
{
$filedate[]=$entry;
}
}
}
$d->close();
return $filedate;
}
function GetLanguageList()
{
global $pathtoroot, $admin;
$packs = array();
$dir = $pathtoroot.$admin."/install/langpacks";
$files = GetDirList($dir);
if(is_array($files))
{
foreach($files as $f)
{
$p = pathinfo($f);
if($p["extension"]=="lang")
{
$packs[] = $f;
}
}
}
return $packs;
}
function section_header($title, $return_result = false)
{
$ret = '<table border="0" cellpadding="2" cellspacing="0" class="tableborder_full" width="100%" height="30">'.
'<tr><td class="tablenav" width="580" nowrap background="images/tabnav_left.jpg"><span class="tablenav_link">&nbsp;'.$title.'</span>'.
'</td><td align="right" class="tablenav" background="images/tabnav_back.jpg" width="100%">'.
"<a class=\"link\" onclick=\"ShowHelp('in-portal:install');\"><img src=\"images/blue_bar_help.gif\" border=\"0\"></A>".
'</td></tr></table>';
if( $return_result )
return $ret;
else
echo $ret;
}
function &VerifyDB($error_state, $next_state, $success_func = null, $db_must_exist = false)
{
// perform various check type to database specified
// 1. user is allowed to connect to database
// 2. user has all types of permissions in database
global $state, $db_error;
// enshure we use data from post & not from config
$GLOBALS['g_DBType'] = $_POST["ServerType"];
$GLOBALS['g_DBHost'] = $_POST["ServerHost"];
$GLOBALS['g_DBName'] = $_POST["ServerDB"];
$GLOBALS['g_DBUser'] = $_POST["ServerUser"];
$GLOBALS['g_DBUserPassword'] = $_POST["ServerPass"];
// connect to database
$ado = inst_GetADODBConnection();
if($ado->ErrorNo() != 0)
{
// was error while connecting
$db_error = "Connection Error: (".$ado->ErrorNo().") ".$ado->ErrorMsg();
$state = $error_state;
}
elseif( $ado->ErrorNo() == 0 )
{
// if connected, then check if all sql statements work
$test_result = 1;
$sql_tests[] = 'DROP TABLE IF EXISTS test_table';
$sql_tests[] = 'CREATE TABLE test_table(test_col mediumint(6))';
$sql_tests[] = 'INSERT INTO test_table(test_col) VALUES (5)';
$sql_tests[] = 'UPDATE test_table SET test_col = 12';
$sql_tests[] = 'ALTER TABLE test_table ADD COLUMN new_col varchar(10)';
$sql_tests[] = 'SELECT * FROM test_table';
$sql_tests[] = 'DELETE FROM test_table';
$sql_tests[] = 'DROP TABLE test_table';
foreach($sql_tests as $sql_test)
{
$ado->Execute($sql_test);
if( $ado->ErrorNo()!=0 )
{
$test_result = 0;
break;
}
}
if($test_result == 1)
{
// if statements work & connection made, then check table existance
$db_exists = TableExists($ado,"ConfigurationAdmin,Category,Permissions");
if($db_exists != $db_must_exist)
{
$state = $error_state;
$db_error = $db_must_exist ? 'An In-Portal Database already exists at this location' : 'An In-Portal Database was not found at this location';
}
else
{
$state = $next_state;
if( isset($success_func) ) $success_func();
}
}
else
{
// user has insufficient permissions in database specified
$db_error = "Permission Error: (".$ado->ErrorNo().") ".$ado->ErrorMsg();
$state = $error_state;
}
}
return $ado;
}
function SaveDBConfig()
{
// save new database configuration
echo "in_ere";
set_ini_value("Database", "DBType",$_POST["ServerType"]);
set_ini_value("Database", "DBHost",$_POST["ServerHost"]);
set_ini_value("Database", "DBName",$_POST["ServerDB"]);
set_ini_value("Database", "DBUser",$_POST["ServerUser"]);
set_ini_value("Database", "DBUserPassword",$_POST["ServerPass"]);
set_ini_value("Database","TablePrefix",$_POST["TablePrefix"]);
save_values();
$GLOBALS['include_file'] = 'install/install_finish.php';
}
?>
Property changes on: trunk/admin/install/install_lib.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.6
\ No newline at end of property
+1.7
\ No newline at end of property
Index: trunk/admin/install/langpacks/english.lang
===================================================================
--- trunk/admin/install/langpacks/english.lang (revision 136)
+++ trunk/admin/install/langpacks/english.lang (revision 137)
@@ -1,1587 +1,1590 @@
<LANGUAGES><LANGUAGE PackName="English"><DATEFORMAT>m/d/y</DATEFORMAT><TIMEFORMAT>g:i:s A</TIMEFORMAT><DECIMAL>.</DECIMAL><THOUSANDS>,</THOUSANDS><PHRASES><PHRASE Label="lu_search_results" Type="0">U2VhcmNoIFJlc3VsdHM=</PHRASE>
<PHRASE Label="lu_no_categories" Type="0">Tm8gQ2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="lu_no_links" Type="0">Tm8gTGlua3M=</PHRASE>
<PHRASE Label="lu_added" Type="0">QWRkZWQ=</PHRASE>
<PHRASE Label="lu_cat" Type="0">Q2F0ZWdvcnk=</PHRASE>
<PHRASE Label="lu_date_created" Type="0">RGF0ZSBjcmVhdGVk</PHRASE>
<PHRASE Label="lu_edit" Type="0">TW9kaWZ5</PHRASE>
<PHRASE Label="lu_hits" Type="0">SGl0cw==</PHRASE>
<PHRASE Label="lu_no" Type="0">Tm8=</PHRASE>
<PHRASE Label="lu_rateit" Type="0">UmF0ZSBUaGlzIExpbms=</PHRASE>
<PHRASE Label="lu_rating" Type="0">UmF0aW5n</PHRASE>
<PHRASE Label="lu_reviews" Type="0">UmV2aWV3cw==</PHRASE>
<PHRASE Label="lu_votes" Type="0">Vm90ZXM=</PHRASE>
<PHRASE Label="lu_yes" Type="0">WWVz</PHRASE>
<PHRASE Label="lu_category" Type="0">Q2F0ZWdvcnk=</PHRASE>
<PHRASE Label="lu_button_ok" Type="0">T2s=</PHRASE>
<PHRASE Label="lu_button_rate" Type="0">UmF0ZQ==</PHRASE>
<PHRASE Label="lu_button_search" Type="0">U2VhcmNo</PHRASE>
<PHRASE Label="lu_cats" Type="0">Q2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="lu_links" Type="0">TGlua3M=</PHRASE>
<PHRASE Label="lu_total_links" Type="0">VG90YWwgbGlua3MgaW4gdGhlIGRhdGFiYXNl</PHRASE>
<PHRASE Label="lu_advanced_search" Type="0">QWR2YW5jZWQgU2VhcmNo</PHRASE>
<PHRASE Label="lu_login" Type="0">TG9naW4=</PHRASE>
<PHRASE Label="lu_not_logged_in" Type="0">Tm90IGxvZ2dlZCBpbg==</PHRASE>
<PHRASE Label="lu_password" Type="0">UGFzc3dvcmQ=</PHRASE>
<PHRASE Label="lu_register" Type="0">UmVnaXN0ZXI=</PHRASE>
<PHRASE Label="lu_search" Type="0">U2VhcmNo</PHRASE>
<PHRASE Label="lu_page_label" Type="0">UGFnZTo=</PHRASE>
<PHRASE Label="lu_related_cats" Type="0">UmVsYXRlZCBDYXRlZ29yaWVz</PHRASE>
<PHRASE Label="lu_del_favorites" Type="0">VGhlIGxpbmsgd2FzIHN1Y2Nlc3NmdWxseSByZW1vdmVkIGZyb20gIEZhdm9yaXRlcy4=</PHRASE>
<PHRASE Label="lu_subject" Type="0">U3ViamVjdA==</PHRASE>
<PHRASE Label="lu_directory" Type="0">RGlyZWN0b3J5</PHRASE>
<PHRASE Label="lu_forums" Type="0">Rm9ydW1z</PHRASE>
<PHRASE Label="lu_replies" Type="0">UmVwbGllcw==</PHRASE>
<PHRASE Label="lu_poster" Type="0">UG9zdGVy</PHRASE>
<PHRASE Label="lu_views" Type="0">Vmlld3M=</PHRASE>
<PHRASE Label="lu_news" Type="0">TmV3cw==</PHRASE>
<PHRASE Label="lu_posted" Type="0">UG9zdGVk</PHRASE>
<PHRASE Label="lu_author" Type="0">QXV0aG9y</PHRASE>
<PHRASE Label="lu_message_body" Type="0">TWVzc2FnZSBCb2R5</PHRASE>
<PHRASE Label="lu_edit_topic" Type="0">TW9kaWZ5IFRvcGlj</PHRASE>
<PHRASE Label="lu_options" Type="0">T3B0aW9ucw==</PHRASE>
<PHRASE Label="lu_see_also" Type="0">U2VlIEFsc28=</PHRASE>
<PHRASE Label="lu_add_link" Type="0">QWRkIExpbms=</PHRASE>
<PHRASE Label="lu_link_name" Type="0">TGluayBOYW1l</PHRASE>
<PHRASE Label="lu_button_join" Type="0">Sm9pbg==</PHRASE>
<PHRASE Label="lu_login_name" Type="0">TG9naW4gTmFtZQ==</PHRASE>
<PHRASE Label="lu_phone" Type="0">UGhvbmU=</PHRASE>
<PHRASE Label="lu_aol_im" Type="0">QU9MIElN</PHRASE>
<PHRASE Label="lu_street" Type="0">U3RyZWV0</PHRASE>
<PHRASE Label="lu_street2" Type="0">U3RyZWV0IDI=</PHRASE>
<PHRASE Label="lu_city" Type="0">Q2l0eQ==</PHRASE>
<PHRASE Label="lu_state" Type="0">U3RhdGU=</PHRASE>
<PHRASE Label="lu_zip" Type="0">Wmlw</PHRASE>
<PHRASE Label="lu_country" Type="0">Q291bnRyeQ==</PHRASE>
<PHRASE Label="lu_no_related_categories" Type="0">Tm8gUmVsYXRlZCBDYXRlZ29yaWVz</PHRASE>
<PHRASE Label="lu_end_on" Type="0">RW5kIE9u</PHRASE>
<PHRASE Label="lu_enabled" Type="0">RW5hYmxlZA==</PHRASE>
<PHRASE Label="lu_logout" Type="0">TG9nIE91dA==</PHRASE>
<PHRASE Label="lu_no_articles" Type="0">Tm8gQXJ0aWNsZXM=</PHRASE>
<PHRASE Label="lu_date" Type="0">RGF0ZQ==</PHRASE>
<PHRASE Label="lu_more" Type="0">TW9yZQ==</PHRASE>
<PHRASE Label="lu_reply" Type="0">UmVwbHk=</PHRASE>
<PHRASE Label="lu_topics" Type="0">VG9waWNz</PHRASE>
<PHRASE Label="la_topic_sortoder_prompt" Type="1">T3JkZXIgdG9waWNzIGJ5</PHRASE>
<PHRASE Label="la_common_ascending" Type="1">QXNjZW5kaW5n</PHRASE>
<PHRASE Label="la_common_descending" Type="1">RGVzY2VuZGluZw==</PHRASE>
<PHRASE Label="la_topic_sortfield_pompt" Type="1">T3JkZXIgVG9waWNzIEJ5</PHRASE>
<PHRASE Label="la_topic_sortfield2_pompt" Type="1">QW5kIHRoZW4gYnk=</PHRASE>
<PHRASE Label="la_topic_sortoder2_prompt" Type="1">QW5kIHRoZW4gYnk=</PHRASE>
<PHRASE Label="la_topic_newdays_prompt" Type="1">TmV3IFRvcGljcyAoRGF5cyk=</PHRASE>
<PHRASE Label="la_topic_perpage_prompt" Type="1">TnVtYmVyIG9mIHRvcGljcyBwZXIgcGFnZQ==</PHRASE>
<PHRASE Label="la_topic_poststopop_prompt" Type="1">TnVtYmVyIG9mIHBvc3RzIHRvIGJlIGNvbnNpZGVyZWQgcG9wdWxhcg==</PHRASE>
<PHRASE Label="la_topic_votestohot_prompt" Type="1">TWluaW11bSByYXRpbmcgdG8gYmUgY29uc2lkZXJlZCBob3Q=</PHRASE>
<PHRASE Label="la_topic_editorpicksabove_prompt" Type="1">RGlzcGxheSBlZGl0b3IgcGlja3MgYWJvdmUgcmVndWxhciB0b3BpY3M=</PHRASE>
<PHRASE Label="la_posts_perpage_prompt" Type="1">TnVtYmVyIG9mIHBvc3RzIHBlciBwYWdl</PHRASE>
<PHRASE Label="la_posts_newdays_prompt" Type="1">TmV3IHBvc3RzIChkYXlzKQ==</PHRASE>
<PHRASE Label="la_title_Site_Structure" Type="1">U3RydWN0dXJlICYgRGF0YQ==</PHRASE>
<PHRASE Label="la_title_Browse" Type="1">Q2F0YWxvZw==</PHRASE>
<PHRASE Label="la_ToolTip_Up" Type="1">VXAgYSBDYXRlZ29yeQ==</PHRASE>
<PHRASE Label="la_SearchMenu_New" Type="1">TmV3IFNlYXJjaA==</PHRASE>
<PHRASE Label="la_SearchMenu_Clear" Type="1">Q2xlYXIgU2VhcmNo</PHRASE>
<PHRASE Label="la_SearchMenu_Categories" Type="1">Q2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="la_ItemTab_Categories" Type="1">Q2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="la_ItemTab_Topics" Type="1">VG9waWNz</PHRASE>
<PHRASE Label="la_ItemTab_Links" Type="1">TGlua3M=</PHRASE>
<PHRASE Label="la_ItemTab_News" Type="1">QXJ0aWNsZXM=</PHRASE>
<PHRASE Label="la_SearchLabel_Categories" Type="1">U2VhcmNoIENhdGVnb3JpZXM=</PHRASE>
<PHRASE Label="la_SearchLabel_Topics" Type="1">U2VhcmNoIFRvcGljcw==</PHRASE>
<PHRASE Label="la_SearchLabel_Links" Type="1">U2VhcmNoIExpbmtz</PHRASE>
<PHRASE Label="la_SearchLabel_News" Type="1">U2VhcmNoIEFydGljbGVz</PHRASE>
<PHRASE Label="la_PermTab_category" Type="1">Q2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="la_PermTab_link" Type="1">TGlua3M=</PHRASE>
<PHRASE Label="la_PermTab_topic" Type="1">VG9waWNz</PHRASE>
<PHRASE Label="la_PermTab_news" Type="1">QXJ0aWNsZXM=</PHRASE>
<PHRASE Label="la_tab_Relations" Type="1">UmVsYXRpb25z</PHRASE>
<PHRASE Label="la_Page" Type="1">UGFnZQ==</PHRASE>
<PHRASE Label="la_ToolTip_New_Relation" Type="1">TmV3IFJlbGF0aW9u</PHRASE>
<PHRASE Label="la_ToolTip_Edit" Type="1">RWRpdA==</PHRASE>
<PHRASE Label="la_ToolTip_Delete" Type="1">RGVsZXRl</PHRASE>
<PHRASE Label="la_ToolTip_Move_Up" Type="1">TW92ZSBVcA==</PHRASE>
<PHRASE Label="la_ToolTip_Move_Down" Type="1">TW92ZSBEb3du</PHRASE>
<PHRASE Label="la_tab_Category_RelationSelect" Type="1">U2VsZWN0IEl0ZW0=</PHRASE>
<PHRASE Label="la_ToolTip_Home" Type="1">SG9tZQ==</PHRASE>
<PHRASE Label="la_ToolTip_Select" Type="1">U2VsZWN0</PHRASE>
<PHRASE Label="la_ToolTip_Stop" Type="1">Q2FuY2Vs</PHRASE>
<PHRASE Label="la_Text_Editing" Type="1">RWRpdGluZw==</PHRASE>
<PHRASE Label="la_Text_Category" Type="1">Q2F0ZWdvcnk=</PHRASE>
<PHRASE Label="la_Text_to" Type="1">dG8=</PHRASE>
<PHRASE Label="la_tab_General" Type="1">R2VuZXJhbA==</PHRASE>
<PHRASE Label="la_tab_Images" Type="1">SW1hZ2Vz</PHRASE>
<PHRASE Label="la_Text_Image" Type="1">SW1hZ2U=</PHRASE>
<PHRASE Label="la_prompt_Name" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_ColHeader_Image" Type="1">SW1hZ2U=</PHRASE>
<PHRASE Label="la_ColHeader_AltValue" Type="1">QWx0IFZhbHVl</PHRASE>
<PHRASE Label="la_ColHeader_Url" Type="1">VVJM</PHRASE>
<PHRASE Label="la_ColHeader_Enabled" Type="1">U3RhdHVz</PHRASE>
<PHRASE Label="la_ColHeader_Preview" Type="1">UHJldmlldw==</PHRASE>
<PHRASE Label="la_text_Save" Type="1">U2F2ZQ==</PHRASE>
<PHRASE Label="la_Text_Full_Size_Image" Type="1">RnVsbCBTaXplIEltYWdl</PHRASE>
<PHRASE Label="la_Text_Size" Type="1">U2l6ZQ==</PHRASE>
<PHRASE Label="la_prompt_AltName" Type="1">QWx0IHZhbHVl</PHRASE>
<PHRASE Label="la_prompt_Enabled" Type="1">RW5hYmxlZA==</PHRASE>
<PHRASE Label="la_prompt_Default" Type="1">RGVmYXVsdA==</PHRASE>
<PHRASE Label="la_prompt_Location" Type="1">TG9jYXRpb24=</PHRASE>
<PHRASE Label="la_prompt_ThumbURL" Type="1">UmVtb3RlIFVSTA==</PHRASE>
<PHRASE Label="la_text_Same" Type="1">U2FtZQ==</PHRASE>
<PHRASE Label="la_text_As" Type="1">YXM=</PHRASE>
<PHRASE Label="la_text_Thumbnail" Type="1">VGh1bWJuYWls</PHRASE>
<PHRASE Label="la_prompt_URL" Type="1">VVJM</PHRASE>
<PHRASE Label="la_tab_Browse" Type="1">Q2F0YWxvZw==</PHRASE>
<PHRASE Label="la_Save" Type="1">U2F2ZQ==</PHRASE>
<PHRASE Label="la_prompt_CreatedOn" Type="1">Q3JlYXRlZCBvbg==</PHRASE>
<PHRASE Label="la_prompt_Description" Type="1">RGVzY3JpcHRpb24=</PHRASE>
<PHRASE Label="la_prompt_Pending" Type="1">UGVuZGluZw==</PHRASE>
<PHRASE Label="la_prompt_Visible" Type="1">VmlzaWJsZQ==</PHRASE>
<PHRASE Label="la_prompt_MetaKeywords" Type="1">TWV0YSBLZXl3b3Jkcw==</PHRASE>
<PHRASE Label="la_prompt_MetaDescription" Type="1">TWV0YSBEZXNjcmlwdGlvbg==</PHRASE>
<PHRASE Label="la_Sectionheader_MetaInformation" Type="1">TUVUQSBJbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="la_prompt_Enable_HTML" Type="1">RW5hYmxlIEhUTUw/</PHRASE>
<PHRASE Label="la_Warning_Enable_HTML" Type="1">V2FybmluZzogRW5hYmxpbmcgSFRNTCBpcyBhIHNlY3VyaXR5IHJpc2sgYW5kIGNvdWxkIGRhbWFnZSB0aGUgc3lzdGVtIGlmIHVzZWQgaW1wcm9wZXJseSE=</PHRASE>
<PHRASE Label="la_ColHeader_FieldName" Type="1">RmllbGQgTmFtZQ==</PHRASE>
<PHRASE Label="la_ColHeader_FieldLabel" Type="1">TGFiZWw=</PHRASE>
<PHRASE Label="la_ColHeader_Value" Type="1">VmFsdWU=</PHRASE>
<PHRASE Label="la_tab_Custom" Type="1">Q3VzdG9t</PHRASE>
<PHRASE Label="la_tab_GroupSelect" Type="1">U2VsZWN0IEdyb3Vw</PHRASE>
<PHRASE Label="la_tab_Permissions" Type="1">UGVybWlzc2lvbnM=</PHRASE>
<PHRASE Label="la_text_for" Type="1">Zm9y</PHRASE>
<PHRASE Label="la_text_Permission" Type="1">UGVybWlzc2lvbg==</PHRASE>
<PHRASE Label="la_ColHeader_PermInherited" Type="1">SW5oZXJpdGVk</PHRASE>
<PHRASE Label="la_ColHeader_PermAccess" Type="1">QWNjZXNz</PHRASE>
<PHRASE Label="la_Colheader_GroupType" Type="1">VHlwZQ==</PHRASE>
<PHRASE Label="la_Cancel" Type="1">Q2FuY2Vs</PHRASE>
<PHRASE Label="la_prompt_CategoryId" Type="1">Q2F0ZWdvcnkgSUQ=</PHRASE>
<PHRASE Label="la_prompt_ImageId" Type="1">SW1hZ2UgSUQ=</PHRASE>
<PHRASE Label="la_prompt_Priority" Type="1">UHJpb3JpdHk=</PHRASE>
<PHRASE Label="la_prompt_RelationId" Type="1">UmVsYXRpb24gSUQ=</PHRASE>
<PHRASE Label="la_Text_Topic" Type="1">VG9waWM=</PHRASE>
<PHRASE Label="la_title_Edit_Topic" Type="1">U2l0ZSBTdHJ1Y3R1cmU=</PHRASE>
<PHRASE Label="la_title_Edit_Article" Type="1">U2l0ZSBTdHJ1Y3R1cmU=</PHRASE>
<PHRASE Label="la_Text_Article" Type="1">QXJ0aWNsZQ==</PHRASE>
<PHRASE Label="la_tab_Reviews" Type="1">UmV2aWV3cw==</PHRASE>
<PHRASE Label="la_Text_Link" Type="1">TGluaw==</PHRASE>
<PHRASE Label="la_title_Edit_Link" Type="1">U2l0ZSBTdHJ1Y3R1cmU=</PHRASE>
<PHRASE Label="la_ToolTip_New_Image" Type="1">TmV3IEltYWdl</PHRASE>
<PHRASE Label="la_prompt_Rating" Type="1">UmF0aW5n</PHRASE>
<PHRASE Label="la_prompt_Votes" Type="1">Vm90ZXM=</PHRASE>
<PHRASE Label="la_prompt_Hits" Type="1">SGl0cw==</PHRASE>
<PHRASE Label="la_Text_Counters" Type="1">Q291bnRlcnM=</PHRASE>
<PHRASE Label="la_prompt_DateFormat" Type="1">KG1tLWRkLXl5eXkp</PHRASE>
<PHRASE Label="la_prompt_RatingLimits" Type="1">KE1pbmltdW0gMCwgTWF4aW11bSA1KQ==</PHRASE>
<PHRASE Label="la_prompt_VoteLimits" Type="1">KE1pbmltdW0gMSk=</PHRASE>
<PHRASE Label="la_prompt_HitLimits" Type="1">KE1pbmltdW0gNCk=</PHRASE>
<PHRASE Label="la_prompt_AutoGen_Excerpt" Type="1">R2VuZXJhdGUgZnJvbSB0aGUgYXJ0aWNsZSBib2R5</PHRASE>
<PHRASE Label="la_Prompt_Title" Type="1">VGl0bGU=</PHRASE>
<PHRASE Label="la_prompt_Author" Type="1">QXV0aG9y</PHRASE>
<PHRASE Label="la_prompt_ArticleBody" Type="1">QXJ0aWNsZSBCb2R5</PHRASE>
<PHRASE Label="la_Text_Editor" Type="1">RWRpdG9y</PHRASE>
<PHRASE Label="la_prompt_ArticleExcerpt!" Type="1">QXJ0aWNsZSBFeGNlcnB0</PHRASE>
<PHRASE Label="la_prompt_FrontLead" Type="1">RnJvbnQgcGFnZSBsZWFkIGFydGljbGU=</PHRASE>
<PHRASE Label="la_prompt_LeadCat" Type="1">Q2F0ZWdvcnkgbGVhZCBhcnRpY2xl</PHRASE>
<PHRASE Label="la_prompt_Archived" Type="1">QXJjaGl2ZWQ=</PHRASE>
<PHRASE Label="la_prompt_ArchiveDate" Type="1">QXJjaGl2YXRpb24gRGF0ZQ==</PHRASE>
<PHRASE Label="la_prompt_ArticleExcerpt" Type="1">QXJ0aWNsZSBFeGNlcnB0</PHRASE>
<PHRASE Label="la_tab_Categories" Type="1">Q2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="la_ColHeader_Topic" Type="1">VG9waWM=</PHRASE>
<PHRASE Label="la_ColHeader_Poster" Type="1">UG9zdGVy</PHRASE>
<PHRASE Label="la_ColHeader_Date" Type="1">RGF0ZS9UaW1l</PHRASE>
<PHRASE Label="la_ColHeader_Reply" Type="1">UmVwbGllcw==</PHRASE>
<PHRASE Label="la_ColHeader_Views" Type="1">Vmlld3M=</PHRASE>
<PHRASE Label="la_title_Community" Type="1">Q29tbXVuaXR5</PHRASE>
<PHRASE Label="la_title_Settings" Type="1">TW9kdWxlcyAmIFNldHRpbmdz</PHRASE>
<PHRASE Label="la_title_Reports" Type="1">U3VtbWFyeSAmIExvZ3M=</PHRASE>
<PHRASE Label="la_title_Sys_Config" Type="1">Q29uZmlndXJhdGlvbg==</PHRASE>
<PHRASE Label="la_title_Tools" Type="1">VG9vbHM=</PHRASE>
<PHRASE Label="la_title_Help" Type="1">SGVscA==</PHRASE>
<PHRASE Label="la_tab_User_List" Type="1">VXNlcnM=</PHRASE>
<PHRASE Label="la_tab_Search_Users" Type="1">U2VhcmNoIFVzZXJz</PHRASE>
<PHRASE Label="la_tab_Search_Groups" Type="1">U2VhcmNoIEdyb3Vwcw==</PHRASE>
<PHRASE Label="la_tab_Mail_List" Type="1">TWFpbCBMaXN0</PHRASE>
<PHRASE Label="la_tab_User_Groups" Type="1">R3JvdXBz</PHRASE>
<PHRASE Label="la_title_In-Bulletin" Type="1">SW4tYnVsbGV0aW4=</PHRASE>
<PHRASE Label="la_tab_ConfigOutput" Type="1">T3V0cHV0IFNldHRpbmdz</PHRASE>
<PHRASE Label="la_tab_ConfigSearch" Type="1">U2VhcmNoIFNldHRpbmdz</PHRASE>
<PHRASE Label="la_tab_ConfigCensorship" Type="1">Q2Vuc29yc2hpcA==</PHRASE>
<PHRASE Label="la_title_Censorship" Type="1">Q2Vuc29yc2hpcA==</PHRASE>
<PHRASE Label="la_Text_Topics" Type="1">VG9waWNz</PHRASE>
<PHRASE Label="la_tab_Stats" Type="1">U3RhdGlzdGljcw==</PHRASE>
<PHRASE Label="la_tab_SearchLog" Type="1">U2VhcmNoIExvZw==</PHRASE>
<PHRASE Label="la_tab_Themes" Type="1">VGhlbWVz</PHRASE>
<PHRASE Label="la_tab_Regional" Type="1">UmVnaW9uYWw=</PHRASE>
<PHRASE Label="la_tab_Backup" Type="1">QmFja3Vw</PHRASE>
<PHRASE Label="la_tab_Restore" Type="1">UmVzdG9yZQ==</PHRASE>
<PHRASE Label="la_tab_ExportData" Type="1">RXhwb3J0IERhdGE=</PHRASE>
<PHRASE Label="la_tab_ImportData" Type="1">SW1wb3J0IERhdGE=</PHRASE>
<PHRASE Label="la_tab_Overview" Type="1">T3ZlcnZpZXc=</PHRASE>
<PHRASE Label="la_tab_ConfigSmileys" Type="1">U21pbGV5cw==</PHRASE>
<PHRASE Label="la_ToolTip_New_Category" Type="1">TmV3IENhdGVnb3J5</PHRASE>
<PHRASE Label="la_MenuTreeTitle" Type="1">TWFpbiBNZW51</PHRASE>
<PHRASE Label="la_ToolTip_Approve" Type="1">QXBwcm92ZQ==</PHRASE>
<PHRASE Label="la_ToolTip_Decline" Type="1">RGVjbGluZQ==</PHRASE>
<PHRASE Label="la_ToolTip_Cut" Type="1">Q3V0</PHRASE>
<PHRASE Label="la_ToolTip_Copy" Type="1">Q29weQ==</PHRASE>
<PHRASE Label="la_ToolTip_Paste" Type="1">UGFzdGU=</PHRASE>
<PHRASE Label="la_ToolTip_Print" Type="1">UHJpbnQ=</PHRASE>
<PHRASE Label="la_ToolTip_View" Type="1">Vmlldw==</PHRASE>
<PHRASE Label="la_Text_Filter" Type="1">RmlsdGVy</PHRASE>
<PHRASE Label="la_Text_Sort" Type="1">U29ydA==</PHRASE>
<PHRASE Label="la_Text_Select" Type="1">U2VsZWN0</PHRASE>
<PHRASE Label="la_SearchLabel" Type="1">U2VhcmNo</PHRASE>
<PHRASE Label="la_Text_All" Type="1">QWxs</PHRASE>
<PHRASE Label="la_Text_New" Type="1">TmV3</PHRASE>
<PHRASE Label="la_Text_Pop" Type="1">UG9wdWxhcg==</PHRASE>
<PHRASE Label="la_Text_Hot" Type="1">SG90</PHRASE>
<PHRASE Label="la_Text_Pending" Type="1">UGVuZGluZw==</PHRASE>
<PHRASE Label="la_Text_Disabled" Type="1">RGlzYWJsZWQ=</PHRASE>
<PHRASE Label="la_Text_Default" Type="1">RGVmYXVsdA==</PHRASE>
<PHRASE Label="la_Text_Unselect" Type="1">VW5zZWxlY3Q=</PHRASE>
<PHRASE Label="la_Text_Invert" Type="1">SW52ZXJ0</PHRASE>
<PHRASE Label="la_ToolTip_Search" Type="1">U2VhcmNo</PHRASE>
<PHRASE Label="la_prompt_SubSearch" Type="1">U3ViIFNlYXJjaA==</PHRASE>
<PHRASE Label="la_Text_Within" Type="1">V2l0aGlu</PHRASE>
<PHRASE Label="la_Text_Current" Type="1">Q3VycmVudA==</PHRASE>
<PHRASE Label="la_prompt_InlinkSqlType" Type="1">SW4tTGluayBTUUwgVHlwZQ==</PHRASE>
<PHRASE Label="la_prompt_InlinkServer" Type="1">SW4tTGluayBTZXJ2ZXIgTmFtZQ==</PHRASE>
<PHRASE Label="la_prompt_InlinkDbName" Type="1">SW4tTGluayBEYXRhYmFzZSBOYW1l</PHRASE>
<PHRASE Label="la_prompt_InlinkDbUsername" Type="1">SW4tTGluayBEYXRhYmFzZSBVc2VybmFtZQ==</PHRASE>
<PHRASE Label="la_prompt_InlinkDbPass" Type="1">SW4tTGluayBEYXRhYmFzZSBQYXNzd29yZA==</PHRASE>
<PHRASE Label="la_prompt_RegUserId" Type="1">UmVndWxhciBVc2VyIEdyb3Vw</PHRASE>
<PHRASE Label="la_prompt_InitImportCat" Type="1">SW5pdGlhbCBJbXBvcnQgQ2F0ZWdvcnk=</PHRASE>
<PHRASE Label="la_prompt_RegUsers" Type="1">TGluayBwZXJtaXNzaW9uIElEIGZvciBhbGwgcmVnaXN0ZXJlZCB1c2VycyB0byB2aWV3IGl0</PHRASE>
<PHRASE Label="la_prompt_NotRegUsers" Type="1">TGluayBwZXJtaXNzaW9uIElEIGZvciBhbGwgdW5yZWdpc3RlcmVkIHVzZXJzIHRvIHZpZXcgaXQ=</PHRASE>
<PHRASE Label="la_title_ImportData" Type="1">SW1wb3J0IERhdGE=</PHRASE>
<PHRASE Label="la_tab_ConfigE-mail" Type="1">RS1tYWlsIFNldHRpbmdz</PHRASE>
<PHRASE Label="la_tab_ConfigCustom" Type="1">Q3VzdG9tIEZpZWxkcw==</PHRASE>
<PHRASE Label="la_title_Backup" Type="1">QmFja3Vw</PHRASE>
<PHRASE Label="la_title_Restore" Type="1">UmVzdG9yZQ==</PHRASE>
<PHRASE Label="la_title_ExportData" Type="1">RXhwb3J0IERhdGE=</PHRASE>
<PHRASE Label="la_title_SearchLog" Type="1">U2VhcmNoIExvZw==</PHRASE>
<PHRASE Label="la_validation_AlertMsg" Type="1">UGxlYXNlIGNoZWNrIHRoZSByZXF1aXJlZCBmaWVsZHMgYW5kIHRyeSBhZ2FpbiE=</PHRASE>
<PHRASE Label="la_val_RequiredField" Type="1">UmVxdWlyZWQgRmllbGQ=</PHRASE>
<PHRASE Label="la_Tab_Search" Type="1">U2VhcmNo</PHRASE>
<PHRASE Label="la_Text_Edit" Type="1">RWRpdA==</PHRASE>
<PHRASE Label="la_Text_Delete" Type="1">RGVsZXRl</PHRASE>
<PHRASE Label="lu_btn_NewLink" Type="0">TmV3IExpbms=</PHRASE>
<PHRASE Label="lu_btn_NewArticle" Type="0">TmV3IEFydGljbGU=</PHRASE>
<PHRASE Label="la_Text_Users" Type="1">VXNlcnM=</PHRASE>
<PHRASE Label="la_prompt_Username" Type="1">VXNlcm5hbWU=</PHRASE>
<PHRASE Label="la_prompt_Last_Name" Type="1">TGFzdCBOYW1l</PHRASE>
<PHRASE Label="la_prompt_First_Name" Type="1">Rmlyc3QgTmFtZQ==</PHRASE>
<PHRASE Label="la_prompt_Email" Type="1">RW1haWw=</PHRASE>
<PHRASE Label="la_prompt_PrimaryGroup" Type="1">UHJpbWFyeSBHcm91cA==</PHRASE>
<PHRASE Label="la_prompt_GroupName" Type="1">R3JvdXAgTmFtZQ==</PHRASE>
<PHRASE Label="la_prompt_UserCount" Type="1">VXNlciBDb3VudA==</PHRASE>
<PHRASE Label="la_prompt_Search" Type="1">U2VhcmNo</PHRASE>
<PHRASE Label="la_ToolTip_New_User" Type="1">TmV3IFVzZXI=</PHRASE>
<PHRASE Label="la_ToolTip_Deny" Type="1">RGVueQ==</PHRASE>
<PHRASE Label="la_Text_Valid" Type="1">VmFsaWQ=</PHRASE>
<PHRASE Label="la_prompt_LastName" Type="1">TGFzdCBOYW1l</PHRASE>
<PHRASE Label="la_prompt_FirstName" Type="1">Rmlyc3QgTmFtZQ==</PHRASE>
<PHRASE Label="la_title_Edit_User" Type="1">RWRpdCBVc2Vy</PHRASE>
<PHRASE Label="la_Text_User" Type="1">VXNlcg==</PHRASE>
<PHRASE Label="la_tab_Groups" Type="1">R3JvdXBz</PHRASE>
<PHRASE Label="la_prompt_Usermame" Type="1">VXNlcm5hbWU=</PHRASE>
<PHRASE Label="la_prompt_Password" Type="1">UGFzc3dvcmQ=</PHRASE>
<PHRASE Label="la_prompt_PasswordRepeat" Type="1">UmVwZWF0IFBhc3N3b3Jk</PHRASE>
<PHRASE Label="la_prompt_Phone" Type="1">UGhvbmU=</PHRASE>
<PHRASE Label="la_prompt_Street" Type="1">U3RyZWV0</PHRASE>
<PHRASE Label="la_prompt_City" Type="1">Q2l0eQ==</PHRASE>
<PHRASE Label="la_prompt_State" Type="1">U3RhdGU=</PHRASE>
<PHRASE Label="la_prompt_Zip" Type="1">Wmlw</PHRASE>
<PHRASE Label="la_prompt_Country" Type="1">Q291bnRyeQ==</PHRASE>
<PHRASE Label="la_prompt_PersonalInfo" Type="1">UGVyc29uYWwgSW5mb3JtYXRpb24=</PHRASE>
<PHRASE Label="la_prompt_Properties" Type="1">UHJvcGVydGllcw==</PHRASE>
<PHRASE Label="la_ToolTip_NewGroup" Type="1">TmV3IEdyb3Vw</PHRASE>
<PHRASE Label="la_prompt_SimpleSearch" Type="1">U2ltcGxlIFNlYXJjaA==</PHRASE>
<PHRASE Label="la_prompt_Comments" Type="1">Q29tbWVudHM=</PHRASE>
<PHRASE Label="la_Text_Group" Type="1">R3JvdXA=</PHRASE>
<PHRASE Label="la_title_Edit_Group" Type="1">RWRpdCBHcm91cA==</PHRASE>
<PHRASE Label="la_tab_Users" Type="1">VXNlcnM=</PHRASE>
<PHRASE Label="la_val_Username" Type="1">SW52YWxpZCBVc2VybmFtZQ==</PHRASE>
<PHRASE Label="la_val_Password" Type="1">SW52YWxpZCBQYXNzd29yZA==</PHRASE>
<PHRASE Label="la_Text_CustomFields" Type="1">Q3VzdG9tIEZpZWxkcw==</PHRASE>
<PHRASE Label="la_prompt_AdvancedSearch" Type="1">QWR2YW5jZWQgU2VhcmNo</PHRASE>
<PHRASE Label="la_Text_PostBody" Type="1">UG9zdCBCb2R5</PHRASE>
<PHRASE Label="la_Text_Posts" Type="1">UG9zdHM=</PHRASE>
<PHRASE Label="lu_add_review" Type="0">QWRkIFJldmlldw==</PHRASE>
<PHRASE Label="la_Text_Censorship" Type="1">Q2Vuc29yc2hpcA==</PHRASE>
<PHRASE Label="la_ColHeader_BadWord" Type="1">Q2Vuc29yZWQgV29yZA==</PHRASE>
<PHRASE Label="la_ColHeader_Replacement" Type="1">UmVwbGFjZW1lbnQ=</PHRASE>
<PHRASE Label="la_ToolTip_New_CensorWord" Type="1">TmV3IENlbnNvciBXb3Jk</PHRASE>
<PHRASE Label="la_Text_Emoticons" Type="1">RW1vdGlvbiBJY29ucw==</PHRASE>
<PHRASE Label="la_prompt_KeyStroke" Type="1">S2V5IFN0cm9rZQ==</PHRASE>
<PHRASE Label="la_prompt_Image" Type="1">SW1hZ2U=</PHRASE>
<PHRASE Label="la_ToolTip_New_Emoticon" Type="1">TmV3IEVtb3Rpb24gSWNvbg==</PHRASE>
<PHRASE Label="la_Text_Smiley" Type="1">U21pbGV5</PHRASE>
<PHRASE Label="la_prompt_EmoticonId" Type="1">RW1vdGlvbiBJZA==</PHRASE>
<PHRASE Label="la_Text_Upload" Type="1">VXBsb2Fk</PHRASE>
<PHRASE Label="lu_home" Type="0">SG9tZQ==</PHRASE>
<PHRASE Label="la_ToolTip_New_CustomField" Type="1">TmV3IEN1c3RvbSBGaWVsZA==</PHRASE>
<PHRASE Label="la_tab_Censorship" Type="1">Q2Vuc29yc2hpcA==</PHRASE>
<PHRASE Label="la_prompt_CensorhipId" Type="1">Q2Vuc29yc2hpcCBJZA==</PHRASE>
<PHRASE Label="la_prompt_CensorWord" Type="1">Q2Vuc29yc2hpcCBXb3Jk</PHRASE>
<PHRASE Label="la_prompt_ReplacementWord" Type="1">UmVwbGFjZW1lbnQgV29yZA==</PHRASE>
<PHRASE Label="lu_suggest_category" Type="0">U3VnZ2VzdCBDYXRlZ29yeQ==</PHRASE>
<PHRASE Label="lu_my_profile" Type="0">TXkgUHJvZmlsZQ==</PHRASE>
<PHRASE Label="lu_add_to_favorites" Type="0">QWRkIHRvIEZhdm9yaXRlcw==</PHRASE>
<PHRASE Label="lu_suggest_link" Type="0">U3VnZ2VzdCBMaW5r</PHRASE>
<PHRASE Label="la_tab_Site_Structure" Type="1">U3RydWN0dXJlICYgRGF0YQ==</PHRASE>
<PHRASE Label="la_tab_Community" Type="1">Q29tbXVuaXR5</PHRASE>
<PHRASE Label="la_tab_ModulesSettings" Type="1">TW9kdWxlcyAmIFNldHRpbmdz</PHRASE>
<PHRASE Label="la_tab_Sys_Config" Type="1">Q29uZmlndXJhdGlvbg==</PHRASE>
<PHRASE Label="la_tab_Tools" Type="1">VG9vbHM=</PHRASE>
<PHRASE Label="la_tab_Help" Type="1">SGVscA==</PHRASE>
<PHRASE Label="la_ToolTip_Next" Type="1">TmV4dA==</PHRASE>
<PHRASE Label="la_ToolTip_Previous" Type="1">UHJldmlvdXM=</PHRASE>
<PHRASE Label="la_tab_Category_Select" Type="1">Q2F0ZWdvcnkgU2VsZWN0</PHRASE>
<PHRASE Label="la_prompt_ReviewText" Type="1">UmV2aWV3IFRleHQ=</PHRASE>
<PHRASE Label="la_Prompt_ReviewedBy" Type="1">UmV2aWV3ZWQgQnk=</PHRASE>
<PHRASE Label="la_prompt_NotifyOwner" Type="1">Tm90aWZ5IE93bmVy</PHRASE>
<PHRASE Label="la_prompt_CreatedOn_Time" Type="1">Q3JlYXRlZCBhdA==</PHRASE>
<PHRASE Label="la_prompt_ModifedOn" Type="1">TW9kaWZpZWQgT24=</PHRASE>
<PHRASE Label="la_prompt_ModifedOn_Time" Type="1">TW9kaWZpZWQgYXQ=</PHRASE>
<PHRASE Label="la_prompt_TimeFormat" Type="1">KGhoOm1tOnNzKQ==</PHRASE>
<PHRASE Label="la_ToolTip_New_Review" Type="1">TmV3IFJldmlldw==</PHRASE>
<PHRASE Label="la_ColHeader_Item" Type="1">SXRlbQ==</PHRASE>
<PHRASE Label="la_ColHeader_ItemType" Type="1">SXRlbSBUeXBl</PHRASE>
<PHRASE Label="la_prompt_RelationType" Type="1">UmVsYXRpb24gVHlwZQ==</PHRASE>
<PHRASE Label="la_prompt_Status" Type="1">U3RhdHVz</PHRASE>
<PHRASE Label="la_Text_OneWay" Type="1">T25lIFdheQ==</PHRASE>
<PHRASE Label="la_Text_Enabled" Type="1">RW5hYmxlZA==</PHRASE>
<PHRASE Label="la_topic_sortfield_prompt" Type="1">U29ydCB0b3BpY3MgYnk=</PHRASE>
<PHRASE Label="la_topic_sortfield2_prompt!" Type="1">YW5kIHRoZW4gYnk=</PHRASE>
<PHRASE Label="la_Text_NewCensorWord" Type="1">TmV3IENlbnNvciBXb3Jk</PHRASE>
<PHRASE Label="la_Text_CustomField" Type="1">Q3VzdG9tIEZpZWxk</PHRASE>
<PHRASE Label="la_Text_DataType_3" Type="1">cG9zdA==</PHRASE>
<PHRASE Label="la_Text_NewField" Type="1">TmV3IEZpZWxk</PHRASE>
<PHRASE Label="la_prompt_FieldId" Type="1">RmllbGQgSWQ=</PHRASE>
<PHRASE Label="la_prompt_FieldName" Type="1">RmllbGQgTmFtZQ==</PHRASE>
<PHRASE Label="la_prompt_FieldLabel" Type="1">RmllbGQgTGFiZWw=</PHRASE>
<PHRASE Label="la_Text_DataType_2" Type="1">RGF0YSBUeXBlIDI=</PHRASE>
<PHRASE Label="la_topic_sortfield2_prompt" Type="1">QW5kIHRoZW4gYnk=</PHRASE>
<PHRASE Label="la_ToolTip_SendMail" Type="1">U2VuZCBFLW1haWw=</PHRASE>
<PHRASE Label="la_prompt_ReviewId" Type="1">UmV2aWV3IElE</PHRASE>
<PHRASE Label="la_prompt_CreatedBy" Type="1">Q3JlYXRlZCBieQ==</PHRASE>
<PHRASE Label="la_Text_Reciprocal" Type="1">UmVjaXByb2NhbA==</PHRASE>
<PHRASE Label="la_SampleText" Type="1">U0FNUExFIFRFWFQ=</PHRASE>
<PHRASE Label="la_Text_General" Type="1">R2VuZXJhbA==</PHRASE>
<PHRASE Label="la_category_sortfield_prompt" Type="1">T3JkZXIgY2F0ZWdvcmllcyBieQ==</PHRASE>
<PHRASE Label="la_category_sortfield2_prompt" Type="1">QW5kIHRoZW4gYnk=</PHRASE>
<PHRASE Label="la_category_perpage_prompt" Type="1">TnVtYmVyIG9mIGNhdGVnb3JpZXMgcGVyIHBhZ2U=</PHRASE>
<PHRASE Label="la_category_daysnew_prompt" Type="1">TnVtYmVyIG9mIGRheXMgZm9yIGEgY2F0LiB0byBiZSBORVc=</PHRASE>
<PHRASE Label="la_category_showpick_prompt" Type="1">RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBjYXRlZ29yaWVz</PHRASE>
<PHRASE Label="la_Text_MetaInfo" Type="1">RGVmYXVsdCBNRVRBIGtleXdvcmRz</PHRASE>
<PHRASE Label="la_category_metakey" Type="1">RGVmYXVsdCBNRVRBIEtleXdvcmRz</PHRASE>
<PHRASE Label="la_category_metadesc" Type="1">RGVmYXVsdCBNRVRBIGRlc2NyaXB0aW9u</PHRASE>
<PHRASE Label="la_Text_Articles" Type="1">QXJ0aWNsZXM=</PHRASE>
<PHRASE Label="la_news_sortfield_pompt" Type="1">T3JkZXIgYXJ0aWNsZXMgYnk=</PHRASE>
<PHRASE Label="la_news_sortfield2_pompt" Type="1">QW5kIHRoZW4gYnk=</PHRASE>
<PHRASE Label="la_news_perpage_prompt" Type="1">TnVtYmVyIG9mIGFydGljbGVzIHBlciBwYWdl</PHRASE>
<PHRASE Label="la_news_newdays_prompt" Type="1">TnVtYmVyIG9mIGRheXMgZm9yIGEgYXJ0aWNsZSB0byBiZSBORVc=</PHRASE>
<PHRASE Label="la_news_newstopminrating_prompt" Type="1">TWluaW11bSByYXRpbmcgZm9yIGEgYXJ0aWNsZSB0byBiZSBIT1Q=</PHRASE>
<PHRASE Label="la_news_votestohot_prompt" Type="1">TnVtYmVyIG9mIGNsaWNrcyBmb3IgYW4gYXJ0aWNsZSB0byBiZSBIT1Q=</PHRASE>
<PHRASE Label="la_news_editorpicksabove_prompt" Type="1">RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBhcnRpY2xlcw==</PHRASE>
<PHRASE Label="la_news_daysarchive_prompt" Type="1">TnVtYmVyIG9mIGRheXMgdG8gYXJjaGl2ZSBhcnRpY2xlcyBhdXRvbWF0aWNhbGx5</PHRASE>
<PHRASE Label="la_Text_Reviews" Type="1">UmV2aWV3cw==</PHRASE>
<PHRASE Label="la_news_sortreviews_prompt" Type="1">U29ydCByZXZpZXdzIGJ5</PHRASE>
<PHRASE Label="la_news_sortreviews2_prompt" Type="1">QW5kIHRoZW4gYnk=</PHRASE>
<PHRASE Label="la_Text_Links" Type="1">TGlua3M=</PHRASE>
<PHRASE Label="la_link_sortfield_prompt" Type="1">T3JkZXIgbGlua3MgYnk=</PHRASE>
<PHRASE Label="la_sortfield2_prompt" Type="1">QW5kIHRoZW4gYnk=</PHRASE>
<PHRASE Label="la_link_perpage_prompt" Type="1">TnVtYmVyIG9mIGxpbmtzIHBlciBwYWdl</PHRASE>
<PHRASE Label="la_link_newdays_prompt" Type="1">TnVtYmVyIG9mIGRheXMgZm9yIGEgbGluayB0byBiZSBORVc=</PHRASE>
<PHRASE Label="la_link_newstopminrating_prompt" Type="1">TWluaW11bSByYXRpbmcgZm9yIGEgbGluayB0byBiZSBUT1A=</PHRASE>
<PHRASE Label="la_link_editorspick_prompt" Type="1">RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBsaW5rcw==</PHRASE>
<PHRASE Label="la_link_urlstatus_prompt" Type="1">RGlzcGxheSBsaW5rIFVSTCBpbiBzdGF0dXMgYmFy</PHRASE>
<PHRASE Label="la_link_sortreviews_prompt" Type="1">U29ydCByZXZpZXdzIGJ5</PHRASE>
<PHRASE Label="la_link_sortreviews2_prompt" Type="1">YW5kIHRoZW4gYnk=</PHRASE>
<PHRASE Label="la_Category_Name" Type="1">Q2F0ZWdvcnkgTmFtZQ==</PHRASE>
<PHRASE Label="la_Category_Description" Type="1">Q2F0ZWdvcnkgRGVzY3JpcHRpb24=</PHRASE>
<PHRASE Label="la_Article_Title" Type="1">QXJ0aWNsZSBUaXRsZQ==</PHRASE>
<PHRASE Label="la_Article_Excerpt" Type="1">QXJ0aWNsZSBFeGNlcnB0</PHRASE>
<PHRASE Label="la_Link_Name" Type="1">TGluayBOYW1l</PHRASE>
<PHRASE Label="la_Link_Description" Type="1">TGluayBEZXNjcmlwdGlvbg==</PHRASE>
<PHRASE Label="la_Topic_Text" Type="1">VG9waWMgVGV4dA==</PHRASE>
<PHRASE Label="la_Number_of_Posts" Type="1">TnVtYmVyIG9mIFBvc3Rz</PHRASE>
<PHRASE Label="la_ColHeader_Status" Type="1">U3RhdHVz</PHRASE>
<PHRASE Label="la_Text_Configuration" Type="1">Q29uZmlndXJhdGlvbg==</PHRASE>
<PHRASE Label="la_Text_Theme" Type="1">VGhlbWU=</PHRASE>
<PHRASE Label="la_title_General_Configuration" Type="1">R2VuZXJhbCBDb25maWd1cmF0aW9u</PHRASE>
<PHRASE Label="la_Text_NewTheme" Type="1">TmV3IFRoZW1l</PHRASE>
<PHRASE Label="la_prompt_ThemeId" Type="1">VGhlbWUgSWQ=</PHRASE>
<PHRASE Label="la_prompt_Primary" Type="1">UHJpbWFyeQ==</PHRASE>
<PHRASE Label="la_tab_Reports" Type="1">U3VtbWFyeSAmIExvZ3M=</PHRASE>
<PHRASE Label="la_tab_Summary" Type="1">U3VtbWFyeQ==</PHRASE>
<PHRASE Label="la_tab_SessionLog" Type="1">U2Vzc2lvbiBMb2c=</PHRASE>
<PHRASE Label="la_Text_Settings" Type="1">U2V0dGluZ3M=</PHRASE>
<PHRASE Label="la_prompt_PackName" Type="1">UGFjayBOYW1l</PHRASE>
<PHRASE Label="la_Text_Pack" Type="1">UGFjaw==</PHRASE>
<PHRASE Label="la_prompt_LocalName" Type="1">TG9jYWwgTmFtZQ==</PHRASE>
<PHRASE Label="la_prompt_LanguageId" Type="1">TGFuZ3VhZ2UgSWQ=</PHRASE>
<PHRASE Label="la_tab_Labels" Type="1">TGFiZWxz</PHRASE>
<PHRASE Label="la_tab_Templates" Type="1">VGVtcGxhdGVz</PHRASE>
<PHRASE Label="la_common_CreatedOn" Type="1">RGF0ZQ==</PHRASE>
<PHRASE Label="la_common_ReviewText" Type="1">UmV2aWV3IFRleHQ=</PHRASE>
<PHRASE Label="la_Topic_Pick" Type="1">UGljaw==</PHRASE>
<PHRASE Label="la_Topic_Views" Type="1">Vmlld3M=</PHRASE>
<PHRASE Label="la_link_sortfield2_prompt" Type="1">QW5kIHRoZW4gYnk=</PHRASE>
<PHRASE Label="la_Link_URL" Type="1">VVJM</PHRASE>
<PHRASE Label="la_Link_Date" Type="1">RGF0ZQ==</PHRASE>
<PHRASE Label="la_Link_Hits" Type="1">SGl0cw==</PHRASE>
<PHRASE Label="la_Link_Rating" Type="1">UmF0aW5n</PHRASE>
<PHRASE Label="la_Text_DataType_4" Type="1">bGlua3M=</PHRASE>
<PHRASE Label="la_Article_Author" Type="1">QXV0aG9y</PHRASE>
<PHRASE Label="la_Article_Date" Type="1">RGF0ZQ==</PHRASE>
<PHRASE Label="la_Article_Hits" Type="1">SGl0cw==</PHRASE>
<PHRASE Label="la_Article_Rating" Type="1">UmF0aW5n</PHRASE>
<PHRASE Label="la_title_Summary" Type="1">U3VtbWFyeQ==</PHRASE>
<PHRASE Label="la_Text_GuestUsers" Type="1">R3Vlc3QgVXNlcnM=</PHRASE>
<PHRASE Label="la_Text_Expired" Type="1">RXhwaXJlZA==</PHRASE>
<PHRASE Label="la_prompt_IPAddress" Type="1">SVAgQWRkcmVzcw==</PHRASE>
<PHRASE Label="la_ToolTip_Refresh" Type="1">UmVmcmVzaA==</PHRASE>
<PHRASE Label="la_ToolTip_Reset" Type="1">UmVzZXQ=</PHRASE>
<PHRASE Label="la_title_SessionLog" Type="1">U2Vzc2lvbiBMb2c=</PHRASE>
<PHRASE Label="la_Text_Guest" Type="1">R3Vlc3Q=</PHRASE>
<PHRASE Label="la_Category_Date" Type="1">RGF0ZQ==</PHRASE>
<PHRASE Label="la_Category_Pick" Type="1">UGljaw==</PHRASE>
<PHRASE Label="la_Category_Pop" Type="1">UG9wdWxhcml0eQ==</PHRASE>
<PHRASE Label="la_prompt_Module" Type="1">TW9kdWxl</PHRASE>
<PHRASE Label="la_prompt_Template" Type="1">VGVtcGxhdGU=</PHRASE>
<PHRASE Label="la_prompt_Type" Type="1">VHlwZQ==</PHRASE>
<PHRASE Label="la_Text_BuiltIn" Type="1">QnVpbHQgSW4=</PHRASE>
<PHRASE Label="la_tab_Template" Type="1">VGVtcGxhdGU=</PHRASE>
<PHRASE Label="la_prompt_New" Type="1">TmV3</PHRASE>
<PHRASE Label="la_prompt_Hot" Type="1">SG90</PHRASE>
<PHRASE Label="la_prompt_Pop" Type="1">UG9wdWxhcml0eQ==</PHRASE>
<PHRASE Label="la_val_Active" Type="1">QWN0aXZl</PHRASE>
<PHRASE Label="la_val_Pending" Type="1">UGVuZGluZw==</PHRASE>
<PHRASE Label="la_val_Disabled" Type="1">RGlzYWJsZWQ=</PHRASE>
<PHRASE Label="la_val_Never" Type="1">TmV2ZXI=</PHRASE>
<PHRASE Label="la_val_Always" Type="1">QWx3YXlz</PHRASE>
<PHRASE Label="la_val_Auto" Type="1">QXV0bw==</PHRASE>
<PHRASE Label="la_prompt_StartDate" Type="1">U3RhcnQgRGF0ZQ==</PHRASE>
<PHRASE Label="la_Text_Active" Type="1">QWN0aXZl</PHRASE>
<PHRASE Label="la_Text_View" Type="1">Vmlldw==</PHRASE>
<PHRASE Label="la_topic_MinVotes_prompt" Type="1">TWluaW11bSBWb3Rlcw==</PHRASE>
<PHRASE Label="la_title_In-Link" Type="1">SW4tbGluaw==</PHRASE>
<PHRASE Label="la_title_In-News" Type="1">SW4tbmV3eg==</PHRASE>
<PHRASE Label="la_ToolTip_Preview" Type="1">UHJldmlldw==</PHRASE>
<PHRASE Label="la_ToolTip_New_Template" Type="1">TmV3IFRlbXBsYXRl</PHRASE>
<PHRASE Label="Next Theme" Type="0">TmV4dCBUaGVtZQ==</PHRASE>
<PHRASE Label="Previous Theme" Type="0">UHJldmlvdXMgVGhlbWU=</PHRASE>
<PHRASE Label="la_ToolTip_New_LangPack" Type="1">TmV3IExhbmd1YWdlIFBhY2s=</PHRASE>
<PHRASE Label="la_ToolTip_New_Theme" Type="1">TmV3IFRoZW1l</PHRASE>
<PHRASE Label="la_Text_Send" Type="1">U2VuZA==</PHRASE>
<PHRASE Label="la_Text_Email" Type="1">RW1haWw=</PHRASE>
<PHRASE Label="la_Text_Groups" Type="1">R3JvdXBz</PHRASE>
<PHRASE Label="la_tab_EmailMessage" Type="1">RW1haWwgTWVzc2FnZQ==</PHRASE>
<PHRASE Label="la_prompt_EmailSubject" Type="1">RW1haWwgU3ViamVjdA==</PHRASE>
<PHRASE Label="la_prompt_EmailBody" Type="1">RW1haWwgQm9keQ==</PHRASE>
<PHRASE Label="lu_myaccount" Type="0">TXkgQWNjb3VudA==</PHRASE>
<PHRASE Label="lu_by" Type="0">Ynk=</PHRASE>
<PHRASE Label="la_prompt_PerPage" Type="1">UGVyIFBhZ2U=</PHRASE>
<PHRASE Label="la_Text_UserEmail" Type="1">VXNlciBSZWNlaXZlcyBOb3RpY2VzIFdoZW4=</PHRASE>
<PHRASE Label="la_Text_AdminEmail" Type="1">QWRtaW5pc3RyYXRvciBSZWNlaXZlIE5vdGljZXMgV2hlbg==</PHRASE>
<PHRASE Label="la_prompt_TotalLinks" Type="1">VG90YWwgTGlua3M=</PHRASE>
<PHRASE Label="la_prompt_ActiveArticles" Type="1">QWN0aXZlIEFydGljbGVz</PHRASE>
<PHRASE Label="la_prompt_ActiveTopics" Type="1">QWN0aXZlIFRvcGljcw==</PHRASE>
<PHRASE Label="la_prompt_PendingItems" Type="1">UGVuZGluZyBJdGVtcw==</PHRASE>
<PHRASE Label="la_Text_Step" Type="1">U3RlcA==</PHRASE>
<PHRASE Label="la_Text_DatabaseSettings" Type="1">RGF0YWJhc2UgU2V0dGluZ3MgLSBJbnRlY2huaWMgSW4tTGluayAyLng=</PHRASE>
<PHRASE Label="la_Prompt_Warning" Type="1">V2FybmluZyE=</PHRASE>
<PHRASE Label="la_Text_IAgree" Type="1">SSBhZ3JlZSB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnM=</PHRASE>
<PHRASE Label="la_Text_SubCats" Type="1">U3ViQ2F0cw==</PHRASE>
<PHRASE Label="la_Text_Relations" Type="1">UmVsYXRpb25z</PHRASE>
<PHRASE Label="la_Text_Relation" Type="1">UmVsYXRpb24=</PHRASE>
<PHRASE Label="la_prompt_Item" Type="1">SXRlbQ==</PHRASE>
<PHRASE Label="la_Prompt_CategoryPermissions" Type="1">Q2F0ZWdvcnkgUGVybWlzc2lvbnM=</PHRASE>
<PHRASE Label="la_tab_Properties" Type="1">UHJvcGVydGllcw==</PHRASE>
<PHRASE Label="la_prompt_LinkId" Type="1">TGluayBJZA==</PHRASE>
<PHRASE Label="la_tab_Review" Type="1">UmV2aWV3</PHRASE>
<PHRASE Label="la_val_Enabled" Type="1">RW5hYmxlZA==</PHRASE>
<PHRASE Label="la_tab_UserSelect" Type="1">VXNlciBTZWxlY3Q=</PHRASE>
<PHRASE Label="la_Text_Adding" Type="1">QWRkaW5n</PHRASE>
<PHRASE Label="la_prompt_Views" Type="1">Vmlld3M=</PHRASE>
<PHRASE Label="la_Text_Catalog" Type="1">Q2F0YWxvZw==</PHRASE>
<PHRASE Label="la_Text_Local" Type="1">TG9jYWw=</PHRASE>
<PHRASE Label="la_Text_Subitems" Type="1">U3ViSXRlbXM=</PHRASE>
<PHRASE Label="la_Text_Fields" Type="1">RmllbGRz</PHRASE>
<PHRASE Label="la_Logged_in_as" Type="1">TG9nZ2VkIGluIGFz</PHRASE>
<PHRASE Label="la_Text_Images" Type="1">SW1hZ2Vz</PHRASE>
<PHRASE Label="la_Text_Locked" Type="1">TG9ja2Vk</PHRASE>
<PHRASE Label="la_text_Thumbnail_Image" Type="1">VGh1bWJuYWlsIEltYWdl</PHRASE>
<PHRASE Label="la_text_Same_As_Thumbnail" Type="1">U2FtZSBhcyB0aHVtYm5haWw=</PHRASE>
<PHRASE Label="la_Description_in-portal:site" Type="1">TWFuYWdlIHRoZSBzdHJ1Y3R1cmUgb2YgeW91ciBzaXRlLCBpbmNsdWRpbmcgY2F0ZWdvcmllcywgaXRlbXMgYW5kIGNhdGVvZ3J5IHNldHRpbmdzLg==</PHRASE>
<PHRASE Label="la_Description_in-portal:users" Type="1">TWFuYWdlIHVzZXJzIGFuZCBncm91cHMsIHNldCB1c2VyICYgZ3JvdXAgcGVybWlzc2lvbnMgYW5kIGRlZmluZSB1c2VyIHNldHRpbmdzLg==</PHRASE>
<PHRASE Label="la_Description_in-portal:modules" Type="1">TWFuYWdlIHNldHRpbmdzIG9mIGFsbCBtb2R1bGVzIHdoaWNoIGFyZSBpbnN0YWxsZWQgb24geW91ciBJbi1wb3J0YWwgc3lzdGVtLg==</PHRASE>
<PHRASE Label="la_Description_in-portal:reports" Type="1">VmlldyBzeXN0ZW0gc3RhdGlzdGljcywgbG9ncyBhbmQgcmVwb3J0cw==</PHRASE>
<PHRASE Label="la_Description_in-portal:help" Type="1">SGVscCBzZWN0aW9uIGZvciBJbi1wb3J0YWwgYW5kIGFsbCBvZiBpdHMgbW9kdWxlcy4gQWxzbyBhY2Nlc3NpYmxlIHZpYSB0aGUgc2VjdGlvbi1zcGVjaWZpYyBpbnRlcmFjaXZlIGhlbHAgZmVhdHVyZS4=</PHRASE>
<PHRASE Label="la_Description_in-portal:tools" Type="1">VXNlIHZhcmlvdXMgSW4tcG9ydGFsIGRhdGEgbWFuYWdlbWVudCB0b29scywgaW5jbHVkaW5nIGJhY2t1cCwgcmVzdG9yZSwgaW1wb3J0IGFuZCBleHBvcnQ=</PHRASE>
<PHRASE Label="la_Description_in-portal:system" Type="1">TWFuYWdlIHN5c3RlbS13aWRlIHNldHRpbmdzLCBlZGl0IHRoZW1lcyBhbmQgbGFuZ3VhZ2Vz</PHRASE>
<PHRASE Label="la_Text_None" Type="1">Tm9uZQ==</PHRASE>
<PHRASE Label="lu_PermName_Category.View_desc" Type="0">VmlldyBDYXRlZ29yeQ==</PHRASE>
<PHRASE Label="lu_PermName_Category.Modify_desc" Type="0">TW9kaWZ5IENhdGVnb3J5</PHRASE>
<PHRASE Label="lu_PermName_Category.Add_desc" Type="0">QWRkIENhdGVnb3J5</PHRASE>
<PHRASE Label="la_ToolTip_New_Permission" Type="1">TmV3IFBlcm1pc3Npb24=</PHRASE>
<PHRASE Label="lu_PermName_Category.Delete_desc" Type="0">RGVsZXRlIENhdGVnb3J5</PHRASE>
<PHRASE Label="lu_PermName_Category.AddPending_desc" Type="0">QWRkIFBlbmRpbmcgQ2F0ZWdvcnk=</PHRASE>
<PHRASE Label="lu_PermName_Link.Add_desc" Type="0">QWRkIExpbms=</PHRASE>
<PHRASE Label="lu_PermName_Link.View_desc" Type="0">VmlldyBMaW5r</PHRASE>
<PHRASE Label="lu_PermName_Link.Add.Pending_desc" Type="0">UGVuZGluZyBMaW5r</PHRASE>
<PHRASE Label="lu_PermName_Link.Modify_desc" Type="0">TW9kaWZ5IExpbms=</PHRASE>
<PHRASE Label="lu_PermName_Link.Delete_desc" Type="0">RGVsZXRlIExpbms=</PHRASE>
<PHRASE Label="lu_PermName_Link.Rate_desc" Type="0">UmF0ZSBMaW5r</PHRASE>
<PHRASE Label="lu_PermName_Link.Review_desc" Type="0">UmV2aWV3IExpbms=</PHRASE>
<PHRASE Label="lu_PermName_Topic.View_desc" Type="0">VmlldyBUb3BpYw==</PHRASE>
<PHRASE Label="lu_PermName_Topic.Add_desc" Type="0">QWRkIFRvcGlj</PHRASE>
<PHRASE Label="lu_PermName_Topic.Add.Pending_desc" Type="0">QWRkIFBlbmRpbmcgVG9waWM=</PHRASE>
<PHRASE Label="lu_PermName_Topic.Delete_desc" Type="0">RGVsZXRlIFRvcGlj</PHRASE>
<PHRASE Label="lu_PermName_Topic.Modify_desc" Type="0">TW9kaWZ5IFRvcGlj</PHRASE>
<PHRASE Label="lu_PermName_Topic.Reply.Delete_desc" Type="0">RGVsZXRlIFRvcGlj</PHRASE>
<PHRASE Label="lu_PermName_Topic.Reply.View_desc" Type="0">VmlldyBUb3BpYyBSZXBseQ==</PHRASE>
<PHRASE Label="lu_PermName_Topic.Reply.Add_desc" Type="0">QWRkIFRvcGljIFJlcGx5</PHRASE>
<PHRASE Label="lu_PermName_Topic.Rate_desc" Type="0">UmF0ZSBUb3BpYw==</PHRASE>
<PHRASE Label="lu_PermName_Topic.Review_desc" Type="0">UmV2aWV3IFRvcGlj</PHRASE>
<PHRASE Label="lu_PermName_News.Rate_desc" Type="0">UmF0ZSBOZXdz</PHRASE>
<PHRASE Label="lu_PermName_Topic.Reply.Modify_desc" Type="0">UmVwbHkgVG9waWMgTW9kaWZ5</PHRASE>
<PHRASE Label="lu_PermName_News.Review_desc" Type="0">UmV2aWV3IE5ld3M=</PHRASE>
<PHRASE Label="lu_PermName_News.View_desc" Type="0">VmlldyBOZXdz</PHRASE>
<PHRASE Label="lu_PermName_News.Add_desc" Type="0">QWRkIE5ld3M=</PHRASE>
<PHRASE Label="lu_PermName_News.Delete_desc" Type="0">RGVsZXRlIE5ld3M=</PHRASE>
<PHRASE Label="lu_PermName_News.Modify_desc" Type="0">TW9kaWZ5IE5ld3M=</PHRASE>
<PHRASE Label="lu_PermName_News.Add.Pending_desc" Type="0">QWRkIFBlbmRpbmcgTmV3cw==</PHRASE>
<PHRASE Label="la_tab_SendMail" Type="1">U2VuZCBlLW1haWw=</PHRASE>
<PHRASE Label="la_prompt_To" Type="1">VG8=</PHRASE>
<PHRASE Label="la_prompt_Subject" Type="1">U3ViamVjdA==</PHRASE>
<PHRASE Label="la_prompt_Attatchment" Type="1">QXR0YWNobWVudA==</PHRASE>
<PHRASE Label="la_tab_Message" Type="1">TWVzc2FnZQ==</PHRASE>
<PHRASE Label="la_Text_DataType_1" Type="1">Y2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="la_Text_Search_Results" Type="1">U2VhcmNoIFJlc3VsdHM=</PHRASE>
<PHRASE Label="la_Text_No_permissions" Type="1">Tm8gcGVybWlzc2lvbnM=</PHRASE>
<PHRASE Label="la_Text_Blank_Field" Type="1">QmxhbmsgdXNlcm5hbWUgb3IgcGFzc3dvcmQ=</PHRASE>
<PHRASE Label="la_Text_Full" Type="1">RnVsbA==</PHRASE>
<PHRASE Label="la_Text_Group_Name" Type="1">R3JvdXAgTmFtZQ==</PHRASE>
<PHRASE Label="la_Text_User_Count" Type="1">VXNlciBDb3VudA==</PHRASE>
<PHRASE Label="la_Description_in-portal:configure_categories" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGdlbmVyYWwgY2F0ZWdvcnkgc2V0dGluZ3M=</PHRASE>
<PHRASE Label="la_Description_in-portal:configuration_custom" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGNhdGVnb3J5IGN1c3RvbSBmaWVsZHM=</PHRASE>
<PHRASE Label="la_Text_Primary" Type="1">UHJpbWFyeQ==</PHRASE>
<PHRASE Label="la_prompt_TopicId" Type="1">VG9waWMgSUQ=</PHRASE>
<PHRASE Label="la_prompt_PostedBy" Type="1">UG9zdGVkIGJ5</PHRASE>
<PHRASE Label="la_Description_in-portal:user_list" Type="1">VGhpcyBzZWN0aW9ucyBhbGxvd3MgdG8gbWFuYWdlIHVzZXJzLCB0aGVpciBwZXJtaXNzaW9ucyBhbmQgcGVyZm9ybSBtYXNzIGVtYWls</PHRASE>
<PHRASE Label="la_Description_in-portal:user_groups" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYWdhbmUgZ3JvdXBzLCBhc3NpZ24gdXNlcnMgdG8gZ3JvdXBzIGFuZCBwZXJmb3JtIG1hc3MgZW1haWwgc2VuZGluZw==</PHRASE>
<PHRASE Label="la_Text_Categories" Type="1">Q2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="la_tab_ConfigSettings" Type="1">R2VuZXJhbCBTZXR0aW5ncw==</PHRASE>
<PHRASE Label="la_users_allow_new" Type="1">QWxsb3cgbmV3IHVzZXIgcmVnaXN0cmF0aW9u</PHRASE>
<PHRASE Label="la_users_email_validate" Type="1">VmFsaWRhdGUgZS1tYWlsIGFkZHJlc3M=</PHRASE>
<PHRASE Label="la_users_password_auto" Type="1">QXNzaWduIHBhc3N3b3JkIGF1dG9tYXRpY2FsbHk=</PHRASE>
<PHRASE Label="la_Text_Restrictions" Type="1">UmVzdHJpY3Rpb25z</PHRASE>
<PHRASE Label="la_users_votes_deny" Type="1">TnVtYmVyIG9mIGRheXMgdG8gZGVueSBtdWx0aXBsZSB2b3RlcyBmcm9tIHRoZSBzYW1lIHVzZXI=</PHRASE>
<PHRASE Label="la_users_review_deny" Type="1">TnVtYmVyIG9mIGRheXMgdG8gZGVueSBtdWx0aXBsZSByZXZpZXdzIGZyb20gdGhlIHNhbWUgdXNlcg==</PHRASE>
<PHRASE Label="la_User_Instant" Type="1">SW5zdGFudA==</PHRASE>
<PHRASE Label="la_User_Not_Allowed" Type="1">Tm90IEFsbG93ZWQ=</PHRASE>
<PHRASE Label="la_User_Upon_Approval" Type="1">VXBvbiBBcHByb3ZhbA==</PHRASE>
<PHRASE Label="la_prompt_SearchType" Type="1">U2VhcmNoIFR5cGU=</PHRASE>
<PHRASE Label="la_prompt_Keyword" Type="1">S2V5d29yZA==</PHRASE>
<PHRASE Label="la_prompt_Frequency" Type="1">RnJlcXVlbmN5</PHRASE>
<PHRASE Label="la_prompt_Parameter" Type="1">UGFyYW1ldGVy</PHRASE>
<PHRASE Label="la_prompt_Value" Type="1">VmFsdWU=</PHRASE>
<PHRASE Label="la_Description_in-portal:configure_users" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGdlbmVyYWwgdXNlciBzZXR0aW5ncw==</PHRASE>
<PHRASE Label="la_Description_in-portal:user_custom" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIHVzZXIgY3VzdG9tIGZpZWxkcw==</PHRASE>
<PHRASE Label="la_Description_in-link" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbGluayBzZXR0aW5ncw==</PHRASE>
<PHRASE Label="la_Description_in-news" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBzZXR0aW5ncw==</PHRASE>
<PHRASE Label="la_Description_in-bulletin" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tQnVsbGV0aW4gc2V0dGluZ3M=</PHRASE>
<PHRASE Label="la_config_server_name" Type="1">U2VydmVyIE5hbWU=</PHRASE>
<PHRASE Label="la_config_server_path" Type="1">U2VydmVyIFBhdGg=</PHRASE>
<PHRASE Label="la_config_web_address" Type="1">V2ViIGFkZHJlc3M=</PHRASE>
<PHRASE Label="la_prompt_Label" Type="1">TGFiZWw=</PHRASE>
<PHRASE Label="la_prompt_PrimaryValue" Type="1">UHJpbWFyeSBWYWx1ZQ==</PHRASE>
<PHRASE Label="la_Text_Admin" Type="1">QWRtaW4=</PHRASE>
<PHRASE Label="la_Text_Front" Type="1">RnJvbnQ=</PHRASE>
<PHRASE Label="la_Text_Label" Type="1">TGFiZWw=</PHRASE>
<PHRASE Label="la_prompt_PhraseId" Type="1">UGhyYXNlIElk</PHRASE>
<PHRASE Label="la_prompt_PhraseType" Type="1">UGhyYXNlIFR5cGU=</PHRASE>
<PHRASE Label="la_Text_Both" Type="1">Qm90aA==</PHRASE>
<PHRASE Label="la_tab_Settings" Type="1">R2VuZXJhbCBTZXR0aW5ncw==</PHRASE>
<PHRASE Label="la_Text_Licence" Type="1">TGljZW5zZQ==</PHRASE>
<PHRASE Label="la_config_name" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_config_company" Type="1">Q29tcGFueQ==</PHRASE>
<PHRASE Label="la_config_reg_number" Type="1">UmVnaXN0cmF0aW9uIE51bWJlcg==</PHRASE>
<PHRASE Label="la_Text_Website" Type="1">V2Vic2l0ZQ==</PHRASE>
<PHRASE Label="la_config_website_name" Type="1">V2Vic2l0ZSBuYW1l</PHRASE>
<PHRASE Label="la_config_website_address" Type="1">V2Vic2l0ZSBhZGRyZXNz</PHRASE>
<PHRASE Label="la_Text_Date_Time_Settings" Type="1">RGF0ZS9UaW1lIFNldHRpbmdz</PHRASE>
<PHRASE Label="la_config_time_server" Type="1">VGltZSB6b25lIG9mIHRoZSBzZXJ2ZXI=</PHRASE>
<PHRASE Label="la_config_site_zone" Type="1">VGltZSB6b25lIG9mIHRoZSBzaXRl</PHRASE>
<PHRASE Label="la_m12" Type="1">KEdNVCAtMTI6MDAp</PHRASE>
<PHRASE Label="la_m11" Type="1">KEdNVCAtMTE6MDAp</PHRASE>
<PHRASE Label="la_m10" Type="1">KEdNVCAtMTA6MDAp</PHRASE>
<PHRASE Label="la_m9" Type="1">KEdNVCAtMDk6MDAp</PHRASE>
<PHRASE Label="la_m8" Type="1">KEdNVCAtMDg6MDAp</PHRASE>
<PHRASE Label="la_m7" Type="1">KEdNVCAtMDc6MDAp</PHRASE>
<PHRASE Label="la_m6" Type="1">KEdNVCAtMDY6MDAp</PHRASE>
<PHRASE Label="la_m5" Type="1">KEdNVCAtMDU6MDAp</PHRASE>
<PHRASE Label="la_m4" Type="1">KEdNVCAtMDQ6MDAp</PHRASE>
<PHRASE Label="la_m3" Type="1">KEdNVCAtMDM6MDAp</PHRASE>
<PHRASE Label="la_m2" Type="1">KEdNVCAtMDI6MDAp</PHRASE>
<PHRASE Label="la_m1" Type="1">KEdNVCAtMDE6MDAp</PHRASE>
<PHRASE Label="la_m0" Type="1">KEdNVCk=</PHRASE>
<PHRASE Label="la_p1" Type="1">KEdNVCArMDE6MDAp</PHRASE>
<PHRASE Label="la_p2" Type="1">KEdNVCArMDI6MDAp</PHRASE>
<PHRASE Label="la_p3" Type="1">KEdNVCArMDM6MDAp</PHRASE>
<PHRASE Label="la_p4" Type="1">KEdNVCArMDQ6MDAp</PHRASE>
<PHRASE Label="la_p5" Type="1">KEdNVCArMDU6MDAp</PHRASE>
<PHRASE Label="la_p6" Type="1">KEdNVCArMDY6MDAp</PHRASE>
<PHRASE Label="la_p7" Type="1">KEdNVCArMDc6MDAp</PHRASE>
<PHRASE Label="la_p8" Type="1">KEdNVCArMDg6MDAp</PHRASE>
<PHRASE Label="la_p9" Type="1">KEdNVCArMDk6MDAp</PHRASE>
<PHRASE Label="la_p10" Type="1">KEdNVCArMTA6MDAp</PHRASE>
<PHRASE Label="la_p11" Type="1">KEdNVCArMTE6MDAp</PHRASE>
<PHRASE Label="la_p12" Type="1">KEdNVCArMTI6MDAp</PHRASE>
<PHRASE Label="la_p13" Type="1">KEdNVCArMTM6MDAp</PHRASE>
<PHRASE Label="la_Text_Archived" Type="1">QXJjaGl2ZWQ=</PHRASE>
<PHRASE Label="la_Text_Views" Type="1">Vmlld3M=</PHRASE>
<PHRASE Label="la_Text_Replies" Type="1">UmVwbGllcw==</PHRASE>
<PHRASE Label="la_Prompt_GeneralPermissions" Type="1">R2VuZXJhbCBQZXJtaXNzaW9ucw==</PHRASE>
<PHRASE Label="la_PermType_AdminSection" Type="1">QWRtaW5pc3RyYXRpb24=</PHRASE>
<PHRASE Label="la_PermType_FrontEnd" Type="1">RnJvbnQgRW5k</PHRASE>
<PHRASE Label="la_PermName_Admin_desc" Type="1">QWxsb3dzIGFjY2VzcyB0byB0aGUgQWRtaW5pc3RyYXRpb24gdXRpbGl0eQ==</PHRASE>
<PHRASE Label="la_tab_Group" Type="1">R3JvdXA=</PHRASE>
<PHRASE Label="la_Prompt_SystemPermissions" Type="1">U3lzdGVtIHByZW1pc3Npb25z</PHRASE>
<PHRASE Label="la_Text_DataType_6" Type="1">dXNlcnM=</PHRASE>
<PHRASE Label="la_Description_in-link:configuration_output" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbGluayBvdXRwdXQgc2V0dGluZ3M=</PHRASE>
<PHRASE Label="la_Description_in-news:configuration_output" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBvdXRwdXQgc2V0dGluZ3M=</PHRASE>
<PHRASE Label="la_Description_in-news:configuration_search" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBkZWZhdWx0IHNlYXJjaCBjb25maWd1cmF0aW9u</PHRASE>
<PHRASE Label="la_Description_in-news:configuration_email" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBlbWFpbCBjb25maWd1cmF0aW9u</PHRASE>
<PHRASE Label="la_Description_in-news:configuration_custom" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBjdXN0b20gZmllbGRz</PHRASE>
<PHRASE Label="la_Description_in-bulletin:configuration_output" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tYnVsbHRlaW4gb3V0cHV0IHNldHRpbmdz</PHRASE>
<PHRASE Label="la_Description_in-bulletin:configuration_search" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tYnVsbHRlaW4gZGVmYXVsdCBzZWFyY2ggc2V0dGluZ3M=</PHRASE>
<PHRASE Label="la_Description_in-bulletin:configuration_email" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tYnVsbHRlaW4gZW1haWwgc2V0dGluZ3M=</PHRASE>
<PHRASE Label="la_Description_in-portal:configure_themes" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlbWVzIGFuZCBlZGl0IHRoZSBpbmRpdmlkdWFsIHRlbXBsYXRlcw==</PHRASE>
<PHRASE Label="la_Description_in-portal:configure_lang" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgcmVnaW9uYWwgc2V0dGluZ3MsIG1hbmFnZSBhbmQgZWRpdCBsYW5ndWFnZXM=</PHRASE>
<PHRASE Label="la_Description_in-portal:inlink_inport" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBpbXBvcnQgZGF0YSBmcm9tIG90aGVyIHByb2dyYW1zIGludG8gSW4tcG9ydGFs</PHRASE>
<PHRASE Label="la_ToolTip_AddUserToGroup" Type="1">QWRkIFVzZXIgVG8gR3JvdXA=</PHRASE>
<PHRASE Label="la_Prompt_Attention" Type="1">QXR0ZW50aW9uIQ==</PHRASE>
<PHRASE Label="la_Text_Items" Type="1">SXRlbXM=</PHRASE>
<PHRASE Label="la_Prompt_Backup_Status" Type="1">QmFja3VwIHN0YXR1cw==</PHRASE>
<PHRASE Label="la_prompt_Backup_Path" Type="1">QmFja3VwIFBhdGg=</PHRASE>
<PHRASE Label="la_Prompt_Step_One" Type="1">U3RlcCBPbmU=</PHRASE>
<PHRASE Label="la_text_Backup_in_progress" Type="1">QmFja3VwIGluIHByb2dyZXNz</PHRASE>
<PHRASE Label="la_Title_PleaseWait" Type="1">UGxlYXNlIFdhaXQ=</PHRASE>
<PHRASE Label="la_Text_Backup_Info" Type="1">VGhpcyB1dGlsaXR5IGFsbG93cyB5b3UgdG8gYmFja3VwIHlvdXIgY3VycmVudCBkYXRhIGZyb20gSW4tUG9ydGFsIGRhdGFiYXNlLg==</PHRASE>
<PHRASE Label="la_Text_Restore_Warning" Type="1">IFJ1bm5pbmcgdGhpcyB1dGlsaXR5IHdpbGwgYWZmZWN0IHlvdXIgZGF0YWJhc2UuICBQbGVhc2UgYmUgYWR2aXNlZCB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgdXRpbGl0eSBhdCB5b3VyIG93biByaXNrLiAgSW50ZWNobmljIGNvcnBvcmF0aW9uIGNhbiBub3QgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBjb3JydXB0IGRhdGEgb3IgZGF0YSBsb3NzLiAgUGxlYXNlIG1ha2Ugc3VyZSB0byBiYWNrIHVwIHlvdXIgZGF0YWJhc2UocykgYmVmb3JlIHJ1bm5p</PHRASE>
<PHRASE Label="la_Prompt_Backup_Date" Type="1">QmFjayBVcCBEYXRl</PHRASE>
<PHRASE Label="la_Prompt_Restore_Filechoose" Type="1">Q2hvb3NlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGJhY2t1cCBkYXRlcyB0byByZXN0b3JlIG9yIGRlbGV0ZQ==</PHRASE>
<PHRASE Label="la_ToolTip_Restore" Type="1">UmVzdG9yZQ==</PHRASE>
<PHRASE Label="la_text_Restore_in_progress" Type="1">UmVzdG9yZSBpcyBpbiBwcm9ncmVzcw==</PHRASE>
<PHRASE Label="la_Prompt_Restore_Success" Type="1">UmVzdG9yZSBoYXMgYmVlbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5</PHRASE>
<PHRASE Label="la_Prompt_Restore_Failed" Type="1">UmVzdG9yZSBoYXMgZmFpbGVkIGFuIGVycm9yIG9jY3VyZWQ6</PHRASE>
<PHRASE Label="la_Prompt_Restore_Status" Type="1">UmVzdG9yZSBTdGF0dXM=</PHRASE>
<PHRASE Label="la_Title_SendInit" Type="1">UHJlcGFyaW5nIHRvIFNlbmQgTWFpbA==</PHRASE>
<PHRASE Label="la_Title_SendMailInit" Type="1">UHJlcGFyaW5nIHRvIFNlbmQgTWVzc2FnZXM=</PHRASE>
<PHRASE Label="la_Title_SendMailProgress" Type="1">U2VuZGluZyBNZXNzYWdlLi4=</PHRASE>
<PHRASE Label="la_Title_SendMailComplete" Type="1">TWFpbCBoYXMgYmVlbiBzZW50IFN1Y2Nlc3NmdWxseQ==</PHRASE>
<PHRASE Label="la_prompt_EmailInitMessage" Type="1">UGxlYXNlIFdhaXQgd2hpbGUgSW4tUG9ydGFsIHByZXBhcmVzIHRvIHNlbmQgdGhlIG1lc3NhZ2UuLg==</PHRASE>
<PHRASE Label="la_prompt_EmailCompleteMessage" Type="1">VGhlIEVtYWlsIE1lc3NhZ2UgaGFzIGJlZW4gc2VudA==</PHRASE>
<PHRASE Label="la_prompt_EmailCancelMessage" Type="1">RW1haWwgZGVsaXZlcnkgYWJvcnRlZA==</PHRASE>
<PHRASE Label="la_Close" Type="1">Q2xvc2U=</PHRASE>
<PHRASE Label="la_Text_Complete" Type="1">Q29tcGxldGU=</PHRASE>
<PHRASE Label="la_PermType_Admin" Type="1">UGVybWlzc2lvbiBUeXBlIEFkbWlu</PHRASE>
<PHRASE Label="la_PermType_Front" Type="1">UGVybWlzc2lvbiBUeXBlIEZyb250IEVuZA==</PHRASE>
<PHRASE Label="lu_nav_addlink" Type="0">QWRkIExpbms=</PHRASE>
<PHRASE Label="la_Text_Template" Type="1">VGVtcGxhdGU=</PHRASE>
<PHRASE Label="la_prompt_FileId" Type="1">RmlsZSBJZA==</PHRASE>
<PHRASE Label="la_prompt_FileName" Type="1">RmlsZSBuYW1l</PHRASE>
<PHRASE Label="lu_top_rated" Type="0">VG9wIFJhdGVkIExpbmtz</PHRASE>
<PHRASE Label="lu_pop_links" Type="0">TW9zdCBQb3B1bGFyIExpbmtz</PHRASE>
<PHRASE Label="lu_new_links" Type="0">TmV3IExpbmtz</PHRASE>
<PHRASE Label="lu_editors_pick" Type="0">RWRpdG9ycyBQaWNr</PHRASE>
<PHRASE Label="lu_msg_welcome" Type="0">V2VsY29tZQ==</PHRASE>
<PHRASE Label="la_Text_Type" Type="1">VHlwZQ==</PHRASE>
<PHRASE Label="lu_advanced_search_link" Type="0">QWR2YW5jZWQ=</PHRASE>
<PHRASE Label="la_Text_Events" Type="1">RXZlbnRz</PHRASE>
<PHRASE Label="lu_added_today" Type="0">QWRkZWQgVG9kYXk=</PHRASE>
<PHRASE Label="la_prompt_MessageType" Type="1">Rm9ybWF0</PHRASE>
<PHRASE Label="la_prompt_FromUser" Type="1">RnJvbS9UbyBVc2Vy</PHRASE>
<PHRASE Label="lu_page" Type="0">UGFnZQ==</PHRASE>
<PHRASE Label="lu_action_box_title" Type="0">QWN0aW9uIEJveA==</PHRASE>
<PHRASE Label="lu_zoom" Type="0">Wm9vbQ==</PHRASE>
<PHRASE Label="lu_categories_updated" Type="0">Y2F0ZWdvcmllcyB1cGRhdGVk</PHRASE>
<PHRASE Label="lu_links_updated" Type="0">bGlua3MgdXBkYXRlZA==</PHRASE>
<PHRASE Label="lu_related_categories" Type="0">UmVsYXRlZCBDYXRlZ29yaWVz</PHRASE>
<PHRASE Label="lu_total_categories" Type="0">VG90YWwgQ2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="lu_details" Type="0">RGV0YWlscw==</PHRASE>
<PHRASE Label="lu_send" Type="0">U2VuZA==</PHRASE>
<PHRASE Label="lu_recommend_title" Type="0">UmVjb21tZW5kIHRvIGEgZnJpZW5k</PHRASE>
<PHRASE Label="lu_posts" Type="0">cG9zdHM=</PHRASE>
<PHRASE Label="lu_in" Type="0">aW4=</PHRASE>
<PHRASE Label="lu_total_news" Type="0">VG90YWwgQXJ0aWNsZXM=</PHRASE>
<PHRASE Label="lu_news_updated" Type="0">bmV3cyB1cGRhdGVk</PHRASE>
<PHRASE Label="lu_posts_updated" Type="0">cG9zdHMgdXBkYXRlZA==</PHRASE>
<PHRASE Label="lu_search_tips_link" Type="0">U2VhcmNoIFRpcHM=</PHRASE>
<PHRASE Label="lu_my_favorites" Type="0">TXkgRmF2b3JpdGVz</PHRASE>
<PHRASE Label="lu_my_friends" Type="0">TXkgRnJpZW5kcw==</PHRASE>
<PHRASE Label="lu_my_preferences" Type="0">TXkgUHJlZmVyZW5jZXM=</PHRASE>
<PHRASE Label="lu_login_information" Type="0">TG9naW4gSW5mb3JtYXRpb24=</PHRASE>
<PHRASE Label="lu_contact_information" Type="0">Q29udGFjdCBJbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="lu_profile_updated" Type="0">cHJvZmlsZSB1cGRhdGVk</PHRASE>
<PHRASE Label="lu_help" Type="0">aGVscA==</PHRASE>
<PHRASE Label="lu_update" Type="0">VXBkYXRl</PHRASE>
<PHRASE Label="lu_cancel" Type="0">Q2FuY2Vs</PHRASE>
<PHRASE Label="lu_password_again" Type="0">UGFzc3dvcmQgQWdhaW4=</PHRASE>
<PHRASE Label="lu_pp_firstname" Type="0">Rmlyc3QgTmFtZQ==</PHRASE>
<PHRASE Label="lu_pp_lastname" Type="0">TGFzdCBOYW1l</PHRASE>
<PHRASE Label="lu_pp_phone" Type="0">UGhvbmU=</PHRASE>
<PHRASE Label="lu_pp_email" Type="0">RS1tYWls</PHRASE>
<PHRASE Label="lu_pp_street" Type="0">U3RyZWV0</PHRASE>
<PHRASE Label="lu_pp_city" Type="0">Q2l0eQ==</PHRASE>
<PHRASE Label="lu_pp_state" Type="0">U3RhdGU=</PHRASE>
<PHRASE Label="lu_pp_zip" Type="0">Wmlw</PHRASE>
<PHRASE Label="lu_my_links" Type="0">TXkgTGlua3M=</PHRASE>
<PHRASE Label="lu_my_articles" Type="0">TXkgQXJ0aWNsZXM=</PHRASE>
<PHRASE Label="lu_my_topics" Type="0">TXkgVG9waWNz</PHRASE>
<PHRASE Label="lu_related_links" Type="0">UmVsYXRlZCBMaW5rcw==</PHRASE>
<PHRASE Label="lu_related_news" Type="0">UmVsYXRlZCBOZXdz</PHRASE>
<PHRASE Label="lu_reviews_updated" Type="0">cmV2aWV3cyB1cGRhdGVk</PHRASE>
<PHRASE Label="lu_link_details" Type="0">TGluayBEZXRhaWxz</PHRASE>
<PHRASE Label="lu_details_updated" Type="0">ZGV0YWlscyB1cGRhdGVk</PHRASE>
<PHRASE Label="lu_link_reviews" Type="0">TGluayBSZXZpZXdz</PHRASE>
<PHRASE Label="lu_prompt_username" Type="0">VXNlcm5hbWU=</PHRASE>
<PHRASE Label="lu_prompt_password" Type="0">UGFzc3dvcmQ=</PHRASE>
<PHRASE Label="lu_forgot_password_link" Type="0">Rm9yZ290IFBhc3N3b3Jk</PHRASE>
<PHRASE Label="lu_categories" Type="0">Q2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="la_users_new_group" Type="1">QXNzaWduIHJlZ2lzdGVyZWQgdXNlcnMgdG8gZ3JvdXA=</PHRASE>
<PHRASE Label="la_users_guest_group" Type="1">QXNzaWduIHVzZXJzIG5vdCBsb2dnZWQgaW4gdG8gZ3JvdXA=</PHRASE>
<PHRASE Label="lu_delete_confirm_title" Type="0">Q29uZmlybSBEZWxldGU=</PHRASE>
<PHRASE Label="lu_confirm_link_delete_subtitle" Type="0">WW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIGxpbmsgYmVsb3cu</PHRASE>
<PHRASE Label="lu_delete_link_question" Type="0">QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxpbms/</PHRASE>
<PHRASE Label="lu_my_news" Type="0">TXkgTmV3cw==</PHRASE>
<PHRASE Label="lu_news_details" Type="0">TmV3cyBEZXRhaWxz</PHRASE>
<PHRASE Label="lu_prompt_review" Type="0">UmV2aWV3Og==</PHRASE>
<PHRASE Label="lu_required_field" Type="0">UmVxdWlyZWQgRmllbGQ=</PHRASE>
<PHRASE Label="lu_remove_from_favorites" Type="0">UmVtb3ZlIEZyb20gRmF2b3JpdGVz</PHRASE>
<PHRASE Label="lu_error_title" Type="0">RXJyb3I=</PHRASE>
<PHRASE Label="lu_searched_for" Type="0">U2VhcmNoZWQgRm9yOg==</PHRASE>
<PHRASE Label="lu_search_again" Type="0">U2VhcmNoIEFnYWlu</PHRASE>
<PHRASE Label="lu_new_users" Type="0">TmV3IFVzZXJz</PHRASE>
<PHRASE Label="lu_existing_users" Type="0">RXhpc3RpbmcgVXNlcnM=</PHRASE>
<PHRASE Label="lu_register_text" Type="2">UmVnaXN0ZXIgd2l0aCBJbi1Qb3J0YWwgZm9yIGNvbnZlbmllbnQgYWNjZXNzIHRvIHVzZXIgYWNjb3VudCBzZXR0aW5ncyBhbmQgcHJlZmVyZW5jZXMu</PHRASE>
<PHRASE Label="lu_login_title" Type="0">TG9naW4=</PHRASE>
<PHRASE Label="lu_or" Type="0">b3I=</PHRASE>
<PHRASE Label="lu_forgot_password" Type="0">Rm9yZ290IFBhc3N3b3Jk</PHRASE>
<PHRASE Label="lu_found" Type="0">Rm91bmQ6</PHRASE>
<PHRASE Label="lu_rate_link" Type="0">UmF0ZSBMaW5r</PHRASE>
<PHRASE Label="lu_link_rate_confirm" Type="0">TGluayBSYXRpbmcgUmVzdWx0cw==</PHRASE>
<PHRASE Label="lu_link_rate_confirm_duplicate_text" Type="0">WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIGxpbmsu</PHRASE>
<PHRASE Label="lu_link_rate_confirm_text" Type="0">VGhhbmsgZm9yIHJhdGluZyB0aGlzIGxpbmsuICBZb3VyIGlucHV0IGhhcyBiZWVuIHJlY29yZGVkLg==</PHRASE>
<PHRASE Label="lu_my_info" Type="0">TXkgUHJvZmlsZQ==</PHRASE>
<PHRASE Label="lu_review_link" Type="0">UmV2aWV3IExpbms=</PHRASE>
<PHRASE Label="lu_link_review_confirm" Type="0">TGluayBSZXZpZXcgUmVzdWx0cw==</PHRASE>
<PHRASE Label="lu_category_information" Type="0">Q2F0ZWdvcnkgSW5mb3JtYXRpb24=</PHRASE>
<PHRASE Label="lu_prompt_catname" Type="0">Q2F0ZWdvcnkgTmFtZQ==</PHRASE>
<PHRASE Label="lu_prompt_catdesc" Type="0">RGVzY3JpcHRpb24=</PHRASE>
<PHRASE Label="lu_prompt_metadesc" Type="0">TWV0YSBUYWcgRGVzY3JpcHRpb24=</PHRASE>
<PHRASE Label="lu_prompt_metakeywords" Type="0">TWV0YSBUYWcgS2V5d29yZHM=</PHRASE>
<PHRASE Label="lu_prompt_fullimage" Type="0">RnVsbC1TaXplIEltYWdlOg==</PHRASE>
<PHRASE Label="lu_prompt_thumbnail" Type="0">VGh1bWJuYWlsIEltYWdlOg==</PHRASE>
<PHRASE Label="lu_addcat_confirm" Type="0">U3VnZ2VzdCBDYXRlZ29yeSBSZXN1bHRz</PHRASE>
<PHRASE Label="lu_addcat_confirm_text" Type="0">VGhlIENhdGVnb3J5IHlvdSBzdWdnZXN0ZWQgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN5c3RlbS4=</PHRASE>
<PHRASE Label="lu_link_information" Type="0">TGluayBJbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="lu_prompt_linkname" Type="0">TGluayBOYW1l</PHRASE>
<PHRASE Label="lu_prompt_linkurl" Type="0">VVJM</PHRASE>
<PHRASE Label="lu_prompt_linkdesc" Type="0">RGVzY3JpcHRpb24=</PHRASE>
<PHRASE Label="lu_addlink_confirm" Type="0">QWRkIExpbmsgUmVzdWx0cw==</PHRASE>
<PHRASE Label="lu_addlink_confirm_text" Type="0">VGhlIGxpbmsgeW91IGhhdmUgc3VnZ2VzdGVkIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBkYXRhYmFzZS4=</PHRASE>
<PHRASE Label="lu_username" Type="0">VXNlcm5hbWU=</PHRASE>
<PHRASE Label="lu_pp_dob" Type="0">QmlydGhkYXRl</PHRASE>
<PHRASE Label="lu_account_info" Type="0">QWNjb3VudCBJbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="lu_profile" Type="0">UHJvZmlsZQ==</PHRASE>
<PHRASE Label="lu_current_value" Type="0">Q3VycmVudCBWYWx1ZQ==</PHRASE>
<PHRASE Label="lu_public_display" Type="0">RGlzcGxheSB0byBQdWJsaWM=</PHRASE>
<PHRASE Label="lu_prompt_avatar" Type="0">QXZhdGFyIEltYWdl</PHRASE>
<PHRASE Label="lu_prompt_perpage_topics" Type="0">VG9waWNzIFBlciBQYWdl</PHRASE>
<PHRASE Label="lu_prompt_perpage_posts" Type="0">UG9zdHMgUGVyIFBhZ2U=</PHRASE>
<PHRASE Label="lu_default_notify_owner" Type="0">Tm90aWZ5IG1lIG9uIGNoYW5nZXMgdG8gdG9waWNzIEkgY3JlYXRl</PHRASE>
<PHRASE Label="lu_default_bbcode" Type="0">RW5hYmxlIEJCQ29kZQ==</PHRASE>
<PHRASE Label="lu_default_signature" Type="0">QXR0YXRjaCBNeSBTaWduYXR1cmUgdG8gUG9zdHM=</PHRASE>
<PHRASE Label="lu_prompt_signature" Type="0">U2lnbmF0dXJl</PHRASE>
<PHRASE Label="lu_delete" Type="0">RGVsZXRl</PHRASE>
<PHRASE Label="lu_online" Type="0">T25saW5l</PHRASE>
<PHRASE Label="lu_offline" Type="0">T2ZmbGluZQ==</PHRASE>
<PHRASE Label="lu_hot" Type="0">SG90</PHRASE>
<PHRASE Label="lu_new" Type="0">TmV3</PHRASE>
<PHRASE Label="lu_Pop" Type="0">UG9wdWxhcg==</PHRASE>
<PHRASE Label="lu_top" Type="0">VG9wIFJhdGVk</PHRASE>
<PHRASE Label="la_Text_Version" Type="1">VmVyc2lvbg==</PHRASE>
<PHRASE Label="la_Text_Modules" Type="1">TW9kdWxlcw==</PHRASE>
<PHRASE Label="la_Text_Enable" Type="1">RW5hYmxl</PHRASE>
<PHRASE Label="la_Text_Disable" Type="1">RGlzYWJsZQ==</PHRASE>
<PHRASE Label="la_prompt_addmodule" Type="1">QWRkIE1vZHVsZQ==</PHRASE>
<PHRASE Label="la_Text_Installed" Type="1">SW5zdGFsbGVk</PHRASE>
<PHRASE Label="la_prompt_root_pass" Type="1">Um9vdCBQYXNzd29yZA==</PHRASE>
<PHRASE Label="la_prompt_root_pass_verify" Type="1">VmVyaWZ5IFJvb3QgUGFzc3dvcmQ=</PHRASE>
<PHRASE Label="la_prompt_ActiveCategories" Type="1">QWN0aXZlIENhdGVnb3JpZXM=</PHRASE>
<PHRASE Label="la_prompt_ActiveUsers" Type="1">QWN0aXZlIFVzZXJz</PHRASE>
<PHRASE Label="la_prompt_CurrentSessions" Type="1">Q3VycmVudCBTZXNzaW9ucw==</PHRASE>
<PHRASE Label="la_tab_EmailEvents" Type="1">RW1haWwgRXZlbnRz</PHRASE>
<PHRASE Label="la_event_category.add" Type="1">QWRkIENhdGVnb3J5</PHRASE>
<PHRASE Label="la_event_category.add.pending" Type="1">QWRkIFBlbmRpbmcgQ2F0ZWdvcnk=</PHRASE>
<PHRASE Label="la_event_category.approve" Type="1">QXBwcm92ZSBDYXRlZ29yeQ==</PHRASE>
<PHRASE Label="la_event_category.deny" Type="1">RGVueSBDYXRlZ29yeQ==</PHRASE>
<PHRASE Label="la_event_category.modify" Type="1">TW9kaWZ5IENhdGVnb3J5</PHRASE>
<PHRASE Label="la_event_category_delete" Type="1">RGVsZXRlIENhdGVnb3J5</PHRASE>
<PHRASE Label="la_event_user.add" Type="1">QWRkIFVzZXI=</PHRASE>
<PHRASE Label="la_event_user.add.pending" Type="1">QWRkIFBlbmRpbmcgVXNlcg==</PHRASE>
<PHRASE Label="la_event_user.approve" Type="1">QXBwcm92ZSBVc2Vy</PHRASE>
<PHRASE Label="la_event_user.deny" Type="1">RGVueSBVc2Vy</PHRASE>
<PHRASE Label="la_event_user.forgotpw" Type="1">Rm9yZ290IFBhc3N3b3Jk</PHRASE>
<PHRASE Label="la_event_user.validate" Type="1">VmFsaWRhdGUgVXNlcg==</PHRASE>
<PHRASE Label="la_event_link.add" Type="1">QWRkIExpbms=</PHRASE>
<PHRASE Label="la_event_link.add.pending" Type="1">QWRkIFBlbmRpbmcgTGluaw==</PHRASE>
<PHRASE Label="la_event_link.approve" Type="1">QXBwcm92ZSBQZW5kaW5nIExpbms=</PHRASE>
<PHRASE Label="la_event_link.deny" Type="1">RGVueSBMaW5r</PHRASE>
<PHRASE Label="la_event_link.modify" Type="1">TW9kaWZ5IExpbms=</PHRASE>
<PHRASE Label="la_event_link.modify.approve" Type="1">QXBwcm92ZSBMaW5rIE1vZGlmaWNhdGlvbg==</PHRASE>
<PHRASE Label="la_event_link.modify.deny" Type="1">RGVjbGluZSBsaW5rIG1vZGlmaWNhdGlvbg==</PHRASE>
<PHRASE Label="la_event_link.modify.pending" Type="1">TGluayBNb2RpZmljYXRpb24gUGVuZGluZw==</PHRASE>
<PHRASE Label="la_event_link.review.add" Type="1">TGluayBSZXZpZXcgQWRkZWQ=</PHRASE>
<PHRASE Label="la_event_link.review.add.pending" Type="1">UGVuZGluZyBSZXZpZXcgQWRkZWQ=</PHRASE>
<PHRASE Label="la_event_link.review.approve" Type="1">QXBwcm92ZSBMaW5rIFJldmlldw==</PHRASE>
<PHRASE Label="la_event_link.review.deny" Type="1">RGVjbGluZSBMaW5rIFJldmlldw==</PHRASE>
<PHRASE Label="la_event_article.add" Type="1">QWRkIEFydGljbGU=</PHRASE>
<PHRASE Label="la_event_article.approve" Type="1">QXBwcm92ZSBBcnRpY2xl</PHRASE>
<PHRASE Label="la_event_article.deny" Type="1">RGVjbGluZSBBcnRpY2xl</PHRASE>
<PHRASE Label="la_event_article.modify" Type="1">TW9kaWZ5IEFydGljbGU=</PHRASE>
<PHRASE Label="la_event_article.modify.approve" Type="1">QXBwcm92ZSBBcnRpY2xlIE1vZGlmaWNhdGlvbg==</PHRASE>
<PHRASE Label="la_event_article.modify.deny" Type="1">RGVjbGluZSBBcnRpY2xlIE1vZGlmaWNhdGlvbg==</PHRASE>
<PHRASE Label="la_event_article.review.add" Type="1">QXJ0aWNsZSBSZXZpZXcgQWRkZWQ=</PHRASE>
<PHRASE Label="la_event_article.review.add.pending" Type="1">UGVuZGluZyBBcnRpY2xlIFJldmlldyBBZGRlZA==</PHRASE>
<PHRASE Label="la_event_article.review.approve" Type="1">QXBwcm92ZSBBcnRpY2xlIFJldmlldw==</PHRASE>
<PHRASE Label="la_event_article.review.deny" Type="1">RGVjbGluZSBBcnRpY2xlIFJldmlldw==</PHRASE>
<PHRASE Label="la_event_topic.add" Type="1">VG9waWMgQWRkZWQ=</PHRASE>
<PHRASE Label="la_event_post.modify" Type="1">UG9zdCBNb2RpZmllZA==</PHRASE>
<PHRASE Label="la_event_post.add" Type="1">UG9zdCBBZGRlZA==</PHRASE>
<PHRASE Label="la_category_perpage__short_prompt" Type="1">Q2F0ZWdvcmllcyBQZXIgUGFnZSAoU2hvcnRsaXN0KQ==</PHRASE>
<PHRASE Label="la_topic_perpage_short_prompt" Type="1">VG9waWNzIFBlciBQYWdlIChTaG9ydGxpc3Qp</PHRASE>
<PHRASE Label="la_news_perpage_short_prompt" Type="1">QXJ0aWNsZXMgUGVyIFBhZ2UgKFNob3J0bGlzdCk=</PHRASE>
<PHRASE Label="la_review_perpage_prompt" Type="1">UmV2aWV3cyBQZXIgUGFnZQ==</PHRASE>
<PHRASE Label="la_review_perpage_short_prompt" Type="1">UmV2aWV3cyBQZXIgUGFnZSAoU2hvcnRsaXN0KQ==</PHRASE>
<PHRASE Label="la_news_MinVotes_prompt" Type="1">TWluaW11bSAjIG9mIHZvdGVzIGZvciByYXRpbmcgY29uc2lkZXJhdGlvbg==</PHRASE>
<PHRASE Label="la_ToolTip_Edit_Current_Category" Type="1">RWRpdCBDdXJyZW50IENhdGVnb3J5</PHRASE>
<PHRASE Label="la_title_Add_Module" Type="1">QWRkIE1vZHVsZQ==</PHRASE>
<PHRASE Label="la_prompt_Available_Modules" Type="1">TW9kdWxlcw==</PHRASE>
<PHRASE Label="la_Text_Install" Type="1">SW5zdGFsbA==</PHRASE>
<PHRASE Label="la_prompt_Install_Status" Type="1">SW5zdGFsbGF0aW9uIFN0YXR1cw==</PHRASE>
<PHRASE Label="la_text_ready_to_install" Type="1">UmVhZHkgdG8gSW5zdGFsbA==</PHRASE>
<PHRASE Label="la_ToolTip_Enable" Type="1">RW5hYmxl</PHRASE>
<PHRASE Label="la_ToolTip_Disable" Type="1">RGlzYWJsZQ==</PHRASE>
<PHRASE Label="la_prompt_session_management" Type="1">U2Vzc2lvbiBNYW5hZ2VtZW50IE1ldGhvZA==</PHRASE>
<PHRASE Label="lu_auto" Type="1">QXV0b21hdGlj</PHRASE>
<PHRASE Label="lu_cookies" Type="1">Q29va2llcw==</PHRASE>
<PHRASE Label="lu_query_string" Type="1">UXVlcnkgU3RyaW5n</PHRASE>
<PHRASE Label="la_prompt_session_timeout" Type="1">U2Vzc2lvbiBJbmFjdGl2aXR5IFRpbWVvdXQgKHNlY29uZHMp</PHRASE>
<PHRASE Label="la_Text_smtp_server" Type="1">U01UUCAobWFpbCkgU2VydmVy</PHRASE>
<PHRASE Label="la_prompt_mailserver" Type="1">TWFpbCBTZXJ2ZXIgQWRkcmVzcw==</PHRASE>
<PHRASE Label="la_prompt_mailport" Type="1">UG9ydCAoZS5nLiBwb3J0IDI1KQ==</PHRASE>
<PHRASE Label="la_prompt_mailauthenticate" Type="1">U2VydmVyIFJlcXVpcmVzIEF1dGhlbnRpY2F0aW9u</PHRASE>
<PHRASE Label="la_prompt_smtp_user" Type="1">TWFpbCBTZXJ2ZXIgVXNlcm5hbWU=</PHRASE>
<PHRASE Label="la_prompt_smtp_pass" Type="1">TWFpbCBTZXJ2ZXIgUGFzc3dvcmQ=</PHRASE>
<PHRASE Label="la_prompt_mailhtml" Type="1">U2VuZCBIVE1MIGVtYWls</PHRASE>
<PHRASE Label="la_prompt_smtpheaders" Type="1">QWRkaXRpb25hbCBNZXNzYWdlIEhlYWRlcnM=</PHRASE>
<PHRASE Label="la_prompt_AdminMailFrom" Type="1">TWVzc2FnZXMgZnJvbSBTaXRlIEFkbWluIGFyZSBmcm9t</PHRASE>
<PHRASE Label="la_prompt_Select_Source" Type="1">U2VsZWN0IFNvdXJjZSBMYW5ndWFnZQ==</PHRASE>
<PHRASE Label="la_prompt_icon_url" Type="1">SWNvbiBVUkw=</PHRASE>
<PHRASE Label="la_prompt_CopyLabels" Type="1">Q29weSBMYWJlbHMgdG8gdGhpcyBMYW5ndWFnZQ==</PHRASE>
<PHRASE Label="la_prompt_lang_cache_timeout" Type="1">TGFuZ3VhZ2UgQ2FjaGUgVGltZW91dA==</PHRASE>
<PHRASE Label="lu_new_topic" Type="0">TmV3IFRvcGlj</PHRASE>
<PHRASE Label="lu_register_confirm_text" Type="0">VGhhbmsgeW91IGZvciBSZWdpc3RlcmluZyEgIFBsZWFzZSBlbnRlciB5b3VyIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBiZWxvdw==</PHRASE>
<PHRASE Label="lu_register_confirm" Type="0">UmVnaXN0cmF0aW9uIENvbXBsZXRl</PHRASE>
<PHRASE Label="lu_select_language" Type="0">U2VsZWN0IExhbmd1YWdl</PHRASE>
<PHRASE Label="lu_show_signature" Type="0">U2hvdyBTaWduYXR1cmU=</PHRASE>
<PHRASE Label="lu_notify_owner" Type="0">Tm90aWZ5IG1lIHdoZW4gcG9zdHMgYXJlIG1hZGUgaW4gdGhpcyB0b3BpYw==</PHRASE>
<PHRASE Label="lu_bbcode" Type="0">QkJDb2Rl</PHRASE>
<PHRASE Label="lu_smileys" Type="0">U21pbGV5cw==</PHRASE>
<PHRASE Label="lu_add_topic" Type="0">QWRkIFRvcGlj</PHRASE>
<PHRASE Label="lu_newtopic_confirm" Type="0">QWRkIFRvcGljIFJlc3VsdHM=</PHRASE>
<PHRASE Label="lu_newtopic_confirm_text" Type="0">VGhlIFRvcGljIHlvdSBoYXZlIGNyZWF0ZWQgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN5c3RlbQ==</PHRASE>
<PHRASE Label="lu_newtopic_confirm_pending" Type="0">WW91ciB0b3BpYyBoYXMgYmVlbiBhZGRlZA==</PHRASE>
<PHRASE Label="lu_newtopic_confirm_pending_text" Type="0">VGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yIG11c3QgYXBwcm92ZSB5b3VyIHRvcGljIGJlZm9yZSBpdCBpcyBwdWJsaWNseSBhdmFpbGFibGUu</PHRASE>
<PHRASE Label="lu_view_threaded" Type="0">VmlldyBUaHJlYWRlZA==</PHRASE>
<PHRASE Label="lu_quote_reply" Type="0">UmVwbHkgUXVvdGVk</PHRASE>
<PHRASE Label="lu_joined" Type="0">Sm9pbmVk</PHRASE>
<PHRASE Label="lu_location" Type="0">TG9jYXRpb24=</PHRASE>
<PHRASE Label="lu_on_this_post" Type="0">b24gdGhpcyBwb3N0</PHRASE>
<PHRASE Label="lu_post" Type="0">UG9zdA==</PHRASE>
<PHRASE Label="lu_topic_reply" Type="0">UG9zdCBSZXBseQ==</PHRASE>
<PHRASE Label="lu_view_flat" Type="0">VmlldyBGbGF0</PHRASE>
<PHRASE Label="my_account_title" Type="0">TXkgU2V0dGluZ3M=</PHRASE>
<PHRASE Label="lu_my_items_title" Type="0">TXkgSXRlbXM=</PHRASE>
<PHRASE Label="lu_editedby" Type="0">RWRpdGVkIEJ5</PHRASE>
<PHRASE Label="lu_on" Type="0">b24=</PHRASE>
<PHRASE Label="lu_topic_updated" Type="0">VG9waWMgVXBkYXRlZA==</PHRASE>
<PHRASE Label="lu_PermName_Topic.Reply.Owner.Modify_desc" Type="1">UG9zdCBPd25lciBNb2RpZnk=</PHRASE>
<PHRASE Label="lu_PermName_Topic.Reply.Owner.Delete_desc" Type="1">UG9zdCBPd25lciBEZWxldGU=</PHRASE>
<PHRASE Label="lu_PermName_Topic.Owner.Delete_desc" Type="1">VG9waWMgT3duZXIgRGVsZXRl</PHRASE>
<PHRASE Label="lu_PermName_Topic.Modify.Pending_desc" Type="1">TW9kaWZ5IFRvcGljIFBlbmRpbmc=</PHRASE>
<PHRASE Label="lu_PermName_Topic.Owner.Modify.Pending_desc" Type="1">T3duZXIgTW9kaWZ5IFRvcGljIFBlbmRpbmc=</PHRASE>
<PHRASE Label="lu_PermName_Topic.Owner.Modify_desc" Type="1">VG9waWMgT3duZXIgTW9kaWZ5</PHRASE>
<PHRASE Label="lu_PermName_Topic.Lock_desc" Type="1">TG9jay9VbmxvY2sgVG9waWNz</PHRASE>
<PHRASE Label="lu_wrote" Type="0">d3JvdGU=</PHRASE>
<PHRASE Label="lu_edittopic_confirm" Type="0">RWRpdCBUb3BpYyBSZXN1bHRz</PHRASE>
<PHRASE Label="lu_edittopic_confirm_text" Type="0">Q2hhbmdlcyBtYWRlIHRvIHRoZSB0b3BpYyBoYXZlIGJlZW4gc2F2ZWQu</PHRASE>
<PHRASE Label="lu_rating_5" Type="0">RXhjZWxsZW50</PHRASE>
<PHRASE Label="lu_rating_4" Type="0">VmVyeSBHb29k</PHRASE>
<PHRASE Label="lu_rating_3" Type="0">R29vZA==</PHRASE>
<PHRASE Label="lu_rating_2" Type="0">QXZlcmFnZQ==</PHRASE>
<PHRASE Label="lu_rating_1" Type="0">RmFpcg==</PHRASE>
<PHRASE Label="lu_rating_0" Type="0">UG9vcg==</PHRASE>
<PHRASE Label="la_prompt_LeadArticle" Type="1">U2l0ZSBMZWFkIFN0b3J5</PHRASE>
<PHRASE Label="la_prompt_CatLead" Type="1">Q2F0ZWdvcnkgTGVhZCBTdG9yeQ==</PHRASE>
<PHRASE Label="lu_search_within" Type="0">U2VhcmNoIFJlc3VsdHM=</PHRASE>
<PHRASE Label="lu_quick_links" Type="0">UXVpY2sgTGlua3M=</PHRASE>
<PHRASE Label="lu_suggest_success" Type="0">VGhhbmsgeW91IGZvciBzdWdnZXN0aW5nIG91ciBzaXRlIHRv</PHRASE>
<PHRASE Label="lu_already_suggested" Type="0">IGhhcyBhbHJlYWR5IGJlZW4gc3VnZ2VzdGVkIHRvIHRoaXMgc2l0ZSBvbg==</PHRASE>
<PHRASE Label="la_prompt_plaintext" Type="1">UGxhaW4gVGV4dA==</PHRASE>
<PHRASE Label="la_prompt_html" Type="1">SFRNTA==</PHRASE>
<PHRASE Label="la_prompt_sendmethod" Type="1">U2VuZCBFbWFpbCBBcw==</PHRASE>
<PHRASE Label="la_prompt_headers" Type="1">RXh0cmEgTWFpbCBIZWFkZXJz</PHRASE>
<PHRASE Label="la_Text_MailEvent" Type="1">RW1haWwgRXZlbnQ=</PHRASE>
<PHRASE Label="lu_rate_news" Type="0">UmF0ZSBBcnRpY2xl</PHRASE>
<PHRASE Label="lu_news_rate_confirm" Type="0">UmF0ZSBBcnRpY2xlIFJlc3VsdHM=</PHRASE>
<PHRASE Label="lu_news_rate_confirm_text" Type="0">VGhhbmsgeW91IGZvciByYXRpbmcgdGhpcyBhcnRpY2xlLiBZb3VyIHZvdGUgaGFzIGJlZW4gcmVjb3JkZWQu</PHRASE>
<PHRASE Label="lu_rate_topic" Type="0">UmF0ZSBUb3BpYw==</PHRASE>
<PHRASE Label="la_prompt_birthday" Type="1">RGF0ZSBvZiBCaXJ0aA==</PHRASE>
<PHRASE Label="la_tab_ItemList" Type="1">SXRlbSBMaXN0</PHRASE>
<PHRASE Label="la_Text_Sessions" Type="1">U2Vzc2lvbnM=</PHRASE>
<PHRASE Label="la_Text_Inactive" Type="1">SW5hY3RpdmU=</PHRASE>
<PHRASE Label="lu_PermName_Admin_desc" Type="1">QWRtaW4gTG9naW4=</PHRASE>
<PHRASE Label="lu_PermName_Debug.Item_desc" Type="1">RGlzcGxheSBJdGVtIFF1ZXJpZXMgKERlYnVnKQ==</PHRASE>
<PHRASE Label="lu_PermName_Debug.List_desc" Type="1">RGlzcGxheSBJdGVtIExpc3QgUXVlcmllcyAoRGVidWcp</PHRASE>
<PHRASE Label="lu_PermName_Debug.Info_desc" Type="1">QXBwZW5kIHBocGluZm8gdG8gYWxsIHBhZ2VzIChEZWJ1Zyk=</PHRASE>
<PHRASE Label="lu_PermName_Profile.Modify_desc" Type="1">Q2hhbmdlIFVzZXIgUHJvZmlsZXM=</PHRASE>
<PHRASE Label="lu_PermName_ShowLang_desc" Type="1">U2hvdyBMYW5ndWFnZSBUYWdz</PHRASE>
<PHRASE Label="lu_PermName_Login_desc" Type="1">QWxsb3cgTG9naW4=</PHRASE>
<PHRASE Label="lu_my_info_description" Type="0">WW91ciBBY2NvdW50IEluZm9ybWF0aW9u</PHRASE>
<PHRASE Label="lu_my_favorites_description" Type="0">SXRlbXMgeW91IGhhdmUgbWFya2VkIGFzIGZhdm9yaXRl</PHRASE>
<PHRASE Label="lu_my_friends_description" Type="0">VmlldyB5b3VyIGxpc3Qgb2YgZnJpZW5kcw==</PHRASE>
<PHRASE Label="lu_my_preferences_description" Type="0">RWRpdCB5b3VyIEluLVBvcnRhbCBQcmVmZXJlbmNlcw==</PHRASE>
<PHRASE Label="lu_logout_description" Type="0">TG9nIG91dCBvZiB0aGUgc3lzdGVt</PHRASE>
<PHRASE Label="lu_my_links_description" Type="0">TGlua3MgeW91IGhhdmUgYWRkZWQgdG8gdGhlIHN5c3RlbQ==</PHRASE>
<PHRASE Label="lu_my_articles_description" Type="0">TmV3cyBBcnRpY2xlcyB5b3UgaGF2ZSB3cml0dGVu</PHRASE>
<PHRASE Label="lu_my_topics_description" Type="0">RGlzY3Vzc2lvbnMgeW91IGhhdmUgY3JlYXRlZA==</PHRASE>
<PHRASE Label="lu_add_friend" Type="0">QWRkIEZyaWVuZA==</PHRASE>
<PHRASE Label="lu_delete_friend" Type="0">RGVsZXRlIEZyaWVuZA==</PHRASE>
<PHRASE Label="lu_view_profile" Type="0">VmlldyBVc2VyIFByb2ZpbGU=</PHRASE>
<PHRASE Label="lu_view_your_profile" Type="0">VmlldyBZb3VyIFByb2ZpbGU=</PHRASE>
<PHRASE Label="lu_button_forgotpw" Type="0">U2VuZCBQYXNzd29yZA==</PHRASE>
<PHRASE Label="lu_pp_country" Type="0">Q291bnRyeQ==</PHRASE>
<PHRASE Label="lu_lock_unlock" Type="0">TG9jay9VbmxvY2s=</PHRASE>
<PHRASE Label="la_tab_Items" Type="1">SXRlbXM=</PHRASE>
<PHRASE Label="la_prompt_syscache_enable" Type="1">RW5hYmxlIFRhZyBDYWNoaW5n</PHRASE>
-<PHRASE Label="lu_remember_login" Type="0">UmVtZWJlciBMb2dpbg==</PHRASE>
+<PHRASE Label="lu_remember_login" Type="0">UmVtZW1iZXIgTG9naW4=</PHRASE>
<PHRASE Label="la_tab_ImportLang" Type="1">SW1wb3J0IExhbmd1YWdlIFBhY2s=</PHRASE>
<PHRASE Label="la_Title_LanguageImport" Type="1">SW5zdGFsbCBMYW5ndWFnZSBQYWNr</PHRASE>
<PHRASE Label="la_prompt_LanguageFile" Type="1">TGFuZ3VhZ2UgRmlsZQ==</PHRASE>
<PHRASE Label="la_prompt_LoadLangTypes" Type="1">SW5zdGFsbCBQaHJhc2UgVHlwZXM6</PHRASE>
<PHRASE Label="la_Text_FrontEnd" Type="1">RnJvbnQgRW5k</PHRASE>
<PHRASE Label="la_prompt_Import_ImageName" Type="1">TGluayBJbWFnZSBOYW1l</PHRASE>
<PHRASE Label="lu_incorrect_login" Type="0">VXNlcm5hbWUvUGFzc3dvcmQgSW5jb3JyZWN0</PHRASE>
<PHRASE Label="lu_lastposter" Type="0">TGFzdCBQb3N0IEJ5</PHRASE>
<PHRASE Label="la_prompt_Theme" Type="1">VGhlbWU=</PHRASE>
<PHRASE Label="la_Text_Scanning" Type="1">U2Nhbm5pbmc=</PHRASE>
<PHRASE Label="la_Text_Templates" Type="1">VGVtcGxhdGVz</PHRASE>
<PHRASE Label="la_missing_theme" Type="1">TWlzc2luZyBJbiBUaGVtZQ==</PHRASE>
<PHRASE Label="la_prompt_Phrases" Type="1">UGhyYXNlcw==</PHRASE>
<PHRASE Label="la_tab_MissingLabels" Type="1">TWlzc2luZyBMYWJlbHM=</PHRASE>
<PHRASE Label="la_Text_Access_Denied" Type="1">SW52YWxpZCB1c2VyIG5hbWUgb3IgcGFzc3dvcmQ=</PHRASE>
<PHRASE Label="la_Text_Missing_Username" Type="1">QmxhbmsgdXNlciBuYW1l</PHRASE>
<PHRASE Label="la_Text_Missing_Password" Type="1">QmxhbmsgcGFzc3dvcmRzIGFyZSBub3QgYWxsb3dlZA==</PHRASE>
<PHRASE Label="la_text_nopermissions" Type="1">Tm8gcGVybWlzc2lvbnM=</PHRASE>
<PHRASE Label="la_Text_BackupComplete" Type="1">QmFjayB1cCBoYXMgYmVlbiBjb21wbGV0ZWQuIFRoZSBiYWNrdXAgZmlsZSBpczo=</PHRASE>
<PHRASE Label="la_prompt_updating" Type="1">VXBkYXRpbmc=</PHRASE>
<PHRASE Label="la_prompt_perform_now" Type="1">UGVyZm9ybSB0aGlzIG9wZXJhdGlvbiBub3c/</PHRASE>
<PHRASE Label="la_confirm_maintenance" Type="1">VGhlIGNhdGVnb3J5IHRyZWUgbXVzdCBiZSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIGxhdGVzdCBjaGFuZ2Vz</PHRASE>
<PHRASE Label="la_title_Module_Status" Type="1">TW9kdWxlIFN0YXR1cw==</PHRASE>
<PHRASE Label="lu_link_search_results" Type="0">TGluayBTZWFyY2ggUmVzdWx0cw==</PHRASE>
<PHRASE Label="lu_category_search_results" Type="0">Q2F0ZWdvcnkgU2VhcmNoIFJlc3VsdHM=</PHRASE>
<PHRASE Label="lu_topic_search_results" Type="0">VG9waWMgU2VhcmNoIFJlc3VsdHM=</PHRASE>
<PHRASE Label="la_Text_Simple" Type="1">U2ltcGxl</PHRASE>
<PHRASE Label="la_prompt_EnableCache" Type="1">RW5hYmxlIFRlbXBsYXRlIENhY2hpbmc=</PHRASE>
<PHRASE Label="la_prompt_CacheTimeout" Type="1">Q2FjaGUgVGltZW91dCAoc2Vjb25kcyk=</PHRASE>
<PHRASE Label="lu_template_error" Type="0">VGVtcGxhdGUgRXJyb3I=</PHRASE>
<PHRASE Label="lu_missing_error" Type="0">TWlzc2luZyBUZW1wbGF0ZQ==</PHRASE>
<PHRASE Label="lu_back" Type="0">QmFjaw==</PHRASE>
<PHRASE Label="lu_prompt_post_subject" Type="0">UG9zdCBTdWJqZWN0</PHRASE>
<PHRASE Label="lu_optional" Type="0">T3B0aW9uYWw=</PHRASE>
<PHRASE Label="lu_edit_post" Type="0">TW9kaWZ5IFBvc3Q=</PHRASE>
<PHRASE Label="lu_topic_rate_confirm" Type="0">VG9waWMgUmF0aW5nIFJlc3VsdHM=</PHRASE>
<PHRASE Label="lu_topic_rate_confirm_duplicate_text" Type="0">WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIHRvcGlj</PHRASE>
<PHRASE Label="lu_topic_rate_confirm_text" Type="0">VGhhbmsgeW91IGZvciB2b3RpbmchICBZb3VyIGlucHV0IGhhcyBiZWVuIHJlY29yZGVkLg==</PHRASE>
<PHRASE Label="lu_articles" Type="0">QXJ0aWNsZXM=</PHRASE>
<PHRASE Label="la_Text_Root" Type="1">Um9vdA==</PHRASE>
<PHRASE Label="lu_lastupdate" Type="0">TGFzdCBVcGRhdGU=</PHRASE>
<PHRASE Label="la_Text_RootCategory" Type="1">TW9kdWxlIFJvb3QgQ2F0ZWdvcnk=</PHRASE>
<PHRASE Label="la_prompt_RootCategory" Type="1">U2VsZWN0IE1vZHVsZSBSb290IENhdGVnb3J5Og==</PHRASE>
<PHRASE Label="lu_ferror_review_duplicate" Type="0">WW91IGhhdmUgYWxyZWFkeSByZXZpZXdlZCB0aGlzIGl0ZW0u</PHRASE>
<PHRASE Label="lu_my_news_favorites" Type="0">RmF2b3JpdGUgQXJ0aWNsZXM=</PHRASE>
<PHRASE Label="lu_news_rate_confirm_duplicate_text" Type="0">WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIGFydGljbGU=</PHRASE>
<PHRASE Label="lu_action_prompt" Type="0">SGVyZSBZb3UgQ2FuOg==</PHRASE>
<PHRASE Label="lu_action" Type="0">QWN0aW9u</PHRASE>
<PHRASE Label="lu_box" Type="0">Ym94</PHRASE>
<PHRASE Label="lu_subaction_prompt" Type="0">QWxzbyBZb3UgQ2FuOg==</PHRASE>
<PHRASE Label="la_text_db_warning" Type="1">UnVubmluZyB0aGlzIHV0aWxpdHkgd2lsbCBhZmZlY3QgeW91ciBkYXRhYmFzZS4gIFBsZWFzZSBiZSBhZHZpc2VkIHRoYXQgeW91IGNhbiB1c2UgdGhpcyB1dGlsaXR5IGF0IHlvdXIgb3duIHJpc2suICBJbnRlY2huaWMgQ29ycG9yYXRpb24gY2FuIG5vdCBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGNvcnJ1cHQgZGF0YSBvciBkYXRhIGxvc3Mu</PHRASE>
<PHRASE Label="la_prompt_sqlquery" Type="1">U1FMIFF1ZXJ5Og==</PHRASE>
<PHRASE Label="la_prompt_sqlquery_header" Type="1">UGVyZm9ybSBTUUwgUXVlcnk=</PHRASE>
<PHRASE Label="la_prompt_sqlquery_result" Type="1">U1FMIFF1ZXJ5IFJlc3VsdHM=</PHRASE>
<PHRASE Label="la_prompt_edit_query" Type="1">RWRpdCBRdWVyeQ==</PHRASE>
<PHRASE Label="la_tab_QueryDB" Type="1">UXVlcnkgRGF0YWJhc2U=</PHRASE>
<PHRASE Label="la_prompt_weight" Type="1">V2VpZ2h0</PHRASE>
<PHRASE Label="la_prompt_required_field_increase" Type="1">SW5jcmVhc2UgaW1wb3J0YW5jZSBpZiBmaWVsZCBjb250YWlucyBhIHJlcXVpcmVkIGtleXdvcmQgYnk=</PHRASE>
<PHRASE Label="la_prompt_relevence_percent" Type="1">U2VhcmNoIFJlbGV2YW5jZSBkZXBlbmRzIG9u</PHRASE>
<PHRASE Label="la_text_keyword" Type="1">S2V5d29yZA==</PHRASE>
<PHRASE Label="la_text_popularity" Type="1">UG9wdWxhcml0eQ==</PHRASE>
<PHRASE Label="la_prompt_relevence_settings" Type="1">U2VhcmNoIFJlbGV2ZW5jZSBTZXR0aW5ncw==</PHRASE>
<PHRASE Label="la_prompt_decimal" Type="2">RGVjaW1hbCBQb2ludA==</PHRASE>
<PHRASE Label="la_prompt_lang_dateformat" Type="2">RGF0ZSBGb3JtYXQ=</PHRASE>
<PHRASE Label="la_prompt_lang_timeformat" Type="0">VGltZSBGb3JtYXQ=</PHRASE>
<PHRASE Label="la_prompt_thousand" Type="2">VGhvdXNhbmRzIFNlcGFyYXRvcg==</PHRASE>
<PHRASE Label="la_Text_example" Type="2">RXhhbXBsZQ==</PHRASE>
<PHRASE Label="lu_fieldcustom__" Type="2" />
<PHRASE Label="la_Text_backup_access" Type="2">SW4tUG9ydGFsIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHdyaXRlIHRvIHRoaXMgZGlyZWN0b3J5</PHRASE>
<PHRASE Label="lu_searchtitle_link" Type="0">U2VhcmNoIExpbmtz</PHRASE>
<PHRASE Label="lu_search_type" Type="0">U2VhcmNoIFR5cGU=</PHRASE>
<PHRASE Label="lu_continue" Type="0">Q29udGludWU=</PHRASE>
<PHRASE Label="lu_and" Type="0">QW5k</PHRASE>
<PHRASE Label="lu_true" Type="0">VHJ1ZQ==</PHRASE>
<PHRASE Label="lu_false" Type="0">RmFsc2U=</PHRASE>
<PHRASE Label="lu_advsearch_any" Type="0">QW55</PHRASE>
<PHRASE Label="lu_advsearch_is" Type="0">SXMgRXF1YWwgVG8=</PHRASE>
<PHRASE Label="lu_advsearch_isnot" Type="0">SXMgTm90IEVxdWFsIFRv</PHRASE>
<PHRASE Label="lu_advsearch_contains" Type="0">Q29udGFpbnM=</PHRASE>
<PHRASE Label="lu_advsearch_notcontains" Type="0">RG9lcyBOb3QgQ29udGFpbg==</PHRASE>
<PHRASE Label="lu_searchtitle_category" Type="0">U2VhcmNoIENhdGVnb3JpZXM=</PHRASE>
<PHRASE Label="lu_searchtitle_article" Type="0">U2VhcmNoIEFydGljbGVz</PHRASE>
<PHRASE Label="lu_searchtitle_topic" Type="0">U2VhcmNoIFRvcGljcw==</PHRASE>
<PHRASE Label="la_language" Type="1">TGFuZ3VhZ2U=</PHRASE>
<PHRASE Label="la_users_subscriber_group" Type="2">QXNzaWduIG1haWxpbmcgbGlzdCBzdWJzY3JpYmVycyB0byBncm91cA==</PHRASE>
<PHRASE Label="lu_rootcategory_name" Type="0">SG9tZQ==</PHRASE>
<PHRASE Label="la_Description_in-portal:configuration_search" Type="2">Q29uZmlndXJlIENhdGVnb3J5IHNlYXJjaCBvcHRpb25z</PHRASE>
<PHRASE Label="la_Description_in-portal:configuration_email" Type="2">Q29uZmlndXJlIENhdGVnb3J5IEVtYWlsIEV2ZW50cw==</PHRASE>
<PHRASE Label="la_Description_in-portal:user_email" Type="2">Q29uZmlndXJlIFVzZXIgZW1haWwgZXZlbnRz</PHRASE>
<PHRASE Label="la_Description_in-portal:user_banlist" Type="2">TWFuYWdlIFVzZXIgQmFuIFJ1bGVz</PHRASE>
<PHRASE Label="la_Text_BanRules" Type="2">VXNlciBCYW4gUnVsZXM=</PHRASE>
<PHRASE Label="la_tab_UserBanList" Type="1">VXNlciBCYW4gTGlzdA==</PHRASE>
<PHRASE Label="la_Text_Allow" Type="1">QWxsb3c=</PHRASE>
<PHRASE Label="la_Description_in-link:inlink_general" Type="2">SW4tTGluayBHZW5lcmFsIENvbmZpZ3VyYXRpb24gT3B0aW9ucw==</PHRASE>
<PHRASE Label="la_Text_Rule" Type="2">UnVsZQ==</PHRASE>
<PHRASE Label="la_tab_Rule" Type="2">UnVsZSBQcm9wZXJ0aWVz</PHRASE>
<PHRASE Label="la_prompt_RuleType" Type="2">UnVsZSBUeXBl</PHRASE>
<PHRASE Label="la_prompt_ItemField" Type="2">SXRlbSBGaWVsZA==</PHRASE>
<PHRASE Label="la_prompt_ErrorTag" Type="2">RXJyb3IgVGFn</PHRASE>
<PHRASE Label="la_prompt_ItemValue" Type="2">RmllbGQgVmFsdWU=</PHRASE>
<PHRASE Label="la_prompt_ItemVerb" Type="2">RmllbGQgQ29tcGFyaXNvbg==</PHRASE>
<PHRASE Label="la_prompt_applyingbanlist" Type="2">QXBwbHlpbmcgQmFuIExpc3QgdG8gRXhpc3RpbmcgVXNlcnMuLg==</PHRASE>
<PHRASE Label="lu_forgot_pw_description" Type="1">RW50ZXIgeW91ciBVc2VybmFtZSBvciBFbWFpbCBBZGRyZXNzIGJlbG93IHRvIGhhdmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9uIHNlbnQgdG8gdGhlIGVtYWlsIGFkZHJlc3Mgb2YgeW91ciBhY2NvdW50Lg==</PHRASE>
<PHRASE Label="lu_ferror_forgotpw_nodata" Type="1">WW91IG11c3QgZW50ZXIgYSBVc2VybmFtZSBvciBFbWFpbCBBZGRyZXNzIHRvIHJldHJpdmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9u</PHRASE>
<PHRASE Label="lu_ferror_unknown_username" Type="1">VGhlIFVzZXJuYW1lIGNvdWxkIG5vdCBiZSBmb3VuZA==</PHRASE>
<PHRASE Label="lu_ferror_unknown_email" Type="1">VGhlIEVtYWlsIEFkZHJlc3MgY291bGQgbm90IGJlIGZvdW5kLg==</PHRASE>
<PHRASE Label="lu_ferror_loginboth" Type="1">Qm90aCBhIFVzZXJuYW1lIGFuZCBQYXNzd29yZCBpcyByZXF1aXJlZA==</PHRASE>
<PHRASE Label="lu_ferror_login_login_password" Type="1">UGxlYXNlIGVudGVyIHlvdXIgcGFzc3dvcmQgYW5kIHRyeSBhZ2Fpbg==</PHRASE>
<PHRASE Label="lu_ferror_login_login_user" Type="1">WW91IGRpZCBub3QgZW50ZXIgeW91ciBVc2VybmFtZQ==</PHRASE>
<PHRASE Label="la_tab_BanList" Type="1">VXNlciBCYW4gTGlzdA==</PHRASE>
<PHRASE Label="la_ColHeader_RuleType" Type="1">UnVsZSBUeXBl</PHRASE>
<PHRASE Label="la_Colheader_ItemField" Type="1">SXRlbSBGaWVsZA==</PHRASE>
<PHRASE Label="la_ColHeader_ItemVerb" Type="1">Q29tcGFyaXNvbiBPcGVyYXRvcg==</PHRASE>
<PHRASE Label="la_Colheader_ItemValue" Type="1">SXRlbSBWYWx1ZQ==</PHRASE>
<PHRASE Label="la_text_Contains" Type="1">Q29udGFpbnM=</PHRASE>
<PHRASE Label="la_Text_Unique" Type="1">SXMgVW5pcXVl</PHRASE>
<PHRASE Label="la_Text_IPAddress" Type="1">SVAgQWRkcmVzcw==</PHRASE>
<PHRASE Label="la_Text_Login" Type="1">VXNlcm5hbWU=</PHRASE>
<PHRASE Label="la_Text_FirstName" Type="1">Rmlyc3QgTmFtZQ==</PHRASE>
<PHRASE Label="la_Text_LastName" Type="1">TGFzdCBOYW1l</PHRASE>
<PHRASE Label="la_Text_Address" Type="1">QWRkcmVzcw==</PHRASE>
<PHRASE Label="la_Text_City" Type="1">Q2l0eQ==</PHRASE>
<PHRASE Label="la_Text_State" Type="1">U3RhdGU=</PHRASE>
<PHRASE Label="la_Text_Zip" Type="1">Wmlw</PHRASE>
<PHRASE Label="la_Text_Phone" Type="1">UGhvbmU=</PHRASE>
<PHRASE Label="la_Text_Any" Type="1">QW55</PHRASE>
<PHRASE Label="la_Text_Is" Type="1">SXM=</PHRASE>
<PHRASE Label="la_Text_IsNot" Type="1">SXMgTm90</PHRASE>
<PHRASE Label="la_Text_NotContains" Type="1">RG9lcyBOb3QgQ29udGFpbg==</PHRASE>
<PHRASE Label="la_Text_GreaterThan" Type="1">R3JlYXRlciBUaGFu</PHRASE>
<PHRASE Label="la_Text_LessThan" Type="1">TGVzcyBUaGFu</PHRASE>
<PHRASE Label="la_Text_Exists" Type="1">RXhpc3Rz</PHRASE>
<PHRASE Label="la_Text_Deny" Type="1">RGVueQ==</PHRASE>
<PHRASE Label="la_Description_in-news:innews_general" Type="2">SW4tTmV3eiBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucw==</PHRASE>
<PHRASE Label="la_Description_in-bulletin:inbulletin_general" Type="2">SW4tYnVsbGV0aW4gZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnM=</PHRASE>
<PHRASE Label="lu_field_linkid" Type="2">TGluayBJRA==</PHRASE>
<PHRASE Label="lu_field_name" Type="2">TmFtZQ==</PHRASE>
<PHRASE Label="lu_field_description" Type="2">RGVzY3JpcHRpb24=</PHRASE>
<PHRASE Label="lu_field_url" Type="2">VVJM</PHRASE>
<PHRASE Label="lu_field_createdon" Type="2">RGF0ZSBDcmVhdGVk</PHRASE>
<PHRASE Label="lu_field_modified" Type="2">TGFzdCBNb2RpZmllZCBEYXRl</PHRASE>
<PHRASE Label="lu_field_hits" Type="2">SGl0cw==</PHRASE>
<PHRASE Label="lu_field_cachedrating" Type="2">UmF0aW5n</PHRASE>
<PHRASE Label="lu_field_cachedvotesqty" Type="2">TnVtYmVyIG9mIFJhdGluZyBWb3Rlcw==</PHRASE>
<PHRASE Label="lu_field_cachedreviewsqty" Type="2">TnVtYmVyIG9mIFJldmlld3M=</PHRASE>
<PHRASE Label="lu_field_createdbyid" Type="2">Q3JlYXRlZCBCeSBVc2VyIElE</PHRASE>
<PHRASE Label="lu_field_modifiedbyid" Type="2">TW9kaWZpZWQgQnkgVXNlciBJRA==</PHRASE>
<PHRASE Label="lu_field_priority" Type="2">UHJpb3JpdHk=</PHRASE>
<PHRASE Label="lu_field_status" Type="2">U3RhdHVz</PHRASE>
<PHRASE Label="lu_field_resourceid" Type="2">UmVzb3VyY2UgSUQ=</PHRASE>
<PHRASE Label="lu_field_hotitem" Type="2">SXRlbSBJcyBIb3Q=</PHRASE>
<PHRASE Label="lu_field_popitem" Type="2">SXRlbSBJcyBQb3B1bGFy</PHRASE>
<PHRASE Label="lu_field_newitem" Type="2">SXRlbSBJcyBOZXc=</PHRASE>
<PHRASE Label="lu_field_orgid" Type="2">T3JpZ2lvbmFsIEl0ZW0gSUQ=</PHRASE>
<PHRASE Label="la_prompt_DupReviews" Type="2">QWxsb3cgRHVwbGljYXRlIFJldmlld3M=</PHRASE>
<PHRASE Label="la_prompt_DupRating" Type="2">QWxsb3cgRHVwbGljYXRlIFJhdGluZyBWb3Rlcw==</PHRASE>
<PHRASE Label="la_Text_Minute" Type="1">TWludXRl</PHRASE>
<PHRASE Label="la_Text_Hour" Type="1">SG91cg==</PHRASE>
<PHRASE Label="la_Text_Day" Type="1">RGF5</PHRASE>
<PHRASE Label="la_tab_ExportLang" Type="1">RXhwb3J0IExhbmd1YWdlIFBhY2s=</PHRASE>
<PHRASE Label="la_Text_Second" Type="1">U2Vjb25kcw==</PHRASE>
<PHRASE Label="la_Text_Week" Type="1">V2Vla3M=</PHRASE>
<PHRASE Label="la_Text_Month" Type="1">TW9udGhz</PHRASE>
<PHRASE Label="la_Text_Year" Type="1">WWVhcnM=</PHRASE>
<PHRASE Label="lu_field_topicid" Type="2">VG9waWMgSUQ=</PHRASE>
<PHRASE Label="lu_field_notifyowneronchanges" Type="2">Tm90aWZ5IE93bmVyIG9mIENoYW5nZXM=</PHRASE>
<PHRASE Label="lu_field_topictext" Type="2">VG9waWMgVGV4dA==</PHRASE>
<PHRASE Label="lu_field_posts" Type="0">VG9waWMgUG9zdHM=</PHRASE>
<PHRASE Label="lu_field_views" Type="0">Vmlld3M=</PHRASE>
<PHRASE Label="lu_field_ownerid" Type="2">T3duZXIgVXNlciBJRA==</PHRASE>
<PHRASE Label="lu_field_postedby" Type="2">UG9zdGVkIEJ5</PHRASE>
<PHRASE Label="lu_field_lastpostid" Type="2">TGFzdCBQb3N0IElE</PHRASE>
<PHRASE Label="la_prompt_ExportFileName" Type="2">RXhwb3J0IEZpbGVuYW1l</PHRASE>
<PHRASE Label="la_Text_Export" Type="2">RXhwb3J0</PHRASE>
<PHRASE Label="la_Text_Languages" Type="2">TGFuZ3VhZ2U=</PHRASE>
<PHRASE Label="lu_access_denied" Type="0">WW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9u</PHRASE>
<PHRASE Label="lu_show_user_signatures" Type="0">U2hvdyBNeSBTaWduYXR1cmU=</PHRASE>
<PHRASE Label="la_password_info" Type="2">VG8gY2hhbmdlIHRoZSBwYXNzd29yZCwgZW50ZXIgdGhlIHBhc3N3b3JkIGhlcmUgYW5kIGluIHRoZSBib3ggYmVsb3c=</PHRASE>
<PHRASE Label="lu_fieldcustom__lc6" Type="2">bGM2</PHRASE>
<PHRASE Label="lu_fieldcustom__lc5" Type="2">bGM1</PHRASE>
<PHRASE Label="lu_fieldcustom__lc4" Type="2">bGM0</PHRASE>
<PHRASE Label="lu_fieldcustom__lc3" Type="2">bGMz</PHRASE>
<PHRASE Label="lu_fieldcustom__lc2" Type="2">bGMy</PHRASE>
<PHRASE Label="lu_fieldcustom__lc1" Type="2">bGMx</PHRASE>
<PHRASE Label="lu_fieldcustom__cc6" Type="2">Y2M2</PHRASE>
<PHRASE Label="lu_fieldcustom__cc5" Type="2">Y2M1</PHRASE>
<PHRASE Label="lu_fieldcustom__cc4" Type="2">Y2M0</PHRASE>
<PHRASE Label="lu_fieldcustom__cc3" Type="2">Y2Mz</PHRASE>
<PHRASE Label="lu_fieldcustom__cc2" Type="2">Y2My</PHRASE>
<PHRASE Label="lu_fieldcustom__uc6" Type="2">dWM2</PHRASE>
<PHRASE Label="lu_fieldcustom__cc1" Type="2">Y2Mx</PHRASE>
<PHRASE Label="lu_fieldcustom__uc5" Type="2">dWM1</PHRASE>
<PHRASE Label="lu_fieldcustom__uc4" Type="2">dWM0</PHRASE>
<PHRASE Label="lu_fieldcustom__uc3" Type="2">dWMz</PHRASE>
<PHRASE Label="lu_fieldcustom__uc2" Type="2">dWMy</PHRASE>
<PHRASE Label="la_Text_Results" Type="2">UmVzdWx0cw==</PHRASE>
<PHRASE Label="la_prompt_download_export" Type="2">RG93bmxvYWQgTGFuZ3VhZ2UgRXhwb3J0Og==</PHRASE>
<PHRASE Label="la_prompt_overwritephrases" Type="2">T3ZlcndyaXRlIEV4aXN0aW5nIFBocmFzZXM=</PHRASE>
<PHRASE Label="la_importlang_phrasewarning" Type="2">RW5hYmxpbmcgdGhpcyBvcHRpb24gd2lsbCB1bmRvIGFueSBjaGFuZ2VzIHlvdSBoYXZlIG1hZGUgdG8gZXhpc3RpbmcgcGhyYXNlcw==</PHRASE>
<PHRASE Label="lu_field_categoryid" Type="0">Q2F0ZWdvcnkgSWQ=</PHRASE>
<PHRASE Label="lu_field_parentid" Type="0">UGFyZW50IElk</PHRASE>
<PHRASE Label="lu_field_metakeywords" Type="0">TWV0YSBLZXl3b3Jkcw==</PHRASE>
<PHRASE Label="lu_field_cacheddescendantcatsqty" Type="0">TnVtYmVyIG9mIERlc2NlbmRhbnRz</PHRASE>
<PHRASE Label="lu_field_cachednavbar" Type="0">Q2F0ZWdvcnkgUGF0aA==</PHRASE>
<PHRASE Label="lu_field_parentpath" Type="0">UGFyZW50IENhdGVnb3J5IFBhdGg=</PHRASE>
<PHRASE Label="lu_field_metadescription" Type="0">TWV0YSBEZXNjcmlwdGlvbg==</PHRASE>
<PHRASE Label="la_prompt_continue" Type="1">Q29udGludWU=</PHRASE>
<PHRASE Label="la_Description_in-link:validation_list" Type="2">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBydW4gdmFsaWRhdGlvbiBvbiB0aGUgbGlua3M=</PHRASE>
<PHRASE Label="la_tab_LinkValidation" Type="2">TGluayBWYWxpZGF0aW9u</PHRASE>
<PHRASE Label="la_ColHeader_ValidationStatus" Type="2">U3RhdHVz</PHRASE>
<PHRASE Label="la_ColHeader_Name" Type="2">TGluayBOYW1l</PHRASE>
<PHRASE Label="la_ColHeader_ValidationTime" Type="2">VmFsaWRhdGVkIE9u</PHRASE>
<PHRASE Label="la_ColHeader_CreatedOn" Type="2">Q3JlYXRlZCBPbg==</PHRASE>
<PHRASE Label="la_Text_Not_Validated" Type="2">Tm90IFZhbGlkYXRlZA==</PHRASE>
<PHRASE Label="la_Text_Invalid" Type="2">SW52YWxpZA==</PHRASE>
<PHRASE Label="la_Text_Link_Validation" Type="2">VmFsaWRhdGluZyBMaW5rcw==</PHRASE>
<PHRASE Label="la_prompt_runlink_validation" Type="2">VmFsaWRhdGlvbiBQcm9ncmVzcw==</PHRASE>
<PHRASE Label="la_prompt_Expired" Type="0">RXhwaXJhdGlvbiBEYXRl</PHRASE>
<PHRASE Label="la_event_user.subscribe" Type="1">VXNlciBzdWJzY3JpYmVk</PHRASE>
<PHRASE Label="la_event_user.unsubscribe" Type="1">VXNlciB1bnN1YnNjcmliZWQ=</PHRASE>
<PHRASE Label="la_Description_in-portal:browse" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gYnJvd3NlIHRoZSBjYXRhbG9nIGFuZCBtYW5hZ2UgY2F0ZWdvcmllcyBhbmQgaXRlbXM=</PHRASE>
<PHRASE Label="la_prompt_upload" Type="1">VXBsb2FkIGltYWdlIGZyb20gbG9jYWwgUEM=</PHRASE>
<PHRASE Label="la_prompt_remote_url" Type="1">VXNlIHJlbW90ZSBpbWFnZSAoVVJMKQ==</PHRASE>
<PHRASE Label="la_ColHeader_InheritFrom" Type="1">SW5oZXJpdGVkIEZyb20=</PHRASE>
<PHRASE Label="lu_PermName_favorites_desc" Type="2">QWxsb3cgZmF2b3JpdGVz</PHRASE>
<PHRASE Label="lu_PermName_Link.Review_Pending_desc" Type="2">UmV2aWV3IExpbmsgUGVuZGluZw==</PHRASE>
<PHRASE Label="lu_PermName_Link.Modify.Pending_desc" Type="2">TW9kaWZ5IExpbmsgUGVuZGluZw==</PHRASE>
<PHRASE Label="lu_PermName_Link.Owner.Modify_desc" Type="2">TGluayBNb2RpZnkgYnkgT3duZXI=</PHRASE>
<PHRASE Label="lu_PermName_Link.Owner.Modify.Pending_desc" Type="2">TGluayBNb2RpZnkgUGVuZGluZyBieSBPd25lcg==</PHRASE>
<PHRASE Label="lu_PermName_Link.Owner.Delete_desc" Type="2">TGluayBEZWxldGUgYnkgT3duZXI=</PHRASE>
<PHRASE Label="lu_PermName_News.Review.Pending_desc" Type="2">UmV2aWV3IE5ld3MgUGVuZGluZw==</PHRASE>
<PHRASE Label="la_origional_values" Type="1">T3JpZ2luYWwgVmFsdWVz</PHRASE>
<PHRASE Label="la_prompt_link_owner" Type="1">TGluayBPd25lcg==</PHRASE>
<PHRASE Label="la_taglib_link" Type="1">VGFnIExpYnJhcnk=</PHRASE>
<PHRASE Label="la_prompt_socket_blocking_mode" Type="1">VXNlIG5vbi1ibG9ja2luZyBzb2NrZXQgbW9kZQ==</PHRASE>
<PHRASE Label="la_Text_FrontOnly" Type="1">RnJvbnQtZW5kIE9ubHk=</PHRASE>
<PHRASE Label="la_ToolTip_Email_FrontOnly" Type="1">RnJvbnQgT25seQ==</PHRASE>
<PHRASE Label="la_ToolTip_Email_UserSelect" Type="1">U2VsZWN0IFVzZXI=</PHRASE>
<PHRASE Label="la_ToolTip_Email_Enable" Type="1">RW5hYmxl</PHRASE>
<PHRASE Label="la_ToolTip_Email_Disable" Type="1">RGlzYWJsZQ==</PHRASE>
<PHRASE Label="lu_field_portaluserid" Type="0">VXNlciBJRA==</PHRASE>
<PHRASE Label="lu_field_login" Type="0">TG9naW4gKFVzZXIgbmFtZSk=</PHRASE>
<PHRASE Label="lu_field_password" Type="0">UGFzc3dvcmQ=</PHRASE>
<PHRASE Label="lu_field_firstname" Type="0">Rmlyc3QgTmFtZQ==</PHRASE>
<PHRASE Label="lu_field_lastname" Type="0">TGFzdCBOYW1l</PHRASE>
<PHRASE Label="lu_field_email" Type="0">RS1tYWls</PHRASE>
<PHRASE Label="lu_field_phone" Type="0">VGVsZXBob25l</PHRASE>
<PHRASE Label="lu_field_street" Type="0">U3RyZWV0IEFkZHJlc3M=</PHRASE>
<PHRASE Label="lu_field_city" Type="0">Q2l0eQ==</PHRASE>
<PHRASE Label="lu_field_state" Type="0">U3RhdGU=</PHRASE>
<PHRASE Label="lu_field_zip" Type="0">WmlwIChQb3N0YWwpIENvZGU=</PHRASE>
<PHRASE Label="lu_field_country" Type="0">Q291bnRyeQ==</PHRASE>
<PHRASE Label="lu_field_dob" Type="0">RGF0ZSBvZiBCaXJ0aA==</PHRASE>
<PHRASE Label="lu_field_tz" Type="0">VGltZSBab25l</PHRASE>
<PHRASE Label="la_prompt_showgeneraltab" Type="1">U2hvdyBvbiB0aGUgZ2VuZXJhbCB0YWI=</PHRASE>
<PHRASE Label="la_prompt_heading" Type="1">SGVhZGluZw==</PHRASE>
<PHRASE Label="la_prompt_FieldPrompt" Type="1">RmllbGQgUHJvbXB0</PHRASE>
<PHRASE Label="la_prompt_InputType" Type="1">SW5wdXQgVHlwZQ==</PHRASE>
<PHRASE Label="la_prompt_valuelist" Type="1">TGlzdCBvZiBWYWx1ZXM=</PHRASE>
<PHRASE Label="lu_fieldcustom__test" Type="2">VGVzdA==</PHRASE>
<PHRASE Label="la_Description_in-portal:configure_general" Type="1">VGhpcyBpcyBhIGdlbmVyYWwgY29uZmd1cmF0aW9uIHNlY3Rpb24=</PHRASE>
<PHRASE Label="la_prompt_NewsId" Type="1">TmV3cyBBcnRpY2xlIElE</PHRASE>
<PHRASE Label="la_ToolTip_Import_Langpack" Type="1">SW1wb3J0IGEgTGFnbnVhZ2UgUGFja2FnZQ==</PHRASE>
<PHRASE Label="la_ToolTip_Export" Type="0">RXhwb3J0</PHRASE>
<PHRASE Label="lu_forum_hdrwelcometext" Type="0">V2VsY29tZSB0byBJbi1idWxsZXRpbiBGb3J1bXMh</PHRASE>
<PHRASE Label="lu_new_posts" Type="0">Rm9ydW0gaGFzIG5ldyBwb3N0cw==</PHRASE>
<PHRASE Label="lu_no_new_posts" Type="0">Rm9ydW0gaGFzIG5vIG5ldyBwb3N0cw==</PHRASE>
<PHRASE Label="lu_forum_locked_for_posting" Type="0">Rm9ydW0gaXMgbG9ja2VkIGZvciBwb3N0aW5n</PHRASE>
<PHRASE Label="lu_unsorted_list" Type="0">VW5zb3J0ZWQgbGlzdA==</PHRASE>
<PHRASE Label="lu_sorted_list" Type="0">U29ydGVkIGxpc3Q=</PHRASE>
<PHRASE Label="lu_no_topics" Type="0">Tm8gVG9waWNz</PHRASE>
<PHRASE Label="lu_mailinglist" Type="0">TWFpbGluZyBMaXN0</PHRASE>
<PHRASE Label="lu_button_mailinglist" Type="0">U3Vic2NyaWJl</PHRASE>
<PHRASE Label="lu_prompt_subscribe" Type="0">RW50ZXIgeW91ciBlLW1haWwgYWRkcmVzcyB0byBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdC4=</PHRASE>
<PHRASE Label="lu_legend" Type="0">TGVnZW5k</PHRASE>
<PHRASE Label="lu_default_smileys" Type="0">U2ltbGllcyBvbiBieSBkZWZhdWx0</PHRASE>
<PHRASE Label="lu_default_user_signatures" Type="0">U2lnbmF0dXJlcyBvbiBieSBkZWZhdWx0</PHRASE>
<PHRASE Label="la_ToolTip_New_label" Type="1">QWRkIG5ldyBsYWJlbA==</PHRASE>
<PHRASE Label="lu_no_favorites" Type="0">Tm8gZmF2b3JpdGVz</PHRASE>
<PHRASE Label="lu_field_newsid" Type="0">QXJ0aWNsZSBJRA==</PHRASE>
<PHRASE Label="lu_field_textformat" Type="0">QXJ0aWNsZSBUZXh0</PHRASE>
<PHRASE Label="lu_field_title" Type="0">QXJ0aWNsZSBUaXRsZQ==</PHRASE>
<PHRASE Label="lu_field_excerpt" Type="0">QXJ0aWNsZSBFeGNlcnB0</PHRASE>
<PHRASE Label="lu_field_author" Type="0">QXJ0aWNsZSBBdXRob3I=</PHRASE>
<PHRASE Label="lu_field_body" Type="0">QXJ0aWNsZSBCb2R5</PHRASE>
<PHRASE Label="lu_field_endon" Type="0">RW5kcyBPbg==</PHRASE>
<PHRASE Label="lu_field_leadstory" Type="0">TGVhZCBTdG9yeT8=</PHRASE>
<PHRASE Label="lu_field_leadcatstory" Type="0">Q2F0ZWdvcnkgTGVhZCBTdG9yeT8=</PHRASE>
<PHRASE Label="lu_field_startdate" Type="0">U3RhcnQgRGF0ZQ==</PHRASE>
<PHRASE Label="lu_field_archived" Type="0">QXJjaGl2ZSBEYXRl</PHRASE>
<PHRASE Label="lu_field_topictype" Type="0">VG9waWMgVHlwZQ==</PHRASE>
<PHRASE Label="lu_message" Type="0">TWVzc2FnZQ==</PHRASE>
<PHRASE Label="la_Delete_Confirm" Type="1">QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGUgaXRlbShzKT8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4=</PHRASE>
<PHRASE Label="la_title_edit_category" Type="1">RWRpdCBDYXRlZ29yeQ==</PHRASE>
<PHRASE Label="lu_link_addreview_confirm_text" Type="0">WW91ciByZXZpZXcgaGFzIGJlZW4gYWRkZWQ=</PHRASE>
<PHRASE Label="lu_no_items" Type="0">Tm8gSXRlbXM=</PHRASE>
<PHRASE Label="la_prompt_root_name" Type="1">Um9vdCBjYXRlZ29yeSBuYW1lIChsYW5ndWFnZSB2YXJpYWJsZSk=</PHRASE>
<PHRASE Label="la_tab_AdminUI" Type="1">QWRtaW5pc3RyYXRpb24gUGFuZWwgVUk=</PHRASE>
<PHRASE Label="la_valuelist_help" Type="1">RW50ZXIgbGlzdCBvZiB2YWx1ZXMgYW5kIHRoZWlyIGRlc2NyaXB0aW9ucywgbGlrZSAxPU9uZSwgMj1Ud28=</PHRASE>
<PHRASE Label="la_type_text" Type="1">VGV4dCBmaWVsZA==</PHRASE>
<PHRASE Label="la_type_select" Type="1">RHJvcCBkb3duIGZpZWxk</PHRASE>
<PHRASE Label="la_type_radio" Type="1">UmFkaW8gYnV0dG9ucw==</PHRASE>
<PHRASE Label="la_type_password" Type="1">UGFzc3dvcmQgZmllbGQ=</PHRASE>
<PHRASE Label="la_type_textarea" Type="1">VGV4dCBhcmVh</PHRASE>
<PHRASE Label="la_type_label" Type="1">TGFiZWw=</PHRASE>
<PHRASE Label="la_ToolTip_PrimaryGroup" Type="1">U2V0IFByaW1hcnkgR3JvdXA=</PHRASE>
<PHRASE Label="la_ToolTip_Ban" Type="1">QmFu</PHRASE>
<PHRASE Label="la_ToolTip_AddToGroup" Type="1">QWRkIFVzZXIgdG8gR3JvdXA=</PHRASE>
<PHRASE Label="la_ToolTip_DeleteFromGroup" Type="1">RGVsZXRlIFVzZXIgRnJvbSBHcm91cA==</PHRASE>
<PHRASE Label="la_ToolTip_RemoveUserFromGroup" Type="1">RGVsZXRlIFVzZXIgRnJvbSBHcm91cA==</PHRASE>
<PHRASE Label="la_ToolTip_New_Rule" Type="1">TmV3IFJ1bGU=</PHRASE>
<PHRASE Label="la_ToolTip_Apply_Rules" Type="1">QXBwbHkgUnVsZXM=</PHRASE>
<PHRASE Label="la_Description_in-link:configuration_search" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2Ugc2VhcmNoIHNldHRpbmdzIGFuZCBmaWVsZHM=</PHRASE>
<PHRASE Label="la_Description_in-link:configuration_email" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgZW1haWwgZXZlbnRz</PHRASE>
<PHRASE Label="la_Description_in-link:configuration_custom" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgY3VzdG9tIGZpZWxkcw==</PHRASE>
<PHRASE Label="la_link_perpage_short_prompt" Type="1">TnVtYmVyIG9mIGxpbmtzIHBlciBwYWdlIG9uIGEgc2hvcnQgbGlzdGluZw==</PHRASE>
<PHRASE Label="la_link_votestohot_prompt" Type="1">TnVtYmVyIG9mIHZvdGVzIGZvciBhIGxpbmsgdG8gYmUgSE9U</PHRASE>
<PHRASE Label="la_link_MinVotes_prompt" Type="1">TWluaW11bSBudW1iZXIgb2Ygdm90ZXMgdG8gZW5hYmxlIGxpbmsgcmF0aW5n</PHRASE>
<PHRASE Label="la_ToolTip_ContinueValidation" Type="1">Q29udGludWUgTGluayBWYWxpZGF0aW9u</PHRASE>
<PHRASE Label="la_ToolTip_NewValidation" Type="1">U3RhcnQgTmV3IFZhbGlkYXRpb24=</PHRASE>
<PHRASE Label="la_ToolTip_ValidateSelected" Type="1">VmFsaWRhdGU=</PHRASE>
<PHRASE Label="la_ToolTip_ResetValidationStatus" Type="1">UmVzZXQgVmFsaWRhdGlvbiBTdGF0dXM=</PHRASE>
<PHRASE Label="la_Description_in-bulletin:configuration_censorship" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgY2Vuc29yZWQgd29yZHMgYW5kIHRoZWlyIHJlcGxhY2VtZW50cw==</PHRASE>
<PHRASE Label="la_Description_in-bulletin:configuration_emoticon" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2Ugc2ltbGV5cw==</PHRASE>
<PHRASE Label="la_Description_in-bulletin:configuration_custom" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgY3VzdG9tIGZpZWxkcw==</PHRASE>
<PHRASE Label="la_posts_subheading" Type="1">UG9zdHM=</PHRASE>
<PHRASE Label="la_Description_in-portal:log_summary" Type="1">VGhpcyBzZWN0aW9uIHNob3dzIHN1bW1hcnkgc3RhdGlzdGljcw==</PHRASE>
<PHRASE Label="la_Description_in-portal:searchlog" Type="1">VGhpcyBzZWN0aW9uIHNob3dzIHRoZSBzZWFyY2ggbG9nIGFuZCBhbGxvd3MgdG8gbWFuYWdlIGl0</PHRASE>
<PHRASE Label="la_Description_in-portal:sessionlog" Type="1">VGhpcyBzZWN0aW9uIHNob3dzIGFsbCBhY3RpdmUgc2Vzc2lvbnMgYW5kIGFsbG93cyB0byBtYW5hZ2UgdGhlbQ==</PHRASE>
<PHRASE Label="la_Description_in-portal:backup" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIHN5c3RlbSBiYWNrdXBz</PHRASE>
<PHRASE Label="la_Description_in-portal:restore" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIGRhdGFiYXNlIHJlc3RvcmVz</PHRASE>
<PHRASE Label="la_Description_in-portal:export" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBleHBvcnQgSW4tcG9ydGFsIGRhdGE=</PHRASE>
<PHRASE Label="la_Description_in-portal:sql_query" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIGRpcmVjdCBTUUwgcXVlcmllcyBvbiBJbi1wb3J0YWwgZGF0YWJhc2U=</PHRASE>
<PHRASE Label="la_Text_Restore_Heading" Type="1">SGVyZSB5b3UgY2FuIHJlc3RvcmUgeW91ciBkYXRhYmFzZSBmcm9tIGEgcHJldmlvdXNseSBiYWNrZWQgdXAgc25hcHNob3QuIFJlc3RvcmluZyB5b3VyIGRhdGFiYXNlIHdpbGwgZGVsZXRlIGFsbCBvZiB5b3VyIGN1cnJlbnQgZGF0YSBhbmQgbG9nIHlvdSBvdXQgb2YgdGhlIHN5c3RlbS4=</PHRASE>
<PHRASE Label="la_prompt_Root_Password" Type="1">UGxlYXNlIGVudGVyIHRoZSBSb290IHBhc3N3b3Jk</PHRASE>
<PHRASE Label="la_ToolTip_Primary" Type="1">U2V0IFByaW1hcnkgVGhlbWU=</PHRASE>
<PHRASE Label="la_Text_Table" Type="1">VGFibGU=</PHRASE>
<PHRASE Label="lu_of" Type="2">b2Y=</PHRASE>
<PHRASE Label="la_Text_backing_up" Type="1">QmFja2luZyB1cA==</PHRASE>
<PHRASE Label="la_text_Rows" Type="1">cm93KHMp</PHRASE>
<PHRASE Label="la_text_Bytes" Type="1">Ynl0ZXM=</PHRASE>
<PHRASE Label="la_prompt_export_error" Type="1">R2VuZXJhbCBlcnJvcjogdW5hYmxlIHRvIGV4cG9ydA==</PHRASE>
<PHRASE Label="la_Text_LangImport" Type="1">TGFuZ3VhZ2UgSW1wb3J0</PHRASE>
<PHRASE Label="la_lang_import_progress" Type="1">SW1wb3J0IHByb2dyZXNz</PHRASE>
<PHRASE Label="la_event_import_progress" Type="1">RW1haWwgZXZlbnRzIGltcG9ydCBwcm9ncmVzcw==</PHRASE>
<PHRASE Label="lu_pick" Type="0">UGljaw==</PHRASE>
<PHRASE Label="lu_disable" Type="0">RGlzYWJsZQ==</PHRASE>
<PHRASE Label="lu_forgotpw_confirm" Type="0">UGFzc3dvcmQgUmVxdWVzdCBDb25maXJtYXRpb24=</PHRASE>
<PHRASE Label="lu_forgotpw_confirm_text" Type="0">WW91IGhhdmUgY2hvc2VkIHRvIHJlc2V0IHlvdXIgcGFzc3dvcmQuIEEgbmV3IHBhc3N3b3JkIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBzeXN0ZW0uIEl0IGhhcyBiZWVuIGVtYWlsZWQgdG8geW91ciBhZGRyZXNzIG9uIGZpbGUu</PHRASE>
<PHRASE Label="la_event_user.suggest" Type="1">U3VnZ2VzdCB0byBhIGZyaWVuZA==</PHRASE>
<PHRASE Label="lu_recommend_confirm" Type="0">UmVjb21tZW5kYXRpb24gQ29uZmlybWF0aW9u</PHRASE>
<PHRASE Label="lu_recommend_confirm_text" Type="0">VGhhbmtzIGZvciByZWNvbW1lbmRpbmcgb3VyIHNpdGUgdG8geW91ciBmcmllbmQuIFRoZSBlbWFpbCBoYXMgYmVlbiBzZW50IG91dC4=</PHRASE>
<PHRASE Label="la_prompt_sqlquery_error" Type="1">QW4gU1FMIGVycm9yIGhhcyBvY2N1cmVk</PHRASE>
<PHRASE Label="lu_title_confirm" Type="0">Q29uZmlybWF0aW9u</PHRASE>
<PHRASE Label="lu_addlink_confirm_pending" Type="0">QWRkIFBlbmRpbmcgTGluayBSZXN1bHRz</PHRASE>
<PHRASE Label="lu_link_review_confirm_pending" Type="0">TGluayBSZXZpZXcgUGVuZGluZw==</PHRASE>
<PHRASE Label="lu_SiteLead_Story" Type="0">U2l0ZSBMZWFkIFN0b3J5</PHRASE>
<PHRASE Label="lu_forum_hdrtext" Type="0">V2VsY29tZSB0byBJbi1wb3J0YWwgZm9ydW1zIQ==</PHRASE>
<PHRASE Label="lu_title_mailinglist" Type="0">TWFpbGluZyBMaXN0</PHRASE>
<PHRASE Label="lu_subscribe_confirm" Type="0">U3Vic2NyaXB0aW9uIENvbmZpcm1hdGlvbg==</PHRASE>
<PHRASE Label="lu_subscribe_confirm_prompt" Type="0">QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHN1YnNjcmliZSB0byBvdXIgbWFpbGluZyBsaXN0PyAoWW91IGNhbiB1bnN1YnNjcmliZSBhbnkgdGltZSBieSBlbnRlcmluZyB5b3VyIGVtYWlsIG9uIHRoZSBmcm9udCBwYWdlKS4=</PHRASE>
<PHRASE Label="lu_button_no" Type="0">Tm8=</PHRASE>
<PHRASE Label="lu_button_yes" Type="0">WWVz</PHRASE>
<PHRASE Label="lu_unsubscribe_confirm" Type="0">VW5zdWJzY3JpcHRpb24gQ29uZmlybWF0aW9u</PHRASE>
<PHRASE Label="lu_unsubscribe_confirm_prompt" Type="0">QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuc3Vic2NyaWJlIGZyb20gb3VyIG1haWxpbmcgbGlzdD8gKFlvdSBjYW4gYWx3YXlzIHN1YnNjcmliZSBhZ2FpbiBieSBlbnRlcmluZyB5b3VyIGVtYWlsIGF0IHRoZSBob21lIHBhZ2Up</PHRASE>
<PHRASE Label="lu_unsubscribe_title" Type="0">VW5zdWJzY3JpYmU=</PHRASE>
<PHRASE Label="lu_unsubscribe_confirm_text" Type="0">V2UgYXJlIHNvcnJ5IHlvdSBoYXZlIHVuc3Vic2NyaWJlZCBmcm9tIG91ciBtYWlsaW5nIGxpc3Q=</PHRASE>
<PHRASE Label="lu_subscribe_title" Type="0">U3Vic2NyaWJlZA==</PHRASE>
<PHRASE Label="lu_subscribe_confirm_text" Type="0">VGhhbmsgeW91IGZvciBzdWJzY3JpYmluZyB0byBvdXIgbWFpbGluZyBsaXN0IQ==</PHRASE>
<PHRASE Label="lu_recommend" Type="0">UmVjb21tZW5k</PHRASE>
<PHRASE Label="lu_privacy" Type="0">UHJpdmFjeQ==</PHRASE>
<PHRASE Label="lu_CatLead_Story" Type="0">Q2F0ZWdvcnkgTGVhZCBTdG9yeQ==</PHRASE>
<PHRASE Label="la_text_min_username" Type="1">TWluaW11bSB1c2VyIG5hbWUgbGVuZ3Ro</PHRASE>
<PHRASE Label="la_text_min_password" Type="1">TWluaW11bSBwYXNzd29yZCBsZW5ndGg=</PHRASE>
<PHRASE Label="lu_fieldcustom__age" Type="2">QWdl</PHRASE>
<PHRASE Label="lu_button_unsubscribe" Type="0">VW5zdWJzY3JpYmU=</PHRASE>
<PHRASE Label="lu_fieldcustom__Sex" Type="2">U2V4</PHRASE>
<PHRASE Label="la_Text_BanUserFields" Type="1">QmFuIFVzZXIgSW5mb3JtYXRpb24=</PHRASE>
<PHRASE Label="la_prompt_ip" Type="1">SVAgQWRkcmVzcw==</PHRASE>
<PHRASE Label="la_Text_Ban" Type="1">QmFu</PHRASE>
<PHRASE Label="la_section_overview" Type="1">U2VjdGlvbiBPdmVydmlldw==</PHRASE>
<PHRASE Label="la_selecting_categories" Type="1">U2VsZWN0aW5nIENhdGVnb3JpZXM=</PHRASE>
<PHRASE Label="la_updating_config" Type="1">VXBkYXRpbmcgQ29uZmlndXJhdGlvbg==</PHRASE>
<PHRASE Label="la_updating_rules" Type="1">VXBkYXRpbmcgUnVsZXM=</PHRASE>
<PHRASE Label="la_performing_backup" Type="1">UGVyZm9ybWluZyBCYWNrdXA=</PHRASE>
<PHRASE Label="la_performing_restore" Type="1">UGVyZm9ybWluZyBSZXN0b3Jl</PHRASE>
<PHRASE Label="la_performing_export" Type="1">UGVyZm9ybWluZyBFeHBvcnQ=</PHRASE>
<PHRASE Label="la_performing_import" Type="1">UGVyZm9ybWluZyBJbXBvcnQ=</PHRASE>
<PHRASE Label="la_running_query" Type="1">UnVubmluZyBRdWVyeQ==</PHRASE>
<PHRASE Label="lu_topics_updated" Type="0">VG9waWNzIFVwZGF0ZWQ=</PHRASE>
<PHRASE Label="lu_user_exists" Type="0">VXNlciBhbHJlYWR5IGV4aXN0cw==</PHRASE>
<PHRASE Label="lu_ferror_m_register_password" Type="0">UGFzc3dvcmQgcmVxdWlyZWQ=</PHRASE>
<PHRASE Label="lu_ferror_m_register_firstname" Type="0">Rmlyc3QgbmFtZSBpcyByZXF1aXJlZA==</PHRASE>
<PHRASE Label="lu_ferror_m_register_email" Type="0">RW1haWwgaXMgcmVxdWlyZWQ=</PHRASE>
<PHRASE Label="lu_ferror_m_register_dob" Type="0">RGF0ZSBvZiBiaXJ0aCBpcyByZXF1aXJlZA==</PHRASE>
<PHRASE Label="lu_ferror_pswd_tooshort" Type="0">UGFzc3dvcmQgaXMgdG9vIHNob3J0</PHRASE>
<PHRASE Label="lu_subcats" Type="0">U3ViY2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="lu_ferror_username_tooshort" Type="0">VXNlciBuYW1lIGlzIHRvbyBzaG9ydA==</PHRASE>
<PHRASE Label="la_login" Type="1">TG9naW4=</PHRASE>
<PHRASE Label="lu_full_story" Type="0">RnVsbCBTdG9yeQ==</PHRASE>
<PHRASE Label="lu_rate_this_article" Type="0">UmF0ZSB0aGlzIGFydGljbGU=</PHRASE>
<PHRASE Label="lu_review_this_article" Type="0">UmV2aWV3IHRoaXMgYXJ0aWNsZQ==</PHRASE>
<PHRASE Label="lu_article_details" Type="0">QXJ0aWNsZSBEZXRhaWxz</PHRASE>
<PHRASE Label="lu_suggest_error" Type="0">Rm9ybSBFcnJvcg==</PHRASE>
<PHRASE Label="lu_suggest_no_address" Type="0">RS1tYWlsIGFkZHJlc3MgbWlzc2luZyBvciBpbnZhbGlk</PHRASE>
<PHRASE Label="lu_invalid_emailaddress" Type="0">RS1tYWlsIGFkZHJlc3MgbWlzc2luZyBvciBpbnZhbGlk</PHRASE>
<PHRASE Label="lu_subscribe_error" Type="0">Rm9ybSBFcnJvcg==</PHRASE>
<PHRASE Label="lu_subscribe_no_address" Type="0">RS1tYWlsIGFkZHJlc3MgbWlzc2luZyBvciBpbnZhbGlk</PHRASE>
<PHRASE Label="lu_search_error" Type="0">Rm9ybSBFcnJvcg==</PHRASE>
<PHRASE Label="lu_no_keyword" Type="0">S2V5d29yZCBtaXNzaW5n</PHRASE>
<PHRASE Label="la_Credits_Title" Type="1">Q3JlZGl0cw==</PHRASE>
<PHRASE Label="la_button_ok" Type="1">T0s=</PHRASE>
<PHRASE Label="lu_Jan" Type="0">SmFu</PHRASE>
<PHRASE Label="lu_Feb" Type="0">RmVi</PHRASE>
<PHRASE Label="lu_Mar" Type="0">TWFy</PHRASE>
<PHRASE Label="lu_Apr" Type="0">QXBy</PHRASE>
<PHRASE Label="lu_May" Type="0">TWF5</PHRASE>
<PHRASE Label="lu_Jun" Type="0">SnVu</PHRASE>
<PHRASE Label="lu_Jul" Type="0">SnVs</PHRASE>
<PHRASE Label="lu_Aug" Type="0">QXVn</PHRASE>
<PHRASE Label="lu_Sep" Type="0">U2Vw</PHRASE>
<PHRASE Label="lu_Oct" Type="0">T2N0</PHRASE>
<PHRASE Label="lu_Nov" Type="0">Tm92</PHRASE>
<PHRASE Label="lu_Dec" Type="0">RGVj</PHRASE>
<PHRASE Label="la_Showing_Stats" Type="1">U2hvd2luZyBTdGF0aXN0aWNz</PHRASE>
<PHRASE Label="la_Showing_Logs" Type="1">U2hvd2luZyBMb2dz</PHRASE>
<PHRASE Label="la_prompt_import_error" Type="1">SW1wb3J0IGVuY291bnRlcmVkIGFuIGVycm9yIGFuZCBkaWQgbm90IGNvbXBsZXRlLg==</PHRASE>
<PHRASE Label="la_text_ReadOnly" Type="1">UmVhZCBPbmx5</PHRASE>
<PHRASE Label="la_CreatedOn" Type="1">Q3JlYXRlZCBPbg==</PHRASE>
<PHRASE Label="la_prompt_html_version" Type="1">SFRNTCBWZXJzaW9u</PHRASE>
<PHRASE Label="la_prompt_text_version" Type="1">VGV4dCBWZXJzaW9u</PHRASE>
<PHRASE Label="la_none" Type="1">Tm9uZQ==</PHRASE>
<PHRASE Label="lu_none" Type="0">Tm9uZQ==</PHRASE>
<PHRASE Label="la_Show_Log" Type="1">U2hvd2luZyBMb2dz</PHRASE>
<PHRASE Label="la_step" Type="1">U3RlcA==</PHRASE>
<PHRASE Label="lu_errors_on_form" Type="0">TWlzc2luZyBvciBpbnZhbGlkIHZhbHVlcy4gUGxlYXNlIGNoZWNrIGFsbCB0aGUgZmllbGRzIGFuZCB0cnkgYWdhaW4u</PHRASE>
<PHRASE Label="la_text_sess_expired" Type="0">U2Vzc2lvbiBFeHBpcmVk</PHRASE>
<PHRASE Label="la_prompt_ActiveLinks" Type="1">QWN0aXZlIExpbmtz</PHRASE>
<PHRASE Label="lu_user_pending_aproval" Type="0">UGVuZGluZyBSZWdpc3RyYXRpb24gQ29tcGxldGU=</PHRASE>
<PHRASE Label="lu_error_subtitle" Type="0">RXJyb3I=</PHRASE>
<PHRASE Label="la_text_disclaimer_part1" Type="1">UnVubmluZyB0aGlzIHV0aWxpdHkgd2lsbCBhZmZlY3QgeW91ciBkYXRhYmFzZS4gUGxlYXNlIGJlIGFkdmlzZWQgdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHV0aWxpdHkgYXQgeW91ciBvd24gcmlzay4gSW50ZWNobmljIENvcnBvcmF0aW9uIGNhbiBub3QgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBjb3JydXB0IGRhdGEgb3IgZGF0YSBsb3NzLg==</PHRASE>
<PHRASE Label="la_text_disclaimer_part2" Type="1">UGxlYXNlIG1ha2Ugc3VyZSB0byBiYWNrIHVwIHlvdXIgZGF0YWJhc2UocykgYmVmb3JlIHJ1bm5pbmcgdGhpcyB1dGlsaXR5Lg==</PHRASE>
<PHRASE Label="la_Text_ComingSoon" Type="1">U2VjdGlvbiBDb21pbmcgU29vbg==</PHRASE>
<PHRASE Label="lu_prompt_recommend" Type="0">UmVjb21tZW5kIHRoaXMgc2l0ZSB0byBhIGZyaWVuZA==</PHRASE>
<PHRASE Label="lu_fieldcustom__uc1" Type="2">dWMx</PHRASE>
<PHRASE Label="la_Text_ShowingUsers" Type="1">U2hvd2luZyBVc2Vycw==</PHRASE>
<PHRASE Label="lu_operation_notallowed" Type="0">WW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9u</PHRASE>
<PHRASE Label="lu_user_pending_aproval_text" Type="0">VGhhbmsgeW91IGZvciByZWdpc3RlcmluZy4gWW91ciByZWdpc3RyYXRpb24gaXMgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbC4=</PHRASE>
<PHRASE Label="la_prompt_EditorsPick" Type="1">RWRpdG9yJ3MgUGljaw==</PHRASE>
<PHRASE Label="lu_modify_link" Type="0">TW9kaWZ5IExpbms=</PHRASE>
<PHRASE Label="lu_modifylink_confirm" Type="0">TGluayBNb2RpZmljYXRpb24gQ29uZmlybWF0aW9u</PHRASE>
<PHRASE Label="lu_modifylink_confirm_text" Type="0">WW91ciBsaW5rIGhhcyBiZWVuIG1vZGlmaWVkLg==</PHRASE>
<PHRASE Label="la_approve_description" Type="1">QWN0aXZl</PHRASE>
<PHRASE Label="la_text_restore warning" Type="1">VGhlIHZlcnNpb25zIG9mIHRoZSBiYWNrdXAgYW5kIHlvdXIgY29kZSBkb24ndCBtYXRjaC4gWW91ciBpbnN0YWxsYXRpb24gd2lsbCBwcm9iYWJseSBiZSBub24gb3BlcmF0aW9uYWwu</PHRASE>
<PHRASE Label="la_prompt_approve_warning" Type="1">Q29udGludWUgdG8gcmVzdG9yZSBhdCBteSBvd24gcmlzaz8=</PHRASE>
<PHRASE Label="la_prompt_TopicLocked" Type="1">VG9waWMgTG9ja2Vk</PHRASE>
<PHRASE Label="la_prompt_PostsToLock" Type="1">UG9zdHMgdG8gbG9jaw==</PHRASE>
<PHRASE Label="la_Warning_Save_Item" Type="1">TW9kaWZpY2F0aW9ucyB3aWxsIG5vdCB0YWtlIGVmZmVjdCB1bnRpbCB5b3UgY2xpY2sgdGhlIFNhdmUgYnV0dG9uIQ==</PHRASE>
<PHRASE Label="la_Text_ShowingGroups" Type="1">U2hvd2luZyBHcm91cHM=</PHRASE>
<PHRASE Label="la_tab_GeneralSettings" Type="1">R2VuZXJhbCBTZXR0aW5ncw==</PHRASE>
<PHRASE Label="la_prompt_TopicsTotal" Type="1">VG90YWwgVG9waWNz</PHRASE>
<PHRASE Label="la_prompt_TopicsActive" Type="1">QWN0aXZlIFRvcGljcw==</PHRASE>
<PHRASE Label="la_prompt_TopicsPending" Type="1">UGVuZGluZyBUb3BpY3M=</PHRASE>
<PHRASE Label="la_prompt_TopicsDisabled" Type="1">RGlzYWJsZWQgVG9waWNz</PHRASE>
<PHRASE Label="la_prompt_NewTopics" Type="1">TmV3IFRvcGljcw==</PHRASE>
<PHRASE Label="la_prompt_EditorsPickTopics" Type="1">RWRpdG9yIFBpY2sgVG9waWNz</PHRASE>
<PHRASE Label="la_prompt_HotTopics" Type="1">SG90IFRvcGljcw==</PHRASE>
<PHRASE Label="la_prompt_PopularTopics" Type="1">UG9wdWxhciBUb3BpY3M=</PHRASE>
<PHRASE Label="la_prompt_TopicAverageRating" Type="1">VG9waWNzIEF2ZXJhZ2UgUmF0aW5n</PHRASE>
<PHRASE Label="la_prompt_MaxTopicHits" Type="1">VG9waWMgTWF4aW11bSBIaXRz</PHRASE>
<PHRASE Label="la_prompt_MaxTopicVotes" Type="1">VG9waWMgTWF4aW11bSBWb3Rlcw==</PHRASE>
<PHRASE Label="la_prompt_NewestTopicDate" Type="1">TmV3ZXN0IFRvcGljIERhdGU=</PHRASE>
<PHRASE Label="la_prompt_NewestTopicTime" Type="1">TmV3ZXN0IFRvcGljIFRpbWU=</PHRASE>
<PHRASE Label="la_prompt_LastUpdatedTopicDate" Type="1">TGFzdCBVcGRhdGVkIFRvcGljIERhdGU=</PHRASE>
<PHRASE Label="la_prompt_LastUpdatedTopicTime" Type="1">TGFzdCBVcGRhdGVkIFRvcGljIFRpbWU=</PHRASE>
<PHRASE Label="la_prompt_TopicReviews" Type="1">VG90YWwgVG9waWMgUmV2aWV3cw==</PHRASE>
<PHRASE Label="la_prompt_PostsTotal" Type="1">VG90YWwgUG9zdHM=</PHRASE>
<PHRASE Label="la_prompt_NewestPostDate" Type="1">TmV3ZXN0IFBvc3QgRGF0ZQ==</PHRASE>
<PHRASE Label="la_prompt_NewestPostTime" Type="1">TmV3ZXN0IFBvc3QgVGltZQ==</PHRASE>
<PHRASE Label="la_prompt_LastUpdatedPostDate" Type="1">TGFzdCBVcGRhdGVkIFBvc3QgRGF0ZQ==</PHRASE>
<PHRASE Label="la_prompt_LastUpdatedPostTime" Type="1">TGFzdCBVcGRhdGVkIFBvc3QgVGltZQ==</PHRASE>
<PHRASE Label="la_prompt_PendingLinks" Type="1">UGVuZGluZyBMaW5rcw==</PHRASE>
<PHRASE Label="la_prompt_DisabledLinks" Type="1">RGlzYWJsZWQgTGlua3M=</PHRASE>
<PHRASE Label="la_prompt_NewLinks" Type="1">TmV3IExpbmtz</PHRASE>
<PHRASE Label="la_prompt_EditorsPickLinks" Type="1">RWRpdG9yJ3MgUGljayBMaW5rcw==</PHRASE>
<PHRASE Label="la_prompt_HotLinks" Type="1">SG90IExpbmtz</PHRASE>
<PHRASE Label="la_prompt_PopularLinks" Type="1">UG9wdWxhciBMaW5rcw==</PHRASE>
<PHRASE Label="la_prompt_LinksAverageRating" Type="1">QXZlcmFnZSBSYXRpbmcgb2YgTGlua3M=</PHRASE>
<PHRASE Label="la_prompt_MaxLinksHits" Type="1">TWF4aW11bSBIaXRzIG9mIGEgTGluaw==</PHRASE>
<PHRASE Label="la_prompt_MaxLinksVotes" Type="1">TWF4aW11bSBWb3RlcyBvZiBhIExpbms=</PHRASE>
<PHRASE Label="la_prompt_NewestLinkDate" Type="1">TmV3ZXN0IExpbmsgRGF0ZQ==</PHRASE>
<PHRASE Label="la_prompt_LastLinkUpdate" Type="1">TGFzdCBVcGRhdGVkIExpbms=</PHRASE>
<PHRASE Label="la_prompt_LinkReviews" Type="1">VG90YWwgTGluayBSZXZpZXdz</PHRASE>
<PHRASE Label="la_prompt_ArticlesTotal" Type="1">VG90YWwgQXJ0aWNsZXM=</PHRASE>
<PHRASE Label="la_prompt_ArticlesActive" Type="1">QWN0aXZlIEFydGljbGVz</PHRASE>
<PHRASE Label="la_prompt_ArticlesPending" Type="1">UGVuZGluZyBBcnRpY2xlcw==</PHRASE>
<PHRASE Label="la_prompt_DisabledArticles" Type="1">RGlzYWJsZWQgQXJ0aWNsZXM=</PHRASE>
<PHRASE Label="la_prompt_ArticlesArchived" Type="1">QXJjaGl2ZWQgQXJ0aWNsZXM=</PHRASE>
<PHRASE Label="la_prompt_NewArticles" Type="1">TmV3IEFydGljbGVz</PHRASE>
<PHRASE Label="la_prompt_EditorsPickArticles" Type="1">RWRpdG9yJ3MgUGljayBBcnRpY2xlcw==</PHRASE>
<PHRASE Label="la_prompt_HotArticles" Type="1">SG90IEFydGljbGVz</PHRASE>
<PHRASE Label="la_prompt_LeadStoryArticles" Type="1">TGVhZCBTdG9yeSBBcnRpY2xlcw==</PHRASE>
<PHRASE Label="la_prompt_CategoryLeadStoryArticles" Type="1">Q2F0ZWdvcnkgTGVhZCBTdG9yeSBBcnRpY2xlcw==</PHRASE>
<PHRASE Label="la_prompt_ArticleAverageRating" Type="1">QXZlcmFnZSBSYXRpbmcgb2YgQXJ0aWNsZXM=</PHRASE>
<PHRASE Label="la_prompt_PopularArticles" Type="1">UG9wdWxhciBBcnRpY2xlcw==</PHRASE>
<PHRASE Label="la_prompt_MaxHitsArticles" Type="1">TWF4aW11bSBIaXRzIG9mIGFuIEFydGljbGU=</PHRASE>
<PHRASE Label="la_prompt_MaxVotesArticles" Type="1">TWF4aW11bSBWb3RlcyBvZiBhbiBBcnRpY2xl</PHRASE>
<PHRASE Label="la_prompt_NewestArticleDate" Type="1">TmV3ZXN0IEFydGljbGUgRGF0ZQ==</PHRASE>
<PHRASE Label="la_prompt_LastArticleUpdate" Type="1">TGFzdCBVcGRhdGVkIEFydGljbGU=</PHRASE>
<PHRASE Label="la_prompt_ArticleReviews" Type="1">VG90YWwgQXJ0aWNsZSBSZXZpZXdz</PHRASE>
<PHRASE Label="la_prompt_TotalCategories" Type="1">VG90YWwgQ2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="la_prompt_PendingCategories" Type="1">UGVuZGluZyBDYXRlZ29yaWVz</PHRASE>
<PHRASE Label="la_prompt_DisabledCategories" Type="1">RGlzYWJsZWQgQ2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="la_prompt_NewCategories" Type="1">TmV3IENhdGVnb3JpZXM=</PHRASE>
<PHRASE Label="la_prompt_CategoryEditorsPick" Type="1">RWRpdG9yJ3MgUGljayBDYXRlZ29yaWVz</PHRASE>
<PHRASE Label="la_prompt_NewestCategoryDate" Type="1">TmV3ZXN0IENhdGVnb3J5IERhdGU=</PHRASE>
<PHRASE Label="la_prompt_LastCategoryUpdate" Type="1">TGFzdCBDYXRlZ29yeSBVcGRhdGU=</PHRASE>
<PHRASE Label="la_prompt_TopicsUsers" Type="1">VG90YWwgVXNlcnMgd2l0aCBUb3BpY3M=</PHRASE>
<PHRASE Label="la_prompt_UsersActive" Type="1">QWN0aXZlIFVzZXJz</PHRASE>
<PHRASE Label="la_prompt_UsersPending" Type="1">UGVuZGluZyBVc2Vycw==</PHRASE>
<PHRASE Label="la_prompt_UsersDisabled" Type="1">RGlzYWJsZWQgVXNlcnM=</PHRASE>
<PHRASE Label="la_prompt_NewestUserDate" Type="1">TmV3ZXN0IFVzZXIgRGF0ZQ==</PHRASE>
<PHRASE Label="la_prompt_UsersUniqueCountries" Type="1">TnVtYmVyIG9mIFVuaXF1ZSBDb3VudHJpZXMgb2YgVXNlcnM=</PHRASE>
<PHRASE Label="la_prompt_UsersUniqueStates" Type="1">TnVtYmVyIG9mIFVuaXF1ZSBTdGF0ZXMgb2YgVXNlcnM=</PHRASE>
<PHRASE Label="la_prompt_TotalUserGroups" Type="1">VG90YWwgVXNlciBHcm91cHM=</PHRASE>
<PHRASE Label="la_prompt_BannedUsers" Type="1">QmFubmVkIFVzZXJz</PHRASE>
<PHRASE Label="la_prompt_NonExpiredSessions" Type="1">Q3VycmVudGx5IEFjdGl2ZSBVc2VyIFNlc3Npb25z</PHRASE>
<PHRASE Label="la_prompt_ThemeCount" Type="1">TnVtYmVyIG9mIFRoZW1lcw==</PHRASE>
<PHRASE Label="la_prompt_RegionsCount" Type="1">TnVtYmVyIG9mIFJlZ2lvbiBQYWNrcw==</PHRASE>
<PHRASE Label="la_prompt_TablesCount" Type="1">TnVtYmVyIG9mIERhdGFiYXNlIFRhYmxlcw==</PHRASE>
<PHRASE Label="la_prompt_RecordsCount" Type="1">TnVtYmVyIG9mIERhdGFiYXNlIFJlY29yZHM=</PHRASE>
<PHRASE Label="la_prompt_SystemFileSize" Type="1">VG90YWwgU2l6ZSBvZiBTeXN0ZW0gRmlsZXM=</PHRASE>
<PHRASE Label="la_prompt_DataSize" Type="1">VG90YWwgU2l6ZSBvZiB0aGUgRGF0YWJhc2U=</PHRASE>
<PHRASE Label="la_megabytes" Type="1">TUI=</PHRASE>
<PHRASE Label="la_kilobytes" Type="1">S0I=</PHRASE>
<PHRASE Label="la_tag_library" Type="1">VGFnIExpYnJhcnk=</PHRASE>
<PHRASE Label="la_Warning_Filter" Type="1">QSBzZWFyY2ggb3IgYSBmaWx0ZXIgaXMgaW4gZWZmZWN0LiBZb3UgbWF5IG5vdCBiZSBzZWVpbmcgYWxsIG9mIHRoZSBkYXRhLg==</PHRASE>
<PHRASE Label="la_prompt_AdminId" Type="1">QWRtaW4gZ3JvdXA=</PHRASE>
<PHRASE Label="la_text_upgrade_disclaimer" Type="1">WW91ciBkYXRhIHdpbGwgYmUgbW9kaWZpZWQgZHVyaW5nIHRoZSB1cGdyYWRlLiBXZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3UgbWFrZSBhIGJhY2t1cCBvZiB5b3VyIGRhdGFiYXNlLiBQcm9jZWVkIHdpdGggdGhlIHVwZ3JhZGU/</PHRASE>
<PHRASE Label="la_to" Type="1">dG8=</PHRASE>
<PHRASE Label="la_PrevUser" Type="1">UHJldmlvdXMgVXNlcg==</PHRASE>
<PHRASE Label="la_NextUser" Type="1">TmV4dCBVc2Vy</PHRASE>
<PHRASE Label="lu_locked_topic" Type="0">TG9ja2VkIHRvcGlj</PHRASE>
<PHRASE Label="lu_field_editorspick" Type="0">RWRpdG9yJ3MgcGljaw==</PHRASE>
<PHRASE Label="la_ToolTip_SendEmail" Type="1">U2VuZCBFLW1haWw=</PHRASE>
<PHRASE Label="la_title_Install" Type="1">SW5zdGFsbGF0aW9uIEhlbHA=</PHRASE>
<PHRASE Label="la_tab_Install" Type="1">SW5zdGFsbA==</PHRASE>
<PHRASE Label="la_PermName_SystemAccess.ReadOnly_desc" Type="1">UmVhZC1Pbmx5IEFjY2VzcyBUbyBEYXRhYmFzZQ==</PHRASE>
+<PHRASE Label="la_Text_BackupPath" Type="1">QmFja3VwIFBhdGg=</PHRASE>
+<PHRASE Label="la_config_backup_path" Type="1">QmFja3VwIFBhdGg=</PHRASE>
+<PHRASE Label="lu_editors_picks" Type="0">RWRpdG9yJ3MgUGlja3M=</PHRASE>
</PHRASES><EVENTS><EVENT MessageType="text" Event="USER.ADD" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogSW4tcG9ydGFsIHJlZ2lzdHJhdGlvbgoKRGVhciA8aW5wOnRvdXNlciBfRmllbGQ9IkZpcnN0TmFtZSIgLz4gPGlucDp0b3VzZXIgX0ZpZWxkPSJMYXN0TmFtZSIgLz4sDQoNClRoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmcgb24gPGlucDptX3BhZ2VfdGl0bGUgLz4uIFlvdXIgcmVnaXN0cmF0aW9uIGlzIG5vdyBhY3RpdmUu</EVENT>
<EVENT MessageType="text" Event="USER.ADD" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTmV3IHVzZXIgaGFzIGJlZW4gYWRkZWQKCkEgbmV3IHVzZXIgIjxpbnA6dG91c2VyIF9GaWVsZD0iVXNlck5hbWUiIC8+IiBoYXMgYmVlbiBhZGRlZC4=</EVENT>
<EVENT MessageType="text" Event="USER.APPROVE" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogWW91IGhhdmUgYmVlbiBhcHByb3ZlZAoKV2VsY29tZSB0byBJbi1wb3J0YWwhDQpZb3VyIHVzZXIgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkLiBZb3VyIHVzZXIgbmFtZSBpcyAiPGlucDp0b3VzZXIgX0ZpZWxkPSJVc2VyTmFtZSIgLz4iLg==</EVENT>
<EVENT MessageType="text" Event="USER.APPROVE" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogVXNlciBhcHByb3ZlZAoKVXNlciAiPGlucDp0b3VzZXIgX0ZpZWxkPSJVc2VyTmFtZSIgLz4iIGhhcyBiZWVuIGFwcHJvdmVkLg==</EVENT>
<EVENT MessageType="text" Event="USER.VALIDATE" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogSW4tcG9ydGFsIHJlZ2lzdHJhdGlvbgoKV2VsY29tZSB0byBJbi1wb3J0YWwhDQpZb3VyIHVzZXIgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkLiBZb3VyIHVzZXIgbmFtZSBpcyAiPGlucDp0b3VzZXIgX0ZpZWxkPSJVc2VyTmFtZSIgLz4iIGFuZCB5b3VyIHBhc3N3b3JkIGlzICI8aW5wOnRvdXNlciBfRmllbGQ9InBhc3N3b3JkIiAvPiIuDQo=</EVENT>
<EVENT MessageType="text" Event="USER.VALIDATE" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogVXNlciB2YWxpZGF0ZWQKClVzZXIgIjxpbnA6dG91c2VyIF9GaWVsZD0iVXNlck5hbWUiIC8+IiBoYXMgYmVlbiB2YWxpZGF0ZWQu</EVENT>
<EVENT MessageType="text" Event="USER.DENY" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQWNjZXNzIGRlbmllZAoKWW91ciByZWdpc3RyYXRpb24gdG8gPGlucDptX3BhZ2VfdGl0bGUgLz4gaGFzIGJlZW4gZGVuaWVkLg==</EVENT>
<EVENT MessageType="text" Event="USER.DENY" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogVXNlciBkZW5pZWQKClVzZXIgIjxpbnA6dG91c2VyIF9GaWVsZD0iVXNlck5hbWUiIC8+IiBoYXMgYmVlbiBkZW5pZWQu</EVENT>
<EVENT MessageType="text" Event="USER.PSWD" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTG9zdCBwYXNzd29yZAoKWW91ciBsb3N0IHBhc3N3b3JkIGhhcyBiZWVuIHJlc2V0LiBZb3VyIG5ldyBwYXNzd29yZCBpczogIjxpbnA6dG91c2VyIF9GaWVsZD0iUGFzc3dvcmQiIC8+Ii4=</EVENT>
<EVENT MessageType="text" Event="USER.PSWD" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTG9zdCBwYXNzd29yZAoKWW91ciBsb3N0IHBhc3N3b3JkIGhhcyBiZWVuIHJlc2V0LiBZb3VyIG5ldyBwYXNzd29yZCBpczogIjxpbnA6dG91c2VyIF9GaWVsZD0iUGFzc3dvcmQiIC8+Ii4=</EVENT>
<EVENT MessageType="text" Event="CATEGORY.ADD" Type="0">U3ViamVjdDogQ2F0ZWdvcnkgYWRkZWQKCllvdXIgc3VnZ2VzdGVkIGNhdGVnb3J5ICI8aW5wOm1fY2F0ZWdvcnlfZmllbGQgX0ZpZWxkPSJOYW1lIiBfU3RyaXBIVE1MPSIxIi8+IiBoYXMgYmVlbiBhZGRlZC4=</EVENT>
<EVENT MessageType="text" Event="CATEGORY.ADD.PENDING" Type="0" />
<EVENT MessageType="text" Event="CATEGORY.ADD" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBhZGRlZAoKQSBjYXRlZ29yeSAiPGlucDptX2NhdGVnb3J5X2ZpZWxkIF9GaWVsZD0iTmFtZSIgX1N0cmlwSFRNTD0iMSIvPiIgaGFzIGJlZW4gYWRkZWQu</EVENT>
<EVENT MessageType="text" Event="CATEGORY.DELETE" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBkZWxldGVkCgpBIGNhdGVnb3J5ICI8aW5wOm1fY2F0ZWdvcnlfZmllbGQgX0ZpZWxkPSJOYW1lIiBfU3RyaXBIVE1MPSIxIi8+IiBoYXMgYmVlbiBkZWxldGVkLg==</EVENT>
<EVENT MessageType="text" Event="CATEGORY.DELETE" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBkZWxldGVkCgpBIGNhdGVnb3J5ICI8aW5wOm1fY2F0ZWdvcnlfZmllbGQgX0ZpZWxkPSJOYW1lIiBfU3RyaXBIVE1MPSIxIi8+IiBoYXMgYmVlbiBkZWxldGVkLg==</EVENT>
<EVENT MessageType="text" Event="CATEGORY.MODIFY" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBtb2RpZmllZAoKWW91ciBzdWdnZXN0ZWQgY2F0ZWdvcnkgIjxpbnA6bV9jYXRlZ29yeV9maWVsZCBfRmllbGQ9Ik5hbWUiIF9TdHJpcEhUTUw9IjEiLz4iIGhhcyBiZWVuIG1vZGlmaWVkLg==</EVENT>
<EVENT MessageType="text" Event="CATEGORY.MODIFY" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBtb2RpZmllZAoKQSBjYXRlZ29yeSAiPGlucDptX2NhdGVnb3J5X2ZpZWxkIF9GaWVsZD0iTmFtZSIgX1N0cmlwSFRNTD0iMSIvPiIgaGFzIGJlZW4gbW9kaWZpZWQu</EVENT>
<EVENT MessageType="text" Event="CATEGORY.APPROVE" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBhcHByb3ZlZAoKWW91ciBzdWdnZXN0ZWQgY2F0ZWdvcnkgIjxpbnA6bV9jYXRlZ29yeV9maWVsZCBfRmllbGQ9Ik5hbWUiIF9TdHJpcEhUTUw9IjEiLz4iIGhhcyBiZWVuIGFwcHJvdmVkLg==</EVENT>
<EVENT MessageType="text" Event="CATEGORY.APPROVE" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBhcHByb3ZlZAoKQSBjYXRlZ29yeSAiPGlucDptX2NhdGVnb3J5X2ZpZWxkIF9GaWVsZD0iTmFtZSIgX1N0cmlwSFRNTD0iMSIvPiIgaGFzIGJlZW4gYXBwcm92ZWQu</EVENT>
<EVENT MessageType="text" Event="CATEGORY.DENY" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBkZW5pZWQKCllvdXIgY2F0ZWdvcnkgc3VnZ2VzdGlvbiAiPGlucDptX2NhdGVnb3J5X2ZpZWxkIF9GaWVsZD0iTmFtZSIgX1N0cmlwSFRNTD0iMSIvPiIgaGFzIGJlZW4gZGVuaWVkLg==</EVENT>
<EVENT MessageType="text" Event="CATEGORY.DENY" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBkZW5pZWQKCkEgY2F0ZWdvcnkgIjxpbnA6bV9jYXRlZ29yeV9maWVsZCBfRmllbGQ9Ik5hbWUiIF9TdHJpcEhUTUw9IjEiLz4iIGhhcyBiZWVuIGRlbmllZC4=</EVENT>
<EVENT MessageType="text" Event="USER.SUBSCRIBE" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogU3Vic2NyaXB0aW9uIGNvbmZpcm1hdGlvbgoKWW91IGhhdmUgc3Vic2NyaWJlZCB0byA8aW5wOm1fcGFnZV90aXRsZSAvPiBtYWlsaW5nIGxpc3Qu</EVENT>
<EVENT MessageType="text" Event="USER.SUBSCRIBE" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSB1c2VyIGhhcyBzdWJzY3JpYmVkCgpBIHVzZXIgaGFzIHN1YnNjcmliZWQgdG8gPGlucDptX3BhZ2VfdGl0bGUgLz4gbWFpbGluZyBsaXN0Lg==</EVENT>
<EVENT MessageType="text" Event="USER.UNSUBSCRIBE" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogWW91IGhhdmUgYmVlbiB1bnN1YnNjcmliZWQKCllvdSBoYXZlIHN1Y2Nlc3NmdWxseSB1bnN1YnNyaWJlZCBmcm9tIDxpbnA6bV9wYWdlX3RpdGxlIC8+IG1haWxpbmcgbGlzdC4=</EVENT>
<EVENT MessageType="text" Event="USER.UNSUBSCRIBE" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogVXNlciB1bnN1YnNyaWJlZAoKQSB1c2VyIGhhcyB1bnN1YnNjcmliZWQu</EVENT>
<EVENT MessageType="text" Event="TOPIC.ADD" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogVG9waWMgYWRkZGUKCkEgdG9waWMgaGFzIGJlZW4gYWRkZWQu</EVENT>
<EVENT MessageType="text" Event="POST.ADD" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogUG9zdCBhZGRlZAoKQSBwb3N0IGhhcyBiZWVuIGFkZGVkLg==</EVENT>
<EVENT MessageType="text" Event="POST.MODIFY" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogUG9zIG1vZGlmaWVkCgpBIHBvc3QgaGFzIGJlZW4gbW9kaWZpZWQu</EVENT>
<EVENT MessageType="text" Event="POST.ADD" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogUG9zdCBhZGRlZAoKWW91ciBwb3N0IGhhcyBiZWVuIGFkZGVkLg==</EVENT>
<EVENT MessageType="text" Event="LINK.ADD" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayBhZGRlZAoKQSBsaW5rIGhhcyBiZWVuIGFkZGVk</EVENT>
<EVENT MessageType="text" Event="LINK.MODIFY" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayBtb2RpZmllZAoKQSBsaW5rIGhhcyBiZWVuIG1vZGlmaWVkLg==</EVENT>
<EVENT MessageType="text" Event="LINK.REVIEW.ADD" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayByZXZpZXcgYWRkZWQKCkEgbGluayByZXZpZXcgaGFzIGJlZW4gYWRkZWQ=</EVENT>
<EVENT MessageType="text" Event="LINK.ADD" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayBhZGRlZAoKWW91ciBsaW5rIGhhcyBiZWVuIGFkZGVkLg==</EVENT>
<EVENT MessageType="text" Event="LINK.APPROVE" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayBhcHByb3ZlZAoKWW91ciBsaW5rIGhhcyBiZWVuIGFwcHJvdmVk</EVENT>
<EVENT MessageType="text" Event="LINK.DENY" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayBkZW5pZWQKCllvdXIgbGluayBoYXMgYmVlbiBkZW5pZWQu</EVENT>
<EVENT MessageType="text" Event="LINK.MODIFY" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayBtb2RpZmVkCgpZb3VyIGxpbmsgaGFzIGJlZW4gbW9kaWZpZWQ=</EVENT>
<EVENT MessageType="text" Event="LINK.MODIFY.APPROVE" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayBhcHByb3ZlZAoKWW91ciBsaW5rIG1vZGlmaWNhdGlvbiBoYXMgYmVlbiBhcHByb3ZlZA==</EVENT>
<EVENT MessageType="text" Event="LINK.REVIEW.ADD" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayByZXZpZXcgYWRkZWQKCllvdXIgbGluayByZXZpZXcgaGFzIGJlZW4gYWRkZWQ=</EVENT>
<EVENT MessageType="text" Event="LINK.REVIEW.APPROVE" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayByZXZpZXcgYXBwcm92ZWQKCllvdXIgbGluayByZXZpZXcgaGFzIGJlZW4gYXBwcm92ZWQ=</EVENT>
<EVENT MessageType="text" Event="LINK.REVIEW.DENY" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayByZXZpZXcgZGVjbGluZWQKCllvdXIgbGluayByZXZpZXcgaGFzIGJlZW4gZGVjbGluZWQ=</EVENT>
<EVENT MessageType="text" Event="LINK.REVIEW.ADD.PENDING" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayByZXZpZXcgYWRkZWQKCllvdXIgbGluayByZXZpZXcgaGFzIGJlZW4gYWRkZWQgYW5kIGlzIHBlbmRpbmcgYXBwcm92YWwu</EVENT>
<EVENT MessageType="text" Event="LINK.MODIFY.DENY" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTGluayBtb2RpZmljYXRpb24gZGVuaWVkCgpZb3VyIGxpbmsgbW9kaWZpY2F0aW9uIGhhcyBiZWVuIGRlbmllZC4=</EVENT>
<EVENT MessageType="text" Event="ARTICLE.ADD" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQXJ0aWNsZSBhZGRlZAoKQW4gYXJ0aWNsZSBoYXMgYmVlbiBhZGRlZA==</EVENT>
<EVENT MessageType="text" Event="ARTICLE.ADD" Type="0">U3ViamVjdDogQXJ0aWNsZSBhZGRlZAoKWW91ciBhcnRpY2xlIGhhcyBiZWVuIGFkZGVk</EVENT>
<EVENT MessageType="text" Event="ARTICLE.MODIFY" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQXJ0aWNsZSBtb2RpZmVkCgpBbiBhcnRpY2xlIGhhcyBiZWVuIG1vZGlmaWVk</EVENT>
<EVENT MessageType="text" Event="ARTICLE.REVIEW.ADD" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQXJ0aWNsZSByZXZpZXcgYWRkZWQKCkFuIGFydGljbGUgcmV2aWV3IGhhcyBiZWVuIGFkZGVk</EVENT>
<EVENT MessageType="text" Event="ARTICLE.APPROVE" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQXJ0aWNsZSBhcHByb3ZlZAoKWW91ciBzdWJtaXR0ZWQgYXJ0aWNsZSBoYXMgYmVlbiBhcHByb3ZlZA==</EVENT>
<EVENT MessageType="text" Event="ARTICLE.DENY" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQXJ0aWNsZSBkZWNsaW5lZAoKWW91ciBzdWJtaXR0ZWQgYXJ0aWNsZSBoYXMgYmVlbiBkZWNsaW5lZA==</EVENT>
<EVENT MessageType="text" Event="ARTICLE.MODIFY" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQXJ0aWNsZSBtb2RpZmllZAoKWW91ciBhcnRpY2xlIGhhcyBiZWVuIG1vZGlmZWQ=</EVENT>
<EVENT MessageType="text" Event="ARTICLE.MODIFY.APPROVE" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQXJ0aWNsZSBtb2RpZmljYXRpb24gYXBwcm92ZWQKCllvdXIgYXJ0aWNsZSBtb2RpZmljYXRpb24gaGFzIGJlZW4gYXBwcm92ZWQ=</EVENT>
<EVENT MessageType="text" Event="ARTICLE.MODIFY.DENY" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQXJ0aWNsZSBtb2RpZmljYXRpb24gZGVjbGluZWQKCllvdXIgYXJ0aWNsZSBtb2RpZmljYXRpb24gaGFzIGJlZW4gZGVjbGluZWQ=</EVENT>
<EVENT MessageType="text" Event="ARTICLE.REVIEW.ADD" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQXJ0aWNsZSByZXZpZXcgYWRkZWQKCllvdXIgcmV2aWV3IGhhcyBiZWVuIGFkZGVk</EVENT>
<EVENT MessageType="text" Event="ARTICLE.REVIEW.APPROVE" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQXJ0aWNsZSByZXZpZXcgYXBwcm92ZWQKCllvdXIgYXJ0aWNsZSByZXZpZXcgaGFzIGJlZW4gYXBwcm92ZWQ=</EVENT>
<EVENT MessageType="text" Event="ARTICLE.REVIEW.DENY" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQXJ0aWNsZSByZXZpZXcgZGVjbGluZWQKCllvdXIgYXJ0aWNsZSByZXZpZXcgaGFzIGJlZW4gZGVjbGluZWQ=</EVENT>
<EVENT MessageType="text" Event="ARTICLE.REVIEW.ADD.PENDING" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogUmV2aWV3IHBlbmRpbmcKCllvdXIgYXJ0aWNsZSByZXZpZXcgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGRhdGFiYXNlIGFuZCBpcyBjdXJyZW50bHkgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbA==</EVENT>
<EVENT MessageType="html" Event="USER.SUGGEST" Type="0">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQ2hlY2sgb3V0IHRoaXMgc2l0ZQoKSGksDQoNClRoaXMgbWVzc2FnZSBoYXMgYmVlbiBzZW50IHRvIHlvdSBmcm9tIG9uZSBvZiB5b3VyIGZyaWVuZHMuDQpDaGVjayBvdXQgdGhpcyBzaXRlOiA8YSBocmVmPSI8aW5wOm1fdGhlbWVfdXJsIF9wYWdlPSJjdXJyZW50Ii8+Ij48aW5wOm1fcGFnZV90aXRsZSAvPjwvYT4h</EVENT>
<EVENT MessageType="text" Event="USER.SUGGEST" Type="1">WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogVGhlIHNpdGUgaGFzIGJlZW4gc3VnZ2VzdGVkCgpBIHZpc2l0b3Igc3VnZ2VzdGVkIHlvdXIgc2l0ZSB0byBhIGZyaWVuZC4=</EVENT>
</EVENTS></LANGUAGE></LANGUAGES>
\ No newline at end of file
Property changes on: trunk/admin/install/langpacks/english.lang
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.6
\ No newline at end of property
+1.7
\ No newline at end of property
Index: trunk/globals.php
===================================================================
--- trunk/globals.php (revision 136)
+++ trunk/globals.php (revision 137)
@@ -1,1313 +1,1313 @@
<?php
$vars = parse_portal_ini($pathtoroot."config.php");
while($key = key($vars))
{
$key = "g_".$key;
global $$key;
$$key = current($vars); //variable variables
next($vars);
}
/*list the tables which contain item data */
$ItemTables = array();
$KeywordIgnore = array();
global $debuglevel;
$debuglevel=0;
$_GLOBALS["debuglevel"]=0;
/*New, Hot, Pop field values */
define('NEVER', 0);
define('ALWAYS', 1);
define('AUTO', 2);
/*Status Values */
define('STATUS_DISABLED', 0);
define('STATUS_ACTIVE', 1);
define('STATUS_PENDING', 2);
$LogLevel=0;
$LogFile = NULL;
function parse_portal_ini($file, $parse_section = false) {
if(!file_exists($file) && !is_readable($file))
die('Could Not Open Ini File');
$contents = file($file);
$retval = array();
$section = '';
foreach($contents as $line) {
$line = trim($line);
$line = eregi_replace(';[.]*','',$line);
if(strlen($line) > 0) {
//echo $line . " - ";
- if(eregi('^[[a-z]+]$',$line)) {
+ if(eregi('^[[a-z]+]$',str_replace(' ', '', $line))) {
//echo 'section';
$section = substr($line,1,(strlen($line)-2));
if ($parse_section) {
$retval[$section] = array();
}
continue;
} elseif(eregi('=',$line)) {
//echo 'main element';
list($key,$val) = explode(' = ',$line);
if (!$parse_section) {
$retval[trim($key)] = str_replace('"', '', $val);
}
else {
$retval[$section][trim($key)] = str_replace('"', '', $val);
}
} //end if
//echo '<br />';
} //end if
} //end foreach
return $retval;
}
function &GetADODBConnection()
{
global $g_adodbConnection, $g_DBType, $g_DBHost,$g_DBUser,$g_DBUserPassword,$g_DBName,$g_DebugMode;
global $ADODB_FETCH_MODE,$ADODB_COUNTRECS,$ADODB_CACHE_DIR,$pathtoroot;
//echo '<pre>'.print_r( debug_backtrace() , true).'</pre>';
if(!isset($g_adodbConnection) && strlen($g_DBType)>0)
{
$g_adodbConnection = ADONewConnection($g_DBType);
$connected = $g_adodbConnection->Connect($g_DBHost,$g_DBUser,$g_DBUserPassword,$g_DBName);
if(!$connected)
{
echo "Error connecting to database $g_DBHost <br>\n";
die();
}
$ADODB_CACHE_DIR = $pathtoroot."cache";
$ADODB_FETCH_MODE = 2;
$ADODB_COUNTRECS = FALSE;
$g_adodbConnection->debug = false;
$g_adodbConnection->cacheSecs = 3600;
}
elseif (!strlen($g_DBType)) {
global $rootURL;
echo "In-Portal is probably not installed, or configuration file is missing.<br>";
echo "Please use the installation script to fix the problem.<br><br>";
if (!preg_match('/admin/', $_SERVER['SCRIPT_FILENAME'])) {
$ins = 'admin/';
}
echo "<a href='$rootURL".$ins."install.php'>Go to installation script</a><br><br>";
flush();
die();
}
$g_adodbConnection->Execute('SET SQL_BIG_SELECTS=1');
return $g_adodbConnection;
}
function GetNextResourceId($Increment=1)
{
$sql = "UPDATE ".GetTablePrefix()."IdGenerator SET lastid=lastid+".$Increment;
$adodbConnection = GetADODBConnection();
$adodbConnection->Execute($sql);
$rs = $adodbConnection->Execute("SELECT lastid FROM ".GetTablePrefix()."IdGenerator");
$val = $rs->fields["lastid"];
if(!$rs || $rs->EOF)
{
echo $adodbConnection->ErrorMsg();
$sql = "INSERT INTO ".GetTablePrefix()."IdGenerator (lastid) VALUES ($Increment)";
$adodbConnection->Execute($sql);
$val = 1;
}
$val = $val-($Increment-1);
return $val;
}
function AddSlash($s)
{
if(substr($s,-1) != "/")
{
return $s."/";
}
else
return $s;
}
function StripNewline($s)
{
$bfound = false;
while (strlen($s)>0 && !$bfound)
{
if(ord(substr($s,-1))<32)
{
$s = substr($s,0,-1);
}
else
$bfound = true;
}
return $s;
}
function DeleteElement($array, $indice)
{
for($i=$indice;$i<count($array)-1;$i++)
$array[$i] = $array[$i+1];
unset($array[count($array)-1]);
return $array;
}
function DeleteElementValue($needle, &$haystack)
{
while(($gotcha = array_search($needle,$haystack)) > -1)
unset($haystack[$gotcha]);
}
function TableCount($TableName, $where="",$JoinCats=1)
{
$db = GetADODBConnection();
if(!$JoinCats)
{
$sql = "SELECT count(*) as TableCount FROM $TableName";
}
else
$sql = "SELECT count(*) as TableCount FROM $TableName INNER JOIN ".GetTablePrefix()."CategoryItems ON ".GetTablePrefix()."CategoryItems.ItemResourceId=$TableName.ResourceId";
if(strlen($where)>0)
$sql .= " WHERE ".$where;
$rs = $db->Execute($sql);
// echo "SQL TABLE COUNT: ".$sql."<br>\n";
$res = $rs->fields["TableCount"];
return $res;
}
Function QueryCount($sql)
{
$countsql = "SELECT count(*) as TableCount ".substr($sql,strpos($sql," FROM "));
if(strpos($countsql,"LIMIT"))
$countsql = substr($countsql,0,strpos($countsql,"LIMIT"));
if(strpos($countsql,"ORDER BY"))
$countsql = substr($countsql,0,strpos($countsql,"ORDER BY"));
$db = GetADODBConnection();
$rs = $db->Execute($countsql);
//echo $countsql."<br>\n";
$res = $rs->fields["TableCount"];
return $res;
}
function GetPageCount($ItemsPerPage,$NumItems)
{
if($ItemsPerPage==0 || $NumItems==0)
{
return 1;
}
$value = $NumItems/$ItemsPerPage;
return ceil($value);
}
function GetTablePrefix()
{
global $g_TablePrefix;
return $g_TablePrefix;
}
function TableHasPrefix($t)
{
$pre = GetTablePrefix();
if(strlen($pre)>0)
{
if(substr($t,0,strlen($pre))==$pre)
{
return TRUE;
}
else
return FALSE;
}
else
return TRUE;
}
function AddTablePrefix($t)
{
if(!TableHasPrefix($t))
$t = GetTablePrefix().$t;
return $t;
}
function ThisDomain()
{
global $objConfig, $g_Domain;
if($objConfig->Get("DomainDetect"))
{
$d = $_SERVER['HTTP_HOST'];
}
else
$d = $g_Domain;
return $d;
}
function GetIndexUrl($secure=0)
{
global $indexURL, $rootURL, $secureURL;
switch($secure)
{
case 0:
$ret = $indexURL;
break;
case 1:
$ret = $secureURL."index.php";
break;
case 2:
$ret = $rootURL."index.php";
break;
default:
$ret = $i;
}
return $ret;
}
function GetLimitSQL($Page,$PerPage)
{
if($Page<1)
$Page=1;
if(is_numeric($PerPage))
{
if($PerPage==0)
$PerPage = 20;
$Start = ($Page-1)*$PerPage;
$limit = "LIMIT ".$Start.",".$PerPage;
}
else
$limit = NULL;
return $limit;
}
function filelist ($currentdir, $startdir=NULL,$ext=NULL)
{
global $pathchar;
//chdir ($currentdir);
// remember where we started from
if (!$startdir)
{
$startdir = $currentdir;
}
$d = @opendir($currentdir);
$files = array();
if(!$d)
return $files;
//list the files in the dir
while (false !== ($file = readdir($d)))
{
if ($file != ".." && $file != ".")
{
if (is_dir($currentdir."/".$file))
{
// If $file is a directory take a look inside
$a = filelist ($currentdir."/".$file, $startdir,$ext);
if(is_array($a))
$files = array_merge($files,$a);
}
else
{
if($ext!=NULL)
{
$extstr = stristr($file,".".$ext);
if(strlen($extstr))
$files[] = $currentdir."/".$file;
}
else
$files[] = $currentdir.'/'.$file;
}
}
}
closedir ($d);
return $files;
}
function DecimalToBin($dec,$WordLength=8)
{
$bits = array();
$str = str_pad(decbin($dec),$WordLength,"0",STR_PAD_LEFT);
for($i=$WordLength;$i>0;$i--)
{
$bits[$i-1] = (int)substr($str,$i-1,1);
}
return $bits;
}
function inp_escape($in, $html_enable=0)
{
$out = stripslashes($in);
$out = str_replace("\n", "\n^br^", $out);
if($html_enable==0)
{
$out=ereg_replace("<","&lt;",$out);
$out=ereg_replace(">","&gt;",$out);
$out=ereg_replace("\"","&quot;",$out);
$out = str_replace("\n^br^", "\n<br />", $out);
}
else
$out = str_replace("\n^br^", "\n", $out);
$out=addslashes($out);
return $out;
}
function inp_unescape($in)
{
$out=stripslashes($in);
return $out;
}
function inp_textarea_unescape($in)
{
$out=stripslashes($in);
$out = str_replace("\n<br />", "\n", $out);
return $out;
}
function HighlightKeywords($Keywords, $html, $OpenTag="", $CloseTag="")
{
global $objConfig;
if(!strlen($OpenTag))
$OpenTag = "<B>";
if(!strlen($CloseTag))
$CloseTag = "</B>";
$r = preg_split('((>)|(<))', $html, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach ($Keywords as $k) {
for ($i = 0; $i < count($r); $i++) {
if ($r[$i] == "<") {
$i++; continue;
}
$r[$i] = preg_replace("/($k)/i", "$OpenTag\\1$CloseTag", $r[$i]);
}
}
return join("", $r);
}
/*
function HighlightKeywords($Keywords,$html, $OpenTag="", $CloseTag="")
{
global $objConfig;
if(!strlen($OpenTag))
$OpenTag = "<B>";
if(!strlen($CloseTag))
$CloseTag = "</B>";
$ret = strip_tags($html);
foreach ($Keywords as $k)
{
if(strlen($k))
{
//$html = str_replace("<$k>", ":#:", $html);
//$html = str_replace("</$k>", ":##:", $html);
//$html = strip_tags($html);
if ($html = preg_replace("/($k)/Ui","$OpenTag\\1$CloseTag", $html))
//if ($html = preg_replace("/(>[^<]*)($k)([^<]*< )/Ui","$OpenTag\\1$CloseTag", $html))
$ret = $html;
//$ret = str_replace(":#:", "<$k>", $ret);
//$ret = str_replace(":##:", "</$k>", $ret);
}
}
return $ret;
}
*/
function ExtractDatePart($part,$datestamp)
{
switch($part)
{
case "month":
if($datestamp<=0)
{
$ret = "";
}
else
$ret = adodb_date("m",$datestamp);
break;
case "day":
if($datestamp<=0)
{
$ret = "";
}
else
$ret = adodb_date("d", $datestamp);
break;
case "year":
if($datestamp<=0)
{
$ret = "";
}
else
$ret = adodb_date("Y", $datestamp);
break;
case "time_24hr":
if($datestamp<=0)
{
$ret = "";
}
else
$ret = adodb_date("H:i", $datestamp);
break;
case "time_12hr":
if($datestamp<=0)
{
$ret = "";
}
else
$ret = adodb_date("g:i a",$datestamp);
break;
}
return $ret;
}
function GetLocalTime($TimeStamp,$TargetZone=NULL)
{
if($TargetZone==NULL)
$TargetZone = $objConfig->Get("Config_Site_Time");
$server = $objConfig->Get("Config_Server_Time");
if($TargetZone!=$server)
{
$offset = ($server - $TargetZone) * -1;
$TimeStamp = $TimeStamp + (3600 * $offset);
}
return $TimeStamp;
}
function _unhtmlentities ($string)
{
$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip ($trans_tbl);
return strtr ($string, $trans_tbl);
}
function getLastStr($hay, $need){
$getLastStr = 0;
$pos = strpos($hay, $need);
if (is_int ($pos)){ //this is to decide whether it is "false" or "0"
while($pos) {
$getLastStr = $getLastStr + $pos + strlen($need);
$hay = substr ($hay , $pos + strlen($need));
$pos = strpos($hay, $need);
}
return $getLastStr - strlen($need);
} else {
return -1; //if $need wasn´t found it returns "-1" , because it could return "0" if it´s found on position "0".
}
}
function ReplaceSingleTag($tag,$text)
{
$opentag = "[".$tag;
$closetag = "[/".$tag."]";
if(strstr($text,$opentag))
{
$pos = strpos($text,$opentag." ");
if($pos === false)
{
$pos = strpos($text,$opentag."]");
}
$endopen = strpos($text,"]",$pos);
$closepos = strpos($text,$closetag,$pos);
if($closepos)
{
$taglength = ($closepos - $endopen) + strlen($closetag);
$tagText = substr($text,$pos, $closepos + strlen($closetag) - $pos);
$innerText = substr($text,$endopen+1,$closepos - $endopen-1);
if($tag=="UL")
$innerText = str_replace("[*]","<LI>",$innerText);
$tagText = substr($tagText,1,($endopen - $pos)-1);
//echo "Matched $tagText <br>\n";
$tagText = "<".$tagText.">";
$replace_text = $tagText.$innerText."</".$tag.">";
$text = substr($text,0,$pos).$replace_text.substr($text,$closepos+strlen($closetag));
return $text;
}
else
return $text;
}
else
return $text;
}
function ReplaceTag($tag,$text)
{
$new_text = ReplaceSingleTag($tag,$text);
while($new_text != $text)
{
$text = $new_text;
$new_text = ReplaceSingleTag($tag,$text);
}
return $new_text;
}
function ReplaceURL($text)
{
while(strstr($text,"[URL"))
{
$urlpos = strpos($text,"[URL");
$endopen = strpos($text,"]",$urlpos);
if($endopen)
{
$url = "<A TARGET=\"_blank\"".substr($text,$urlpos+4,$endopen - ($urlpos+4));
$url .= ">";
$url = _unhtmlentities($url);
$text = substr($text,0,$urlpos).$url.substr($text,$endopen+1);
}
}
$text = str_replace("[/URL]","</A>",$text);
return $text;
}
function ReplaceBBCode($text)
{
global $objConfig;
$tags = explode(",",$objConfig->Get("BBTags"));
for($i=0;$i<count($tags);$i++)
{
$text = ReplaceTag(strtoupper($tags[$i]),$text);
}
$text = ReplaceURL($text);
return $text;
}
function GetMinValue($Table,$Field, $Where=NULL)
{
$ret = 0;
$sql = "SELECT min($Field) as val FROM $Table ";
if(strlen($where))
$sql .= "WHERE $Where";
$ado = GetADODBConnection();
$rs = $ado->execute($sql);
if($rs)
$ret = (int)$rs->fields["val"];
return $ret;
}
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
function SetMissingDataErrors($f)
{
global $FormError;
$count = 0;
if(is_array($_POST))
{
if(is_array($_POST["required"]))
{
foreach($_POST["required"] as $r)
{
$found = FALSE;
if(is_array($_FILES))
{
if($_FILES[$r]["size"]>0)
$found=TRUE;
}
if(!strlen(trim($_POST[$r])) && !$found)
{
$count++;
if (($r == "dob_day") || ($r == "dob_month") || ($r == "dob_year"))
$r = "dob";
$tag = $_POST["errors"][$r];
if(!strlen($tag))
$tag = "lu_ferror_".$f."_".$r;
$FormError[$f][$r] = language($tag);
}
}
}
}
return $count;
}
function makepassword($length=10)
{
$pass_length=$length;
$p1=array('b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z');
$p2=array('a','e','i','o','u');
$p3=array('1','2','3','4','5','6','7','8','9');
$p4=array('(','&',')',';','%'); // if you need real strong stuff
// how much elements in the array
// can be done with a array count but counting once here is faster
$s1=21;// this is the count of $p1
$s2=5; // this is the count of $p2
$s3=9; // this is the count of $p3
$s4=5; // this is the count of $p4
// possible readable combinations
$c1='121'; // will be like 'bab'
$c2='212'; // will be like 'aba'
$c3='12'; // will be like 'ab'
$c4='3'; // will be just a number '1 to 9' if you dont like number delete the 3
// $c5='4'; // uncomment to active the strong stuff
$comb='4'; // the amount of combinations you made above (and did not comment out)
for ($p=0;$p<$pass_length;)
{
mt_srand((double)microtime()*1000000);
$strpart=mt_rand(1,$comb);
// checking if the stringpart is not the same as the previous one
if($strpart<>$previous)
{
$pass_structure.=${'c'.$strpart};
// shortcutting the loop a bit
$p=$p+strlen(${'c'.$strpart});
}
$previous=$strpart;
}
// generating the password from the structure defined in $pass_structure
for ($g=0;$g<strlen($pass_structure);$g++)
{
mt_srand((double)microtime()*1000000);
$sel=substr($pass_structure,$g,1);
$pass.=${'p'.$sel}[mt_rand(0,-1+${'s'.$sel})];
}
return $pass;
}
function LogEntry($text,$writefile=FALSE)
{
global $g_LogFile,$LogFile, $LogData, $LogLevel, $timestart;
static $last;
if(strlen($g_LogFile))
{
$el = str_pad(getmicrotime()- $timestart,10," ");
if($last>0)
$elapsed = getmicrotime() - $last;
if(strlen($el)>10)
$el = substr($el,0,10);
$indent = str_repeat(" ",$LogLevel);
$text = str_pad($text,$LogLevel,"==",STR_PAD_LEFT);
$LogData .= "$el:". round($elapsed,6).":$indent $text";
$last = getmicrotime();
if($writefile==TRUE && is_writable($g_LogFile))
{
if(!$LogFile)
{
if(file_exists($g_LogFile))
unlink($g_LogFile);
$LogFile=@fopen($g_LogFile,"w");
}
if($LogFile)
{
fputs($LogFile,$LogData);
}
}
}
}
function ValidEmail($email)
{
if (eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}", $email))
{
return TRUE;
}
else
{
return FALSE;
}
}
function language($phrase,$LangId=0)
{
global $objSession, $objLanguageCache, $objLanguages;
if($LangId==0)
$LangId = $objSession->Get("Language");
if($LangId==0)
$LangId = $objLanguages->GetPrimary();
$translation = $objLanguageCache->GetTranslation($phrase,$LangId);
return $translation;
}
function admin_language($phrase,$lang=0,$LinkMissing=FALSE)
{
global $objSession, $objLanguageCache, $objLanguages;
//echo "Language passed: $lang<br>";
if($lang==0)
$lang = $objSession->Get("Language");
//echo "Language from session: $lang<br>";
if($lang==0)
$lang = $objLanguages->GetPrimary();
//echo "Language after primary: $lang<br>";
//echo "Phrase: $phrase<br>";
$translation = $objLanguageCache->GetTranslation($phrase,$lang);
if($LinkMissing && substr($translation,0,1)=="!" && substr($translation,-1)=="!")
{
$res = "<A href=\"javascript:OpenPhraseEditor('&direct=1&label=$phrase'); \">$translation</A>";
return $res;
}
else
return $translation;
}
function prompt_language($phrase,$lang=0)
{
return admin_language($phrase,$lang,TRUE);
}
function GetPrimaryTranslation($Phrase)
{
global $objLanguages;
$l = $objLanguages->GetPrimary();
return language($Phrase,$l);
}
function CategoryNameCount($ParentId,$Name)
{
$cat_table = GetTablePrefix()."Category";
$sql = "SELECT Name from $cat_table WHERE ParentId=$ParentId AND ";
$sql .="(Name LIKE '".addslashes($Name)."' OR Name LIKE 'Copy of ".addslashes($Name)."' OR Name LIKE 'Copy % of ".addslashes($Name)."')";
$ado = GetADODBConnection();
$rs = $ado->Execute($sql);
$ret = array();
while($rs && !$rs->EOF)
{
$ret[] = $rs->fields["Name"];
$rs->MoveNext();
}
return $ret;
}
function CategoryItemNameCount($CategoryId,$Table,$Field,$Name)
{
$cat_table = GetTablePrefix()."CategoryItems";
$sql = "SELECT $Field FROM $Table INNER JOIN $cat_table ON ($Table.ResourceId=$cat_table.ItemResourceId) ";
$sql .=" WHERE ($Field LIKE 'Copy % of $Name' OR $Field LIKE '$Name' OR $Field LIKE 'Copy of $Name') AND CategoryId=$CategoryId";
//echo $sql."<br>\n ";
$ado = GetADODBConnection();
$rs = $ado->Execute($sql);
$ret = array();
while($rs && !$rs->EOF)
{
$ret[] = $rs->fields[$Field];
$rs->MoveNext();
}
return $ret;
}
function &GetItemCollection($ItemName)
{
global $objItemTypes;
if(is_numeric($ItemName))
{
$item = $objItemTypes->GetItem($ItemName);
}
else
$item = $objItemTypes->GetTypeByName($ItemName);
if(is_object($item))
{
$module = $item->Get("Module");
$prefix = ModuleTagPrefix($module);
$func = $prefix."_ItemCollection";
if(function_exists($func))
{
$var =& $func();
}
}
return $var;
}
function UpdateCategoryCount($ItemTypeName=0,$ListType=NULL)
{
global $objCountCache, $objItemTypes;
if(is_numeric($ItemName))
{
$item = $objItemTypes->GetItem($ItemName);
}
else
$item = $objItemTypes->GetTypeByName($ItemName);
if(is_object($item))
{
$ItemType = $item->Get("ItemType");
$sql = "DELETE FROM ".$objCountCache->SourceTable." WHERE ItemType=$ItemType";
if(is_numeric($ListType))
{
$sql .= " AND ListType=$ListType";
}
$objCountCache->adodbConnection->Execute($sql);
}
}
function UpdateModifiedCategoryCount($ItemTypeName,$CatId=NULL,$Modifier=0,$ExtraId=NULL)
{
}
function UpdateGroupCategoryCount($ItemTypeName,$CatId=NULL,$Modifier=0,$GroupId=NULL)
{
}
function GetTagCache($module,$tag,$attribs,$env)
{
global $objSystemCache, $objSession, $objConfig;
if($objConfig->Get("SystemTagCache"))
{
$name = $tag;
if(is_array($attribs))
{
foreach($attribs as $n => $val)
{
$name .= "-".$val;
}
}
$CachedValue = $objSystemCache->GetContextValue($name,$module,$env, $objSession->Get("GroupList"));
}
else
$CachedValue="";
return $CachedValue;
}
function SaveTagCache($module, $tag, $attribs, $env, $newvalue)
{
global $objSystemCache, $objSession, $objConfig;
if($objConfig->Get("SystemTagCache"))
{
$name = $tag;
if(is_array($attribs))
{
foreach($attribs as $a => $val)
{
$name .= "-".$val;
}
}
$objSystemCache->EditCacheItem($name,$newvalue,$module,0,$env,$objSession->Get("GroupList"));
}
}
function DeleteTagCache($name,$extraparams, $env="")
{
global $objSystemCache, $objConfig;
if($objConfig->Get("SystemTagCache"))
{
$where = "Name LIKE '$name%".$extraparams."'";
if(strlen($env))
$where .= " AND Context LIKE $env";
$objSystemCache->DeleteCachedItem($where);
}
}
function ParseTagLibrary()
{
$objTagList = new clsTagList();
$objTagList->ParseInportalTags();
unset($objTagList);
}
function GetDateFormat($LangId=0)
{
global $objLanguages;
if(!$LangId)
$LangId= $objLanguages->GetPrimary();
$l = $objLanguages->GetItem($LangId);
if(is_object($l))
{
$fmt = $l->Get("DateFormat");
}
else
$fmt = "m-d-Y";
return $fmt;
}
function GetTimeFormat($LangId=0)
{
global $objLanguages;
if(!$LangId)
$LangId= $objLanguages->GetPrimary();
$l = $objLanguages->GetItem($LangId);
if(is_object($l))
{
$fmt = $l->Get("TimeFormat");
}
else
$fmt = "H:i:s";
return $fmt;
}
function LangDate($TimeStamp=NULL,$LangId=0)
{
$fmt = GetDateFormat($LangId);
$ret = adodb_date($fmt,$TimeStamp);
return $ret;
}
function LangTime($TimeStamp=NULL,$LangId=0)
{
$fmt = GetTimeFormat($LangId);
$ret = adodb_date($fmt,$TimeStamp);
return $ret;
}
function LangNumber($Num,$DecPlaces=NULL,$LangId=0)
{
global $objLanguages;
if(!$LangId)
$LangId= $objLanguages->GetPrimary();
$l = $objLanguages->GetItem($LangId);
if(is_object($l))
{
$ret = number_format($Num,$DecPlaces,$l->Get("DecimalPoint"),$l->Get("ThousandSep"));
}
else
$ret = $num;
return $ret;
}
function replacePngTags($x, $spacer="images/spacer.gif")
{
global $rootURL,$pathtoroot;
// make sure that we are only replacing for the Windows versions of Internet
// Explorer 5+, and not Opera identified as MSIE
$msie='/msie\s([5-9])\.?[0-9]*.*(win)/i';
$opera='/opera\s+[0-9]+/i';
if(!isset($_SERVER['HTTP_USER_AGENT']) ||
!preg_match($msie,$_SERVER['HTTP_USER_AGENT']) ||
preg_match($opera,$_SERVER['HTTP_USER_AGENT']))
return $x;
// find all the png images in backgrounds
preg_match_all('/background-image:\s*url\(\'(.*\.png)\'\);/Uis',$x,$background);
for($i=0;$i<count($background[0]);$i++){
// simply replace:
// "background-image: url('image.png');"
// with:
// "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
// enabled=true, sizingMethod=scale src='image.png');"
// haven't tested to see if background-repeat styles work...
$x=str_replace($background[0][$i],'filter:progid:DXImageTransform.'.
'Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale'.
' src=\''.$background[1][$i].'\');',$x);
}
// OK, time to find all the IMG tags with ".png" in them
preg_match_all('/(<img.*\.png.*>|<input.*type=([\'"])image\\2.*\.png.*>)/Uis',$x,$images);
while(list($imgnum,$v)=@each($images[0])){
$original=$v;
$atts=''; $width=0; $height=0;
// If the size is defined by styles, find
preg_match_all('/style=".*(width: ([0-9]+))px.*'.
'(height: ([0-9]+))px.*"/Ui',$v,$arr2);
if(is_array($arr2) && count($arr2[0])){
// size was defined by styles, get values
$width=$arr2[2][0];
$height=$arr2[4][0];
}
// size was not defined by styles, get values
preg_match_all('/width=\"?([0-9]+)\"?/i',$v,$arr2);
if(is_array($arr2) && count($arr2[0])){
$width=$arr2[1][0];
}
preg_match_all('/height=\"?([0-9]+)\"?/i',$v,$arr2);
if(is_array($arr2) && count($arr2[0])){
$height=$arr2[1][0];
}
preg_match_all('/src=\"([^\"]+\.png)\"/i',$v,$arr2);
if(isset($arr2[1][0]) && !empty($arr2[1][0]))
$image=$arr2[1][0];
else
$image=NULL;
// We do this so that we can put our spacer.gif image in the same
// directory as the image
$tmp=split('[\\/]',$image);
array_pop($tmp);
$image_path=join('/',$tmp);
if(substr($image,0,strlen($rootURL))==$rootURL)
{
$path = str_replace($rootURL,$pathtoroot,$image);
}
else
{
$path = $pathtoroot."themes/telestial/$image";
}
// echo "Sizing $path.. <br>\n";
// echo "Full Tag: ".htmlentities($image)."<br>\n";
//if(!$height || !$width)
//{
$g = imagecreatefrompng($path);
if($g)
{
$height = imagesy($g);
$width = imagesx($g);
}
//}
if(strlen($image_path)) $image_path.='/';
// end quote is already supplied by originial src attribute
$replace_src_with=$spacer.'" style="width: '.$width.
'px; height: '.$height.'px; filter: progid:DXImageTransform.'.
'Microsoft.AlphaImageLoader(src=\''.$image.'\', sizingMethod='.
'\'scale\')';
// now create the new tag from the old
$new_tag=str_replace($image,$replace_src_with,$original);
// now place the new tag into the content
$x=str_replace($original,$new_tag,$x);
}
return $x;
}
function print_pre($str)
{
// no comments here :)
echo '<pre>'.print_r($str, true).'</pre>';
}
function GetOptions($field) // by Alex
{
// get dropdown values from custom field
$tmp =& new clsCustomField();
$tmp->LoadFromDatabase($field, 'FieldName');
$tmp_values = $tmp->Get('ValueList');
unset($tmp);
$tmp_values = explode(',', $tmp_values);
foreach($tmp_values as $mixed)
{
$elem = explode('=', trim($mixed));
$ret[ $elem[0] ] = $elem[1];
}
return $ret;
}
function ResetPage($module_prefix, $page_variable = 'p')
{
// resets page in specific module when category is changed
if(!is_object($objSession)) // when changing pages session doesn't exist -> InPortal BUG
{
global $var_list, $SessionQueryString, $FrontEnd;
//if(!$var_list["sid"]) $var_list["sid"] = $_COOKIE["sid"];
$objSession = new clsUserSession($var_list["sid"],($SessionQueryString && $FrontEnd==1));
}
//echo "SID_RESET: ".$GLOBALS['var_list']["sid"].'(COOKIE_SID: '.$_COOKIE["sid"].')<br>';
$last_cat = $objSession->GetVariable('last_category');
$prev_cat = $objSession->GetVariable('prev_category');
//echo "Resetting Page [$prev_cat] -> [$last_cat]<br>";
if($prev_cat != $last_cat) $GLOBALS[$module_prefix.'_var_list'][$page_variable] = 1;
}
function GetVar($name)
{
return isset($_REQUEST[$name]) ? $_REQUEST[$name] : false;
}
function PassVar(&$source)
{
// source array + any count of key names in passed array
$params = func_get_args();
array_shift($params);
if( count($params) )
{
$ret = Array();
foreach($params as $var_name)
if( isset($source[$var_name]) )
$ret[] = $var_name.'='.$source[$var_name];
$ret = '&'.implode('&', $ret);
}
return $ret;
}
function GetSubmitVariable(&$array, $postfix)
{
// gets edit status of module
// used in case if some modules share
// common action parsed by kernel parser,
// but each module uses own EditStatus variable
$modules = Array('In-Link' => 'Link', 'In-News' => 'News', 'In-Bulletin' => 'Topic');
foreach($modules as $module => $prefix)
if( isset($array[$prefix.$postfix]) )
return Array('Module' => $module, 'variable' => $array[$prefix.$postfix]);
return false;
}
function GetModuleByAction()
{
$prefix2module = Array('m' => 'In-Portal', 'l' => 'In-Link', 'n' => 'In-News', 'bb' => 'In-Bulletin');
$action = $_REQUEST['Action'];
$module_prefix = explode('_', $action);
return $prefix2module[ $module_prefix[0] ];
}
function dir_size($dir) {
// calculates folder size based on filesizes inside it (recursively)
$totalsize=0;
if ($dirstream = @opendir($dir)) {
while (false !== ($filename = readdir($dirstream))) {
if ($filename!="." && $filename!="..")
{
if (is_file($dir."/".$filename))
$totalsize+=filesize($dir."/".$filename);
if (is_dir($dir."/".$filename))
$totalsize+=dir_size($dir."/".$filename);
}
}
}
closedir($dirstream);
return $totalsize;
}
function size($bytes) {
// shows formatted file/directory size
$types = Array("la_bytes","la_kilobytes","la_megabytes","la_gigabytes","la_terabytes");
$current = 0;
while ($bytes > 1024) {
$current++;
$bytes /= 1024;
}
return round($bytes,2)." ".language($types[$current]);
}
function echod($str)
{
// echo debug output
echo str_replace( Array('[',']'), Array('[<b>', '</b>]'), $str).'<br>';
}
function PrepareParams($source, $to_lower, $mapping)
{
// prepare array with form values to use with item
$result = Array();
foreach($to_lower as $field)
$result[ $field ] = $source[ strtolower($field) ];
if( is_array($mapping) )
{
foreach($mapping as $field_from => $field_to)
$result[$field_to] = $source[$field_from];
}
return $result;
}
function GetELT($field, $phrases = Array())
{
// returns FieldOptions equivalent in In-Portal
$ret = Array();
foreach($phrases as $phrase)
$ret[] = admin_language($phrase);
$ret = "'".implode("','", $ret)."'";
return 'ELT('.$field.','.$ret.')';
}
function GetModuleImgPath($module)
{
global $rootURL, $admin;
return $rootURL.$module.'/'.$admin.'/images';
}
function ActionPostProcess($StatusField, $ListClass, $ListObjectName = '', $IDField = null)
{
// each action postprocessing stuff from admin
if( !isset($_REQUEST[$StatusField]) ) return false;
$list =& $GLOBALS[$ListObjectName];
if( !is_object($list) ) $list = new $ListClass();
$SFValue = $_REQUEST[$StatusField]; // status field value
switch($SFValue)
{
case 1: // User hit "Save" button
$list->CopyFromEditTable($IDField);
break;
case 2: // User hit "Cancel" button
$list->PurgeEditTable($IDField);
break;
}
if( function_exists('SpecificProcessing') ) SpecificProcessing($StatusField, $SFValue);
if($SFValue == 1 || $SFValue == 2) $list->Clear();
}
function GetElem(&$array, $index)
{
// returns array element by index if
// such index exists
return isset($array[$index]) ? $array[$index] : false;
}
function MakeHTMLTag($element, $attrib_prefix)
{
$result = Array();
$ap_length = strlen($attrib_prefix);
foreach($element->attributes as $attib_name => $attr_value)
if( substr($attib_name, $ap_length) == $ap_length )
$result[] = substr($attib_name, $ap_length, strlen($attib_name)).'="'.$attr_value.'"';
return count($result) ? implode(' ', $result) : false;
}
?>
Property changes on: trunk/globals.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.8
\ No newline at end of property
+1.9
\ No newline at end of property

Event Timeline