1
0
mirror of https://github.com/e107inc/e107.git synced 2025-04-19 20:21:51 +02:00

content: bugfix #3815 : renewed function for updating preferences

This commit is contained in:
lia 2007-03-01 09:35:17 +00:00
parent b5829cf02e
commit 7657912fed

View File

@ -12,8 +12,8 @@
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_plugins/content/handlers/content_class.php,v $
| $Revision: 1.8 $
| $Date: 2007-03-01 09:32:28 $
| $Revision: 1.9 $
| $Date: 2007-03-01 09:35:17 $
| $Author: lisa_ $
+---------------------------------------------------------------+
*/
@ -446,8 +446,6 @@ class content{
if(!is_object($sql)){ $sql = new db; }
//echo "update content pref : ".$id."<br />";
//insert default preferences into core
if($id == "0"){
$num_rows = $sql -> db_Select("core", "*", "e107_name='$plugintable' ");
@ -457,52 +455,53 @@ class content{
$row = $sql -> db_Fetch();
}
//prepare custom tags: use the posted value
$cp = $_POST['content_custom_preset_key'];
//insert category preferences into plugintable
}else{
$sql -> db_Select($plugintable, "content_pref", "content_id='".intval($id)."' ");
//first get the existing prefs and parent
$sql -> db_Select($plugintable, "content_pref, content_parent", "content_id='".intval($id)."' ");
$row = $sql -> db_Fetch();
$current = $eArrayStorage->ReadArray($row['content_pref']);
foreach($current as $k => $v){
if(isset($qs[0]) && $qs[0] == 'option' ){
$currentparent = $row['content_parent'];
//if we are updating options
if(isset($qs[0]) && $qs[0] == 'option' ){
//only use the manager prefs from the existing set
foreach($current as $k => $v){
if( strpos($k, "content_manager_") === 0 || strpos($k, "content_restrict_") === 0 ){
$content_pref[$k] = $tp->toDB($v);
}
}elseif(isset($qs[0]) && ($qs[0] == 'manager' || $qs[0] == 'restrict')){
if( strpos($k, "content_") === 0 ){
$content_pref[$k] = $tp->toDB($v);
}
}
//prepare custom tags: use the posted values
$cp = $_POST['content_custom_preset_key'];
//if we are updating manager
}elseif(isset($qs[0]) && ($qs[0] == 'manager' || $qs[0] == 'restrict')){
//if this is a top level category we need to keep all existing options
if($currentparent=='0'){
$content_pref = $current;
}
//prepare custom tags: use the existing content_pref values
$cp = $content_pref['content_custom_preset_key'];
}
}
/*
//create array of custom preset tags
foreach($_POST['content_custom_preset_key'] as $ck => $cv){
//parse custom tags and covert them in $_POST values ($cp is derived above)
$string = array();
foreach($cp as $ck => $cv){
if(!empty($cv)){
$string[] = $cv;
}
}
*/
//create array of custom preset tags
asort($_POST['content_custom_preset_key_order']);
$corder = array_keys($_POST['content_custom_preset_key_order']);
foreach($_POST['content_custom_preset_key'] as $ck => $cv){
if(!empty($cv)){
//next routine to keep 'order' of preset tags
if(isset($_POST['content_custom_preset_key_order'][$ck])){
$k = intval($corder[$ck]);
$string[$k] = $cv;
}else{
$string[] = $cv;
}
}
if(is_array($string) && !empty($string[0])){
$_POST['content_custom_preset_key'] = $string;
}
$_POST['content_custom_preset_key'] = $string;
//echo "<pre>"; print_r($_POST); echo "</pre>";
//convert all $_POST to $content_pref for storage, and renew the existing stored prefs
foreach($_POST as $k => $v){
if(strpos($k, "content_") === 0){
$content_pref[$k] = $tp->toDB($v);
@ -511,8 +510,11 @@ class content{
//create new array of preferences
$tmp = $eArrayStorage->WriteArray($content_pref);
//update core table
if($id == "0"){
$sql -> db_Update("core", "e107_value = '{$tmp}' WHERE e107_name = '$plugintable' ");
//update plugin table
}else{
$sql -> db_Update($plugintable, "content_pref='{$tmp}' WHERE content_id='".intval($id)."' ");
}
@ -520,6 +522,7 @@ class content{
return $content_pref;
}
function CONTENTREGEXP($var){
return "(^|,)(".str_replace(",", "|", $var).")(,|$)";
}