/**
  * get relations for person
  * @param array $params
  * @return array with retalions
  */
 public function getAllRels($params)
 {
     $arr = array();
     $arr["rels"] = getAllRelations();
     $arr["tags"] = getTagRelations();
     return $arr;
 }
 public function getAllRels($params)
 {
     return getAllRelations();
 }
예제 #3
0
function showHtml()
{
    $errMsgs = [];
    $html = "\n    <head><title>Big Yaad Tree</title><meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1'><script src=\"../../js/go.js\"></script><script id='code' src='../../js/tree.js'></script>" . "<link rel=\"stylesheet\" href=\"../../css/reset.css\"><link rel=\"shortcut icon\" href=\"../../img/favicon.ico\" type=\"image/x-icon\">" . "<link rel=\"icon\" href=\"../../img/favicon.ico\" type=\"image/x-icon\"><script src='../../js/sweetalert.min.js'></script><script src='../../js/jquery-2.1.4.min.js'></script><script src='../../js/index.js'></script>" . "<link rel='stylesheet prefetch' href='../../css/font-awesome.min.css'><link rel='stylesheet' href='../../css/sweetalert.css'><link rel=\"stylesheet\" href=\"../../css/style.css\"><link rel=\"stylesheet\" href=\"../../css/animate.css\"></head>\n    <div class=\"animated slideInDown\">\n    <div class=\"nav\">\n        <ul>\n            <li class=\"logo\"><img class='animated infinite pulse' src=\"../../img/logo.png\"></li>\n            <li class=\"home\"><a href=\"super.php\">REMOVE USER</a></li>\n            <li class=\"searchMenu\"><a class=\"active\" href=\"#\">REMOVE RELATIONSHIP</a></li>\n            <li class=\"childMenu\"><a href=\"changePassword.php\">CHANGE PASSWORD</a></li>\n            <li class=\"logout\"><a href=\"../../index.php\">LOGOUT</a></li>\n        </ul>\n    </div></div>" . "<body><div class=\"panel\" style='max-width: 550px;'>" . createUserTable(getAllRelations(), $errMsgs) . "</div></body>";
    echo $html;
}
예제 #4
0
/**
 * export data (send header and echo result)
 */
