Merhaba,
Lim10Ata
Şimdi burası
REST API endpoints (2.2) xenforo tarafını ilgilendiren bir durum steam ile ilgili bir durum değil. Yani ben xenforo apisini kullanarak kendi yazılımıma xenforo yazılımı tarafından gelen verileri işleyebilirim. Steam tarafında ise tamamen steam apisine bağlı hareket edebilirim. Burada yapman gereken XF tarafına, steam apisini nasıl çekeceğin. Yani bizim
REST API endpoints (2.2) ile herhangi bir işimiz yok.
Gelelim sorunun kendisine burada algoritman çok önemli yani neyi ne için ne amaçla yapacağını en iyi programı yazacak olan kişi bilir. Ama XF tarafında özel alanlara erişmek için nereye bakmam gerekiyor diyorsan cevaplayayım. Bir kere kendi özel alanlarını oluşturacaksın. Burada sana yol gösterecek varlık;
\XF\Entity\AbstractField
düzenleme yaparken cevap almak için
parent::fieldAddEditResponse($field)
tabii repository tarafında da bakman gereken yer;
XF\Repository\AbstractFieldMap;
Tabii kullanıcılar tarafına da bu verileri işlemen gerekecek yine bir varlık sınıfına ihtiyacın olacak ve bu
XF\Mvc\Entity\Structure
sınıfını dahil edeceksin methodun içerisinde de
parent::getStructure($structure)
tanımlayıp
columns
değerlerini alacaksın aldığında değerleri örnek
$columns
değişkenine aktaracaksın ve değerleri aktarmış olduğun bu değişkeni
$parent->columns = array_merge($parent->columns,$columns);
ile birleştirip
return $parent
ile geriye döndüreceksin.
Çok kapsamlı bir işlem, bunu burada anlatmak bile çok zor ama yukarıda söylediklerim anlaman için en iyi yöntem; Burada anlatmak istediğim bakacağın en iyi yöntem; Xenforo bunu nasıl yapmış? XenForo tarafında bu işin nasıl döndüğünü anlamadan bu işlemi yapmak çok zor. Bu gibi durumlarda xenforo dosyalarını aslında size yardımcı bir framework gibi düşünün. Tıpkı laravel gibi, tıpkı symfony gibi. Onlar gibi bir frameworktür demiyorum sadece öyle düşünün ve xenforo'a da öyle yaklaşın. Ancak böyle çözebilirsiniz. Xenforo da onlar kadar detaylı bir döküman olmadığı için bunu onların özel alanlar için yazdığı kodlara bakarak çözmeye ve anlamaya çalışıyoruz. Bir programcı için dünyanın en zor işlerinden biri, bir başkasının yazdığı kodu çözmektir. Belki konudan bağımsız olacak ama kafanızda bir ışık yakması açısından önemli! Şirketler neden ille de Laravel bilen eleman arıyor? Çünkü Laravel'in çatısı belli. O şirketten Ahmet işi bıraksa Mehmet'i işe alır kaldığı yerden devam ettirirler. Ama Ahmet Laravel kullanmayıp kendi sınıflarıyla, yöntemleri ile bu işi yapsaydı Ahmet'in yazdığı kodu, Mehmet çözmek için (projenin büyüklüğüne göre) haftalar, aylar, belki yıllarca üstünde çalışması gerekecekti. İşte XF tarafında eklenti konusunda uzmanlaşmakta buradan geçiyor. XF'nin yazdığı kodları çözmek haftalar, aylar hatta yıllar alabilir. Ama güzel tarafı yapı güzel hazırlandığı için, repo, entity, service vs hangi sınıfın nerede olabileceğini ve kodlara baktığınızda ne işe yaradığını anlayabiliyorsunuz. Aksi zaten hiçbir yazılımcının XF tarafına bulaşmamasına neden olurdu