ليزاز1.0

" بيئة عمل ونظام إدارة محتوى "


نظام لزاز "مقدمه"

نظام لزاز الرئيسي

إضافات لزاز "classes addons"

القوالب "<lezaz/>"

مقدمه

في كثير من الأحيان نجد أن وقتا كبيرا يضيع بسبب عمليات روتينيه مثل إدخال البيانات في قاعدة بيانات وإسترجاعها وعمليات التعديل عليها كل هذا عمله بسيط ولكنه يأخذ وقت فأنت بحاجه إلى إنشاء قاعدة البيانات ثم إنشاء صفحة HTML وفيها تكتب كود لإنشاء نموذج وتقوم بعمل التحقق عن طريق الجافاسكريبت ثم عمليه إرسال النموذج إلى صفحة PHP وهناك تتحقق من عدة أمور مثل صلاحيات المستخدم وفلترة المتغيرات بحيث لا تحتوي على كود إختراق وتخريب ومثل هذا لعميله التعديل على المدخلات بحيث يتم إسترجاعها وهكذا ,
كما أن هنا مشاكل في عمليه تنظيم الروابط أو مايسمى بال Router بحيث تواجه مشاكل لكل رابط وربما تحتاج إلى مكتبه أو كود جاهز لهذه العمليه أو تضطر لعملها بنفسك من خلال ملف .htaccess والأهم من كل هذا هو التأكد من أن عملك لايتظرر بعدد الزوار الكبير ويكون سريع وهذا يحتاج إلى أنظمة كاش لتخزين المخرجات مدة معينه بحيث لا تؤثر بعمل الموقع والكثير الكثير في عملية التصميم وإستخدام مكتبات لجعل منظر الصفحة جميل وفعال بحيث تستخدم كاليندر أو قوائم ونصوص يتم تعبئتها تلقائيا
هذا كله قامت هذه البيئة بتسهيله وجعله من الماضي -- بسام العيساوي


مزايا النظام

  • بسيط وسهل التعلم
  • نظام قوالب لإستخدامات كبيرة وجمل برمجيه بسيطه عباره عن جمل HTML عاديه
  • addons syntax إمكانيه إضافة المزيد من الجمل البرمجيه للقوالب بحيث يكون لك جميلك البرمجيه الخاصه
  • عدة طبقات لتنفيذ الكود بحيث يمكنك ترتيب الأولويات وبذلك سرعة في تنفيذ المهام
  • أستخدام معظم قواعد البيانات PDO المتوفره بدون الحاجه لتغيير أي كود على شيفرتك التي قمت بكاتبتها فقط تغيير إعدادات ربط قاعدة البيانات
  • روابط ذكيه يمكنك إستخدام ماتريد بالإضافه إلى عمليات تحقق تلقائيه لأي رابط لتجنب الإختراق
  • مدمج نظام التحقق الكامل لأي متغيرات تأتي من الخارج GET & POST
  • يقبل الإضافات plgins
  • تحميل تلقائي للكلاس ودمج تلقائي مع الكلاس الرئيسي بالإضافه إلى إمكانيه تحميل الكلاسات بشكل عادي
  • أنظمة كاش متعدده لأي جملة إستعلام وتحديد وقت الكاش كما يوجد كاش لأي مخرجات بحيث يتم تخفيف الضغط على الخادم بشكل كبير
  • نظام تشفير كامل لقواعد البيانات والملفات والمتغيرات
  • نظام ضغط ودمج لملفات الجافاسكريبت والستايل
  • تحميل تلقائي مع التحقق من وجود ملفات الجافاسكريبت والستايل
  • نظام رفع الملفات والتحقق من حجمها ونوعها
  • مدمج بعض الإضافات المهمه مثل نظام الأعظاء ونظام إدارة المحتوى
  • نظام تعدد اللغات
  • مدمج لوحة تحكم تحتوي على أهم العناصر التي تحتاجها لأي مشروع ويب
  • نظام إنشاء النماذج
  • نظام إنشاء الجداول
  • نظام متكامل لإنشاء عمليات الإضافه والحذف والتعديل للبيانات داخل قواعد البيانات دون الحاجه لكتابه أي كود أو إنشاء أي جداول
  • نظام إرسال البريد الإلكتروني بقوالب سهل التحكم بها
  • نظام تعدد الصفحات لعرض بيانات من قواعد البيانات
  • حفظ متغيرات

تحميل لزاز

