\n"
. "\t
\n"
. "\t\t| \n"
. "\t\t\t\n";
if ($action!='labels' || isset($lid)) {$labelsoutput.="\n";}
//NEW SET
if ($action == "newlabelset" || $action == "editlabelset")
{
if ($action == "editlabelset")
{
$query = "SELECT label_name,".db_table_name('labelsets').".lid, languages FROM ".db_table_name('labelsets')." WHERE lid=".$lid;
$result=db_execute_assoc($query);
while ($row=$result->FetchRow()) {$lbname=$row['label_name']; $lblid=$row['lid']; $langids=$row['languages'];}
}
$labelsoutput.= " |
";
}
else
{
$action = "labels";
include("access_denied.php");
include("admin.php");
}
//************************FUNCTIONS********************************
function updateset($lid)
{
global $dbprefix, $connect, $labelsoutput, $databasetype;
// Get added and deleted languagesid arrays
if (isset($_POST['languageids']))
{
$postlanguageids=sanitize_languagecodeS($_POST['languageids']);
}
if (isset($_POST['label_name']))
{
$postlabel_name=sanitize_labelname($_POST['label_name']);
}
$newlanidarray=explode(" ",trim($postlanguageids));
$postlanguageids = db_quoteall($postlanguageids,true);
$postlabel_name = db_quoteall($postlabel_name,true);
$oldlangidsarray=array();
$query = "SELECT languages FROM ".db_table_name('labelsets')." WHERE lid=".$lid;
$result=db_execute_assoc($query);
if ($result)
{
while ($row=$result->FetchRow()) {$oldlangids=$row['languages'];}
$oldlangidsarray=explode(" ",trim($oldlangids));
}
$addlangidsarray=array_diff($newlanidarray,$oldlangidsarray);
$dellangidsarray=array_diff($oldlangidsarray,$newlanidarray);
// If new languages are added, create labels' codes and sortorder for the new languages
$query = "SELECT code,sortorder FROM ".db_table_name('labels')." WHERE lid=".$lid." GROUP BY code,sortorder";
$result=db_execute_assoc($query);
if ($result) { while ($row=$result->FetchRow()) {$oldcodesarray[$row['code']]=$row['sortorder'];} }
if (isset($oldcodesarray) && count($oldcodesarray) > 0 )
{
foreach ($addlangidsarray as $addedlangid)
{
foreach ($oldcodesarray as $oldcode => $oldsortorder)
{
$sqlvalues[]= " ($lid, '$oldcode', '$oldsortorder', '$addedlangid')";
}
}
}
if (isset($sqlvalues))
{
if ($databasetype=='odbc_mssql') {@$connect->Execute("SET IDENTITY_INSERT ".db_table_name('labels')." ON");}
foreach ($sqlvalues as $sqlline)
{
$query = "INSERT INTO ".db_table_name('labels')." (lid,code,sortorder,language) VALUES ".($sqlline);
$result=db_execute_assoc($query);
if (!$result)
{
$labelsoutput.= "\n";
}
}
if ($databasetype=='odbc_mssql') {@$connect->Execute("SET IDENTITY_INSERT ".db_table_name('labels')." OFF");}
}
// If languages are removed, delete labels for these languages
$sqlwherelang='';
foreach ($dellangidsarray as $dellangid)
{
$sqlwherelang .= " OR language='".$dellangid."'";
}
if ($sqlwherelang)
{
$query = "DELETE FROM ".db_table_name('labels')." WHERE lid=$lid AND (".trim($sqlwherelang, ' OR').")";
$result=db_execute_assoc($query);
if (!$result)
{
$labelsoutput.= "\n";
}
}
// Update the labelset itself
$query = "UPDATE ".db_table_name('labelsets')." SET label_name={$postlabel_name}, languages={$postlanguageids} WHERE lid=$lid";
if (!$result = $connect->Execute($query))
{
$labelsoutput.= "\n";
}
}
function deletelabelset($lid)
// language proof
{
global $dbprefix, $connect, $clang, $labelsoutput;
//CHECK THAT THERE ARE NO QUESTIONS THAT RELY ON THIS LID
$query = "SELECT qid FROM ".db_table_name('questions')." WHERE type IN ('F','H','W','Z') AND lid=$lid";
$result = $connect->Execute($query) or safe_die("Error");
$count = $result->RecordCount();
if ($count > 0)
{
$labelsoutput.= "\n";
return false;
}
else //There are no dependencies. We can delete this safely
{
$query = "DELETE FROM ".db_table_name('labels')." WHERE lid=$lid";
$result = $connect->Execute($query);
$query = "DELETE FROM ".db_table_name('labelsets')." WHERE lid=$lid";
$result = $connect->Execute($query);
return true;
}
}
function insertlabelset()
{
global $dbprefix, $connect, $clang, $labelsoutput;
// $labelsoutput.= $_POST['languageids']; For debug purposes
if (isset($_POST['languageids']))
{
$postlanguageids=sanitize_languagecodeS($_POST['languageids']);
}
if (isset($_POST['label_name']))
{
$postlabel_name=sanitize_labelname($_POST['label_name']);
}
$postlabel_name = db_quoteall($postlabel_name,true);
$postlanguageids = db_quoteall($postlanguageids,true);
$query = "INSERT INTO ".db_table_name('labelsets')." (label_name,languages) VALUES ({$postlabel_name},{$postlanguageids})";
if (!$result = $connect->Execute($query))
{
$labelsoutput.= "\n";
}
else
{
return $connect->Insert_ID(db_table_name_nq('labelsets'),"lid");
}
}
function modlabelsetanswers($lid)
{
global $dbprefix, $connect, $clang, $labelsoutput, $databasetype, $filterxsshtml,$postsortorder;
$qulabelset = "SELECT * FROM ".db_table_name('labelsets')." WHERE lid='$lid'";
$rslabelset = db_execute_assoc($qulabelset) or safe_die($connect->ErrorMsg());
$rwlabelset=$rslabelset->FetchRow();
$lslanguages=explode(" ", trim($rwlabelset['languages']));
if (!isset($_POST['method'])) {
$_POST['method'] = $clang->gT("Save");
}
switch($_POST['method'])
{
case $clang->gT("Add new label", "unescaped"):
if (isset($_POST['insertcode']) && $_POST['insertcode']!='')
{
$_POST['insertcode'] = db_quoteall($_POST['insertcode'],true);
// check that the code doesn't exist yet
$query = "SELECT code FROM ".db_table_name('labels')." WHERE lid='$lid' AND code=".$_POST['insertcode'];
$result = $connect->Execute($query);
$codeoccurences=$result->RecordCount();
if ($codeoccurences == 0)
{
$query = "select max(sortorder) as maxorder from ".db_table_name('labels')." where lid='$lid'";
$result = $connect->Execute($query);
$newsortorder=sprintf("%05d", $result->fields['maxorder']+1);
if ($filterxsshtml)
{
require_once("../classes/inputfilter/class.inputfilter_clean.php");
$myFilter = new InputFilter('','',1,1,1);
$_POST['inserttitle']=$myFilter->process($_POST['inserttitle']);
}
else
{
$_POST['inserttitle'] = html_entity_decode_php4($_POST['inserttitle'], ENT_QUOTES, "UTF-8");
}
// Fix bug with FCKEditor saving strange BR types
$_POST['inserttitle']=str_replace('