/**
  * Get all settings of one record.
  *
  * @param string $table Database table
  * @param int    $uid   Record UID
  *
  * @return array Array of settings
  *               Key is the context column name (e.g. "tx_contexts_nav")
  *               Value is a Tx_Contexts_Context_Setting object
  */
 public final function getSettings($table, $uid)
 {
     $settingsKey = $table . '.' . $uid;
     if (array_key_exists($settingsKey, $this->settings)) {
         return $this->settings[$settingsKey];
     }
     $uids = array($uid);
     if ($uid && !array_key_exists($table . '.0', $this->settings)) {
         $uids[] = 0;
     }
     $where = 'context_uid = ' . $this->uid;
     $where .= " AND foreign_table = '{$table}'";
     $where .= " AND foreign_uid IN ('" . implode("','", $uids) . "')";
     $rows = (array) Tx_Contexts_Api_Configuration::getDb()->exec_SELECTgetRows('*', 'tx_contexts_settings', $where);
     foreach ($uids as $uid) {
         $this->settings[$table . '.' . $uid] = array();
     }
     foreach ($rows as $row) {
         $this->settings[$table . '.' . $row['foreign_uid']][$row['name']] = new Tx_Contexts_Context_Setting($this, $row);
     }
     return $this->settings[$settingsKey];
 }
Exemple #2
0
 /**
  * Save the default settings to the settings table - default
  * settings will have a foreign_uid of 0
  *
  * @param int $contextId
  * @param array $settings
  * @return void
  */
 protected function saveDefaultSettings($contextId, $settings)
 {
     $existingSettings = (array) Tx_Contexts_Api_Configuration::getDb()->exec_SELECTgetRows('*', 'tx_contexts_settings', "context_uid = '{$contextId}' AND foreign_uid = 0");
     foreach ($settings as $table => $fields) {
         $fieldSettings = array();
         foreach ($existingSettings as $setting) {
             if ($setting['foreign_table'] == $table) {
                 $fieldSettings[$setting['name']] = $setting['uid'];
             }
         }
         foreach ($fields as $field => $enabled) {
             if (array_key_exists($field, $fieldSettings)) {
                 Tx_Contexts_Api_Configuration::getDb()->exec_UPDATEquery('tx_contexts_settings', 'uid=' . $fieldSettings[$field], array('enabled' => (int) $enabled));
             } else {
                 Tx_Contexts_Api_Configuration::getDb()->exec_INSERTquery('tx_contexts_settings', array('context_uid' => $contextId, 'foreign_table' => $table, 'name' => $field, 'foreign_uid' => 0, 'enabled' => (int) $enabled));
             }
         }
     }
 }