当前位置: 首页>>代码示例>>PHP>>正文


PHP Family::getInstance方法代码示例

本文整理汇总了PHP中Fisharebest\Webtrees\Family::getInstance方法的典型用法代码示例。如果您正苦于以下问题:PHP Family::getInstance方法的具体用法?PHP Family::getInstance怎么用?PHP Family::getInstance使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Fisharebest\Webtrees\Family的用法示例。


在下文中一共展示了Family::getInstance方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: __construct

 /**
  * Startup activity
  */
 public function __construct()
 {
     global $WT_TREE;
     $xref = Filter::get('famid', WT_REGEX_XREF);
     $this->record = Family::getInstance($xref, $WT_TREE);
     parent::__construct();
 }
开发者ID:tunandras,项目名称:webtrees,代码行数:10,代码来源:FamilyController.php

示例2: getIntance

 /**
  * Extend \Fisharebest\Webtrees\Family getInstance, in order to retrieve directly a \MyArtJaub\Webtrees\Family object 
  *
  * @param string $xref
  * @param Tree $tree
  * @param string $gedcom
  * @return NULL|\MyArtJaub\Webtrees\Family
  */
 public static function getIntance($xref, Tree $tree, $gedcom = null)
 {
     $dfam = null;
     $fam = fw\Family::getInstance($xref, $tree, $gedcom);
     if ($fam) {
         $dfam = new Family($fam);
     }
     return $dfam;
 }
开发者ID:jon48,项目名称:webtrees-lib,代码行数:17,代码来源:Family.php

示例3: printCousins

 /**
  * print cousins list
  *
  * @param string $famid family ID
  * @param int $show_full large or small box
  */
 public static function printCousins($famid, $show_full = 1)
 {
     global $WT_TREE;
     if ($show_full) {
         $bheight = Theme::theme()->parameter('chart-box-y');
     } else {
         $bheight = Theme::theme()->parameter('compact-chart-box-y');
     }
     $family = Family::getInstance($famid, $WT_TREE);
     $fchildren = $family->getChildren();
     $kids = count($fchildren);
     echo '<td valign="middle" height="100%">';
     if ($kids) {
         echo '<table cellspacing="0" cellpadding="0" border="0" ><tr valign="middle">';
         if ($kids > 1) {
             echo '<td rowspan="', $kids, '" valign="middle" align="right"><img width="3px" height="', ($bheight + 9) * ($kids - 1), 'px" src="', Theme::theme()->parameter('image-vline'), '" alt=""></td>';
         }
         $ctkids = count($fchildren);
         $i = 1;
         foreach ($fchildren as $fchil) {
             if ($i == 1) {
                 echo '<td><img width="10px" height="3px" align="top"';
             } else {
                 echo '<td><img width="10px" height="3px"';
             }
             if (I18N::direction() === 'ltr') {
                 echo ' style="padding-right: 2px;"';
             } else {
                 echo ' style="padding-left: 2px;"';
             }
             echo ' src="', Theme::theme()->parameter('image-hline'), '" alt=""></td><td>';
             FunctionsPrint::printPedigreePerson($fchil, $show_full);
             echo '</td></tr>';
             if ($i < $ctkids) {
                 echo '<tr>';
                 $i++;
             }
         }
         echo '</table>';
     } else {
         // If there is known that there are no children (as opposed to no known children)
         if (preg_match('/\\n1 NCHI (\\d+)/', $family->getGedcom(), $match) && $match[1] == 0) {
             echo ' <i class="icon-childless" title="', I18N::translate('This family remained childless'), '"></i>';
         }
     }
     echo '</td>';
 }
开发者ID:pal-saugstad,项目名称:webtrees,代码行数:53,代码来源:FunctionsCharts.php

示例4: getLatestRecord

 /**
  * Get the current view of a record, allowing for pending changes
  *
  * @param string $xref
  * @param string $type
  *
  * @return string
  */
 public static function getLatestRecord($xref, $type)
 {
     global $WT_TREE;
     switch ($type) {
         case 'INDI':
             return Individual::getInstance($xref, $WT_TREE)->getGedcom();
         case 'FAM':
             return Family::getInstance($xref, $WT_TREE)->getGedcom();
         case 'SOUR':
             return Source::getInstance($xref, $WT_TREE)->getGedcom();
         case 'REPO':
             return Repository::getInstance($xref, $WT_TREE)->getGedcom();
         case 'OBJE':
             return Media::getInstance($xref, $WT_TREE)->getGedcom();
         case 'NOTE':
             return Note::getInstance($xref, $WT_TREE)->getGedcom();
         default:
             return GedcomRecord::getInstance($xref, $WT_TREE)->getGedcom();
     }
 }
开发者ID:tunandras,项目名称:webtrees,代码行数:28,代码来源:BatchUpdateModule.php

