Scalr_Util_DateTime::getFuzzyTime PHP Method

getFuzzyTime() public static method

Gets a slightly more fuzzy time string. such as: yesterday at 3:51pm
public static getFuzzyTime ( integer | string $time, integer $tz_offset = null ) : string
$time integer | string Time
$tz_offset integer optional A timezone offset
return string
    public static function getFuzzyTime($time = 0, $tz_offset = null)
    {
        $time = self::correctTime($time, $tz_offset);
        $now = self::correctTime(0, $tz_offset);
        $sodTime = mktime(0, 0, 0, date('m', $time), date('d', $time), date('Y', $time));
        $sodNow = mktime(0, 0, 0, date('m', $now), date('d', $now), date('Y', $now));
        if ($sodNow == $sodTime) {
            return 'today at ' . date('g:ia', $time);
            // check 'today'
        } else {
            if ($sodNow - $sodTime <= 86400) {
                return 'yesterday at ' . date('g:ia', $time);
                // check 'yesterday'
            } else {
                if ($sodNow - $sodTime <= 432000) {
                    return date('l \\a\\t g:ia', $time);
                    // give a day name if within the last 5 days
                } else {
                    if (date('Y', $now) == date('Y', $time)) {
                        return date('M j \\a\\t g:ia', $time);
                        // miss off the year if it's this year
                    } else {
                        return date('M j, Y \\a\\t g:ia', $time);
                        // return the date as normal
                    }
                }
            }
        }
    }

Usage Example

Example #1
0
 public function xGetTerminationDetailsAction()
 {
     $this->request->restrictAccess(Acl::RESOURCE_FARMS, Acl::PERM_FARMS_TERMINATE);
     $dbFarm = DBFarm::LoadByID($this->getParam('farmId'));
     $this->user->getPermissions()->validate($dbFarm);
     $dbFarm->isLocked();
     $outdatedFarmRoles = $this->db->GetAll("SELECT id FROM farm_roles WHERE farmid=?", array($dbFarm->ID));
     $data = array();
     $isMongoDbClusterRunning = false;
     $isMysql = false;
     $isRabbitMQ = false;
     foreach ($outdatedFarmRoles as $farmRole) {
         $dbFarmRole = DBFarmRole::LoadByID($farmRole['id']);
         if (!$isMongoDbClusterRunning) {
             $isMongoDbClusterRunning = $dbFarmRole->GetRoleObject()->hasBehavior(ROLE_BEHAVIORS::MONGODB) && $dbFarmRole->GetSetting(Scalr_Role_Behavior_MongoDB::ROLE_CLUSTER_STATUS) != Scalr_Role_Behavior_MongoDB::STATUS_TERMINATED;
         }
         if (!$isMysql) {
             $isMysql = $dbFarmRole->GetRoleObject()->hasBehavior(ROLE_BEHAVIORS::MYSQL);
         }
         if (!$isRabbitMQ) {
             $isRabbitMQ = $dbFarmRole->GetRoleObject()->hasBehavior(ROLE_BEHAVIORS::RABBITMQ);
         }
         $row = array('dtLastSync' => strtotime($dbFarmRole->dtLastSync) ? Scalr_Util_DateTime::getFuzzyTime(strtotime($dbFarmRole->dtLastSync), false) : "Never", 'name' => $dbFarmRole->GetRoleObject()->name, 'id' => $dbFarmRole->ID, 'isBundleRunning' => $this->db->GetOne("\n                    SELECT id FROM bundle_tasks\n                    WHERE status NOT IN ('success','failed')\n                    AND role_id=?\n                    AND farm_id IN (SELECT id FROM farms WHERE client_id=?)\n                 ", array($dbFarmRole->RoleID, $dbFarm->ClientID)));
         foreach ($dbFarmRole->GetServersByFilter(array('status' => SERVER_STATUS::RUNNING)) as $dbServer) {
             $row['servers'][] = array('server_id' => $dbServer->serverId, 'remoteIp' => $dbServer->remoteIp);
         }
         $data[] = $row;
     }
     $this->response->data(array('roles' => $data, 'isMongoDbClusterRunning' => $isMongoDbClusterRunning, 'isMysqlRunning' => $isMysql, 'isRabbitMQ' => $isRabbitMQ, 'farmId' => $dbFarm->ID, 'farmName' => $dbFarm->Name));
 }