Ejemplo n.º 1
0
 /**
  * execute実行
  *
  * @access  public
  */
 function execute()
 {
     $metadatas = $this->mdbView->getMetadatas(array("multidatabase_id" => intval($this->multidatabase_id)));
     if ($metadatas === false) {
         return 'error';
     }
     $order_params = array("display_sequence" => "ASC");
     $data = array();
     $line = 0;
     $data_contents = array();
     foreach ($metadatas as $metadata) {
         $data[] = $metadata['name'];
         $contents = $this->mdbView->getMDBTitleList(intval($this->multidatabase_id), $metadata['metadata_id'], $order_params);
         if ($contents === false) {
             return 'error';
         }
         $i = 0;
         foreach ($contents as $content) {
             if ($content['title'] != "" && ($metadata['type'] == MULTIDATABASE_META_TYPE_FILE || $metadata['type'] == MULTIDATABASE_META_TYPE_IMAGE)) {
                 if ($content['file_name'] != "") {
                     $content['title'] = $content['file_name'];
                 } else {
                     $content['title'] = "";
                 }
             } elseif ($content['title'] != "" && $metadata['type'] == MULTIDATABASE_META_TYPE_DATE) {
                 $content['title'] = timezone_date_format($content['title'], _DATE_FORMAT);
             } elseif ($content['insert_time'] != "" && $metadata['type'] == MULTIDATABASE_META_TYPE_INSERT_TIME) {
                 $content['title'] = timezone_date_format($content['insert_time'], _FULL_DATE_FORMAT);
             } elseif ($content['update_time'] != "" && $metadata['type'] == MULTIDATABASE_META_TYPE_UPDATE_TIME) {
                 $content['title'] = timezone_date_format($content['update_time'], _FULL_DATE_FORMAT);
             } elseif ($content['title'] != "" && $metadata['type'] == MULTIDATABASE_META_TYPE_AUTONUM) {
                 $content['title'] = intval($content['title']);
             }
             $data_contents[$i][$line] = $content['title'];
             $i++;
         }
         $line++;
     }
     $this->csvMain->add($data);
     foreach ($data_contents as $data_content) {
         $this->csvMain->add($data_content);
     }
     $this->csvMain->download($this->mdb_obj['multidatabase_name']);
     exit;
 }
Ejemplo n.º 2
0
 /**
  * execute処理
  *
  * @access  public
  */
 function execute()
 {
     $this->help_start_time = "090000";
     $this->help_end_time = "180000";
     $this->help_reserve_time = timezone_date_format(null, "Ymd");
     $this->category_list = $this->reservationView->getCategories();
     $this->location_count_list = $this->reservationView->getCountLocationByCategory();
     $this->location_list = $this->reservationView->getLocations();
     $this->location_count = count($this->location_list);
     foreach ($this->location_list as $location) {
         $this->location = $location;
         $this->location_id = $this->location["location_id"];
         $this->request->setParameter("location", $location);
         break;
     }
     $this->allow_add_rooms = $this->reservationView->getAddLocationRoom($location);
     return 'success';
 }