示例5: oldStyleRelationshipPath

 /**
  * Convert a path (list of XREFs) to an "old-style" string of relationships.
  *
  * Return an empty array, if privacy rules prevent us viewing any node.
  *
  * @param GedcomRecord[] $path Alternately Individual / Family
  *
  * @return string[]
  */
 public function oldStyleRelationshipPath(array $path)
 {
     global $WT_TREE;
     $spouse_codes = array('M' => 'hus', 'F' => 'wif', 'U' => 'spo');
     $parent_codes = array('M' => 'fat', 'F' => 'mot', 'U' => 'par');
     $child_codes = array('M' => 'son', 'F' => 'dau', 'U' => 'chi');
     $sibling_codes = array('M' => 'bro', 'F' => 'sis', 'U' => 'sib');
     $relationships = array();
     for ($i = 1; $i < count($path); $i += 2) {
         $family = Family::getInstance($path[$i], $WT_TREE);
         $prev = Individual::getInstance($path[$i - 1], $WT_TREE);
         $next = Individual::getInstance($path[$i + 1], $WT_TREE);
         if (preg_match('/\\n\\d (HUSB|WIFE|CHIL) @' . $prev->getXref() . '@/', $family->getGedcom(), $match)) {
             $rel1 = $match[1];
         } else {
             return array();
         }
         if (preg_match('/\\n\\d (HUSB|WIFE|CHIL) @' . $next->getXref() . '@/', $family->getGedcom(), $match)) {
             $rel2 = $match[1];
         } else {
             return array();
         }
         if (($rel1 === 'HUSB' || $rel1 === 'WIFE') && ($rel2 === 'HUSB' || $rel2 === 'WIFE')) {
             $relationships[$i] = $spouse_codes[$next->getSex()];
         } elseif (($rel1 === 'HUSB' || $rel1 === 'WIFE') && $rel2 === 'CHIL') {
             $relationships[$i] = $child_codes[$next->getSex()];
         } elseif ($rel1 === 'CHIL' && ($rel2 === 'HUSB' || $rel2 === 'WIFE')) {
             $relationships[$i] = $parent_codes[$next->getSex()];
         } elseif ($rel1 === 'CHIL' && $rel2 === 'CHIL') {
             $relationships[$i] = $sibling_codes[$next->getSex()];
         }
     }
     return $relationships;
 }
开发者ID:tunandras,项目名称:webtrees,代码行数:43,代码来源:RelationshipController.php

示例6: topTenGrandFamilyQuery

 /**
  * Find the couple with the most grandchildren.
  *
  * @param string   $type
  * @param string[] $params
  *
  * @return string
  */
 private function topTenGrandFamilyQuery($type = 'list', $params = array())
 {
     if (isset($params[0])) {
         $total = (int) $params[0];
     } else {
         $total = 10;
     }
     $rows = $this->runSql("SELECT SQL_CACHE COUNT(*) AS tot, f_id AS id" . " FROM `##families`" . " JOIN `##link` AS children ON children.l_file = {$this->tree->getTreeId()}" . " JOIN `##link` AS mchildren ON mchildren.l_file = {$this->tree->getTreeId()}" . " JOIN `##link` AS gchildren ON gchildren.l_file = {$this->tree->getTreeId()}" . " WHERE" . " f_file={$this->tree->getTreeId()} AND" . " children.l_from=f_id AND" . " children.l_type='CHIL' AND" . " children.l_to=mchildren.l_from AND" . " mchildren.l_type='FAMS' AND" . " mchildren.l_to=gchildren.l_from AND" . " gchildren.l_type='CHIL'" . " GROUP BY id" . " ORDER BY tot DESC" . " LIMIT " . $total);
     if (!isset($rows[0])) {
         return '';
     }
     $top10 = array();
     foreach ($rows as $row) {
         $family = Family::getInstance($row['id'], $this->tree);
         if ($family->canShow()) {
             if ($type === 'list') {
                 $top10[] = '<li><a href="' . $family->getHtmlUrl() . '">' . $family->getFullName() . '</a> - ' . I18N::plural('%s grandchild', '%s grandchildren', $row['tot'], I18N::number($row['tot']));
             } else {
                 $top10[] = '<a href="' . $family->getHtmlUrl() . '">' . $family->getFullName() . '</a> - ' . I18N::plural('%s grandchild', '%s grandchildren', $row['tot'], I18N::number($row['tot']));
             }
         }
     }
     if ($type === 'list') {
         $top10 = implode('', $top10);
     } else {
         $top10 = implode(';&nbsp; ', $top10);
     }
     if (I18N::direction() === 'rtl') {
         $top10 = str_replace(array('[', ']', '(', ')', '+'), array('&rlm;[', '&rlm;]', '&rlm;(', '&rlm;)', '&rlm;+'), $top10);
     }
     if ($type === 'list') {
         return '<ul>' . $top10 . '</ul>';
     }
     return $top10;
 }
开发者ID:AlexSnet,项目名称:webtrees,代码行数:43,代码来源:Stats.php

