Actualizacion y limpieza logica

parent 8b609832
...@@ -18,10 +18,20 @@ ...@@ -18,10 +18,20 @@
<meta property="og:description" content="{{comentarioFinal}}" /> <meta property="og:description" content="{{comentarioFinal}}" />
<meta property="og:image:width" content="1200" /> <meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" /> <meta property="og:image:height" content="630" />
<meta property="og:image" content="https://test-inovage.gearlabs.cl/uploads/users/{{idp}}_comparacion.png"/> <meta property="og:image" content="https://test-inovage.gearlabs.cl/uploads/users/{{idp}}_comparacion.png"/
{%endif%} {%endif%}
<link href="{{asset('frontend/css/camara.css')}}" rel="stylesheet" /> <link href="{{asset('frontend/css/camara.css')}}" rel="stylesheet" />
<script>
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id))
return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/es_ES/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
{% endblock %} {% endblock %}
{% block body %} {% block body %}
<div class="row"> <div class="row">
...@@ -114,27 +124,14 @@ ...@@ -114,27 +124,14 @@
var usuarioNutraPharm = "{{idp}}"; //por defecto var usuarioNutraPharm = "{{idp}}"; //por defecto
var tipoUsuarioFormulario = 3; //Segunda vez que entra por link de invitacion var tipoUsuarioFormulario = 3; //Segunda vez que entra por link de invitacion
{%else%} {%else%}
var usuarioNutraPharm = "none"; //por defecto var usuarioNutraPharm = "none"; //por defecto
var tipoUsuarioFormulario = 1; var tipoUsuarioFormulario = 1;
{%endif%} {%endif%}
var upload; var upload;
var url = 'https://test-inovage.gearlabs.cl/nutrapharm/index?idp={{idp}}&fa={{fa}}&r=0';
var description = $("#comentarioFotoUsuario").val();
</script> </script>
<script>
var url = 'https://test-inovage.gearlabs.cl/nutrapharm/index?idp={{idp}}&fa={{fa}}&r=0';
var description = $("#comentarioFotoUsuario").val();
</script>
<script>
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id))
return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/es_ES/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
</script>
<script> <script>
window.fbAsyncInit = function () { window.fbAsyncInit = function () {
...@@ -198,8 +195,7 @@ ...@@ -198,8 +195,7 @@
$("#imgInp").change(function () { $("#imgInp").change(function () {
readURL(this); readURL(this);
}); });
</script>
<script>
var Upload = function (file) { var Upload = function (file) {
this.file = file; this.file = file;
}; };
......
...@@ -9,6 +9,7 @@ class UsuarioNutrapharm extends BaseUsuarioNutrapharm ...@@ -9,6 +9,7 @@ class UsuarioNutrapharm extends BaseUsuarioNutrapharm
const ESTADO_FOTO_INICIAL = 1; const ESTADO_FOTO_INICIAL = 1;
const ESTADO_FOTO_ACTUALIZADA = 2; const ESTADO_FOTO_ACTUALIZADA = 2;
const ESTADO_FOTO_FINAL = 3; const ESTADO_FOTO_FINAL = 3;
const ESTADO_NO_VALIDO = 0;
const ELIMINADO_TRUE = 1; const ELIMINADO_TRUE = 1;
const ELIMINADO_FALSE = 0; const ELIMINADO_FALSE = 0;
} }
...@@ -26,21 +26,25 @@ class DefaultController extends Controller { ...@@ -26,21 +26,25 @@ class DefaultController extends Controller {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:indexAction', 'nutrapharm/index'); $log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:indexAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent'); $ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp(); $ip = $request->getClientIp();
$log->debug("Ingresando al landing de nutrapharm... IP : $ip | UA : $ua"); $log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua....");
$idPersona = $request->get("idp", null); $idPersona = $request->get("idp", null);
$firstAttempt = $request->get("fa", 1); $firstAttempt = $request->get("fa", 1);
$reset = $request->get("r", 0); $reset = $request->get("r", 0);
$comentarioFinal = ""; $comentarioFinal = "";
$log->debug("Paràmetros de entrada Usuario : $idPersona | Intento : $firstAttempt | Resetear = $reset....");
if ($idPersona == null) { if ($idPersona == null) {
$id = "none"; $id = "none";
$ext = "png"; $ext = "png";
$firstAttempt = 1; $firstAttempt = 1;
$log->debug("No se encontro id usuario...seteando parametros por defecto Usuario : $id | Extension archivo : $ext | Intento : $firstAttempt .....");
} else { } else {
$id = $idPersona; $id = $idPersona;
$usuario = UsuarioNutrapharmQuery::create()->filterByUnuIdNutrapharm($idPersona)->findOne(); $usuario = UsuarioNutrapharmQuery::create()->filterByUnuIdNutrapharm($idPersona)->findOne();
$ext = $usuario->getUnuExtInicial(); $ext = $usuario->getUnuExtInicial();
$comentarioFinal = $usuario->getUnuComentarioFinal(); $comentarioFinal = $usuario->getUnuComentarioFinal();
$log->debug("Se encontro id usuario $idPersona...seteando parametros por defecto Usuario : $id | Extension archivo : $ext | Intento : $firstAttempt | comentario final : $comentarioFinal.....");
} }
return $this->render('producto/landing_producto.html.twig', array("idp" => $id, "extInicial" => $ext, "extFinal" => "", "comentarioFinal" => $comentarioFinal, "fa" => $firstAttempt, "r" => $reset)); return $this->render('producto/landing_producto.html.twig', array("idp" => $id, "extInicial" => $ext, "extFinal" => "", "comentarioFinal" => $comentarioFinal, "fa" => $firstAttempt, "r" => $reset));
...@@ -50,31 +54,33 @@ class DefaultController extends Controller { ...@@ -50,31 +54,33 @@ class DefaultController extends Controller {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:uploadAction', 'nutrapharm/index'); $log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:uploadAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent'); $ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp(); $ip = $request->getClientIp();
$log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua....");
$tipo = $request->get("tipoUsuarioFormulario", null);
$nombre = $request->get("nombreUsuario", null); $nombre = $request->get("nombreUsuario", null);
$correo = $request->get("mailUsuario", null); $correo = $request->get("mailUsuario", null);
$comentario = $request->get("comentarioFotoUsuario", null); $comentario = $request->get("comentarioFotoUsuario", null);
$idUsuarioNutraPharm = $request->get("usuarioNutraPharm", null); $idUsuarioNutraPharm = $request->get("usuarioNutraPharm", null);
$tipo = $request->get("tipoUsuarioFormulario", null);
$uploadFile = $request->get("upload_file", 0); $uploadFile = $request->get("upload_file", 0);
$log->debug("valor upload :".$uploadFile); $log->debug("Paràmetros de entrada Guardado o Actualizacion Subida Archivo : $uploadFile | Tipo Guardado : $tipo | Nombre : $nombre | Correo : $correo | Comentario = $comentario | Usuario : $idUsuarioNutraPharm....");
//VERIFICAR DATOS DE ENTRADA //VERIFICAR DATOS DE ENTRADA
//TODO
if ($uploadFile == 1) {//foto subida if ($uploadFile == 1) {//foto subida
$log->debug("Creando variable de archivo...");
$file = $request->files->get('imagen'); $file = $request->files->get('imagen');
if (empty($file)) { if (empty($file)) {
$log->debug("No se subio un archivo de imagen válido...");
return new JsonResponse(array("msg" => "No se subio una imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_INICIAL), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']); return new JsonResponse(array("msg" => "No se subio una imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_INICIAL), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
} }
} else {//foto tomada } else {//foto tomada
$log->debug("Creando variable de archivo en base a foto tomada por el usuario...");
$file = $request->get("imagen", null); $file = $request->get("imagen", null);
} }
$log->debug("tipo de accion: $tipo");
$log->debug("guardando datos de ip $ip...");
$log->debug("Iniciando analisis de datos...");
if ($tipo == UsuarioNutrapharm::ESTADO_FOTO_INICIAL) { //Usuario Nuevo if ($tipo == UsuarioNutrapharm::ESTADO_FOTO_INICIAL) { //Usuario Nuevo
$log->debug("Iniciando Creacion de Usuario Nuevo...");
$usuarioNutraPharm = new UsuarioNutrapharm(); $usuarioNutraPharm = new UsuarioNutrapharm();
$usuarioNutraPharm->setUnuNombre($nombre); $usuarioNutraPharm->setUnuNombre($nombre);
$usuarioNutraPharm->setUnuCorreo($correo); $usuarioNutraPharm->setUnuCorreo($correo);
...@@ -91,24 +97,26 @@ class DefaultController extends Controller { ...@@ -91,24 +97,26 @@ class DefaultController extends Controller {
$usuarioNutraPharm->setUnuPathFotoInicial($uploadDir . '/' . $idNutrapharm); $usuarioNutraPharm->setUnuPathFotoInicial($uploadDir . '/' . $idNutrapharm);
$usuarioNutraPharm->setUnuIdNutrapharm($idNutrapharm); $usuarioNutraPharm->setUnuIdNutrapharm($idNutrapharm);
$log->debug("Iniciando generación de archivo asociado al nuevo usuario...");
if ($uploadFile == 1) { if ($uploadFile == 1) {
$log->debug("Procesando archivo fisico subido...");
$usuarioNutraPharm->setUnuExtInicial($file->getClientOriginalExtension()); $usuarioNutraPharm->setUnuExtInicial($file->getClientOriginalExtension());
$usuarioNutraPharm->save(); $usuarioNutraPharm->save();
$filename = $idNutrapharm . "." . $file->getClientOriginalExtension(); $filename = $idNutrapharm . "." . $file->getClientOriginalExtension();
$file->move($uploadDir, $filename); $file->move($uploadDir, $filename);
} else { } else {
$log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file); $data = $this->getBase64Image($file);
$usuarioNutraPharm->setUnuExtInicial($data[1]); $usuarioNutraPharm->setUnuExtInicial($data[1]);
$usuarioNutraPharm->save(); $usuarioNutraPharm->save();
$filename = $idNutrapharm . "." . $data[1]; $filename = $idNutrapharm . "." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]); $fpc = file_put_contents("$uploadDir/$filename", $data[0]);
$log->debug("Estado archivo generado desde data : $fpc");
} }
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA . " | Usuario : $idNutrapharm | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("msg" => "La informacion ha sido ingresada con exito!", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']); return new JsonResponse(array("msg" => "La informacion ha sido ingresada con exito!", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']);
} else if ($tipo == UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA && $idUsuarioNutraPharm != null) { } else if ($tipo == UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA && $idUsuarioNutraPharm != null) {
//Actualizar informacion ya existente //Actualizar informacion ya existente
$log->debug("id usuario a actualizar : $idUsuarioNutraPharm"); $log->debug("Iniciando Actualizacion de Usuario $idUsuarioNutraPharm...");
$usuario = UsuarioNutrapharmQuery::create()->filterByUnuIdNutrapharm($idUsuarioNutraPharm)->findOne(); $usuario = UsuarioNutrapharmQuery::create()->filterByUnuIdNutrapharm($idUsuarioNutraPharm)->findOne();
$usuario->setUnuNombre($nombre); $usuario->setUnuNombre($nombre);
$usuario->setUnuCorreo($correo); $usuario->setUnuCorreo($correo);
...@@ -123,25 +131,32 @@ class DefaultController extends Controller { ...@@ -123,25 +131,32 @@ class DefaultController extends Controller {
$usuario->setUnuPathFotoInicial($uploadDir . '/' . $idNutrapharm); $usuario->setUnuPathFotoInicial($uploadDir . '/' . $idNutrapharm);
$usuario->setUnuIdNutrapharm($idNutrapharm); $usuario->setUnuIdNutrapharm($idNutrapharm);
$log->debug("Iniciando generación de archivo asociado a la actualizacion del usuario $idUsuarioNutraPharm...");
if ($uploadFile == 1) { if ($uploadFile == 1) {
$log->debug("Procesando archivo fisico subido...");
$filename = $idNutrapharm . "." . $file->getClientOriginalExtension(); $filename = $idNutrapharm . "." . $file->getClientOriginalExtension();
$usuario->setUnuExtInicial($file->getClientOriginalExtension()); $usuario->setUnuExtInicial($file->getClientOriginalExtension());
$usuario->save(); $usuario->save();
$file->move($uploadDir, $filename); $file->move($uploadDir, $filename);
} else { } else {
$log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file); $data = $this->getBase64Image($file);
if ($data == -1) {
$usuario->setUnuEstado(UsuarioNutrapharm::ESTADO_NO_VALIDO);
$usuario->save();
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_FINAL . " | Usuario : $idUsuarioNutraPharm | Respuesta : " . Response::HTTP_BAD_REQUEST);
return new JsonResponse(array("msg" => "Ha ocurrido un error con el procesamiento de la imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_FINAL, "usuario" => $idNutrapharm), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
$usuario->setUnuExtInicial($data[1]); $usuario->setUnuExtInicial($data[1]);
$usuario->save(); $usuario->save();
$filename = $idNutrapharm . "." . $data[1]; $filename = $idNutrapharm . "." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]); $fpc = file_put_contents("$uploadDir/$filename", $data[0]);
$log->debug("Estado archivo generado desde data : $fpc");
} }
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA . " | Usuario : $idUsuarioNutraPharm | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("msg" => "La información se ha actualizado!", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']); return new JsonResponse(array("msg" => "La información se ha actualizado!", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']);
} elseif ($tipo == UsuarioNutrapharm::ESTADO_FOTO_FINAL && $idUsuarioNutraPharm != null) { } elseif ($tipo == UsuarioNutrapharm::ESTADO_FOTO_FINAL && $idUsuarioNutraPharm != null) {
//Unir fotos del usuario en base al usuarioNutraPharm $log->debug("Iniciando Actualizacion Final de Usuario $idUsuarioNutraPharm...");
//Actualizar informacion ya existente
$log->debug("id usuario a actualizar con segunda foto : $idUsuarioNutraPharm");
$usuario = UsuarioNutrapharmQuery::create()->filterByUnuIdNutrapharm($idUsuarioNutraPharm)->findOne(); $usuario = UsuarioNutrapharmQuery::create()->filterByUnuIdNutrapharm($idUsuarioNutraPharm)->findOne();
$usuario->setUnuComentarioFinal($comentario); $usuario->setUnuComentarioFinal($comentario);
$usuario->setUnuUa($ua); $usuario->setUnuUa($ua);
...@@ -153,29 +168,41 @@ class DefaultController extends Controller { ...@@ -153,29 +168,41 @@ class DefaultController extends Controller {
$idNutrapharm = explode("@", $usuario->getUnuCorreo())[0] . $usuario->getUnuId(); $idNutrapharm = explode("@", $usuario->getUnuCorreo())[0] . $usuario->getUnuId();
$usuario->setUnuPathFotoFinal($uploadDir . '/' . $idNutrapharm . "_final"); $usuario->setUnuPathFotoFinal($uploadDir . '/' . $idNutrapharm . "_final");
$log->debug("Iniciando generación de archivo final asociado a la actualizacion del usuario $idUsuarioNutraPharm...");
if ($uploadFile == 1) { if ($uploadFile == 1) {
$log->debug("Procesando archivo fisico subido...");
$filename = $idNutrapharm . "_final." . $file->getClientOriginalExtension(); $filename = $idNutrapharm . "_final." . $file->getClientOriginalExtension();
$usuario->setUnuExtFinal($file->getClientOriginalExtension()); $usuario->setUnuExtFinal($file->getClientOriginalExtension());
$usuario->save(); $usuario->save();
$file->move($uploadDir, $filename); $file->move($uploadDir, $filename);
} else { } else {
$log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file); $data = $this->getBase64Image($file);
if ($data == -1) {
$log->debug("No se pudo procesar la imagen tomada por el usuario...");
$usuario->setUnuEstado(UsuarioNutrapharm::ESTADO_NO_VALIDO);
$usuario->save();
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_FINAL . " | Usuario : $idUsuarioNutraPharm | Respuesta : " . Response::HTTP_BAD_REQUEST);
return new JsonResponse(array("msg" => "Ha ocurrido un error con el procesamiento de la imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_FINAL, "usuario" => $idNutrapharm), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
$usuario->setUnuExtFinal($data[1]); $usuario->setUnuExtFinal($data[1]);
$usuario->save(); $usuario->save();
$filename = $idNutrapharm . "_final." . $data[1]; $filename = $idNutrapharm . "_final." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]); $fpc = file_put_contents("$uploadDir/$filename", $data[0]);
$log->debug("Estado archivo generado desde data : $fpc");
} }
$log->debug("Iniciando union de fotos subidas por el usuario $idUsuarioNutraPharm...");
$this->merge($usuario->getUnuPathFotoInicial().".".$usuario->getUnuExtInicial(), $usuario->getUnuExtInicial(), $uploadDir.'/'.$filename , $usuario->getUnuExtFinal(), $uploadDir . '/' . $idNutrapharm . "_comparacion.png"); $this->merge($usuario->getUnuPathFotoInicial() . "." . $usuario->getUnuExtInicial(), $usuario->getUnuExtInicial(), $uploadDir . '/' . $filename, $usuario->getUnuExtFinal(), $uploadDir . '/' . $idNutrapharm . "_comparacion.png");
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_FINAL . " | Usuario : $idUsuarioNutraPharm | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("msg" => "Se ha generado la comparación, compartelo en las redes sociales!", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_FINAL, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']); return new JsonResponse(array("msg" => "Se ha generado la comparación, compartelo en las redes sociales!", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_FINAL, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']);
} }
} }
protected function merge($filename_x,$fileType_x, $filename_y,$fileType_y, $filename_result) { protected function merge($filename_x, $fileType_x, $filename_y, $fileType_y, $filename_result) {
if (file_exists($filename_result))
imagedestroy($filename_result);
// Get dimensions for specified images // Get dimensions for specified images
...@@ -187,19 +214,19 @@ class DefaultController extends Controller { ...@@ -187,19 +214,19 @@ class DefaultController extends Controller {
$image = imagecreatetruecolor($width_x + $width_y, $height_x); $image = imagecreatetruecolor($width_x + $width_y, $height_x);
// Load images and then copy to destination image // Load images and then copy to destination image
if($fileType_x == "png" || $fileType_x == "PNG" ){ if ($fileType_x == "png" || $fileType_x == "PNG") {
$image_x = imagecreatefrompng($filename_x); $image_x = imagecreatefrompng($filename_x);
}elseif($fileType_x == "jpeg" || $fileType_x == "JPEG" ){ } elseif ($fileType_x == "jpeg" || $fileType_x == "JPEG") {
$image_x = imagecreatefromjpeg($filename_x); $image_x = imagecreatefromjpeg($filename_x);
} }
// Load images and then copy to destination image // Load images and then copy to destination image
if($fileType_y == "png" || $fileType_y == "PNG"){ if ($fileType_y == "png" || $fileType_y == "PNG") {
$image_y = imagecreatefrompng($filename_y); $image_y = imagecreatefrompng($filename_y);
}elseif($fileType_y == "jpeg" || $fileType_y == "JPEG" ){ } elseif ($fileType_y == "jpeg" || $fileType_y == "JPEG") {
$image_y = imagecreatefromjpeg($filename_y); $image_y = imagecreatefromjpeg($filename_y);
} }
imagecopy($image, $image_x, 0, 0, 0, 0, $width_x, $height_x); imagecopy($image, $image_x, 0, 0, 0, 0, $width_x, $height_x);
imagecopy($image, $image_y, $width_x, 0, 0, 0, $width_y, $height_y); imagecopy($image, $image_y, $width_x, 0, 0, 0, $width_y, $height_y);
...@@ -236,20 +263,6 @@ class DefaultController extends Controller { ...@@ -236,20 +263,6 @@ class DefaultController extends Controller {
return new Response($file, 200, $headers); return new Response($file, 200, $headers);
} }
public function createSendFileResponseAction(Request $request) {
$file_name = $request->get("file_name", null);
$base_path = $this->getParameter('upload_dir');
$full_path = $base_path . '/' . $file_name;
$file = readfile($full_path);
$response = StreamedResponse::create(function() use ($file) {
readfile($file);
});
//$response->headers->set('Content-Type', $file->getMimeType());
return $response;
}
protected function getBase64Image($data) { protected function getBase64Image($data) {
if (preg_match('/^data:image\/(\w+);base64,/', $data, $type)) { if (preg_match('/^data:image\/(\w+);base64,/', $data, $type)) {
$data = substr($data, strpos($data, ',') + 1); $data = substr($data, strpos($data, ',') + 1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment