Drupal 7 में डेटाबेस के साथ काम — पाठ 8 — डेटा जोड़ने की क्वेरीज़ (INSERT INTO)
डेटा जोड़ने (INSERT) की क्वेरीज़ हमेशा Drupal के क्वेरी बिल्डर (Query Builder) के माध्यम से बनाई जानी चाहिए। कुछ डेटाबेस सिस्टम्स में बड़े ऑब्जेक्ट्स (LOB — Large OBject, जैसे MySQL में TEXT) और बाइनरी बड़े ऑब्जेक्ट्स (BLOB — Binary Large OBject) के लिए विशेष हैंडलर की आवश्यकता होती है, इसलिए डेटाबेस ड्राइवर स्तर पर इन हैंडलरों को संभालने के लिए एक अमूर्त परत (abstraction layer) आवश्यक होती है।
INSERT क्वेरीज़ db_insert() फ़ंक्शन से शुरू होती हैं:
Drupal 7 में डेटाबेस के साथ काम — पाठ 9 — रिकॉर्ड अपडेट क्वेरीज़ (UPDATE)
रिकॉर्ड अपडेट (UPDATE) क्वेरीज़ को हमेशा Drupal के क्वेरी बिल्डर (Query Builder) के माध्यम से बनाना चाहिए। विभिन्न डेटाबेस सिस्टम्स में बड़े ऑब्जेक्ट्स (LOB — Large OBjects, जैसे MySQL में TEXT) और बाइनरी बड़े ऑब्जेक्ट्स (BLOB — Binary Large OBjects) के लिए अलग-अलग हैंडलर होते हैं। इसलिए, इन मामलों को संभालने के लिए क्वेरी एब्स्ट्रैक्शन लेयर आवश्यक होती है, जिससे हर डेटाबेस ड्राइवर अपनी विशिष्ट प्रक्रिया लागू कर सके।
अपडेट क्वेरी db_update() फ़ंक्शन से शुरू होती है:
Drupal 7 में डेटाबेस के साथ काम — पाठ 10 — रिकॉर्ड हटाने की क्वेरीज़ (DELETE)
रिकॉर्ड हटाने (DELETE) के लिए क्वेरीज़ को Drupal में क्वेरी बिल्डर (Query Builder) के माध्यम से ही बनाया जाना चाहिए। इन्हें db_delete() फ़ंक्शन से शुरू किया जाता है:
<?php
$query = db_delete('node', $options);
?>
यह क्वेरी “node” टेबल से रिकॉर्ड्स को हटाएगी। ध्यान दें कि टेबल के नाम को आकृति कोष्ठकों {} में लिखने की आवश्यकता नहीं है — क्वेरी बिल्डर यह स्वचालित रूप से कर देता है।
Drupal 7 में डेटाबेस के साथ काम — पाठ 11 — मर्ज क्वेरीज़ (MERGE)
मर्ज क्वेरीज़ (Merge Queries) एक विशेष हाइब्रिड प्रकार की क्वेरी होती हैं। यद्यपि इन क्वेरीज़ का सिंटैक्स SQL 2003 मानक में परिभाषित किया गया था, वास्तव में बहुत कम डेटाबेस हैं जो इस सिंटैक्स का प्रत्यक्ष समर्थन करते हैं। हालांकि, अधिकांश डेटाबेस इस कार्यक्षमता को अलग-अलग तरीकों से लागू करते हैं, अपने स्वयं के सिंटैक्स के माध्यम से। Drupal में मर्ज क्वेरी कंस्ट्रक्टर इस पूरी अवधारणा को अमूर्त (abstract) रूप में प्रस्तुत करता है, ताकि यह हर डेटाबेस के लिए अलग-अलग तरीके से संकलित (compiled) हो सके।
Drupal 7 में डेटाबेस के साथ काम — पाठ 12 — क्वेरी की शर्तें (WHERE, HAVING, LIKE)
क्वेरी में शर्तें (conditions) जोड़ने से हम केवल उन्हीं रिकॉर्ड्स का चयन कर सकते हैं, जो कुछ विशेष मानदंडों को पूरा करते हैं — जैसे कि केवल पिछले दो सप्ताह में बनाई गई नोड्स, या वे टर्म जिनमें "Drupal" शब्द शामिल है। SQL में हम SELECT, UPDATE, DELETE क्वेरीज़ में शर्तें निर्दिष्ट करने के लिए WHERE और HAVING का उपयोग करते हैं। Drupal के डायनेमिक क्वेरी सिस्टम में भी शर्तों के साथ काम करने के लिए एक समान तंत्र लागू किया गया है। यह तंत्र सभी तीन प्रकार की क्वेरीज़ — चयन (SELECT), अद्यतन (UPDATE), और हटाने (DELETE) — के लिए समान रूप से कार्य करता है।
Drupal पर मॉड्यूल बनाना — त्वरित प्रारंभ
आइए api.drupal.org से शुरू करें। उस पेज को खोलें जहाँ hook_node_presave() हुक का वर्णन है — यह हुक किसी नोड को जोड़ने से पहले सक्रिय होता है।
http://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_validate/7
हुक्स हमें Drupal की प्रक्रिया में अपना कोड सम्मिलित करने की अनुमति देते हैं — उदाहरण के लिए, हम इनसे डेटा की वैधता जाँच सकते हैं, फ़ील्ड जोड़ सकते हैं, फॉर्म तत्व बना सकते हैं आदि।
Drupal 7 मॉड्यूल किन तत्वों से बना होता है?
अपने मॉड्यूल को बनाना शुरू करने से पहले, आइए Drupal API की संभावनाओं के बारे में थोड़ा और जानें। API टैक्सोनॉमी, नोड्स, उपयोगकर्ताओं, और डेटाबेस से डेटा इनपुट/आउटपुट के साथ काम करने के लिए विस्तृत सुविधाएँ प्रदान करता है। Drupal में मॉड्यूल्स और कोर के बीच, साथ ही विभिन्न मॉड्यूल्स के बीच परस्पर संबंध बनाए रखने के लिए एक विशेष प्रणाली होती है — जिसे hook system कहा जाता है।
Drupal 7 hook_block_info() और hook_block_view() — ब्लॉक में जानकारी प्रदर्शित करना
पिछले पाठ में हमने Drupal 7 के लिए एक मॉड्यूल बनाया था। इस पाठ में हम अपने मॉड्यूल की क्षमताओं को और बढ़ाएंगे। हम hook_block_view() और hook_block_info() हुक्स का उपयोग करके एक ब्लॉक जोड़ेंगे। इस ब्लॉक में साइट पर हाल ही में पंजीकृत उपयोगकर्ताओं की जानकारी होगी, जिसमें उनकी प्रोफ़ाइल पेज की लिंक भी शामिल होगी।
आइए hook_block_info() के विवरण से शुरू करें:
यह मॉड्यूल द्वारा बनाए गए सभी ब्लॉकों को परिभाषित करता है।
Hook_menu Drupal 7 — मॉड्यूल के माध्यम से पृष्ठों का निर्माण
पिछले पाठ में हमने सीखा कि कैसे Drupal API की मदद से डेटाबेस से जानकारी प्रदर्शित की जाती है, विशेष रूप से hook_block_info() और hook_block_view() हुक्स का उपयोग करके। इस पाठ में हम पृष्ठों को प्रदर्शित करना सीखेंगे, अर्थात् hook_menu का उपयोग करके पृष्ठ को Drupal की अन्य इकाइयों जैसे मेनू, अनुवाद मॉड्यूल, टेम्पलेट आदि से जोड़ना सीखेंगे।
hook_permission Drupal 7 में विभिन्न भूमिकाओं (roles) के लिए एक्सेस अनुमतियाँ
पिछले पाठों में हमने विभिन्न स्थानों पर पेज और ब्लॉक प्रदर्शित किए थे, और हमने पेजों तक पहुँच को सीमित करने के लिए 'access arguments' और 'access callback' जैसी विशेषताओं का भी उपयोग किया था। इस पाठ में, हम प्रशासनिक पेजों के माध्यम से क्रियाओं तक पहुँच अधिकारों (access permissions) को और अधिक लचीले ढंग से संपादित करने की संभावना बनाएंगे। इसके लिए हम hook_permission() (Drupal 6 में यह hook_perm() था) का उपयोग करेंगे।
hook_permission()
यह उपयोगकर्ताओं के लिए अनुमतियाँ (permissions) निर्धारित करता है।