示例7: exportGedcom

 /**
  * Export the database in GEDCOM format
  *
  * @param Tree $tree Which tree to export
  * @param resource $gedout Handle to a writable stream
  * @param string[] $exportOptions Export options are as follows:
  *                                'privatize':    which Privacy rules apply? (none, visitor, user, manager)
  *                                'toANSI':       should the output be produced in ISO-8859-1 instead of UTF-8? (yes, no)
  *                                'path':         what constant should prefix all media file paths? (eg: media/  or c:\my pictures\my family
  *                                'slashes':      what folder separators apply to media file paths? (forward, backward)
  */
 public static function exportGedcom(Tree $tree, $gedout, $exportOptions)
 {
     switch ($exportOptions['privatize']) {
         case 'gedadmin':
             $access_level = Auth::PRIV_NONE;
             break;
         case 'user':
             $access_level = Auth::PRIV_USER;
             break;
         case 'visitor':
             $access_level = Auth::PRIV_PRIVATE;
             break;
         case 'none':
             $access_level = Auth::PRIV_HIDE;
             break;
     }
     $head = self::gedcomHeader($tree);
     if ($exportOptions['toANSI'] == 'yes') {
         $head = str_replace('UTF-8', 'ANSI', $head);
         $head = utf8_decode($head);
     }
     $head = self::reformatRecord($head);
     fwrite($gedout, $head);
     // Buffer the output. Lots of small fwrite() calls can be very slow when writing large gedcoms.
     $buffer = '';
     // Generate the OBJE/SOUR/REPO/NOTE records first, as their privacy calcualations involve
     // database queries, and we wish to avoid large gaps between queries due to MySQL connection timeouts.
     $tmp_gedcom = '';
     $rows = Database::prepare("SELECT m_id AS xref, m_gedcom AS gedcom" . " FROM `##media` WHERE m_file = :tree_id ORDER BY m_id")->execute(array('tree_id' => $tree->getTreeId()))->fetchAll();
     foreach ($rows as $row) {
         $rec = Media::getInstance($row->xref, $tree, $row->gedcom)->privatizeGedcom($access_level);
         $rec = self::convertMediaPath($rec, $exportOptions['path']);
         if ($exportOptions['toANSI'] === 'yes') {
             $rec = utf8_decode($rec);
         }
         $tmp_gedcom .= self::reformatRecord($rec);
     }
     $rows = Database::prepare("SELECT s_id AS xref, s_file AS gedcom_id, s_gedcom AS gedcom" . " FROM `##sources` WHERE s_file = :tree_id ORDER BY s_id")->execute(array('tree_id' => $tree->getTreeId()))->fetchAll();
     foreach ($rows as $row) {
         $rec = Source::getInstance($row->xref, $tree, $row->gedcom)->privatizeGedcom($access_level);
         if ($exportOptions['toANSI'] === 'yes') {
             $rec = utf8_decode($rec);
         }
         $tmp_gedcom .= self::reformatRecord($rec);
     }
     $rows = Database::prepare("SELECT o_type AS type, o_id AS xref, o_gedcom AS gedcom" . " FROM `##other` WHERE o_file = :tree_id AND o_type NOT IN ('HEAD', 'TRLR') ORDER BY o_id")->execute(array('tree_id' => $tree->getTreeId()))->fetchAll();
     foreach ($rows as $row) {
         switch ($row->type) {
             case 'NOTE':
                 $record = Note::getInstance($row->xref, $tree, $row->gedcom);
                 break;
             case 'REPO':
                 $record = Repository::getInstance($row->xref, $tree, $row->gedcom);
                 break;
             default:
                 $record = GedcomRecord::getInstance($row->xref, $tree, $row->gedcom);
                 break;
         }
         $rec = $record->privatizeGedcom($access_level);
         if ($exportOptions['toANSI'] === 'yes') {
             $rec = utf8_decode($rec);
         }
         $tmp_gedcom .= self::reformatRecord($rec);
     }
     $rows = Database::prepare("SELECT i_id AS xref, i_gedcom AS gedcom" . " FROM `##individuals` WHERE i_file = :tree_id ORDER BY i_id")->execute(array('tree_id' => $tree->getTreeId()))->fetchAll();
     foreach ($rows as $row) {
         $rec = Individual::getInstance($row->xref, $tree, $row->gedcom)->privatizeGedcom($access_level);
         if ($exportOptions['toANSI'] === 'yes') {
             $rec = utf8_decode($rec);
         }
         $buffer .= self::reformatRecord($rec);
         if (strlen($buffer) > 65536) {
             fwrite($gedout, $buffer);
             $buffer = '';
         }
     }
     $rows = Database::prepare("SELECT f_id AS xref, f_gedcom AS gedcom" . " FROM `##families` WHERE f_file = :tree_id ORDER BY f_id")->execute(array('tree_id' => $tree->getTreeId()))->fetchAll();
     foreach ($rows as $row) {
         $rec = Family::getInstance($row->xref, $tree, $row->gedcom)->privatizeGedcom($access_level);
         if ($exportOptions['toANSI'] === 'yes') {
             $rec = utf8_decode($rec);
         }
         $buffer .= self::reformatRecord($rec);
         if (strlen($buffer) > 65536) {
             fwrite($gedout, $buffer);
             $buffer = '';
         }
     }
     fwrite($gedout, $buffer);
//.........这里部分代码省略.........
开发者ID:pal-saugstad,项目名称:webtrees,代码行数:101,代码来源:FunctionsExport.php

示例8: renderFamSosaListIndi


//.........这里部分代码省略.........
						/* 11-SURN,GIVN */ { type: "unicode", visible: false},
						/* 12-Wife Age  */ { dataSort: 13, class: "center"},
						/* 13-AGE       */ { type: "num", visible: false},
						/* 14-Marr Date */ { dataSort: 15, class: "center"},
						/* 15-MARR:DATE */ { visible: false},
						/* 16-Marr Plac */ { type: "unicode", class: "center"},
						/* 17-Marr Sour */ { dataSort : 18, class: "center", visible: ' . (ModuleManager::getInstance()->isOperational(Constants::MODULE_MAJ_ISSOURCED_NAME) ? 'true' : 'false') . ' },
						/* 18-Sort Sour */ { visible: false},
						/* 19-Children  */ { dataSort: 20, class: "center"},
						/* 20-NCHI      */ { type: "num", visible: false},
						/* 21-MARR      */ { visible: false},
						/* 22-DEAT      */ { visible: false},
						/* 23-TREE      */ { visible: false}
					],
					sorting: [[0, "asc"]],
					displayLength: 16,
					pagingType: "full_numbers"
			   });
					
				jQuery("#' . $table_id . '")
				/* Hide/show parents */
				.on("click", ".btn-toggle-parents", function() {
					jQuery(this).toggleClass("ui-state-active");
					jQuery(".parents", jQuery(this).closest("table").DataTable().rows().nodes()).slideToggle();
				})
				/* Hide/show statistics */
				.on("click",  ".btn-toggle-statistics", function() {
					jQuery(this).toggleClass("ui-state-active");
					jQuery("#fam_list_table-charts_' . $table_id . '").slideToggle();
				})
				/* Filter buttons in table header */
				.on("click", "button[data-filter-column]", function() {
					var btn = $(this);
					// De-activate the other buttons in this button group
					btn.siblings().removeClass("ui-state-active");
					// Apply (or clear) this filter
					var col = jQuery("#' . $table_id . '").DataTable().column(btn.data("filter-column"));
					if (btn.hasClass("ui-state-active")) {
						btn.removeClass("ui-state-active");
						col.search("").draw();
					} else {
						btn.addClass("ui-state-active");
						col.search(btn.data("filter-value")).draw();
					}
				});					
				
				jQuery("#sosa-fam-list").css("visibility", "visible");
				
				jQuery("#btn-toggle-statistics-' . $table_id . '").click();
           ');
            $stats = new Stats($WT_TREE);
            $max_age = max($stats->oldestMarriageMaleAge(), $stats->oldestMarriageFemaleAge()) + 1;
            //-- init chart data
            $marr_by_age = array();
            for ($age = 0; $age <= $max_age; $age++) {
                $marr_by_age[$age] = '';
            }
            $birt_by_decade = array();
            $marr_by_decade = array();
            for ($year = 1550; $year < 2030; $year += 10) {
                $birt_by_decade[$year] = '';
                $marr_by_decade[$year] = '';
            }
            foreach ($listFamSosa as $sosa => $fid) {
                $sfamily = Family::getInstance($fid, $WT_TREE);
                if (!$sfamily || !$sfamily->canShow()) {
                    unset($sfamily[$sosa]);
                    continue;
                }
                $mdate = $sfamily->getMarriageDate();
                if (($husb = $sfamily->getHusband()) && ($hdate = $husb->getBirthDate()) && $hdate->isOK() && $mdate->isOK()) {
                    if (FunctionsPrint::isDateWithinChartsRange($hdate)) {
                        $birt_by_decade[(int) ($hdate->gregorianYear() / 10) * 10] .= $husb->getSex();
                    }
                    $hage = Date::getAge($hdate, $mdate, 0);
                    if ($hage >= 0 && $hage <= $max_age) {
                        $marr_by_age[$hage] .= $husb->getSex();
                    }
                }
                if (($wife = $sfamily->getWife()) && ($wdate = $wife->getBirthDate()) && $wdate->isOK() && $mdate->isOK()) {
                    if (FunctionsPrint::isDateWithinChartsRange($wdate)) {
                        $birt_by_decade[(int) ($wdate->gregorianYear() / 10) * 10] .= $wife->getSex();
                    }
                    $wage = Date::getAge($wdate, $mdate, 0);
                    if ($wage >= 0 && $wage <= $max_age) {
                        $marr_by_age[$wage] .= $wife->getSex();
                    }
                }
                if ($mdate->isOK() && FunctionsPrint::isDateWithinChartsRange($mdate) && $husb && $wife) {
                    $marr_by_decade[(int) ($mdate->gregorianYear() / 10) * 10] .= $husb->getSex() . $wife->getSex();
                }
                $listFamSosa[$sosa] = $sfamily;
            }
            $this->view_bag->set('sosa_list', $listFamSosa);
            $this->view_bag->set('chart_births', FunctionsPrintLists::chartByDecade($birt_by_decade, I18N::translate('Decade of birth')));
            $this->view_bag->set('chart_marriages', FunctionsPrintLists::chartByDecade($marr_by_decade, I18N::translate('Decade of marriage')));
            $this->view_bag->set('chart_ages', FunctionsPrintLists::chartByAge($marr_by_age, I18N::translate('Age in year of marriage')));
        }
        ViewFactory::make('SosaListFam', $this, $controller, $this->view_bag)->render();
    }
