public function save(PropelPDO $con = null) { $signature = PcUpdatePeer::generateSignature(); if (!$this->getSignature()) { $this->setSignature($signature); } return parent::save($con); }
/** * Executes index action * * @param sfRequest $request A request object */ public function executeIndex(sfWebRequest $request) { $user = PcUserPeer::getLoggedInUser(); $this->getUser()->setCulture($user->getPreferredLanguage()); // {{{ START: is this the first login? // We need to do this before calling refreshLastLogin() if ($user->getLastLogin('U') < mktime(0, 0, 0)) { $this->getUser()->setAttribute('user_first_login_of_the_day', 1); } else { $this->getUser()->setAttribute('user_first_login_of_the_day', 0); } // }}} END: is this the first login? $user->refreshLastLogin()->save(); if (!$user->getHasDesktopAppBeenLoaded()) { $this->getUser()->setAttribute('user_still_to_load_desktop_app', 1); } // the action we are in is not called by the mobile app, but must by the desktop app $user->setHasDesktopAppBeenLoaded(true)->save(); $this->updateAvailable = false; // check whether one day has passed from the last check $lastCheckForUpdates = PcUtils::getValue('last_check_for_updates', time()); if (time() - $lastCheckForUpdates > 86400) { // time to do a new check // // we access the version file directly (and not the config value) to avoid cache $urlFriendlySiteVersion = str_replace('.', '-', file_get_contents(sfConfig::get('sf_root_dir') . '/version')); $updatesUrl = sfConfig::get('app_site_urlForUpdates') . '/' . $urlFriendlySiteVersion; // $updatesUrl may be something like this: http://updates.plancake.com/updates/1.8.6 $updates = PcUtils::getFileContentOverInternet($updatesUrl, true); // $updates may be something like this: // 1--|--ffb524e371203966974750bf5c3a9a77--|--Reminder: Plancake will be down for maintenance in a few hours--|--http://tinyurl.com/34vwsq5 $updatesParts = explode(sfConfig::get('app_site_updatesStringDivider'), $updates); $newReleaseAvailable = isset($updatesParts[0]) ? $updatesParts[0] : ''; $lastUpdateSignature = isset($updatesParts[1]) ? $updatesParts[1] : ''; $lastUpdateDescription = isset($updatesParts[2]) ? $updatesParts[2] : ''; $lastUpdateLink = isset($updatesParts[3]) ? $updatesParts[3] : ''; // we use this also in the hosted version (even if it is meant for installations) // to spot problems easily $this->updateAvailable = (bool) $newReleaseAvailable; if (defined('PLANCAKE_PUBLIC_RELEASE')) { // check whether the update is already in the system if (!is_object(PcUpdatePeer::retrieveBySignature($lastUpdateSignature))) { $update = new PcUpdate(); $update->setUrl($lastUpdateLink)->setDescription($lastUpdateDescription)->setSignature($lastUpdateSignature)->setCreatedAt(time())->save(); PcUtils::broadcastUpdate($lastUpdateDescription, $lastUpdateLink); } } PcUtils::setValue('last_check_for_updates', time()); } }
/** * Retrieve multiple objects by pkey. * * @param array $pks List of primary keys * @param PropelPDO $con the connection to use * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function retrieveByPKs($pks, PropelPDO $con = null) { if ($con === null) { $con = Propel::getConnection(PcUpdatePeer::DATABASE_NAME, Propel::CONNECTION_READ); } $objs = null; if (empty($pks)) { $objs = array(); } else { $criteria = new Criteria(PcUpdatePeer::DATABASE_NAME); $criteria->add(PcUpdatePeer::ID, $pks, Criteria::IN); $objs = PcUpdatePeer::doSelect($criteria, $con); } return $objs; }
/** * Populates the object using an array. * * This is particularly useful when populating an object from one of the * request arrays (e.g. $_POST). This method goes through the column * names, checking to see whether a matching key exists in populated * array. If so the setByName() method is called for that column. * * You can specify the key type of the array by additionally passing one * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. * The default key type is the column's phpname (e.g. 'AuthorId') * * @param array $arr An array to populate the object from. * @param string $keyType The type of keys the array uses. * @return void */ public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) { $keys = PcUpdatePeer::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) { $this->setId($arr[$keys[0]]); } if (array_key_exists($keys[1], $arr)) { $this->setSignature($arr[$keys[1]]); } if (array_key_exists($keys[2], $arr)) { $this->setDescription($arr[$keys[2]]); } if (array_key_exists($keys[3], $arr)) { $this->setUrl($arr[$keys[3]]); } if (array_key_exists($keys[4], $arr)) { $this->setCreatedAt($arr[$keys[4]]); } }