Jump to content

razaro

Global Moderators
  • Posts

    2,512
  • Joined

  • Last visited

  • Days Won

    19

Everything posted by razaro

  1. Sorry for that, link in first post is also for 1.6 though it does not say it. In 1.7 code is moved to contactform module.
  2. Not tested on 1.7 but most likely it does not work. So just for 1.6. It is override of ContactController.php and like tutorial you linked it should be placed in override/controllers/front .
  3. Try with this, similar override but bit different options. Can block messages that contain Chinese, Russian and from list of temporal or spam emails. It is for 1.6 version of PrestaShop, and you can add to long list of domains. Or can combine with solution from link in first post and from @endriu107 <?php class ContactController extends ContactControllerCore { public function postProcess() { if (Tools::isSubmit('submitMessage')) { $extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg'); $file_attachment = Tools::fileAttachment('fileUpload'); $message = Tools::getValue('message'); // Html entities is not usefull, iscleanHtml check there is no bad html tags. /* Check if language is Chinese or Russian or it comes from spam domain */ if (preg_match("/\p{Han}+/u", $message)) { $this->errors[] = Tools::displayError('Invalid message'); return; } if (preg_match("/\p{Hangul}+/u", $message)) { $this->errors[] = Tools::displayError('Invalid message'); return; } if ($this->isRussian($message)) { $this->errors[] = Tools::displayError('Invalid message'); return; } if ($this->isBadDomain(trim(Tools::getValue('from')))) { $this->errors[] = Tools::displayError('Invalid message'); return; } /* end */ if (!($from = trim(Tools::getValue('from'))) || !Validate::isEmail($from)) { $this->errors[] = Tools::displayError('Invalid email address.'); } elseif (!$message) { $this->errors[] = Tools::displayError('The message cannot be blank.'); } elseif (!Validate::isCleanHtml($message)) { $this->errors[] = Tools::displayError('Invalid message'); } elseif (!($id_contact = (int)Tools::getValue('id_contact')) || !(Validate::isLoadedObject($contact = new Contact($id_contact, $this->context->language->id)))) { $this->errors[] = Tools::displayError('Please select a subject from the list provided. '); } elseif (!empty($file_attachment['name']) && $file_attachment['error'] != 0) { $this->errors[] = Tools::displayError('An error occurred during the file-upload process.'); } elseif (!empty($file_attachment['name']) && !in_array(Tools::strtolower(substr($file_attachment['name'], -4)), $extension) && !in_array(Tools::strtolower(substr($file_attachment['name'], -5)), $extension)) { $this->errors[] = Tools::displayError('Bad file extension'); } else { $customer = $this->context->customer; if (!$customer->id) { $customer->getByEmail($from); } $id_order = (int)$this->getOrder(); if (!(( ($id_customer_thread = (int)Tools::getValue('id_customer_thread')) && (int)Db::getInstance()->getValue(' SELECT cm.id_customer_thread FROM '._DB_PREFIX_.'customer_thread cm WHERE cm.id_customer_thread = '.(int)$id_customer_thread.' AND cm.id_shop = '.(int)$this->context->shop->id.' AND token = \''.pSQL(Tools::getValue('token')).'\'') ) || ( $id_customer_thread = CustomerThread::getIdCustomerThreadByEmailAndIdOrder($from, $id_order) ))) { $fields = Db::getInstance()->executeS(' SELECT cm.id_customer_thread, cm.id_contact, cm.id_customer, cm.id_order, cm.id_product, cm.email FROM '._DB_PREFIX_.'customer_thread cm WHERE email = \''.pSQL($from).'\' AND cm.id_shop = '.(int)$this->context->shop->id.' AND ('. ($customer->id ? 'id_customer = '.(int)$customer->id.' OR ' : '').' id_order = '.(int)$id_order.')'); $score = 0; foreach ($fields as $key => $row) { $tmp = 0; if ((int)$row['id_customer'] && $row['id_customer'] != $customer->id && $row['email'] != $from) { continue; } if ($row['id_order'] != 0 && $id_order != $row['id_order']) { continue; } if ($row['email'] == $from) { $tmp += 4; } if ($row['id_contact'] == $id_contact) { $tmp++; } if (Tools::getValue('id_product') != 0 && $row['id_product'] == Tools::getValue('id_product')) { $tmp += 2; } if ($tmp >= 5 && $tmp >= $score) { $score = $tmp; $id_customer_thread = $row['id_customer_thread']; } } } $old_message = Db::getInstance()->getValue(' SELECT cm.message FROM '._DB_PREFIX_.'customer_message cm LEFT JOIN '._DB_PREFIX_.'customer_thread cc on (cm.id_customer_thread = cc.id_customer_thread) WHERE cc.id_customer_thread = '.(int)$id_customer_thread.' AND cc.id_shop = '.(int)$this->context->shop->id.' ORDER BY cm.date_add DESC'); if ($old_message == $message) { $this->context->smarty->assign('alreadySent', 1); $contact->email = ''; $contact->customer_service = 0; } if ($contact->customer_service) { if ((int)$id_customer_thread) { $ct = new CustomerThread($id_customer_thread); $ct->status = 'open'; $ct->id_lang = (int)$this->context->language->id; $ct->id_contact = (int)$id_contact; $ct->id_order = (int)$id_order; if ($id_product = (int)Tools::getValue('id_product')) { $ct->id_product = $id_product; } $ct->update(); } else { $ct = new CustomerThread(); if (isset($customer->id)) { $ct->id_customer = (int)$customer->id; } $ct->id_shop = (int)$this->context->shop->id; $ct->id_order = (int)$id_order; if ($id_product = (int)Tools::getValue('id_product')) { $ct->id_product = $id_product; } $ct->id_contact = (int)$id_contact; $ct->id_lang = (int)$this->context->language->id; $ct->email = $from; $ct->status = 'open'; $ct->token = Tools::passwdGen(12); $ct->add(); } if ($ct->id) { $cm = new CustomerMessage(); $cm->id_customer_thread = $ct->id; $cm->message = $message; if (isset($file_attachment['rename']) && !empty($file_attachment['rename']) && rename($file_attachment['tmp_name'], _PS_UPLOAD_DIR_.basename($file_attachment['rename']))) { $cm->file_name = $file_attachment['rename']; @chmod(_PS_UPLOAD_DIR_.basename($file_attachment['rename']), 0664); } $cm->ip_address = (int)ip2long(Tools::getRemoteAddr()); $cm->user_agent = $_SERVER['HTTP_USER_AGENT']; if (!$cm->add()) { $this->errors[] = Tools::displayError('An error occurred while sending the message.'); } } else { $this->errors[] = Tools::displayError('An error occurred while sending the message.'); } } if (!count($this->errors)) { $var_list = array( '{order_name}' => '-', '{attached_file}' => '-', '{message}' => Tools::nl2br(stripslashes($message)), '{email}' => $from, '{product_name}' => '', ); if (isset($file_attachment['name'])) { $var_list['{attached_file}'] = $file_attachment['name']; } $id_product = (int)Tools::getValue('id_product'); if (isset($ct) && Validate::isLoadedObject($ct) && $ct->id_order) { $order = new Order((int)$ct->id_order); $var_list['{order_name}'] = $order->getUniqReference(); $var_list['{id_order}'] = (int)$order->id; } if ($id_product) { $product = new Product((int)$id_product); if (Validate::isLoadedObject($product) && isset($product->name[Context::getContext()->language->id])) { $var_list['{product_name}'] = $product->name[Context::getContext()->language->id]; } } if (empty($contact->email)) { Mail::Send($this->context->language->id, 'contact_form', ((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, null, null, $file_attachment); } else { if (!Mail::Send($this->context->language->id, 'contact', Mail::l('Message from contact form').' [no_sync]', $var_list, $contact->email, $contact->name, null, null, $file_attachment, null, _PS_MAIL_DIR_, false, null, null, $from) || !Mail::Send($this->context->language->id, 'contact_form', ((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, null, null, $file_attachment, null, _PS_MAIL_DIR_, false, null, null, $contact->email)) { $this->errors[] = Tools::displayError('An error occurred while sending the message.'); } } } if (count($this->errors) > 1) { array_unique($this->errors); } elseif (!count($this->errors)) { $this->context->smarty->assign('confirmation', 1); } } } } public function isRussian($text) { return preg_match('/[А-Яа-яЁё]/u', $text); } public function isBadDomain($user_email) { $dea_array = array ( '0-mail.com', '001.igg.biz', '027168.com', '0815.ru', '0815.su', '0clickemail.com', '0wnd.net', '0wnd.org', '0x00.name', '1-8.biz', '1.emailfake.ml', '1000rebates.stream', '10host.top', '10mail.org', '10minut.com.pl', '10minutemail.cf', '10minutemail.co.uk', '10minutemail.co.za', '10minutemail.com', '10minutemail.de', '10minutemail.ga', '10minutemail.gq', '10minutemail.ml', '10minutemail.net', '10minutemail.us', '10minutenemail.de', '117.yyolf.net', '11top.xyz', '123-m.com', '12hosting.net', '12minutemail.com', '12storage.com', '14n.co.uk', '1ce.us', '1chuan.com', '1clck2.com', '1fsdfdsfsdf.tk', '1mail.ml', '1pad.de', '1rentcar.top', '1ss.noip.me', '1up.orangotango.gq', '1usemail.com', '1zhuan.com', '2-ch.space', '2000rebates.stream', '2014mail.ru', '20email.eu', '20mail.eu', '20mail.in', '20mail.it', '20minute.email', '20minutemail.com', '2120001.net', '21cn.com', '24hourmail.com', '291.usa.cc', '2ch.coms.hk', '2fdgdfgdfgdf.tk', '2prong.com', '2sea.xyz', '3.emailfake.ml', '3.fackme.gq', '30minutemail.com', '30wave.com', '33mail.com', '3d-painting.com', '3ew.usa.cc', '3l6.com', '3mail.ga', '3trtretgfrfe.tk', '4-n.us', '487.nut.cc', '4gfdsgfdgfd.tk', '4mail.cf', '4mail.ga', '4tb.host', '4w.io', '4warding.com', '4warding.net', '4warding.org', '5.fackme.gq', '54np.club', '5ghgfhfghfgh.tk', '5gramos.com', '5july.org', '5mail.cf', '5mail.ga', '5music.info', '5music.top', '6.emailfake.ml', '6.fackme.gq', '60minutemail.com', '675hosting.com', '675hosting.net', '675hosting.org', '69-ew.tk', '6hjgjhgkilkj.tk', '6ip.us', '6mail.cf', '6mail.ga', '6mail.ml', '6paq.com', '6url.com', '7.fackme.gq', '75hosting.com', '75hosting.net', '75hosting.org', '7days-printing.com', '7ddf32e.info', '7mail.ga', '7mail.ml', '7rent.top', '7tags.com', '7uy35p.tk', '8.fackme.gq', '806.flu.cc', '80665.com', '88clean.pro', '8mail.cf', '8mail.ga', '8mail.ml', '99experts.com', '9mail.cf', '9me.site', '9ox.net', 'a-bc.net', 'a.betr.co', 'a.sach.ir', 'a.wxnw.net', 'a0f7ukc.com', 'a41odgz7jh.com', 'a45.in', 'a54pd15op.com', 'aaaw45e.com', 'abusemail.de', 'abyssemail.com', 'abyssmail.com', 'ac20mail.in', 'academiccommunity.com', 'acentri.com', 'adbet.co', 'add3000.pp.ua', 'adesktop.com', 'adobeccepdm.com', 'adrianou.gq', 'advantimo.com', 'adwaterandstir.com', 'adx-telecom.com', 'aegia.net', 'aeonpsi.com', 'afrobacon.com', 'ag.us.to', 'agedmail.com', 'agustusmp3.xyz', 'ahk.jp', 'aistis.xyz', 'ajaxapp.net', 'akademiyauspexa.xyz', 'akorde.al', 'al-qaeda.us', 'aldeyaa.ae', 'aligamel.com', 'alimunjaya.xyz', 'alisongamel.com', 'alivance.com', 'allthegoodnamesaretaken.org', 'alph.wtf', 'alsheim.no-ip.org', 'alumnimp3.xyz', 'ama-trade.de', 'amail.com', 'amazon-aws.org', 'amilegit.com', 'amiri.net', 'amiriindustries.com', 'amoksystems.com', 'ampsylike.com', 'an.id.au', 'anappthat.com', 'andthen.us', 'animesos.com', 'ano-mail.net', 'anon.leemail.me', 'anonbox.net', 'anonmails.de', 'anonymail.dk', 'anonymbox.com', 'anonymize.com', 'anotherdomaincyka.tk', 'ansibleemail.com', 'anthony-junkmail.com', 'anthropologycommunity.com', 'antichef.com', 'antichef.net', 'antireg.ru', 'antispam.de', 'antispammail.de', 'antonelli.usa.cc', 'apkmd.com', 'appinventor.nl', 'appixie.com', 'armyspy.com', 'aron.us', 'art-en-ligne.pro', 'artman-conception.com', 'arur01.tk', 'arurgitu.gq', 'arurimport.ml', 'asdasd.nl', 'asdfghmail.com', 'ass.pp.ua', 'asspoo.com', 'assurancespourmoi.eu', 'astroempires.info', 'augmentationtechnology.com', 'autorobotica.com', 'aver.com', 'avia-tonic.fr', 'azazazatashkent.tk', 'azjuggalos.com', 'azmeil.tk', 'b.reed.to', 'b9x45v1m.com', 'babau.cf', 'babau.flu.cc', 'babau.ga', 'babau.gq', 'babau.igg.biz', 'babau.ml', 'babau.nut.cc', 'babau.usa.cc', 'backalleybowling.info', 'badgerland.eu', 'badhus.org', 'ballsofsteel.net', 'bandai.nom.co', 'bareed.ws', 'barryogorman.com', 'barrypov.com', 'barryspov.com', 'bartoparcadecabinet.com', 'baxomale.ht.cx', 'bccto.me', 'bdmuzic.pw', 'beck-it.net', 'beddly.com', 'beefmilk.com', 'belastingdienst.pw', 'bho.hu', 'big1.us', 'bigprofessor.so', 'bigstring.com', 'bigwiki.xyz', 'bin.8191.at', 'binka.me', 'binkmail.com', 'bio-muesli.net', 'biometicsliquidvitamins.com', 'bione.co', 'bitwerke.com', 'bladesmail.net', 'blip.ch', 'blogmyway.org', 'bloxter.cu.cc', 'bluedumpling.info', 'bluewerks.com', 'blutig.me', 'boatmail.us', 'bobmail.info', 'bodhi.lawlita.com', 'bofthew.com', 'bogotadc.info', 'bongobongo.cf', 'bongobongo.flu.cc', 'bongobongo.ga', 'bongobongo.igg.biz', 'bongobongo.ml', 'bongobongo.nut.cc', 'bongobongo.tk', 'bongobongo.usa.cc', 'bonobo.email', 'bookthemmore.com', 'bootybay.de', 'boun.cr', 'bouncr.com', 'boxformail.in', 'boximail.com', 'boxtemp.com.br', 'breadtimes.press', 'breakthru.com', 'brefmail.com', 'brennendesreich.de', 'broadbandninja.com', 'bsnow.net', 'bspamfree.org', 'bspooky.com', 'bst-72.com', 'btcmail.pw', 'bu.mintemail.com', 'buffemail.com', 'bugmenot.com', 'bugmenot.ml', 'bum.net', 'bumpymail.com', 'bunchofidiots.com', 'bund.us', 'bundes-li.ga', 'bungabunga.cf', 'bunsenhoneydew.com', 'burnthespam.info', 'burstmail.info', 'businesscredit.xyz', 'buxap.com', 'buygapfashion.com', 'buymoreplays.com', 'buyordie.info', 'buyusedlibrarybooks.org', 'bwa33.net', 'by8006l.com', 'byebyemail.com', 'byespm.com', 'byom.de', 'c.andreihusanu.ro', 'c.hcac.net', 'c.kadag.ir', 'c.theplug.org', 'c.wlist.ro', 'c2.hu', 'c51vsgq.com', 'cachedot.net', 'cafecar.xyz', 'car101.pro', 'card.zp.ua', 'carrnelpartners.com', 'cartelera.org', 'caseedu.tk', 'casualdx.com', 'cbair.com', 'cd.mintemail.com', 'ce.mintemail.com', 'cek.pm', 'cellurl.com', 'centermail.com', 'centermail.net', 'central-servers.xyz', 'centrallosana.ga', 'cetpass.com', 'chacuo.net', 'chammy.info', 'cheaphorde.com', 'cheaphub.net', 'cheatmail.de', 'chechnya.conf.work', 'chef.asana.biz', 'chielo.com', 'childsavetrust.org', 'chilelinks.cl', 'chinatov.com', 'choco.la', 'chogmail.com', 'choicemail1.com', 'chong-mail.com', 'chong-mail.net', 'chong-mail.org', 'chris.burgercentral.us', 'christopherfretz.com', 'cigar-auctions.com', 'civilizationdesign.xyz', 'ckaazaza.tk', 'cl.gl', 'clandest.in', 'clay.xyz', 'clinicatbf.com', 'clipmail.eu', 'clixser.com', 'cloud99.pro', 'cloud99.top', 'clrmail.com', 'cls-audio.club', 'clubfier.com', 'cmail.com', 'cmail.net', 'cmail.org', 'cnamed.com', 'cnn.coms.hk', 'cobarekyo1.ml', 'cocodani.cf', 'codeandscotch.com', 'cognitiveways.xyz', 'coldemail.info', 'colorweb.cf', 'communitybuildingworks.xyz', 'comwest.de', 'consumerriot.com', 'contentwanted.com', 'contrasto.cu.cc', 'cool.fr.nf', 'coolandwacky.us', 'coolimpool.org', 'correo.blogos.net', 'cortex.kicks-ass.net', 'cosmorph.com', 'courriel.fr.nf', 'courrieltemporaire.com', 'cr97mt49.com', 'crankhole.com', 'crankmails.com', 'crapmail.org', 'crastination.de', 'crazespaces.pw', 'crazymailing.com', 'cream.pink', 'crossroadsmail.com', 'crotslep.ml', 'crotslep.tk', 'cubiclink.com', 'cultmovie.com', 'curryworld.de', 'cust.in', 'cutout.club', 'cuvox.de', 'cx.de-a.org', 'cyber-innovation.club', 'cyber-phone.eu', 'cybersex.com', 'czqjii8.com', 'd3p.dk', 'd58pb91.com', 'd8u.us', 'dacoolest.com', 'daemsteam.com', 'daintly.com', 'dammexe.net', 'dancemanual.com', 'dandikmail.com', 'darkharvestfilms.com', 'darknode.org', 'dasdasdascyka.tk', 'dash-pads.com', 'dataarca.com', 'datarca.com', 'datazo.ca', 'davidkoh.net', 'dayrep.com', 'dbunker.com', 'dcemail.com', 'deadaddress.com', 'deadchildren.org', 'deadfake.cf', 'deadfake.ga', 'deadfake.ml', 'deadfake.tk', 'deadspam.com', 'deagot.com', 'dealja.com', 'deekayen.us', 'defomail.com', 'degradedfun.net', 'delikkt.de', 'derder.net', 'despam.it', 'despammed.com', 'dev-null.cf', 'dev-null.ga', 'dev-null.gq', 'dev-null.ml', 'devnullmail.com', 'dff55.dynu.net', 'dfg6.kozow.com', 'dfgh.net', 'dfghj.ml', 'dharmatel.net', 'diapaulpainting.com', 'digdown.xyz', 'digitalmariachis.com', 'digitalsanctuary.com', 'dingbone.com', 'dinkmail.com', 'disaq.com', 'disario.info', 'discard-email.cf', 'discard.cf', 'discard.email', 'discard.ga', 'discard.gq', 'discard.ml', 'discard.tk', 'discardmail.com', 'discardmail.de', 'disign-concept.eu', 'disign-revelation.com', 'dispo.in', 'dispomail.eu', 'disposable-email.ml', 'disposable.cf', 'disposable.ga', 'disposable.ml', 'disposableaddress.com', 'disposableemailaddresses.com', 'disposableemailaddresses.emailmiser.com', 'disposableinbox.com', 'disposablemails.com', 'dispose.it', 'disposeamail.com', 'disposemail.com', 'dispostable.com', 'divermail.com', 'divismail.ru', 'dlemail.ru', 'dm.w3internet.co.uk', 'dm.w3internet.co.ukexample.com', 'dmarc.ro', 'doanart.com', 'dodgeit.com', 'dodgit.com', 'dodgit.org', 'dodsi.com', 'doiea.com', 'dolphinnet.net', 'domforfb1.tk', 'domforfb2.tk', 'domforfb3.tk', 'domforfb4.tk', 'domforfb5.tk', 'domforfb6.tk', 'domforfb7.tk', 'domforfb8.tk', 'domforfb9.tk', 'domozmail.com', 'donemail.ru', 'dontreg.com', 'dontsendmespam.de', 'doquier.tk', 'dot-ml.ml', 'dot-ml.tk', 'dotmsg.com', 'dotslashrage.com', 'douchelounge.com', 'doxcity.net', 'dqkerui.com', 'dr69.site', 'dragons-spirit.org', 'drdrb.com', 'drdrb.net', 'drivetagdev.com', 'droplar.com', 'dropmail.me', 'drynic.com', 'dspwebservices.com', 'dt.com', 'duam.net', 'dudmail.com', 'dukedish.com', 'dump-email.info', 'dumpandjunk.com', 'dumpmail.de', 'dumpyemail.com', 'duskmail.com', 'dw.now.im', 'dwse.edu.pl', 'dx.abuser.eu', 'dx.allowed.org', 'dx.awiki.org', 'dx.ez.lv', 'dx.sly.io', 'e-mail.com', 'e-mail.org', 'e.4pet.ro', 'e.amav.ro', 'e.arno.fi', 'e.blogspam.ro', 'e.discard-email.cf', 'e.l5.ca', 'e.milavitsaromania.ro', 'e.nodie.cc', 'e.shapoo.ch', 'e.wupics.com', 'e0yk-mail.ml', 'e4ward.com', 'e7n06wz.com', 'eastwan.net', 'easytrashmail.com', 'eatrnet.com', 'eb609s25w.com', 'eco.ilmale.it', 'ecolo-online.fr', 'edrishn.xyz', 'ee2.pl', 'eelmail.com', 'einmalmail.de', 'einrot.com', 'einrot.de', 'eintagsmail.de', 'email-fake.cf', 'email-fake.ga', 'email-fake.gq', 'email-fake.ml', 'email-fake.tk', 'email.cbes.net', 'email60.com', 'emailage.cf', 'emailage.ga', 'emailage.gq', 'emailage.ml', 'emailage.tk', 'emaildienst.de', 'emailfake.ml', 'emailgo.de', 'emailias.com', 'emailigo.de', 'emailinfive.com', 'emailisvalid.com', 'emaillime.com', 'emailmenow.info', 'emailmiser.com', 'emailproxsy.com', 'emails.ga', 'emailsensei.com', 'emailsingularity.net', 'emailspam.cf', 'emailspam.ga', 'emailspam.gq', 'emailspam.ml', 'emailspam.tk', 'emailtea.com', 'emailtemporanea.com', 'emailtemporanea.net', 'emailtemporar.ro', 'emailtemporario.com.br', 'emailthe.net', 'emailtmp.com', 'emailto.de', 'emailwarden.com', 'emailx.at.hm', 'emailxfer.com', 'emailz.cf', 'emailz.ga', 'emailz.gq', 'emailz.ml', 'emeil.in', 'emeil.ir', 'emil.com', 'emkei.cf', 'emkei.ga', 'emkei.gq', 'emkei.ml', 'emkei.tk', 'eml.pp.ua', 'emltmp.com', 'emz.net', 'enterto.com', 'eonmech.com', 'ephemail.net', 'eqiluxspam.ga', 'erasf.com', 'ero-tube.org', 'ese.kr', 'est.une.victime.ninja', 'estate-invest.fr', 'etgdev.de', 'etranquil.com', 'etranquil.net', 'etranquil.org', 'eu.igg.biz', 'everytg.ml', 'evopo.com', 'evyush.com', 'exitstageleft.net', 'explodemail.com', 'express.net.ua', 'extremail.ru', 'eyepaste.com', 'ezfill.club', 'ezlo.co', 'ezstest.com', 'f4k.es', 'f5.si', 'facebook-email.cf', 'facebook-email.ga', 'facebook-email.ml', 'facebookmail.gq', 'facebookmail.ml', 'failbone.com', 'faithkills.org', 'fake-box.com', 'fake-email.pp.ua', 'fake-mail.cf', 'fake-mail.ga', 'fake-mail.ml', 'fake.i-3gk.cf', 'fake.i-3gk.ga', 'fake.i-3gk.gq', 'fake.i-3gk.ml', 'fakeinbox.cf', 'fakeinbox.com', 'fakeinbox.ga', 'fakeinbox.info', 'fakeinbox.ml', 'fakeinbox.tk', 'fakeinformation.com', 'fakemail.fr', 'fakemailgenerator.com', 'fakemailz.com', 'fammix.com', 'fangoh.com', 'fansworldwide.de', 'fantasymail.de', 'fartwallet.com', 'fast-mail.fr', 'fastacura.com', 'fastchevy.com', 'fastchrysler.com', 'fastemails.us', 'fastkawasaki.com', 'fastmazda.com', 'fastmitsubishi.com', 'fastnissan.com', 'fastsubaru.com', 'fastsuzuki.com', 'fasttoyota.com', 'fastyamaha.com', 'fatflap.com', 'faze.biz', 'fbi.coms.hk', 'fbmail1.ml', 'fc66998.com', 'fdfdsfds.com', 'fetchnet.co.uk', 'ficken.de', 'fightallspam.com', 'figjs.com', 'figshot.com', 'fiifke.de', 'filzmail.com', 'fingermouse.org', 'fishfortomorrow.xyz', 'fivemail.de', 'fixmail.tk', 'fizmail.com', 'flashbox.5july.org', 'fleckens.hu', 'flemail.ru', 'flowu.com', 'fls4.gleeze.com', 'flurred.com', 'flyinggeek.net', 'flyspam.com', 'foodbooto.com', 'footard.com', 'foquita.com', 'forecastertests.com', 'forgetmail.com', 'fornow.eu', 'forspam.net', 'forward.cat', 'fr33mail.info', 'fragolina2.tk', 'francanet.com.br', 'frapmail.com', 'frappina.tk', 'frappina99.tk', 'free-email.cf', 'free-email.ga', 'freebullets.net', 'freecat.net', 'freechristianbookstore.com', 'freefattymovies.com', 'freelance-france.eu', 'freemail.ms', 'freemail.tweakly.net', 'freemails.cf', 'freemails.ga', 'freemails.ml', 'freemeil.ga', 'freemeil.gq', 'freemeil.ml', 'freemommyvids.com', 'freeplumpervideos.com', 'freeschoolgirlvids.com', 'freeshemaledvds.com', 'freesistervids.com', 'freetubearchive.com', 'freundin.ru', 'friendlymail.co.uk', 'front14.org', 'fsagc.xyz', 'fuckedupload.com', 'fuckingduh.com', 'fudgerub.com', 'fulvie.com', 'fun2.biz', 'fun64.com', 'fun64.net', 'furusato.tokyo', 'furzauflunge.de', 'fuwamofu.com', 'fux0ringduh.com', 'fw.moza.pl', 'fyii.de', 'g.hmail.us', 'gafy.net', 'gamegregious.com', 'gamgling.com', 'gamno.config.work', 'garliclife.com', 'garrymccooey.com', 'gav0.com', 'gawab.com', 'gehensiemirnichtaufdensack.de', 'gelitik.in', 'genderfuck.net', 'gero.us', 'get-mail.cf', 'get-mail.ga', 'get-mail.ml', 'get-mail.tk', 'get.pp.ua', 'get1mail.com', 'get2mail.fr', 'getairmail.cf', 'getairmail.com', 'getairmail.ga', 'getairmail.gq', 'getairmail.ml', 'getairmail.tk', 'getmails.eu', 'getnada.com', 'getnowtoday.cf', 'getonemail.com', 'getonemail.net', 'ghosttexter.de', 'giantmail.de', 'gibit.us', 'gimesson.pe.hu', 'girlsundertheinfluence.com', 'gishpuppy.com', 'giuras.club', 'giuypaiw8.com', 'globaltouron.com', 'glubex.com', 'glucosegrin.com', 'gmial.com', 'go.irc.so', 'go2usa.info', 'godataflow.xyz', 'godut.com', 'goemailgo.com', 'goodjab.club', 'goooogle.flu.cc', 'goooogle.igg.biz', 'goooogle.nut.cc', 'goooogle.usa.cc', 'gorillaswithdirtyarmpits.com', 'gotmail.com', 'gotmail.net', 'gotmail.org', 'gotti.otherinbox.com', 'gowikibooks.com', 'gowikicampus.com', 'gowikicars.com', 'gowikifilms.com', 'gowikigames.com', 'gowikimusic.com', 'gowikimusic.great-host.in', 'gowikinetwork.com', 'gowikitravel.com', 'gowikitv.com', 'grandmamail.com', 'grandmasmail.com', 'great-host.in', 'greensloth.com', 'greenst.info', 'greggamel.net', 'gregorygamel.com', 'gregorygamel.net', 'greyjack.com', 'grr.la', 'gsrv.co.uk', 'guerillamail.biz', 'guerillamail.com', 'guerillamail.net', 'guerillamail.org', 'guerrillamail.biz', 'guerrillamail.com', 'guerrillamail.de', 'guerrillamail.info', 'guerrillamail.net', 'guerrillamail.org', 'guerrillamailblock.com', 'gustr.com', 'gwspt71.com', 'h.mintemail.com', 'h.thc.lv', 'h1z8ckvz.com', 'h2-yy.nut.cc', 'h8s.org', 'h9js8y6.com', 'habitue.net', 'hacccc.com', 'hackersquad.tk', 'hackrz.xyz', 'haltospam.com', 'happykorea.club', 'happykoreas.xyz', 'harakirimail.com', 'haribu.net', 'harmonyst.xyz', 'hartbot.de', 'hasanmail.ml', 'hash.pp.ua', 'hat-geld.de', 'hatespam.org', 'hdmoviestore.us', 'healyourself.xyz', 'heathenhero.com', 'hellodream.mobi', 'helloricky.com', 'herp.in', 'herpderp.nl', 'hezll.com', 'hiddencorner.xyz', 'hidemail.de', 'hidemail.pro', 'hidemail.us', 'hidzz.com', 'hmamail.com', 'hoanggiaanh.com', 'hochsitze.com', 'hoer.pw', 'holl.ga', 'hopemail.biz', 'hostcalls.com', 'hostmonitor.net', 'hot-mail.cf', 'hot-mail.ga', 'hot-mail.gq', 'hot-mail.ml', 'hot-mail.tk', 'hotpop.com', 'housat.com', 'hstermail.com', 'hukkmu.tk', 'hulapla.de', 'humn.ws.gy', 'hvtechnical.com', 'i.istii.ro', 'i.klipp.su', 'i.ryanb.com', 'i.wawi.es', 'i.xcode.ro', 'i201zzf8x.com', 'i2pmail.org', 'i4j0j3iz0.com', 'iaoss.com', 'icantbelieveineedtoexplainthisshit.com', 'icemovie.link', 'ichigo.me', 'ieatspam.eu', 'ieatspam.info', 'ieh-mail.de', 'ignoremail.com', 'ihateyoualot.info', 'ihaxyour.info', 'ihazspam.ca', 'iheartspam.org', 'ikbenspamvrij.nl', 'iku.us', 'illistnoise.com', 'ilnostrogrossograssomatrimoniomolisano.com', 'ilovespam.com', 'imails.info', 'imankul.com', 'imgof.com', 'imgv.de', 'immo-gerance.info', 'imovie.link', 'imstations.com', 'inaby.com', 'inapplicable.org', 'inbax.tk', 'inbound.plus', 'inbox.si', 'inboxalias.com', 'inboxbear.com', 'inboxclean.com', 'inboxclean.org', 'inboxproxy.com', 'inclusiveprogress.com', 'incognitomail.com', 'incognitomail.net', 'incognitomail.org', 'indonesianherbalmedicine.com', 'infest.org', 'info-radio.ml', 'infocom.zp.ua', 'inmynetwork.tk', 'inpowiki.xyz', 'insorg-mail.info', 'instant-mail.de', 'instantemailaddress.com', 'instantmail.fr', 'ip4.pp.ua', 'ip6.li', 'ip6.pp.ua', 'ipoo.org', 'ipswell.com', 'irabops.com', 'ircbox.xyz', 'irish2me.com', 'iroid.com', 'irssi.tv', 'isdaq.com', 'ispuntheweb.com', 'istakalisa.club', 'italia.flu.cc', 'italia.igg.biz', 'itmtx.com', 'itsme.edu.pl', 'iwi.net', 'j-p.us', 'j.rvb.ro', 'jafps.com', 'jamit.com.au', 'jcpclothing.ga', 'jdmadventures.com', 'je-recycle.info', 'jellyrolls.com', 'jeramywebb.com', 'jet-renovation.fr', 'jetable.com', 'jetable.fr.nf', 'jetable.net', 'jetable.org', 'jetable.pp.ua', 'jetableemail.com', 'jnxjn.com', 'jobbikszimpatizans.hu', 'jobposts.net', 'jobs-to-be-done.net', 'joelpet.com', 'joetestalot.com', 'josefadventures.org', 'jourrapide.com', 'jp.ftp.sh', 'jredm.com', 'jsrsolutions.com', 'jswfdb48z.com', 'jungkamushukum.com', 'junk1e.com', 'junkmail.ga', 'junkmail.gq', 'jv6hgh1.com', 'jwk4227ufn.com', 'jyliananderik.com', 'k.fido.be', 'k3663a40w.com', 'kah.pw', 'kaijenwan.com', 'kampoeng3d.club', 'kanker.website', 'kasmail.com', 'kaspop.com', 'katztube.com', 'kazelink.ml', 'kcrw.de', 'keepmymail.com', 'keinpardon.de', 'kekecog.com', 'kemska.pw', 'kennedy808.com', 'ketiksms.club', 'kickmark.com', 'kiham.club', 'killmail.com', 'killmail.net', 'kimsdisk.com', 'kingsq.ga', 'kir.ch.tc', 'kismail.ru', 'kitten-mittons.com', 'klassmaster.com', 'klassmaster.net', 'klzlk.com', 'knol-power.nl', 'kommunity.biz', 'kook.ml', 'kormail.xyz', 'kosmetik-obatkuat.com', 'koszmail.pl', 'kuai909.com', 'kuaijenwan.com', 'kuatcak.cf', 'kuatcak.tk', 'kuatmail.gq', 'kuatmail.tk', 'kulturbetrieb.info', 'kurzepost.de', 'kusrc.com', 'kwift.net', 'kwilco.net', 'l-c-a.us', 'l.safdv.com', 'l33r.eu', 'labetteraverouge.at', 'lackmail.net', 'lackmail.ru', 'ladymacbeth.tk', 'lags.us', 'lakelivingstonrealestate.com', 'landmail.co', 'laoeq.com', 'laoho.com', 'last-chance.pro', 'lastmail.co', 'lastmail.com', 'lawlita.com', 'lazyinbox.com', 'ledoktre.com', 'leeching.net', 'legalrc.loan', 'lesbugs.com', 'letthemeatspam.com', 'lexisense.com', 'lhsdv.com', 'lifebyfood.com', 'ligsb.com', 'likesyouback.com', 'lillemap.net', 'link2mail.net', 'linkedintuts2016.pw', 'litedrop.com', 'liveradio.tk', 'lmcudh4h.com', 'loadby.us', 'loan101.pro', 'localserv.no-ip.org', 'locanto1.club', 'locantospot.top', 'locateme10.com', 'locomodev.net', 'login-email.cf', 'login-email.ga', 'login-email.ml', 'login-email.tk', 'loh.pp.ua', 'lol.ovpn.to', 'lolfreak.net', 'lolito.tk', 'lookugly.com', 'lopl.co.cc', 'lordsofts.com', 'lortemail.dk', 'lostpositive.xyz', 'lovefall.ml', 'lovemeleaveme.com', 'lovesea.gq', 'lpo.ddnsfree.com', 'lr7.us', 'lr78.com', 'lroid.com', 'lukop.dk', 'luv2.us', 'm.ddcrew.com', 'm21.cc', 'm2r60ff.com', 'm4ilweb.info', 'maboard.com', 'macr2.com', 'macromaid.com', 'magicbox.ro', 'mail.ru', 'mail-easy.fr', 'mail-filter.com', 'mail-temporaire.fr', 'mail-tester.com', 'mail.aws910.com', 'mail.backflip.cf', 'mail.by', 'mail.illistnoise.com', 'mail.mailinator.com', 'mail.mezimages.net', 'mail.partskyline.com', 'mail.ticket-please.ga', 'mail.wtf', 'mail.zp.ua', 'mail114.net', 'mail1a.de', 'mail21.cc', 'mail2rss.org', 'mail333.com', 'mail4trash.com', 'mail4you.usa.cc', 'mail707.com', 'mailback.com', 'mailbidon.com', 'mailbiz.biz', 'mailblocks.com', 'mailbox72.biz', 'mailbox80.biz', 'mailbucket.org', 'mailcat.biz', 'mailcatch.com', 'mailde.de', 'mailde.info', 'maildrop.cc', 'maildrop.cf', 'maildrop.ga', 'maildrop.gq', 'maildrop.ml', 'maildump.tk', 'maildx.com', 'maileater.com', 'mailed.ro', 'maileimer.de', 'maileme101.com', 'mailexpire.com', 'mailfa.tk', 'mailfall.com', 'mailforspam.com', 'mailfree.ga', 'mailfree.gq', 'mailfree.ml', 'mailfreeonline.com', 'mailfs.com', 'mailguard.me', 'mailhero.io', 'mailimate.com', 'mailin8r.com', 'mailinatar.com', 'mailinater.com', 'mailinator.com', 'mailinator.gq', 'mailinator.net', 'mailinator.org', 'mailinator.pl', 'mailinator.us', 'mailinator2.com', 'mailincubator.com', 'mailismagic.com', 'mailjunk.cf', 'mailjunk.ga', 'mailjunk.gq', 'mailjunk.ml', 'mailjunk.tk', 'mailkor.xyz', 'mailmate.com', 'mailme.gq', 'mailme.ir', 'mailme.lv', 'mailme24.com', 'mailmetrash.com', 'mailmetrash.comilzilla.org', 'mailmoat.com', 'mailms.com', 'mailna.in', 'mailna.me', 'mailnator.com', 'mailnesia.com', 'mailnull.com', 'mailorc.com', 'mailorg.org', 'mailpick.biz', 'mailpooch.com', 'mailproxsy.com', 'mailquack.com', 'mailrock.biz', 'mailsac.com', 'mailscheap.us', 'mailscrap.com', 'mailseal.de', 'mailshell.com', 'mailsiphon.com', 'mailslapping.com', 'mailslite.com', 'mailspam.usa.cc', 'mailspam.xyz', 'mailspeed.ru', 'mailtemp.info', 'mailthunder.ml', 'mailtome.de', 'mailtothis.com', 'mailtrash.net', 'mailtv.net', 'mailtv.tv', 'mailzi.ru', 'mailzilla.com', 'mailzilla.org', 'mailzilla.orgmbx.cc', 'makemetheking.com', 'malayalamdtp.com', 'manifestgenerator.com', 'mansiondev.com', 'manybrain.com', 'mao.igg.biz', 'markmurfin.com', 'martin.securehost.com.es', 'mastahype.net', 'materiali.ml', 'mattmason.xyz', 'mbx.cc', 'mcache.net', 'mciek.com', 'medsheet.com', 'mega.zik.dj', 'meinspamschutz.de', 'mejjang.xyz', 'meltmail.com', 'merda.flu.cc', 'merda.igg.biz', 'merda.nut.cc', 'merda.usa.cc', 'merry.pink', 'messagebeamer.de', 'messwiththebestdielikethe.rest', 'metroset.net', 'mezimages.net', 'mfsa.ru', 'mhwolf.net', 'midcoastcustoms.com', 'midcoastcustoms.net', 'midcoastsolutions.com', 'midcoastsolutions.net', 'midlertidig.com', 'midlertidig.net', 'midlertidig.org', 'mierdamail.com', 'migmail.net', 'migmail.pl', 'migumail.com', 'mihep.com', 'ministry-of-silly-walks.de', 'mintemail.com', 'miodonski.ch', 'miraigames.net', 'misterpinball.de', 'mjukglass.nu', 'mmail.igg.biz', 'mmailinater.com', 'moakt.com', 'moakt.ws', 'mobi.web.id', 'mobileninja.co.uk', 'moburl.com', 'mockmyid.co', 'mohmal.com', 'mohmal.im', 'mohmal.in', 'mohmal.tech', 'momentics.ru', 'moncourrier.fr.nf', 'monemail.fr.nf', 'monmail.fr.nf', 'monumentmail.com', 'mor19.uu.gl', 'morahdsl.cf', 'moreorcs.com', 'mox.pp.ua', 'mrblacklist.gq', 'mrresourcepacks.tk', 'ms9.mailslite.com', 'msa.minsmail.com', 'msgos.com', 'mspeciosa.com', 'msrc.ml', 'mswork.ru', 'msxd.com', 'mt2009.com', 'mt2014.com', 'mt2015.com', 'mt2016.com', 'mt2017.com', 'mtmdev.com', 'muehlacker.tk', 'mufux.com', 'mugglenet.org', 'muq.orangotango.tk', 'mustbedestroyed.org', 'mvrht.com', 'mwarner.org', 'mx0.wwwnew.eu', 'my.efxs.ca', 'my.spam.orangotango.ml', 'my10minutemail.com', 'mycard.net.ua', 'mycleaninbox.net', 'mycorneroftheinter.net', 'mydemo.equipment', 'myemailboxy.com', 'mymail-in.net', 'mymailjos.cf', 'mymailjos.ga', 'mymailjos.tk', 'mymailoasis.com', 'mymailto.cf', 'mymailto.ga', 'myn4s.ddns.net', 'myneocards.cz', 'mynetstore.de', 'mypacks.net', 'mypartyclip.de', 'myphantomemail.com', 'mysamp.de', 'myspaceinc.com', 'myspaceinc.net', 'myspaceinc.org', 'myspacepimpedup.com', 'myspamless.com', 'mytemp.email', 'mytempemail.com', 'mytempmail.com', 'mythnick.club', 'mytrashmail.com', 'myzx.com', 'n.ra3.us', 'n.spamtrap.co', 'n.zavio.nl', 'n1nja.org', 'nabuma.com', 'nakedtruth.biz', 'nanonym.ch', 'napalm51.cf', 'napalm51.flu.cc', 'napalm51.ga', 'napalm51.gq', 'napalm51.igg.biz', 'napalm51.ml', 'napalm51.nut.cc', 'napalm51.tk', 'napalm51.usa.cc', 'naturalious.com', 'nctuiem.xyz', 'neibu306.com', 'neibu963.com', 'neko2.net', 'neomailbox.com', 'nepwk.com', 'nervmich.net', 'nervtmich.net', 'netmails.com', 'netmails.net', 'netris.net', 'netzidiot.de', 'neverbox.com', 'newdawnnm.xyz', 'nextstopvalhalla.com', 'nezzart.com', 'nguyenusedcars.com', 'nice-4u.com', 'nie-podam.pl', 'niepodam.pl', 'nike.coms.hk', 'nincsmail.com', 'nincsmail.hu', 'niwl.net', 'nl.szucsati.net', 'nmail.cf', 'nnh.com', 'no-spam.ws', 'noblepioneer.com', 'nobulk.com', 'noclickemail.com', 'nodnor.club', 'nogmailspam.info', 'nomail.cf', 'nomail.ch', 'nomail.ga', 'nomail.pw', 'nomail.xl.cx', 'nomail2me.com', 'nomailthankyou.com', 'nomorespamemails.com', 'nonspam.eu', 'nonspammer.de', 'noref.in', 'norseforce.com', 'northemquest.com', 'nospam.wins.com.br', 'nospam.ze.tc', 'nospam4.us', 'nospamfor.us', 'nospammail.net', 'nospamthanks.info', 'nostrajewellery.xyz', 'nothingtoseehere.ca', 'notmailinator.com', 'notsharingmy.info', 'nowhere.org', 'nowmymail.com', 'ntlhelp.net', 'nubescontrol.com', 'nurfuerspam.de', 'nus.edu.sg', 'nutpa.net', 'nwldx.com', 'ny7.me', 'o.cfo2go.ro', 'o.idigo.org', 'o.muti.ro', 'o.oai.asia', 'o.opendns.ro', 'o.spamtrap.ro', 'o060bgr3qg.com', 'o7i.net', 'objectmail.com', 'obobbo.com', 'obxpestcontrol.com', 'oceancares.xyz', 'odaymail.com', 'odnorazovoe.ru', 'oerpub.org', 'offshore-proxies.net', 'ohdomain.xyz', 'ohioticketpayments.xyz', 'oing.cf', 'olypmall.ru', 'omnievents.org', 'one-time.email', 'onebiginbox.com', 'onelegalplan.com', 'oneoffemail.com', 'oneoffmail.com', 'onewaymail.com', 'onlatedotcom.info', 'online.ms', 'oolus.com', 'oopi.org', 'opayq.com', 'opentrash.com', 'orango.cu.cc', 'ordinaryamerican.net', 'oshietechan.link', 'otherinbox.codupmyspace.com', 'otherinbox.com', 'ourklips.com', 'outlawspam.com', 'ovpn.to', 'owlpic.com', 'p.9q.ro', 'p.k4ds.org', 'p71ce1m.com', 'pagamenti.tk', 'paller.cf', 'pancakemail.com', 'paplease.com', 'parkcrestlakewood.xyz', 'parlimentpetitioner.tk', 'pastebitch.com', 'paulfucksallthebitches.com', 'pcusers.otherinbox.com', 'pencalc.xyz', 'penis.computer', 'pepbot.com', 'peppe.usa.cc', 'pepsi.coms.hk', 'personal-email.ml', 'petrzilka.net', 'pfui.ru', 'photo-impact.eu', 'photomark.net', 'phpbb.uu.gl', 'phus8kajuspa.cu.cc', 'pig.pp.ua', 'pimpedupmyspace.com', 'pingir.com', 'pjjkp.com', 'plexolan.de', 'ploae.com', 'po.bot.nu', 'poczta.onet.pl', 'podam.pl', 'poh.pp.ua', 'pokemail.net', 'polarkingxx.ml', 'politikerclub.de', 'poliusraas.tk', 'polyfaust.com', 'pooae.com', 'poofy.org', 'pookmail.com', 'poopiebutt.club', 'popesodomy.com', 'porco.cf', 'porco.ga', 'porco.gq', 'porco.ml', 'postacin.com', 'pp.ua', 'ppetw.com', 'premium-mail.fr', 'premiumperson.website', 'primabananen.net', 'privacy.net', 'privatdemail.net', 'privy-mail.com', 'privymail.de', 'project-xhabbo.com', 'projectcl.com', 'propscore.com', 'proxymail.eu', 'prs7.xyz', 'prtnx.com', 'prtz.eu', 'psles.com', 'psoxs.com', 'psychedelicwarrior.xyz', 'pumps-fashion.com', 'punkass.com', 'purelogistics.org', 'purple.flu.cc', 'purple.igg.biz', 'purple.nut.cc', 'purple.usa.cc', 'puttanamaiala.tk', 'putthisinyourspamdatabase.com', 'pw.flu.cc', 'pw.igg.biz', 'pw.nut.cc', 'pwp.lv', 'pwrby.com', 'q5vm7pi9.com', 'qafatwallet.com', 'qasti.com', 'qbfree.us', 'qisdo.com', 'qisoa.com', 'qj97r73md7v5.com', 'qs.dp76.com', 'qs2k.com', 'qt1.ddns.net', 'quadrafit.com', 'querydirect.com', 'quickinbox.com', 'quickmail.nl', 'quickreport.it', 'r.yasser.ru', 'r8.porco.cf', 'r8r4p0cb.com', 'radecoratingltd.com', 'radiku.ye.vc', 'raetp9.com', 'rainwaterstudios.org', 'rajeshcon.cf', 'raketenmann.de', 'rarame.club', 'rawhidefc.org', 'rawmails.com', 'rcasd.com', 'rcpt.at', 'rcs7.xyz', 're-gister.com', 'reality-concept.club', 'reallymymail.com', 'realtyalerts.ca', 'receiveee.chickenkiller.com', 'receiveee.com', 'recipeforfailure.com', 'recode.me', 'reconmail.com', 'recursor.net', 'recyclemail.dk', 'reddit.usa.cc', 'redpeanut.com', 'regbypass.com', 'regbypass.comsafe-mail.net', 'regspaces.tk', 'rejectmail.com', 'reliable-mail.com', 'remail.cf', 'remail.ga', 'remote.li', 'reptilegenetics.com', 'resgedvgfed.tk', 'revolvingdoorhoax.org', 'rgphotos.net', 'rhombushorizons.com', 'rhyta.com', 'riamof.club', 'riddermark.de', 'rk9.chickenkiller.com', 'rklips.com', 'rkomo.com', 'rmqkr.net', 'rnailinator.com', 'ronnierage.net', 'rootfest.net', 'rotaniliam.com', 'royal.net', 'rppkn.com', 'rq6668f.com', 'rr-0.cu.cc', 'rr-1.cu.cc', 'rr-2.cu.cc', 'rr-3.cu.cc', 'rtrtr.com', 'rudymail.ml', 'ruffrey.com', 'rumgel.com', 'ruru.be', 'ruu.kr', 'rx.dred.ru', 'rx.qc.to', 's-s.flu.cc', 's.bloq.ro', 's.bungabunga.cf', 's.dextm.ro', 's.proprietativalcea.ro', 's.sa.igg.biz', 's.spamserver.flu.cc', 's.vdig.com', 's00.orangotango.ga', 's0ny.net', 's33db0x.com', 's51zdw001.com', 'sa.igg.biz', 'safe-mail.net', 'safermail.info', 'safersignup.de', 'safetymail.info', 'safetypost.de', 'sandelf.de', 'sasa22.usa.cc', 'sausen.com', 'savelife.ml', 'saynotospams.com', 'scatmail.com', 'scbox.one.pl', 'schachrol.com', 'schafmail.de', 'schrott-email.de', 'sd3.in', 'searzh.com', 'secretemail.de', 'secure-mail.biz', 'secure-mail.cc', 'secured-link.net', 'securehost.com.es', 'selfdestructingmail.com', 'selfdestructingmail.org', 'semut-kecil.com', 'sendfree.org', 'sendingspecialflyers.com', 'sendspamhere.com', 'senseless-entertainment.com', 'servermaps.net', 'services391.com', 'sexical.com', 'sezet.com', 'sfmail.top', 'sharedmailbox.org', 'sharklasers.com', 'shhmail.com', 'shhuut.org', 'shieldedmail.com', 'shieldemail.com', 'shiftmail.com', 'shitaway.cf', 'shitaway.cu.cc', 'shitaway.flu.cc', 'shitaway.ga', 'shitaway.gq', 'shitaway.igg.biz', 'shitaway.ml', 'shitaway.nut.cc', 'shitaway.tk', 'shitaway.usa.cc', 'shitmail.de', 'shitmail.me', 'shitmail.org', 'shitware.nl', 'shmeriously.com', 'shockinmytown.cu.cc', 'shonky.info', 'shortmail.net', 'shotmail.ru', 'showslow.de', 'shuffle.email', 'shurs.xyz', 'siliwangi.ga', 'sinda.club', 'sinnlos-mail.de', 'siteposter.net', 'skeefmail.com', 'skrx.tk', 'sky-mail.ga', 'slapsfromlastnight.com', 'slaskpost.se', 'slave-auctions.net', 'slippery.email', 'slipry.net', 'slopsbox.com', 'slothmail.net', 'slowfoodfoothills.xyz', 'slushmail.com', 'slutty.horse', 'smallker.tk', 'smap.4nmv.ru', 'smashmail.de', 'smellfear.com', 'smellrear.com', 'smsforum.ro', 'smwg.info', 'snakemail.com', 'sneakemail.com', 'sneakmail.de', 'snkmail.com', 'social-mailer.tk', 'sofimail.com', 'sofort-mail.de', 'softpls.asia', 'sogetthis.com', 'sohu.com', 'soisz.com', 'solar-impact.pro', 'solvemail.info', 'soodomail.com', 'soodonims.com', 'sosmanga.com', 'spa.com', 'spaereplease.com', 'spam-a.porco.cf', 'spam-b.porco.cf', 'spam-be-gone.com', 'spam.2012-2016.ru', 'spam.la', 'spam.orangotango.ml', 'spam.su', 'spam4.me', 'spamail.de', 'spamarrest.com', 'spamavert.com', 'spambob.com', 'spambob.net', 'spambob.org', 'spambog.com', 'spambog.de', 'spambog.net', 'spambog.ru', 'spambooger.com', 'spambox.info', 'spambox.irishspringrealty.com', 'spambox.us', 'spamcannon.com', 'spamcannon.net', 'spamcero.com', 'spamcon.org', 'spamcorptastic.com', 'spamcowboy.com', 'spamcowboy.net', 'spamcowboy.org', 'spamday.com', 'spamdecoy.net', 'spamex.com', 'spamfighter.cf', 'spamfighter.ga', 'spamfighter.gq', 'spamfighter.ml', 'spamfighter.tk', 'spamfree.eu', 'spamfree24.com', 'spamfree24.de', 'spamfree24.eu', 'spamfree24.info', 'spamfree24.net', 'spamfree24.org', 'spamgoes.in', 'spamgourmet.com', 'spamgourmet.net', 'spamgourmet.org', 'spamherelots.com', 'spamhereplease.com', 'spamhole.com', 'spamify.com', 'spaminator.de', 'spamkill.info', 'spaml.com', 'spaml.de', 'spammotel.com', 'spamobox.com', 'spamoff.de', 'spamsalad.in', 'spamserver.cf', 'spamserver.flu.cc', 'spamserver.ml', 'spamserver.tk', 'spamslicer.com', 'spamspot.com', 'spamstack.net', 'spamthis.co.uk', 'spamthisplease.com', 'spamtrail.com', 'spamtroll.net', 'spamwc.cf', 'spamwc.ga', 'spamwc.gq', 'spamwc.ml', 'speed.1s.fr', 'sperma.cf', 'spikio.com', 'spoofmail.de', 'spybox.de', 'squizzy.de', 'squizzy.net', 'sr.ro.lt', 'sraka.xyz', 'sroff.com', 'ss.undo.it', 'ssgjylc1013.com', 'ssoia.com', 'startkeys.com', 'statdvr.com', 'stathost.net', 'steamprank.com', 'stexsy.com', 'stg.malibucoding.com', 'stinkefinger.net', 'stop-my-spam.cf', 'stop-my-spam.com', 'stop-my-spam.ga', 'stop-my-spam.ml', 'stop-my-spam.pp.ua', 'stop-my-spam.tk', 'stpetersandstpauls.xyz', 'streamfly.biz', 'streamfly.link', 'streetwisemail.com', 'stromox.com', 'studiopolka.tokyo', 'stuffmail.de', 'suburbanthug.com', 'sudolife.me', 'sudolife.net', 'sudomail.biz', 'sudomail.com', 'sudomail.net', 'sudoverse.com', 'sudoverse.net', 'sudoweb.net', 'sudoworld.com', 'sudoworld.net', 'super-auswahl.de', 'supergreatmail.com', 'supermailer.jp', 'superrito.com', 'superstachel.de', 'suremail.info', 'surveyrnonkey.net', 'susi.ml', 'svk.jp', 'sweetxxx.de', 'swift10minutemail.com', 'sxylc113.com', 'szerz.com', 't.psh.me', 't24e4p7.com', 't3t97d1d.com', 'tafmail.com', 'taglead.com', 'tagmymedia.com', 'tagyourself.com', 'takedowns.org', 'talkinator.com', 'tanukis.org', 'taosjw.com', 'tapchicuoihoi.com', 'tarzan.usa.cc', 'tarzanmail.cf', 'tarzanmail.ml', 'taskforcetech.com', 'tdf-illustration.com', 'teamspeak3.ga', 'teewars.org', 'teleosaurs.xyz', 'teleworm.com', 'teleworm.us', 'temp-mail.com', 'temp-mail.de', 'temp-mail.org', 'temp-mail.ru', 'temp.bartdevos.be', 'temp.emeraldwebmail.com', 'temp.headstrong.de', 'temp.mail.y59.jp', 'tempail.com', 'tempalias.com', 'tempe-mail.com', 'tempemail.biz', 'tempemail.co.za', 'tempemail.com', 'tempemail.net', 'tempinbox.co.uk', 'tempinbox.com', 'tempmail.co', 'tempmail.de', 'tempmail.eu', 'tempmail.it', 'tempmail.pro', 'tempmail.us', 'tempmail2.com', 'tempmaildemo.com', 'tempmailer.com', 'tempmailer.de', 'tempomail.fr', 'temporarily.de', 'temporarioemail.com.br', 'temporaryemail.net', 'temporaryemail.us', 'temporaryforwarding.com', 'temporaryinbox.com', 'temporarymailaddress.com', 'tempsky.com', 'tempthe.net', 'tempymail.com', 'testudine.com', 'thanksnospam.info', 'thankyou2010.com', 'thc.st', 'theaperturelabs.com', 'theaperturescience.com', 'theaviors.com', 'thebearshark.com', 'thecloudindex.com', 'thelimestones.com', 'thereddoors.online', 'thespawningpool.com', 'thietbivanphong.asia', 'thisisnotmyrealemail.com', 'thismail.net', 'thraml.com', 'thrma.com', 'throam.com', 'thrott.com', 'throwam.com', 'throwawayemailaddress.com', 'throwawaymail.com', 'throya.com', 'thxmate.com', 'tilien.com', 'timekr.xyz', 'tittbit.in', 'tizi.com', 'tkmy88m.com', 'tlpn.org', 'tm.tosunkaya.com', 'tmail.ws', 'tmailinator.com', 'tmpjr.me', 'tntitans.club', 'toddsbighug.com', 'toiea.com', 'tokuriders.club', 'tonymanso.com', 'toomail.biz', 'toon.ml', 'top1mail.ru', 'top1post.ru', 'top9appz.info', 'topofertasdehoy.com', 'topranklist.de', 'toprumours.com', 'totesmail.com', 'tp-qa-mail.com', 'tradermail.info', 'tralalajos.ga', 'tralalajos.gq', 'tralalajos.ml', 'tralalajos.tk', 'tranceversal.com', 'trash-amil.com', 'trash-mail.at', 'trash-mail.cf', 'trash-mail.com', 'trash-mail.de', 'trash-mail.ga', 'trash-mail.gq', 'trash-mail.ml', 'trash-mail.tk', 'trash-me.com', 'trash2009.com', 'trash2010.com', 'trash2011.com', 'trashcanmail.com', 'trashdevil.com', 'trashdevil.de', 'trashemail.de', 'trashmail.at', 'trashmail.com', 'trashmail.de', 'trashmail.gq', 'trashmail.me', 'trashmail.net', 'trashmail.org', 'trashmail.ws', 'trashmailer.com', 'trashymail.com', 'trashymail.net', 'trayna.com', 'trbvm.com', 'trbvn.com', 'trbvo.com', 'trebusinde.cf', 'trebusinde.ml', 'trendingtopic.cl', 'trialmail.de', 'trickmail.net', 'trillianpro.com', 'trump.flu.cc', 'trump.igg.biz', 'trungtamtoeic.com', 'tryalert.com', 'tucumcaritonite.com', 'tug.minecraftrabbithole.com', 'turoid.com', 'turual.com', 'tvchd.com', 'tverya.com', 'twinmail.de', 'twkly.ml', 'twoweirdtricks.com', 'txt7e99.com', 'txtadvertise.com', 'ty.ceed.se', 'tyldd.com', 'u.0u.ro', 'u.10x.es', 'u.2sea.org', 'u.900k.es', 'u.civvic.ro', 'u.dmarc.ro', 'u.labo.ch', 'u.qvap.ru', 'u14269.ml', 'u6lvty2.com', 'ua3jx7n0w3.com', 'uacro.com', 'ubismail.net', 'ucupdong.ml', 'ufacturing.com', 'ufgqgrid.xyz', 'uggsrock.com', 'uhhu.ru', 'uk.flu.cc', 'uk.igg.biz', 'uk.nut.cc', 'umail.net', 'unimark.org', 'unmail.ru', 'upliftnow.com', 'uplipht.com', 'urbanchickencoop.com', 'urfey.com', 'uroid.com', 'us.af', 'used-product.fr', 'username.e4ward.com', 'uwork4.us', 'ux.dob.jp', 'ux.uk.to', 'uz6tgwk.com', 'v.0v.ro', 'v.jsonp.ro', 'vaasfc4.tk', 'valemail.net', 'valhalladev.com', 'vanacken.xyz', 'venompen.com', 'verdejo.com', 'veryrealemail.com', 'vfemail.net', 'vickaentb.tk', 'vidchart.com', 'viditag.com', 'viewcastmedia.com', 'viewcastmedia.net', 'viewcastmedia.org', 'vikingsonly.com', 'vinernet.com', 'viralplays.com', 'viroleni.cu.cc', 'visa.coms.hk', 'vixletdev.com', 'vkcode.ru', 'vmani.com', 'vmpanda.com', 'vncoders.net', 'vomoto.com', 'votiputox.org', 'vp.ycare.de', 'vpn.st', 'vpn33.top', 'vps30.com', 'vps911.net', 'vpsorg.pro', 'vpsorg.top', 'vs904a6.com', 'vsimcard.com', 'vssms.com', 'vubby.com', 'vzlom4ik.tk', 'w.0w.ro', 'w22fe21.com', 'w4i3em6r.com', 'w918bsq.com', 'w9f.de', 'w9y9640c.com', 'walala.org', 'walkmail.net', 'walkmail.ru', 'wasd.dropmail.me', 'wasteland.rfc822.org', 'wazabi.club', 'wbml.net', 'we.qq.my', 'web-contact.info', 'web-emailbox.eu', 'web-ideal.fr', 'web-mail.pp.ua', 'web.discard-email.cf', 'webcontact-france.eu', 'webemail.me', 'webm4il.info', 'webtrip.ch', 'webuser.in', 'wee.my', 'wefjo.grn.cc', 'weg-werf-email.de', 'wegwerf-email-addressen.de', 'wegwerf-emails.de', 'wegwerfadresse.de', 'wegwerfemail.com', 'wegwerfemail.de', 'wegwerfmail.de', 'wegwerfmail.info', 'wegwerfmail.net', 'wegwerfmail.org', 'wegwerpmailadres.nl', 'wetrainbayarea.com', 'wetrainbayarea.org', 'wfgdfhj.tk', 'wg0.com', 'wh4f.org', 'whatiaas.com', 'whatifanalytics.com', 'whatpaas.com', 'whatsaas.com', 'whopy.com', 'whtjddn.33mail.com', 'whyspam.me', 'wibblesmith.com', 'wickmail.net', 'wierie.tk', 'wiki.8191.at', 'wilemail.com', 'willhackforfood.biz', 'willselfdestruct.com', 'wimsg.com', 'winemaven.info', 'wishan.net', 'wiz2.site', 'wmail.cf', 'wolfmission.com', 'wollan.info', 'worldspace.link', 'wovz.cu.cc', 'wr.moeri.org', 'wr9v6at7.com', 'wronghead.com', 'wt2.orangotango.cf', 'wuzup.net', 'wuzupmail.net', 'www.bccto.me', 'www.e4ward.com', 'www.gishpuppy.com', 'www.mailinator.com', 'www.redpeanut.com', 'wwwnew.eu', 'wyvernia.net', 'x.fackme.gq', 'x.ip6.li', 'x1x22716.com', 'x24.com', 'x4y.club', 'x5a9m8ugq.com', 'x8h8x941l.com', 'xagloo.com', 'xcompress.com', 'xemaps.com', 'xents.com', 'xing886.uu.gl', 'xjoi.com', 'xlgaokao.com', 'xmaily.com', 'xn--9kq967o.com', 'xost.us', 'xoxox.cc', 'xoxy.net', 'xwaretech.info', 'xwaretech.net', 'xww.ro', 'xxqx3802.com', 'xy9ce.tk', 'xyzfree.net', 'xzsok.com', 'yandere.cu.cc', 'yapped.net', 'yaqp.com', 'yeah.net', 'yellow.flu.cc', 'yellow.hotakama.tk', 'yellow.igg.biz', 'yentzscholarship.xyz', 'yep.it', 'yert.ye.vc', 'ygroupvideoarchive.com', 'ygroupvideoarchive.net', 'ynmrealty.com', 'yogamaven.com', 'yomail.info', 'yopmail.com', 'yopmail.fr', 'yopmail.fr.nf', 'yopmail.gq', 'yopmail.net', 'yopmail.pp.ua', 'yordanmail.cf', 'you-spam.com', 'youcankeepit.info', 'youmail.ga', 'yourdomain.com', 'yourewronghereswhy.com', 'yourlifesucks.cu.cc', 'yourlms.biz', 'ypmail.webarnak.fr.eu.org', 'yroid.com', 'yui.it', 'yuurok.com', 'yy-h2.nut.cc', 'yyj295r31.com', 'yyt.resolution4print.info', 'z1p.biz', 'z7az14m.com', 'za.com', 'zain.site', 'zainmax.net', 'zaktouni.fr', 'zane.rocks', 'zasod.com', 'zasve.info', 'ze.gally.jp', 'zehnminuten.de', 'zehnminutenmail.de', 'zepp.dk', 'zeta-telecom.com', 'zetmail.com', 'zhcne.com', 'zhouemail.510520.org', 'zippymail.info', 'zoaxe.com', 'zoemail.com', 'zoemail.net', 'zoemail.org', 'zombie-hive.com', 'zombo.flu.cc', 'zombo.igg.biz', 'zombo.nut.cc', 'zomg.info', 'zumpul.com', 'zxcv.com', 'zxcvbnm.com', 'zxcxc.com', 'zzz.com', 'qq.com', 'qq.co', 'bk.ru', 'inbox.ru', 'backlinkfaq.xyz' ); $domain_name = substr(strrchr($user_email, "@"), 1); if (in_array($domain_name, $dea_array)) { return true; } else { return false; } } }
  4. Hi and welcome to the forum. You would need mc more then just roles. There are several marketplace modules. here are few https://addons.prestashop.com/en/marketplace-creation/51936-agile-multiple-seller-17.html https://addons.prestashop.com/en/marketplace-creation/18656-ja-marketplace.html https://addons.prestashop.com/en/marketplace-creation/8057-advanced-multi-vendor-marketplace.html Those are base modules with some functionality but with each there are few additional modules depending of your needs. So do check demos and think complete workflow you would need. Good luck.
  5. My mistake, that change is done on your server. But depending on control panel you are using you can probably change file there too. There should be some File Manager section where you can access files and edit them. Alternative is some app like Filezilla and text editor of your choosing but think it is fine for one change to use File Manager in control panel. Also note, after you save change on file you may also need to clear PrestaShop cache. That is in Advanced Parameters > Performance on right hand site near top. Let me know if you have any question.
  6. Hi and welcome to the forum. Issue is that those two products are out of stock and with that they have extra element that increases height of product list element. So products below got pushed down. One of solutions is to add min-height to product description block and leave space for notify button if needed. That way all will have same height. Code should be in modules/mrshopmailnotifications/css/mrshopmailnotifications.css line 56 #products .product-description, .featured-products .product-description, .product-accessories .product-description, .product-miniature .product-description { height: auto; padding-bottom: 7px; min-height: 115px; // new code } You do get bit of white space for other products but I do not think it is too much https://nimb.ws/PACr9x
  7. Pozdrav, Pogladaj u Valute za dinar da li ti je broj decimala jednak 0. Sad sam proverio i to izgleda podrazumevano kada se doda paket za lokalizaciju. Potrebno je naravno da bude 2.
  8. Hey @Billy Think you just need closing } before "public static function getTreePath" and another one at very end to match class one. <?php /** * Copyright since 2007 PrestaShop SA and Contributors * PrestaShop is an International Registered Trademark & Property of PrestaShop SA * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License 3.0 (AFL-3.0) * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/AFL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to https://devdocs.prestashop.com/ for more information. * * @author PrestaShop SA and Contributors <[email protected]> * @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) */ if (!defined('_PS_VERSION_')) { exit; } use PrestaShop\PrestaShop\Core\Module\WidgetInterface; class Ps_CategoryTree extends Module implements WidgetInterface { /** * @var string Name of the module running on PS 1.6.x. Used for data migration. */ const PS_16_EQUIVALENT_MODULE = 'blockcategories'; public function __construct() { $this->name = 'ps_categorytree'; $this->tab = 'front_office_features'; $this->version = '2.0.2'; $this->author = 'PrestaShop'; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->getTranslator()->trans('Category tree links', [], 'Modules.Categorytree.Admin'); $this->description = $this->getTranslator()->trans('Help navigation on your store, show your visitors current category and subcategories.', [], 'Modules.Categorytree.Admin'); $this->ps_versions_compliancy = ['min' => '1.7.1.0', 'max' => _PS_VERSION_]; } public function install() { // If the PS 1.6 module wasn't here, set the default values if (!$this->uninstallPrestaShop16Module()) { Configuration::updateValue('BLOCK_CATEG_MAX_DEPTH', 4); Configuration::updateValue('BLOCK_CATEG_ROOT_CATEGORY', 1); } return parent::install() && $this->registerHook('displayLeftColumn') ; } /** * Migrate data from 1.6 equivalent module (if applicable), then uninstall */ public function uninstallPrestaShop16Module() { if (!Module::isInstalled(self::PS_16_EQUIVALENT_MODULE)) { return false; } $oldModule = Module::getInstanceByName(self::PS_16_EQUIVALENT_MODULE); if ($oldModule) { // This closure calls the parent class to prevent data to be erased // It allows the new module to be configured without migration $parentUninstallClosure = function () { return parent::uninstall(); }; $parentUninstallClosure = $parentUninstallClosure->bindTo($oldModule, get_class($oldModule)); $parentUninstallClosure(); } return true; } public function uninstall() { if (!parent::uninstall() || !Configuration::deleteByName('BLOCK_CATEG_MAX_DEPTH') || !Configuration::deleteByName('BLOCK_CATEG_ROOT_CATEGORY')) { return false; } return true; } public function getContent() { $output = ''; if (Tools::isSubmit('submitBlockCategories')) { $maxDepth = (int) (Tools::getValue('BLOCK_CATEG_MAX_DEPTH')); if ($maxDepth < 0) { $output .= $this->displayError($this->getTranslator()->trans('Maximum depth: Invalid number.', [], 'Admin.Notifications.Error')); } else { Configuration::updateValue('BLOCK_CATEG_MAX_DEPTH', (int) $maxDepth); Configuration::updateValue('BLOCK_CATEG_SORT_WAY', Tools::getValue('BLOCK_CATEG_SORT_WAY')); Configuration::updateValue('BLOCK_CATEG_SORT', Tools::getValue('BLOCK_CATEG_SORT')); Configuration::updateValue('BLOCK_CATEG_ROOT_CATEGORY', Tools::getValue('BLOCK_CATEG_ROOT_CATEGORY')); //$this->_clearBlockcategoriesCache(); Tools::redirectAdmin(AdminController::$currentIndex . '&configure=' . $this->name . '&token=' . Tools::getAdminTokenLite('AdminModules') . '&conf=6'); } } return $output . $this->renderForm(); } private function getCategories($category) { $range = ''; $maxdepth = Configuration::get('BLOCK_CATEG_MAX_DEPTH'); if (Validate::isLoadedObject($category)) { if ($maxdepth > 0) { $maxdepth += $category->level_depth; } $range = 'AND nleft >= ' . (int) $category->nleft . ' AND nright <= ' . (int) $category->nright; } $resultIds = []; $resultParents = []; $result = Db::getInstance((bool) _PS_USE_SQL_SLAVE_)->executeS(' SELECT c.id_parent, c.id_category, cl.name, cl.description, cl.link_rewrite FROM `' . _DB_PREFIX_ . 'category` c INNER JOIN `' . _DB_PREFIX_ . 'category_lang` cl ON (c.`id_category` = cl.`id_category` AND cl.`id_lang` = ' . (int) $this->context->language->id . Shop::addSqlRestrictionOnLang('cl') . ') INNER JOIN `' . _DB_PREFIX_ . 'category_shop` cs ON (cs.`id_category` = c.`id_category` AND cs.`id_shop` = ' . (int) $this->context->shop->id . ') WHERE (c.`active` = 1 OR c.`id_category` = ' . (int) Configuration::get('PS_HOME_CATEGORY') . ') AND c.`id_category` != ' . (int) Configuration::get('PS_ROOT_CATEGORY') . ' ' . ((int) $maxdepth != 0 ? ' AND `level_depth` <= ' . (int) $maxdepth : '') . ' ' . $range . ' AND c.id_category IN ( SELECT id_category FROM `' . _DB_PREFIX_ . 'category_group` WHERE `id_group` IN (' . pSQL(implode(', ', Customer::getGroupsStatic((int) $this->context->customer->id))) . ') ) ORDER BY `level_depth` ASC, ' . (Configuration::get('BLOCK_CATEG_SORT') ? 'cl.`name`' : 'cs.`position`') . ' ' . (Configuration::get('BLOCK_CATEG_SORT_WAY') ? 'DESC' : 'ASC')); foreach ($result as &$row) { $resultParents[$row['id_parent']][] = &$row; $resultIds[$row['id_category']] = &$row; } return $this->getTree($resultParents, $resultIds, $maxdepth, ($category ? $category->id : null)); } public function getTree($resultParents, $resultIds, $maxDepth, $id_category = null, $currentDepth = 0) { if (is_null($id_category)) { $id_category = $this->context->shop->getCategory(); } $children = []; if (isset($resultParents[$id_category]) && count($resultParents[$id_category]) && ($maxDepth == 0 || $currentDepth < $maxDepth)) { foreach ($resultParents[$id_category] as $subcat) { $children[] = $this->getTree($resultParents, $resultIds, $maxDepth, $subcat['id_category'], $currentDepth + 1); } } if (isset($resultIds[$id_category])) { $link = $this->context->link->getCategoryLink($id_category, $resultIds[$id_category]['link_rewrite']); $name = $resultIds[$id_category]['name']; $desc = $resultIds[$id_category]['description']; } else { $link = $name = $desc = ''; } return [ 'id' => $id_category, 'link' => $link, 'name' => $name, 'desc' => $desc, 'children' => $children, ]; } public function renderForm() { $fields_form = [ 'form' => [ 'legend' => [ 'title' => $this->getTranslator()->trans('Settings', [], 'Admin.Global'), 'icon' => 'icon-cogs', ], 'input' => [ [ 'type' => 'radio', 'label' => $this->getTranslator()->trans('Category root', [], 'Modules.Categorytree.Admin'), 'name' => 'BLOCK_CATEG_ROOT_CATEGORY', 'hint' => $this->getTranslator()->trans('Select which category is displayed in the block. The current category is the one the visitor is currently browsing.', [], 'Modules.Categorytree.Admin'), 'values' => [ [ 'id' => 'home', 'value' => 0, 'label' => $this->getTranslator()->trans('Home category', [], 'Modules.Categorytree.Admin'), ], [ 'id' => 'current', 'value' => 1, 'label' => $this->getTranslator()->trans('Current category', [], 'Modules.Categorytree.Admin'), ], [ 'id' => 'parent', 'value' => 2, 'label' => $this->getTranslator()->trans('Parent category', [], 'Modules.Categorytree.Admin'), ], [ 'id' => 'current_parent', 'value' => 3, 'label' => $this->getTranslator()->trans('Current category, unless it has no subcategories, in which case the parent category of the current category is used', [], 'Modules.Categorytree.Admin'), ], ], ], [ 'type' => 'text', 'label' => $this->getTranslator()->trans('Maximum depth', [], 'Modules.Categorytree.Admin'), 'name' => 'BLOCK_CATEG_MAX_DEPTH', 'desc' => $this->getTranslator()->trans('Set the maximum depth of category sublevels displayed in this block (0 = infinite).', [], 'Modules.Categorytree.Admin'), ], [ 'type' => 'radio', 'label' => $this->getTranslator()->trans('Sort', [], 'Admin.Actions'), 'name' => 'BLOCK_CATEG_SORT', 'values' => [ [ 'id' => 'name', 'value' => 1, 'label' => $this->getTranslator()->trans('By name', [], 'Admin.Global'), ], [ 'id' => 'position', 'value' => 0, 'label' => $this->getTranslator()->trans('By position', [], 'Admin.Global'), ], ], ], [ 'type' => 'radio', 'label' => $this->getTranslator()->trans('Sort order', [], 'Admin.Actions'), 'name' => 'BLOCK_CATEG_SORT_WAY', 'values' => [ [ 'id' => 'name', 'value' => 1, 'label' => $this->getTranslator()->trans('Descending', [], 'Admin.Global'), ], [ 'id' => 'position', 'value' => 0, 'label' => $this->getTranslator()->trans('Ascending', [], 'Admin.Global'), ], ], ], ], 'submit' => [ 'title' => $this->getTranslator()->trans('Save', [], 'Admin.Actions'), ], ], ]; $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $helper->submit_action = 'submitBlockCategories'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false) . '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = [ 'fields_value' => $this->getConfigFieldsValues(), ]; return $helper->generateForm([$fields_form]); } public function getConfigFieldsValues() { return [ 'BLOCK_CATEG_MAX_DEPTH' => Tools::getValue('BLOCK_CATEG_MAX_DEPTH', Configuration::get('BLOCK_CATEG_MAX_DEPTH')), 'BLOCK_CATEG_SORT_WAY' => Tools::getValue('BLOCK_CATEG_SORT_WAY', Configuration::get('BLOCK_CATEG_SORT_WAY')), 'BLOCK_CATEG_SORT' => Tools::getValue('BLOCK_CATEG_SORT', Configuration::get('BLOCK_CATEG_SORT')), 'BLOCK_CATEG_ROOT_CATEGORY' => Tools::getValue('BLOCK_CATEG_ROOT_CATEGORY', Configuration::get('BLOCK_CATEG_ROOT_CATEGORY')), ]; } public function setLastVisitedCategory() { if (method_exists($this->context->controller, 'getCategory') && ($category = $this->context->controller->getCategory())) { $this->context->cookie->last_visited_category = $category->id; } elseif (method_exists($this->context->controller, 'getProduct') && ($product = $this->context->controller->getProduct())) { if (!isset($this->context->cookie->last_visited_category) || !Product::idIsOnCategoryId($product->id, [['id_category' => $this->context->cookie->last_visited_category]]) || !Category::inShopStatic($this->context->cookie->last_visited_category, $this->context->shop) ) { $this->context->cookie->last_visited_category = (int) $product->id_category_default; } } } public function renderWidget($hookName = null, array $configuration = []) { $this->setLastVisitedCategory(); $this->smarty->assign($this->getWidgetVariables($hookName, $configuration)); return $this->fetch('module:ps_categorytree/views/templates/hook/ps_categorytree.tpl'); } public function getWidgetVariables($hookName = null, array $configuration = []) { $category = new Category((int) Configuration::get('PS_HOME_CATEGORY'), $this->context->language->id); if (Configuration::get('BLOCK_CATEG_ROOT_CATEGORY') && isset($this->context->cookie->last_visited_category) && $this->context->cookie->last_visited_category) { $category = new Category($this->context->cookie->last_visited_category, $this->context->language->id); if (Configuration::get('BLOCK_CATEG_ROOT_CATEGORY') == 2 && !$category->is_root_category && $category->id_parent) { $category = new Category($category->id_parent, $this->context->language->id); } elseif (Configuration::get('BLOCK_CATEG_ROOT_CATEGORY') == 3 && !$category->is_root_category && !$category->getSubCategories($category->id, true)) { $category = new Category($category->id_parent, $this->context->language->id); } } $categories = $this->getCategories($category); return [ 'categories' => $categories, 'c_tree_path' => isset($categories['children']) && count($categories['children']) && method_exists($this->context->controller, 'getCategory') && ($curr_category = $this->context->controller->getCategory()) ? self::getTreePath($categories['children'], $curr_category->id) : false, 'currentCategory' => $category->id, ] ; } public static function getTreePath($categories, $id, array $path = []) { foreach ($categories as $cate) { if ($cate['id'] == $id){ if(is_array($cate['children']) && count($cate['children'])) $path[] = $cate['id']; return $path; } $path[] = $cate['id']; if(is_array($cate['children']) && count($cate['children'])) { if ($result = self::getTreePath($cate['children'], $id, $path)) return $result; } array_pop($path); } return false; } } Not tested but should work.
  9. Yes seams it is PHP version. So what is your PHP version and what is your PrestaShop version ? Check this graph https://devdocs.prestashop.com/1.7/basics/installation/system-requirements/#php-requirements and see if there is an issue.
  10. Hi Paul Welcome to the forum. Sorry to hear your site went down and not active for months. There could be few issues but for start you can enable debug mode One of cause could be that your hosting changed PHP version and depending on your PrestaShop version it may be not supported. If you need paid technical support check official PrestaShop agencies https://www.prestashop.com/en/experts or post a job offer in separate part of forum https://www.prestashop.com/forums/forum/235-job-offers/ . Note that forum main purpose is to help in these cases so depending on error you get after debug mode members could help you out and solve issue.
  11. Hi and welcome to the forum. Please check this link https://devdocs.prestashop.com/1.7/basics/installation/system-requirements/#php-compatibility-chart where you can see that PHP 8 is not yet supported. But you should be fine with 7.3 or 7.4.
  12. Thank you for sharing link. Your logo is more vertical oriented and you see there is lot of empty space below menu. Side-note, your log dimensions are huge, though image file is not that heavy. But you can reduce image by 50% at least. Now for mobile it is small because Classic theme is made for horizontal logos that fill nicely that space on mobile. And in theme styles height is limited to 50px. So that is reason why your logo is small. To adjust that you would have to change bit of styles. You can do that by editing custom.css in theme/assets folder and adding this code. /* * Custom code goes here. * A template should always ship with an empty custom.css */ @media (max-width: 767px) { #header .header-nav .top-logo { text-align: center; } #header .header-nav .top-logo a img { max-height: 170px; } } That should display image similar like in attachment. So centered and 170px. If you do not see changes clear PrestaShop and browser cache. Again note it takes lot of space, and pushes content down. So think maybe of alternative logo where text could be on side. Also there are lot of themes or layouts that do work with bigger vertical logos. Mostly centered and menu and links around it.
  13. Hi @danielsaar If I am not mistaken all code outside of block tag will be disregard. So think you would need something like {extends file='catalog/listing/product-list.tpl'} {block name='new_hello_world_block'} HALLO WORLD {/block} {block name='product_list_header'} {include file='catalog/_partials/category-header.tpl' listing=$listing category=$category} {/block} For documentation, it offers two ways, like titles says redefining whole template( that is code above). That way you can order blocks way you want. And other is extending same template with code like this maybe {extends file='parent:catalog/listing/category.tpl'} {block name='product_list_header'} HALLO WORLD {include file='catalog/_partials/category-header.tpl' listing=$listing category=$category} {/block} or also this may work but would add block after all other blocks in template {extends file='parent:catalog/listing/category.tpl'} {block name='new_hello_world_block'} HALLO WORLD {/block} This is all not tested but you can try and play with it.
  14. Hi Arthur Welcome to the forum and to PrestaShop. Nice to see you got hired even you are new to PrestaShop. About theme, do your bosses know how new theme should look like? Some requirements, or design ready? But in general, you will not loose data, so products, categories and most of modules will be there. New theme, in most cases come with lot of modules that are just part of theme, so you might get some of old theme modules changed/removed. You should backup and test, on some developer server. Parent/child theme is just in case you make slight changes to theme.
  15. Hi Marilyn I am assuming that your logo may be small because of layout that your theme have on mobile. Can you provide link or screen-shot, that would be helpful. But in general you can add bit of CSS, in your theme, to fix logo size. There are media queries so styles can be applied just for mobile. There is no setting to change logo size just on mobile. But that also depends on theme you are using.
  16. Hi @Crezzur First, thank you for your contribution. This is really nice tool. But I think part that can confuse people is on this line // Check if the client use the correct crezzur_token, url to use: www.yourstore.com/myshoprepair.php?secure_key=b48a877f50d20963eaa2ccab09651c Even you explained few times here, in the file itself, URL is with secure_key and it should be crezzur_token.
  17. Depending on your PrestaShop version and theme you could hide quantity field in few fays. In 1.7 if you inspect code you should see that body element have lot of different classes and there is one for product. For example in default theme you could hide quantity field and label with : body.product-hummingbird-printed-sweater .product-quantity .qty { display: none; } body.product-hummingbird-printed-sweater .product-add-to-cart .control-label { display: none; } Other ways are to edit product template add condition if, and compare with product id. Lastly you can define specific template for single product where you can remove parts you do not need https://devdocs.prestashop.com/1.7/themes/reference/templates/templates-layouts/#specific-templates
  18. Think simplest solution is to use attributes and combinations. So options will be: Print: single-sided double-sided Pack: 100 200 500 And assign prices like you mention in beginning.
  19. Ah OK so you do not want to give customers chance to buy 55 cards or 150. If you just want to offer in 100, 200 or 500 maybe just to make combination ? I first thought you want to sell from 0-100 for 0.20 and so on.
  20. Check official documentation http://doc.prestashop.com/display/PS17/Managing+Products#ManagingProducts-Specificprices:ManagingDiscounts Think you should check Starting at [] unit. so for each specific price that can be 200, then 500.
  21. Maybe style is added through JavaScript, but in general you can override inline style with #wrapper { display:block !important; } Not the greatest practice but if you need it try it out.
  22. Try to got to Translations and choose Theme translation for classic theme and your language. Then in Shop > Forms > Help you should find the line you want to translate. https://nimb.ws/JLWKiC
  23. @toimata Please be careful when posting your credentials online and especially so publicly. I have hidden your post, but you can sent them by Personal Message if you want. Do consider creating backup of your site before and changing password after.
  24. Try to scan file you got with other anti-virus software or online links mentioned. But like I said it is most likely false positive and PrestaShop might make official statement later. Also file for sure did not change but "virus" changing name is just a sign that Windows Defender is not sure what it is.
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More