Skip to content

Commit

Permalink
Get page path/title, template/field name, etc (and check page exists …
Browse files Browse the repository at this point in the history
…in data subfield) in Adminer.
  • Loading branch information
adrianbj committed Apr 19, 2024
1 parent 54f0ee2 commit 1fac27c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 9 deletions.
2 changes: 1 addition & 1 deletion TracyDebugger.module.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public static function getModuleInfo() {
'summary' => __('Tracy debugger from Nette with many PW specific custom tools.', __FILE__),
'author' => 'Adrian Jones',
'href' => 'https://processwire.com/talk/forum/58-tracy-debugger/',
'version' => '4.26.18',
'version' => '4.26.19',
'autoload' => 100000, // in PW 3.0.114+ higher numbers are loaded first - we want Tracy first
'singular' => true,
'requires' => 'ProcessWire>=2.7.2, PHP>=5.4.4',
Expand Down
43 changes: 35 additions & 8 deletions panels/Adminer/plugins/AdminerProcessWireLogin.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<?php

use function ProcessWire\wire;

class AdminerProcessWireLogin {

public function __construct($pwAdminUrl, $server = false, $db = false, $name = false, $pass = false) {
Expand Down Expand Up @@ -92,30 +94,55 @@ function databases($flush = true) {
}

public function selectVal(&$val, $link, $field, $original) {
if($_GET['select'] == 'modules' && in_array($field['field'], ['class'])) {
if(!isset($_GET['select']) || in_array($_GET['select'], ['fieldgroups', 'caches'])) {
// intentionally blank
}
elseif($_GET['select'] == 'modules' && in_array($field['field'], ['class'])) {
$val = '<a href="'.$this->pwAdminUrl.'module/edit/?name='.$val.'" target="_parent">'.$val.'</a>';
}
elseif(ctype_digit("$original")) {
if(in_array($_GET['select'], ['fieldgroups', 'modules'])) {
// intentionally blank
}
elseif(($_GET['select'] == 'templates' && in_array($field['field'], ['id'])) || ($_GET['select'] == 'pages' && in_array($field['field'], ['templates_id']))) {
if($_GET['select'] == 'templates' && in_array($field['field'], ['id'])) {
$val = '<a href="'.$this->pwAdminUrl.'setup/template/edit/?id='.$val.'" target="_parent">'.$val.'</a>';
}
elseif($_GET['select'] == 'pages' && in_array($field['field'], ['templates_id'])) {
$name = wire('templates')->get('id='.$val)->get('label|name');
if($name) {
$val = '<a href="'.$this->pwAdminUrl.'setup/template/edit/?id='.$val.'" target="_parent" title="'.$name.'">'.$val.'</a>';
}
}
elseif($_GET['select'] == 'fields' && in_array($field['field'], ['id'])) {
$val = '<a href="'.$this->pwAdminUrl.'setup/field/edit/?id='.$val.'" target="_parent">'.$val.'</a>';
}
elseif(in_array($field['field'], ['field_id', 'fields_id'])) {
$val = '<a href="'.$this->pwAdminUrl.'setup/field/edit/?id='.$val.'" target="_parent">'.$val.'</a>';
$name = wire('fields')->get('id='.$val)->get('label|name');
if($name) {
$val = '<a href="'.$this->pwAdminUrl.'setup/field/edit/?id='.$val.'" target="_parent" title="'.$name.'">'.$val.'</a>';
}
}
elseif($_GET['select'] == 'pages' && in_array($field['field'], ['id'])) {
$val = '<a href="'.$this->pwAdminUrl.'page/edit/?id='.$val.'" target="_parent">'.$val.'</a>';
}
elseif(in_array($field['field'], ['pid', 'pages_id', 'parent_id', 'parents_id', 'source_id', 'data'])) {
$val = '<a href="'.$this->pwAdminUrl.'page/edit/?id='.$val.'" target="_parent">'.$val.'</a>';
$data_is_page = false;
if($field['field'] == 'data') {
$f = wire('fields')->get(str_replace('field_', '', $_GET['select']));
if($f && ($f->type instanceof \ProcessWire\FieldtypePage || $f->type instanceof \ProcessWire\FieldtypePageIDs)) {
$data_is_page = true;
}
}
if($field['field'] != 'data' || ($field['field'] == 'data' && $data_is_page)) {
$label = wire('modules')->isInstalled('PagePaths') ? 'url' : 'title';
$name = wire('pages')->getRaw('id='.$val, $label);

This comment has been minimized.

Copy link
@matjazpotocnik

matjazpotocnik Apr 19, 2024

I think getRaw() was introduced in PW3, and it's not available in PW 2.7.2?

This comment has been minimized.

Copy link
@adrianbj

adrianbj Apr 19, 2024

Author Owner

Thanks @matjazpotocnik - good catch. I've added a check for existence of the getRaw method. I decided to reduce functionality for older PW versions, rather than fallback to get to keep performance higher in this case.

if($name) {
$val = '<a href="'.$this->pwAdminUrl.'page/edit/?id='.$val.'" target="_parent" title="'.$name.'">'.$val.'</a>';
}
}
}
elseif(in_array($field['field'], ['uid', 'created_users_id', 'modified_users_id'])) {
$val = '<a href="'.$this->pwAdminUrl.'access/users/edit/?id='.$val.'" target="_parent">'.$val.'</a>';
$name = wire('pages')->getRaw('id='.$val, 'name');
if($name) {
$val = '<a href="'.$this->pwAdminUrl.'access/users/edit/?id='.$val.'" target="_parent" title="'.$name.'">'.$val.'</a>';
}
}
}
}
Expand Down

0 comments on commit 1fac27c

Please sign in to comment.