Ejemplo n.º 1
0
 /**
  * Set the Maestrano UID on a local user via id lookup
  *
  * @return a user ID if found, null otherwise
  */
 protected function setLocalUid()
 {
     if ($this->local_id) {
         $upd = $this->connection->update($this->connection->users, array('mno_uid' => $this->uid), array('ID' => $this->local_id));
         return $upd;
     }
     return false;
 }
Ejemplo n.º 2
0
 /**
  * 保存数据
  * @access public
  * @param mixed $data 数据
  * @param array $options 表达式
  * @return boolean
  */
 public function save($data = '', $options = array())
 {
     if (empty($data)) {
         // 没有传递数据,获取当前数据对象的值
         if (!empty($this->data)) {
             $data = $this->data;
             // 重置数据
             $this->data = array();
         } else {
             $this->error = L('_DATA_TYPE_INVALID_');
             return false;
         }
     }
     // 数据处理
     $data = $this->_facade($data);
     if (empty($data)) {
         // 没有数据则不执行
         $this->error = L('_DATA_TYPE_INVALID_');
         return false;
     }
     // 分析表达式
     $options = $this->_parseOptions($options);
     $pk = $this->getPk();
     if (!isset($options['where'])) {
         // 如果存在主键数据 则自动作为更新条件
         if (is_string($pk) && isset($data[$pk])) {
             $where[$pk] = $data[$pk];
             unset($data[$pk]);
         } elseif (is_array($pk)) {
             // 增加复合主键支持
             foreach ($pk as $field) {
                 if (isset($data[$field])) {
                     $where[$field] = $data[$field];
                 } else {
                     // 如果缺少复合主键数据则不执行
                     $this->error = L('_OPERATION_WRONG_');
                     return false;
                 }
                 unset($data[$field]);
             }
         }
         if (!isset($where)) {
             // 如果没有任何更新条件则不执行
             $this->error = L('_OPERATION_WRONG_');
             return false;
         } else {
             $options['where'] = $where;
         }
     }
     if (is_array($options['where']) && isset($options['where'][$pk])) {
         $pkValue = $options['where'][$pk];
     }
     if (false === $this->_before_update($data, $options)) {
         return false;
     }
     $result = $this->db->update($data, $options);
     if (false !== $result && is_numeric($result)) {
         if (isset($pkValue)) {
             $data[$pk] = $pkValue;
         }
         $this->_after_update($data, $options);
     }
     return $result;
 }