إعدادات لزاز

  • بعد تحميل نسخة لزاز , قم بفك الضغط عنها
  • ستجد ملف conf.php يحتوي هذا الملف على الإعدادات الرئيسيه , ربما لن تحتاج إلا لإعدادات ربط قواعد البيانات من خلال تعديل هذه السطور في الملف المذكور
    // database mysql configration 
        define('db_type', 'mysql'); // نوع قاعدة البيانات
        define('db_host', 'localhost'); // الهوست الخاص بقاعدة البانات معظم الأحيان لاتحتاج إلى تعديله 
        define('db_port', '');//البورت 
        define('db_name', ''); // إسم قاعدة البيانات
        define('db_user', 'root'); // إسم المستخدم 
        define('db_pass', ''); // الرمز السري 
                                        
                                    
  • بعض الإعدادات التي يمكنك تعديلها هي:
    date_default_timezone_set('Asia/Amman'); // الوقت المحلي المعتمد 
    لمزيد من الحمايه والأمان يمكنك تعديل أسماء المجلدات الرئيسيه 
    define('TEMPLATE_FOLDER', 'template'); //  مجلد القوالب 
    define('UPLOADED_FOLDER', 'uploaded'); // مجلد التحميلات الخاص بالصور وغيرها من الملفات
    define('CLASSES_FOLDER', 'classes'); // مجلد الكلاسات 
    define('CACHE_FOLDER', 'cache'); // مجلد الكاش 
    define('TMP_FOLDER', 'tmp'); // مجلد الملفات المؤقته
    define('PLUGIN_FOLDER', 'plugin'); // مجلد الإضافات 
    define('THEME_FOLDER', 'my_theme'); // مجلد الثيم الرئيسي 
    //يحتوي الثيم الرئيسي على جميع القوالب والصور والستالات والجافاسكريبت الخاص بمشروعك 
    
    define('SQL_CACHE', '20'); // وقت الإحتفاظ بملفات الكاش بالثواني
    define('CRYPT_CACHE', true); // لعمل تشفير لملفات الكاش وقواعد البيانات مهم للبيانات الحساسه ولكنه يستهلك بعض من موارد الخادم
    define('SALT','FR4d32cdvTYdw2s#gt54');//في حال أردت إستخدام التشفير وهو بالأصل مفعل , يجب تغيير هذا الكود بأي كود تريديه كلما كان أكبر كلما كان أأمن وبنفس الوقت أكثر إستخدام لموارد النظام 
                                    

كيف تعمل لزاز ؟

  • عند طلب الصفحة أو عمل أي طلب Request يبدأ العمل بالصفحة الرئيسيه index.php في هذا الملف يتم إنشاء الجلسه session ثم إستدعاء الملف conf.php أخيرا يتم طباعه المخرجات والإنتهاء من العمل
  • في ملف conf.php يتم تعريف الإعدادات اللازمه للنظام ومن ثم إستدعاء الملف الرئيسي ___core.php الخاص ببيئة العمل لزاز ثم إستدعاء وتحميل الملفات من مجلد /classes/autoinclude/ الملفات في هذا المجلد لا تحتاج إلى كود
    import(file.php)
    وبهذا توفر على نفسك عمل التحميل فقط بوصع الملف في هذا المجلد
    ثم إستدعاء ودمج الكلاسات في الملفات الموجوده في مجلد /classes/autoload/ وفي هذا المجلد يجب أن يحتوي الكلاس داخل الملف على مسمى معين وهيكله خاصه سيتم شرحها لاحقا , ويصبح الكلاس محمل ومستدعى داخل الكلاس الأساسي لزاز ليتم إستدعاؤه كما يلي
    $lezaz->yourclassname();
  • يتم إنشاء المتغير $lezaz وعند تنفيذ الأمر
    echo $lezaz->run();
    في الصفحة الرئيسيه يتم تنفيذ جميع الملفات في طبقة البدء أي الملفات التي بالإسم init.php في كل مجلد داخل مجلد الإضافات /plugin/folder/init.php وفي هذه الطبقه يمكن إنشاء المتصنت listener لكي يتم تنفيذها عند إنشاء حدث في الطبقات الأخرى
  • التحقق من أن الطلب قادم من متصفح أي شخص وليس من بوت ويمكنك بناء على ذلك إتخاذ أي إجراء من خلال الصياد والأحداث hock and events
  • تنفيذ الملفات في الطبقه الثانيه وهي الملفات ذات الإسم /plugin/folder/index.php وهذه الطبقه يفضل أن يتم تنفيذ الأوامر التي يجب فيها أن يكون الزائر شخص وليس بوت مثل تسجيل الدخول وادخال بيانات من النماذج إلى قاعدة البيانات فهناك جدار ناري قبل هذه الطبقه يمكن من خلاله إيقاف العمليات المشبوهه قبل الوصول إلى هذه الطبقه
  • تنفيذ الملفات في الطبقه الثالثه والتي تحمل الإسم /plugin/folder/footer.php وفي هذه الطبقه يمكنك إكمال أي برمجيه تريدها من الإضافات الأخرى والتي تم تنفيذها في الطبقه السابقه
  • إستدعاء القالب الذي تم التأشير عليه من خلال الداله
    $lezaz->main_template="my_template.inc";
    وفي هذه المرحله يتم التأكد بأن القالب تم تفسيره عبر محرك القوالب لزاز , وفي حال لم يتم تفسيره فسيقوم المفسر تلقائيا بعمليه التفسير ووضع النسخه المفسره في مجلد الكاش كما يقوم المفسر بالتأكد من عدم حدوث تعديلات على القالب وفي حال وجود تعديلات يقوم تلقائيا بحذف النسخه المفسره وإعادة تفسيرها , وفي حال لم يجد ملف القالب فإنه يقوم تلقائيا بإستدعاء قالب 404.inc وسيتم شرح هذا بشكل مفصل في قسم القوالب
  • تنفيذ طبقة الإنهاء وهي الملفات في مجلد الإضافات تحمل الإسم /plugin/folder/term.php
  • طباعه المخرجات والإنهاء

العناوين الذكيه - Router


› ماهي العناوين الذكيه؟

