2 Kasım 2010 Salı

Drupal Contact Formu (İletişim Formu) Mesaj Gönderme Limiti

Drupalda sitenize gelen ziyaretçiler size spam göndermemeleri için bir koruma mekanızsı vardır.Eğer kişiler contack formunu kullarak size 3 den fazla mesaj göndermek gibi bir işlem yaparlarsa karşılarına bu mesaj çıkar "You cannot send more than 3 messages per hour. Please try again later. " 
Bu mesaja göre  bir saat içinde 3 den fazla mesaj gönderemezsiniz diypr.Eğer Misafirlerinizin 3 den fazla mesaj göndermesini isterseniz.

Contact modülü içinde contact.pages.inc dosyasında (genellikle dizini \modules\contact\contact.pages.inc)

dosyasındaki 16. ve 17. satrlardaki
if (!flood_is_allowed('contact', variable_get('contact_hourly_threshold', 3))) {
    $output = t("You cannot send more than %number messages per hour. Please try again later.", array('%number' => variable_get('contact_hourly_threshold', 3)));

3 yazılı yerleri istediğiniz rakamla değiştirmek

23 Ekim 2010 Cumartesi

ORACLE TRIGGER YAPILARI

--tablolar uzerinde belirli bir olay olduktan sonra otomatik olarak calısan sistemlere denir.
-- after ,before olmak uzere 2 tiptedir.

--after :işlemler yapıldıktan sonra calısır
--before : normal kosullarda calıstırılmasaı gereken kodların yerine bunu calıstırır.

-- sql serverdaki inserted ve deleted tablolarının yerine :NEW ve :OLD tabloları bulunmaktadır.


--Ornek : urunler tablosuna bir eleman eklendikten sonra o urunadı alınır ve yedek tablosuna aktarılır..
CREATE OR REPLACE TRIGGER DENEME
AFTER INSERT
ON URUNLER
FOR EACH ROW

DECLARE
V_USERNAME VARCHAR2(20);

BEGIN
SELECT USER INTO V_USERNAME FROM DUAL;

INSERT INTO URUNLER_YEDEK(URUNADI,KAYITYAPAN)
VALUES
(
:NEW.URUNADI,V_USERNAME
);

END;


--TEST------
INSERT INTO URUNLER(URUNADI) VALUES('CIZI');

SELECT * FROM URUNLER_YEDEK;

ORACLE SWITCH CASE YAPILARI

--sadece esitlik durumuna bakan bu sistem if yapısına gore daha hızlı calısmaktadır...

DECLARE
OGRCOUNT NUMBER;
BEGIN

SELECT COUNT(*) INTO OGRCOUNT FROM STUDENTS;

CASE OGRCOUNT
WHEN 1 THEN
DBMS_OUTPUT.PUT_LINE('BIR OGRENCI OLSUN YETER BANA');

WHEN 0 THEN
DBMS_OUTPUT.PUT_LINE('OGRENCI YOK');

ELSE
DBMS_OUTPUT.PUT_LINE('BU KADARI DA FAZLA AMA');

END CASE;
END;

ORACLE KOSUL IFADELERI

--IF ELSIF ELSE YAPILARI

--sorgularınızdan gelen nesnelerin durumlarına bakarak işlemler yapmak için kullanılır.

DECLARE
OGRCOUNT NUMBER;
BEGIN

SELECT COUNT(*) INTO OGRCOUNT FROM STUDENTS;

IF OGRCOUNT >1
THEN
DBMS_OUTPUT.PUT_LINE('SINIFIN DURUMU IYI');

ELSIF OGRCOUNT <1
THEN
DBMS_OUTPUT.PUT_LINE('HIC OGRENCI YOK NORMAL DEGIL');

ELSE
DBMS_OUTPUT.PUT_LINE('BIR OGRENCI OLSUN YETER BANA');

END IF;
END;

ORACLE FUNCTION YAPILARI

--yapılan işlemlerden sonra geriye deger donduren sistemlere denir...
--return anahtar kelimesi nesneyi dondurur.

CREATE OR REPLACE FUNCTION KDVLIGETIR(DEGER NUMBER, KDVORAN NUMBER)
RETURN NUMBER
AS
BEGIN
RETURN DEGER * KDVORAN;
END;

-- CALISTIRILMASI
SELECT KDVLIGETIR(100,1.18) FROM DUAL;

--DUAL :  FUNCTION GIBI YAPILARIN CALISTIRILABILMESI ICIN GEREKLI OLAN SANAL TABLODUR.

--sadece functionlar matematiksel işlemler için kullanılmaz. select sorguları gibi soruglar
--içinde kullanılabilir.

CREATE OR REPLACE FUNCTION IDYEGORE(OGRID NUMBER)
RETURN VARCHAR2
AS
V_NAME VARCHAR2(40);
BEGIN

SELECT STUDENTNAME INTO V_NAME FROM STUDENTS WHERE STUDENTID=OGRID;
RETURN V_NAME;

END;

----------CALISTIRILMASI

DECLARE
  OGRID NUMBER;
  v_Return VARCHAR2(200);
BEGIN
  OGRID := 2;

  v_Return := IDYEGORE(
    OGRID => OGRID
  );
  DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return);
END;

-- DBMS denilen yapı sorgu sonuclarının goruntulenebilmesi için yaratılmıs bir cıktı merkezidir.
--bu yapı varsayılan olarak kapalıdır. acabilmek için ust menu => Vıew=> Dbms output
-- yesil + işaretine basarak kendinize bir oturum acın...

ORACLE STORE PROCEDURE




--database içerisinde compile edilmiş yani derlenmiş hazır bir halde bekleyen kodlara procedure denilir.
--normal kodlara gore daha hızlı calıslır. kodlar database içerisinde saklandıgı işçin daha guvenlidir.



CREATE OR REPLACE PROCEDURE CEKLE
(
CNAME IN VARCHAR2
)
AS
BEGIN
INSERT INTO CLASSES(CLASSNAME) VALUES(CNAME);
END;

--CALISTIRILMASI

DECLARE
CN VARCHAR2(30);

BEGIN
CN:= 'YV35203';
CEKLE(CNAME=>CN);

END;

--TEST
SELECT * FROM CLASSES;



-- Procedure olarak adlandırdıgımız bu yapılar sql serverda oldugu gibi direkt select sorgularını calıstıramaz.
-- eger select sorgunuzu yazmak isterseniz geriye dondureceginiz tiplerin out parametreli olması gerekir.

CREATE OR REPLACE PROCEDURE IDYEGORESINIF
(
CID IN NUMBER,
CNAME OUT VARCHAR2
)
AS
BEGIN
SELECT CLASSNAME INTO CNAME FROM CLASSES WHERE CLASSID = CID;
END;