Jump to content

Duplicado en Notifications


Luis Castillo

Recommended Posts

Hola Alejandro, espero te encuentres bien, he realizado dos modificaciones en mi JREVIEW aqui una explicacion de lo que hice

 

1) Modifique el boton de Report (abuso) para convertirlo en un boton que puedan usar los dueños de compañia (listing) y reportar al administrador que el review hecho por cualquiera no es justo, tiene malas palabras o sencillamente ese cliente nunca ha tenido ninguna relacion con esa compañia, de esta forma se abre una especia de challenge para este review a ver quien tiene la razon si el cliente o el dueño del listing.

 

2) Necesitaba que este boton solo se vea cuando los dueños de los listing este logeados, es decir registrados, con los mismos privilegios que el boton de Reply the Review. Como esto no es posible para Jewview modifique el archivo widgets.php  y coloque el codigo del boton de abuso (report) y lo puse en la linea de codigo de reply review, esto hace lo que necesito, muestra el boton de abuso o reporte solo si el owner esta logeado.

 

3) Necesitaba que este report (abuse) le llegara a: Admin, Owner y a la persona que hizo el review, por lo que modifique el archivo Notification y tambien funciona perfectamente.

 

Sin embargo tengo dos detallitos que a lo mejor tontamente se pueden solucionar a ver que puedes sugerirme sin quitarte mucho tiempo.

 

Este es el codigo que modifique en widgets.php:

 

 function ownerReply($review)
   {
       $state = Sanitize::getInt($review['Criteria'],'state');

       $review_id = Sanitize::getInt($review['Review'],'review_id');

       $text = $state != 2 ? __t("Reply to this review",true) : __t("Reply to this comment",true);

       ?>
       <button class="jr-report jrRight jrButton jrSmall" title="<?php echo $title;?>"

           data-listing-id="<?php echo $listing_id;?>"

           data-review-id="<?php echo $review_id;?>"

           data-post-id="<?php echo $post_id;?>"

           data-media-id="<?php echo $media_id;?>"

           data-extension="<?php echo $extension;?>">
           
           <span class="jrHidden"><?php echo $title;?></span>

<span class="jrIconWarning"></span><span><?php __t("Challenge This Review");?></span>
       </button>

 

Como veraz simplemente recorte la creacion del boton de abuso del report y lo coloque dentro de la condicion de ownerReply, funciona de maravilla sin embargo, si haces un reply review ya no puedes hacer un reporte de abuso. La unica forma de puedas hacer un reporte de abuso es que elimines el reply y hagas el reporte de abuso primero.  Lo que queriamos basicamente aqui era que solo los owner puedan usar el boton de reporte de abuso, asi como esta nos funciona, es obvio que si haces un reporte de abuso no vas a hacer un reply y viscerversa, pero seria interesante que este boton de reporte tuviera privilegios de acceso. Existira otra forma de solucionarlo?

 

Al colocar el boton en esta zona, el reporte no llega al administrador de joomla pero el correo si, por lo que tampoco es gran cosa. Pero seria bueno que siguiera llegando la notficacion al moderador de joomla.

 

Este el codigo que modificamos en notificacions para que el reporte le llegue, al que hizo el review, al administrador y al owner, esto es super necesario porque si reportas un review por usar malas palabras seria bueno que todos esten enterados de lo que paso, tanto el dueño del listing, como el que hizo el review como el administrador (este ultimo es el unico que recibe el reporte por defecto)

 

 # Notification for new review reports
           case 'Report':

               if ( $this->c->Config->notify_report ) {

                   # Process configuration emails
                   if($this->c->Config->notify_review_emails == '')
                   {
                       $mail->AddAddress($configMailFrom);
                   }
                   else
                   {
                       $recipient = explode("\n",$this->c->Config->notify_review_emails);

                       foreach($recipient AS $to)
                       {
                           trim($to) !='' and $mail->AddAddress(trim($to));
                       }
                   }

                   # Get review data
                   $this->c->Review->runProcessRatings = false;

                   $review = $this->c->Review->findRow(array(
                       'conditions'=>array('Review.id = ' . (int) $model->data['Report']['review_id'])
                   ),array());

                   $extension = $review['Review']['extension'];

                   # Load jReviewsEverywhere extension model
                   $name =  'everywhere_' . $extension;
                   S2App::import('Model',$name,'jreviews');
                   $class_name = inflector::camelize('everywhere_'.$extension).'Model';
                   $EverywhereListingModel = new $class_name();

                   # Get the listing title based on the extension being reviewed
                   $listing = $EverywhereListingModel->findRow(array('conditions'=>array("Listing.$EverywhereListingModel->realKey = " . $review['Review']['listing_id'])));

                   $subject = JreviewsLocale::getPHP('NOTIFY_NEW_REPORT');

                   $this->c->autoRender = false;

                   $this->c->set(array(
                       'User'=>$this->c->_user,
                       'report'=>$model->data,
                       'review'=>$review,
                       'listing'=>$listing
                   ));

                   $message = $this->c->render('email_templates','admin_report_notification');

                   $mail->Subject = $subject;

                   $mail->Body = $message;

                   if(!$mail->Send() && _MVC_DEBUG_ERR)
                   {
                      appLogMessage(array(
                           "Review report message was not sent.",
                           "Mailer error: " . $mail->ErrorInfo),
                           'notifications'
                       );
                   }
               
                   if($this->c->Config->notify_user_review_emails != '') {
                           $recipient = explode("\n",$this->c->Config->notify_user_review_emails);
                           
                           {
                               
                               {
                                   $mail->AddBCC(trim($bcc));
                               }
                           }
                       }

                       trim($review['User']['email']) != '' and $mail->AddAddress(trim($listing['User']['email'])) and $mail->AddAddress(trim($review['User']['email']));

                       $subject = isset($model->data['insertid']) ?
                                   sprintf(JreviewsLocale::getPHP('NOTIFY_NEW_REPORT'),$entry_title) :
                                 
                       $message = $this->c->render('email_templates','admin_report_notification');

                       $mail->Subject = $subject;

                       $mail->Body = $message;

                       if(!$mail->Send())
                       {
                          appLogMessage(array(
                                  "User review message was not sent.",
                                  "Mailer error: " . $mail->ErrorInfo),
                                  'notifications'
                              );
                       }
                   }
               
               
               break;

 

Con esta modificacion todos reciben el mismo correo reportando el abuso en el review, sin embargo el administrador recibe doble email (duplicado) obviamente porque por defecto recibe uno y como copiamos y modificamos el mismo codigo de reporte de review al usuario para lograr que este tambien reciba el correo de abuso imagino que este codigo tiene una linea donde envia el correo nuevamente al administrador creando el duplicado. Que debo borrar para que el administrador solo reciba un correo?

 

Adjunto te coloco unas imagenes para que veas lo que hicimos, y tengas una idea de lo que hablo, incluso modificamos el pop que sale para hacer el reporte de abuso y funciona perfecto

 

Basicamente necesitamos que nos orientes (siempre que se pueda, respetamos mucho tu tiempo)

 

1) Eliminar el duplicado que recibe el administrador

 

2) Esconder de otra forma el boton de abuso que sea vea solo para registrados (asi evitamos que al hacer un reply no quite la funcion del reporte de abuso como nos sucede ahora)

 

GRacias!!!!!!

 

 

post-12490-14242990114425_thumb.jpg

post-12490-1424299011461_thumb.jpg

Link to comment
×
×
  • Create New...