هي نظام يعمل على جعل العنوان في المتصفح مقروء ويمكن أن يوضح معني الصفحة وماهي الكلمات المفتاحيه لها وبذلك تعمل هذه العناوين على أرشفه صحيحه لمحركات البحث وتعطي لصفحاتها قيمة أكبر ليصل لها أكبر عدد من المهتمين بمحتوى الصفحة , فيما مضى كنا نستخدم المتغيرات لمعرفة مايطلبه المستخدم وذلك عن طريق روابط كهذا الرابط
http://www.site.com/?p=about_us&c=amman
وكما ترى فإن الرابط لايعبر عن محتوى الصفحة , الآن يمكنك إستخدام مثل هذا الرابط لإنشاء نفس الرابط السابق
http://www.site.com/about_us/amman/
وهذه أمثله لكيفيه إستخدام الروابط وأيضا التخلص من المخترقين والمخربين وذلك من خلال الفلتره والتحقق التلقائي لجميع المدخلات

› الإستخدام :

<? php
        // هنا يتم تنفيذ الأمر عند إستدعاء الرابط   
        // site.com/hi or site.com/hi/
        $lezaz->router('/hi', function(){
            echo 'HI'; // site.com/hi/ >> "HI"
        });

        // يتم تنفيذ الأمر التالي عند إستدعاء الرابط متبوعا بأي قيمة أخرى مثل 
        // site.com/hi/1 or site.com/hi/my_url/any_other_url/any/any
        $lezaz->router('/hi/@*', function(){
            echo 'HI'; // site.com/hi/me >> "HI"
        });

        // في هذا المثال نفس المثال السابق ولكن نريد أخذ القيمة المتبوع بكلمة هاي 
        $lezaz->router('/hi/@*', function($e){
            echo 'HI and '.$e; // site.com/hi/me >> "HI and me"
        });


        // هنا نريد إستخدام أكثر من رابط لتنفيذ الأوامر 
        $lezaz->router(array('/hi/','/my/','/any/other/word/'), function(){
            echo 'hi my any other word'; // site.com/my/ >> "hi my any other word"
        });

        /*في هذا المثال نريد إستخدام المكتبه الرئيسيه لزاز داخل الداله مثلا لتغيير القالب إلى الإسم الذي نريده لعمل إستدعاء لهذا القالب 
        , في هذه الحاله نحتاج إلى إستخدام المكتبه ونكتب الكود بالطريقه التاليه 
        */
        $lezaz->router('/admin/@str', function($b) use ($lezaz) {
            $lezaz->main_template = '{template}admin/'.$b; // site.com/admin/myfile >> load /template/admin/myfile.inc            
        });

        // بعض الأمثله السريعه 
        $lezaz->router(array('/test/@num/@str', 'test'), function($num,$str) use ($lezaz) {    
                $lezaz->main_template = '{template}admin/test'; // إستدعاء القالب تست من المجلد أدمن داخل مجلد القوالب الرئيسي 
                echo "Number=$num & String=$str";   // طباعه المتغيرات القادمة من الرابط ويجب أن تكون رقم ثم نص 
                //الرباط يكون كالتالي 
                // http://site.com/test/1/test
        });


› الرموز أو المفاتيح :


'@num' => '([0-9\.,]+)', // رقم ويمكن أن يحتوي على الفارزه والنقطه
'@alpha' => '([a-zA-Z]+)',  // حروف كبيره وصغيره فقط 
'@alnum' => '([a-zA-Z0-9\.\w]+)', // حروف كبيرة وصغيره بالإضافه إلى الأرقام والنقطه  
'@str' => '([a-zA-Z0-9-_\.\w]+)', //  حروف كبيرة وصغيره بالإضافه إلى الأرقام والنقطه وإشارة الناقص والشرطه 
'@*' => '(.*)', // يقبل كل الحروف والرموز 
'@date' => '(([0-9]{1,2})\/([0-9]{1,2})\/(([0-9]{2})(.{0}|.{2})))', // التاريخ بفورمات كالتالي 00/00/0000
'@null' => '^'); // لايقبل أي حرف , يجب أن يكون فارغ 

› إضافة مفتاح جديد

ماذا لو أردنا مثلا إضافة مفتاح جديد للتاريخ بحيث تكون الفورمات كالتالي
00-00-0000
يمكننا ذلك من خلال إضافة مفتاح عن طريق الكود التالي ولكن يجب الإنتباه إلى أن عمليه إضافة المفتاح يجب أن تتم قبل كود العنوان



$lezaz->add_router('@mydate','(([0-9]{1,2})-([0-9]{1,2})-(([0-9]{2})(.{0}|.{2})))');
        $lezaz->router('/@mydate', function($date) {
           echo "your date is $date";        
        });
// url : http://site.com/1-7-2001

› مثال

قم بإنشاء مجلد داخل مجلد الإضافات بإسم
/plugin/my_test/ أنشيء ملف بإسم /plugin/my_test/index.php وأكتب هذا الكود داخله
<? php
/* سيتم إستدعاء القالب     
/template/my_template/test.inc
عند كتابة العنوان التالي 
http://your_domain.com/test or http://your_domain.com/test/any_thing
*/
$lezaz->router(array('/test/@*', 'test'), function($file) use ($lezaz) {    
 $lezaz->main_template = '{template}my_template/'.$file;    
});


الآن أنشيء مجلد داخل مجلد القوالب بإسم /template/my_template/ ثم أنشئ ملفات داخل المجلد بإسم /template/my_template/test.inc /template/my_template/other.inc وقم بإضافة هذا الكود داخل الملفات بالترتيب
<html>
this is <b>test.inc</b> content!
</html>
<html>
this is <b>other.inc</b> content!
</html>
الآن عند الدخول إلى الرابط /test/test يجب رؤية مافي داخل الملف الأول test.inc
وفي حال تصفح الرابط /test/other ستظهر محتويات الملف الثاني other.inc
وفي الحاله الأخيرة وهو الدخول إلى أي رابط غير متوفر الملف له مثل /test/anyword ستظهر لنا عبارة تفيد بأن القالب غير متوفر

