Opencart filemanager resim sıralaması

Bir arkadaşımın müşterisi Opencart’ın resim yöneticisindeki resimlerin alfabetik olarak gelmesinden şikayetçiymiş. Resimleri son yüklenene göre sıralamak istiyormuş aslında gayet mantıklı da bir istek.

Neyse aynı sıkınıtı yaşayan arkadaşlar varsa admin > controller > common klasör yollarını izlediğinizde filemanager.php dosyasını bulacaksınız onu açtıktan sonra aşağıda ki kodu $images değişkenin hemen öncesine yerleştirebilirsiniz. Opencart 2.3.0 için 57. satır.

array_multisort(array_map('filemtime', $files), SORT_NUMERIC, SORT_DESC, $files);

Centos Web Panel Roundcube SPAM klasörü

Cpanel lisansını ödememek için Ufuk‘un tavsiyesi ile kurmuş olduğum CenOS Web Paneli ücretsiz bir sisteme göre gayet başarılı buluyorum. Tabi ki bazı eksiklikleri var ama ücretsiz olması bunları gözardı etmeye yetiyor sanırım. Websitesini hazırlayıp aynı zamanda barındırma hizmetini de vermiş olduğum rahatsız(!) bir müşterim webmaile giriş yaptığında SPAM klasörünü görmek istediğini ve bunun burada olması gerektiğini söyledi. Gerçekten webmaile giriş yapıp baktığımda sadece “Gelen Kutusu” klasörünün aktif olduğunu gördüm.

Ayarları biraz kurcaladım belki buradadır sorun diye ama nafile.

Daha sonra Roundcube config.php dosyasını biraz kurcalamaya başladım ve aynı dizinde yer alan defaults.inc.php dosyasında :


// automatically create the above listed default folders on user login
$config['create_default_folders'] = false;

bu ayarı true olarak değiştirdim ve webmail oturumunu kapatıp, tekrar giriş yaptığımda tüm klasörler olması gerektiği gibiydi.

Bu arada CWP’deki bahsi geçen defaults.inc.php şurada bulunuyor : /usr/local/cwpsrv/var/services/roundcube/defaults.inc.php

WHMCS 7 premium domain özelliği

Eğer WHMCS 7 güncellemesini yaptıysanız ve premium özelliğini aktif etmek istiyorsanız bu sayfadaki bilgiler işinize yarayacaktır. Premium domain özelliğini aktif etmeniz; ödeme yapmış ama domaini alamamış olan sinirli müşteriye o domainin aslında fiyatı şuydu ve özel bir domaindir açıklaması yapmanızın önüne geçecektir. Panelden özelliği aktif etmeniz için varsayılan lookup servisini “ResellerClub” ile değiştirmeniz gerekiyor.

Değiştirdiniz ve olmadı mı? Bunun sebebi büyük ihtimalle modules/registrars/dottk klasöründe ki dottk.php IonCube uyumsuz bir versiyonu ile şifrelendiği için sorun yaratıyor, klasöre giderek silin.

$.post('cart.php', {
	dataType: 'json',
	domain: domainName,
	token: $("input[name='token']").val(),
	'a' : 'checkDomain',
	'type' : 'domain'
}, function(response) {
	var domain_adi = response.result[0]['domainName'];
	
	if(response.result[0]['isPremium'])
	{
		$('.sorgulanan-sag h3').html(domain_adi + ' 
<div class="badge badge-warning">Premium</div>

');
	}else{
		$('.sorgulanan-sag h3').html(domain_adi);
	}
	
	if(response.result[0].tld.substr(response.result[0].tld.length - 2) == 'tr')
	{
		var dadi = response.result[0]['domainName'];
		$.ajax({
			url: "nic-whois.php",
			method : 'POST',
			dataType: 'json',
			data : { domain : dadi},
			success : function(cevap)
				{

Şimdi bu işlemi yaptığınız da karşınıza başka bir sorun çıkıyor, ResellerClub “tr” uzantılarını false döndürüyor. (com.tr, av.tr, biz.tr vbg.) Her halükarda müşteriye bu alan adları satın alınmış olarak gözükecektir. Bunu önlemek için aklıma gelen ilk yöntem sisteme hook atmak olduysa da dökümantasyonu okumak eziyet geldi onun yerine nic.tr’ye bir sorgu yapıp tld eğer tr uzantılı ise isRegister değerini nic.tr’den gelen cevaba göre güncelledim.

Daha iyi bir çözüm bulana kadar kısaca izlemeniz gereken yol :
Bizim üzerinde uğraştığımız WHMCS sistemde post JQuery ile yapılıyor ve spotlight domain özelliğini kullanıyoruz. Ve seçmiş olduğumuz spotlight tld uzantıları arasında com.tr, biz.tr de var.

WHMCS cart.php’den normal bir şekilde sorgulamamızı yapıyoruz tabi ki premium özelliği aktif olduğu için ResellerClub’dan cevap geliyor. Ve eğer domain uzantısı tr ise ikinci bir istek gönderiyoruz nic-whois.php’ye ve gelen cevaba göre domainin kayıtlı olup olmadığını müşteriye gösteriyoruz.

nic-whois.php

<?
function whois($whoisserver, $domain) {
	$port = 43;
	$timeout = 10;
	$fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr);
	fputs($fp, $domain . "\r\n");
	$out = "";
	while(!feof($fp)){
		$out .= fgets($fp);
	}
	fclose($fp);
	
	return $out;
}
if (!empty($_POST))
{	
	//$_POST['domain'] için filtrleme yapılabilir
	$sorgu = whois("whois.nic.tr",$_POST['domain']);
	if(!$sorgu) {
		return false;
		echo "Sorgu hatası.";
	}
	else {
		if(substr($sorgu,0,2) == "No")
		{	//domain boş
			$sonuc = false;
		}
		else{
			$sonuc = true;
		}
	}
	
	echo json_encode($sonuc);
}


?>

A non well formed numeric value encountered class.upload.php

Phalcon framework ile hazırladığım CMS sisteminde bir ortam yöneticisi bulunuyor ve yerel bilgisayarımda PHP 5.6 üzerinde geliştiriyorum fakat sunucuda 7.1 var. Kullanıcıların içeriklere otomatik boyutlandırılmış resim eklemesi için bir upload sistemi. Bunu da çok beğendiğim Verot.net’in class.upload.php scriptini kullanarak hazırlamıştım. Fakat sunucuya test için sistemi yükleyince 2656. satırda “A non well formed numeric value encountered” hatası verdi. Aynı hata ile karşılaşanlar olabileceğini düşündüm. Hatanın çözümü için switch deyiminin önüne ” $size = (int)$size;” eklemeniz yeterli olacaktır. Yani kod bloğu şu şekilde olmalı :


	function getsize($size) {
        $last = strtolower($size{strlen($size)-1});
		$size = (int)$size;
        switch($last) {
            case 'g':
                $size *= 1024;
            case 'm':
                $size *= 1024;
            case 'k':
                $size *= 1024;
        }
        return $size;
    }