function _install() { if ($this->canInstall()) { global $user; $sheetlib = TikiLib::lib('sheet'); require_once 'lib/sheet/grid.php'; //here we convert the array to that of what is acceptable to the sheet lib $parentSheetId = 0; $sheets = array(); $nbsheets = count($this->data); for ($sheetI = 0; $sheetI < $nbsheets; $sheetI++) { $sheets[$sheetI] = new stdClass(); $sheets[$sheetI]->rows = array(); $sheets[$sheetI]->metadata = new stdClass(); $sheets[$sheetI]->metadata->widths = array(); $title = $this->data[$sheetI]['title']; $title = $title ? $title : "Untitled - From Profile Import"; $nbdatasheetI = count($this->data[$sheetI]); if (in_array('title', array_keys($this->data[$sheetI]))) { $nbdatasheetI--; // do not take the title into account on the number of rows } for ($r = 0; $r < $nbdatasheetI; $r++) { $nbdatasheetIr = count($this->data[$sheetI][$r]); $sheets[$sheetI]->rows[$r]->columns = array(); for ($c = 0; $c < $nbdatasheetIr; $c++) { $sheets[$sheetI]->rows[$r]->columns[$c] = new stdClass(); $value = ""; $formula = ""; $rawValue = $this->data[$sheetI][$r][$c]; if (substr($rawValue, 0, 1) == "=") { $formula = $rawValue; } else { $value = $rawValue; } $sheets[$sheetI]->rows[$r]->columns[$c]->formula = $formula; $sheets[$sheetI]->rows[$r]->columns[$c]->value = $value; $sheets[$sheetI]->rows[$r]->columns[$c]->width = 1; $sheets[$sheetI]->rows[$r]->columns[$c]->height = 1; } } $sheets[$sheetI]->metadata->widths[] = $nbdatasheetIr; $sheets[$sheetI]->metadata->rows = $nbdatasheetI; $sheets[$sheetI]->metadata->columns = count($this->data[$sheetI][0]); $id = $sheetlib->replace_sheet(0, $title, "", $user, $parentSheetId); $parentSheetId = $parentSheetId ? $parentSheetId : $id; $grid = new TikiSheet($id); $handler = new TikiSheetHTMLTableHandler($sheets[$sheetI]); $res = $grid->import($handler); $handler = new TikiSheetDatabaseHandler($id); $grid->export($handler); } return $parentSheetId; } }
function getDocument($objectId, Search_Type_Factory_Interface $typeFactory) { $sheetlib = TikiLib::lib('sheet'); $info = $sheetlib->get_sheet_info($objectId); $values = $this->db->table('tiki_sheet_values'); $contributors = $values->fetchColumn($values->expr('DISTINCT `user`'), array('sheetId' => $objectId)); $lastModif = $values->fetchOne($values->max('begin'), array('sheetId' => $objectId)); $loader = new TikiSheetDatabaseHandler($objectId); $writer = new TikiSheetCSVHandler('php://output'); $grid = new TikiSheet(); $grid->import($loader); $grid->export($writer); $text = $writer->output; $data = array('title' => $typeFactory->sortable($info['title']), 'description' => $typeFactory->sortable($info['description']), 'modification_date' => $typeFactory->timestamp($lastModif), 'contributors' => $typeFactory->multivalue($contributors), 'sheet_content' => $typeFactory->plaintext($text), 'view_permission' => $typeFactory->identifier('tiki_p_view_sheet')); return $data; }
function _install() { if ($this->canInstall()) { global $user, $sheetlib; require_once 'lib/sheet/grid.php'; //here we convert the array to that of what is acceptable to the sheet lib $parentSheetId = null; $sheets = array(); $nbsheets = count($this->data); for ($sheetI = 0; $sheetI < $nbsheets; $sheetI++) { $title = $this->data[$sheetI]['title']; $title = $title ? $title : "Untitled - From Profile Import"; $nbdatasheetI = count($this->data[$sheetI]); for ($r = 0; $r < $nbdatasheetI; $r++) { $nbdatasheetIr = count($this->data[$sheetI][$r]); for ($c = 0; $c < $nbdatasheetIr; $c++) { $value = ""; $formula = ""; $rawValue = $this->data[$sheetI][$r][$c]; if (substr($rawValue, 0, 1) == "=") { $formula = $rawValue; } else { $value = $rawValue; } $ri = 'r' . $r; $ci = 'c' . $c; $sheets[$sheetI]->data->{$ri}->{$ci}->formula = $formula; $sheets[$sheetI]->data->{$ri}->{$ci}->value = $value; $sheets[$sheetI]->data->{$ri}->{$ci}->width = 1; $sheets[$sheetI]->data->{$ri}->{$ci}->height = 1; } } $sheets[$sheetI]->metadata->rows = count($this->data[$sheetI]); $sheets[$sheetI]->metadata->columns = count($this->data[$sheetI][0]); $id = $sheetlib->replace_sheet(0, $title, "", $user, $parentSheetId); $parentSheetId = $parentSheetId ? $parentSheetId : $id; $grid = new TikiSheet($id); $handler = new TikiSheetHTMLTableHandler($sheets[$sheetI]); $res = $grid->import($handler); $handler = new TikiSheetDatabaseHandler($id); $grid->export($handler); } return $parentSheetId; } }
default: // All file based handlers registered if (!in_array($handler, TikiSheet::getHandlerList())) { $smarty->assign('msg', "Handler is not allowed."); $smarty->display("error.tpl"); die; } $handler = new $handler($_FILES['file']['tmp_name'], $encoding, 'UTF-8'); } if (!$grid->import($handler)) { $smarty->assign('msg', "Impossible to import the file."); $smarty->display("error.tpl"); die; } $handler = new TikiSheetDatabaseHandler($sheetId); $grid->export($handler); ob_start(); $handler = new TikiSheetOutputHandler(); $grid->export($handler); $smarty->assign("grid_content", ob_get_contents()); ob_end_clean(); } else { $list = array(); $encoding = new Encoding(); $charsetList = $encoding->get_input_supported_encodings(); $handlers = TikiSheet::getHandlerList(); foreach ($handlers as $key => $handler) { $temp = new $handler(); if (!$temp->supports(TIKISHEET_LOAD_DATA | TIKISHEET_LOAD_CALC)) { continue; }
function save_sheet($sheets, $sheetId, $type = 'db') { global $user, $sheetlib; $sheets = json_decode($sheets); $rc = ''; if (!empty($sheetId)) { $grid = new TikiSheet(); if (is_array($sheets)) { foreach ($sheets as $sheet) { $handler = new TikiSheetHTMLTableHandler($sheet); $res = $grid->import($handler); // Save the changes $rc .= strlen($rc) === 0 ? '' : ', '; if ($sheet->metadata->sheetId != $sheetId) { $sheetIds[] = $sheet->metadata->sheetId; } if ($res) { if (!$sheet->metadata->sheetId) { if (!empty($sheet->metadata->title)) { $title = $sheet->metadata->title; } else { $title = $info['title'] . ' subsheet'; } $newId = $sheetlib->replace_sheet(0, $title, '', $user, $sheetId); $rc .= tra('new') . " (sheetId={$newId}) "; $sheet->metadata->sheetId = $newId; $handler = new TikiSheetHTMLTableHandler($sheet); $res = $grid->import($handler); } if ($sheetId && $res) { $handler = new TikiSheetDatabaseHandler($sheet->metadata->sheetId); $grid->export($handler); $rc .= $grid->getColumnCount() . ' x ' . $grid->getRowCount() . ' ' . tra('sheet') . " (sheetId=" . $sheet->metadata->sheetId . ")"; } if (!empty($sheet->metadata->title)) { $sheetlib->set_sheet_title($sheet->metadata->sheetId, $sheet->metadata->title); } } } } } return $res ? tra('Saved') . ': ' . $rc : tra('Save failed'); }
function wikiplugin_sheet($data, $params) { global $dbTiki, $tiki_p_edit_sheet, $tiki_p_edit, $tiki_p_admin_sheet, $tiki_p_admin, $prefs, $user, $sheetlib, $page, $tikilib; extract($params, EXTR_SKIP); if (!class_exists('TikiSheet')) { require "lib/sheet/grid.php"; } static $index = 0; ++$index; if (!isset($id)) { if ($tiki_p_edit_sheet != 'y' || $tiki_p_edit != 'y') { return "<b>missing id parameter for plugin</b><br />"; } else { if (isset($_POST['create_sheet'], $_POST['index']) && $index == $_POST['index']) { // Create a new sheet and rewrite page $sheetId = $sheetlib->replace_sheet(null, tra('New sheet in page: ') . $page, '', $user); $page = htmlentities($page); $content = htmlentities($data); $formId = "form{$index}"; return <<<EOF ~np~ <form id="{$formId}" method="post" action="tiki-wikiplugin_edit.php"> <div> \t<input type="hidden" name="page" value="{$page}"/> \t<input type="hidden" name="content" value="{$data}"/> \t<input type="hidden" name="index" value="{$index}"/> \t<input type="hidden" name="type" value="sheet"/> \t<input type="hidden" name="params[id]" value="{$sheetId}"/> </div> </form> <script type="text/javascript"> document.getElementById('{$formId}').submit(); </script> ~/np~ EOF; } else { $intro = tra('Incomplete call to plugin: No target sheet.'); $label = tra('Create new sheet'); return <<<EOF ~np~ <form method="post" action=""> \t<p>{$intro}</p> \t<p> \t\t<input type="submit" name="create_sheet" value="{$label}"/> \t\t<input type="hidden" name="index" value="{$index}"/> \t</p> </form> ~/np~ EOF; } } } // Build required objects $sheet = new TikiSheet(); $db = new TikiSheetDatabaseHandler($id); $out = new TikiSheetOutputHandler($data); // Fetch sheet from database $sheet->import($db); // Grab sheet output ob_start(); $sheet->export($out); $ret = ob_get_contents(); ob_end_clean(); if ($tiki_p_edit_sheet == 'y' || $tiki_p_admin_sheet == 'y' || $tiki_p_admin == 'y') { $ret .= "<a href='tiki-view_sheets.php?sheetId={$id}&readdate=" . time() . "&mode=edit' class='linkbut'>" . tra("Edit Sheet") . "</a>"; } return $ret; }