exchanging

فارسي نيوز تمام شد؛ ققنوس برميخيزد

شروع موضوع توسط sama_sally ‏21 نوامبر 2007 در انجمن PHP

  1. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    سلام دوستان. برگشتم خونه!‌
    وقتي اينجا پست ميزنم احساس آرامش ميكنم.

    سر زدم كه به اطلاع برسونم پروژه فارسي نيوز كه همه تون ميشناسيد؛ terminate شد. در عوض پروژه ي جديدي رو با اسم ققنوس "Phoenix" روي خط مشي فارسي نيوز شروع كرديم . تا حد زيادي هم پيش رفتم.
    قصد دارم تا كمي در موردش حرف بزنم تا متخصصات قديمي كه ارادتمندشون هستم و دوستاي جديد نظرايتشون رو ارائه كنن كه حتما ازشون استفاده بشه.

    ققنوس بر خلاف فارسي نيوز كه "سيستم مديريت خبري" بود يه سيستم مديريت "محتوي" ست. البته همچنان subinix* ه news بصورت پيشفرض روي سيستم نصب هست.
    ققنوس با استفاده از امكانات جديد php5 برنامه نويسي ميشه. به طور كامل از برنامه نويسي شي گرا استفاده كرديم. البته برخلاف فارسي نيوز كه هسته اي وجود نداشت و فقط فايل ها توي هم Include ميشدن، اين دفعه سعي كرديم يه API كاملا منظم براي هسته بنويسيم و يه developer بتونه با استفاده از اين API امكانات هسته رو بسط (extend) بده. كه بازم OOP تو اين قسمت معجزه ميكنه. البته ميدونم كه خيلي از پروژه هاي كد باز معروف مثل مامبو اينطوري هستن ولي خوب هيچ كدوم (غير از يكي كه ميشناسم) نوشته ايراني ها نيستن.
    سعي شده رابط كاربري ققنوس مثل فارسي نيوز ساده باشه تا همچنان محبوب كاربران باقي بمونه. چون الان با اينكه سايت فارسي نيوز بسته شده هنوز ايميل هايي رو ميگيريم كه دوستان درخواست نسخه هاي جديد فارسي نيوز رو براي آپگريد ميكنن و اين نشان از موفقيت داره.

    راستي فارسي نيوز مقام اول مسابقات كامپيوتر كشوري امسال رو توي نيشابور كسب كرد.

    به هر حال اگر كمك و راهنمايي كنيد مديون شما ميشيم. (منو و پدرام) .
    Developer هاي ققنوس من و پدرام هستيم فعلا (كه البته فقط ما دو تا هم باقي ميمونيم).
    پروژه فارسي نيوز براي هميشه بسته شد و هيچ وقت ادامه داده نخواهد شد (البته شركت داده گستر كيميا يه Release از فارسي نيوز رو با تغيير نام به "كيميا نيوز" از ما خريده كه اون هم آپديت نخواهد شد).
    سعي ميكنيم يه سيستم Upgrade هم براي port ه فارسي نيوز به ققنوس بنويسيم.

    منتظر نظرات هستم.
     
  2. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    خيلي خوبه موفق باشي
    نظر خاصي ندارم تا يك حدودي بيرون ندي نميشه كم ك كاستي اش رو ديد و نظر داد
     
  3. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    به به حامد جان. دلم برات تنگ شده بود.
    منظورم اينه كه اگر نظري در برنامه نويسي داري.. يا ايده هاي جديد...
     
  4. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    اينم يه قسمت: فايل lang.class.php براي لود كردن فايل هاي زبان با پسوند plf (Phoenix Language Files( .
    از كلاس هاي داخلي cache و file استفاده ميكنه. (كلاس file با unicode سازگار شده) :D
    PHP:
    <?php

    /**
     * Phoenix - Content Management System
     * Copyright (C) 2008 Phoenix Foundation <[email protected]>
     * www.p5x.org
     * 
     * This program is free software; you can redistribute it and/or 
     * modify it under the terms of the GNU General Public License 
     * as published by the Free Software Foundation; either version 2 
     * of the License, or (at your option) any later version. 
     * 
     * This program is distributed in the hope that it will be useful, 
     * but WITHOUT ANY WARRANTY; without even the implied warranty of 
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     * GNU General Public License for more details. 
     * 
     * @author  Sallar Kaboli, Pedram Azimaie
     * @copyright  (C) 2008 Phoenix Foundation
     * @license GNU Genral Public License
     * @version  0.1
     */

    defined("IN_PHOENIX") or die("Core not loaded.");


    /**
     * Phoenix language handling class
     * TODO: LANGUAGE INFO
     */
    class p5xLang {

        private 
    $init false;
        private 
    $dic = array();
        private 
    $syslang "en_US";

        public function 
    __construct(){
            
    $this->path constant("ROOTPATH") . "/language/";
            
    self::init();
        }

        public function 
    init($custom false) {
            global 
    $p5x;
            
            if (
    $this->init[md5($custom)] == false) {
                
    $c_lang $p5x['Core']->getDefaultLang();
                
    $cache $p5x['Cache']->Get("P5XLANG" $custom"CACHE" $c_lang);

                if(
    $cache != false) {
                    
    $this->init[md5($custom)] = true;
                    
    $this->dic array_merge($this->dic$cache);
                }
                elseif(
    $custom != false) {
                    
    $lang self::Load($custom);
                    if(
    $lang != false){
                        
    $this->dic array_merge($lang,$this->dic);
                        
    $p5x['Cache']->Add("P5XLANG" $custom"CACHE" $c_lang$lang);
                        
    $this->init[md5($custom)] = true;
                    }
                }
                else {
                    
    $lang_default self::Load(false,true);
                    
    $lang self::Load();
                    
    $lang array_merge($lang,$lang_default);
                    if(
    $lang != false){
                        
    $p5x['Cache']->Add("P5XLANGCACHE" $c_lang$lang);
                        
    $this->init[md5($custom)] = true;
                        
    $this->dic array_merge($this->dic$lang);
                    }
                }
            }
            if(
    $lang != false) {
                return 
    true;
            }
            else {
                return 
    false;
            }

        }

        public function 
    t($word$custom false){
            
    self::init($custom);
            
    $word strtolower($word);
            
    $result array_key_exists($word,$this->dic);
            if(
    $result != false){
                return 
    $this->dic[$word];
            }
            else {
                return 
    false;
            }
        }
        
        private function 
    Load($custom false$parent false){
            global 
    $p5x;
            
            
    $lang $p5x['Core']->getDefaultLang();

            if(
    $parent != false){
                
    $lang $this->syslang;
            }
            
    $file $this->path $lang ".plf";
            if(
    $custom != false){
                
    $file $this->path $custom "." $lang ".plf"
            }
            
    $lang $p5x['Files']->Read($filetruetruetrue);
            if(
    $lang != false){
                
    $lang explode("~~~",$lang);
                
    $info trim($lang[0]);
                
    $lang trim($lang[1]);

                if(
    $parent != false){
                    
    $info_ explode("\n",$info);

                    foreach (
    $info_ as $row){
                        
    $row explode(":",$row);
                        
    $this->dic['INFO__'.$row[0]] = trim($row[1]);
                    }
                }

                
    $lang_ explode("---",$lang);
                
    $lang = array();
                foreach (
    $lang_ as $row){
                    
    $row trim($row);
                    if(
    $row != ""){
                        
    $row explode("\n",$row);
                        
    $lang[strtolower($row[0])] = trim($row[1]);
                    }
                }
            }
            return 
    $lang;
        }
        
    }
     
  5. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    خوب خيلي خوبه ولي حواست به باگ rfi شديد باشه كه يكم بي دقتي كني در اين نوع نوشتن زياد پيش مي اد
    ايده ژيشنهادي من ويرايش قالب به صورت انلاين در خود برنامه بزار
    يعني طراحي قالي و تغيير قالب موجود در مديريت برنامه
    خود ما براي يه برنامه مون داريم مي زاريم
     
  6. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    حتما حامد جان.
    در مورد اين باگ بيشتر توضيح ميدي؟
     
  7. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    مثلا يه ادرسي مثل زبان رو مي خواهي بگيري و از فولدرش متغيير هاي اون زبان رو include كني
    و اون متغيير زبان رو با باز بودن رجيستر گلوبال به جاي ديگه فرستاد و صفحه ديگري رو داخل صفحه اي load كرد
    يعني : REMOTE FILE INCLUDE
     
  8. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    هااااااااا؟؟؟!!!!!!
     
  9. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    فرض يكي يه متغيير رو با post يا get بگيره و اين طوري عمل كنه
    PHP:
    include ($get.".php");


    با جعل متغيير ميشه يه فايل خارج از سايت و روي هاست حمله كننده رو روي سرور تو اجرا كرد
    خيلي اين مدل باگ ها زياد هست rfi , lfi بايد خوب بشناسي
    اگر خواستي open source كني مواظب اينها باش كه زود پيدا ميشه
     
  10. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    آها! اينطوري ميگفتي بابا !‌ يه لحظه برقم پريد‌! حتما بابا. با تجربه م خير سرم. حتما مواظبم . اين جور باگا از همه چي خطرناك تره !
     
  11. hichkas021

    hichkas021 Registered User

    تاریخ عضویت:
    ‏7 می 2006
    نوشته ها:
    189
    تشکر شده:
    0
    محل سکونت:
    No Where
    سلام سالار جان.
    امیدوارم موفق باشین. تا وقتی که نسخه ای از برنامه بیرون نیاد هم که نمیشه نظر داد ، ولی می خواستم بگم یه فکری هم برای Plug in ها بکن ( یعنی یه ذره راحت تر بشه واسش Plug in نوشت، آخه تو فارسی نیوز پوشه پلاگین بود ولی ما آخرش هم سر در نیاوردیم چیه!!!)
     
  12. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    راستي نگفتي open source ميدي بيرون ؟؟ :D

    به نظر من يك قسمت هم بزار كه يك سري كد بشه به صورت plug in بهش داد در ديتابيس نگه داره مثلا xml بهشبديم و نگه داره و اجرا بتونه بكنه از داخل ديتابيس مثل vbulletin خيلي قدرتش رو بالا خواهد برد

    من تست كردم خوب جواب ميده
     
  13. avajang.com .leftavajang.com.right
  14. amnhak

    amnhak Registered User

    تاریخ عضویت:
    ‏23 ژوئن 2005
    نوشته ها:
    866
    تشکر شده:
    0
    محل سکونت:
    www.freedanload.com
    rss reader هم براش بگذار که البته بشه هم بک آپ ازش به صورت rss گرفت هم به صورت داخلی خود برنامه
    مشخصات کلی رو مینوشتی که چیا توی فکرت و میخوای چه امکاناتی برای اول کار داشته باشه میشد یه نظراتی داد که چیا لازمه که براش بگذاری.
    امیدوارم که موفق باشی
     
  15. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    سلام. مرسي از نظراتتون. آره كاملا Open Source و تحت قوانين GNU GPL ؛ توي كد هم اگر ديده باشي نوشته شده.
    Plugin ها يكي از قسمت هاي اصلي سيستم هست. البته بجاي ماژول از واژه ي ساختگي Subinix استفاده كرديم. بجاي Pluggin از واژه Egginix و بجاي Sidebar gadgets از Glue استفاده كرديم.
     
  16. vaheb

    vaheb کاربر تازه وارد

    تاریخ عضویت:
    ‏14 اکتبر 2007
    نوشته ها:
    134
    تشکر شده:
    0
    سالار جان در مورد امنيت گفتي اينجا چيزي نيست !!!!!!!!
     
  17. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    پست 9 رو ببين!
     
  18. Parsisoft

    Parsisoft کاربر تازه وارد

    تاریخ عضویت:
    ‏23 اکتبر 2006
    نوشته ها:
    39
    تشکر شده:
    0
    سالار جان در مورد کدی که گذاشتی.
    چرا این کار رو نکنیم که بیایم یه فایلی مثل fa.xxx داشته باشیم که توش یه آرایه انجمنی هست به اسم مثلا $txt که لغات و ترجمه شون توش هست.
    حالا همه جا $language.xxx رو اینکلود میکنیم و تموم.
    PHP:
    echo $txt['welcome']
     
  19. vaheb

    vaheb کاربر تازه وارد

    تاریخ عضویت:
    ‏14 اکتبر 2007
    نوشته ها:
    134
    تشکر شده:
    0
    مرسي خوب بود .
    آقا اگه بخواهيم CMS به صورت TxT Base بنويسم چه پيشنهادي دارين ؟
     
  20. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    ممنون از پيشنهادت. .ولي دوست من. اين ساده ترين روش هست. منو پدرام همه جوانب امور از جمله راحتي كار رو براي كاربران در نظر گرفتيم. تصميم گرفتيم كه فايل هاي زبان رو خودمون parse كنيم. نميخوايم غير از فايل هاي library چيز ديگري اينكلود بشه.
     
  21. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    پيشنهاد ميكنم اين كار رو نكني!‌ البته اگر منظورت Data Storage بود كه فايل هاي متني باشه!