الأحداث والصياد "زناد وتنصت"

الأمر هنا وكأننا نصطاد , فلدينا زناد ومستمع للطلقه أو الحدث
قبل كل هذا لنرى مايحدث فعليا ... هناك مساعد للصياد يمتلك أداوت مثل الشبكه أو كلب صيد وهذا الصياد ينتظر الزناد وذلك بالإستماع إلى صوت الطلقه , عند إطلاق الرصاصه يقوم المساعد بتنفيذ أمر إطلاق كلب الصيد أو تهيئة الشباك
هذا مايحدث فعليا في هذه المرحله , فهناك صياد trigger ولدينا أيضا مستمع للزناد وهو عباره عن داله لتنفيذ الأوامر listen
الأحداث أو الزناد مثل الحصول على مخرجات التطبيق وقبل عرضها يتم عمل حدث لتتمكن من خلال المتنصت من عمل فلترة لهذه المخرجات , أيضا هناك مثال آخر , عند تخزين مدخلات في قاعدة البيانات هنا نحتاج إلى حدث لنتمكن من معرفة المعرف الخاص بهذه المدخلات ويمكن أن نحتاج إلى المدخلات قبل إدخالها لقاعدة البيانات حتى نتمكن من فلترة بعضها مثلا
هناك الكثير من الأمثله تستوجب مثل هذه التقنيه لجعل النظام الخاص بك مرن إلى أبعد حد

» الإستخدام

إضافة مستمع , ويكون في الطبقه العليا لنظمن سماع الزناد في أي طبقه أسفلها , أي في ملفات ال init.php

//$lezaz->listen($tag,$callable,$priority);
     // $tag: الحدث .
    // $callable: داله لتنفيذ الأوامر
    // $priority:الأولويه وهو رقم كلما كان أقل كانت أعلى 
    // examples:
 $lezaz->listen('test.action.1', function(){
        echo "this is 1 ...<br/>";
    });
    $lezaz->listen('test.action.1', function(){
        echo "this is 2 ...<br/>";
    });    
    $lezaz->listen('test.action.1', function($arg1,$arg2){
        echo "this is 3 ...", " you have passed an argument it is: <br/>", $arg1,'|',$arg2;
    });   
// لتنفيذ الأوامر السابقة فقط قم بضغط الزناد عبر الأمر 
$lezaz->trigger('test.action.1',array( 'arg_1','arg_2'));
/*
النتيجه 
this is 1 ...
this is 2 ...
this is 3 ... you have passed an argument it is: 
arg_1|arg_2
*/


// نفس المثال السابق ولكن بأولويه معينه لكل أمر 
$lezaz->listen('test.action.1', function(){
        echo "<br/>this is 1 ...<br/>";
    },5);
    $lezaz->listen('test.action.1', function(){
        echo "<br/>this is 2 ...<br/>";
    },10);    
    $lezaz->listen('test.action.1', function($arg1,$arg2){
        echo "<br/>this is 3 ...", " you have passed an argument it is: <br/>", $arg1,'|',$arg2,'<br/>';
    },0);   

$lezaz->trigger('test.action.1',array( 'arg_1','arg_2'));
/*
النتيجه 
this is 3 ... you have passed an argument it is: 
arg_1|arg_2

this is 1 ...

this is 2 ...
*/


// مثال لكيفية إستخدام الفلاتر 
// إرجاع القيمة الأوليه مع أقواس 
 $lezaz->listen('test.filter.1', function($word){
        return "($word)";
    });

    // إرجاع آخر تعديل على القيمة بين إشارتي ناقص 
    $lezaz->listen('test.filter.1', function($word, $last_filtered){
        return "-$last_filtered-";
    });

    // إرجاع القيمة الأوليه والقيمة المعدله بين إشارتي يساوي وبتنسيق خط كبير 
    $lezaz->listen('test.filter.1', function($word, $last_filtered){
         return "$word:<h1>=$last_filtered=</h1>";
    });
    
    // لنختار كلمة 
    $myword = 'test';
    // الآن نمرر الكلمة على الفلاتر السابقة من خلال ضغط الزناد
    echo $lezaz->trigger('test.filter.1', $myword);
/*
النتيجه 
test:<h1>=-(test)-=</h1>
*/

» أحداث مدمجه وجاهزه للإستماع

هناك أحداث كثيرة مدمجه مع النظام ويمكن أن تزداد في كل تحديث كما تحتوي بعض الإضافات على أحداث جاهزه لتتمكن من التعامل مع المخرجات وتدمج الإضافات أو أعمالك مع هذه الإضافات

    // new.guset            --->  زائر جديد كليا ويمكن أن يكون بوت
    // session.guset        --->  بداية جلسه لزائر حقيقي أي شخص تم التأكد منه
    // requset.guset        --->  زائر يقوم بالتصفح
    // layer.init.start     --->  بدء تنفيذ ملفات الطبقة الأولى 
    // layer.init.done      --->  الإنتهاء من تنفيذ ملفات الطبقه الأولى 
    // layer.index.start    --->  بدء تنفيذ ملفات الطبقة الثانيه 
    // layer.index.done     --->  الإنتهاء من تنفيذ ملفات الطبقه الثانيه 
    // layer.footer.start   --->  بدء تنفيذ ملفات الطبقة الثالثه 
    // layer.footer.done    --->  الإنتهاء من تنفيذ ملفات الطبقه الثالثه 
    // layer.term.start     --->  بدء تنفيذ ملفات الطبقة الرابعه 
    // layer.term.done      --->  الإنتهاء من تنفيذ ملفات الطبقه الرابعه 
    // output.filter        --->  فلتر المخرجات قبل الطباعه
    

