10 ini_set(
"max_execution_time",
"36000");
14 include_once (
'FDL/Class.Doc.php');
15 include_once (
'FDL/Class.DocFam.php');
16 include_once (
'FDL/Class.DocVaultIndex.php');
17 include_once (
'VAULT/Class.VaultFile.php');
23 $action->exitError(
"Database not found : param FREEDOM_DB");
27 $action->exitError(sprintf(
"Could not get DbObj with dbaccess='%s'",
$dbaccess));
34 $usage->setText(
"Re-initialize docvaultindex table");
36 $parms[
'dryrun'] =
$usage->addOption(
"dryrun",
"Only output SQL queries that would be executed", array(
40 if (
$parms[
'dryrun'] ==
'yes') {
46 $parms[
'famid'] =
$usage->addOption(
"famid",
"Process all families (keyword 'all') or only a specific family (family name or family id)", null,
"all");
47 if (
$parms[
'famid'] !=
'all') {
48 if (!is_numeric(
$parms[
'famid'])) {
51 $action->exitError(sprintf(
"Could not find family '%s'",
$parms[
'famid']));
56 if (!is_object($fam) || !$fam->isAlive()) {
57 $action->exitError(sprintf(
"Family with id '%s' is not alive or not a valid family.",
$parms[
'famid']));
61 $parms[
'transaction'] =
$usage->addOption(
"transaction",
"Execute whole operation in a single transaction", array(
65 if (
$parms[
'transaction'] ==
'yes') {
66 $parms[
'transaction'] =
true;
68 $parms[
'transaction'] =
false;
71 $parms[
'realclean'] =
$usage->addOption(
"realclean",
"Delete everything in docvaultindex at the beginning of the operation", array(
75 if (
$parms[
'realclean'] ==
'yes' &&
$parms[
'famid'] ==
'all') {
76 $parms[
'realclean'] =
true;
78 $parms[
'realclean'] =
false;
86 $q->AddQuery(
"icon ~ E'^[^\\\\|]*\\\\|\\\\d+(\\\\|[^\\\\|]*)?$'");
87 if (is_numeric(
$parms[
'famid'])) {
88 $q->AddQuery(sprintf(
"id = %s", pg_escape_string(
$parms[
'famid'])));
95 $q->order_by =
'docid, id';
96 $q->AddQuery(
"type = 'file' OR type = 'image'");
97 $q->AddQuery(
"usefor != 'Q'");
98 $q->AddQuery(
"id !~ '^:'");
99 if (is_numeric(
$parms[
'famid'])) {
100 $q->AddQuery(sprintf(
"docid = %s", pg_escape_string(
$parms[
'famid'])));
107 $q->order_by =
'docid, id';
108 $q->AddQuery(
"(type = 'file' OR type = 'image')");
109 $q->AddQuery(
"usefor = 'Q'");
110 $q->AddQuery(
"id !~ '^:'");
111 if (is_numeric(
$parms[
'famid'])) {
112 $q->AddQuery(sprintf(
"docid = %s", pg_Escape_string(
$parms[
'famid'])));
118 if (
$parms[
'transaction']) {
128 if (!
$parms[
'transaction']) {
139 $attrid = $attr[
'id'];
142 print sprintf(
"-- Deleting attributes vault indexes for family '%s'...\n", $docid);
143 $sql = sprintf(
"DELETE FROM docvaultindex WHERE EXISTS (SELECT id FROM doc%s WHERE id = docid)", pg_escape_string($docid));
148 print sprintf(
"-- Indexing family '%s', attribute '%s'...\n", $docid, $attrid);
149 $sql = sprintf(
"SELECT vaultreindex(id, %s) FROM doc%s WHERE %s IS NOT NULL", pg_escape_string($attrid) , pg_escape_string($docid) , pg_escape_string($attrid));
161 print sprintf(
"-- Deleting icons and parameters vault indexes for family '%s'...\n", $docid);
162 $sql = sprintf(
"DELETE FROM docvaultindex WHERE docid = %s", $docid);
167 print sprintf(
"-- Indexing family '%s', parameter '%s'...\n", $docid, $paramid);
168 $sql = sprintf(
"SELECT vaultreindexparam(id, param, '%s') FROM docfam WHERE id = %s", pg_escape_string($paramid) , pg_escape_string($docid) , pg_escape_string($paramid));
177 print sprintf(
"-- Indexing icon for family '%s'...\n",
$famid);
178 $sql = sprintf(
"SELECT vaultreindex(id, icon) FROM docfam WHERE id = %s",
$famid);
184 if (
$parms[
'transaction']) {
191 if (!preg_match(
'/;\s*$/',
$sql)) {
194 str_replace(
$sql,
'\\',
'\\\\');
200 error_log(sprintf(
"Error executing query [%s]: %s",
$sql,
$err));