Código
function seo_verifica_permisos($id, $tipo){ global $user_info, $db_prefix; if(!$id = (int)$id){ return false; } if($user_info['is_admin'] == '1'){ return true; // Si es administrador entonces tiene permisos por defecto. } if($tipo == 'board'){ // Procesa Board if($request = @db_query(" SELECT memberGroups FROM {$db_prefix}boards WHERE ID_BOARD = {$id} LIMIT 1", __FILE__, __LINE__)){ } } if(!$permisos = (int)$row['memberGroups']){ // Hay permiso solo para un tipo de usuario return false; // No hay permisos preestablecidos } } foreach($permisos as $valor){ if($valor == $user_info['groups'][0]){ return true; // Tiene permisos } } return false; // No tiene permisos }elseif($tipo == 'topic'){ if($request = @db_query(" SELECT ID_BOARD FROM {$db_prefix}topics WHERE ID_TOPIC = {$id} LIMIT 1", __FILE__, __LINE__)){ } } if(seo_verifica_permisos((int)$row['ID_BOARD'], 'board')){ return true; // Tiene permisos }else{ return false; // No tiene permisos } }else{ return false; // No hay tipos para procesar } }
Entre muchisimos cambios para evitar una multitud de fallas que no habia contemplado pero por el camino fuí viendo y parchando al mismo tiempo, en algunos casos algunas funciones retornan y otros no ya que en algunos casos es necesario mostrar retornos válidos y en otros casos no, no hize un texto para describir todos los cambios o hubiese quedado mas grande que el mismo script.
Este parche parcha todas las fallas antes mencionadas y mas.
Si alguien utiliza este mod modificado por mano propia tendrá que volver a crear esos cambios.
Este parche consta de 3 archivos solamente:
- Themes/{$THEME}/Seo4SMFAdmin.template.php
- Sources/Seo4SMFAdmin.php
- seo4smf-redirect.php
Los archivos a reemplazar están acá, en la primera linea de cada archivo está la localización.
Dudas, sugerencias, propuesas, reclamos, demandas?¿?¿?
Si quieres ver específicamente los cambios puedes utilizar el comando diff en linux o busquen el programa windiff de windows.