برگزیده های پرشین تولز

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

sama_sally

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

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

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

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

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

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

hba

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

sama_sally

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

sama_sally

Registered User
تاریخ عضویت
5 آپریل 2005
نوشته‌ها
2,598
لایک‌ها
1
سن
35
محل سکونت
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($file, true, true, true);
		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;
	}
	
}
 

hba

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

hba

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

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
فرض يكي يه متغيير رو با post يا get بگيره و اين طوري عمل كنه
PHP:
include ($get.".php");
با جعل متغيير ميشه يه فايل خارج از سايت و روي هاست حمله كننده رو روي سرور تو اجرا كرد
خيلي اين مدل باگ ها زياد هست rfi , lfi بايد خوب بشناسي
اگر خواستي open source كني مواظب اينها باش كه زود پيدا ميشه
 

sama_sally

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

hichkas021

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

hba

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

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

من تست كردم خوب جواب ميده
 

amnhak

Registered User
تاریخ عضویت
23 ژوئن 2005
نوشته‌ها
867
لایک‌ها
0
سن
38
محل سکونت
www.freedanload.com
rss reader هم براش بگذار که البته بشه هم بک آپ ازش به صورت rss گرفت هم به صورت داخلی خود برنامه
مشخصات کلی رو مینوشتی که چیا توی فکرت و میخوای چه امکاناتی برای اول کار داشته باشه میشد یه نظراتی داد که چیا لازمه که براش بگذاری.
امیدوارم که موفق باشی
 

sama_sally

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

vaheb

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

Parsisoft

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

vaheb

کاربر تازه وارد
تاریخ عضویت
14 اکتبر 2007
نوشته‌ها
134
لایک‌ها
0
فرض يكي يه متغيير رو با post يا get بگيره و اين طوري عمل كنه
PHP:
include ($get.".php");
با جعل متغيير ميشه يه فايل خارج از سايت و روي هاست حمله كننده رو روي سرور تو اجرا كرد
خيلي اين مدل باگ ها زياد هست rfi , lfi بايد خوب بشناسي
اگر خواستي open source كني مواظب اينها باش كه زود پيدا ميشه

مرسي خوب بود .
آقا اگه بخواهيم CMS به صورت TxT Base بنويسم چه پيشنهادي دارين ؟
 

sama_sally

Registered User
تاریخ عضویت
5 آپریل 2005
نوشته‌ها
2,598
لایک‌ها
1
سن
35
محل سکونت
Essen, Deutschland
سالار جان در مورد کدی که گذاشتی.
چرا این کار رو نکنیم که بیایم یه فایلی مثل fa.xxx داشته باشیم که توش یه آرایه انجمنی هست به اسم مثلا $txt که لغات و ترجمه شون توش هست.
حالا همه جا $language.xxx رو اینکلود میکنیم و تموم.
PHP:
echo $txt['welcome']
ممنون از پيشنهادت. .ولي دوست من. اين ساده ترين روش هست. منو پدرام همه جوانب امور از جمله راحتي كار رو براي كاربران در نظر گرفتيم. تصميم گرفتيم كه فايل هاي زبان رو خودمون parse كنيم. نميخوايم غير از فايل هاي library چيز ديگري اينكلود بشه.
 

sama_sally

Registered User
تاریخ عضویت
5 آپریل 2005
نوشته‌ها
2,598
لایک‌ها
1
سن
35
محل سکونت
Essen, Deutschland
مرسي خوب بود .
آقا اگه بخواهيم CMS به صورت TxT Base بنويسم چه پيشنهادي دارين ؟
پيشنهاد ميكنم اين كار رو نكني!‌ البته اگر منظورت Data Storage بود كه فايل هاي متني باشه!
 
بالا