function churchdb__export()
{
    drupal_add_http_header('Content-type', 'application/csv; charset=ISO-8859-1; encoding=ISO-8859-1', true);
    drupal_add_http_header('Content-Disposition', 'attachment; filename="churchdb_export.csv"', true);
    include_once "churchdb_db.php";
    $params = $_GET;
    $template = null;
    $ids = null;
    if (isset($params["template"])) {
        $template = _getExportTemplateByName($params["template"]);
    }
    if (isset($params["ids"])) {
        $ids = $params["ids"];
    }
    $export = _getPersonDataForExport($ids, $template);
    $export = _addGroupRelationDataForExport($export, $template);
    // if filtered by relations, load and export linked persons too
    //FIXME: unsanitized get data inserted in sql query! change to use :var syntax with params!
    foreach ($export as $key => $entry) {
        if (isset($params["rel_part"]) && $params["rel_part"] != null && $params["rel_id"] != null) {
            $id = null;
            if ($params["rel_part"] == "k") {
                $rel = db_query("select * from {cdb_beziehung} where beziehungstyp_id=" . $params["rel_id"] . " and vater_id=" . $key)->fetch();
                if ($rel != false) {
                    $id = $rel->kind_id;
                }
            }
            if ($id == null || $params["rel_part"] == "k") {
                $rel = db_query("select * from {cdb_beziehung} where beziehungstyp_id=" . $params["rel_id"] . " and kind_id=" . $key)->fetch();
                $id = $rel->vater_id;
            }
            // if relation to additional person found
            if ($id != null && !isset($export[$id])) {
                $person = _getPersonDataForExport($id, $template);
                if ($person != null && isset($person[$id])) {
                    foreach ($person[$id] as $key => $value) {
                        $export[$key][$params["rel_part"] . "_" . $key] = $value;
                    }
                }
            }
        }
    }
    // check for relations and aggregate data sets, if parameter agg is specified
    $rels = getAllRelations();
    if ($rels != null) {
        $rel_types = getAllRelationTypes();
        foreach ($rels as $rel) {
            if (isset($params["agg" . $rel->typ_id]) && $params["agg" . $rel->typ_id] == "y" && isset($export[$rel->v_id]) && isset($export[$rel->k_id])) {
                // use the male as first person, if available
                if (!isset($export[$rel->v_id]["anrede2"]) || $export[$rel->v_id]["anrede2"] == "Lieber") {
                    $p1 = $rel->v_id;
                    $p2 = $rel->k_id;
                } else {
                    $p1 = $rel->k_id;
                    $p2 = $rel->v_id;
                }
                // add second to the male
                $export[$p1]["anrede"] = $rel_types[$rel->typ_id]->export_title;
                if (isset($export[$p1]["anrede2"]) && isset($export[$p2]["anrede2"])) {
                    $export[$p1]["anrede2"] = $export[$p2]["anrede2"] . " " . $export[$p2]["vorname"] . ", " . $export[$p1]["anrede2"];
                }
                $export[$p1]["vorname2"] = $export[$p2]["vorname"];
                if (isset($export[$p2]["email"])) {
                    $export[$p1]["email_beziehung"] = $export[$p2]["email"];
                }
                // remove second from export data
                $export[$p2] = null;
            }
        }
    }
    // check if there is a group given to add information about to export data
    if (isset($params["groupid"])) {
        foreach ($export as $k => $key) {
            if ($key != null) {
                $r = db_query("select g.bezeichnung, s.bezeichnung status, DATE_FORMAT(gpg.letzteaenderung, '%d.%m.%Y') letzteaenderung, gpg.comment \n                 from {cdb_gruppe} g, {cdb_gemeindeperson} gp, \n                       {cdb_gemeindeperson_gruppe} gpg, {cdb_gruppenteilnehmerstatus} s  \n                    where gp.id=gpg.gemeindeperson_id and g.id=:gruppe_id \n                           and s.intern_code=status_no\n                         and gpg.gruppe_id=g.id and gp.person_id=:person_id", array(":gruppe_id" => $params["groupid"], ":person_id" => $k))->fetch();
                if ($r != false) {
                    $export[$k]["Gruppe"] = $r->bezeichnung;
                    $export[$k]["Gruppe_Dabeiseit"] = $r->letzteaenderung;
                    $export[$k]["Gruppen_Kommentar"] = $r->comment;
                    $export[$k]["Gruppen_Status"] = $r->status;
                }
            }
        }
    }
    // Get all available columns
    $cols = array();
    foreach ($export as $key => $row) {
        if ($row != null) {
            foreach ($row as $a => $val) {
                if (gettype($val) != "object" && gettype($val) != "array") {
                    $cols[$a] = $a;
                }
            }
        }
    }
    // Add header
    $sql = "select langtext from {cdb_feld} where db_spalte=:db_spalte";
    foreach ($cols as $col) {
        $res = db_query($sql, array(":db_spalte" => $col))->fetch();
        if (!$res) {
            $txt = t($col);
            //TODO: test for actually used DB encoding?
            if (substr($txt, 0, 3) != "***") {
                echo mb_convert_encoding('"' . $txt . '";', 'ISO-8859-1', 'UTF-8');
            } else {
                echo mb_convert_encoding('"' . $col . '";', 'ISO-8859-1', 'UTF-8');
            }
        } else {
            echo mb_convert_encoding('"' . $res->langtext . '";', 'ISO-8859-1', 'UTF-8');
        }
    }
    echo "\n";
    // Sort data
    function sort_export_func($a, $b)
    {
        $sort_a = "";
        $sort_b = "";
        if (isset($a["name"])) {
            $sort_a .= $a["name"];
        }
        if (isset($a["vorname"])) {
            $sort_a .= $a["vorname"];
        }
        if (isset($b["name"])) {
            $sort_b .= $b["name"];
        }
        if (isset($b["vorname"])) {
            $sort_b .= $b["vorname"];
        }
        if (isset($a["id"])) {
            $sort_a .= $a["id"];
        }
        if (isset($b["id"])) {
            $sort_b .= $b["id"];
        }
        if ($sort_a == $sort_b) {
            return 0;
        }
        return $sort_a < $sort_b ? -1 : 1;
    }
    usort($export, "sort_export_func");
    // Add all data rows
    foreach ($export as $row) {
        if ($row != null) {
            foreach ($cols as $col) {
                if (isset($row[$col])) {
                    echo mb_convert_encoding('"' . $row[$col] . '";', 'ISO-8859-1', 'UTF-8');
                } else {
                    echo ";";
                }
            }
            echo "\n";
        }
    }
}
예제 #5
0
/**
 * export data (send header and echo result)
 */
