/**
  * Allow to add criterias to internal WHERE
  *
  * @param string|array $criteria token list or string that have the external criterias
  * @return string complete criterias
  * @private
  */
 function external_criteria($criteria)
 {
     if (!is_array($this->external_criteria_value)) {
         return $criteria . ($this->external_criteria_value ? ' ' . $this->external_criteria_value : '');
     } else {
         $this->external_criteria_value[1] = $criteria;
         return phpgwapi_sql_criteria::criteria($this->external_criteria_value);
     }
 }
 /**
  * Create an update query for this entity
  *
  * @param Array $data Fields that want change value and their values
  * @param Array $criteria With criterias that set the rows to edit
  * @param integer action
  * @return string SQL update string
  */
 function update($data, $criteria, $action = PHPGW_SQL_RETURN_SQL)
 {
     if (is_array($data) && count($data) > 0) {
         array_walk($data, array(&$this, 'add_update'));
     } else {
         list($field, $value) = explode('=', $data);
         $this->add_update($field, $value);
     }
     if (is_string($criteria)) {
         $this->set_criteria($criteria);
     } else {
         $this->set_criteria(phpgwapi_sql_criteria::criteria($criteria));
     }
     if (!empty($this->values)) {
         switch ($action) {
             case PHPGW_SQL_RETURN_RECORDS:
             case PHPGW_SQL_RUN_SQL:
                 $sql = $this->return_update();
                 $GLOBALS['phpgw']->db->query($sql, __LINE__, __FILE__);
                 $this->ldebug('update', $sql, 'msg');
                 return;
             case PHPGW_SQL_RETURN_SQL:
                 return $this->return_update();
         }
     }
 }