GIF89a=( õ' 7IAXKgNgYvYx\%wh…hŽth%ˆs%—x¨}9®Œ©€&©‰%¶†(¹–.¹5·œD¹&Çš)ÇŸ5ǘ;Í£*È¡&Õ²)ׯ7×µ<Ñ»4ï°3ø‘HÖ§KͯT÷¨Yÿšqÿ»qÿÔFØ !ù ' !ÿ NETSCAPE2.0 , =( þÀ“pH,È¤rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§gª«ªE¯°¨¬ª±²Œ¹º¹E¾­”´ÂB¶¯ §Åȸ»ÑD¾¿Á•ÄÅ®° ÝH¾ÒLÀÆDÙ«D¶BÝïðÀ¾DÑÑÔTÌÍíH òGö¨A RÎڐ |¥ ٭&ºìE8œ¹kGÔAÞpx­a¶­ã R2XB®åE8I€Õ6Xî:vT)äžþÀq¦è³¥ì仕F~%xñ  4#ZÔ‰O|-4Bs‘X:= QÉ œš lºÒyXJŠGȦ|s hÏíK–3l7·B|¥$'7Jީܪ‰‡àá”Dæn=Pƒ ¤Òëí‰`䌨ljóá¯Éüv>á–Á¼5 ½.69ûϸd«­ºÀûnlv©‹ªîf{¬ÜãPbŸ  l5‘ޝpß ´ ˜3aÅùäI«O’ý·‘áÞ‡˜¾Æ‚ÙÏiÇÿ‹Àƒ #öó)pâš Þ½ ‘Ý{ó)vmÞü%D~ 6f s}ŃƒDØW Eþ`‡þ À…L8xá†ç˜{)x`X/> Ì}mø‚–RØ‘*|`D=‚Ø_ ^ð5 !_…'aä“OÚ—7âcð`D”Cx`ÝÂ¥ä‹éY¹—F¼¤¥Š?¡Õ™ n@`} lď’ÄÉ@4>ñd œ à‘vÒxNÃ×™@žd=ˆgsžG±æ ´²æud &p8Qñ)ˆ«lXD©øÜéAžHìySun jª×k*D¤LH] †¦§C™Jä–´Xb~ʪwStŽ6K,°£qÁœ:9ت:¨þªl¨@¡`‚ûÚ ».Û¬¯t‹ÆSÉ[:°=Š‹„‘Nåû”Ìî{¿ÂA ‡Rà›ÀÙ6úë°Ÿð0Ä_ ½;ÃϱîÉì^ÇÛÇ#Ëë¼ôº!±Ä˜íUîÅÇ;0L1óÁµö«p% AÀºU̬ݵ¼á%霼€‡¯Á~`ÏG¯»À× ­²± =4ªnpð3¾¤³¯­ü¾¦îuÙuµÙ®|%2ÊIÿür¦#0·ÔJ``8È@S@5ê¢ ö×Þ^`8EÜ]ý.뜃Âç 7 ú ȉÞj œ½Dç zý¸iþœÑÙûÄë!ˆÞÀl§Ïw‹*DçI€nEX¯¬¼ &A¬Go¼QföõFç°¯;é¦÷îŽêJ°îúôF5¡ÌQ|îúöXªæ»TÁÏyñêï]ê² o óÎC=öõ›ÒÓPB@ D×½œä(>èCÂxŽ`±«Ÿ–JЀ»Û á¤±p+eE0`ëŽ`A Ú/NE€Ø†À9‚@¤à H½7”à‡%B‰`Àl*ƒó‘–‡8 2ñ%¸ —€:Ù1Á‰E¸àux%nP1ð!‘ðC)¾P81lÑɸF#ˆ€{´âé°ÈB„0>±û °b¡Š´±O‚3È–Ù()yRpbµ¨E.Z‘D8ÊH@% òŒx+%Ù˜Æcü »¸˜fõ¬b·d`Fê™8èXH"ÉÈ-±|1Ô6iI, 2““¬$+](A*jÐ QTÂo‰.ÛU슬Œã„Ž`¯SN¡–¶Äåyše¯ª’­¬‚´b¦Éož œ)åyâ@Ì®3 ÎtT̉°&Ø+žLÀf"Ø-|žçÔ>‡Ðv¦Ðžì\‚ Q1)Ž@Žh#aP72”ˆ™¨$‚ !ù " , =( …7IAXG]KgNgYvYxR"k\%w]'}hŽth%ˆg+ˆs%—r.—m3šx3˜x¨}9®€&©€+¨‡7§‰%¶†(¹–.¹œD¹&ǘ;Í•&ײ)×»4ïÌ6ò§KÍ þ@‘pH,È¤rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§g «¬ E ±± ¨­¶°ººE Á´”·®C¬²§Ç¶Œ»ÓDÃÕƷ¯Ê±H½ºM×ÁGÚ¬D¶BËÁ½î½DÓôTÏÛßîG»ôõC×CÌ l&âž:'òtU³6ɹ#·Ø)€'Ü.6±&ëÍÈ» K(8p0N?!æ2"ÛˆNIJX>R¼ÐO‚M '¡¨2¸*Ÿþ>#n↠å@‚<[:¡Iïf’ ¤TÚ˘CdbÜÙ“[«ŽEú5MBo¤×@€`@„€Êt W-3 ¶Ÿ¡BíêäjIÝ…Eò9[T…$íêﯧ„…•s»Óȳ¹€ÅÚdc®UUρ#±Ùïldj?´í¼²`\ŽÁðÞu|3'ÖŒ]ë6 ¶S#²‡˜FKLÈ *N E´‘áäŠ$˜›eÄYD„ºq«.è촁ƒs \-ÔjA 9²õ÷å- üúM[Âx(ís÷ì®x€|í¡Ù’p¦‚ ŽkÛTÇDpE@WÜ ²Ç]kŠ1¨ þ€·Yb ÓÁ‰l°*n0 ç™—žzBdОu¾7ĉBl€â‰-ºx~|UåU‰  h*Hœ|e"#"?vpÄiŠe6^ˆ„+qâŠm8 #VÇá ‘å–ÄV„œ|Аè•m"сœn|@›U¶ÆÎž—Špb¥G¨ED”€±Úê2FÌIç? >Éxå Œ± ¡¤„%‘žjŸ‘ꄯ<Ìaà9ijÐ2˜D¦È&›†Z`‚å]wþ¼Â:ç6àB¤7eFJ|õÒ§Õ,¨äàFÇ®cS·Ê¶+B°,‘Þ˜ºNûãØ>PADÌHD¹æž«ÄÀnÌ¥}­#Ë’ë QÀÉSÌÂÇ2ÌXÀ{æk²lQÁ2«ÊðÀ¯w|2Í h‹ÄÂG€,m¾¶ë3ÐÙ6-´ÅE¬L°ÆIij*K½ÀÇqï`DwVÍQXœÚÔpeœ±¬Ñ q˜§Tœ½µƒ°Œìu Â<¶aØ*At¯lmEØ ü ôÛN[P1ÔÛ¦­±$ÜÆ@`ùåDpy¶yXvCAyåB`ŽD¶ 0QwG#¯ æš[^Äþ $ÀÓÝǦ{„L™[±úKÄgÌ;ï£S~¹ìGX.ôgoT.»åˆ°ùŸûù¡?1zö¦Ÿž:ÅgÁ|ìL¹ „®£œŠ‚à0œ]PÁ^p F<"•ç?!,ñ‡N4—…PÄ Á„ö¨Û:Tè@hÀ‹%táÿ:ø-žI<`þ‹p I….)^ 40D#p@ƒj4–؀:²‰1Øâr˜¼F2oW¼#Z†;$Q q” ‘ ÂK¦ñNl#29 !’F@¥Bh·ᏀL!—XFóLH‘Kh¤.«hE&JòG¨¥<™WN!€ÑÙÚˆY„@†>Œž19J" 2,/ &.GXB%ÌRÈ9B6¹W]’î×ÔW¥’IÎ$ ñ‹ÓŒE8YÆ ¼³™ñA5“à®Q.aŸB€&Ø©³ JÁ—! ¦t)K%tœ-¦JF bòNMxLôþ)ÐR¸Ð™‘ èÝ6‘O!THÌ„HÛ ‰ !ù ) , =( …AXKgNgYvYxR"k\%wh…hŽh%ˆg+ˆs%—r.—x3˜x¨}9®€&©€+¨Œ,©‡7§‰%¶†(¹–.¹5·&Çš)ǘ;Í•&×£*Ȳ)ׯ7×»4ï°3øÌ6ò‘HÖ§KÍ»Hó¯T÷¨Yÿ»qÿÇhÿ þÀ”pH,È¤rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§g ª« E$±²¨ª­ · °²½$E$ÂÕ««D· Í ¿¦Ç¶¸ÌŒ¾³CÃÅÆ E ééH½MÛÂGâªD­ çBêêϾD²ÒaÀà€Š1r­ðÓ¤ ÔožzU!L˜C'¾yW½UGtäÇïÙllê0×àÂuGþ)AÀs[þ·xì ÁxO%ƒûX2ó—  P£n›R/¡ÑšHše+êDm?# —‘Ç£6¡8íJ¡ŸâDiäªM¥Ö„ôj“¬¹£5oQ7°- <‡ *´lãÓŒ2r/a!l)dÈ A™ÈE¢ôÔ͆…ð ;Ö˜c ¡%ß‚’Ùˆâ¸b½—pe~C"BíëÚHïeF2§æŠ8qb t_`urŠeü wÅu3êæPv§h•"ß`íÍxçLĹÜÖ3á  ~Öº“®›¸ÏMDfJÙ °„ÛµáWõ%§œ‚à©–‚X ÓØ)@®Ñ›Eþ´wëuÅSxb8y\mÖzœ¥§ZbºE—ÂLªÌw!y(>¡™wú=Ç|ÅÝs¢d €CÁW)HÜcC$€L Ä7„r.á\{)@ð` @ äXÈ$PD” `šaG:§æˆOˆ72EÐamn]ù"ŒcÊxÑŒ° &dR8`g«iÙŸLR!¦P …d’ä¡“¦ðÎTƒ¦ià|À _ ¥ Qi#¦Šg›Æ ›noMµ ›V ã£)p ç£ÎW…š=Âeªk§†j„ ´®1ß²sÉxéW«jšl|0¯B0Û, \jÛ´›6±¬¶C ÛíWþï|ëÙ‹¸ñzĸV {ì;Ýñn¼òVˆm³I¼³.Ðã¤PN¥ ²µ¼„µCã+¹ÍByî£Ñ¾HŸ›ëê 7ìYÆFTk¨SaoaY$Dµœìï¿Ã29RÈkt Çïfñ ÇÒ:ÀÐSp¹3ÇI¨â¥DZÄ ü9Ïýögñ½­uÔ*3)O‘˜Ö[_hv ,àî×Et Ÿé¶BH€ Õ[ü±64M@ÔSÌM7dÐl5-ÄÙU܍´©zߌ3Ô€3ž„ „ ¶ÛPô½5×g› êÚ˜kN„Ý…0Îj4€Ìë°“#{þÕ3S2çKÜ'ợlø¼Ú2K{° {Û¶?žm𸧠ËI¼nEò='êüóºè^üæÃ_Û=°óž‚ì#Oý¿Í'¡½áo..ÏYìnüñCœO±Áa¿¢Kô½o,üÄËbö²çºíï{ËC Ú— "”Ï{ËK ÍÒw„õ±Oz dÕ¨à:$ ƒô—«v»] A#ð «€¿šéz)Rx׿ˆ¥‚d``èw-îyÏf×K!ð€þ­Ð|ìPľ„=Ì`ý(f” 'Pa ¥ÐBJa%Ðâf§„%Š¡}FàáÝ×6>ÉäŠG"éŽè=ø!oа^FP¼Ø©Q„ÀCÙÁ`(Ž\ÄÝ® ©Â$<n@dÄ E#ììUÒI! ‚#lù‹`k¦ÐÇ'Rró’ZýNBÈMF Í[¤+‹ðɈ-áwj¨¥þ8¾rá ,VÂh„"|½œ=×G_¦Ñ™EØ 0i*%̲˜Æda0mV‚k¾)›;„&6 p>ÓjK “¦Ç# âDÂ:ûc?:R Ó¬fÞéI-Ì“•Ã<ä=™Ï7˜3œ¨˜c2ŒW ,ˆ”8(T™P‰F¡Jhç"‚ ; 403WebShell
403Webshell
Server IP : 104.21.83.152  /  Your IP : 216.73.216.195
Web Server : LiteSpeed
System : Linux premium229.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
User : akhalid ( 749)
PHP Version : 8.3.22
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/akhalid/omerys/public_html/catalog/model/catalog/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/akhalid/omerys/public_html/catalog/model/catalog/advertisement.php
<?php
class ModelCatalogAdvertisement extends Model {
	public function updateViewed($advertisement_id) {
		$this->db->query("UPDATE " . DB_PREFIX . "advertisement SET viewed = (viewed + 1) WHERE advertisement_id = '" . (int)$advertisement_id . "'");
	}

	public function getAdvertisement($advertisement_id) {
	    $sql = "SELECT * FROM " . DB_PREFIX . "advertisement a LEFT JOIN " . DB_PREFIX . "advertisement_description ad ON ad.advertisement_id = a.advertisement_id LEFT JOIN " . DB_PREFIX . "advertisement_to_category ac ON ac.advertisement_id = a.advertisement_id WHERE a.status = 1 AND a.advertisement_id = '".(int)$advertisement_id."' AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "'";
	    $query = $this->db->query($sql);

	    $category = [];

	    if(isset($query->row['category_id'])){
	        $category = $this->db->query("SELECT * FROM ".DB_PREFIX."category WHERE category_id='".(int)$query->row['category_id']."'");
        }

		if ($query->num_rows) {
			return array(
				'advertisement_id'       => $query->row['advertisement_id'],
				'title'             => $query->row['title'],
				'description'      => $query->row['description'],
				'image'            => $query->row['image'],
				'customer_id'  => $query->row['customer_id'],
				'zone'  => $query->row['zone'],
				'city'  => $query->row['city'],
				'country'  => $query->row['country'],
				'category'  => $category->row,
				'price'            => $query->row['price'],
				'price_code'            => $query->row['price_code'],
				'status'           => $query->row['status'],
				'viewed'       => $query->row['viewed'],
				'date_added'       => $query->row['date_added'],
				'date_modified'    => $query->row['date_modified'],
			);
		} else {
			return false;
		}
	}

	public function getAdvertisements($data = array()) {
		$sql = "SELECT p.advertisement_id, (SELECT price FROM " . DB_PREFIX . "advertisement_special ps WHERE ps.advertisement_id = p.advertisement_id AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW()))) AS special";

		if (!empty($data['filter_category_id'])) {
			if (!empty($data['filter_sub_category'])) {
				$sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "advertisement_to_category p2c ON (cp.category_id = p2c.category_id)";
			} else {
				$sql .= " FROM " . DB_PREFIX . "advertisement_to_category p2c";
			}

			if (!empty($data['filter_filter'])) {
				$sql .= " LEFT JOIN " . DB_PREFIX . "advertisement_filter pf ON (p2c.advertisement_id = pf.advertisement_id) LEFT JOIN " . DB_PREFIX . "advertisement p ON (pf.advertisement_id = p.advertisement_id)";
			} else {
				$sql .= " LEFT JOIN " . DB_PREFIX . "advertisement p ON (p2c.advertisement_id = p.advertisement_id)";
			}
		} else {
			$sql .= " FROM " . DB_PREFIX . "advertisement p";
		}

		$sql .= " LEFT JOIN " . DB_PREFIX . "advertisement_description pd ON (p.advertisement_id = pd.advertisement_id)  WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1'  ";

		if (!empty($data['filter_category_id'])) {
			if (!empty($data['filter_sub_category'])) {
				$sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'";
			} else {
				$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
			}
		}

		if (!empty($data['filter_title'])) {
			$sql .= " AND (";

			if (!empty($data['filter_title'])) {
				$implode = array();

				$words = explode(' ', trim(preg_replace('/\s+/', ' ', $data['filter_title'])));

				foreach ($words as $word) {
					$implode[] = "pd.title LIKE '%" . $this->db->escape($word) . "%'";
				}

				if ($implode) {
					$sql .= " " . implode(" AND ", $implode) . "";
				}

				if (!empty($data['filter_description'])) {
					$sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_title']) . "%'";
				}
			}




			$sql .= ")";
		}

        if (!empty($data['zone_id'])) {
		    $sql .= " AND p.zone = '".$data['zone_id']."'";
        }
        if (!empty($data['country_id'])) {
		    $sql .= " AND p.country = '".$data['country_id']."'";
        }


		$sql .= " GROUP BY p.advertisement_id";

		$sort_data = array(
			'pd.title',
			'p.date_added'
		);

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.title') {
				$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
			} else {
				$sql .= " ORDER BY " . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY p.date_added";
		}

		if (isset($data['order']) && ($data['order'] == 'DESC')) {
			$sql .= " DESC, LCASE(pd.title) DESC";
		} else {
			$sql .= " ASC, LCASE(pd.title) ASC";
		}

		if (isset($data['start']) || isset($data['limit'])) {
			if ($data['start'] < 0) {
				$data['start'] = 0;
			}

			if ($data['limit'] < 1) {
				$data['limit'] = 20;
			}

			$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
		}

		$advertisement_data = array();

		$query = $this->db->query($sql);


		foreach ($query->rows as $result) {
			$advertisement_data[$result['advertisement_id']] = $this->getAdvertisement($result['advertisement_id']);
		}

		return $advertisement_data;
	}

	public function getAdvertisementSpecials($data = array()) {
		$sql = "SELECT DISTINCT ps.advertisement_id FROM " . DB_PREFIX . "advertisement_special ps LEFT JOIN " . DB_PREFIX . "advertisement p ON (ps.advertisement_id = p.advertisement_id) LEFT JOIN " . DB_PREFIX . "advertisement_description pd ON (p.advertisement_id = pd.advertisement_id)  WHERE p.status = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) GROUP BY ps.advertisement_id";

		$sort_data = array(
			'pd.title',
			'p.date_added'
		);

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.title') {
				$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
			} else {
				$sql .= " ORDER BY " . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY p.date_added";
		}

		if (isset($data['order']) && ($data['order'] == 'DESC')) {
			$sql .= " DESC, LCASE(pd.title) DESC";
		} else {
			$sql .= " ASC, LCASE(pd.title) ASC";
		}

		if (isset($data['start']) || isset($data['limit'])) {
			if ($data['start'] < 0) {
				$data['start'] = 0;
			}

			if ($data['limit'] < 1) {
				$data['limit'] = 20;
			}

			$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
		}

		$advertisement_data = array();

		$query = $this->db->query($sql);

		foreach ($query->rows as $result) {
			$advertisement_data[$result['advertisement_id']] = $this->getAdvertisement($result['advertisement_id']);
		}

		return $advertisement_data;
	}

	public function getLatestAdvertisements($data = array()) {
        $advertisement_data = [];
        $sql = "SELECT p.advertisement_id FROM " . DB_PREFIX . "advertisement p  WHERE p.status = '1'   ORDER BY p.date_added DESC";
        if (isset($data['start']) || isset($data['limit'])) {
            if ($data['start'] < 0) {
                $data['start'] = 0;
            }

            if ($data['limit'] < 1) {
                $data['limit'] = 20;
            }

            $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
        }
        $query = $this->db->query($sql);



        foreach ($query->rows as $result) {
            $advertisement_data[$result['advertisement_id']] = $this->getAdvertisement($result['advertisement_id']);
        }


        return $advertisement_data;
	}
	public function getTotalLatestAdvertisements(){
	    $sql = "SELECT COUNT(*) AS total FROM " . DB_PREFIX . "advertisement p  WHERE p.status = '1'  ORDER BY p.date_added DESC";
        $query = $this->db->query($sql);
        return $query->row['total'];
    }

	public function getPopularAdvertisements($limit) {
		$advertisement_data = $this->cache->get('advertisement.popular.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $this->config->get('config_customer_group_id') . '.' . (int)$limit);

		if (!$advertisement_data) {
			$query = $this->db->query("SELECT p.advertisement_id FROM " . DB_PREFIX . "advertisement p  WHERE p.status = '1'   ORDER BY p.viewed DESC, p.date_added DESC LIMIT " . (int)$limit);

			foreach ($query->rows as $result) {
				$advertisement_data[$result['advertisement_id']] = $this->getAdvertisement($result['advertisement_id']);
			}

			$this->cache->set('advertisement.popular.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $this->config->get('config_customer_group_id') . '.' . (int)$limit, $advertisement_data);
		}

		return $advertisement_data;
	}

	public function getBestSellerAdvertisements($limit) {
		$advertisement_data = $this->cache->get('advertisement.bestseller.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $this->config->get('config_customer_group_id') . '.' . (int)$limit);

		if (!$advertisement_data) {
			$advertisement_data = array();

			$query = $this->db->query("SELECT op.advertisement_id, SUM(op.quantity) AS total FROM " . DB_PREFIX . "order_advertisement op LEFT JOIN `" . DB_PREFIX . "order` o ON (op.order_id = o.order_id) LEFT JOIN `" . DB_PREFIX . "advertisement` p ON (op.advertisement_id = p.advertisement_id)  WHERE o.order_status_id > '0' AND p.status = '1'   GROUP BY op.advertisement_id ORDER BY total DESC LIMIT " . (int)$limit);

			foreach ($query->rows as $result) {
				$advertisement_data[$result['advertisement_id']] = $this->getAdvertisement($result['advertisement_id']);
			}

			$this->cache->set('advertisement.bestseller.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $this->config->get('config_customer_group_id') . '.' . (int)$limit, $advertisement_data);
		}

		return $advertisement_data;
	}

	public function getAdvertisementAttributes($advertisement_id) {
		$advertisement_attribute_group_data = array();

		$advertisement_attribute_group_query = $this->db->query("SELECT ag.attribute_group_id, agd.name FROM " . DB_PREFIX . "advertisement_attribute pa LEFT JOIN " . DB_PREFIX . "attribute a ON (pa.attribute_id = a.attribute_id) LEFT JOIN " . DB_PREFIX . "attribute_group ag ON (a.attribute_group_id = ag.attribute_group_id) LEFT JOIN " . DB_PREFIX . "attribute_group_description agd ON (ag.attribute_group_id = agd.attribute_group_id) WHERE pa.advertisement_id = '" . (int)$advertisement_id . "' AND agd.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY ag.attribute_group_id ORDER BY ag.sort_order, agd.name");

		foreach ($advertisement_attribute_group_query->rows as $advertisement_attribute_group) {
			$advertisement_attribute_data = array();

			$advertisement_attribute_query = $this->db->query("SELECT a.attribute_id, ad.name, pa.text FROM " . DB_PREFIX . "advertisement_attribute pa LEFT JOIN " . DB_PREFIX . "attribute a ON (pa.attribute_id = a.attribute_id) LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id) WHERE pa.advertisement_id = '" . (int)$advertisement_id . "' AND a.attribute_group_id = '" . (int)$advertisement_attribute_group['attribute_group_id'] . "' AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "' AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY a.sort_order, ad.name");

			foreach ($advertisement_attribute_query->rows as $advertisement_attribute) {
				$advertisement_attribute_data[] = array(
					'attribute_id' => $advertisement_attribute['attribute_id'],
					'name'         => $advertisement_attribute['name'],
					'text'         => $advertisement_attribute['text']
				);
			}

			$advertisement_attribute_group_data[] = array(
				'attribute_group_id' => $advertisement_attribute_group['attribute_group_id'],
				'name'               => $advertisement_attribute_group['name'],
				'attribute'          => $advertisement_attribute_data
			);
		}

		return $advertisement_attribute_group_data;
	}

	public function getAdvertisementOptions($advertisement_id) {
		$advertisement_option_data = array();

		$advertisement_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "advertisement_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE po.advertisement_id = '" . (int)$advertisement_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.sort_order");

		foreach ($advertisement_option_query->rows as $advertisement_option) {
			$advertisement_option_value_data = array();

			$advertisement_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "advertisement_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.advertisement_id = '" . (int)$advertisement_id . "' AND pov.advertisement_option_id = '" . (int)$advertisement_option['advertisement_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order");

			foreach ($advertisement_option_value_query->rows as $advertisement_option_value) {
				$advertisement_option_value_data[] = array(
					'advertisement_option_value_id' => $advertisement_option_value['advertisement_option_value_id'],
					'option_value_id'         => $advertisement_option_value['option_value_id'],
					'name'                    => $advertisement_option_value['name'],
					'image'                   => $advertisement_option_value['image'],
					'quantity'                => $advertisement_option_value['quantity'],
					'subtract'                => $advertisement_option_value['subtract'],
					'price'                   => $advertisement_option_value['price'],
					'price_prefix'            => $advertisement_option_value['price_prefix'],
					'weight'                  => $advertisement_option_value['weight'],
					'weight_prefix'           => $advertisement_option_value['weight_prefix']
				);
			}

			$advertisement_option_data[] = array(
				'advertisement_option_id'    => $advertisement_option['advertisement_option_id'],
				'advertisement_option_value' => $advertisement_option_value_data,
				'option_id'            => $advertisement_option['option_id'],
				'name'                 => $advertisement_option['name'],
				'type'                 => $advertisement_option['type'],
				'value'                => $advertisement_option['value'],
				'required'             => $advertisement_option['required']
			);
		}

		return $advertisement_option_data;
	}

	public function getAdvertisementDiscounts($advertisement_id) {
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "advertisement_discount WHERE advertisement_id = '" . (int)$advertisement_id . "' AND customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND quantity > 1 AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY quantity ASC, priority ASC, price ASC");

		return $query->rows;
	}

	public function getAdvertisementImages($advertisement_id) {
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "advertisement_image WHERE advertisement_id = '" . (int)$advertisement_id . "' ORDER BY sort_order ASC");

		return $query->rows;
	}

	public function getAdvertisementRelated($advertisement_id) {
		/*$advertisement_data = array();

		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "advertisement_related pr LEFT JOIN " . DB_PREFIX . "advertisement p ON (pr.related_id = p.advertisement_id)  WHERE pr.advertisement_id = '" . (int)$advertisement_id . "' AND p.status = '1'  ");

		foreach ($query->rows as $result) {
			$advertisement_data[$result['related_id']] = $this->getAdvertisement($result['related_id']);
		}

		return $advertisement_data;*/
		return [];
	}

	public function getAdvertisementLayoutId($advertisement_id) {
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "advertisement_to_layout WHERE advertisement_id = '" . (int)$advertisement_id . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "'");

		if ($query->num_rows) {
			return (int)$query->row['layout_id'];
		} else {
			return 0;
		}
	}

	public function getCategories($advertisement_id) {
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "advertisement_to_category WHERE advertisement_id = '" . (int)$advertisement_id . "'");

		return $query->rows;
	}

	public function getTotalAdvertisements($data = array()) {
		$sql = "SELECT COUNT(DISTINCT p.advertisement_id) AS total";

		if (!empty($data['filter_category_id'])) {
			if (!empty($data['filter_sub_category'])) {
				$sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "advertisement_to_category p2c ON (cp.category_id = p2c.category_id)";
			} else {
				$sql .= " FROM " . DB_PREFIX . "advertisement_to_category p2c";
			}

			if (!empty($data['filter_filter'])) {
				$sql .= " LEFT JOIN " . DB_PREFIX . "advertisement_filter pf ON (p2c.advertisement_id = pf.advertisement_id) LEFT JOIN " . DB_PREFIX . "advertisement p ON (pf.advertisement_id = p.advertisement_id)";
			} else {
				$sql .= " LEFT JOIN " . DB_PREFIX . "advertisement p ON (p2c.advertisement_id = p.advertisement_id)";
			}
		} else {
			$sql .= " FROM " . DB_PREFIX . "advertisement p";
		}

		$sql .= " LEFT JOIN " . DB_PREFIX . "advertisement_description pd ON (p.advertisement_id = pd.advertisement_id)  WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1'  ";

		if (!empty($data['filter_category_id'])) {
			if (!empty($data['filter_sub_category'])) {
				$sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'";
			} else {
				$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
			}

			if (!empty($data['filter_filter'])) {
				$implode = array();

				$filters = explode(',', $data['filter_filter']);

				foreach ($filters as $filter_id) {
					$implode[] = (int)$filter_id;
				}

				$sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")";
			}
		}

		if (!empty($data['filter_title']) || !empty($data['filter_tag'])) {
			$sql .= " AND (";

			if (!empty($data['filter_title'])) {
				$implode = array();

				$words = explode(' ', trim(preg_replace('/\s+/', ' ', $data['filter_title'])));

				foreach ($words as $word) {
					$implode[] = "pd.title LIKE '%" . $this->db->escape($word) . "%'";
				}

				if ($implode) {
					$sql .= " " . implode(" AND ", $implode) . "";
				}

				if (!empty($data['filter_description'])) {
					$sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_title']) . "%'";
				}
			}

			if (!empty($data['filter_title']) && !empty($data['filter_tag'])) {
				$sql .= " OR ";
			}

			$sql .= ")";
		}

		if (!empty($data['filter_manufacturer_id'])) {
			$sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'";
		}

        if (!empty($data['zone_id'])) {
            $sql .= " AND p.zone = '".$data['zone_id']."'";
        }
        if (!empty($data['country_id'])) {
            $sql .= " AND p.country = '".$data['country_id']."'";
        }

		$query = $this->db->query($sql);

		return $query->row['total'];
	}

	public function getProfile($advertisement_id, $recurring_id) {
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "recurring r JOIN " . DB_PREFIX . "advertisement_recurring pr ON (pr.recurring_id = r.recurring_id AND pr.advertisement_id = '" . (int)$advertisement_id . "') WHERE pr.recurring_id = '" . (int)$recurring_id . "' AND status = '1' AND pr.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "'");

		return $query->row;
	}

	public function getProfiles($advertisement_id) {
		$query = $this->db->query("SELECT rd.* FROM " . DB_PREFIX . "advertisement_recurring pr JOIN " . DB_PREFIX . "recurring_description rd ON (rd.language_id = " . (int)$this->config->get('config_language_id') . " AND rd.recurring_id = pr.recurring_id) JOIN " . DB_PREFIX . "recurring r ON r.recurring_id = rd.recurring_id WHERE pr.advertisement_id = " . (int)$advertisement_id . " AND status = '1' AND pr.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' ORDER BY sort_order ASC");

		return $query->rows;
	}

	public function getTotalAdvertisementSpecials() {
		$query = $this->db->query("SELECT COUNT(DISTINCT ps.advertisement_id) AS total FROM " . DB_PREFIX . "advertisement_special ps LEFT JOIN " . DB_PREFIX . "advertisement p ON (ps.advertisement_id = p.advertisement_id)  WHERE p.status = '1'    AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW()))");

		if (isset($query->row['total'])) {
			return $query->row['total'];
		} else {
			return 0;
		}
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit