/** * Return JSON string with version informations * * @param skip cache boolean * * @return JSON string */ function getInstalled($skipcache = 0) { if (!Core::$user->has("install")) { Core::log('A', "Suspicious behavior " . $this->getsiteurl()); return "PHPPE-E: " . L("Access denied"); } $t = ""; //! if remote not available, get from local directly if (!empty(Core::$user->data['remote']['identity']) && !empty(Core::$user->data['remote']['user']) && !empty(Core::$user->data['remote']['host']) && !empty(Core::$user->data['remote']['path'])) { //! get list from remote server try { $r = explode("\n", trim(Tools::ssh("cat " . escapeshellarg(Core::$user->data['remote']['path'] . "/composer.json") . " \\|grep name \\| head -1 \\; find " . escapeshellarg(Core::$user->data['remote']['path'] . "/vendor/phppe") . " -type f -name composer.json -exec sh -c \\'cat {} \\| grep -e name[^_] \\|head -1 \\| tr -d \\\\'\\\\n\\\\' \\; cat {} \\| grep -e version[^_] \\' \\\\\\; 2>&1"))); } catch (\Exception $e) { $r[0] = $e->getMessage(); } //! get site title from project composer.json if (!self::isErr($r[0])) { $d = explode('"', $r[0]); if (empty($d[3]) || $d[3] == "phppe3") { $d[3] = "No name"; } $t = "{ \"name\": \"" . ($d[3] == "No name" ? L($d[3]) : $d[3]) . "\" }"; } else { $t = "{ \"name\": \"" . View::e("", substr(trim($r[0]), 0, 4) == "cat:" ? L("Run diagnostics first!") : str_replace("\r", "", str_replace("\n", " ", trim(empty($r[1]) ? $r[0] : $r[1]))), "") . "\" }"; } if (!self::isErr(@$r[1]) && !self::isErr(@$r[2])) { foreach ($r as $v) { $d = explode("\"", $v); if (!empty($d[3]) && !empty($d[7])) { $t .= ",{ \"id\": \"" . $d[3] . "\", \"version\": \"" . $d[7] . "\" }"; } } } } else { $t = "{ \"name\": \"" . View::e("", L("configure remote access"), "") . "\" }"; $d = glob("vendor/phppe/*" . "/composer.json"); if (file_exists("vendor/phppe/composer.json")) { $d[] = "vendor/phppe/composer.json"; } foreach ($d as $v) { $j = json_decode(file_get_contents($v), true); if (!empty($j['name']) && !empty($j['version'])) { $t .= ",{ \"id\": \"" . $j['name'] . "\", \"version\": \"" . $j['version'] . "\" }"; } } } return $t; }
/** * String representation of the object. * NOTE: __toString() not allowed to throw exception! * * @return string sql sentance */ public function __toString() { try { return $this->sql(); } catch (\Exception $e) { return View::e('E', $e->getMessage(), 'DB'); } }