예제 #1
0
 /**
  * ログイン画面用のHTMLをテンプレートにアサインする
  *
  * @return boolean	true:アサインした、false:アサインしてない
  * @access	public
  */
 function setLoginHtml()
 {
     $userId = $this->_session->getParameter('_user_id');
     if (!empty($userId)) {
         return false;
     }
     $this->_common->getTopId('0', '0', '');
     $preexecute =& $this->_container->getComponent('preexecuteMain');
     $params = array('action' => 'login_view_main_init', '_header' => _OFF, '_output' => _OFF);
     $loginHtml = $preexecute->preExecute('login_view_main_init', $params);
     $this->_renderer->assign('loginHtml', $loginHtml);
     return true;
 }
예제 #2
0
 /**
  * モジュール毎のキャッシュクリア処理
  *
  * @access	public
  */
 function clearCacheByDirname($dirname)
 {
     // ----------------------------------------------
     // --- キャッシュクリア		 ---
     // ----------------------------------------------
     if ($dirname == "pages" || $dirname == "control") {
         $temp_name = "";
     } else {
         $modulesView =& $this->_container->getComponent("modulesView");
         $module =& $modulesView->getModuleByDirname($dirname);
         $temp_name = isset($module['temp_name']) ? $module['temp_name'] . '/' : "";
     }
     if ($this->_filterChain->hasFilterByName("Cache")) {
         $renderer = new SmartyTemplate();
         //$renderer =& SmartyTemplate::getInstance();
         //$session =& $this->_container->getComponent("Session");
         //if (is_object($session)) {
         //	$renderer->setSession($session);
         //}
         if (is_object($renderer)) {
             //DirName以下のコンパイルディレクトリの中身を全て破棄する
             $path = "/" . $dirname . "/templates/";
             $base_temp_name = $path . $temp_name;
             $renderer->clear_compiled_tpl(null, $path);
             $this->_clearCompiledTpl($path, $base_temp_name, $renderer);
             $cache =& $this->_filterChain->getFilterByName("Cache");
             $clear_cache = $cache->getClearCache();
             //値を保存
             $cache->setClearCache(array($dirname, DEFAULT_ACTION, "control_view_main"));
             //キャッシュクリア
             $renderer->clear_cache();
             $cache->setClearCache($clear_cache);
             //元に戻す
             return true;
         }
     }
     return false;
 }
예제 #3
0
 /**
  * アップロードしたupload_idのコピー
  * WYSIWYG用
  * @param  array  $upload_id_arr
  * @param  int    $room_id コピーするルームID
  * @param  array  $uploads_where_params アップロードテーブル追加条件指定
  * 						room_id、module_idは必ずチェックし、そのWysiwyg上でuploadsされたものが正しい
  * 						かどうかをチェックする。
  * 						その他、条件を追加したければ、このパラメータより追加(マージ)
  * 
  * ※厳密にいえば、room_id、module_idだけのチェックでは、お知らせを同じルーム内に2つあり、
  *  1つ目のお知らせからアップロードし、2つ目にそのパスをコピーした段階で
  *  2つ目のお知らせを移動してしまうと、1つ目のお知らせから画像が消えてしまうため
  *  問題となる。しかし、現状、そのuploadしたファイルが、そのWYSIWYG内で本当に
  *  アップロードしたかどうかを知る術がないため、対応しない。
  * 
  * @return array $new_upload_id_arr 
  * @access	public
  */
 function copyWysiwygUploads(&$upload_id_arr, $room_id, $uploads_where_params = array())
 {
     $container =& DIContainerFactory::getContainer();
     $request =& $container->getComponent("Request");
     $session =& $container->getComponent("Session");
     if (count($upload_id_arr) > 0) {
         // TODO:アップロードされているファイルの数が1000000件?以上に拡大した場合、
         // SQL文の長さ制限(16M?)を越える可能性あり。
         // 現状、対処しない。
         $module_id = $request->getParameter("module_id");
         if (!isset($module_id)) {
             $actionChain =& $container->getComponent("ActionChain");
             $modulesView =& $container->getComponent("modulesView");
             $curAction = $actionChain->getCurActionName();
             $pathList = explode("_", $curAction);
             $module = $modulesView->getModuleByDirname($pathList[0]);
             if (isset($module['module_id'])) {
                 $module_id = $module['module_id'];
             }
         }
         $where_params = array("upload_id IN ('" . implode("','", $upload_id_arr) . "') " => null, "room_id" => $request->getParameter("room_id"), "module_id" => $module_id);
         if (count($uploads_where_params) > 0) {
             $where_params = array_merge($where_params, $uploads_where_params);
         }
         $uploads = $this->_db->selectExecute("uploads", $where_params);
         if ($uploads === false) {
             return false;
         }
         if (!isset($uploads[0])) {
             return array();
         }
         $uploadsAction =& $this->_container->getComponent("uploadsAction");
         $fileAction =& $this->_container->getComponent("fileAction");
         $buf_new_upload_id_arr = array();
         foreach ($uploads as $upload) {
             $upload_id = $upload["upload_id"];
             $upload['room_id'] = intval($room_id);
             $old_name = $upload['physical_file_name'];
             $upload['physical_file_name'] = '';
             $upload['sess_id'] = '';
             $upload['update_user_id'] = $session->getParameter("_user_id");
             $upload['update_user_name'] = $session->getParameter("_handle");
             $result = $uploadsAction->insUploads($upload);
             if ($result === false) {
                 return false;
             }
             $new_name = $result . "." . $upload['extension'];
             if (file_exists(FILEUPLOADS_DIR . $upload['file_path'] . $old_name)) {
                 $fileAction->copyFile(FILEUPLOADS_DIR . $upload['file_path'] . $old_name, FILEUPLOADS_DIR . $upload['file_path'] . $new_name);
             }
             $buf_new_upload_id_arr[$upload_id] = $result;
         }
         // 同じupload_idを考慮するため、$upload_id_arrに再セット
         $count = 0;
         $new_upload_id_arr = array();
         $buf_upload_id_arr = array();
         foreach ($upload_id_arr as $upload_id) {
             if (!isset($buf_upload_id_arr[$upload_id])) {
                 $buf_upload_id_arr[$upload_id] = $buf_new_upload_id_arr[$upload_id];
             }
             $new_upload_id_arr[$count] = $buf_upload_id_arr[$upload_id];
             $count++;
         }
     }
     return $new_upload_id_arr;
 }