function churchdb__export()
{
    drupal_add_http_header('Content-type', 'application/csv; charset=ISO-8859-1; encoding=ISO-8859-1', true);
    drupal_add_http_header('Content-Disposition', 'attachment; filename="churchdb_export.csv"', true);
    include_once "churchdb_db.php";
    $ids = getVar("ids", null);
    $relPart = getVar("rel_part", null);
    $relId = getVar("rel_id", null);
    $template = _getExportTemplateByName(getVar("template", null));
    $export = _getPersonDataForExport($ids, $template);
    $export = _addGroupRelationDataForExport($export, $template);
    // if filtered by relations, load and export linked persons too
    foreach ($export as $key => $entry) {
        if ($relPart && $relId) {
            $id = null;
            if ($relPart == "k") {
                $rel = db_query("SELECT * FROM {cdb_beziehung}\n                        WHERE beziehungstyp_id=:relId AND vater_id=:key", array(":relId" => $relId, "key" => $key))->fetch();
                if ($rel) {
                    $id = $rel->kind_id;
                }
            }
            if (!$id) {
                $rel = db_query("SELECT * FROM {cdb_beziehung}\n                        WHERE beziehungstyp_id=:relId AND kind_id=:key", array(":relId" => $relId, "key" => $key))->fetch();
                $id = $rel->vater_id;
            }
            // if relation to additional person found
            if ($id && !isset($export[$id])) {
                $person = _getPersonDataForExport($id, $template);
                if ($person && isset($person[$id])) {
                    foreach ($person[$id] as $relKey => $relValue) {
                        $export[$key][$relPart . "_" . $relKey] = $relValue;
                    }
                }
            }
        }
    }
    // check for relations and aggregate data sets, if parameter agg is specified
    $rels = getAllRelations();
    if ($rels != null) {
        $rel_types = getAllRelationTypes();
        foreach ($rels as $rel) {
            if (getVar("agg" . $rel->typ_id) == "y" && isset($export[$rel->v_id]) && isset($export[$rel->k_id])) {
                // use the male as first person, if available
                if (!isset($export[$rel->v_id]["Anrede2"]) || $export[$rel->v_id]["Anrede2"] == t('salutation.man.2')) {
                    $p1 = $rel->v_id;
                    $p2 = $rel->k_id;
                } else {
                    $p1 = $rel->k_id;
                    $p2 = $rel->v_id;
                }
                // add second to the male
                $export[$p1]["Anrede"] = $rel_types[$rel->typ_id]->export_title;
                if (isset($export[$p1]["Anrede2"]) && isset($export[$p2]["Anrede2"])) {
                    $export[$p1]["Anrede2"] = $export[$p2]["Anrede2"] . " " . $export[$p2]["vorname"] . ", " . $export[$p1]["Anrede2"];
                }
                $export[$p1]["Vorname2"] = $export[$p2]["vorname"];
                if (isset($export[$p2]["email"])) {
                    $export[$p1]["email_beziehung"] = $export[$p2]["email"];
                }
                // remove second from export data
                $export[$p2] = null;
            }
        }
    }
    // check if there is a group given to add information about to export data
    if ($groupId = getVar("groupid")) {
        foreach ($export as $k => $key) {
            if ($key != null) {
                $r = db_query("\n           SELECT g.bezeichnung, s.bezeichnung status, DATE_FORMAT(gpg.letzteaenderung, '%d.%m.%Y') letzteaenderung, gpg.comment\n           FROM {cdb_gruppe} g, {cdb_gemeindeperson} gp, {cdb_gemeindeperson_gruppe} gpg, {cdb_gruppenteilnehmerstatus} s\n           WHERE gp.id=gpg.gemeindeperson_id and g.id=:gruppe_id and s.intern_code=status_no and gpg.gruppe_id=g.id and gp.person_id=:person_id", array(":gruppe_id" => $groupId, ":person_id" => $k))->fetch();
                if ($r) {
                    $export[$k]["Gruppe"] = $r->bezeichnung;
                    $export[$k]["Gruppe_Dabeiseit"] = $r->letzteaenderung;
                    $export[$k]["Gruppen_Kommentar"] = $r->comment;
                    $export[$k]["Gruppen_Status"] = $r->status;
                }
            }
        }
    }
    // Get all available columns
    $cols = array();
    foreach ($export as $key => $row) {
        if ($row) {
            foreach ($row as $a => $val) {
                if (!is_object($val) && !is_array($val)) {
                    $cols[$a] = $a;
                }
            }
        }
    }
    // Add header
    $sql = "SELECT langtext from {cdb_feld}\n          WHERE db_spalte=:db_spalte";
    foreach ($cols as $col) {
        $res = db_query($sql, array(":db_spalte" => $col))->fetch();
        if (!$res) {
            $txt = t($col);
            // TODO: test for actually used DB encoding?
            if (substr($txt, 0, 3) != "***") {
                echo mb_convert_encoding('"' . $txt . '";', 'ISO-8859-1', 'UTF-8');
            } else {
                echo mb_convert_encoding('"' . $col . '";', 'ISO-8859-1', 'UTF-8');
            }
        } else {
            echo mb_convert_encoding('"' . $res->langtext . '";', 'ISO-8859-1', 'UTF-8');
        }
    }
    echo "\n";
    // Sort data
    usort($export, "sort_export_func");
    // Add all data rows
    foreach ($export as $row) {
        if ($row) {
            foreach ($cols as $col) {
                if (isset($row[$col])) {
                    echo mb_convert_encoding('"' . $row[$col] . '";', 'ISO-8859-1', 'UTF-8');
                } else {
                    echo ";";
                }
            }
            echo "\n";
        }
    }
}