开发者ID:jon48,项目名称:webtrees-lib,代码行数:101,代码来源:SosaListController.php

示例9: createPrivateGedcomRecord

 /**
  * Generate a private version of this record
  *
  * @param int $access_level
  *
  * @return string
  */
 protected function createPrivateGedcomRecord($access_level)
 {
     $SHOW_PRIVATE_RELATIONSHIPS = $this->tree->getPreference('SHOW_PRIVATE_RELATIONSHIPS');
     $rec = '0 @' . $this->xref . '@ INDI';
     if ($this->tree->getPreference('SHOW_LIVING_NAMES') >= $access_level) {
         // Show all the NAME tags, including subtags
         foreach ($this->getFacts('NAME') as $fact) {
             $rec .= "\n" . $fact->getGedcom();
         }
     }
     // Just show the 1 FAMC/FAMS tag, not any subtags, which may contain private data
     preg_match_all('/\\n1 (?:FAMC|FAMS) @(' . WT_REGEX_XREF . ')@/', $this->gedcom, $matches, PREG_SET_ORDER);
     foreach ($matches as $match) {
         $rela = Family::getInstance($match[1], $this->tree);
         if ($rela && ($SHOW_PRIVATE_RELATIONSHIPS || $rela->canShow($access_level))) {
             $rec .= $match[0];
         }
     }
     // Don’t privatize sex.
     if (preg_match('/\\n1 SEX [MFU]/', $this->gedcom, $match)) {
         $rec .= $match[0];
     }
     return $rec;
 }
