程式CODE

2013年4月9日 星期二

XOOPS2的內建常數、函式、類別與物件

參考自桃園縣自由軟體與資訊教育wiki

一、常數
  (1)XOOPS_ROOT_PATH
      xoops的安裝絕對路徑
  (2)XOOPS_ROOT_URL
      xoops的網路位址

二、核心類別


  (1)XoopsSecurity:安全性檢查,比如HTTP REFERER、security token、
      檢查Global變數、阻擋 badip

  (2)XoopsErrorHandler:錯誤管理,程式中若發生錯誤,
      可交由 ErrorHandler產生相關訊息,避免洩漏系統設定

  (3)XoopsLogger:訊息記錄,可以將 PHP、Smarty、Mysql 執行過程(結果)即時顯示,
      方便偵錯

  (4)Criteria:資料相容基準,為了讓Xoops支援 LDAP、Mysql 的一個虛擬類別

   (5)MyTextSanitizer:文字管理,換助處理變數中字元的轉換(包含SQL Injection),
      預覽畫面,取代"字元過濾選項"設定裡的不當字元,[Code]區塊輸出

  (6)XoopsDatabaseFactory:資料庫基本類別,只負責取得資料庫種類
      (並載入相對的資料庫類別)及連線部份

  (7)XoopsDatabase:資料庫虛擬類別,只負責記錄SQL指令及設定(取得)Xoops Prefix.

  (8)XoopsMySQLDatabaseSafe:繼承自XoopsMySQLDatabase,此類別可以執行
      Select,Insert,Delete,Drop...所有的SQL語法

  (9)XoopsMySQLDatabaseProxy:繼承自XoopsMySQLDatabase,此類別只允許 Select 語法

  (10)XoopsMySQLDatabase:繼承自XoopsDatabase,所有 Mysql 功能都在此類別裡實作

  (11)XoopsTpl:繼承自Smarty,樣版引擎

  (12)XoopsTree:樹狀選單類別,簡單好用的樹狀選單產生,管理類別

  (13)XoopsModule:模組基本類別,透過這個類別對模組安全(更新)、初始化、
      讀取模組資料、權限核對(管理)、載入相對的語系、樣版(區塊)管理

  (14)XoopsMemberHandler、XoopsUser、XoopsGroup:會員管理,群組,使用者,Guest 權限管理

  (15)XoopsSessionHandler:Session 管理

  (16)XoopsTplsetHandler:樣版"組"管理

  (17)XoopsTplfileHandler:樣版"檔案"管理



三、有關使用者


  (1)取得所有會員uid
      例:
  $module_handler = & xoops_gethandler('member');
  $users=$module_handler->getUsers();
  foreach($users as $user){
   if($user->getVar('loginname')) $members[$user->getVar('uid')]=$user->getVar('loginname');
   else $members[$user->getVar('uid')]=$user->getVar('uname');
  }


  (2)新增一個使用者
$member_handler =& xoops_gethandler('member');
$newuser =& $member_handler->createUser();
$newuser->setVar("name", $name);
$newuser->setVar("loginname", $loginname);
$newuser->setVar("uname", $uname);
$newuser->setVar("pass", md5($password));
$newuser->setVar("user_avatar",'blank.gif');
$newuser->setVar("level", 1);
$newuser->setVar("email", $tea_mail);
$newuser->setVar("timezone_offset", '8');
$newuser->setVar("uorder", 0);
$newuser->setVar("umode", 'flat');
$newuser->setVar("user_viewemail",1);
$member_handler->insertUser($newuser);
$uid=$newuser->getVar('uid');
$member_handler->addUserToGroup(XOOPS_GROUP_USERS, $uid);


  (3)$xoopsUser物件下:
$xoopsUser->uid() 取得該使用者的代號
$xoopsUser->uname() 取得該使用者的帳號
$xoopsUser->email() 取得該使用者的電子郵件
$xoopsUser->isAdmin($module_id) 判斷該使用者是否為管理者,若傳回true表示有管理權限,若不給module_id表示目前所在的模組,若指定$module_id為-1且傳回true表示其至少有某一模組的管理權。
$xoopsUser->getGroups() 取得該使用者所屬群組,他是個陣列
以uid取得使用者名稱(傳入的第二個參數1表使用者名稱name,0表暱稱uname)
$uid_name=XoopsUser::getUnameFromId($uid,1);
$uid_name=XoopsUser::getUnameFromId($uid,0);
當然你也可以用$xoopsUser->getVar('uid')的方式取得存在的相關資料,uid可以換成你想要取得的資料,如
取得使用者名稱$uname = $xoopsUser->getVar("uname");
取得使用者$email = $xoopsUser->getVar("email");



四、有關模組
  (1)$xoopsModule物件下
$xoopsModule->mid() 取得模組代號
$xoopsModule->dirname() 取得模組目錄名稱
$xoopsModule->name() 取得模組名稱
$xoopsModule->getInfo($name=null) 取得模組所有訊息,是個陣列
在這裡你一樣可以用$xoopsModule->getVar('mid')的方式取得存在的相關資料,mid可以換成你想要取得的資料,如
$xoopsModule->getVar('isactive') 判斷模組是否啟用

  (2)取得目前的模組
$module_handler = & xoops_gethandler('module');
$modules=$module_handler->getList();

  (3)根據目錄顯示模組資訊
$module_handler = & xoops_gethandler('module');
$module=$module_handler->getByDirName($dirname);
echo $module->name;



五、有關資料庫


  (1)用$xoopsDB->getInsertId() 取得剛新增資料的編號

  (2)用$xoopsDB->errno() 取得錯誤編號

  (3)用$xoopsDB->queryFromFile($file) 執行sql檔案

  (4)用$xoopsDB->getRowsNum($result) 取得$result有幾列資料

  (5)用$xoopsDB->getAffectedRows() 取得Insert, delete, update 等影響幾列資料




六、有關表單
參考這裡,還沒空研究


七、其他

  (1)xoops_error($msg),列印錯誤訊息

  (2)xoops_result($msg),列印結果訊息

  (3)xoops_confirm($hiddens, $action, $msg, $submit=, $addtoken = true),訊息確認盒
      例:
 $op = $_REQUEST['op'];
 if ($op=='restore') {
   die('進行還原');
 }
 //進行還原詢問
 $hiddens=array('backup_table'=>$backup_table,'op'=>'restore');
 $action=$_SERVER['PHP_SELF'];
 $msg='真的要還原'.$backup_table;
 include XOOPS_ROOT_PATH.'/header.php';
 xoops_confirm($hiddens, $action, $msg);
 include XOOPS_ROOT_PATH.'/footer.php';
 exit();


    (4)redirect_header($url, $time = 3, $message = , $addredirect = true) ,網頁導向函式


八、我不懂的
  xoops_gethandler($name, $optional = false ),
  取得系統物件(object) 實例函式

  xoops 內建的核心物件檔案,放在 kernel 下, 物件定義名稱與檔案名稱關係如下

  呼叫 xoops_gethandler('member') 會載入 kernel/member.php ,
  並建立回傳 XoopsMemberHandler 物件

  呼叫 xoops_gethandler('session') 會載入 kernel/session.php ,
  並建立回傳 XoopsSessionHandler 物件


沒有留言:

張貼留言