88 return "Failed to load values for field '".$fieldname.
"'. See server error log for details.";
96 session_write_close();
97 header(
'Connection: close');
99 $app = Dataface_Application::getInstance();
100 $query = $app->getQuery();
101 $tableName = $query[
'-table'];
102 if ( @$query[
'--depselect-table'] ){
103 $tableName = $query[
'--depselect-table'];
105 $table = Dataface_Table::loadTable($tableName);
106 $field = $table->getField($query[
'-field']);
108 $this->loadFromTable($table, $field, $query);
123 private function loadFromTable(Dataface_Table $table, &$field, $query){
127 $perms = $table->getPermissions(array(
'field'=>$field[
'name']));
128 if ( !@$perms[
'edit'] and !@$perms[
'new'] ){
131 error_log(
"Insufficient permissions to access field $field[name] by current user.");
132 throw new Exception(
"Failed to get options for field $filed[name] because you don't have view permission for this field.", 401);
139 if ( !@$field[
'widget'][
'table'] ){
140 error_log(
"widget:table not defined for field ".$field[
'name'].
" of table ".$table->tablename.
".");
141 throw new Exception(self::errorMessage($fieldname), 500);
143 $targetTable = Dataface_Table::loadTable($field[
'widget'][
'table']);
146 if ( @$field[
'widget'][
'filters'] and is_array($field[
'widget'][
'filters'])){
147 foreach ($field[
'widget'][
'filters'] as $key=>$val){
148 if ( isset($query[$key]) ){
149 $filters[$key]=$query[$key];
150 }
else if ( strpos($val,
'$') === 0 ){
151 $filters[$key] =
'=';
153 $filters[$key] = $val;
161 if ( @$field[
'widget'][
'limit'] ){
162 $limit = intval($field[
'widget'][
'limit']);
165 $filters[
'-limit'] = $limit;
166 $records = df_get_records_array($field[
'widget'][
'table'], $filters);
174 if ( @$field[
'widget'][
'keycol'] ){
175 $keyCol = $field[
'widget'][
'keycol'];
177 foreach ($targetTable->keys() as $k=>$v){
183 if ( @$field[
'widget'][
'labelcol'] ){
184 $labelCol = $field[
'widget'][
'labelcol'];
188 foreach ($records as $r){
189 if ( @$field[
'widget'][
'ignore_permissions'] ){
190 $r->secureDisplay =
false;
193 if ( !$r->checkPermission(
'view', array(
'field'=>$keyCol)))
continue;
194 if ( $labelCol and !$r->checkPermission(
'view', array(
'field'=>$labelCol)))
continue;
199 ($r->val($keyCol))=>($r->display($labelCol))
204 ($r->val($keyCol))=>($r->getTitle())
214 'message'=>
'Received default valuelist',
220 }
catch (Exception $ex){
223 'code'=>$ex->getCode(),
224 'message'=>$ex->getMessage()
235 private function out($params){
236 header(
'Content-type: text/json; charset="'.Dataface_Application::getInstance()->_conf[
'oe'].
'"');
237 echo json_encode($params);