Phpost

Versión completa: Simplificar la función saveConfig()
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Simplificar la función saveConfig()
Como todos sabrán que la función saveConfig() que se encuentra en inc/class/c.admin.php,  es un dolor de cabeza para editarlo sin equivocarse...
Bueno acá les traigo una solución, pero deben tener en cuenta que los campos en la administración específicamente "Configuración" en el atributo name debe coincidir con la que tienen en la base de datos, ya que si no son iguales, este les devolverá un error.

Ejemplo 1: 
Cita:
<input type="text" id="ai_titulo" name="titulo" maxlength="24" value="{$tsConfig.titulo}" />
El titulo coincide con w_configuracion.titulo de la base de datos
Ejemplo 2: 
Cita:
<textarea name="message_welcome" id="ai_met_welcome" style="width: 260px; height: 100px; {if $tsConfig.c_met_welcome == 0} display:none; {/if}">{$tsConfig.c_message_welcome}</textarea>
El message_welcome no coincide con w_configuracion.c_message_welcome de la base de datos ya que este comienza con c_ o tal vez comienzan con c_allow_.
lo que pueden hacer es ver database.php del instalador y ver todas las que lleva c_ o c_allow_ y agregarle a los campos que lo requieran, excepto name="chat" y name="xat" ya que sería así name="chat_id" y name="xat_id"
Les dejó el archivo m.admin_configs.tpl para los que no quieran buscar, cabe recalcar que si tienen campos agregados lo tendrán que agregar devuelta. (Es de la versión default)

Bueno una vez aclarado esto, continuamos, buscamos en el archivo ya mencionado inc/class/c.admin.php...
 