مساعد

› ثوابت

SITE_DOMAIN إسم النطاق مثل
site.com
SITE_PATH المسار الفعلي للمجلد الجذر الخاص بالموقع أو التطبيق الذي نعمل عليه
/home/antfolder/www/ or c:/xampp/htdocs/www/
SITE_IP عنوان الآي بي للموقع
SITE_LINK رابط الموقع مثل
http://site.com/
Version رقم النسخة الخاصه بلزاز الذي تعمل عليه
TEMPLATE_PATH المسار الحقيقي لمجلد القوالب
UPLOADED_PATH المسار الحقيقي لمجلد الملفات المحمله
CLASSES_PATH المسار الحقيقي لمجلد ملفات الكلاس
CACHE_PATH المسار الحقيقي لمجلد الكاش أو النسخ المخبئه
TMP_PATH المسار الحقيقي لمجلد الملفات المؤقته
PLUGIN_PATH المسار الحقيقي لمجلد الإضافات
THEME_PATH المسار الحقيقي لمجلد الثيم أو التصميم الرئيسي داخل مجلد القوالب
TEMPLATE_LINK الرابط أو عنوان الويب لمجلد القوالب
UPLOADED_LINK الرابط أو عنوان الويب لمجلد الملفات المحمله
CLASSES_LINK الرابط أو عنوان الويب لمجلد ملفات الكلاس
CACHE_LINK الرابط أو عنوان الويب لمجلد الكاش أو النسخ المخبئه
TMP_LINK الرابط أو عنوان الويب لمجلد الملفات المؤقته
PLUGIN_LINK الرابط أو عنوان الويب لمجلد الإضافات
THEME_LINK الرابط أو عنوان الويب لمجلد الثيم أو التصميم الرئيسي داخل مجلد القوالب

› أحداث مساعدة تتعلق بالمتغير $lezaz

run(); string تنفيذ نظام لزاز وإرجاع المخرجات جاهزه للطباعه echo $lezaz->run();
address(); string إرجاع عنوان الصفحة التي تم طلبها بالإضافه إلى علامة الإستفهام أو الضم لتتمكن من إضافة متغيرات بعد الرابط echo $lezaz->address(); result >> http://www.site.com/? or http://www.site.com/?id=1&
language(optional $str); string $lezaz->language(optional $str);
إسترجاع اللغه الحاليه أو تحديد لغه أخرى في حال تم تمرير متغير يحمل اللغه الجديد
echo $lezaz->language() // en
$lezaz->language('ar') // set language arabic
set_tpl($tpl) Null لتحديد القالب الذي تريد تنفيذه من مجلد القوالب
لتحديد قالب موجود في مجلد القوالب داخل مجلد بإسم أدمن نكتب كالتالي
$lezaz->set_tpl({template}admin/my_template.inc)
ولتحديد قالب موجود في نفس مجلد الثيم الرئيسي فقط نكتب إسم ملف القالب كما يلي
$lezaz->set_tpl(my_template.inc)
مسميات يمكن إستخدامها داخل القوالب لتحديد رابط المجلد :
{template} , {plugin} , {tmp} , {classes} , {theme} , {cahce}
encrypt($str) string لتشفير النصوص echo $lezaz->encrypt($string);
decrypt($str) string فك تشفير النصوص echo $lezaz->decrypt($string);
go($to,$using) Null لعمل إعادة توجيه بإستخدام عدة طرق
# using HTTP 302
$lezaz->go('page/1');

# using HTTP 301
$lezaz->go('page/1',301);

# using HTML & redirect after 3 seconds
$lezaz->go('page/1','html:3');

# using JS & redirect after 6 seconds
$lezaz->go('page/1','js:6');

# redirect to external url
$lezaz->go('http://google.com','html:8');