Ejemplo n.º 3
0
 /**
  * メール送信アクション
  *
  * @access  public
  */
 function execute()
 {
     $content_mail = $this->session->getParameter("multidatabase_mail_content_id");
     $content_id = intval($content_mail['content_id']);
     if (empty($content_id)) {
         return 'success';
     }
     $params = array("content_id" => $content_id);
     $contents = $this->db->selectExecute("multidatabase_content", $params);
     if ($contents === false || !isset($contents[0])) {
         return 'error';
     }
     $multidatabase_id = $contents[0]['multidatabase_id'];
     $metadatas = $this->mdbView->getMetadatas(array("multidatabase_id" => $multidatabase_id));
     if ($metadatas === false) {
         return 'error';
     }
     $mail = $this->mdbView->getMail($content_id, $metadatas);
     if ($mail === false) {
         return 'error';
     }
     $data = "";
     foreach (array_keys($metadatas) as $i) {
         $data .= htmlspecialchars($metadatas[$i]['name']) . ':';
         if ($metadatas[$i]['type'] == MULTIDATABASE_META_TYPE_IMAGE || $metadatas[$i]['type'] == MULTIDATABASE_META_TYPE_FILE) {
             $data .= $this->mdbView->getFileLink($mail['content' . $metadatas[$i]['metadata_id']], $mail['file_name' . $metadatas[$i]['metadata_id']], $mail['physical_file_name' . $metadatas[$i]['metadata_id']], $metadatas[$i], BASE_URL . INDEX_FILE_NAME);
         } elseif ($metadatas[$i]['type'] == MULTIDATABASE_META_TYPE_WYSIWYG) {
             $data .= $mail['content' . $metadatas[$i]['metadata_id']];
         } elseif ($metadatas[$i]['type'] == MULTIDATABASE_META_TYPE_DATE && !empty($mail['content' . $metadatas[$i]['metadata_id']])) {
             $data .= timezone_date_format($mail['content' . $metadatas[$i]['metadata_id']], _DATE_FORMAT);
         } elseif ($metadatas[$i]['type'] == MULTIDATABASE_META_TYPE_INSERT_TIME) {
             $data .= timezone_date_format($mail['insert_time'], _FULL_DATE_FORMAT);
         } elseif ($metadatas[$i]['type'] == MULTIDATABASE_META_TYPE_UPDATE_TIME) {
             $data .= timezone_date_format($mail['update_time'], _FULL_DATE_FORMAT);
         } elseif ($metadatas[$i]['type'] == MULTIDATABASE_META_TYPE_AUTONUM) {
             $data .= intval($mail['content' . $metadatas[$i]['metadata_id']]);
         } elseif ($metadatas[$i]['type'] == MULTIDATABASE_META_TYPE_TEXTAREA) {
             $data .= str_replace("\n", '<br />', htmlspecialchars($mail['content' . $metadatas[$i]['metadata_id']]));
         } else {
             $data .= htmlspecialchars($mail['content' . $metadatas[$i]['metadata_id']]);
         }
         $data .= '<br />';
     }
     $this->mailMain->setSubject($mail['mail_subject']);
     $this->mailMain->setBody($mail['mail_body']);
     $tags['X-MDB_NAME'] = htmlspecialchars($mail['multidatabase_name']);
     $tags['X-DATA'] = $data;
     $tags['X-USER'] = htmlspecialchars($mail['insert_user_name']);
     $tags['X-TO_DATE'] = $mail['insert_time'];
     $tags['X-URL'] = BASE_URL . INDEX_FILE_NAME . "?action=" . DEFAULT_ACTION . "&active_action=multidatabase_view_main_detail" . "&content_id=" . $content_id . "&multidatabase_id=" . $multidatabase_id . "&block_id=" . $this->block_id . "#" . $this->session->getParameter("_id");
     $this->mailMain->assign($tags);
     if ($content_mail['agree_flag'] == MULTIDATABASE_STATUS_WAIT_AGREE_VALUE) {
         $users = $this->usersView->getSendMailUsers($this->room_id, _AUTH_CHIEF);
     } else {
         if ($content_mail['agree_flag'] == MULTIDATABASE_STATUS_AGREE_VALUE) {
             $users = $this->usersView->getSendMailUsers($this->room_id, $mail['mail_authority']);
         }
     }
     $this->mailMain->setToUsers($users);
     $this->mailMain->send();
     $this->session->removeParameter("multidatabase_mail_content_id");
     return 'success';
 }
Ejemplo n.º 4
0
 /**
  * 施設取得
  *
  * @access	public
  */
 function getDefaultLocation()
 {
     $module_id = $this->_request->getParameter("module_id");
     $configView =& $this->_container->getComponent("configView");
     $config = $configView->getConfig($module_id, false);
     if ($config === false) {
         return false;
     }
     $commonMain =& $this->_container->getComponent("commonMain");
     $timezoneMain =& $commonMain->registerClass(WEBAPP_DIR . '/components/timezone/Main.class.php', "Timezone_Main", "timezoneMain");
     $timezone_offset = $this->_session->getParameter("_timezone_offset");
     $location = array("location_id" => 0, "category_id" => 0, "location_name" => "", "active_flag" => _ON, "add_authority" => _AUTH_CHIEF, "time_table" => RESERVATION_DEF_WEEKYDAY, "time_table_arr" => explode(",", RESERVATION_DEF_WEEKYDAY), "start_time" => timezone_date_format(null, "Ymd090000"), "end_time" => timezone_date_format(null, "Ymd180000"), "timezone_offset" => $timezone_offset, "timezone_string" => $timezoneMain->getLangTimeZone($timezone_offset, false), "allday_flag" => _OFF, "contact" => "", "description" => "", "duplication_flag" => _OFF, "use_private_flag" => defined($config['use_private_flag']["conf_value"]) ? constant($config['use_private_flag']["conf_value"]) : intval($config['use_private_flag']["conf_value"]), "allroom_flag" => defined($config['allroom_flag']["conf_value"]) ? constant($config['allroom_flag']["conf_value"]) : intval($config['allroom_flag']["conf_value"]), "display_sequence" => 0);
     return $location;
 }