Código PHP:
function saveConfig()
    {
        global 
$tsCore;
        
//
        
$c = array(
            
'titulo' => $tsCore->setSecure($tsCore->parseBadWords($_POST['titulo'])),
            
'slogan' => $tsCore->setSecure($tsCore->parseBadWords($_POST['slogan'])),
            
'url' => $tsCore->setSecure($tsCore->parseBadWords($_POST['url'])),
            
'offline' => empty($_POST['offline']) ? 1,
            
'offline_message' => $tsCore->setSecure($tsCore->parseBadWords($_POST['offline_message'])),
            
'chat' => $tsCore->setSecure($_POST['chat']),
            
'xat' => $tsCore->setSecure($_POST['xat']),
            
'edad' => $tsCore->setSecure($_POST['edad']),
            
'active' => $tsCore->setSecure($_POST['active']),
            
'sess_ip' => empty($_POST['sess_ip']) ? 1,
            
'count_guests' => $tsCore->setSecure($_POST['count_guests']),
            
'reg_active' => empty($_POST['reg_active']) ? 1,
            
'reg_activate' => empty($_POST['reg_activate']) ? 1,
            
'met_welcome' => $tsCore->setSecure($_POST['met_welcome']),
            
'message_welcome' => $tsCore->setSecure($tsCore->parseBadWords($_POST['message_welcome'])),
            
'fotos_private' => empty($_POST['fotos_private']) ? 1,
            
'hits_guest' => empty($_POST['hits_guest']) ? 1,
            
'keep_points' => empty($_POST['keep_points']) ? 1,
            
'allow_points' => $tsCore->setSecure($_POST['allow_points']),
            
'see_mod' => empty($_POST['see_mod']) ? 1,
            
'stats_cache' => $tsCore->setSecure($_POST['stats_cache']),
            
'desapprove_post' => empty($_POST['desapprove_post']) ? 1,
            
'firma' => empty($_POST['firma']) ? 1,
            
'upload' => empty($_POST['upload']) ? 1,
            
'portal' => empty($_POST['portal']) ? 1,
            
'live' => empty($_POST['live']) ? 1,
            
'max_nots' => $tsCore->setSecure($_POST['max_nots']),
            
'max_acts' => $_POST['max_acts'],
            
'max_posts' => $tsCore->setSecure($_POST['max_posts']),
            
'max_com' => $tsCore->setSecure($_POST['max_com']),
            
'sump' => empty($_POST['sump']) ? 1,
            
'newr' => empty($_POST['newr']) ? 1,
            
'pkey' => $tsCore->setSecure($_POST['pkey']),
            
'skey' => $tsCore->setSecure($_POST['skey']),
        );
        
// UPDATE
        
if (db_exec(array(__FILE____LINE__), 'query''UPDATE `w_configuracion` SET `titulo` = \'' $c['titulo'] . '\', `slogan` = \'' .
            
$c['slogan'] . '\', `url` = \'' $c['url'] . '\', `chat_id` = \'' $c['chat'] .
            
'\', `xat_id` = \'' $c['xat'] . '\',`c_last_active` = \'' $c['active'] . '\', `c_allow_sess_ip` = \'' .
            
$c['sess_ip'] . '\', `c_count_guests` = \'' $c['count_guests'] . '\', `c_reg_active` = \'' .
            
$c['reg_active'] . '\', `c_reg_activate` = \'' $c['reg_activate'] . '\', `c_met_welcome` = \'' .
            
$c['met_welcome'] . '\', `c_message_welcome` = \'' $c['message_welcome'] . '\', `c_fotos_private` = \'' .
            
$c['fotos_private'] . '\', `c_hits_guest` = \'' $c['hits_guest'] . '\', `c_keep_points` = \'' .
            
$c['keep_points'] . '\', `c_allow_points` = \'' $c['allow_points'] . '\', `c_see_mod` = \'' .
            
$c['see_mod'] . '\', `c_stats_cache` = \'' $c['stats_cache'] . '\',`c_desapprove_post` = \'' .
            
$c['desapprove_post'] . '\', `c_allow_edad` = \'' $c['edad'] . '\', `c_max_posts` = \'' .
            
$c['max_posts'] . '\', `c_max_com` = \'' $c['max_com'] . '\', `c_max_nots` = \'' .
            
$c['max_nots'] . '\', `c_max_acts` = \'' $c['max_acts'] . '\', `c_allow_sump` = \'' .
            
$c['sump'] . '\', `c_newr_type` = \'' $c['newr'] . '\', `c_allow_firma` = \'' .
            
$c['firma'] . '\', `c_allow_upload` = \'' $c['upload'] . '\', `c_allow_portal` = \'' .
            
$c['portal'] . '\', `c_allow_live` = \'' $c['live'] . '\', `offline` = \'' $c['offline'] .
            
'\', `offline_message` = \'' $c['offline_message'] . '\', `pkey` = \'' $c['pkey'] . '\', `skey` = \'' $c['skey'] . '\' WHERE `tscript_id` = \'1\''))
            return 
true;
        else
            exit( 
show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.''db') );
    } 

y la reemplazamos por
 
Código PHP:
public function saveConfig() {
      global 
$tsCore;
      
/**
       * Unimos todos los parametros y 
       * quitamos el $_POST["save"] con array_slice()
       * @link Registrate o inicia tu sesión para ver este contenido
       * con el -1 se quita el $_POST["save"]
      */
      
$columnas $tsCore->getIUParray_slice($_POST0, -1) );
      if (
db_exec([__FILE____LINE__], "query""UPDATE w_configuracion SET {$columnas} WHERE tscript_id = 1")) return true;
      else exit( 
show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.''Base de datos') );
   } 

Ahora en el caso que tengan que incluir por ejemplo el "Proveedor de Email", ya que ese campo se tiene que codificar a JSON...y pensarán, como lo hago es simple..

Se pregunta si existe el parámetro con dicho nombre como por ejemplo isset($_POST['el_nombre']), como el nombre que necesitamos es 'providers' se hace lo siguiente, arriba de $columnas se agrega la condicional.
 
Código PHP:
# Consultamos si existe, tenemos que poner el nombre
      
if(isset($_POST["providers"])):
         
# Lo que va a hacer es reemplazar el parametro por este nuevo
         /**
          * @link Registrate o inicia tu sesión para ver este contenido
         */
         
$_POST["providers"] = json_encode(explode(', '$_POST["providers"]), JSON_FORCE_OBJECT);
      endif; 

y eso sería básicamente todo, espero haberme explicado bien.