$element) { ($node = & $array[$name]) && (1 === count($node) ? $node = array($node) : 1) && $node = & $node[]; $node = $element->count() ? XML2Array($element) : trim($element); } return $array; } function breadcrumbs($zpath, $pathname) { if (!$pathname) { return array(array(null,basename($zpath))); } else { $pathname_adjusted = str_replace($zpath."/", "", $pathname); $parts = explode("/", $pathname_adjusted); $i = count($parts); while ($i) { $search_path = $zpath."/".implode("/", array_slice($parts, 0, $i)); if ($i == count($parts)) { $result[] = array(null, basename($search_path)); } else { $result[] = array(md5($search_path), basename($search_path)); } $i--; } $result[] = array("",basename($zpath)); return array_reverse($result); } } function shortlabel($filename, $max = 40) { $suffix = "(...).".pathinfo($filename)['extension']; if (strlen($filename) > $max) { $return = substr($filename, 0, ($max-strlen($suffix))).$suffix; } else { $return = $filename; } return $return; } function findicon($filename) { $ext = pathinfo($filename)['extension']; if (!$ext) { $good = "icons/directory.png"; } else { $good = "icons/null.png"; } foreach (glob("icons/*.png") as $file) { if (pathinfo($file)['filename'] == $ext) { $good = $file; } } return $good; } ///////////////////////////////////////////////////////////////// $db_file = $_GET['db']; $pid = $_GET['pid']; if ($db_file) { echo "db list"; echo "
"; if (!is_readable($db_file)) { echo "can't read db file"; die; } $dbo = new PDO("sqlite:".$db_file); $dbo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); // Get zpath $zpath = $dbo->query("SELECT zpath FROM _skim")->fetch()['zpath']; // Check for initial view if (!$pid) { $pid = $dbo->query("SELECT pid FROM family WHERE (rowid=2)")->fetch()['pid']; $view = $dbo->query("SELECT * FROM _skim")->fetchAll()[0]; // hide long strings $view['qlmanage'] = "hidden"; $view['disks'] = "hidden"; $view['diskutil'] = "hidden"; } else { $view = $dbo->query("SELECT * FROM files WHERE (pid='".$pid."')")->fetchAll()[0]; } // Breadcrumbs $crumb = breadcrumbs($zpath,$view['Pathname']); foreach ($crumb as $myparts) { if ($myparts[0] === null) { echo $myparts[1]; } else { echo "".$myparts[1]." > "; } } echo "
"; $array = $dbo->query("SELECT children FROM family WHERE (pid='".$pid."')")->fetch()['children']; $children = unserialize($array); if (!$children) { ///////////////////////////////////////////////////////////////// // File view echo ""; echo ""; echo ""; //$row_b['spotlight'] = simplexml_load_string($row_b['spotlight'],LIBXML_NSCLEAN); echo ""; echo "
"; $row_a = $dbo->query("SELECT * FROM files WHERE (pid='".$pid."')")->fetchAll()[0]; $row_b = $dbo->query("SELECT * FROM mdls WHERE (pid='".$pid."')")->fetchAll()[0]; if ($row_a['thumb_filename']) { $width = $row_a['thumb_width']; $height = $row_a['thumb_height']; $realfile = dirname($db_file).$row_a['thumb_filename']; $icon = ""; } else { $icon = ""; } echo $icon; echo ""; debug($row_a,"file"); echo ""; debug($row_b,"mdls"); echo "
"; ///////////////////////////////////////////////////////////////// // Dir view } else { echo "
"; echo "
"; foreach ($children as $item) { echo "
"; $row_a = $dbo->query("SELECT * FROM files WHERE (pid='".$item."')")->fetchAll()[0]; //$row_b = $dbo->query("SELECT * FROM mdls WHERE (pid='".$item."')")->fetchAll()[0]; //$row_c = $dbo->query("SELECT * FROM milk WHERE (pid='".$item."')")->fetchAll()[0]; if ($row_a['thumb_filename']) { $aspect = $row_a['thumb_width']/$row_a['thumb_height']; if ($aspect > 1) { $width = $icon_size; $height = $icon_size/$aspect; } else { $width = $icon_size*$aspect; $height = $icon_size; } $realfile = dirname($db_file).$row_a['thumb_filename']; $icon = ""; } else { $icon = ""; } $name = htmlentities(shortlabel($row_a['Filename'])); echo "\n".$icon."
".$name; echo "
"; echo "
"; } echo str_repeat("
", 100); echo "
"; echo "
"; debug($view,$view['Pathname']); echo "
"; } } else { ///////////////////////////////////////////////////////////////// // DB List $bundles = glob($db_dir."/*.bundle"); foreach ($bundles as $bundle) { echo "

".pathinfo($bundle)['filename']."

"; $dbs = glob($bundle."/*.sqlite3"); foreach ($dbs as $db_file) { if (!strpos($db_file,"pool")) { echo "".pathinfo($db_file)['filename']." "; $dbo = new PDO("sqlite:".$db_file); echo $dbo->query("SELECT type FROM _skim")->fetch()['type'].", "; echo $dbo->query("SELECT passed_total FROM _skim")->fetch()['passed_total']." files, "; echo $dbo->query("SELECT status FROM _skim")->fetch()['status']; echo "
"; } } } } ///////////////////////////////////////////////////////////////// echo "

".round($time = microtime(true)-$_SERVER["REQUEST_TIME_FLOAT"],2)." seconds"; ?>