Ejemplo n.º 5
0
 /**
  * タスクデータ配列を生成する
  *
  * @param	array	$recordSet	タスクADORecordSet
  * @param	string	$format		日付フォーマット文字列
  * @return array	タスクデータ配列
  * @access	private
  */
 function &_makeTaskArray(&$recordSet, $funcParams = array())
 {
     $todo = $this->_request->getParameter("todo");
     if (!empty($funcParams["format"])) {
         $format = $funcParams["format"];
     } else {
         $format = _DATE_FORMAT;
     }
     if (!empty($funcParams["array_key"])) {
         $array_key = $funcParams["array_key"];
     } else {
         $array_key = "";
     }
     $tasks = array();
     while ($row = $recordSet->fetchRow()) {
         $row["category_id"] = isset($row["category_id"]) ? intval($row["category_id"]) : 0;
         $row["edit_authority"] = false;
         if ($todo["task_authority"] && $this->_hasEditAuthority($row["insert_user_id"])) {
             $row["edit_authority"] = true;
         }
         if (!empty($row["period"])) {
             $period = timezone_date_format($row["period"], null);
             if (substr($period, 8) == "000000") {
                 $previousDay = -1;
                 $format = str_replace("H", "24", $format);
                 $timeFormat = str_replace("H", "24", _SHORT_TIME_FORMAT);
             } else {
                 $previousDay = 0;
                 $timeFormat = _SHORT_TIME_FORMAT;
             }
             $date = mktime(intval(substr($period, 8, 2)), intval(substr($period, 10, 2)), intval(substr($period, 12, 2)), intval(substr($period, 4, 2)), intval(substr($period, 6, 2)) + $previousDay, intval(substr($period, 0, 4)));
             $row["display_period_date"] = date($format, $date);
             $row["display_period_time"] = date($timeFormat, $date);
             if ($this->_mobile_flag == _ON) {
                 $row["year"] = date("Y", $date);
                 $row["month"] = date("m", $date);
                 $row["day"] = date("d", $date);
             }
             if (!isset($thisDate)) {
                 $thisDate = timezone_date_format(null, null);
                 $soonDate = mktime(0, 0, 0, intval(substr($thisDate, 4, 2)), intval(substr($thisDate, 6, 2)) + $todo["soon_period"], intval(substr($thisDate, 0, 4)));
                 $thisDate = timezone_date_format(null, $format);
                 $soonDate = date($format, $soonDate);
             }
             if ($thisDate > $row["display_period_date"]) {
                 $row["period_class_name"] = TODO_PERIOD_CLASS_NAME_OVER;
             } elseif ($soonDate >= $row["display_period_date"]) {
                 $row["period_class_name"] = TODO_PERIOD_CLASS_NAME_SOON;
             }
         }
         if ($array_key == "category") {
             if (!isset($tasks[$row["category_id"]])) {
                 $tasks[$row["category_id"]] = array();
             }
             $tasks[$row["category_id"]][] = $row;
         } else {
             $tasks[] = $row;
         }
     }
     return $tasks;
 }
Ejemplo n.º 6
0
 /**
  * CSVデータを設定する
  *
  * @param	array	$recordSet	ADORecordSet
  * @param	array	$params[0]	質問データ配列
  * @param	array	$params[1]	集計データ配列
  * @return boolean	true:正常、false:異常
  * @access	private
  */
 function _makeCSV(&$recordSet, &$params)
 {
     $container =& DIContainerFactory::getContainer();
     $filterChain =& $container->getComponent("FilterChain");
     $smartyAssign =& $filterChain->getFilterByName("SmartyAssign");
     $csvMain =& $container->getComponent("csvMain");
     $data = array($smartyAssign->getLang("questionnaire_answerer"), $smartyAssign->getLang("questionnaire_answer_date"), $smartyAssign->getLang("questionnaire_answer_number"), $smartyAssign->getLang("questionnaire_question_number"), $smartyAssign->getLang("questionnaire_question_title"), $smartyAssign->getLang("questionnaire_answer_title"));
     $csvMain->add($data);
     $questions = $params[0];
     $summaries = $params[1];
     $questionnaire = $this->_request->getParameter("questionnaire");
     $anonymity = $questionnaire["anonymity_flag"];
     while ($row = $recordSet->fetchRow()) {
         $questionID = $row["question_id"];
         $question = $questions[$questionID];
         $summaryID = $row["summary_id"];
         $summary = $summaries[$summaryID];
         if ($question["question_type"] != QUESTIONNAIRE_QUESTION_TYPE_TEXTAREA_VALUE) {
             $choiceValues = array();
             $answerValues = $this->getAnswerValues($row["answer_value"], $question["choices"]);
             foreach (array_keys($answerValues) as $choiceID) {
                 if ($answerValues[$choiceID] == _ON) {
                     $choiceValues[] = $question["choices"][$choiceID]["choice_value"];
                 }
             }
             $row["answer_value"] = implode(",", $choiceValues);
         }
         if ($anonymity == _ON) {
             $summary["insert_user_name"] = $smartyAssign->getLang("questionnaire_anonymity_name");
             $summary["answer_number"] = "";
         }
         $data = array($summary["insert_user_name"], timezone_date_format($summary["answer_time"], _FULL_DATE_FORMAT), $summary["answer_number"], $question["question_sequence"], $question["question_value"], $row["answer_value"]);
         $csvMain->add($data);
     }
     return true;
 }
