CC-1658 Remove file tree structure from code and database. Removed tables ls_class and ls_cmemb and continued removing code that was depending on the tree structure.
This commit is contained in:
parent
37ba68e830
commit
aa9528b9fd
|
@ -9,6 +9,19 @@ ALTER TABLE ls_files
|
|||
ALTER COLUMN id
|
||||
SET DEFAULT NEXTVAL('file_id_seq');
|
||||
|
||||
DROP TABLE ls_struct;
|
||||
DROP TABLE ls_tree;
|
||||
DROP TABLE ls_struct CASCADE;
|
||||
DROP TABLE ls_tree CASCADE;
|
||||
DROP TABLE ls_classes CASCADE;
|
||||
DROP TABLE ls_cmemb CASCADE;
|
||||
|
||||
DROP SEQUENCE ls_struct_id_seq_seq;
|
||||
DROP SEQUENCE ls_tree_id_seq_seq;
|
||||
|
||||
DROP TABLE as_tree CASCADE;
|
||||
DROP TABLE as_struct CASCADE;
|
||||
DROP TABLE as_classes CASCADE;
|
||||
DROP TABLE as_cmemb CASCADE;
|
||||
|
||||
DROP SEQUENCE as_struct_id_seq_seq;
|
||||
DROP SEQUENCE as_tree_id_seq_seq;
|
||||
|
||||
|
|
|
@ -214,84 +214,84 @@ class Alib {
|
|||
public static function CheckPerm($sid, $action, $oid=NULL)
|
||||
{
|
||||
return TRUE;
|
||||
global $CC_DBC;
|
||||
global $CC_CONFIG;
|
||||
if (!is_numeric($sid)) {
|
||||
return FALSE;
|
||||
}
|
||||
// if (is_null($oid) or $oid=='') {
|
||||
// $oid = M2tree::GetRootNode();
|
||||
// global $CC_DBC;
|
||||
// global $CC_CONFIG;
|
||||
// if (!is_numeric($sid)) {
|
||||
// return FALSE;
|
||||
// }
|
||||
// if (PEAR::isError($oid)) {
|
||||
// return $oid;
|
||||
//// if (is_null($oid) or $oid=='') {
|
||||
//// $oid = M2tree::GetRootNode();
|
||||
//// }
|
||||
//// if (PEAR::isError($oid)) {
|
||||
//// return $oid;
|
||||
//// }
|
||||
// if (!is_numeric($oid)) {
|
||||
// return FALSE;
|
||||
// }
|
||||
if (!is_numeric($oid)) {
|
||||
return FALSE;
|
||||
}
|
||||
// query construction
|
||||
// shortcuts:
|
||||
// p: permTable,
|
||||
// s: subjTable, m smembTable,
|
||||
// t: treeTable ts: structTable,
|
||||
// c: classTable, cm: cmembTable
|
||||
// main query elements:
|
||||
$q_flds = "m.level , p.subj, s.login, action, p.type, p.obj";
|
||||
$q_from = $CC_CONFIG['permTable']." p ";
|
||||
// joins for solving users/groups:
|
||||
$q_join = "LEFT JOIN ".$CC_CONFIG['subjTable']." s ON s.id=p.subj ";
|
||||
$q_join .= "LEFT JOIN ".$CC_CONFIG['smembTable']." m ON m.gid=p.subj ";
|
||||
$q_cond = "p.action in('_all', '$action') AND
|
||||
(s.id=$sid OR m.uid=$sid) ";
|
||||
// coalesce -1 for higher priority of nongroup rows:
|
||||
// action DESC order for lower priority of '_all':
|
||||
$q_ordb = "ORDER BY coalesce(m.level,-1), action DESC, p.type DESC";
|
||||
$q_flds0 = $q_flds;
|
||||
$q_from0 = $q_from;
|
||||
$q_join0 = $q_join;
|
||||
$q_cond0 = $q_cond;
|
||||
$q_ordb0 = $q_ordb;
|
||||
// joins for solving object tree:
|
||||
$q_flds .= ", t.name, ts.level as tlevel";
|
||||
//$q_join .= "LEFT JOIN ".$CC_CONFIG['treeTable']." t ON t.id=p.obj ";
|
||||
//$q_join .= "LEFT JOIN ".$CC_CONFIG['structTable']." ts ON ts.parid=p.obj ";
|
||||
//$q_cond .= " AND (t.id=$oid OR ts.objid=$oid)";
|
||||
// action DESC order is hack for lower priority of '_all':
|
||||
$q_ordb = "ORDER BY coalesce(ts.level,0), m.level, action DESC, p.type DESC";
|
||||
// query by tree:
|
||||
$query1 = "SELECT $q_flds FROM $q_from $q_join WHERE $q_cond $q_ordb";
|
||||
$r1 = $CC_DBC->getAll($query1);
|
||||
if (PEAR::isError($r1)) {
|
||||
return($r1);
|
||||
}
|
||||
// if there is row with type='A' on the top => permit
|
||||
//$AllowedByTree =
|
||||
// (is_array($r1) && count($r1)>0 && $r1[0]['type']=='A');
|
||||
//$DeniedByTree =
|
||||
// (is_array($r1) && count($r1)>0 && $r1[0]['type']=='D');
|
||||
|
||||
if (!USE_ALIB_CLASSES) {
|
||||
return $AllowedbyTree;
|
||||
}
|
||||
|
||||
// joins for solving object classes:
|
||||
$q_flds = $q_flds0.", c.cname ";
|
||||
$q_join = $q_join0."LEFT JOIN ".$CC_CONFIG['classTable']." c ON c.id=p.obj ";
|
||||
$q_join .= "LEFT JOIN ".$CC_CONFIG['cmembTable']." cm ON cm.cid=p.obj ";
|
||||
$q_cond = $q_cond0." AND (c.id=$oid OR cm.objid=$oid)";
|
||||
$q_ordb = $q_ordb0;
|
||||
// query by class:
|
||||
$query2 = "SELECT $q_flds FROM $q_from $q_join WHERE $q_cond $q_ordb";
|
||||
$r2 = $CC_DBC->getAll($query2);
|
||||
if (PEAR::isError($r2)) {
|
||||
return $r2;
|
||||
}
|
||||
$AllowedByClass =
|
||||
(is_array($r2) && count($r2)>0 && $r2[0]['type']=='A');
|
||||
// not used now:
|
||||
// $DeniedByClass =
|
||||
// (is_array($r2) && count($r2)>0 && $r2[0]['type']=='D');
|
||||
$res = ($AllowedByTree || (!$DeniedByTree && $AllowedByClass));
|
||||
return $res;
|
||||
// // query construction
|
||||
// // shortcuts:
|
||||
// // p: permTable,
|
||||
// // s: subjTable, m smembTable,
|
||||
// // t: treeTable ts: structTable,
|
||||
// // c: classTable, cm: cmembTable
|
||||
// // main query elements:
|
||||
// $q_flds = "m.level , p.subj, s.login, action, p.type, p.obj";
|
||||
// $q_from = $CC_CONFIG['permTable']." p ";
|
||||
// // joins for solving users/groups:
|
||||
// $q_join = "LEFT JOIN ".$CC_CONFIG['subjTable']." s ON s.id=p.subj ";
|
||||
// $q_join .= "LEFT JOIN ".$CC_CONFIG['smembTable']." m ON m.gid=p.subj ";
|
||||
// $q_cond = "p.action in('_all', '$action') AND
|
||||
// (s.id=$sid OR m.uid=$sid) ";
|
||||
// // coalesce -1 for higher priority of nongroup rows:
|
||||
// // action DESC order for lower priority of '_all':
|
||||
// $q_ordb = "ORDER BY coalesce(m.level,-1), action DESC, p.type DESC";
|
||||
// $q_flds0 = $q_flds;
|
||||
// $q_from0 = $q_from;
|
||||
// $q_join0 = $q_join;
|
||||
// $q_cond0 = $q_cond;
|
||||
// $q_ordb0 = $q_ordb;
|
||||
// // joins for solving object tree:
|
||||
// $q_flds .= ", t.name, ts.level as tlevel";
|
||||
// //$q_join .= "LEFT JOIN ".$CC_CONFIG['treeTable']." t ON t.id=p.obj ";
|
||||
// //$q_join .= "LEFT JOIN ".$CC_CONFIG['structTable']." ts ON ts.parid=p.obj ";
|
||||
// //$q_cond .= " AND (t.id=$oid OR ts.objid=$oid)";
|
||||
// // action DESC order is hack for lower priority of '_all':
|
||||
// $q_ordb = "ORDER BY coalesce(ts.level,0), m.level, action DESC, p.type DESC";
|
||||
// // query by tree:
|
||||
// $query1 = "SELECT $q_flds FROM $q_from $q_join WHERE $q_cond $q_ordb";
|
||||
// $r1 = $CC_DBC->getAll($query1);
|
||||
// if (PEAR::isError($r1)) {
|
||||
// return($r1);
|
||||
// }
|
||||
// // if there is row with type='A' on the top => permit
|
||||
// //$AllowedByTree =
|
||||
// // (is_array($r1) && count($r1)>0 && $r1[0]['type']=='A');
|
||||
// //$DeniedByTree =
|
||||
// // (is_array($r1) && count($r1)>0 && $r1[0]['type']=='D');
|
||||
//
|
||||
// if (!USE_ALIB_CLASSES) {
|
||||
// return $AllowedbyTree;
|
||||
// }
|
||||
//
|
||||
// // joins for solving object classes:
|
||||
// $q_flds = $q_flds0.", c.cname ";
|
||||
// $q_join = $q_join0."LEFT JOIN ".$CC_CONFIG['classTable']." c ON c.id=p.obj ";
|
||||
// $q_join .= "LEFT JOIN ".$CC_CONFIG['cmembTable']." cm ON cm.cid=p.obj ";
|
||||
// $q_cond = $q_cond0." AND (c.id=$oid OR cm.objid=$oid)";
|
||||
// $q_ordb = $q_ordb0;
|
||||
// // query by class:
|
||||
// $query2 = "SELECT $q_flds FROM $q_from $q_join WHERE $q_cond $q_ordb";
|
||||
// $r2 = $CC_DBC->getAll($query2);
|
||||
// if (PEAR::isError($r2)) {
|
||||
// return $r2;
|
||||
// }
|
||||
// $AllowedByClass =
|
||||
// (is_array($r2) && count($r2)>0 && $r2[0]['type']=='A');
|
||||
// // not used now:
|
||||
// // $DeniedByClass =
|
||||
// // (is_array($r2) && count($r2)>0 && $r2[0]['type']=='D');
|
||||
// $res = ($AllowedByTree || (!$DeniedByTree && $AllowedByClass));
|
||||
// return $res;
|
||||
} // fn CheckPerm
|
||||
|
||||
|
||||
|
@ -306,10 +306,7 @@ class Alib {
|
|||
public static function RemoveObj($id)
|
||||
{
|
||||
$r = Alib::RemovePerm(NULL, NULL, $id);
|
||||
if (PEAR::isError($r)) {
|
||||
return $r;
|
||||
}
|
||||
return ObjClasses::RemoveObj($id);
|
||||
return $r;
|
||||
} // fn removeObj
|
||||
|
||||
/* --------------------------------------------------------- users/groups */
|
||||
|
@ -411,21 +408,14 @@ class Alib {
|
|||
public static function GetSubjPerms($sid)
|
||||
{
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
$sql = "SELECT t.name, t.type as otype , p.*"
|
||||
." FROM ".$CC_CONFIG['permTable']." p, ".$CC_CONFIG['treeTable']." t"
|
||||
." WHERE t.id=p.obj AND p.subj=$sid";
|
||||
$sql = "SELECT *"
|
||||
." FROM ".$CC_CONFIG['permTable']
|
||||
." WHERE p.subj=$sid";
|
||||
// $sql = "SELECT t.name, t.type as otype , p.*"
|
||||
// ." FROM ".$CC_CONFIG['permTable']." p, ".$CC_CONFIG['treeTable']." t"
|
||||
// ." WHERE t.id=p.obj AND p.subj=$sid";
|
||||
$a1 = $CC_DBC->getAll($sql);
|
||||
if (PEAR::isError($a1)) {
|
||||
return $a1;
|
||||
}
|
||||
$sql2 = "SELECT c.cname as name, 'C'as otype, p.*"
|
||||
." FROM ".$CC_CONFIG['permTable']." p, ".$CC_CONFIG['classTable']." c"
|
||||
." WHERE c.id=p.obj AND p.subj=$sid";
|
||||
$a2 = $CC_DBC->getAll($sql2);
|
||||
if (PEAR::isError($a2)) {
|
||||
return $a2;
|
||||
}
|
||||
return array_merge($a1, $a2);
|
||||
return $a1;
|
||||
} // fn GetSubjPerms
|
||||
|
||||
|
||||
|
|
|
@ -1,302 +0,0 @@
|
|||
<?php
|
||||
//require_once("M2tree.php");
|
||||
|
||||
/**
|
||||
* ObjClass class
|
||||
*
|
||||
* A class for 'object classes' handling - i.e. groups of object in tree
|
||||
*
|
||||
* @package Campcaster
|
||||
* @subpackage Alib
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
*/
|
||||
class ObjClasses {
|
||||
|
||||
/* ======================================================= public methods */
|
||||
|
||||
/**
|
||||
* Add new class of objects
|
||||
*
|
||||
* @param string $cname
|
||||
* @return id|PEAR_Error
|
||||
*/
|
||||
public static function AddClass($cname)
|
||||
{
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
$id = $CC_DBC->nextId($CC_CONFIG['treeTable']."_id_seq");
|
||||
if (PEAR::isError($id)) {
|
||||
return $id;
|
||||
}
|
||||
$r = $CC_DBC->query("
|
||||
INSERT INTO ".$CC_CONFIG['classTable']." (id, cname)
|
||||
VALUES ($id, '$cname')
|
||||
");
|
||||
if (PEAR::isError($r)) {
|
||||
return $r;
|
||||
}
|
||||
return $id;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove class by name
|
||||
*
|
||||
* @param string $cname
|
||||
* @return boolean|PEAR_Error
|
||||
*/
|
||||
// public static function RemoveClass($cname)
|
||||
// {
|
||||
// $cid = ObjClasses::GetClassId($cname);
|
||||
// if (PEAR::isError($cid)) {
|
||||
// return($cid);
|
||||
// }
|
||||
// return ObjClasses::RemoveClassById($cid);
|
||||
// }
|
||||
|
||||
|
||||
/**
|
||||
* Remove class by id
|
||||
*
|
||||
* @param int $cid
|
||||
* @return boolean|PEAR_Error
|
||||
*/
|
||||
public static function RemoveClassById($cid)
|
||||
{
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
$sql = "DELETE FROM ".$CC_CONFIG['cmembTable']
|
||||
." WHERE cid=$cid";
|
||||
$r = $CC_DBC->query($sql);
|
||||
if (PEAR::isError($r)) {
|
||||
return $r;
|
||||
}
|
||||
$sql = "DELETE FROM ".$CC_CONFIG['classTable']
|
||||
." WHERE id=$cid";
|
||||
$r = $CC_DBC->query($sql);
|
||||
if (PEAR::isError($r)) {
|
||||
return $r;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add object to class
|
||||
*
|
||||
* @param int $cid
|
||||
* @param int $oid
|
||||
* @return TRUE|PEAR_Error
|
||||
*/
|
||||
public static function AddObjectToClass($cid, $oid)
|
||||
{
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
$sql = "INSERT INTO ".$CC_CONFIG['cmembTable']." (cid, objid)"
|
||||
." VALUES ($cid, $oid)";
|
||||
$r = $CC_DBC->query($sql);
|
||||
if (PEAR::isError($r)) {
|
||||
return $r;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove object from class
|
||||
*
|
||||
* @param int $oid
|
||||
* @param int $cid, default: remove obj from all classes
|
||||
* @return TRUE|PEAR_Error
|
||||
*/
|
||||
public static function RemoveObjectFromClass($oid, $cid=NULL)
|
||||
{
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
$sql = "DELETE FROM ".$CC_CONFIG['cmembTable']
|
||||
." WHERE objid=$oid".(is_null($cid)? '':" AND cid=$cid");
|
||||
$r = $CC_DBC->query($sql);
|
||||
if (PEAR::isError($r)) {
|
||||
return $r;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------------------------- object tree */
|
||||
|
||||
/**
|
||||
* Remove object from all classes and remove object itself
|
||||
*
|
||||
* @param int $id
|
||||
* @return boolean|PEAR_Error
|
||||
*/
|
||||
public static function RemoveObj($id)
|
||||
{
|
||||
return ObjClasses::RemoveObjectFromClass($id);
|
||||
}
|
||||
|
||||
|
||||
/* --------------------------------------------------------- info methods */
|
||||
|
||||
/**
|
||||
* Get class id from name
|
||||
*
|
||||
* @param string $cname
|
||||
* @return int|PEAR_Error
|
||||
*/
|
||||
public static function GetClassId($cname)
|
||||
{
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
$cname = pg_escape_string($cname);
|
||||
$sql = "SELECT id FROM ".$CC_CONFIG['classTable']
|
||||
." WHERE cname='$cname'";
|
||||
return $CC_DBC->getOne($sql);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get class name from id
|
||||
*
|
||||
* @param int $id
|
||||
* @return string|PEAR_Error
|
||||
*/
|
||||
public static function GetClassName($id)
|
||||
{
|
||||
global $CC_DBC, $CC_CONFIG;
|
||||
$sql = "SELECT cname FROM ".$CC_CONFIG['classTable']." WHERE id=$id";
|
||||
return $CC_DBC->getOne($sql);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return true is object is class
|
||||
*
|
||||
* @param int $id
|
||||
* @return boolean|PEAR_Error
|
||||
*/
|
||||
public static function IsClass($id)
|
||||
{
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
$sql = "SELECT count(*) FROM ".$CC_CONFIG['classTable']
|
||||
." WHERE id=$id";
|
||||
$r = $CC_DBC->getOne($sql);
|
||||
if (PEAR::isError($r)) {
|
||||
return $r;
|
||||
}
|
||||
return ($r > 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return all classes
|
||||
*
|
||||
* @return array|PEAR_Error
|
||||
*/
|
||||
public static function GetClasses()
|
||||
{
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
return $CC_DBC->getAll("SELECT * FROM ".$CC_CONFIG['classTable']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return all objects in class
|
||||
*
|
||||
* @param int $id
|
||||
* @return array|PEAR_Error
|
||||
*/
|
||||
public static function ListClass($id)
|
||||
{
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
$sql = "SELECT t.* FROM ".$CC_CONFIG['cmembTable']." cm, ".$CC_CONFIG['treeTable']." t"
|
||||
." WHERE cm.cid=$id AND cm.objid=t.id";
|
||||
return $CC_DBC->getAll($sql);
|
||||
}
|
||||
|
||||
|
||||
/* =============================================== test and debug methods */
|
||||
|
||||
/**
|
||||
* Dump all classes for debug
|
||||
*
|
||||
* @param string $indstr
|
||||
* indentation string
|
||||
* @param string $ind
|
||||
* actual indentation
|
||||
* @return string
|
||||
*/
|
||||
public static function DumpClasses($indstr=' ', $ind='')
|
||||
{
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
$sql = "SELECT cname, count(cm.objid)as cnt FROM ".$CC_CONFIG['classTable']." c"
|
||||
." LEFT JOIN ".$CC_CONFIG['cmembTable']." cm ON c.id=cm.cid"
|
||||
." GROUP BY cname, c.id ORDER BY c.id";
|
||||
$r = $ind.join(', ', array_map(
|
||||
create_function('$v', 'return "{$v[\'cname\']} ({$v[\'cnt\']})";'),
|
||||
$CC_DBC->getAll($sql)
|
||||
))."\n";
|
||||
return $r;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Delete all classes and membership records.
|
||||
* @return void
|
||||
*/
|
||||
public static function DeleteData()
|
||||
{
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
$CC_DBC->query("DELETE FROM ".$CC_CONFIG['cmembTable']);
|
||||
$CC_DBC->query("DELETE FROM ".$CC_CONFIG['classTable']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Insert test data
|
||||
*
|
||||
*/
|
||||
public static function TestData()
|
||||
{
|
||||
// $tdata = M2tree::testData();
|
||||
// $o['cl_sa'] = ObjClasses::AddClass('Sections a');
|
||||
// $o['cl2'] = ObjClasses::AddClass('Class 2');
|
||||
// ObjClasses::AddObjectToClass($o['cl_sa'], $tdata['tree']['s1a']);
|
||||
// ObjClasses::AddObjectToClass($o['cl_sa'], $tdata['tree']['s2a']);
|
||||
// ObjClasses::AddObjectToClass($o['cl2'], $tdata['tree']['t1']);
|
||||
// ObjClasses::AddObjectToClass($o['cl2'], $tdata['tree']['pb']);
|
||||
// $tdata['classes'] = $o;
|
||||
// return $tdata;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Make basic test
|
||||
*
|
||||
*/
|
||||
public static function Test()
|
||||
{
|
||||
// $p = M2tree::test();
|
||||
// if (PEAR::isError($p)) {
|
||||
// return $p;
|
||||
// }
|
||||
// ObjClasses::DeleteData();
|
||||
// ObjClasses::TestData();
|
||||
// $test_correct = "Sections a (2), Class 2 (2)\n";
|
||||
// $test_dump = ObjClasses::DumpClasses();
|
||||
// //$this->removeClass('Sections a');
|
||||
// ObjClasses::RemoveObjectFromClass($tdata['tree']['pb'],
|
||||
// $tdata['classes']['cl2']);
|
||||
// $test_correct .= "Class 2 (1)\n";
|
||||
// $test_dump .= ObjClasses::DumpClasses();
|
||||
// ObjClasses::DeleteData();
|
||||
// if ($test_dump == $test_correct) {
|
||||
// $test_log .= "class: OK\n";
|
||||
// return TRUE;
|
||||
// } else {
|
||||
// return PEAR::raiseError(
|
||||
// 'ObjClasses::test:', 1, PEAR_ERROR_DIE, '%s'.
|
||||
// "<pre>\ncorrect:\n{$test_correct}\n".
|
||||
// "dump:\n{$test_dump}\n</pre>\n");
|
||||
// }
|
||||
}
|
||||
|
||||
} // class ObjClasses
|
||||
?>
|
|
@ -1,5 +1,5 @@
|
|||
<?php
|
||||
require_once("ObjClasses.php");
|
||||
//require_once("ObjClasses.php");
|
||||
define('ALIBERR_NOTGR', 20);
|
||||
define('ALIBERR_BADSMEMB', 21);
|
||||
|
||||
|
@ -612,7 +612,7 @@ class Subjects {
|
|||
global $CC_CONFIG, $CC_DBC;
|
||||
$CC_DBC->query("DELETE FROM ".$CC_CONFIG['subjTable']);
|
||||
$CC_DBC->query("DELETE FROM ".$CC_CONFIG['smembTable']);
|
||||
ObjClasses::DeleteData();
|
||||
//ObjClasses::DeleteData();
|
||||
} // fn deleteData
|
||||
|
||||
|
||||
|
@ -623,26 +623,26 @@ class Subjects {
|
|||
*/
|
||||
public function TestData()
|
||||
{
|
||||
$tdata = ObjClasses::TestData();
|
||||
$o['root'] = Subjects::AddSubj('root', 'q');
|
||||
$o['test1'] = Subjects::AddSubj('test1', 'a');
|
||||
$o['test2'] = Subjects::AddSubj('test2', 'a');
|
||||
$o['test3'] = Subjects::AddSubj('test3', 'a');
|
||||
$o['test4'] = Subjects::AddSubj('test4', 'a');
|
||||
$o['test5'] = Subjects::AddSubj('test5', 'a');
|
||||
$o['gr1'] = Subjects::AddSubj('gr1');
|
||||
$o['gr2'] = Subjects::AddSubj('gr2');
|
||||
$o['gr3'] = Subjects::AddSubj('gr3');
|
||||
$o['gr4'] = Subjects::AddSubj('gr4');
|
||||
Subjects::AddSubjectToGroup('test1', 'gr1');
|
||||
Subjects::AddSubjectToGroup('test2', 'gr2');
|
||||
Subjects::AddSubjectToGroup('test3', 'gr3');
|
||||
Subjects::AddSubjectToGroup('test4', 'gr4');
|
||||
Subjects::AddSubjectToGroup('test5', 'gr1');
|
||||
Subjects::AddSubjectToGroup('gr4', 'gr3');
|
||||
Subjects::AddSubjectToGroup('gr3', 'gr2');
|
||||
$tdata['subjects'] = $o;
|
||||
return $tdata;
|
||||
// $tdata = ObjClasses::TestData();
|
||||
// $o['root'] = Subjects::AddSubj('root', 'q');
|
||||
// $o['test1'] = Subjects::AddSubj('test1', 'a');
|
||||
// $o['test2'] = Subjects::AddSubj('test2', 'a');
|
||||
// $o['test3'] = Subjects::AddSubj('test3', 'a');
|
||||
// $o['test4'] = Subjects::AddSubj('test4', 'a');
|
||||
// $o['test5'] = Subjects::AddSubj('test5', 'a');
|
||||
// $o['gr1'] = Subjects::AddSubj('gr1');
|
||||
// $o['gr2'] = Subjects::AddSubj('gr2');
|
||||
// $o['gr3'] = Subjects::AddSubj('gr3');
|
||||
// $o['gr4'] = Subjects::AddSubj('gr4');
|
||||
// Subjects::AddSubjectToGroup('test1', 'gr1');
|
||||
// Subjects::AddSubjectToGroup('test2', 'gr2');
|
||||
// Subjects::AddSubjectToGroup('test3', 'gr3');
|
||||
// Subjects::AddSubjectToGroup('test4', 'gr4');
|
||||
// Subjects::AddSubjectToGroup('test5', 'gr1');
|
||||
// Subjects::AddSubjectToGroup('gr4', 'gr3');
|
||||
// Subjects::AddSubjectToGroup('gr3', 'gr2');
|
||||
// $tdata['subjects'] = $o;
|
||||
// return $tdata;
|
||||
} // fn TestData
|
||||
|
||||
|
||||
|
@ -652,32 +652,32 @@ class Subjects {
|
|||
*/
|
||||
public static function Test()
|
||||
{
|
||||
$p = ObjClasses::Test();
|
||||
if (PEAR::isError($p)) {
|
||||
return $p;
|
||||
}
|
||||
Subjects::DeleteData();
|
||||
Subjects::TestData();
|
||||
$test_correct = "root(0), test1(0), test2(0), test3(0),".
|
||||
" test4(0), test5(0), gr1(2), gr2(2), gr3(2), gr4(1)\n";
|
||||
$test_dump = Subjects::DumpSubjects();
|
||||
Subjects::RemoveSubj('test1');
|
||||
Subjects::RemoveSubj('test3');
|
||||
Subjects::RemoveSubjectFromGroup('test5', 'gr1');
|
||||
Subjects::RemoveSubjectFromGroup('gr3', 'gr2');
|
||||
$test_correct .= "root(0), test2(0), test4(0), test5(0),".
|
||||
" gr1(0), gr2(1), gr3(1), gr4(1)\n";
|
||||
$test_dump .= Subjects::DumpSubjects();
|
||||
Subjects::DeleteData();
|
||||
if ($test_dump == $test_correct) {
|
||||
$test_log .= "subj: OK\n";
|
||||
return TRUE;
|
||||
} else {
|
||||
return PEAR::raiseError(
|
||||
'Subjects::test:', 1, PEAR_ERROR_DIE, '%s'.
|
||||
"<pre>\ncorrect:\n{$test_correct}\n".
|
||||
"dump:\n{$test_dump}\n</pre>\n");
|
||||
}
|
||||
// $p = ObjClasses::Test();
|
||||
// if (PEAR::isError($p)) {
|
||||
// return $p;
|
||||
// }
|
||||
// Subjects::DeleteData();
|
||||
// Subjects::TestData();
|
||||
// $test_correct = "root(0), test1(0), test2(0), test3(0),".
|
||||
// " test4(0), test5(0), gr1(2), gr2(2), gr3(2), gr4(1)\n";
|
||||
// $test_dump = Subjects::DumpSubjects();
|
||||
// Subjects::RemoveSubj('test1');
|
||||
// Subjects::RemoveSubj('test3');
|
||||
// Subjects::RemoveSubjectFromGroup('test5', 'gr1');
|
||||
// Subjects::RemoveSubjectFromGroup('gr3', 'gr2');
|
||||
// $test_correct .= "root(0), test2(0), test4(0), test5(0),".
|
||||
// " gr1(0), gr2(1), gr3(1), gr4(1)\n";
|
||||
// $test_dump .= Subjects::DumpSubjects();
|
||||
// Subjects::DeleteData();
|
||||
// if ($test_dump == $test_correct) {
|
||||
// $test_log .= "subj: OK\n";
|
||||
// return TRUE;
|
||||
// } else {
|
||||
// return PEAR::raiseError(
|
||||
// 'Subjects::test:', 1, PEAR_ERROR_DIE, '%s'.
|
||||
// "<pre>\ncorrect:\n{$test_correct}\n".
|
||||
// "dump:\n{$test_dump}\n</pre>\n");
|
||||
// }
|
||||
} // fn test
|
||||
|
||||
} // class Subjects
|
||||
|
|
|
@ -69,31 +69,28 @@ $CC_CONFIG = array(
|
|||
#'archiveUrlHost' => 'localhost',
|
||||
#'archiveUrlPort' => 80,
|
||||
|
||||
/* ==================================== aplication-specific configuration */
|
||||
/* ==================================== application-specific configuration */
|
||||
'objtypes' => array(
|
||||
'RootNode' => array('Folder'),
|
||||
'Storage' => array('Folder', 'File', 'Replica'),
|
||||
'Folder' => array('Folder', 'File', 'Replica'),
|
||||
'Storage' => array(/*'Folder',*/ 'File' /*, 'Replica'*/),
|
||||
// 'Folder' => array('Folder', 'File', 'Replica'),
|
||||
'File' => array(),
|
||||
'audioclip' => array(),
|
||||
'playlist' => array(),
|
||||
'Replica' => array(),
|
||||
// 'Replica' => array(),
|
||||
),
|
||||
'allowedActions'=> array(
|
||||
'RootNode' => array('classes', 'subjects'),
|
||||
'Folder' => array('editPrivs', 'write', 'read'),
|
||||
// 'Folder' => array('editPrivs', 'write', 'read'),
|
||||
'File' => array('editPrivs', 'write', 'read'),
|
||||
'audioclip' => array('editPrivs', 'write', 'read'),
|
||||
'playlist' => array('editPrivs', 'write', 'read'),
|
||||
'Replica' => array('editPrivs', 'write', 'read'),
|
||||
'_class' => array('editPrivs', 'write', 'read'),
|
||||
// 'Replica' => array('editPrivs', 'write', 'read'),
|
||||
// '_class' => array('editPrivs', 'write', 'read'),
|
||||
),
|
||||
'allActions' => array(
|
||||
'editPrivs', 'write', 'read', 'classes', 'subjects'
|
||||
'editPrivs', 'write', 'read', /*'classes',*/ 'subjects'
|
||||
),
|
||||
|
||||
/* ============================================== auxiliary configuration */
|
||||
'RootNode' => 'RootNode',
|
||||
'tmpRootPass' => 'q',
|
||||
);
|
||||
|
||||
|
@ -105,10 +102,6 @@ $CC_CONFIG['permTable'] = $CC_CONFIG['tblNamePrefix'].'perms';
|
|||
$CC_CONFIG['sessTable'] = $CC_CONFIG['tblNamePrefix'].'sess';
|
||||
$CC_CONFIG['subjTable'] = $CC_CONFIG['tblNamePrefix'].'subjs';
|
||||
$CC_CONFIG['smembTable'] = $CC_CONFIG['tblNamePrefix'].'smemb';
|
||||
$CC_CONFIG['classTable'] = $CC_CONFIG['tblNamePrefix'].'classes';
|
||||
$CC_CONFIG['cmembTable'] = $CC_CONFIG['tblNamePrefix'].'cmemb';
|
||||
$CC_CONFIG['treeTable'] = $CC_CONFIG['tblNamePrefix'].'tree';
|
||||
$CC_CONFIG['structTable'] = $CC_CONFIG['tblNamePrefix'].'struct';
|
||||
$CC_CONFIG['transTable'] = $CC_CONFIG['tblNamePrefix'].'trans';
|
||||
$CC_CONFIG['prefTable'] = $CC_CONFIG['tblNamePrefix'].'pref';
|
||||
|
||||
|
|
|
@ -1344,7 +1344,6 @@ class BasicStor {
|
|||
/* ---------------------------------------------------- redefined methods */
|
||||
/**
|
||||
* Get object type by id.
|
||||
* (RootNode, Folder, File, )
|
||||
*
|
||||
* @param int $oid
|
||||
* Local object id
|
||||
|
@ -1369,7 +1368,7 @@ class BasicStor {
|
|||
|
||||
|
||||
/**
|
||||
* Add new user with home folder
|
||||
* Add new user
|
||||
*
|
||||
* @param string $login
|
||||
* @param string $pass
|
||||
|
@ -1404,7 +1403,7 @@ class BasicStor {
|
|||
|
||||
|
||||
/**
|
||||
* Remove user by login and remove also his home folder
|
||||
* Remove user by login
|
||||
*
|
||||
* @param string $login
|
||||
* @return boolean|PEAR_Error
|
||||
|
@ -1699,8 +1698,8 @@ class BasicStor {
|
|||
$storedFile->delete();
|
||||
break;
|
||||
case "File":
|
||||
case "Folder":
|
||||
case "Replica":
|
||||
// case "Folder":
|
||||
// case "Replica":
|
||||
break;
|
||||
default:
|
||||
return PEAR::raiseError(
|
||||
|
|
|
@ -6,37 +6,37 @@ require_once('install/installInit.php');
|
|||
require_once ('StoredFile.php');
|
||||
|
||||
function printUsage() {
|
||||
|
||||
|
||||
global $CC_CONFIG;
|
||||
|
||||
|
||||
echo "Usage:\n";
|
||||
echo " ./CleanStor [OPTION] \n";
|
||||
echo "\n";
|
||||
echo "Options:\n";
|
||||
echo " -c, --clean Removes all broken links from the storage server\n";
|
||||
echo " and empties all missing file information from the database.\n";
|
||||
echo " and empties all missing file information from the database.\n";
|
||||
echo "\n";
|
||||
echo " -e, --empty Removes all files from the storage server \n";
|
||||
echo " and empties all relevant information from the database.\n\n";
|
||||
echo " and empties all relevant information from the database.\n\n";
|
||||
echo "Storage server: ". $CC_CONFIG["storageDir"] ."\n\n\n";
|
||||
}
|
||||
|
||||
function camp_clean_files($p_path) {
|
||||
if (!empty($p_path) && (strlen($p_path) > 4)) {
|
||||
list($dirList,$fileList) = File_Find::maptree($p_path);
|
||||
|
||||
|
||||
$array_mus;
|
||||
foreach ($fileList as $filepath) {
|
||||
|
||||
|
||||
if (@substr($filepath, strlen($filepath) - 3) != "xml") {
|
||||
$array_mus[] = $filepath;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
foreach ($array_mus as $audio_file) {
|
||||
|
||||
|
||||
if (@is_link($audio_file) && !@stat($audio_file)) {
|
||||
|
||||
|
||||
//filesystem clean up.
|
||||
@unlink($audio_file);
|
||||
echo "unlinked $audio_file\n";
|
||||
|
@ -44,31 +44,31 @@ function camp_clean_files($p_path) {
|
|||
echo "unlinked " . $audio_file . ".xml\n";
|
||||
@rmdir(@dirname($audio_file));
|
||||
echo "removed dir " . @dirname($audio_file) . "\n";
|
||||
|
||||
|
||||
//database clean up.
|
||||
$stored_audio_file = StoredFile::RecallByGunid(@basename($audio_file));
|
||||
$stored_audio_file->delete();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function camp_remove_files($p_path) {
|
||||
|
||||
|
||||
if (!empty($p_path) && (strlen($p_path) > 4)) {
|
||||
list($dirList,$fileList) = File_Find::maptree($p_path);
|
||||
|
||||
|
||||
foreach ($fileList as $filepath) {
|
||||
echo " * Removing $filepath\n";
|
||||
@unlink($filepath);
|
||||
echo "done.\n";
|
||||
}
|
||||
}
|
||||
foreach ($dirList as $dirpath) {
|
||||
echo " * Removing $dirpath\n";
|
||||
@rmdir($dirpath);
|
||||
echo "done.\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -84,22 +84,14 @@ function camp_empty_db($db) {
|
|||
else {
|
||||
echo " * Skipping: database table ".$CC_CONFIG['prefTable']."\n";
|
||||
}
|
||||
if (camp_db_table_exists($CC_CONFIG['treeTable'])) {
|
||||
echo " * Deleting from database table ".$CC_CONFIG['treeTable']."\n";
|
||||
$sql = "DELETE FROM ".$CC_CONFIG['treeTable'];
|
||||
camp_install_query($sql, false);
|
||||
}
|
||||
else {
|
||||
echo " * Skipping: database table ".$CC_CONFIG['treeTable']."\n";
|
||||
}
|
||||
if (camp_db_table_exists($CC_CONFIG['mdataTable'])) {
|
||||
echo " * Deleting from database table ".$CC_CONFIG['mdataTable']."\n";
|
||||
echo " * Deleting from database table ".$CC_CONFIG['mdataTable']."\n";
|
||||
$sql = "DELETE FROM ".$CC_CONFIG['mdataTable'];
|
||||
camp_install_query($sql, false);
|
||||
}
|
||||
else {
|
||||
echo " * Skipping: database table ".$CC_CONFIG['mdataTable']."\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -108,9 +100,9 @@ global $CC_CONFIG;
|
|||
|
||||
$CC_DBC = DB::connect($CC_CONFIG['dsn'], TRUE);
|
||||
$CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
|
||||
|
||||
|
||||
switch($argv[1]){
|
||||
|
||||
|
||||
case '-e':
|
||||
case '--empty':
|
||||
camp_empty_db($CC_DBC);
|
||||
|
@ -122,7 +114,7 @@ switch($argv[1]){
|
|||
break;
|
||||
default:
|
||||
printUsage();
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -67,13 +67,11 @@ class M3uPlaylist {
|
|||
* hash relation from filenames to gunids
|
||||
* @param string $plid
|
||||
* playlist gunid
|
||||
* @param int $parid
|
||||
* destination folder local id
|
||||
* @param int $subjid
|
||||
* local subject (user) id (id of user doing the import)
|
||||
* @return Playlist
|
||||
*/
|
||||
function import(&$gb, $aPath, $rPath, &$gunids, $plid, $parid, $subjid=NULL)
|
||||
function import(&$gb, $aPath, $rPath, &$gunids, $plid, $subjid=NULL)
|
||||
{
|
||||
$path = realpath("$aPath/$rPath");
|
||||
if (FALSE === $path) {
|
||||
|
@ -86,7 +84,7 @@ class M3uPlaylist {
|
|||
return $arr;
|
||||
}
|
||||
require_once("Playlist.php");
|
||||
$pl =& Playlist::create($gb, $plid, "imported_M3U", $parid);
|
||||
$pl =& Playlist::create($gb, $plid, "imported_M3U");
|
||||
if (PEAR::isError($pl)) {
|
||||
return $pl;
|
||||
}
|
||||
|
@ -111,7 +109,7 @@ class M3uPlaylist {
|
|||
case "xml":
|
||||
case "smil":
|
||||
case "m3u":
|
||||
$acId = $gb->bsImportPlaylistRaw($parid, $gunid,
|
||||
$acId = $gb->bsImportPlaylistRaw($gunid,
|
||||
$aPath, $uri, $ext, $gunids, $subjid);
|
||||
if (PEAR::isError($acId)) {
|
||||
break;
|
||||
|
|
|
@ -30,11 +30,9 @@ class Playlist extends StoredFile {
|
|||
* unique id
|
||||
* @param string $fname
|
||||
* name of new file
|
||||
* @param int $parid
|
||||
* local object id of parent folder
|
||||
* @return instance of Playlist object
|
||||
*/
|
||||
public function create(&$gb, $plid, $fname=NULL, $parid=NULL)
|
||||
public function create(&$gb, $plid, $fname=NULL)
|
||||
{
|
||||
$tmpFname = uniqid('');
|
||||
$values = array(
|
||||
|
|
|
@ -212,10 +212,6 @@ class Renderer
|
|||
$realOgg = $r['realFname'];
|
||||
$owner = $r['owner'];
|
||||
$gunid = $r['gunid'];
|
||||
// $parid = $gb->_getHomeDirId($owner);
|
||||
// if (PEAR::isError($parid)) {
|
||||
// return $parid;
|
||||
// }
|
||||
$fileName = 'rendered_playlist';
|
||||
$id = BasicStor::IdFromGunid($gunid);
|
||||
if (PEAR::isError($id)) {
|
||||
|
|
|
@ -43,15 +43,13 @@ class SmilPlaylist {
|
|||
* hash relation from filenames to gunids
|
||||
* @param string $plid
|
||||
* playlist gunid
|
||||
* @param int $parid
|
||||
* destination folder local id
|
||||
* @param int $subjid
|
||||
* local subject (user) id (id of user doing the import)
|
||||
* @return Playlist
|
||||
*/
|
||||
public static function &import(&$gb, $aPath, $rPath, &$gunids, $plid, $parid, $subjid=NULL)
|
||||
public static function &import(&$gb, $aPath, $rPath, &$gunids, $plid, $subjid=NULL)
|
||||
{
|
||||
$parr = compact('parid', 'subjid', 'aPath', 'plid', 'rPath');
|
||||
$parr = compact('subjid', 'aPath', 'plid', 'rPath');
|
||||
$path = realpath("$aPath/$rPath");
|
||||
if (FALSE === $path) {
|
||||
return PEAR::raiseError(
|
||||
|
@ -63,7 +61,7 @@ class SmilPlaylist {
|
|||
return $lspl;
|
||||
}
|
||||
require_once("Playlist.php");
|
||||
$pl =& Playlist::create($gb, $plid, "imported_SMIL", $parid);
|
||||
$pl =& Playlist::create($gb, $plid, "imported_SMIL");
|
||||
if (PEAR::isError($pl)) {
|
||||
return $pl;
|
||||
}
|
||||
|
@ -92,7 +90,7 @@ class SmilPlaylist {
|
|||
* @param hasharray $gunids
|
||||
* hash relation from filenames to gunids
|
||||
* @param array $parr
|
||||
* array of parid, subjid, aPath, plid, rPath
|
||||
* array of subjid, aPath, plid, rPath
|
||||
* @return string
|
||||
* XML of playlist in Campcaster playlist format
|
||||
*/
|
||||
|
@ -239,7 +237,7 @@ class SmilPlaylistAudioElement {
|
|||
case "smil":
|
||||
case "m3u":
|
||||
$type = 'playlist';
|
||||
$acId = $gb->bsImportPlaylistRaw($parid, $gunid,
|
||||
$acId = $gb->bsImportPlaylistRaw($gunid,
|
||||
$aPath, $uri, $ext, $gunids, $subjid);
|
||||
if (PEAR::isError($acId)) {
|
||||
return $r;
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
* <dt>AdminsGr <dd>name of admin group
|
||||
* <dt>StationPrefsGr <dd>name of station preferences group
|
||||
* <dt>AllGr <dd>name of 'all users' group
|
||||
* <dt>TrashName <dd>name of trash folder (subfolder of the storageRoot)
|
||||
* <dt>storageDir <dd>main directory for storing binary media files
|
||||
* <dt>bufferDir <dd>directory for temporary files
|
||||
* <dt>transDir <dd>directory for incomplete transferred files
|
||||
|
@ -85,29 +84,24 @@ $CC_CONFIG = array(
|
|||
|
||||
/* ==================================== aplication-specific configuration */
|
||||
'objtypes' => array(
|
||||
'RootNode' => array('Folder'),
|
||||
'Storage' => array('Folder', 'File', 'Replica'),
|
||||
'Folder' => array('Folder', 'File', 'Replica'),
|
||||
'Storage' => array(/*'Folder',*/ 'File' /*, 'Replica'*/),
|
||||
'File' => array(),
|
||||
'audioclip' => array(),
|
||||
'playlist' => array(),
|
||||
'Replica' => array(),
|
||||
// 'Replica' => array(),
|
||||
),
|
||||
'allowedActions'=> array(
|
||||
'RootNode' => array('classes', 'subjects'),
|
||||
'Folder' => array('editPrivs', 'write', 'read'),
|
||||
'File' => array('editPrivs', 'write', 'read'),
|
||||
'audioclip' => array('editPrivs', 'write', 'read'),
|
||||
'playlist' => array('editPrivs', 'write', 'read'),
|
||||
'Replica' => array('editPrivs', 'write', 'read'),
|
||||
'_class' => array('editPrivs', 'write', 'read'),
|
||||
// 'Replica' => array('editPrivs', 'write', 'read'),
|
||||
// '_class' => array('editPrivs', 'write', 'read'),
|
||||
),
|
||||
'allActions' => array(
|
||||
'editPrivs', 'write', 'read', 'classes', 'subjects'
|
||||
'editPrivs', 'write', 'read', /*'classes',*/ 'subjects'
|
||||
),
|
||||
|
||||
/* ============================================== auxiliary configuration */
|
||||
'RootNode' => 'RootNode',
|
||||
'tmpRootPass' => 'q',
|
||||
|
||||
/* =================================================== cron configuration */
|
||||
|
@ -126,10 +120,6 @@ $CC_CONFIG['permTable'] = $CC_CONFIG['tblNamePrefix'].'perms';
|
|||
$CC_CONFIG['sessTable'] = $CC_CONFIG['tblNamePrefix'].'sess';
|
||||
$CC_CONFIG['subjTable'] = $CC_CONFIG['tblNamePrefix'].'subjs';
|
||||
$CC_CONFIG['smembTable'] = $CC_CONFIG['tblNamePrefix'].'smemb';
|
||||
$CC_CONFIG['classTable'] = $CC_CONFIG['tblNamePrefix'].'classes';
|
||||
$CC_CONFIG['cmembTable'] = $CC_CONFIG['tblNamePrefix'].'cmemb';
|
||||
$CC_CONFIG['treeTable'] = $CC_CONFIG['tblNamePrefix'].'tree';
|
||||
$CC_CONFIG['structTable'] = $CC_CONFIG['tblNamePrefix'].'struct';
|
||||
$CC_CONFIG['transTable'] = $CC_CONFIG['tblNamePrefix'].'trans';
|
||||
$CC_CONFIG['prefTable'] = $CC_CONFIG['tblNamePrefix'].'pref';
|
||||
$CC_CONFIG['playlogTable'] = 'playlog';
|
||||
|
|
|
@ -21,126 +21,6 @@ if (isset($arr["DOCUMENT_ROOT"]) && ($arr["DOCUMENT_ROOT"] != "") ) {
|
|||
//------------------------------------------------------------------------------
|
||||
// Install database tables
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
if (!camp_db_table_exists($CC_CONFIG['treeTable'])) {
|
||||
echo " * Creating database table ".$CC_CONFIG['treeTable']."...";
|
||||
$sql = "CREATE TABLE ".$CC_CONFIG['treeTable']." (
|
||||
id int not null PRIMARY KEY,
|
||||
name varchar(255) not null default'',
|
||||
-- parid int,
|
||||
type varchar(255) not null default'',
|
||||
param varchar(255))";
|
||||
camp_install_query($sql, false);
|
||||
|
||||
$CC_DBC->createSequence($CC_CONFIG['treeTable']."_id_seq");
|
||||
|
||||
$sql = "CREATE UNIQUE INDEX ".$CC_CONFIG['treeTable']."_id_idx
|
||||
ON ".$CC_CONFIG['treeTable']." (id)";
|
||||
camp_install_query($sql, false);
|
||||
|
||||
$sql = "CREATE INDEX ".$CC_CONFIG['treeTable']."_name_idx
|
||||
ON ".$CC_CONFIG['treeTable']." (name)";
|
||||
camp_install_query($sql);
|
||||
} else {
|
||||
echo " * Skipping: database table already exists: ".$CC_CONFIG['treeTable']."\n";
|
||||
}
|
||||
|
||||
if (!camp_db_table_exists($CC_CONFIG['structTable'])) {
|
||||
echo " * Creating database table ".$CC_CONFIG['structTable']."...";
|
||||
$sql = "CREATE TABLE ".$CC_CONFIG['structTable']." (
|
||||
rid int not null PRIMARY KEY,
|
||||
objid int not null REFERENCES ".$CC_CONFIG['treeTable']." ON DELETE CASCADE,
|
||||
parid int not null REFERENCES ".$CC_CONFIG['treeTable']." ON DELETE CASCADE,
|
||||
level int)";
|
||||
camp_install_query($sql, false);
|
||||
|
||||
$CC_DBC->createSequence($CC_CONFIG['structTable']."_id_seq");
|
||||
|
||||
$sql = "CREATE UNIQUE INDEX ".$CC_CONFIG['structTable']."_rid_idx
|
||||
ON ".$CC_CONFIG['structTable']." (rid)";
|
||||
camp_install_query($sql, false);
|
||||
|
||||
$sql = "CREATE INDEX ".$CC_CONFIG['structTable']."_objid_idx
|
||||
ON ".$CC_CONFIG['structTable']." (objid)";
|
||||
camp_install_query($sql, false);
|
||||
|
||||
$sql = "CREATE INDEX ".$CC_CONFIG['structTable']."_parid_idx
|
||||
ON ".$CC_CONFIG['structTable']." (parid)";
|
||||
camp_install_query($sql, false);
|
||||
|
||||
$sql = "CREATE INDEX ".$CC_CONFIG['structTable']."_level_idx
|
||||
ON ".$CC_CONFIG['structTable']." (level)";
|
||||
camp_install_query($sql, false);
|
||||
|
||||
$sql = "CREATE UNIQUE INDEX ".$CC_CONFIG['structTable']."_objid_level_idx
|
||||
ON ".$CC_CONFIG['structTable']." (objid, level)";
|
||||
camp_install_query($sql, false);
|
||||
|
||||
$sql = "CREATE UNIQUE INDEX ".$CC_CONFIG['structTable']."_objid_parid_idx
|
||||
ON ".$CC_CONFIG['structTable']." (objid, parid)";
|
||||
camp_install_query($sql);
|
||||
} else {
|
||||
echo " * Skipping: database table already exists: ".$CC_CONFIG['structTable']."\n";
|
||||
}
|
||||
|
||||
//
|
||||
// Insert the RootNode if its not there yet.
|
||||
//
|
||||
$sql = "SELECT * FROM ".$CC_CONFIG['treeTable']
|
||||
." WHERE name='".$CC_CONFIG['RootNode']."'"
|
||||
." AND type='RootNode'";
|
||||
$row = $CC_DBC->GetRow($sql);
|
||||
if (!PEAR::isError($row) && !$row) {
|
||||
echo " * Creating ROOT NODE in ".$CC_CONFIG['treeTable']."...";
|
||||
$oid = $CC_DBC->nextId($CC_CONFIG['treeTable']."_id_seq");
|
||||
if (PEAR::isError($oid)) {
|
||||
echo $oid->getMessage()."\n";
|
||||
//print_r($oid);
|
||||
exit();
|
||||
}
|
||||
$CC_DBC->query("
|
||||
INSERT INTO ".$CC_CONFIG['treeTable']."
|
||||
(id, name, type)
|
||||
VALUES
|
||||
($oid, '".$CC_CONFIG['RootNode']."', 'RootNode')
|
||||
");
|
||||
echo "done.\n";
|
||||
} else {
|
||||
echo " * Skipping: Root node already exists in ".$CC_CONFIG['treeTable']."\n";
|
||||
}
|
||||
|
||||
if (!camp_db_table_exists($CC_CONFIG['classTable'])) {
|
||||
echo " * Creating database table ".$CC_CONFIG['classTable']."...";
|
||||
$sql = "CREATE TABLE ".$CC_CONFIG['classTable']." (
|
||||
id int not null PRIMARY KEY,
|
||||
cname varchar(20))";
|
||||
camp_install_query($sql, false);
|
||||
|
||||
$sql = "CREATE UNIQUE INDEX ".$CC_CONFIG['classTable']."_id_idx
|
||||
ON ".$CC_CONFIG['classTable']." (id)";
|
||||
camp_install_query($sql, false);
|
||||
|
||||
$sql = "CREATE UNIQUE INDEX ".$CC_CONFIG['classTable']."_cname_idx
|
||||
ON ".$CC_CONFIG['classTable']." (cname)";
|
||||
camp_install_query($sql);
|
||||
} else {
|
||||
echo " * Skipping: database table already exists: ".$CC_CONFIG['classTable']."\n";
|
||||
}
|
||||
|
||||
if (!camp_db_table_exists($CC_CONFIG['cmembTable'])) {
|
||||
echo " * Creating database table ".$CC_CONFIG['cmembTable']."...";
|
||||
$sql = "CREATE TABLE ".$CC_CONFIG['cmembTable']." (
|
||||
objid int not null,
|
||||
cid int not null)";
|
||||
camp_install_query($sql, false);
|
||||
|
||||
$sql = "CREATE UNIQUE INDEX ".$CC_CONFIG['cmembTable']."_idx
|
||||
ON ".$CC_CONFIG['cmembTable']." (objid, cid)";
|
||||
camp_install_query($sql);
|
||||
} else {
|
||||
echo " * Skipping: database table already exists: ".$CC_CONFIG['cmembTable']."\n";
|
||||
}
|
||||
|
||||
if (!camp_db_table_exists($CC_CONFIG['subjTable'])) {
|
||||
echo " * Creating database table ".$CC_CONFIG['subjTable']."...";
|
||||
$sql = "CREATE TABLE ".$CC_CONFIG['subjTable']." (
|
||||
|
@ -292,6 +172,15 @@ if (!camp_db_table_exists($CC_CONFIG['filesTable'])) {
|
|||
$sql = "CREATE INDEX ".$CC_CONFIG['filesTable']."_md5_idx
|
||||
ON ls_files (md5)";
|
||||
camp_install_query($sql);
|
||||
|
||||
$sql = "CREATE SEQUENCE file_id_seq
|
||||
INCREMENT 1
|
||||
MINVALUE 1
|
||||
MAXVALUE 9223372036854775807
|
||||
START 1000000
|
||||
CACHE 1";
|
||||
camp_install_query($sql);
|
||||
|
||||
} else {
|
||||
echo " * Skipping: database table already exists: ".$CC_CONFIG['filesTable']."\n";
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue