From a1ac8c3cf9f20b8e6f69a2ebca9c2ba67640f158 Mon Sep 17 00:00:00 2001 From: Yoshihiro OKUMURA Date: Mon, 14 Sep 2026 17:14:31 +0900 Subject: [PATCH] chore: move XOOPS conversion tools to xoops-static-exporter The dump scripts are site-specific but belong with the other sites' tools rather than inside the front-end repository. They now live in xoops-static-exporter under sites/pupil.brain.riken.jp/. --- etc/config.inc.php | 3 - etc/dumpPublicItems.php | 948 ---------------------------------------- 2 files changed, 951 deletions(-) delete mode 100644 etc/config.inc.php delete mode 100644 etc/dumpPublicItems.php diff --git a/etc/config.inc.php b/etc/config.inc.php deleted file mode 100644 index 28d01b1..0000000 --- a/etc/config.inc.php +++ /dev/null @@ -1,3 +0,0 @@ -prefix(); - -// get public index with certified item count -$sql =<<< SQL -SELECT - `idx`.*, - `it`.`title`, - (SELECT COUNT(*) - FROM `${prefix}_xoonips_index_item_link` AS `iil` - INNER JOIN `${prefix}_xoonips_item_basic` AS `ib` ON `iil`.`item_id`=`ib`.`item_id` - WHERE `iil`.`index_id`=`idx`.`index_id` AND `iil`.`certify_state`=2 - ) AS `num_items` - FROM `${prefix}_xoonips_index` AS `idx` - INNER JOIN `${prefix}_xoonips_item_title` AS `it` ON `idx`.`index_id`=`it`.`item_id` - WHERE `it`.`title_id`=0 - AND `idx`.`open_level`=1 -SQL; - -$limitItems = array(); - -if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); -} -$tree = array(); -$root = array(); -while ($row = $xoopsDB->fetchArray($res)) { - myDecode($row); - $tree[$row['index_id']] = $row; - $root[$row['parent_index_id']][$row['sort_number']] = $row['index_id']; -} -$xoopsDB->freeRecordSet($res); -foreach ($root as &$node) { - ksort($node); -} -unset($node); - -$data[] = getTreeNode($tree, $root, 3); -$json = json_encode($data);//, JSON_PRETTY_PRINT); -file_put_contents('tree.json', $json); -unset($json, $data, $root); - -// get public items -//if (!is_dir(__DIR__.'/items/')) { -// mkdir(__DIR__.'/items/'); -//} -$sql =<<< SQL -SELECT - `ib`.*, - `it`.`title`, - `ity`.`display_name` AS `item_type_display_name`, - `ity`.`name` AS `item_type_name`, - `u`.`uname`, `u`.`name`, `u`.`email` - FROM `${prefix}_xoonips_item_basic` AS `ib` - INNER JOIN `${prefix}_xoonips_item_title` AS `it` ON `ib`.`item_id`=`it`.`item_id` - INNER JOIN `${prefix}_xoonips_item_type` AS `ity` ON `ib`.`item_type_id`=`ity`.`item_type_id` - INNER JOIN `${prefix}_users` AS `u` ON `ib`.`uid`=`u`.`uid` - WHERE `it`.`title_id`=0 AND - `ity`.`display_name` != 'Index' -SQL; - -if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); -} -$items = array(); -while ($row = $xoopsDB->fetchArray($res)) { - myDecode($row); - convertToInt($row, array('item_id', 'item_type_id', 'uid', 'last_update_date', 'creation_date', 'publication_year', 'publication_month', 'publication_mday')); - $row['item_url'] = getItemUrl($row); - $row['index'] = getIndexes($tree, $row['item_id']); - if (0 === count($row['index'])) { - continue; - } - $row['changelog'] = getChangeLogs($row['item_id']); - $row['related_to'] = getRelatedTo($row['item_id']); - $row['keyword'] = getKeyword($row['item_id']); - $row['file'] = getFile($row['item_id']); - switch ($row['item_type_name']) { - case 'xnpbinder': - appendBinderInfo($row); - break; - case 'xnpfiles': - appendFilesInfo($row); - break; - case 'xnppaper': - appendPaperInfo($row); - break; - case 'xnpbook': - appendBookInfo($row); - break; - case 'xnpconference': - appendConferenceInfo($row); - break; - case 'xnpdata': - appendDataInfo($row); - break; - case 'xnptool': - appendToolInfo($row); - break; - case 'xnpmemo': - appendMemoInfo($row); - break; - case 'xnpmodel': - appendModelInfo($row); - break; - case 'xnppresentation': - appendPresentationInfo($row); - break; - case 'xnpstimulus': - appendStimulusInfo($row); - break; - case 'xnpsimulator': - appendSimulatorInfo($row); - break; - case 'xnpurl': - appendUrlInfo($row); - break; - case 'xnpnimgcenter': - appendNimgcenterInfo($row); - break; - default: - exit('Unsupported item type: '.$row['item_type_name']); - } - if (isset($row['attachment_dl_limit']) && $row['attachment_dl_limit']) { - $limitItems[] = array( - 'uname' => $row['uname'], - 'name' => $row['name'], - 'email' => $row['email'], - 'item_id' => $row['item_id'], - 'doi' => $row['doi'], - ); - } - unset($row['email']); - //$items[$row['item_id']] = $row; - $items[] = $row; - $json = json_encode($row);//, JSON_PRETTY_PRINT); - //file_put_contents(__DIR__.'/items/'.$row['item_id'].'.json', $json); -} -$xoopsDB->freeRecordSet($res); -$json = json_encode($items);//, JSON_PRETTY_PRINT); -file_put_contents(__DIR__.'/items.json', $json); - -$fp = fopen(__DIR__.'/dl-limit-items.csv', 'w'); -foreach ($limitItems as $row) { - $data = array( - $row['uname'], - $row['name'], - $row['email'], - getItemUrl($row), - ); - fputcsv($fp, $data); -} -fclose($fp); - -// get files -$fthandler = xoonips_getormhandler('xoonips', 'file_type'); -$criteria = new Criteria('name', 'preview'); -$ftobjs = $fthandler->getObjects($criteria); -$ftId = $ftobjs[0]->get('file_type_id'); -$fhandler = xoonips_getormhandler('xoonips', 'file'); -$join = new XooNIpsJoinCriteria('xoonips_item_basic', 'item_id', 'item_id', 'INNER', 'ib'); -$join->cascade(new XooNIpsJoinCriteria('xoonips_index_item_link', 'item_id', 'item_id', 'INNER', 'iil'), 'ib', true); -$join->cascade(new XooNIpsJoinCriteria('xoonips_index', 'index_id', 'index_id', 'INNER', 'idx'), 'iil', true); -$criteria = new CriteriaCompo(new Criteria('is_deleted', 0)); -// $criteria->add(new Criteria('file_type_id', $ftId)); -$criteria->add(new Criteria('certify_state', 2)); -$criteria->add(new Criteria('open_level', 1)); -$res = $fhandler->open($criteria, '', false, $join); -$filesDir = __DIR__.'/file'; -if (!is_dir($filesDir)) { - mkdir($filesDir); -} -$xconfig_handler = xoonips_getormhandler('xoonips', 'config'); -$basePath = $xconfig_handler->getValue('upload_dir'); -while ($obj = $fhandler->getNext($res)) { - $file_id = $obj->get('file_id'); - $file_name = $obj->get('original_file_name'); - $file_dir = $filesDir.'/'.$file_id; - if (!is_dir($file_dir)) { - @mkdir($file_dir); - } - if (!file_exists($file_dir.'/'.$file_name)) { - if (!copy($basePath.'/'.$file_id, $file_dir.'/'.$file_name)) { - echo 'failed to copy file: '.$basePath.'/'.$file_id. PHP_EOL; - } - $htaccess = $file_dir.'/.htaccess'; - $data = "RewriteEngine On\nRewriteBase /database/file/$file_id\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteRule .* $file_name [R=301,L]\n"; - file_put_contents($htaccess, $data); - } - if ($ftId == $obj->get('file_type_id')) { - // create preview thubmnails - createThumbnail($obj, $basePath, $filesDir); - } -} -$fhandler->close($res); - -// functions - -function getItemUrl($row) { - $url = XOONIPS_URL.'/detail.php?'; - if ('' != $row['doi']) { - $url .= XNP_CONFIG_DOI_FIELD_PARAM_NAME.'='.$row['doi']; - } else { - $url .= 'item_id='.$row['item_id']; - } - return $url; -} - -function getTreeNode($tree, $root, $index_id) { - $children = array(); - if (isset($root[$index_id])) { - foreach ($root[$index_id] as $child_index_id) { - $children[] = getTreeNode($tree, $root, $child_index_id); - } - } - return array( - 'id' => (int) $tree[$index_id]['index_id'], - 'title' => $tree[$index_id]['title'], - 'num_of_items' => (int) $tree[$index_id]['num_items'], - 'children' => $children - ); -} - -function getIndexes($tree, $item_id) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $sql =<<< SQL -SELECT - `iil`.* - FROM `${prefix}_xoonips_index_item_link` AS `iil` - WHERE `iil`.`item_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $indexes = array(); - while ($row = $xoopsDB->fetchArray($res)) { - $index_id = $row['index_id']; - if (isset($tree[$index_id])) { - $idxes = array(); - $idxes[] = $tree[$index_id]['title']; - $parent_id = $tree[$index_id]['parent_index_id']; - while ($parent_id != 1) { - $idxes[] = $tree[$parent_id]['title']; - $parent_id = $tree[$parent_id]['parent_index_id']; - } - $idxes[] = ''; - $indexes[] = array( - 'index_id' => (int) $index_id, - 'title' => trim(implode(' / ', array_reverse($idxes))), - ); - } - } - $xoopsDB->freeRecordSet($res); - return $indexes; -} - -function getChangeLogs($item_id) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $sql =<<< SQL -SELECT `log_date`, `log` - FROM `${prefix}_xoonips_changelog` - WHERE `item_id`=$item_id - ORDER BY `log_date` DESC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $ret = array(); - while ($row = $xoopsDB->fetchArray($res)) { - myDecode($row); - convertToInt($row, array('log_date')); - $ret[] = $row; - } - $xoopsDB->freeRecordSet($res); - return $ret; -} - -function getRelatedTo($item_id) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $sql =<<< SQL -SELECT `item_id` - FROM `${prefix}_xoonips_related_to` - WHERE `parent_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $ret = array(); - while ($row = $xoopsDB->fetchArray($res)) { - $ret[] = (int) $row['item_id']; - } - $xoopsDB->freeRecordSet($res); - return $ret; -} - -function getKeyword($item_id) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $sql =<<< SQL -SELECT * - FROM `${prefix}_xoonips_item_keyword` - WHERE `item_id`=$item_id - ORDER BY `keyword_id` ASC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $ret = array(); - while ($row = $xoopsDB->fetchArray($res)) { - myDecode($row); - $ret[] = $row['keyword']; - } - $xoopsDB->freeRecordSet($res); - return $ret; -} - -function getFile($item_id) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $sql =<<< SQL -SELECT `f`.`file_id`, `f`.`original_file_name`, `f`.`mime_type`, `f`.`file_size`, `f`.`caption`, `f`.`timestamp`, - `ft`.`name` AS `file_type_name`, `ft`.`display_name` AS `file_type_display_name` - FROM `${prefix}_xoonips_file` AS `f` - INNER JOIN `${prefix}_xoonips_file_type` AS `ft` ON `f`.`file_type_id`=`ft`.`file_type_id` - WHERE `item_id`=$item_id - AND `is_deleted`=0 - ORDER BY `ft`.`name` ASC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $ret = array(); - while ($row = $xoopsDB->fetchArray($res)) { - myDecode($row); - convertToInt($row, array('file_id', 'file_size')); - $ret[] = $row; - } - $xoopsDB->freeRecordSet($res); - return $ret; -} - -function appendBinderInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpbinder_item_detail` - WHERE `binder_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('binder_id')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpbinder_binder_item_link` - WHERE `binder_id`=$item_id - ORDER BY `binder_item_link_id` ASC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($link = $xoopsDB->fetchArray($res)) { - $row['link_item_ids'][] = (int) $link['item_id']; - } - $xoopsDB->freeRecordSet($res); -} - -function appendFilesInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpfiles_item_detail` - WHERE `files_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('files_id')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); -} - -function appendPaperInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnppaper_item_detail` - WHERE `paper_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('paper_id','volume','number')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnppaper_author` - WHERE `paper_id`=$item_id - ORDER BY `author_order` ASC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $row['author'] = array(); - while ($author = $xoopsDB->fetchArray($res)) { - myDecode($author); - $row['author'][] = $author['author']; - } - $xoopsDB->freeRecordSet($res); -} - -function appendBookInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpbook_item_detail` - WHERE `book_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('book_id', 'attachment_dl_limit', 'attachment_dl_notify')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpbook_author` - WHERE `book_id`=$item_id - ORDER BY `author_order` ASC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $row['author'] = array(); - while ($author = $xoopsDB->fetchArray($res)) { - myDecode($author); - $row['author'][] = $author['author']; - } - $xoopsDB->freeRecordSet($res); -} - - -function appendConferenceInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpconference_item_detail` - WHERE `conference_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('conference_id', 'conference_from_year', 'conference_from_month', 'conference_from_mday', 'conference_to_year', 'conference_to_month', 'conference_to_mday', 'attachment_dl_limit', 'attachment_dl_notify')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpconference_author` - WHERE `conference_id`=$item_id - ORDER BY `author_order` ASC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $row['author'] = array(); - while ($author = $xoopsDB->fetchArray($res)) { - myDecode($author); - $row['author'][] = $author['author']; - } - $xoopsDB->freeRecordSet($res); -} - -function appendDataInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpdata_item_detail` - WHERE `data_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('data_id', 'use_cc', 'cc_commercial_use', 'cc_modification', 'attachment_dl_limit', 'attachment_dl_notify')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpdata_experimenter` - WHERE `data_id`=$item_id - ORDER BY `experimenter_order` ASC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $row['experimenter'] = array(); - while ($author = $xoopsDB->fetchArray($res)) { - myDecode($author); - $row['experimenter'][] = $author['experimenter']; - } - $xoopsDB->freeRecordSet($res); -} - -function appendToolInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnptool_item_detail` - WHERE `tool_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('tool_id', 'use_cc', 'cc_commercial_use', 'cc_modification', 'attachment_dl_limit', 'attachment_dl_notify')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnptool_developer` - WHERE `tool_id`=$item_id - ORDER BY `developer_order` ASC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $row['developer'] = array(); - while ($author = $xoopsDB->fetchArray($res)) { - myDecode($author); - $row['developer'][] = $author['developer']; - } - $xoopsDB->freeRecordSet($res); -} - -function appendMemoInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpmemo_item_detail` - WHERE `memo_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('memo_id')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); -} - -function appendModelInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpmodel_item_detail` - WHERE `model_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('model_id', 'use_cc', 'cc_commercial_use', 'cc_modification', 'attachment_dl_limit', 'attachment_dl_notify')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpmodel_creator` - WHERE `model_id`=$item_id - ORDER BY `creator_order` ASC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $row['creator'] = array(); - while ($author = $xoopsDB->fetchArray($res)) { - myDecode($author); - $row['creator'][] = $author['creator']; - } - $xoopsDB->freeRecordSet($res); -} - -function appendPresentationInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnppresentation_item_detail` - WHERE `presentation_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('presentation_id', 'use_cc', 'cc_commercial_use', 'cc_modification', 'attachment_dl_limit', 'attachment_dl_notify')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnppresentation_creator` - WHERE `presentation_id`=$item_id - ORDER BY `creator_order` ASC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $row['creator'] = array(); - while ($author = $xoopsDB->fetchArray($res)) { - myDecode($author); - $row['creator'][] = $author['creator']; - } - $xoopsDB->freeRecordSet($res); -} - -function appendStimulusInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpstimulus_item_detail` - WHERE `stimulus_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('stimulus_id', 'use_cc', 'cc_commercial_use', 'cc_modification', 'attachment_dl_limit', 'attachment_dl_notify')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpstimulus_developer` - WHERE `stimulus_id`=$item_id - ORDER BY `developer_order` ASC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $row['developer'] = array(); - while ($author = $xoopsDB->fetchArray($res)) { - myDecode($author); - $row['developer'][] = $author['developer']; - } - $xoopsDB->freeRecordSet($res); -} - -function appendSimulatorInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpsimulator_item_detail` - WHERE `simulator_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('simulator_id', 'use_cc', 'cc_commercial_use', 'cc_modification', 'attachment_dl_limit', 'attachment_dl_notify')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpsimulator_developer` - WHERE `simulator_id`=$item_id - ORDER BY `developer_order` ASC -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $row['developer'] = array(); - while ($author = $xoopsDB->fetchArray($res)) { - myDecode($author); - $row['developer'][] = $author['developer']; - } - $xoopsDB->freeRecordSet($res); -} - -function appendUrlInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpurl_item_detail` - WHERE `url_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - convertToInt($detail, array('url_id', 'url_count')); - $row += $detail; - } - $xoopsDB->freeRecordSet($res); -} - -function appendNimgcenterInfo(&$row) { - global $xoopsDB; - $prefix = $xoopsDB->prefix(); - $item_id = $row['item_id']; - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpnimgcenter_item_detail` - WHERE `nimgcenter_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - while ($detail = $xoopsDB->fetchArray($res)) { - myDecode($detail); - $detail['coord_type_name'] = (0 === $detail['coord_type']) ? 'Talairach' : 'MNI'; - $row += $detail; - } - $xoopsDB->freeRecordSet($res); - $sql =<<< SQL -SELECT * - FROM `${prefix}_xnpnimgcenter_talairach_list` - WHERE `nimgcenter_id`=$item_id -SQL; - if (!($res = $xoopsDB->query($sql))) { - var_dump($xoopsDB);exit(); - } - $row['coordinate'] = array(); - while ($t = $xoopsDB->fetchArray($res)) { - $row['coordinate'][] = $t; - } - $xoopsDB->freeRecordSet($res); -} - -function myDecode(&$data){ - $textutil = xoonips_getutility('text'); - foreach ($data as $k => $v) { - $v = $textutil->html_numeric_entities($v); - $data[$k] = mb_decode_numericentity($v, array(0x0, 0x10000, 0, 0xfffff), 'UTF-8'); - } -} - -function convertToInt(&$data, $keys) { - foreach ($keys as $key) { - if (isset($data[$key])) { - $data[$key] = '' === $data[$key] ? null : (int) $data[$key]; - } - } -} - -function createThumbnail($obj, $basePath, $outputDir) { - $fileId = $obj->get('file_id'); - $outputFile = $outputDir.'/'.$fileId.'.png'; - $thumbnail_file = $obj->get('thumbnail_file'); - $size = strlen($thumbnail_file); - if ($size > 0) { - file_put_contents($outputFile, $thumbnail_file); - return true; - } - $file_path = $basePath.'/'.$fileId; - $finfo = finfo_open(FILEINFO_NONE); - $label = finfo_file($finfo, $file_path); - finfo_close($finfo); - $mime_type = $obj->get('mime_type'); - if (preg_match('/^([^\\/]*)\\/(.*)$/', $mime_type, $matches)) { - if ($matches[1] == 'audio') { - $img_type = 'audio'; - } elseif ($matches[1] == 'image') { - $img_type = 'image'; - } elseif ($matches[1] == 'video') { - $img_type = 'video'; - } elseif ($matches[1] == 'text') { - $img_type = 'text'; - } elseif ($matches[1] == 'application') { - $text_types = array('pdf', 'xml', 'msword', 'vnd.ms-excel'); - $image_types = array('vnd.ms-powerpoint', 'postscript'); - $audio_types = array('vnd.rn-realmedia'); - if (in_array($matches[2], $text_types)) { - $img_type = 'text'; - } elseif (in_array($matches[2], $audio_types)) { - $img_type = 'audio'; - } elseif (in_array($matches[2], $image_types)) { - $img_type = 'image'; - } else { - $img_type = 'application'; - } - } else { - $img_type = 'unknown'; - } - } else { - $img_type = 'unknown'; - } - $img_file = XOOPS_ROOT_PATH.'/modules/xoonips/images/thumbnail_'.$img_type.'.png'; - // create image resource - $w = 100; - $h = 100; - $im = imagecreatetruecolor($w, $h); - // label setting - $f = 2; - // font number - $lp = 5; - // label padding - $fw = imagefontwidth($f); - // font width - $fh = imagefontheight($f); - // font height - $fmaxlen = ($w - $lp * 2) / $fw; - // max label length - $labels = explode(',', $label); - $label = $labels[0]; - $llen = strlen($label); - if ($llen > $fmaxlen) { - $label = substr($label, 0, $fmaxlen - 3); - $label .= '...'; - $llen = strlen($label); - } - $lx = ($w - $llen * $fw) / 2; - $ly = $h - $fh - $lp; - // change alpha attributes and create transparent color - imageantialias($im, true); - imagealphablending($im, false); - imagesavealpha($im, true); - $transparent = imagecolorallocatealpha($im, 255, 255, 255, 0); - $col_white = imagecolorallocate($im, 255, 255, 255); - $col_gray = imagecolorallocate($im, 127, 127, 127); - $col_black = imagecolorallocate($im, 0, 0, 0); - // fill all area with transparent color - imagefill($im, 0, 0, $col_white); - imagealphablending($im, true); - $imicon = imagecreatefrompng($img_file); - imagecopy($im, $imicon, $w / 2 - 48 / 2, $h / 2 - 48 / 2, 0, 0, 48, 48); - imagepolygon($im, array(0, 0, $w - 1, 0, $w - 1, $h - 1, 0, $h - 1), 4, $col_gray); - if (strlen($label) != 0) { - imagestring($im, $f, $lx, $ly, $label, $black); - } - imagepng($im, $outputFile); - imagedestroy($imicon); - imagedestroy($im); - return true; -} -