Ejemplo n.º 7
0
 /**
  * 日付を取得する
  *
  * @return array	日付データ
  * @access	public
  */
 function &_getDate($dateTime, $format = _SHORT_DATE_FORMAT)
 {
     $tempDate = timezone_date_format($dateTime, null);
     if (substr($tempDate, 8) == "000000") {
         $previousDay = -1;
         $format = str_replace("H", "24", $format);
     } else {
         $previousDay = 0;
     }
     $date = mktime(intval(substr($tempDate, 8, 2)), intval(substr($tempDate, 10, 2)), intval(substr($tempDate, 12, 2)), intval(substr($tempDate, 4, 2)), intval(substr($tempDate, 6, 2)) + $previousDay, intval(substr($tempDate, 0, 4)));
     $formatDate = date($format, $date);
     return $formatDate;
 }
Ejemplo n.º 8
0
 /**
  * CSVデータを設定する
  *
  * @param	array	$recordSet	ADORecordSet
  * @return boolean	true:正常、false:異常
  * @access	private
  */
 function _makeCSV(&$recordSet)
 {
     $container =& DIContainerFactory::getContainer();
     $filterChain =& $container->getComponent("FilterChain");
     $smartyAssign =& $filterChain->getFilterByName("SmartyAssign");
     $csvMain =& $container->getComponent("csvMain");
     $items = $this->_request->getParameter("items");
     $data = array();
     $data[] = $smartyAssign->getLang('registration_data_id');
     foreach ($items as $item) {
         $data[] = $item["item_name"];
     }
     $data[] = $smartyAssign->getLang("registration_entry_date");
     $csvMain->add($data);
     $datas = array();
     $fileDataFormat = $smartyAssign->getLang("registration_file_data_format");
     while ($row = $recordSet->fetchRow()) {
         $data = array();
         $data[] = $row['data_id'];
         foreach ($items as $item) {
             $key = "item_data_value" . $item["item_id"];
             $value = $row[$key];
             if (!empty($value) && $item["item_type"] == REGISTRATION_TYPE_FILE) {
                 $key = "file_name" . $item["item_id"];
                 $value = $row[$key] . sprintf($fileDataFormat, $value);
             }
             $data[] = $value;
         }
         $data[] = timezone_date_format($row["insert_time"], _FULL_DATE_FORMAT);
         $csvMain->add($data);
     }
     return $datas;
 }
Ejemplo n.º 9
0
 /**
  * fetch時コールバックメソッド
  * @param result adodb object
  * @return array
  * @access	private
  */
 function &_getChildFetchcallback($result, $direction_flag)
 {
     $ret = array();
     while ($row = $result->fetchRow()) {
         if (!empty($row['journal_date'])) {
             $row['journal_date'] = timezone_date_format($row['journal_date'], "YmdHis");
         }
         if ($direction_flag == JOURNAL_TRACKBACK_RECEIVE) {
             if (!empty($row['tb_url'])) {
                 $pos = strpos($row['tb_url'], "?action=journal_view_main_detail");
                 if ($pos != false) {
                     $row['tb_url'] = str_replace("?action=journal_view_main_detail", "?action=pages_view_main&active_action=journal_view_main_detail", $row['tb_url']);
                 }
             }
             $row["title"] = mb_convert_encoding($row["title"], _CHARSET, "auto");
             $row["content"] = mb_convert_encoding($row["content"], _CHARSET, "auto");
         }
         $row['has_edit_auth'] = $this->_hasEditAuthority($row['insert_user_id']);
         $row['has_confirm_auth'] = $this->_hasConfirmAuthority();
         $ret[] = $row;
     }
     return $ret;
 }