statics() Array إرجاع بعض الإحصائيات مثل مدة التنفيذ print_r( $lezaz->statics());
set($key, $value) Null لإضافة متغير لتتمكن من إستخدامه في القوالب أو في صفحات أخرى لأن جميع المتغرات في الملفات التي تنفذ داخل الطبقات ستكون خاصه بالملف الذي هي فيه وهذه الداله تساعدك لنقل المتغير إلى الطبقات الأخرى في حال أردت إستخدامها $lezaz->set('my_var',$my_var);
get($key, $item(optional)) string إرجاع قيمة المتغيرات القادمه من الطريقه $_GET وفي حال عدم وجودها يقوم النظام بالبحث عن المتغيرات التي قمت بإسنادها عن طريق الداله السابقة set()
في حال كان المتغير القادم من الطريقه $_GET عباره عن مصفوفه يمكنك الوصول إلى المستوى الأول من المصفوفه بإستخدام المتغير الثاني $_GET[id] is same $lezaz->get('id');
$_GET[array][item] is same $lezaz->get('array','item');
$lezaz->set('x','1'); echo $lezaz->get('x'); // result is 1
post($key, $item(optional)) string إرجاع قيمة المتغيرات القادمه من الطريقه $_POST
في حال كان المتغير القادم من الطريقه $_POST عباره عن مصفوفه يمكنك الوصول إلى المستوى الأول من المصفوفه بإستخدام المتغير الثاني $_POST[id] is same $lezaz->post('id');
$_POST[array][item] is same $lezaz->post('array','item');
sess($key, $item(optional)) string إرجاع قيمة المتغيرات القادمه من الطريقه $_SESSION
في حال كان المتغير القادم من الطريقه $_SESSION عباره عن مصفوفه يمكنك الوصول إلى المستوى الأول من المصفوفه بإستخدام المتغير الثاني $_SESSION[id] is same $lezaz->sess('id');
$_SESSION[array][item] is same $lezaz->sess('array','item');
cons($key, $item(optional)) string إرجاع قيمة المتغيرات القادمه من الطريقه defined
في حال كان المتغير القادم من الطريقه defined عباره عن مصفوفه يمكنك الوصول إلى المستوى الأول من المصفوفه بإستخدام المتغير الثاني SITE_DOMAIN is same $lezaz->cons('SITE_DOMAIN');
ANYCONSIPT[item] is same $lezaz->cons('ANYCONSIPT','item');
setsetting($parametr, $value = '') Null لحفظ متغيرات على مستوى عالمي ولمدة طويله , يمكن إستخدام هذه المتغيرات كإعدادات للموقع مثل إسم الموقع وماهي اللغه الرئيسيه
يتم حفظ البيانات داخل ملف في القالب الرئيسي بإسم setting.ini بشكل مشفر للحمايه القصوى $lezaz->setsetting('my_var','my value');
لحذف متغير فقط قم بإسناد المتغير بدون قيمه $lezaz->setsetting('my_var'); // delete my_var
setting($key, $defult (optional)) string لإسترجاع قيمة متغير تم حفظها كإعداد من الداله
echo $lezaz->setsetting('my_var','my value');
echo $lezaz->setting('my_var'); // result : my value
في حال أردت وجود قيمه إفتراضيه يمكنك إستخدام المتغير الثاني , وفي هذه الحاله إذا لم توجد قيمة للمتغير ستظهر القيمة الإفتراضيه
echo $lezaz->setting(Null,'my defult value'); // result : my defult value
set_msg($msg, $type) Null لإضافة رسائل أو تنبيهات يمكن إظهارها للمستخدم
المتغير الأول نص الرساله والمتغير الثاني نوع الرساله وأنواع الرسائل هي
danger success warning info
$lezaz->set_msg('this is error with your file!', 'danger')
msg() string إسترجاع كامل الرسائل التي تم حفظها في الطلب echo $lezaz->msg();

قواعد البيانات "$lezaz->db"

يمكنك إستخدام أي نوع من أنواع قواعد البيانات ولكن لم يتم التأكد إلا من MYSQL حتى الآن , يمكنك تجربة أي قاعدة بيانات وإخبارنا بنجاحها

» $lezaz->db

لدينا الكثير من الدوال التي توفر عليك الوقت والجهد كما أننا تركنا لك المجال لإستخدام الدوال الجاهزه في PDO
transaction

                        $lezaz->db->transaction($type);
                        //$type = B=begin, C=commit & R=rollback
                        

execute

                        $lezaz->db->execute($sp_query);
                        //تنفيذ إستعلامات عن طريق دوال بي أتس بي الجاهزه 
                        

ShowTables

                        $lezaz->db->ShowTables();
                        // عرض جميع الجداول في قاعدة البيانات داخل مصفوفه  

print_r($lezaz->db->ShowTables());
/*
Result:
Array
(
    [1] => Array
        (
            [Tables_in_mydatabase] => pages
        )
    [2] => Array
        (
            [Tables_in_mydatabase] => memb_perm
        )
    [3] => Array
        (
            [Tables_in_mydatabase] => members
        )  
)
*/
                        

tableExists

$lezaz->db->tableExists($table);
//التاكد من وجود الجدول في قاعدة البيانات , تعيد الداله 
//True , False 
                        

create_table

$lezaz->db->create_table($tbl_name, $fields = array())
// تستخدم هذه الداله لإنشاء جدول والتعديل عليه مثل إضافة حقول جديده أو حذفها أو تغيير نوعها 
$field['info1']='VARCHAR(250)';
$field['info2']='int(11)';
$field['any_field']='VARCHAR(15) NOT NULL';

$lezaz->db->create_table('my_table',  $field); 

// في حال لم تقم بإنشاء حقل معرف 
// ID 
// سيتم تعريفه بشكل تلقائي 
// وإذا قمت بتنفيذ نفس الكود السابق مع حذف وإضافه حقول أخرى وتغيير نوع أحد الحقول فسيتم تعديل ذلك فورا 

$field['info1']='VARCHAR(20)';
$field['info3']='int(14)';
$field['any_field']='VARCHAR(15) NOT NULL';

$lezaz->db->create_table('my_table',  $field); 

                        

query تتميز هذه الداله بعمل نسخة مخبئة من النتائج لمدة معينه ممايخفف الضغط عن الخادم في حال أن النتائج لا يتم تحديها طوال فترة معينه , مثل صفحات الموقع الثابته والأخبار والمنتجات فجميعها فقط يتم تحديثها من قبل المدير لذلك فهذه البيانات لاتحتاج إلى إعادة تحميلها لكل زائر ويمكنك جعل مدة حفظ نسخة منها مدة سنه ولا تقلق فالنظام يقوم بحذف النسخ المخبئة في حال إدخال أو تعديل أو حذف أي خبر أو منتج

