PageRenderTime 52ms CodeModel.GetById 7ms RepoModel.GetById 1ms app.codeStats 0ms

/trunk/includes/controllers/SiteController.php

http://yuan-pad.googlecode.com/
PHP | 191 lines | 175 code | 9 blank | 7 comment | 24 complexity | 9a1d698bc77385ee216e042b463b63d6 MD5 | raw file
  1. <?php
  2. /**
  3. * Site Controller
  4. * @author rainyjune <rainyjune@live.cn>
  5. * @version $Id: SiteController.php 5 2011-10-28 00:19:49Z rainyjune@live.cn $
  6. */
  7. class SiteController extends BaseController{
  8. protected $_model;
  9. protected $_verifyCode;
  10. public function __construct(){
  11. global $db_url;
  12. if($db_url !='dummydb://username:password@localhost/databasename')
  13. $this->_model= YDB::factory($db_url);
  14. $this->_verifyCode=new FLEA_Helper_ImgCode();
  15. }
  16. public function actionIndex(){
  17. $data=get_all_data(TRUE,TRUE,TRUE,TRUE);
  18. $current_page=isset($_GET['pid'])?(int)$_GET['pid']:0;
  19. $nums=count($data);
  20. $pages=ceil($nums/ZFramework::app()->num_perpage);
  21. if($current_page>=$pages)
  22. $current_page=$pages-1;
  23. if($current_page<0)
  24. $current_page=0;
  25. if(ZFramework::app()->page_on)
  26. $data=$this->page_wrapper($data, $current_page);
  27. if(isset ($_GET['ajax']) || defined('API_MODE')){
  28. $data=array_reverse($data);
  29. $JSONDATA=array('messages'=>$data,'current_page'=>$current_page,'total'=>$nums,'pagenum'=>$pages);
  30. die(function_exists('json_encode') ? json_encode($JSONDATA) : CJSON::encode($JSONDATA));
  31. }
  32. $admin=isset($_SESSION['admin'])?true:false;
  33. $adminName= ZFramework::app()->admin;
  34. $smileys=show_smileys_table();
  35. $this->render('index',array(
  36. 'data'=>$data,
  37. 'admin'=>$admin,
  38. 'smileys'=>$smileys,
  39. 'current_page'=>$current_page,
  40. 'pages'=>$pages,
  41. 'adminName'=>$adminName,
  42. 'nums'=>$nums,
  43. ));
  44. }
  45. //????
  46. public function actionInstall(){
  47. $languages=get_all_langs();
  48. $language=(isset($_GET['l']) && in_array($_GET['l'],$languages))?$_GET['l']:'en';
  49. $installed=FALSE;
  50. $tips=array();
  51. if(!file_exists(CONFIGFILE)) //??????????????
  52. $tips[]=t('CONFIG_FILE_NOTEXISTS',array('{config_file}'=>CONFIGFILE),$language);
  53. elseif(!is_writable(CONFIGFILE))
  54. $tips[]=t('CONFIG_FILE_NOTWRITABLE',array('{config_file}'=>CONFIGFILE),$language);
  55. if(!is_writable(APPROOT.'/data/'))
  56. $tips[]=t('DATADIR_NOT_WRITABLE', array(), $language);
  57. if(isset($_POST['dbtype']))
  58. {
  59. if(!empty ($_POST['adminname']) && !empty($_POST['adminpass']) && !empty ($_POST['dbtype']) &&!empty ($_POST['dbusername']) && !empty ($_POST['dbname']) && !empty ($_POST['dbhost']) && strlen(trim($_POST['adminname']))>2 ){
  60. $adminname=maple_quotes($_POST['adminname']);
  61. $adminpass=maple_quotes($_POST['adminpass']);
  62. $dbname= maple_quotes($_POST['dbname']);
  63. $tbprefix=$_POST['tbprefix'];
  64. $url=$_POST['dbtype'].'://'.$_POST['dbusername'].':'.$_POST['dbpwd'].'@'.$_POST['dbhost'].'/'.$_POST['dbname'];
  65. #$db=YDB::factory($url);
  66. $formError='';
  67. try{
  68. $db=YDB::factory($url);
  69. }
  70. catch (Exception $e){
  71. $formError=$e->getMessage();
  72. }
  73. }
  74. else
  75. {
  76. $formError=t('FILL_NOT_COMPLETE',array(),$language);
  77. }
  78. if(!$formError){
  79. $url_string="<?php\n\$db_url = '$url';\n\$db_prefix = '$tbprefix';\n?>";
  80. file_put_contents(CONFIGFILE, $url_string);
  81. $sql_file=APPROOT.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.$_POST['dbtype'].'.sql';
  82. $sql_array=file($sql_file);
  83. $translate=array('{time}'=> time(),'{ip}'=> getIP(),'{admin}'=>$adminname,'{adminpass}'=>$adminpass,'{lang}'=>$language,'<'=>$tbprefix,'>'=>'');
  84. foreach ($sql_array as $sql) {
  85. $_sql=html_entity_decode(strtr(trim($sql),$translate),ENT_COMPAT,'UTF-8');
  86. $db->query($_sql);
  87. }
  88. $installed=TRUE;
  89. }
  90. }
  91. if(file_exists(dirname(dirname(__FILE__)).'/install.php')){
  92. include dirname(dirname(__FILE__)).'/install.php';
  93. } else {
  94. die ('Access denied!');
  95. }
  96. }
  97. public function actionControl_panel(){
  98. global $gd_exist,$zip_support;
  99. is_admin();
  100. $current_tab='overview';
  101. $tabs_array=array('overview','siteset','message','ban_ip');
  102. $tabs_name_array=array(t('ACP_OVERVIEW'),t('ACP_CONFSET'),t('ACP_MANAGE_POST'),t('ACP_MANAGE_IP'));
  103. if(isset($_GET['subtab'])){
  104. if(in_array($_GET['subtab'],$tabs_array))
  105. $current_tab=$_GET['subtab'];
  106. }
  107. $themes= get_all_themes();
  108. $data=get_all_data(TRUE,false,TRUE,TRUE,false);
  109. $reply_data= $this->_model->queryAll(parse_tbprefix("SELECT * FROM <reply>"));
  110. $ban_ip_info= $this->_model->queryAll(parse_tbprefix("SELECT * FROM <badip>"));
  111. $nums=count($data);
  112. $reply_num=count($reply_data);
  113. if($gd_exist){
  114. $gd_info=gd_version();
  115. $gd_version=$gd_info?$gd_info:'<font color="red">'.t('UNKNOWN').'</font>';
  116. }
  117. else
  118. $gd_version='<font color="red">GD'.t('NOT_SUPPORT').'</font>';
  119. $register_globals=ini_get("register_globals") ? 'On' : 'Off';
  120. $magic_quotes_gpc=ini_get("magic_quotes_gpc") ? 'On' : 'Off';
  121. $languages= get_all_langs();
  122. $timezone_array= get_all_timezone();
  123. $this->render('admin',array(
  124. 'tabs_array'=>$tabs_array,
  125. 'current_tab'=>$current_tab,
  126. 'tabs_name_array'=>$tabs_name_array,
  127. 'nums'=>$nums,
  128. 'reply_num'=>$reply_num,
  129. 'gd_version'=>$gd_version,
  130. 'register_globals'=>$register_globals,
  131. 'magic_quotes_gpc'=>$magic_quotes_gpc,
  132. 'zip_support'=>$zip_support,
  133. 'themes'=>$themes,
  134. 'timezone_array'=>$timezone_array,
  135. 'languages'=>$languages,
  136. 'data'=>$data,
  137. 'ban_ip_info'=>$ban_ip_info,
  138. ));
  139. }
  140. public function actionRSS(){
  141. $data=get_all_data(true, true);
  142. header('Content-Type: text/xml; charset=utf-8', true);
  143. $now = date("D, d M Y H:i:s T");
  144. $borad_name=ZFramework::app()->board_name;
  145. $output =<<<HERE
  146. <?xml version="1.0" encoding="utf-8"?>
  147. <rss version="2.0">
  148. <channel>
  149. <title>$borad_name</title>
  150. <link>{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}</link>
  151. <language>en</language>
  152. <pubDate>$now</pubDate>
  153. <lastBuildDate>$now</lastBuildDate>\n
  154. HERE;
  155. foreach ($data as $m) {
  156. $output .= "\t<item><title>";
  157. if((int)$m['uid']>0)
  158. $output.=htmlentities ($m['b_username']);
  159. else
  160. $output.=htmlentities ($m['user']);
  161. $output .= "</title><pubDate>".date("D, d M Y H:i:s T", $m['time'])."</pubDate><description><![CDATA[".$m['post_content'];
  162. if(@$m['reply_content'])
  163. $output.="<br />".strip_tags (t('ADMIN_REPLIED',array('{admin_name}'=>ZFramework::app()->admin,'{reply_time}'=>date("D, d M Y H:i:s T",$m['reply_time']),'{reply_content}'=>$m['reply_content'])));
  164. $output .="]]></description></item>\n";
  165. }
  166. $output.="\t</channel>\n</rss>";
  167. echo $output;
  168. }
  169. public function page_wrapper($data,$current_page){
  170. $start=$current_page*ZFramework::app()->num_perpage;
  171. $data=array_slice($data,$start, ZFramework::app()->num_perpage);
  172. return $data;
  173. }
  174. public function actionCaptcha(){
  175. $this->_verifyCode->image(2,4,900,array('borderColor'=>'#66CCFF','bgcolor'=>'#FFCC33'));
  176. }
  177. public function actionGetSysJSON(){
  178. $langArray=getLangArray();
  179. $langArray['ADMIN_NAME_INDEX']=ZFramework::app()->admin;
  180. echo function_exists('json_encode') ? json_encode($langArray) : CJSON::encode($langArray);
  181. }
  182. }