Ejemplo n.º 10
0
 /**
  * 課題データ配列を生成する
  *
  * @param	array	$recordSet	タスクADORecordSet
  * @param	string	$format		日付フォーマット文字列
  * @return array	タスクデータ配列
  * @access	private
  */
 function _makePeriod(&$assignment)
 {
     static $soon_period = null;
     static $thisDate = null;
     static $soonDate = null;
     if (!isset($soon_period)) {
         $soon_period = $this->_getSoonPeriod();
         $thisDate = timezone_date_format(null, null);
         $soonDate = date("YmdHis", mktime(0, 0, 0, intval(substr($thisDate, 4, 2)), intval(substr($thisDate, 6, 2)) + $soon_period, intval(substr($thisDate, 0, 4))));
     }
     if (!empty($assignment["period"])) {
         $period = timezone_date_format($assignment["period"], null);
         if (substr($period, 8) == "000000") {
             $previousDay = -1;
             $timeFormat = "";
         } else {
             $previousDay = 0;
             $timeFormat = _SHORT_TIME_FORMAT;
         }
         $date = mktime(intval(substr($period, 8, 2)), intval(substr($period, 10, 2)), intval(substr($period, 12, 2)), intval(substr($period, 4, 2)), intval(substr($period, 6, 2)) + $previousDay, intval(substr($period, 0, 4)));
         $assignment["display_period_date"] = date(_DATE_FORMAT, $date);
         $assignment["display_period_time"] = date($timeFormat, $date);
         $assignment["input_period"] = date(_INPUT_DATE_FORMAT, $date);
         if ($assignment["activity"] == _ON) {
             if ($thisDate > $period) {
                 $assignment["period_class_name"] = ASSIGNMENT_PERIOD_CLASS_NAME_OVER;
             } elseif ($soonDate >= $period) {
                 $assignment["period_class_name"] = ASSIGNMENT_PERIOD_CLASS_NAME_SOON;
             } else {
                 $assignment["period_class_name"] = "";
             }
         }
     }
     return true;
 }
Ejemplo n.º 11
0
 /**
  * 新着情報のコールバック関数
  *
  * @access	private
  */
 function _callbackWhatsnewTitle(&$recordSet, $title_metadata_id)
 {
     $result = array("title" => null, "description" => null);
     while ($row = $recordSet->fetchRow()) {
         if ($row['metadata_id'] == $title_metadata_id && !isset($result["title"])) {
             switch ($row["type"]) {
                 case MULTIDATABASE_META_TYPE_FILE:
                 case MULTIDATABASE_META_TYPE_IMAGE:
                     if (empty($row["file_name"])) {
                         $title = MULTIDATABASE_NOTITLE;
                     } else {
                         $title = $row["file_name"];
                     }
                     $result["title"] = $title;
                     break;
                 case MULTIDATABASE_META_TYPE_WYSIWYG:
                     $container =& DIContainerFactory::getContainer();
                     $convertHtml =& $container->getComponent("convertHtml");
                     $title = $convertHtml->convertHtmlToText($row["content"]);
                     $title = preg_replace("/\\\n/", " ", $title);
                     $title = mb_substr($title, 0, _SEARCH_CONTENTS_LEN + 1, INTERNAL_CODE);
                     $result["title"] = $title;
                     break;
                 case MULTIDATABASE_META_TYPE_AUTONUM:
                     $title = intval($row["content"]);
                     $result["title"] = $title;
                     break;
                 case MULTIDATABASE_META_TYPE_DATE:
                     if (empty($row["content"])) {
                         $title = MULTIDATABASE_NOTITLE;
                     } else {
                         $title = timezone_date_format($row["content"], _DATE_FORMAT);
                     }
                     $result["title"] = $title;
                     break;
                 case MULTIDATABASE_META_TYPE_INSERT_TIME:
                     $title = timezone_date_format($row["insert_time"], _FULL_DATE_FORMAT);
                     $result["title"] = $title;
                     break;
                 case MULTIDATABASE_META_TYPE_UPDATE_TIME:
                     $title = timezone_date_format($row["update_time"], _FULL_DATE_FORMAT);
                     $result["title"] = $title;
                     break;
                 case MULTIDATABASE_META_TYPE_MULTIPLE:
                     if (empty($row["content"])) {
                         $title = MULTIDATABASE_NOTITLE;
                     } else {
                         $multipleArr = explode("|", $row["content"]);
                         $title = $multipleArr[0];
                     }
                     $result["title"] = $title;
                     break;
                 default:
                     $result["title"] = $row["content"];
                     break;
             }
             continue;
         }
         if ($row['metadata_id'] != $title_metadata_id && !isset($result["description"])) {
             $result["description"] = $row["content"];
             continue;
         }
         if (isset($result["title"]) && isset($result["description"])) {
             break;
         }
     }
     return $result;
 }