$lezaz->db->query($query, $cacheTime = 0);
// للإستعلام عن جمل سيكول وإرجاع مصفوفه بجميع النتائج 
// المتغير كاش تايم الثاني إختياري , في حال لم يتم إضافته فسيتم أخذ نسخة مخبئة مدة الإعداد 
//SQL_CACHE
//في حال لم ترد أخذ نسخة مخبئة وتريد البيانات مباشرة من قاعدة البيانات فقط قم بجعل قيمة الكاش واحد 

  $rows = $lezaz->db->query("select * from user");
         if (is_array($rows))
        foreach ($rows as $row) {            
            echo "$row[id] | $row[name] | $row[age] \n";
        }
//result
1 | afnan | 8 
2 | ahmed | 10 
3 | bassam | 36 
                        

num_row لإرجاع عدد السجلات الناتجه عن جملة إستعلام سيكول

$lezaz->db->num_row($query);
echo  $lezaz->db->num_row("select * from user"); // 43
//  النتيجه تكون رقم وهو عدد السجلات
                        

row

row($table, $condetion, $row = '*');
//$table : إسم الجدول
//$condetion :  الشرط 
//$row :  الحقول التي سيتم إرجاعها , وهو إختياري والقيمة التلقائيه جميع الحقول , في حال تم وضع إسم حقل واحد يتم إرجاع قيمة نصيه وهي قيمة الحقل أما تركها فارغا فيتم إرجاع مصفوفه 


// إعادة العمر من جدول المستخدمين للحقل إسم يساوي أفنان
echo $lezaz->db->row('user', 'name="afnan"','age'); // 8

// إعادة جميع الحقول من الجدول مستخدمين للحقل إسم يساوي أفنان
print_r(  $lezaz->db->row('user', 'name="afnan"'));
/*
Array
(
    [id] => 1
    [name] => afnan
    [age] => 8
)
*/

// إذا كان الشرط رقم سيعتبر أنك تبحث عن الآي دي رقم 1 مثلا 
print_r(  $lezaz->db->row('user', 1));
/*
Array
(
    [id] => 1
    [name] => afnan
    [age] => 8
)
*/
                        

save حفظ أو تعديل أي بيانات أي عمليات insert & update المتغيرات المطلوبه هي إسم الجدول والحقول مع قيمتها كمصفوفه لعمليه الإدخال أما التعديل فتحتاج إلى باقي المتغيرات وهي الشرط ونوع العمليه يتم جعل قيمتها واحد

$lezaz->db->save($table, $feilds, $condetion = '', $type = 0) ;
/*
$table : إسم الجدول
$feilds : الحقول كمصفوفه
$condetion : إختياري , الشرط 
$type : إختياري , صفر معناها إدخل وواحد معناها تعديل 
*/
$fields['name']='bassam';
$fields['age']='36';

// إدخال البيانات في قاعدة البيانات
$lezaz->db->save('user',$fields);

// تعديل البيانات بشرط الإسم يساوي أفنان
$lezaz->db->save('user',$fields,'name="afnan"',1);
                        

delete لحذف سجل من قاعدة البيانات , المتغير الأول لإسم الجدول والثاني للشرط
يمكن أن يكون الشرط فقط رقم ليتم حذف الآي دي لهذا السجل

$lezaz->db->delete($table, $condetion);
/*
$table: إسم الجدول
$condetion: الشرط 
ترجع الداله مصفوفه بالسجلات التي تم حذفها
*/

print_r($lezaz->db->delete('user','`name`="bassam"'));
/*
Array
(
    [1] => Array
        (
            [id] => 8
            [name] => bassam
            [age] => 36
        )
    [2] => Array
        (
            [id] => 9
            [name] => bassam
            [age] => 36
        )
)
*/

// لحذف السجل الذي له آي دي 5  أي 
// delete from user where id=5 
$lezaz->db->delete('user',5)); 
                        

التعامل مع الملفات $lezaz->file

هذه الدوال خاصه بالملفات كتحميلها والتعامل مع والكتابه والقراءه وغيرها من الأمور

» $lezaz->file

save
لحفظ الملفات المرفوعه

$lezaz->file->save($file, $saveto = '', $validation = '');
/*
$file: إسم المتغير القادم من المصفوفه $_FILES
$saveto: المجلد الذي سيتم حفظ الملف به ويكون وداخل المجلد أبلوديدuploaded
$validation: للتحقق من الملف ويكون التحقق بمصفوفه 
*/

if ($_FILES[file1]) {
    $valid[whitelist] = array("gif", "png", "jpg", "jpeg");
    $valid[blacklist] = array("exe", "php");
    $valid[size] = array(20, 30);

    echo $lezaz->file->save($_FILES[file1], 'folder', $valid);
}

/*
result if success 
1452285393.png
>> file save in : /uploaded/folder/1452285393.png

* result if error type 
[danger] [ERR_TYPE]full.txt 

* result if error size 
[danger] [ERR_SIZE]23_pv-micro-inverters-105259-6801101.jpg:52.267KB 
*/
                        
mkdir
لإنشاء مجلد حتى لو كان المجلد الأب غير موجود فيتم إنشاؤه