예제 #4
0
 /**
  * SQLファイル実行
  * param string $file_name
  * param string $type
  *
  * @access	public
  */
 function executeSqlFile($file_name, $type = "default")
 {
     $res_arr = array();
     $result = false;
     $_lang = $this->_session->getParameter("_lang");
     $base_dir = $this->_session->getParameter("base_dir");
     $sitename = addslashes($this->_session->getParameter("sitename"));
     $modulesView =& $this->_container->getComponent("modulesView");
     //$modules[$dir_name], $self_site_id, $private_room_name, $admin_user_id
     $self_site_id = $this->_session->getParameter("install_self_site_id");
     $admin_user_id = $this->_session->getParameter("install_user_id");
     $admin_login_id = $this->_session->getParameter("install_login_id");
     $admin_handle = addslashes($this->_session->getParameter("install_handle"));
     $permalink = preg_replace(_PERMALINK_PROHIBITION, _PERMALINK_PROHIBITION_REPLACE, $admin_handle);
     $this->getSessionDb($database, $dbhost, $dbusername, $dbpass, $dbname, $dbprefix, $dbpersist, $dsn);
     //
     // DB接続
     //
     //include_once $base_dir.'/maple/nccore/db/DbObjectAdodb.class.php';
     include_once BASE_DIR . '/maple/nccore/db/DbObjectAdodb.class.php';
     $dbObject = new DbObjectAdodb();
     $dbObject->setPrefix($dbprefix);
     $dbObject->setDsn($dsn);
     $conn_result = @$dbObject->connect();
     if ($conn_result == false) {
         // DB接続失敗
         $res_arr[] = INSTALL_IMG_NO . sprintf(INSTALL_DBCHECK_NOT_CONNECT, $dbname);
         return array($result, $res_arr);
     }
     // $modules[$dir_name]
     $modules = $dbObject->execute("SELECT {modules}.* FROM {modules}", array(), null, null, true, array($this, "_fetchcallbackModules"), array($modulesView));
     if ($modules === false) {
         // とりあえずDB接続失敗のエラーメッセージとする
         $res_arr[] = INSTALL_IMG_NO . sprintf(INSTALL_DBCHECK_NOT_CONNECT, $dbname);
         return array($result, $res_arr);
     }
     $databaseSqlutility =& $this->_container->getComponent("databaseSqlutility");
     $config_db_kind = $database;
     $lang_file_path = $base_dir . '/webapp/modules/install/language/' . $_lang . '/' . $file_name;
     if (!@file_exists($lang_file_path)) {
         $_lang = "english";
         $lang_file_path = $base_dir . '/webapp/modules/install/language/' . $_lang . '/' . $file_name;
     }
     include_once $lang_file_path;
     if (defined(strtoupper("INSTALL_CONF_ADD_PRIVATE_SPACE_NAME_" . $_lang))) {
         $private_room_name = str_replace("{X-HANDLE}", $admin_handle, constant(strtoupper('INSTALL_CONF_ADD_PRIVATE_SPACE_NAME_' . $_lang)));
         $this->_session->setParameter("install_private_room_name", $private_room_name);
     } else {
         $private_room_name = $this->_session->getParameter("install_private_room_name");
     }
     $file_path = $base_dir . '/webapp/modules/install/sql/' . $database . '/' . $type . "/" . $file_name;
     if (!@file_exists($file_path) && $database == "mysqli") {
         $database = "mysql";
         $file_path = $base_dir . '/webapp/modules/install/sql/' . $database . '/' . $type . "/" . $file_name;
     }
     $data = "";
     include_once $file_path;
     if ($file_name == INSTALL_CONFIG_DATA_FILENAME) {
         $config_lang_sql = '';
         $languages = array('japanese', 'english', 'chinese');
         $items = explode(',', _MULTI_LANG_CONFIG_ITEMS);
         foreach ($languages as $lang_dirname) {
             include_once $base_dir . '/webapp/modules/install/language/' . $lang_dirname . '/' . $file_name;
             foreach ($items as $item) {
                 if ($item == 'sitename') {
                     $conf_value = $sitename;
                 } else {
                     if ($item == 'from') {
                         $conf_value = 'netcommons';
                     } else {
                         $conf_value = constant(strtoupper('INSTALL_CONF_' . $item . '_' . $lang_dirname));
                     }
                 }
                 $config_lang_sql .= "INSERT INTO `config_language` (`conf_name`, `lang_dirname`, `conf_value`) VALUES ('" . $item . "', '" . $lang_dirname . "', '" . $conf_value . "');";
             }
         }
         $data .= $config_lang_sql;
     }
     $databaseSqlutility->splitMySqlFile($pieces, $data);
     $result = true;
     $config_success_count = 0;
     $config_failed_count = 0;
     $adodb =& $dbObject->getAdoDbObject();
     $savetable_name = "";
     foreach ($pieces as $piece) {
         // SQLユーティリティクラスにてテーブル名にプレフィックスをつける
         // 配列としてリターンされ、
         // 	[0] プレフィックスをつけたクエリ
         // 	[4] プレフィックスをつけないテーブル名
         // が格納されている
         $prefixed_query = $databaseSqlutility->prefixQuery($piece, $dbObject->getPrefix());
         //$prefixed_query_result = true;
         if (!$prefixed_query) {
             //$prefixed_query_result = false;
             $result = false;
             $res_arr[] = INSTALL_IMG_NO . sprintf(INSTALL_INSERT_DATA_FAILED_INSERT, 1, "Unknown Table");
             continue;
         }
         if ($savetable_name != $prefixed_query[4]) {
             // テーブルが変わった
             if ($savetable_name != "") {
                 // メッセージ
                 if ($config_success_count > 0) {
                     // 成功
                     $res_arr[] = INSTALL_IMG_YES . sprintf(INSTALL_INSERT_DATA_SUCCESS_INSERT, $config_success_count, $savetable_name);
                 }
                 if ($config_failed_count > 0) {
                     $result = false;
                     $res_arr[] = INSTALL_IMG_NO . sprintf(INSTALL_INSERT_DATA_FAILED_INSERT, $config_failed_count, $savetable_name);
                 }
                 $config_success_count = 0;
                 $config_failed_count = 0;
             }
             $savetable_name = $prefixed_query[4];
         }
         // 実行
         //$dbObject->executeはprefixの変換処理があるため使用しない
         if (!$adodb->Execute($prefixed_query[0])) {
             $config_failed_count++;
             $result = false;
             //continue;
         } else {
             // 成功
             $config_success_count++;
         }
     }
     if ($savetable_name != "") {
         // メッセージ
         if ($config_success_count > 0) {
             // 成功
             $res_arr[] = INSTALL_IMG_YES . sprintf(INSTALL_INSERT_DATA_SUCCESS_INSERT, $config_success_count, $savetable_name);
         }
         if ($config_failed_count > 0) {
             $result = false;
             $res_arr[] = INSTALL_IMG_NO . sprintf(INSTALL_INSERT_DATA_FAILED_INSERT, $config_failed_count, $savetable_name);
         }
         //$config_success_count = 0;
         //$config_failed_count = 0;
     }
     return array($result, $res_arr);
 }