Ejemplo n.º 12
0
 /**
  * 回覧板データ配列を生成
  *
  * @param object $recordSet ADORecordSet
  * @return array データ配列
  * @access private
  */
 function &_fetchCircularInfo(&$recordSet)
 {
     $circular = $recordSet->fetchRow();
     if (empty($circular['period'])) {
         return $circular;
     }
     list($circular['period'], $ymdPeriodDate) = $this->getDisplayPeriodDate($circular['period']);
     $today = timezone_date_format(null, 'YmdHis');
     if ($today > $ymdPeriodDate) {
         $circular['periodClassName'] = CIRCULAR_PERIOD_OVER;
     }
     return $circular;
 }
Ejemplo n.º 13
0
 /**
  * execute処理
  *
  * @access  public
  */
 function execute()
 {
     if ($this->block_id_arr) {
         $sqlwhere = " WHERE block.block_id IN (" . implode(",", $this->block_id_arr) . ")";
     } else {
         return 'success';
     }
     $sqlwhere .= " AND contents.temporary_flag = " . MULTIDATABASE_STATUS_RELEASED_VALUE;
     $sqlwhere .= $this->sqlwhere;
     $sqlwhere .= " GROUP BY contents.content_id ";
     $sql = "SELECT COUNT(*)" . " FROM {multidatabase} mdb" . " INNER JOIN {multidatabase_block} block ON (mdb.multidatabase_id=block.multidatabase_id)" . " INNER JOIN {multidatabase_content} contents ON (mdb.multidatabase_id=contents.multidatabase_id)" . " INNER JOIN {multidatabase_metadata_content} datas ON (contents.content_id=datas.content_id)" . $sqlwhere;
     $result = $this->db->execute($sql, $this->params, null, null, false);
     if ($result !== false) {
         $this->count = count($result);
     } else {
         $this->count = 0;
     }
     if ($this->only_count == _ON) {
         return 'count';
     }
     if ($this->count > 0) {
         $sql = "SELECT block.block_id, mdb.multidatabase_id, mdb.title_metadata_id, title.content as title, datas.content as content, contents.*, file.file_name" . " FROM {multidatabase} mdb" . " INNER JOIN {multidatabase_block} block ON (mdb.multidatabase_id=block.multidatabase_id)" . " INNER JOIN {multidatabase_content} contents ON (mdb.multidatabase_id=contents.multidatabase_id)" . " INNER JOIN {multidatabase_metadata_content} datas ON (contents.content_id=datas.content_id)" . " LEFT JOIN {multidatabase_metadata_content} title ON (mdb.title_metadata_id=title.metadata_id AND datas.content_id=title.content_id)" . " LEFT JOIN {multidatabase_file} file ON (title.metadata_content_id=file.metadata_content_id)" . $sqlwhere . " ORDER BY contents.insert_time DESC";
         $this->results =& $this->db->execute($sql, $this->params, $this->limit, $this->offset, true, array($this, '_fetchcallback'));
         $metadata_id_arr = array();
         foreach ($this->results as $result) {
             $metadata_id_arr[] = $result["metadata_id"];
         }
         $where_params = array("metadata_id IN (" . implode(',', $metadata_id_arr) . ") " => null);
         $metadatas = $this->db->selectExecute("multidatabase_metadata", $where_params, null, null, null, array($this, '_fetchMetadataCallback'));
         foreach ($this->results as $key => $result) {
             $metadata = $metadatas[$result["metadata_id"]];
             switch ($metadata["type"]) {
                 case MULTIDATABASE_META_TYPE_FILE:
                 case MULTIDATABASE_META_TYPE_IMAGE:
                     if (empty($result["file_name"])) {
                         $title = MULTIDATABASE_NOTITLE;
                     } else {
                         $title = $result["file_name"];
                     }
                     $this->results[$key]["title"] = $title;
                     $this->results[$key]["description"] = $title;
                     break;
                 case MULTIDATABASE_META_TYPE_WYSIWYG:
                     $container =& DIContainerFactory::getContainer();
                     $convertHtml =& $container->getComponent("convertHtml");
                     $title = $convertHtml->convertHtmlToText($result["title"]);
                     $title = preg_replace("/\\\n/", " ", $title);
                     $title = mb_substr($title, 0, _SEARCH_CONTENTS_LEN + 1, INTERNAL_CODE);
                     $this->results[$key]["title"] = $title;
                     $this->results[$key]["description"] = $title;
                     break;
                 case MULTIDATABASE_META_TYPE_AUTONUM:
                     $title = intval($result["title"]);
                     $this->results[$key]["title"] = $title;
                     $this->results[$key]["description"] = $title;
                     break;
                 case MULTIDATABASE_META_TYPE_DATE:
                     if (empty($result["title"])) {
                         $title = MULTIDATABASE_NOTITLE;
                     } else {
                         $title = timezone_date_format($result["title"], _DATE_FORMAT);
                     }
                     $this->results[$key]["title"] = $title;
                     $this->results[$key]["description"] = $title;
                     break;
                 case MULTIDATABASE_META_TYPE_INSERT_TIME:
                     $title = timezone_date_format($result["pubDate"], _FULL_DATE_FORMAT);
                     $this->results[$key]["title"] = $title;
                     $this->results[$key]["description"] = $title;
                     break;
                 case MULTIDATABASE_META_TYPE_UPDATE_TIME:
                     $title = timezone_date_format($result["update_time"], _FULL_DATE_FORMAT);
                     $this->results[$key]["title"] = $title;
                     $this->results[$key]["description"] = $title;
                     break;
                 case MULTIDATABASE_META_TYPE_MULTIPLE:
                     if (empty($result["title"])) {
                         $title = MULTIDATABASE_NOTITLE;
                     } else {
                         $multipleArr = explode("|", $result["title"]);
                         $title = $multipleArr[0];
                     }
                     $this->results[$key]["title"] = $title;
                     $this->results[$key]["description"] = $title;
                     break;
                 default:
                     if (empty($result["title"])) {
                         $title = MULTIDATABASE_NOTITLE;
                     } else {
                         $title = $result["title"];
                     }
                     $this->results[$key]["title"] = $title;
                     $this->results[$key]["description"] = $title;
             }
             unset($this->results[$key]["title_metadata_id"]);
             unset($this->results[$key]["file_name"]);
             unset($this->results[$key]["update_time"]);
         }
     }
     return 'success';
 }
