X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FProfile_prefs.php;h=bc7c400b890a2c8d3775b359256d0fd88c61a4e3;hb=cb8bf360c42ca8fce44fac62316d6d71d66d912e;hp=7ad6233c5514a59c0015db77924526f6169815d9;hpb=3000adb33d5b8edbf145404e9aa5881f2de20768;p=quix0rs-gnu-social.git diff --git a/classes/Profile_prefs.php b/classes/Profile_prefs.php index 7ad6233c55..bc7c400b89 100644 --- a/classes/Profile_prefs.php +++ b/classes/Profile_prefs.php @@ -20,7 +20,7 @@ * along with this program. If not, see . * * @category Data - * @package GNUSocial + * @package GNUsocial * @author Mikael Nordfeldth * @copyright 2013 Free Software Foundation, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 @@ -31,8 +31,8 @@ class Profile_prefs extends Managed_DataObject { public $__table = 'profile_prefs'; // table name public $profile_id; // int(4) primary_key not_null - public $namespace; // varchar(255) not_null - public $topic; // varchar(255) not_null + public $namespace; // varchar(191) not_null + public $topic; // varchar(191) not_null public $data; // text public $created; // datetime not_null default_0000-00-00%2000%3A00%3A00 public $modified; // timestamp not_null default_CURRENT_TIMESTAMP @@ -42,8 +42,8 @@ class Profile_prefs extends Managed_DataObject return array( 'fields' => array( 'profile_id' => array('type' => 'int', 'not null' => true, 'description' => 'user'), - 'namespace' => array('type' => 'varchar', 'length' => 255, 'not null' => true, 'description' => 'namespace, like pluginname or category'), - 'topic' => array('type' => 'varchar', 'length' => 255, 'not null' => true, 'description' => 'preference key, i.e. description, age...'), + 'namespace' => array('type' => 'varchar', 'length' => 191, 'not null' => true, 'description' => 'namespace, like pluginname or category'), + 'topic' => array('type' => 'varchar', 'length' => 191, 'not null' => true, 'description' => 'preference key, i.e. description, age...'), 'data' => array('type' => 'blob', 'description' => 'topic data, may be anything'), 'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'), 'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'), @@ -62,11 +62,11 @@ class Profile_prefs extends Managed_DataObject { if (empty($topic)) { $prefs = new Profile_prefs(); - $prefs->profile_id = $profile->id; + $prefs->profile_id = $profile->getID(); $prefs->namespace = $namespace; $prefs->find(); } else { - $prefs = self::pivotGet('profile_id', $profile->id, array('namespace'=>$namespace, 'topic'=>$topic)); + $prefs = self::pivotGet('profile_id', $profile->getID(), array('namespace'=>$namespace, 'topic'=>$topic)); } if (empty($prefs->N)) { @@ -85,42 +85,45 @@ class Profile_prefs extends Managed_DataObject static function getAll(Profile $profile) { try { - $prefs = self::listFind('profile_id', $profile->id); + $prefs = self::listFind('profile_id', array($profile->getID())); } catch (NoResultException $e) { return array(); } $list = array(); - while ($entry = $prefs->fetch()) { - if (!isset($list[$entry->namespace])) { - $list[$entry->namespace] = array(); + while ($prefs->fetch()) { + if (!isset($list[$prefs->namespace])) { + $list[$prefs->namespace] = array(); } - $list[$entry->namespace][$entry->topic] = $entry->data; + $list[$prefs->namespace][$prefs->topic] = $prefs->data; } return $list; } static function getTopic(Profile $profile, $namespace, $topic) { - $pref = new Profile_prefs; - $pref->profile_id = $profile->id; - $pref->namespace = $namespace; - $pref->topic = $topic; - - if (!$pref->find(true)) { - throw new NoResultException($pref); - } - return $pref; + return Profile_prefs::getByPK(array('profile_id' => $profile->getID(), + 'namespace' => $namespace, + 'topic' => $topic)); } - static function getData(Profile $profile, $namespace, $topic) { - $pref = self::getTopic($profile, $namespace, $topic); + static function getData(Profile $profile, $namespace, $topic, $def=null) { + try { + $pref = self::getTopic($profile, $namespace, $topic); + } catch (NoResultException $e) { + if ($def === null) { + // If no default value was set, continue the exception. + throw $e; + } + // If there was a default value, return that. + return $def; + } return $pref->data; } static function getConfigData(Profile $profile, $namespace, $topic) { try { $data = self::getData($profile, $namespace, $topic); - } catch (Exception $e) { + } catch (NoResultException $e) { $data = common_config($namespace, $topic); } return $data; @@ -155,12 +158,13 @@ class Profile_prefs extends Managed_DataObject } $pref = new Profile_prefs(); - $pref->profile_id = $profile->id; + $pref->profile_id = $profile->getID(); $pref->namespace = $namespace; $pref->topic = $topic; $pref->data = $data; + $pref->created = common_sql_now(); - if (!$pref->insert()) { + if ($pref->insert() === false) { throw new ServerException('Could not save profile preference.'); } return true;