$lezaz->file->mkdir($path);
/*
$path : مسار المجلد الذي نود إنشاؤه 
ترجع الداله صح أو خطا لتأكيد نجاح العمليه أو فشلها 
*/

echo $lezaz->file->mkdir(UPLOADED_PATH.'bassam'); // 1 
echo $lezaz->file->mkdir(UPLOADED_PATH.'bas~ ^$#*&*(`sam'); // Null
echo $lezaz->file->mkdir(UPLOADED_PATH.'a/s/d/f/g/h'); // 1 

 
                        
write
إنشاء ملف نصي وحذف الملف إن كان موجودا وإعادة إنشاؤه

$lezaz->file->write($file, $content);
 /*
$file : إسم الملف مع المسار كامل 
$content : المحتوى الخاص بالملف لإضافته 
لا تعيد الداله أي قيمة 
*/

$lezaz->file->write(UPLOADED_PATH.'a/a.txt', "this is a test \n new line here!");
/*
create file in /uploaded/a/a.txt with content:
this is a test 
 new line here!
*/

                        
listfile
لإرجاع مصفوفه تحتوي على قائمة بجميع الملفات في مجلد معين بالإضافة لإمكانيه البحث داخل المجلدات الفرعيه للمجلد المطلوب , كما يمكنك البحث عن ملفات ذات إمتداد معين

$lezaz->file->listfile($dir, $ext = '', $sub = 0) ;
 /*
$dir: مسار المجلد المطلوب البحث فيه 
$ext: إختياري , للبحث عن إمتداد ملفات معينه
$sub: إختياري , للبحث في المجلدات الفرعيه في حال كان له قيمه 
تعيد هذه الداله مصفوفه بجميع الملفات 
*/

$dir = UPLOADED_PATH;
print_r($lezaz->file->listfile($dir));
/*
Array
(
    [C:\xampp\htdocs\fw\uploaded\] => Array
        (
            [0] => .htaccess
            [1] => 1451032564.png
        )

    [C:\xampp\htdocs\fw\uploaded\a/] => Array
        (
            [0] => a.txt
        )

    [C:\xampp\htdocs\fw\uploaded\setting/] => Array
        (
            [0] => 1451033222.png
        )

    [C:\xampp\htdocs\fw\uploaded\site/] => Array
        (
            [0] => 1447581949.png
        )

)
*/


print_r($lezaz->file->listfile($dir, $ext = 'png', 1));
/*
Array
(
    [C:\xampp\htdocs\fw\uploaded\] => Array
        (
            [0] => 1451032564.png
        )

)
*/

                        
view
لعرض ملفات مخبئة بصيغه HTML

$lezaz->file->view($cachefile);
 /*
$cachefile: مسار ملف الويب الكامل
*/

$lezaz->file->view(UPLOADED_PATH.'a/a.txt');
/*
result wll be content of file : 

this is a test 
 new line here!

*/
                        

النصوص $lezaz->string

تتضمن لزاز إضافة البحث داخل النصوص لتوفير الوقت والجهد , وهي دوال بسيطه يمكن من خلالها البحث عن أي نص بكل سهوله

» $lezaz->string

after

$lezaz->string->after($strthis, $inthat);
 
$strthis='abscdefsghijklmnopqrstuvswxyz';
$find= $lezaz->string->after('s',$strthis );
echo "result search for 's' after $strthis is : \n $find";

/*
result search for 's' after abscdefsghijklmnopqrstuvswxyz is : 
 cdefsghijklmnopqrstuvswxyz
*/
                        
after_last

$lezaz->string->after_last($strthis, $inthat);
 
$strthis='abscdefsghijklmnopqrstuvswxyz';
$find= $lezaz->string->after_last('s',$strthis );
echo "result search for 's' after_last $strthis is : \n $find";

/*
result search for 's' after_last abscdefsghijklmnopqrstuvswxyz is : 
 wxyz
*/

                        
before

$lezaz->string->before($strthis, $inthat);
 
$strthis='abscdefsghijklmnopqrstuvswxyz';
$find= $lezaz->string->before('s',$strthis );
echo "result search for 's' before $strthis is : \n $find";

/*
result search for 's' after_last abscdefsghijklmnopqrstuvswxyz is : 
 ab
*/

                        
after_last

$lezaz->string->before_last($strthis, $inthat);
 
$strthis='abscdefsghijklmnopqrstuvswxyz';
$find= $lezaz->string->before_last('s',$strthis );
echo "result search for 's' before_last $strthis is : \n $find";

/*
result search for 's' before_last abscdefsghijklmnopqrstuvswxyz is : 
 abscdefsghijklmnopqrstuv
*/

                        
between

$lezaz->string->between($strthis, $that, $inthat);
 
$strthis='abscdefsghijklmnopqrstuvswxyz';
$find= $lezaz->string->between('s','s',$strthis );
echo "result search for between 's' and 's' in $strthis is : \n $find";

/*
result search for between 's' and 's' in abscdefsghijklmnopqrstuvswxyz is : 
 cdef
*/

                        
between_last

$lezaz->string->between_last($strthis, $that, $inthat);
 
$strthis='abscdefsghijklmnopqrstuvswxyz';
$find= $lezaz->string->between_last('s','s',$strthis );
echo "result search for between_last 's' and 's' in $strthis is : \n $find";

/*
result search for between_last 's' and 's' in abscdefsghijklmnopqrstuvswxyz is : 
 tuv
*/