Ejemplo n.º 14
0
 /**
  * メールを送信する
  *
  * @access	public
  */
 function send()
 {
     if ($this->setting_config == false) {
         $this->_log->error("システム管理の設定が正しくありません", "Mailer#send");
         return false;
     }
     if ($this->body == "") {
         $this->_log->error("メッセージ本文がありません", "Mailer#send");
         return false;
     }
     if (!empty($this->priority)) {
         $this->headers[] = "X-Priority: " . $this->priority;
     }
     $this->headers[] = "X-Mailer: PHP/" . phpversion();
     $this->headers[] = "Return-Path: " . $this->fromEmail;
     $container =& DIContainerFactory::getContainer();
     $configView =& $container->getComponent("configView");
     $this->assign("X-FROM_EMAIL", $this->fromEmail);
     $this->assign("X-FROM_NAME", htmlspecialchars($this->fromName));
     $confs = $configView->getConfigByConfname(_SYS_CONF_MODID, "sitename");
     $this->assign("X-SITE_NAME", htmlspecialchars($confs["conf_value"]));
     $this->assign("X-SITE_URL", BASE_URL . INDEX_FILE_NAME);
     $session =& $container->getComponent("Session");
     if (!isset($this->_assignedTags['X-ROOM'])) {
         $request =& $container->getComponent("Request");
         $pageView =& $container->getComponent("pagesView");
         $roomId = $request->getParameter("room_id");
         $pages = $pageView->getPageById($roomId);
         $this->assign("X-ROOM", htmlspecialchars($pages["page_name"]));
     }
     if (!isset($this->_assignedTags["X-USER"])) {
         $this->assign("X-USER", htmlspecialchars($session->getParameter("_handle")));
     }
     $commonMain =& $container->getComponent("commonMain");
     $convertHtml =& $commonMain->registerClass(WEBAPP_DIR . '/components/convert/Html.class.php', "Convert_Html", "convertHtml");
     foreach ($this->_assignedTags as $k => $v) {
         if (substr($k, 0, 4) == "X-TO" || $k == "X-URL") {
             continue;
         }
         $this->body = str_replace("{" . $k . "}", $v, $this->body);
         $this->subject = str_replace("{" . $k . "}", $convertHtml->convertHtmlToText($v), $this->subject);
     }
     $this->body = str_replace("\r\n", "\n", $this->body);
     $this->body = str_replace("\r", "\n", $this->body);
     $this->body = str_replace("\n", $this->_LE, $this->body);
     $this->body = $this->_insertNewLine($this->body);
     if (isset($this->_assignedTags["X-URL"])) {
         $this->body = str_replace("{X-URL}", "<a href=\"" . $this->_assignedTags["X-URL"] . "\">" . $this->_assignedTags["X-URL"] . "</a>", $this->body);
         $mobile_body = str_replace("{X-URL}", $this->_assignedTags["X-URL"], $this->body);
         unset($this->_assignedTags["X-URL"]);
     } else {
         $mobile_body = $this->body;
     }
     $mobile_body = $convertHtml->convertHtmlToText($mobile_body);
     $mobile_body = $this->_insertNewLine($mobile_body);
     if (count($this->toUsers) > 0) {
         foreach ($this->toUsers as $user) {
             $email = $user["email"];
             if (empty($email)) {
                 continue;
             }
             if (isset($this->_assignedTags["X-TO_DATE"])) {
                 $date = timezone_date_format($this->_assignedTags["X-TO_DATE"], _FULL_DATE_FORMAT);
             } else {
                 $date = "";
             }
             if (!isset($user["handle"])) {
                 $user["handle"] = "";
             }
             // type (html(email) or text(mobile_email))
             if (!isset($user["type"])) {
                 $user["type"] = "html";
             }
             if (empty($user["lang_dirname"])) {
                 $user["lang_dirname"] = $session->getParameter("_lang");
                 if (!isset($user["lang_dirname"]) || $user["lang_dirname"] == "") {
                     $user["lang_dirname"] = "japanese";
                 }
             }
             $subject = $this->subject;
             if ($this->isHTML == true && ($user["type"] == "html" || $user["type"] == "email")) {
                 // htmlメール
                 $this->_mailer->IsHTML(true);
                 $body = $this->body;
                 $body = str_replace("{X-TO_HANDLE}", htmlspecialchars($user["handle"]), $body);
             } else {
                 // テキストメール
                 $this->_mailer->IsHTML(false);
                 $body = $mobile_body;
                 $body = str_replace("{X-TO_HANDLE}", $user["handle"], $body);
             }
             $subject = str_replace("{X-TO_HANDLE}", $user["handle"], $subject);
             $subject = str_replace("{X-TO_EMAIL}", $email, $subject);
             $subject = str_replace("{X-TO_DATE}", $date, $subject);
             $body = str_replace("{X-TO_EMAIL}", $email, $body);
             $body = str_replace("{X-TO_DATE}", $date, $body);
             $localFilePath = WEBAPP_DIR . "/language/" . strtolower($user["lang_dirname"]) . "/Mailer_Local.php";
             if (file_exists($localFilePath)) {
                 require_once $localFilePath;
                 $className = "Mailer_Local_" . ucfirst(strtolower($user["lang_dirname"]));
                 $local =& new $className();
                 $this->_mailer->CharSet = $local->charSet;
                 $this->_mailer->Encoding = $local->encoding;
                 if (!empty($this->fromName)) {
                     $this->_mailer->FromName = $local->encodeFromName($this->fromName);
                 }
                 $this->_mailer->Subject = $local->encodeSubject($subject);
                 $this->_mailer->Body = $local->encodeBody($body);
             } else {
                 $this->_mailer->CharSet = $this->charSet;
                 $this->_mailer->Encoding = $this->encoding;
                 if (!empty($this->fromName)) {
                     $this->_mailer->FromName = $this->fromName;
                 }
                 $this->_mailer->Subject = $subject;
                 $this->_mailer->Body = $body;
             }
             $this->_mailer->ClearAllRecipients();
             $this->_mailer->AddAddress($email);
             if (!empty($this->fromEmail)) {
                 $this->_mailer->From = $this->fromEmail;
             }
             $this->_mailer->ClearCustomHeaders();
             foreach ($this->headers as $header) {
                 $this->_mailer->AddCustomHeader($header);
             }
             if (!$this->_mailer->Send()) {
                 $this->_log->warn($email . "宛にメールを送信できませんでした/" . $this->_mailer->ErrorInfo, "Mailer#send");
             } else {
                 $this->_log->trace($email . "宛にメールを送信しました", "Mailer#send");
             }
             //flush();	// ob_contentが送られてしまうためコメント
         }
     }
     return true;
 }