action = safe_GET("action");
$this->id = safe_GET('id');
$remove = safe_GET('remove',"","no");
$convert = safe_GET('convert',"","no");
$this->Zip = safe_GET('Zip');
$this->IncludeMedia = safe_GET('IncludeMedia');
$this->conv_path = safe_GET('conv_path', WT_REGEX_NOSCRIPT, $_SESSION['exportConvPath']);
$this->conv_slashes = safe_GET('conv_slashes', array('forward', 'backward'), $_SESSION['exportConvSlashes']);
$this->privatize_export = safe_GET('privatize_export', array('none', 'visitor', 'user', 'gedadmin', 'admin'));
$this->filetype = safe_GET('filetype');
$this->level1 = safe_GET('level1');
$this->level2 = safe_GET('level2');
$this->level3 = safe_GET('level3');
if (empty($this->filetype)) $this->filetype = "gedcom";
$others = safe_GET('others');
$item = safe_GET('item');
if (!isset($cart)) $cart = $_SESSION['cart'];
$this->type = safe_GET('type');
$this->conv_path = stripLRMRLM($this->conv_path);
$_SESSION['exportConvPath'] = $this->conv_path; // remember this for the next Download
$_SESSION['exportConvSlashes'] = $this->conv_slashes;
if ($this->action == 'add') {
if (empty($this->type) && !empty($this->id)) {
$this->type="";
$obj = GedcomRecord::getInstance($this->id);
if (is_null($obj)) {
$this->id="";
$this->action="";
}
else $this->type = strtolower($obj->getType());
}
else if (empty($this->id)) $this->action="";
if (!empty($this->id) && $this->type != 'fam' && $this->type != 'indi' && $this->type != 'sour')
$this->action = 'add1';
}
if ($this->action == 'add1') {
$clipping = array ();
$clipping['type'] = $this->type;
$clipping['id'] = $this->id;
$clipping['gedcom'] = $GEDCOM;
$ret = $this->add_clipping($clipping);
if ($ret) {
if ($this->type == 'sour') {
if ($others == 'linked') {
foreach (fetch_linked_indi($this->id, 'SOUR', WT_GED_ID) as $indi) {
if ($indi->canDisplayName()) {
$this->add_clipping(array('type'=>'indi', 'id'=>$indi->getXref()));
}
}
foreach (fetch_linked_fam($this->id, 'SOUR', WT_GED_ID) as $fam) {
if ($fam->canDisplayName()) {
$this->add_clipping(array('type'=>'fam', 'id'=>$fam->getXref()));
}
}
}
}
if ($this->type == 'fam') {
if ($others == 'parents') {
$parents = find_parents($this->id);
if (!empty ($parents["HUSB"])) {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $parents["HUSB"];
$ret = $this->add_clipping($clipping);
}
if (!empty ($parents["WIFE"])) {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $parents["WIFE"];
$ret = $this->add_clipping($clipping);
}
} else
if ($others == "members") {
$this->add_family_members($this->id);
} else
if ($others == "descendants") {
$this->add_family_descendancy($this->id);
}
} else
if ($this->type == 'indi') {
if ($others == 'parents') {
$famids = find_family_ids($this->id);
foreach ($famids as $indexval => $famid) {
$clipping = array ();
$clipping['type'] = "fam";
$clipping['id'] = $famid;
$ret = $this->add_clipping($clipping);
if ($ret) {
$this->add_family_members($famid);
}
}
} else
if ($others == 'ancestors') {
$this->add_ancestors_to_cart($this->id, $this->level1);
} else
if ($others == 'ancestorsfamilies') {
$this->add_ancestors_to_cart_families($this->id, $this->level2);
} else
if ($others == 'members') {
$famids = find_sfamily_ids($this->id);
foreach ($famids as $indexval => $famid) {
$clipping = array ();
$clipping['type'] = "fam";
$clipping['id'] = $famid;
$ret = $this->add_clipping($clipping);
if ($ret)
$this->add_family_members($famid);
}
} else
if ($others == 'descendants') {
$famids = find_sfamily_ids($this->id);
foreach ($famids as $indexval => $famid) {
$clipping = array ();
$clipping['type'] = "fam";
$clipping['id'] = $famid;
$ret = $this->add_clipping($clipping);
if ($ret)
$this->add_family_descendancy($famid, $this->level3);
}
}
}
}
} else
if ($this->action == 'remove') {
$ct = count($cart);
for ($i = $item +1; $i < $ct; $i++) {
$cart[$i -1] = $cart[$i];
}
unset ($cart[$ct -1]);
} else
if ($this->action == 'empty') {
$cart = array ();
$_SESSION["cart"] = $cart;
} else
if ($this->action == 'download') {
usort($cart, "same_group");
if ($this->filetype == "gedcom") {
$path = substr($SCRIPT_NAME, 0, strrpos($SCRIPT_NAME, "/"));
if (empty ($path))
$path = "/";
if ($path[strlen($path) - 1] != "/")
$path .= "/";
if ($SERVER_URL[strlen($SERVER_URL) - 1] == "/") {
$dSERVER_URL = substr($SERVER_URL, 0, strlen($SERVER_URL) - 1);
} else
$dSERVER_URL = $SERVER_URL;
$media = array ();
$mediacount = 0;
$ct = count($cart);
$filetext = "0 HEAD\n1 SOUR ".WT_WEBTREES."\n2 NAME ".WT_WEBTREES."\n2 VERS ".WT_VERSION_TEXT."\n1 DEST DISKETTE\n1 DATE " . date("j M Y") . "\n2 TIME " . date("H:i:s") . "\n";
$filetext .= "1 GEDC\n2 VERS 5.5\n2 FORM LINEAGE-LINKED\n1 CHAR UTF-8\n";
$head = find_gedcom_record("HEAD", WT_GED_ID);
$placeform = trim(get_sub_record(1, "1 PLAC", $head));
if (!empty ($placeform))
$filetext .= $placeform . "\n";
else
$filetext .= "1 PLAC\n2 FORM " . "City, County, State/Province, Country" . "\n";
if ($convert == "yes") {
$filetext = str_replace("UTF-8", "ANSI", $filetext);
$filetext = utf8_decode($filetext);
}
$tempUserID = '#ExPoRt#';
if ($this->privatize_export!='none') {
// Create a temporary userid
$export_user_id = createTempUser($tempUserID, $this->privatize_export, $GEDCOM); // Create a temporary userid
// Temporarily become this user
$_SESSION["org_user"]=$_SESSION["wt_user"];
$_SESSION["wt_user"]=$tempUserID;
}
for ($i = 0; $i < $ct; $i++) {
$clipping = $cart[$i];
if ($clipping['gedcom'] == $GEDCOM) {
$record = find_gedcom_record($clipping['id'], WT_GED_ID);
$savedRecord = $record; // Save this for the "does this file exist" check
if ($clipping['type']=='obje') $record = convert_media_path($record, $this->conv_path, $this->conv_slashes);
$record = privatize_gedcom($record);
$record = remove_custom_tags($record, $remove);
if ($convert == "yes")
$record = utf8_decode($record);
switch ($clipping['type']) {
case 'indi':
$ft = preg_match_all("/1 FAMC @(.*)@/", $record, $match, PREG_SET_ORDER);
for ($k = 0; $k < $ft; $k++) {
if (!id_in_cart($match[$k][1])) {
$record = preg_replace("/1 FAMC @" . $match[$k][1] . "@.*/", "", $record);
}
}
$ft = preg_match_all("/1 FAMS @(.*)@/", $record, $match, PREG_SET_ORDER);
for ($k = 0; $k < $ft; $k++) {
if (!id_in_cart($match[$k][1])) {
$record = preg_replace("/1 FAMS @" . $match[$k][1] . "@.*/", "", $record);
}
}
$ft = preg_match_all("/\d FILE (.*)/", $savedRecord, $match, PREG_SET_ORDER);
for ($k = 0; $k < $ft; $k++) {
$filename = $MEDIA_DIRECTORY.extract_filename(trim($match[$k][1]));
if (file_exists($filename)) {
$media[$mediacount] = array (PCLZIP_ATT_FILE_NAME => $filename);
$mediacount++;
}
// $record = preg_replace("|(\d FILE )" . addslashes($match[$k][1]) . "|", "$1" . $filename, $record);
}
$filetext .= trim($record) . "\n";
$filetext .= "1 SOUR @SPGV1@\n";
$filetext .= "2 PAGE " . $dSERVER_URL . "/individual.php?pid=" . $clipping['id'] . "\n";
$filetext .= "2 DATA\n";
$filetext .= "3 TEXT " . i18n::translate('This Individual was downloaded from:') . "\n";
$filetext .= "4 CONT " . $dSERVER_URL . "/individual.php?pid=" . $clipping['id'] . "\n";
break;
case 'fam':
$ft = preg_match_all("/1 CHIL @(.*)@/", $record, $match, PREG_SET_ORDER);
for ($k = 0; $k < $ft; $k++) {
if (!id_in_cart($match[$k][1])) {
/* if the child is not in the list delete the record of it */
$record = preg_replace("/1 CHIL @" . $match[$k][1] . "@.*/", "", $record);
}
}
$ft = preg_match_all("/1 HUSB @(.*)@/", $record, $match, PREG_SET_ORDER);
for ($k = 0; $k < $ft; $k++) {
if (!id_in_cart($match[$k][1])) {
/* if the husband is not in the list delete the record of him */
$record = preg_replace("/1 HUSB @" . $match[$k][1] . "@.*/", "", $record);
}
}
$ft = preg_match_all("/1 WIFE @(.*)@/", $record, $match, PREG_SET_ORDER);
for ($k = 0; $k < $ft; $k++) {
if (!id_in_cart($match[$k][1])) {
/* if the wife is not in the list delete the record of her */
$record = preg_replace("/1 WIFE @" . $match[$k][1] . "@.*/", "", $record);
}
}
$ft = preg_match_all("/\d FILE (.*)/", $savedRecord, $match, PREG_SET_ORDER);
for ($k = 0; $k < $ft; $k++) {
$filename = $MEDIA_DIRECTORY.extract_filename(trim($match[$k][1]));
if (file_exists($filename)) {
$media[$mediacount] = array (PCLZIP_ATT_FILE_NAME => $filename);
$mediacount++;
}
// $record = preg_replace("|(\d FILE )" . addslashes($match[$k][1]) . "|", "$1" . $filename, $record);
}
$filetext .= trim($record) . "\n";
$filetext .= "1 SOUR @SPGV1@\n";
$filetext .= "2 PAGE " . $dSERVER_URL . $path . "family.php?famid=" . $clipping['id'] . "\n";
$filetext .= "2 DATA\n";
$filetext .= "3 TEXT " . i18n::translate('This Family was downloaded from:') . "\n";
$filetext .= "4 CONT " . $dSERVER_URL . "/family.php?famid=" . $clipping['id'] . "\n";
break;
case 'source':
$ft = preg_match_all("/\d FILE (.*)/", $savedRecord, $match, PREG_SET_ORDER);
for ($k = 0; $k < $ft; $k++) {
$filename = $MEDIA_DIRECTORY.extract_filename(trim($match[$k][1]));
if (file_exists($filename)) {
$media[$mediacount] = array (PCLZIP_ATT_FILE_NAME => $filename);
$mediacount++;
}
// $record = preg_replace("|(\d FILE )" . addslashes($match[$k][1]) . "|", "$1" . $filename, $record);
}
$filetext .= trim($record) . "\n";
$filetext .= "1 NOTE " . i18n::translate('This Source was downloaded from:') . "\n";
$filetext .= "2 CONT " . $dSERVER_URL . "/source.php?sid=" . $clipping['id'] . "\n";
break;
default:
$ft = preg_match_all("/\d FILE (.*)/", $savedRecord, $match, PREG_SET_ORDER);
for ($k = 0; $k < $ft; $k++) {
$filename = $MEDIA_DIRECTORY.extract_filename(trim($match[$k][1]));
if (file_exists($filename)) {
$media[$mediacount] = array (PCLZIP_ATT_FILE_NAME => $filename);
$mediacount++;
}
// $record = preg_replace("|(\d FILE )" . addslashes($match[$k][1]) . "|", "$1" . $filename, $record);
}
$filetext .= trim($record) . "\n";
break;
}
}
}
if ($this->privatize_export!='none') {
$_SESSION["wt_user"]=$_SESSION["org_user"];
delete_user($export_user_id);
AddToLog("deleted dummy user -> {$tempUserID} <-", 'auth');
}
if($this->IncludeMedia == "yes")
{
$this->media_list = $media;
}
$filetext .= "0 @SPGV1@ SOUR\n";
if ($user_id=get_user_id($CONTACT_EMAIL)) {
$filetext .= "1 AUTH " . getUserFullName($user_id) . "\n";
}
$filetext .= "1 TITL " . $HOME_SITE_TEXT . "\n";
$filetext .= "1 ABBR " . $HOME_SITE_TEXT . "\n";
$filetext .= "1 PUBL " . $HOME_SITE_URL . "\n";
$filetext .= "0 TRLR\n";
//-- make sure the preferred line endings are used
$filetext = preg_replace("/[\r\n]+/", WT_EOL, $filetext);
$this->download_data = $filetext;
$this->download_clipping();
} else
if ($this->filetype == "gramps") {
// Sort the clippings cart because the export works better when the cart is sorted
usort($cart, "same_group");
require_once WT_ROOT.'includes/classes/class_geclippings.php';
$gramps_Exp = new GEClippings();
$gramps_Exp->begin_xml();
$ct = count($cart);
usort($cart, "same_group");
for ($i = 0; $i < $ct; $i++) {
$clipping = $cart[$i];
switch ($clipping['type']) {
case 'indi':
$rec = find_person_record($clipping['id'], WT_GED_ID);
$rec = remove_custom_tags($rec, $remove);
if ($this->privatize_export!='none') $rec = privatize_gedcom($rec);
$gramps_Exp->create_person($rec, $clipping['id']);
break;
case 'fam':
$rec = find_family_record($clipping['id'], WT_GED_ID);
$rec = remove_custom_tags($rec, $remove);
if ($this->privatize_export!='none') $rec = privatize_gedcom($rec);
$gramps_Exp->create_family($rec, $clipping['id']);
break;
case 'source':
$rec = find_source_record($clipping['id'], WT_GED_ID);
$rec = remove_custom_tags($rec, $remove);
if ($this->privatize_export!='none') $rec = privatize_gedcom($rec);
$gramps_Exp->create_source($rec, $clipping['id']);
break;
}
}
$this->download_data = $gramps_Exp->dom->saveXML();
if ($convert) $this->download_data = utf8_decode($this->download_data);
$this->media_list = $gramps_Exp->get_all_media();
$this->download_clipping();
}
}
}
/**
* Loads everything in the clippings cart into a zip file.
*/
function zip_cart()
{
global $INDEX_DIRECTORY;
switch ($this->filetype) {
case 'gedcom':
$tempFileName = 'clipping'.rand().'.ged';
break;
case 'gramps':
$tempFileName = 'clipping'.rand().'.gramps';
break;
}
$fp = fopen($INDEX_DIRECTORY.$tempFileName, "wb");
if($fp)
{
flock($fp,LOCK_EX);
fwrite($fp,$this->download_data);
flock($fp,LOCK_UN);
fclose($fp);
$zipName = "clippings".rand(0, 1500).".zip";
$fname = $INDEX_DIRECTORY.$zipName;
$comment = "Created by ".WT_WEBTREES." ".WT_VERSION_TEXT." on ".date("d M Y").".";
$archive = new PclZip($fname);
// add the ged/gramps file to the root of the zip file (strip off the index_directory)
$this->media_list[]= array (PCLZIP_ATT_FILE_NAME => $INDEX_DIRECTORY.$tempFileName, PCLZIP_ATT_FILE_NEW_FULL_NAME => $tempFileName);
$v_list = $archive->create($this->media_list, PCLZIP_OPT_COMMENT, $comment);
if ($v_list == 0) print "Error : ".$archive->errorInfo(true)."";
else {
$openedFile = fopen($fname,"rb");
$this->download_data = fread($openedFile,filesize($fname));
fclose($openedFile);
unlink($fname);
}
unlink($INDEX_DIRECTORY.$tempFileName);
}
else
{
print i18n::translate('Cannot create')." ".$INDEX_DIRECTORY."$tempFileName ".i18n::translate('Check access rights on this directory.')."
";
}
}
/**
* Brings up the download dialog box and allows the user to download the file
* based on the options he or she selected
*/
function download_clipping(){
if ($this->IncludeMedia == "yes" || $this->Zip == "yes")
{
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="clipping.zip"');
$this->zip_cart();
}
else
{
switch ($this->filetype) {
case 'gedcom':
{
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename="clipping.ged"');
}
break;
case 'gramps':
{
header('Content-Type: text/xml');
header('Content-Disposition: attachment; filename="clipping.gramps"');
}
break;
}
}
header("Content-length: ".strlen($this->download_data));
print_r ($this->download_data);
exit;
}
/**
* Inserts a clipping into the clipping cart
*
* @param
*/
function add_clipping($clipping) {
global $cart, $SHOW_SOURCES, $MULTI_MEDIA, $GEDCOM;
if (($clipping['id'] == false) || ($clipping['id'] == ""))
return false;
if (!id_in_cart($clipping['id'])) {
$clipping['gedcom'] = $GEDCOM;
if ($clipping['type'] == "indi") {
if (displayDetailsById($clipping['id']) || showLivingNameById($clipping['id'])) {
$cart[] = $clipping;
$this->addCount++;
} else {
$this->privCount++;
return false;
}
} else
if ($clipping['type'] == "fam") {
$parents = find_parents($clipping['id']);
if ((displayDetailsById($parents['HUSB']) || showLivingNameById($parents['HUSB'])) && (displayDetailsById($parents['WIFE']) || showLivingNameById($parents['WIFE']))) {
$cart[] = $clipping;
$this->addCount++;
} else {
$this->privCount++;
return false;
}
} else {
if (displayDetailsById($clipping['id'], strtoupper($clipping['type'])))
{
$cart[] = $clipping;
$this->addCount++;
}
else {
$this->privCount++;
return false;
}
}
//-- look in the gedcom record for any linked SOUR, NOTE, or OBJE and also add them to the
//- clippings cart
$gedrec = find_gedcom_record($clipping['id'], WT_GED_ID);
if ($SHOW_SOURCES >= WT_USER_ACCESS_LEVEL) {
$st = preg_match_all("/\d SOUR @(.*)@/", $gedrec, $match, PREG_SET_ORDER);
for ($i = 0; $i < $st; $i++) {
// add SOUR
$clipping = array ();
$clipping['type'] = "source";
$clipping['id'] = $match[$i][1];
$clipping['gedcom'] = $GEDCOM;
$this->add_clipping($clipping);
// add REPO
$sourec = find_gedcom_record($match[$i][1], WT_GED_ID);
$rt = preg_match_all("/\d REPO @(.*)@/", $sourec, $rmatch, PREG_SET_ORDER);
for ($j = 0; $j < $rt; $j++) {
$clipping = array ();
$clipping['type'] = "repository";
$clipping['id'] = $rmatch[$j][1];
$clipping['gedcom'] = $GEDCOM;
$this->add_clipping($clipping);
}
}
}
$nt = preg_match_all("/\d NOTE @(.*)@/", $gedrec, $match, PREG_SET_ORDER);
for ($i = 0; $i < $nt; $i++) {
$clipping = array ();
$clipping['type'] = "note";
$clipping['id'] = $match[$i][1];
$clipping['gedcom'] = $GEDCOM;
$this->add_clipping($clipping);
}
if ($MULTI_MEDIA) {
$nt = preg_match_all("/\d OBJE @(.*)@/", $gedrec, $match, PREG_SET_ORDER);
for ($i = 0; $i < $nt; $i++) {
$clipping = array ();
$clipping['type'] = "obje";
$clipping['id'] = $match[$i][1];
$clipping['gedcom'] = $GEDCOM;
$this->add_clipping($clipping);
}
}
}
return true;
}
// --------------------------------- Recursive function to traverse the tree
function add_family_descendancy($famid, $level="") {
global $cart;
if (!$famid)
return;
$famrec = find_family_record($famid, WT_GED_ID);
if ($famrec) {
$parents = find_parents_in_record($famrec);
if (!empty ($parents["HUSB"])) {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $parents["HUSB"];
$this->add_clipping($clipping);
}
if (!empty ($parents["WIFE"])) {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $parents["WIFE"];
$this->add_clipping($clipping);
}
$num = preg_match_all("/1\s*CHIL\s*@(.*)@/", $famrec, $smatch, PREG_SET_ORDER);
for ($i = 0; $i < $num; $i++) {
$cfamids = find_sfamily_ids($smatch[$i][1]);
if (count($cfamids) > 0) {
foreach ($cfamids as $indexval => $cfamid) {
if (!id_in_cart($cfamid)) {
$clipping = array ();
$clipping['type'] = "fam";
$clipping['id'] = $cfamid;
$ret = $this->add_clipping($clipping); // add the childs family
if ($level=="" || $level>0) {
if ($level!="") $level--;
$this->add_family_descendancy($cfamid, $level); // recurse on the childs family
}
}
}
} else {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $smatch[$i][1];
$this->add_clipping($clipping);
}
}
}
}
function add_family_members($famid) {
global $cart;
$parents = find_parents($famid);
if (!empty ($parents["HUSB"])) {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $parents["HUSB"];
$this->add_clipping($clipping);
}
if (!empty ($parents["WIFE"])) {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $parents["WIFE"];
$this->add_clipping($clipping);
}
$famrec = find_family_record($famid, WT_GED_ID);
if ($famrec) {
$num = preg_match_all("/1\s*CHIL\s*@(.*)@/", $famrec, $smatch, PREG_SET_ORDER);
for ($i = 0; $i < $num; $i++) {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $smatch[$i][1];
$this->add_clipping($clipping);
}
}
}
//-- recursively adds direct-line ancestors to cart
function add_ancestors_to_cart($pid, $level="") {
global $cart;
$famids = find_family_ids($pid);
if (count($famids) > 0) {
foreach ($famids as $indexval => $famid) {
if ($level=="" || $level > 0) {
if ($level!="") $level = $level -1;
$clipping = array ();
$clipping['type'] = "fam";
$clipping['id'] = $famid;
$ret = $this->add_clipping($clipping);
if ($ret) {
$parents = find_parents($famid);
if (!empty ($parents["HUSB"])) {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $parents["HUSB"];
$this->add_clipping($clipping);
$this->add_ancestors_to_cart($parents["HUSB"], $level);
}
if (!empty ($parents["WIFE"])) {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $parents["WIFE"];
$this->add_clipping($clipping);
$this->add_ancestors_to_cart($parents["WIFE"], $level);
}
}
}
}
}
}
//-- recursively adds direct-line ancestors and their families to the cart
function add_ancestors_to_cart_families($pid, $level="") {
global $cart;
$famids = find_family_ids($pid);
if (count($famids) > 0) {
foreach ($famids as $indexval => $famid) {
if ($level=="" || $level > 0) {
if ($level!="")$level = $level -1;
$clipping = array ();
$clipping['type'] = "fam";
$clipping['id'] = $famid;
$ret = $this->add_clipping($clipping);
if ($ret) {
$parents = find_parents($famid);
if (!empty ($parents["HUSB"])) {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $parents["HUSB"];
$ret = $this->add_clipping($clipping);
$this->add_ancestors_to_cart_families($parents["HUSB"], $level);
}
if (!empty ($parents["WIFE"])) {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $parents["WIFE"];
$ret = $this->add_clipping($clipping);
$this->add_ancestors_to_cart_families($parents["WIFE"], $level);
}
$famrec = find_family_record($famid, WT_GED_ID);
if ($famrec) {
$num = preg_match_all("/1\s*CHIL\s*@(.*)@/", $famrec, $smatch, PREG_SET_ORDER);
for ($i = 0; $i < $num; $i++) {
$clipping = array ();
$clipping['type'] = "indi";
$clipping['id'] = $smatch[$i][1];
$this->add_clipping($clipping);
}
}
}
}
}
}
}
}
// -- end of class
//-- load a user extended class if one exists
if (file_exists(WT_ROOT.'includes/controllers/clippings_ctrl_user.php')) {
require_once WT_ROOT.'includes/controllers/clippings_ctrl_user.php';
} else {
class ClippingsController extends ClippingsControllerRoot {
}
}
?>