예제 #1
0
/**
 * Defined in session.php
 *
 * @global Tree $WT_TREE
 */
global $WT_TREE;
use Fisharebest\Webtrees\Controller\SimpleController;
use Fisharebest\Webtrees\Functions\FunctionsEdit;
use Fisharebest\Webtrees\Functions\FunctionsPrint;
use Fisharebest\Webtrees\GedcomCode\GedcomCodePedi;
define('WT_SCRIPT_NAME', 'edit_interface.php');
require './includes/session.php';
$action = Filter::post('action', null, Filter::get('action'));
$controller = new SimpleController();
$controller->restrictAccess(Auth::isEditor($WT_TREE))->addExternalJavascript(WT_AUTOCOMPLETE_JS_URL)->addInlineJavascript('autocomplete();')->addInlineJavascript('var locale_date_format="' . preg_replace('/[^DMY]/', '', str_replace(array('J', 'F'), array('D', 'M'), I18N::dateFormat())) . '";');
switch ($action) {
    ////////////////////////////////////////////////////////////////////////////////
    case 'editraw':
        $xref = Filter::get('xref', WT_REGEX_XREF);
        $record = GedcomRecord::getInstance($xref, $WT_TREE);
        check_record_access($record);
        $controller->setPageTitle($record->getFullName() . ' - ' . I18N::translate('Edit raw GEDCOM'))->pageHeader()->addInlineJavascript('jQuery("#raw-gedcom-list").sortable({opacity: 0.7, cursor: "move", axis: "y"});');
        ?>
	<div id="edit_interface-page">
		<h4>
			<?php 
        echo $controller->getPageTitle();
        ?>
			<?php 
        echo FunctionsPrint::helpLink('edit_edit_raw');
예제 #2
0
 /**
  * Convert a date to the preferred format and calendar(s) display.
  *
  * @param bool|null   $url               Wrap the date in a link to calendar.php
  * @param string|null $date_format       Override the default date format
  * @param bool|null   $convert_calendars Convert the date into other calendars
  *
  * @return string
  */
 public function display($url = false, $date_format = null, $convert_calendars = true)
 {
     global $WT_TREE;
     $CALENDAR_FORMAT = $WT_TREE->getPreference('CALENDAR_FORMAT');
     if ($date_format === null) {
         $date_format = I18N::dateFormat();
     }
     if ($convert_calendars) {
         $calendar_format = explode('_and_', $CALENDAR_FORMAT);
     } else {
         $calendar_format = array();
     }
     // Two dates with text before, between and after
     $q1 = $this->qual1;
     $d1 = $this->date1->format($date_format, $this->qual1);
     $q2 = $this->qual2;
     if (is_null($this->date2)) {
         $d2 = '';
     } else {
         $d2 = $this->date2->format($date_format, $this->qual2);
     }
     // Con vert to other calendars, if requested
     $conv1 = '';
     $conv2 = '';
     foreach ($calendar_format as $cal_fmt) {
         if ($cal_fmt != 'none') {
             $d1conv = $this->date1->convertToCalendar($cal_fmt);
             if ($d1conv->inValidRange()) {
                 $d1tmp = $d1conv->format($date_format, $this->qual1);
             } else {
                 $d1tmp = '';
             }
             if (is_null($this->date2)) {
                 $d2conv = null;
                 $d2tmp = '';
             } else {
                 $d2conv = $this->date2->convertToCalendar($cal_fmt);
                 if ($d2conv->inValidRange()) {
                     $d2tmp = $d2conv->format($date_format, $this->qual2);
                 } else {
                     $d2tmp = '';
                 }
             }
             // If the date is different from the unconverted date, add it to the date string.
             if ($d1 != $d1tmp && $d1tmp !== '') {
                 if ($url) {
                     if ($CALENDAR_FORMAT !== 'none') {
                         $conv1 .= ' <span dir="' . I18N::direction() . '">(<a href="' . $d1conv->calendarUrl($date_format) . '" rel="nofollow">' . $d1tmp . '</a>)</span>';
                     } else {
                         $conv1 .= ' <span dir="' . I18N::direction() . '"><br><a href="' . $d1conv->calendarUrl($date_format) . '" rel="nofollow">' . $d1tmp . '</a></span>';
                     }
                 } else {
                     $conv1 .= ' <span dir="' . I18N::direction() . '">(' . $d1tmp . ')</span>';
                 }
             }
             if (!is_null($this->date2) && $d2 != $d2tmp && $d1tmp != '') {
                 if ($url) {
                     $conv2 .= ' <span dir="' . I18N::direction() . '">(<a href="' . $d2conv->calendarUrl($date_format) . '" rel="nofollow">' . $d2tmp . '</a>)</span>';
                 } else {
                     $conv2 .= ' <span dir="' . I18N::direction() . '">(' . $d2tmp . ')</span>';
                 }
             }
         }
     }
     // Add URLs, if requested
     if ($url) {
         $d1 = '<a href="' . $this->date1->calendarUrl($date_format) . '" rel="nofollow">' . $d1 . '</a>';
         if (!is_null($this->date2)) {
             $d2 = '<a href="' . $this->date2->calendarUrl($date_format) . '" rel="nofollow">' . $d2 . '</a>';
         }
     }
     // Localise the date
     switch ($q1 . $q2) {
         case '':
             $tmp = $d1 . $conv1;
             break;
         case 'ABT':
             $tmp = I18N::translate('about %s', $d1 . $conv1);
             break;
         case 'CAL':
             $tmp = I18N::translate('calculated %s', $d1 . $conv1);
             break;
         case 'EST':
             $tmp = I18N::translate('estimated %s', $d1 . $conv1);
             break;
         case 'INT':
             $tmp = I18N::translate('interpreted %s (%s)', $d1 . $conv1, $this->text);
             break;
         case 'BEF':
             $tmp = I18N::translate('before %s', $d1 . $conv1);
             break;
         case 'AFT':
             $tmp = I18N::translate('after %s', $d1 . $conv1);
             break;
         case 'FROM':
             $tmp = I18N::translate('from %s', $d1 . $conv1);
             break;
         case 'TO':
             $tmp = I18N::translate('to %s', $d1 . $conv1);
             break;
         case 'BETAND':
             $tmp = I18N::translate('between %s and %s', $d1 . $conv1, $d2 . $conv2);
             break;
         case 'FROMTO':
             $tmp = I18N::translate('from %s to %s', $d1 . $conv1, $d2 . $conv2);
             break;
         default:
             $tmp = I18N::translate('Invalid date');
             break;
             // e.g. BET without AND
     }
     if ($this->text && !$q1) {
         $tmp = I18N::translate('%1$s (%2$s)', $tmp, $this->text);
     }
     if (strip_tags($tmp) === '') {
         return '';
     } else {
         return '<span class="date">' . $tmp . '</span>';
     }
 }
예제 #3
0
파일: Stats.php 프로젝트: AlexSnet/webtrees
 /**
  * Get the newest registered user.
  *
  * @param string   $type
  * @param string[] $params
  *
  * @return string
  */
 private function getLatestUserData($type = 'userid', $params = array())
 {
     static $user_id = null;
     if ($user_id === null) {
         $user = User::findLatestToRegister();
     } else {
         $user = User::find($user_id);
     }
     switch ($type) {
         default:
         case 'userid':
             return $user->getUserId();
         case 'username':
             return Filter::escapeHtml($user->getUserName());
         case 'fullname':
             return $user->getRealNameHtml();
         case 'regdate':
             if (is_array($params) && isset($params[0]) && $params[0] != '') {
                 $datestamp = $params[0];
             } else {
                 $datestamp = I18N::dateFormat();
             }
             return FunctionsDate::timestampToGedcomDate($user->getPreference('reg_timestamp'))->display(false, $datestamp);
         case 'regtime':
             if (is_array($params) && isset($params[0]) && $params[0] != '') {
                 $datestamp = $params[0];
             } else {
                 $datestamp = str_replace('%', '', I18N::timeFormat());
             }
             return date($datestamp, $user->getPreference('reg_timestamp'));
         case 'loggedin':
             if (is_array($params) && isset($params[0]) && $params[0] != '') {
                 $yes = $params[0];
             } else {
                 $yes = I18N::translate('yes');
             }
             if (is_array($params) && isset($params[1]) && $params[1] != '') {
                 $no = $params[1];
             } else {
                 $no = I18N::translate('no');
             }
             return Database::prepare("SELECT SQL_NO_CACHE 1 FROM `##session` WHERE user_id=? LIMIT 1")->execute(array($user->getUserId()))->fetchOne() ? $yes : $no;
     }
 }
예제 #4
0
 /**
  * AdminConfig@jsonTasksList
  */
 public function jsonTasksList()
 {
     global $WT_TREE;
     $controller = new JsonController();
     $controller->restrictAccess(Auth::isAdmin());
     // Generate an AJAX/JSON response for datatables to load a block of rows
     $search = Filter::postArray('search');
     if ($search) {
         $search = $search['value'];
     }
     $start = Filter::postInteger('start');
     $length = Filter::postInteger('length');
     $order = Filter::postArray('order');
     $order_by_name = false;
     foreach ($order as $key => &$value) {
         switch ($value['column']) {
             case 3:
                 $order_by_name = true;
                 unset($order[$key]);
                 break;
             case 4:
                 $value['column'] = 'majat_last_run';
                 break;
             case 4:
                 $value['column'] = 'majat_last_result';
                 break;
             default:
                 unset($order[$key]);
         }
     }
     $list = $this->provider->getFilteredTasksList($search, $order, $start, $length);
     if ($order_by_name) {
         usort($list, function (AbstractTask $a, AbstractTask $b) {
             return I18N::strcasecmp($a->getTitle(), $b->getTitle());
         });
     }
     $recordsFiltered = count($list);
     $recordsTotal = $this->provider->getTasksCount();
     $data = array();
     foreach ($list as $task) {
         $datum = array();
         $datum[0] = '
             <div class="btn-group">
                 <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
                     <i class="fa fa-pencil"></i><span class="caret"></span>
                 </button>
                 <ul class="dropdown-menu" role="menu">
                    <li>
                         <a href="#" onclick="return set_admintask_status(\'' . $task->getName() . '\', ' . ($task->isEnabled() ? 'false' : 'true') . ');">
                             <i class="fa fa-fw ' . ($task->isEnabled() ? 'fa-times' : 'fa-check') . '"></i> ' . ($task->isEnabled() ? I18N::translate('Disable') : I18N::translate('Enable')) . '
                         </a>
                    </li>
                     <li>
                         <a href="module.php?mod=' . $this->module->getName() . '&mod_action=Task@edit&task=' . $task->getName() . '">
                             <i class="fa fa-fw fa-pencil"></i> ' . I18N::translate('Edit') . '
                         </a>
                    </li>
                 </ul>
             </div>';
         $datum[1] = $task->getName();
         $datum[2] = $task->isEnabled() ? '<i class="fa fa-check"></i><span class="sr-only">' . I18N::translate('Enabled') . '</span>' : '<i class="fa fa-times"></i><span class="sr-only">' . I18N::translate('Disabled') . '</span>';
         $datum[3] = $task->getTitle();
         $date_format = str_replace('%', '', I18N::dateFormat()) . ' H:i:s';
         $datum[4] = $task->getLastUpdated()->format($date_format);
         $datum[5] = $task->isLastRunSuccess() ? '<i class="fa fa-check"></i><span class="sr-only">' . I18N::translate('Yes') . '</span>' : '<i class="fa fa-times"></i><span class="sr-only">' . I18N::translate('No') . '</span>';
         $dtF = new \DateTime('@0');
         $dtT = new \DateTime('@' . $task->getFrequency() * 60);
         $datum[6] = $dtF->diff($dtT)->format(I18N::translate('%a d %h h %i m'));
         $datum[7] = $task->getRemainingOccurrences() > 0 ? I18N::number($task->getRemainingOccurrences()) : I18N::translate('Unlimited');
         $datum[8] = $task->isRunning() ? '<i class="fa fa-cog fa-spin fa-fw"></i><span class="sr-only">' . I18N::translate('Running') . '</span>' : '<i class="fa fa-times"></i><span class="sr-only">' . I18N::translate('Not running') . '</span>';
         if ($task->isEnabled() && !$task->isRunning()) {
             $datum[9] = '
 			    <button id="bt_runtask_' . $task->getName() . '" class="btn btn-primary" href="#" onclick="return run_admintask(\'' . $task->getName() . '\')">
 			         <div id="bt_runtasktext_' . $task->getName() . '"><i class="fa fa-cog fa-fw" ></i>' . I18N::translate('Run') . '</div>
 			    </button>';
         } else {
             $datum[9] = '';
         }
         $data[] = $datum;
     }
     $controller->pageHeader();
     $controller->encode(array('draw' => Filter::getInteger('draw'), 'recordsTotal' => $recordsTotal, 'recordsFiltered' => $recordsFiltered, 'data' => $data));
 }