开发者ID:bmhm,项目名称:webtrees,代码行数:31,代码来源:Individual.php

示例10:

     if ($linktoid == "") {
         echo '<input class="pedigree_form" type="text" name="linktoid" id="linktopid" size="3" value="', $linktoid, '"> ';
         echo FunctionsPrint::printFindIndividualLink('linktopid');
     } else {
         $record = Individual::getInstance($linktoid, $WT_TREE);
         echo $record->formatList('span', false, $record->getFullName());
     }
 }
 if ($linkto == "family") {
     echo I18N::translate('Family'), '</td>';
     echo '<td class="optionbox wrap">';
     if ($linktoid == "") {
         echo '<input class="pedigree_form" type="text" name="linktoid" id="linktofamid" size="3" value="', $linktoid, '"> ';
         echo FunctionsPrint::printFindFamilyLink('linktofamid');
     } else {
         $record = Family::getInstance($linktoid, $WT_TREE);
         echo $record->formatList('span', false, $record->getFullName());
     }
 }
 if ($linkto == "source") {
     echo I18N::translate('Source'), "</td>";
     echo '<td  class="optionbox wrap">';
     if ($linktoid == "") {
         echo '<input class="pedigree_form" type="text" name="linktoid" id="linktosid" size="3" value="', $linktoid, '"> ';
         echo FunctionsPrint::printFindSourceLink('linktosid');
     } else {
         $record = Source::getInstance($linktoid, $WT_TREE);
         echo $record->formatList('span', false, $record->getFullName());
     }
 }
 if ($linkto == "repository") {
开发者ID:pal-saugstad,项目名称:webtrees,代码行数:31,代码来源:inverselink.php

示例11: listStartHandler

 /**
  * XML <List>
  *
  * @param array $attrs an array of key value pairs for the attributes
  */
 private function listStartHandler($attrs)
 {
     global $WT_TREE;
     $this->process_repeats++;
     if ($this->process_repeats > 1) {
         return;
     }
     $match = array();
     if (isset($attrs['sortby'])) {
         $sortby = $attrs['sortby'];
         if (preg_match("/\\\$(\\w+)/", $sortby, $match)) {
             $sortby = $this->vars[$match[1]]['id'];
             $sortby = trim($sortby);
         }
     } else {
         $sortby = "NAME";
     }
     if (isset($attrs['list'])) {
         $listname = $attrs['list'];
     } else {
         $listname = "individual";
     }
     // Some filters/sorts can be applied using SQL, while others require PHP
     switch ($listname) {
         case "pending":
             $rows = Database::prepare("SELECT xref, CASE new_gedcom WHEN '' THEN old_gedcom ELSE new_gedcom END AS gedcom" . " FROM `##change`" . " WHERE (xref, change_id) IN (" . "  SELECT xref, MAX(change_id)" . "  FROM `##change`" . "  WHERE status = 'pending' AND gedcom_id = :tree_id" . "  GROUP BY xref" . " )")->execute(array('tree_id' => $WT_TREE->getTreeId()))->fetchAll();
             $this->list = array();
             foreach ($rows as $row) {
                 $this->list[] = GedcomRecord::getInstance($row->xref, $WT_TREE, $row->gedcom);
             }
             break;
         case 'individual':
             $sql_select = "SELECT i_id AS xref, i_gedcom AS gedcom FROM `##individuals` ";
             $sql_join = "";
             $sql_where = " WHERE i_file = :tree_id";
             $sql_order_by = "";
             $sql_params = array('tree_id' => $WT_TREE->getTreeId());
             foreach ($attrs as $attr => $value) {
                 if (strpos($attr, 'filter') === 0 && $value) {
                     $value = $this->substituteVars($value, false);
                     // Convert the various filters into SQL
                     if (preg_match('/^(\\w+):DATE (LTE|GTE) (.+)$/', $value, $match)) {
                         $sql_join .= " JOIN `##dates` AS {$attr} ON ({$attr}.d_file=i_file AND {$attr}.d_gid=i_id)";
                         $sql_where .= " AND {$attr}.d_fact = :{$attr}fact";
                         $sql_params[$attr . 'fact'] = $match[1];
                         $date = new Date($match[3]);
                         if ($match[2] == "LTE") {
                             $sql_where .= " AND {$attr}.d_julianday2 <= :{$attr}date";
                             $sql_params[$attr . 'date'] = $date->maximumJulianDay();
                         } else {
                             $sql_where .= " AND {$attr}.d_julianday1 >= :{$attr}date";
                             $sql_params[$attr . 'date'] = $date->minimumJulianDay();
                         }
                         if ($sortby == $match[1]) {
                             $sortby = "";
                             $sql_order_by .= ($sql_order_by ? ", " : " ORDER BY ") . "{$attr}.d_julianday1";
                         }
                         unset($attrs[$attr]);
                         // This filter has been fully processed
                     } elseif (preg_match('/^NAME CONTAINS (.*)$/', $value, $match)) {
                         // Do nothing, unless you have to
                         if ($match[1] != '' || $sortby == 'NAME') {
                             $sql_join .= " JOIN `##name` AS {$attr} ON (n_file=i_file AND n_id=i_id)";
                             // Search the DB only if there is any name supplied
                             if ($match[1] != "") {
                                 $names = explode(" ", $match[1]);
                                 foreach ($names as $n => $name) {
                                     $sql_where .= " AND {$attr}.n_full LIKE CONCAT('%', :{$attr}name{$n}, '%')";
                                     $sql_params[$attr . 'name' . $n] = $name;
                                 }
                             }
                             // Let the DB do the name sorting even when no name was entered
                             if ($sortby == "NAME") {
                                 $sortby = "";
                                 $sql_order_by .= ($sql_order_by ? ", " : " ORDER BY ") . "{$attr}.n_sort";
                             }
                         }
                         unset($attrs[$attr]);
                         // This filter has been fully processed
                     } elseif (preg_match('/^REGEXP \\/(.+)\\//', $value, $match)) {
                         $sql_where .= " AND i_gedcom REGEXP :{$attr}gedcom";
                         // PDO helpfully escapes backslashes for us, preventing us from matching "\n1 FACT"
                         $sql_params[$attr . 'gedcom'] = str_replace('\\n', "\n", $match[1]);
                         unset($attrs[$attr]);
                         // This filter has been fully processed
                     } elseif (preg_match('/^(?:\\w+):PLAC CONTAINS (.+)$/', $value, $match)) {
                         $sql_join .= " JOIN `##places` AS {$attr}a ON ({$attr}a.p_file = i_file)";
                         $sql_join .= " JOIN `##placelinks` AS {$attr}b ON ({$attr}a.p_file = {$attr}b.pl_file AND {$attr}b.pl_p_id = {$attr}a.p_id AND {$attr}b.pl_gid = i_id)";
                         $sql_where .= " AND {$attr}a.p_place LIKE CONCAT('%', :{$attr}place, '%')";
                         $sql_params[$attr . 'place'] = $match[1];
                         // Don't unset this filter. This is just initial filtering
                     } elseif (preg_match('/^(\\w*):*(\\w*) CONTAINS (.+)$/', $value, $match)) {
                         $sql_where .= " AND i_gedcom LIKE CONCAT('%', :{$attr}contains1, '%', :{$attr}contains2, '%', :{$attr}contains3, '%')";
                         $sql_params[$attr . 'contains1'] = $match[1];
                         $sql_params[$attr . 'contains2'] = $match[2];
//.........这里部分代码省略.........
开发者ID:tronsmit,项目名称:webtrees,代码行数:101,代码来源:ReportParserGenerate.php

示例12: addSimpleTag


//.........这里部分代码省略.........
             case 'NAME':
                 if ($upperlevel !== 'REPO' && $upperlevel !== 'UNKNOWN') {
                     echo FunctionsPrint::helpLink($fact);
                 }
                 break;
             case 'DATE':
             case 'PLAC':
             case 'RESN':
             case 'ROMN':
             case 'SURN':
             case '_HEB':
                 echo FunctionsPrint::helpLink($fact);
                 break;
         }
     }
     // tag level
     if ($level > 0) {
         if ($fact === 'TEXT' && $level > 1) {
             echo '<input type="hidden" name="glevels[]" value="', $level - 1, '">';
             echo '<input type="hidden" name="islink[]" value="0">';
             echo '<input type="hidden" name="tag[]" value="DATA">';
             // leave data text[] value empty because the following TEXT line will cause the DATA to be added
             echo '<input type="hidden" name="text[]" value="">';
         }
         echo '<input type="hidden" name="glevels[]" value="', $level, '">';
         echo '<input type="hidden" name="islink[]" value="', $islink, '">';
         echo '<input type="hidden" name="tag[]" value="', $fact, '">';
     }
     echo '</td>';
     // value
     echo '<td class="optionbox wrap">';
     // retrieve linked NOTE
     if ($fact === 'NOTE' && $islink) {
         $note1 = Note::getInstance($value, $WT_TREE);
         if ($note1) {
             $noterec = $note1->getGedcom();
             preg_match('/' . $value . '/i', $noterec, $notematch);
             $value = $notematch[0];
         }
     }
     // Show names for spouses in MARR/HUSB/AGE and MARR/WIFE/AGE
     if ($fact === 'HUSB' || $fact === 'WIFE') {
         $family = Family::getInstance($xref, $WT_TREE);
         if ($family) {
             $spouse_link = $family->getFirstFact($fact);
             if ($spouse_link) {
                 $spouse = $spouse_link->getTarget();
                 if ($spouse) {
                     echo $spouse->getFullName();
                 }
             }
         }
     }
     if (in_array($fact, Config::emptyFacts()) && ($value === '' || $value === 'Y' || $value === 'y')) {
         echo '<input type="hidden" id="', $element_id, '" name="', $element_name, '" value="', $value, '">';
         if ($level <= 1) {
             echo '<input type="checkbox" ';
             if ($value) {
                 echo 'checked';
             }
             echo ' onclick="document.getElementById(\'' . $element_id . '\').value = (this.checked) ? \'Y\' : \'\';">';
             echo I18N::translate('yes');
         }
         if ($fact === 'CENS' && $value === 'Y') {
             echo self::censusDateSelector(WT_LOCALE, $xref);
             if (Module::getModuleByName('GEDFact_assistant') && GedcomRecord::getInstance($xref, $WT_TREE) instanceof Individual) {
开发者ID:josefpavlik,项目名称:webtrees,代码行数:67,代码来源:FunctionsEdit.php

示例13: __construct

 /**
  * Create the clippings controller
  */
 public function __construct()
 {
     global $WT_TREE;
     // Our cart is an array of items in the session
     $this->cart = Session::get('cart', array());
     if (!array_key_exists($WT_TREE->getTreeId(), $this->cart)) {
         $this->cart[$WT_TREE->getTreeId()] = array();
     }
     $this->action = Filter::get('action');
     $this->id = Filter::get('id');
     $convert = Filter::get('convert', 'yes|no', 'no');
     $this->Zip = Filter::get('Zip');
     $this->IncludeMedia = Filter::get('IncludeMedia');
     $this->conv_path = Filter::get('conv_path');
     $this->privatize_export = Filter::get('privatize_export', 'none|visitor|user|gedadmin', 'visitor');
     $this->level1 = Filter::getInteger('level1');
     $this->level2 = Filter::getInteger('level2');
     $this->level3 = Filter::getInteger('level3');
     $others = Filter::get('others');
     $this->type = Filter::get('type');
     if (($this->privatize_export === 'none' || $this->privatize_export === 'none') && !Auth::isManager($WT_TREE)) {
         $this->privatize_export = 'visitor';
     }
     if ($this->privatize_export === 'user' && !Auth::isMember($WT_TREE)) {
         $this->privatize_export = 'visitor';
     }
     if ($this->action === 'add') {
         if (empty($this->type) && !empty($this->id)) {
             $obj = GedcomRecord::getInstance($this->id, $WT_TREE);
             if ($obj) {
                 $this->type = $obj::RECORD_TYPE;
             } else {
                 $this->type = '';
                 $this->id = '';
                 $this->action = '';
             }
         } elseif (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') {
         $obj = GedcomRecord::getInstance($this->id, $WT_TREE);
         $this->addClipping($obj);
         if ($this->type === 'SOUR') {
             if ($others === 'linked') {
                 foreach ($obj->linkedIndividuals('SOUR') as $indi) {
                     $this->addClipping($indi);
                 }
                 foreach ($obj->linkedFamilies('SOUR') as $fam) {
                     $this->addClipping($fam);
                 }
             }
         }
         if ($this->type === 'FAM') {
             if ($others === 'parents') {
                 $this->addClipping($obj->getHusband());
                 $this->addClipping($obj->getWife());
             } elseif ($others === "members") {
                 $this->addFamilyMembers(Family::getInstance($this->id, $WT_TREE));
             } elseif ($others === "descendants") {
                 $this->addFamilyDescendancy(Family::getInstance($this->id, $WT_TREE));
             }
         } elseif ($this->type === 'INDI') {
             if ($others === 'parents') {
                 foreach (Individual::getInstance($this->id, $WT_TREE)->getChildFamilies() as $family) {
                     $this->addFamilyMembers($family);
                 }
             } elseif ($others === 'ancestors') {
                 $this->addAncestorsToCart(Individual::getInstance($this->id, $WT_TREE), $this->level1);
             } elseif ($others === 'ancestorsfamilies') {
                 $this->addAncestorsToCartFamilies(Individual::getInstance($this->id, $WT_TREE), $this->level2);
             } elseif ($others === 'members') {
                 foreach (Individual::getInstance($this->id, $WT_TREE)->getSpouseFamilies() as $family) {
                     $this->addFamilyMembers($family);
                 }
             } elseif ($others === 'descendants') {
                 foreach (Individual::getInstance($this->id, $WT_TREE)->getSpouseFamilies() as $family) {
                     $this->addClipping($family);
                     $this->addFamilyDescendancy($family, $this->level3);
                 }
             }
             uksort($this->cart[$WT_TREE->getTreeId()], array($this, 'compareClippings'));
         }
     } elseif ($this->action === 'remove') {
         unset($this->cart[$WT_TREE->getTreeId()][$this->id]);
     } elseif ($this->action === 'empty') {
         $this->cart[$WT_TREE->getTreeId()] = array();
     } elseif ($this->action === 'download') {
         $media = array();
         $mediacount = 0;
         $filetext = FunctionsExport::gedcomHeader($WT_TREE);
         // Include SUBM/SUBN records, if they exist
         $subn = Database::prepare("SELECT o_gedcom FROM `##other` WHERE o_type=? AND o_file=?")->execute(array('SUBN', $WT_TREE->getTreeId()))->fetchOne();
         if ($subn) {
//.........这里部分代码省略.........
开发者ID:tunandras,项目名称:webtrees,代码行数:101,代码来源:ClippingsCartController.php

示例14: linkedFamilies

 /**
  * {@inhericDoc}
  * @see \Fisharebest\Webtrees\GedcomRecord::linkedFamilies()
  */
 public function linkedFamilies($link = '_ACT')
 {
     $rows = Database::prepare('SELECT f_id AS xref, f_gedcom AS gedcom' . ' FROM `##families`' . ' WHERE f_file= :gedcom_id AND f_gedcom LIKE :gedcom')->execute(array('gedcom_id' => $this->tree->getTreeId(), 'gedcom' => '%_ACT ' . $this->getFilename() . '%'))->fetchAll();
     $list = array();
     foreach ($rows as $row) {
         $record = Family::getInstance($row->xref, $this->tree, $row->gedcom);
         if ($record->canShowName()) {
             $list[] = $record;
         }
     }
     return $list;
 }
开发者ID:jon48,项目名称:webtrees-lib,代码行数:16,代码来源:Certificate.php

示例15: getCalendarEvents

 /**
  * Get a list of events which occured during a given date range.
  *
  * @param int $jd1 the start range of julian day
  * @param int $jd2 the end range of julian day
  * @param string $facts restrict the search to just these facts or leave blank for all
  * @param Tree $tree the tree to search
  *
  * @return Fact[]
  */
 public static function getCalendarEvents($jd1, $jd2, $facts, Tree $tree)
 {
     // If no facts specified, get all except these
     $skipfacts = "CHAN,BAPL,SLGC,SLGS,ENDL,CENS,RESI,NOTE,ADDR,OBJE,SOUR,PAGE,DATA,TEXT";
     if ($facts != '_TODO') {
         $skipfacts .= ',_TODO';
     }
     $found_facts = array();
     // Events that start or end during the period
     $where = "WHERE (d_julianday1>={$jd1} AND d_julianday1<={$jd2} OR d_julianday2>={$jd1} AND d_julianday2<={$jd2})";
     // Restrict to certain types of fact
     if (empty($facts)) {
         $excl_facts = "'" . preg_replace('/\\W+/', "','", $skipfacts) . "'";
         $where .= " AND d_fact NOT IN ({$excl_facts})";
     } else {
         $incl_facts = "'" . preg_replace('/\\W+/', "','", $facts) . "'";
         $where .= " AND d_fact IN ({$incl_facts})";
     }
     // Only get events from the current gedcom
     $where .= " AND d_file=" . $tree->getTreeId();
     // Now fetch these events
     $ind_sql = "SELECT d_gid AS xref, i_gedcom AS gedcom, d_type, d_day, d_month, d_year, d_fact, d_type FROM `##dates`, `##individuals` {$where} AND d_gid=i_id AND d_file=i_file ORDER BY d_julianday1";
     $fam_sql = "SELECT d_gid AS xref, f_gedcom AS gedcom, d_type, d_day, d_month, d_year, d_fact, d_type FROM `##dates`, `##families`    {$where} AND d_gid=f_id AND d_file=f_file ORDER BY d_julianday1";
     foreach (array('INDI' => $ind_sql, 'FAM' => $fam_sql) as $type => $sql) {
         $rows = Database::prepare($sql)->fetchAll();
         foreach ($rows as $row) {
             if ($type === 'INDI') {
                 $record = Individual::getInstance($row->xref, $tree, $row->gedcom);
             } else {
                 $record = Family::getInstance($row->xref, $tree, $row->gedcom);
             }
             $anniv_date = new Date($row->d_type . ' ' . $row->d_day . ' ' . $row->d_month . ' ' . $row->d_year);
             foreach ($record->getFacts() as $fact) {
                 if (($fact->getDate()->minimumDate() == $anniv_date->minimumDate() || $fact->getDate()->maximumDate() == $anniv_date->minimumDate()) && $fact->getTag() === $row->d_fact) {
                     $fact->anniv = 0;
                     $found_facts[] = $fact;
                 }
             }
         }
     }
     return $found_facts;
 }
开发者ID:pal-saugstad,项目名称:webtrees,代码行数:52,代码来源:FunctionsDb.php


注:本文中的Fisharebest\Webtrees\Family::getInstance方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。