Example #1
0
File: MiscTest.php Project: jasny/Q
 /**
  * Test split_set_assoc() with both ordered and associated parts
  */
 function test_split_set_assoc_Mixed()
 {
     $this->assertSame(array('a' => 'test', 'abc', 'x' => 'adam'), Q\split_set(';', 'a=test;abc;x=adam'), "Simple");
     $this->assertSame(array('a' => 'test', 'abc;def', 'x' => 'adam;eva', 'qqq', 'def'), Q\split_set(';', 'a=test;"abc;def";x="adam;eva";"qqq";def'), "Quoted");
     $this->assertSame(array('a' => 'test', 'abc', 'x' => '"adam"', '"qqq"', 'def'), Q\split_set(';', 'a=test;abc;x="adam";"qqq";def', false), "Don't unquote");
     $this->assertSame(array('a' => 'test', 'abc', 'x' => 'adam', 'qqq', 'def'), Q\split_set(';~&^', 'a=test;abc;x=adam~"qqq"^def'), "Other seperators");
 }
Example #2
0
File: data.php Project: jasny/Q
 /**
  * Describe a table.
  * 
  * @param string  $table   Use a different table
  * @param boolean $return  Do not output, but return XML
  * @return string
  */
 public function describe($table = null, $return = false)
 {
     if (empty($table) && !$this->td) {
         throw new Exception("No table argument specified");
     }
     $td = empty($table) ? $this->td : ($table instanceof DB_Table ? $table : DB::i()->table($table));
     $xml = '<props table="' . htmlspecialchars($td->getName(), ENT_COMPAT, 'UTF-8') . '" description="' . htmlspecialchars($td['description'], ENT_COMPAT, 'UTF-8') . '"' . (isset($td['icon']) ? ' icon=' . htmlspecialchars($td['icon'], ENT_COMPAT, 'UTF-8') . '"' : '') . ' descfield="' . htmlspecialchars($this->td->getFieldProperty('#role:description', 'name'), ENT_COMPAT, 'UTF-8') . '">';
     foreach ($td->getProperties() as $index => $field) {
         if ($index[0] == '#' || !empty($field['hidden']) || empty($field['type']) && empty($field['datatype'])) {
             continue;
         }
         $datatype = !empty($field['datatype']) ? $field['datatype'] : $field['type'];
         unset($values);
         $xml .= '<prop select="' . htmlspecialchars(isset($field['orm']) ? $field['orm'] : $field['name'], ENT_COMPAT, 'UTF-8') . '" datatype="' . htmlspecialchars($datatype, ENT_COMPAT, 'UTF-8') . '" caption="' . htmlspecialchars($field['caption'], ENT_COMPAT, 'UTF-8') . '"' . (isset($field['info']) ? ' info="' . htmlspecialchars($field['info'], ENT_COMPAT, 'UTF-8') . '"' : '') . (isset($field['default']) ? ' default="' . htmlspecialchars($field['default'], ENT_COMPAT, 'UTF-8') . '"' : '') . (!empty($field['frozen']) ? ' frozen="1"' : '') . ($field['required'] ? ' required="1"' : '') . (isset($field['maxlength']) ? ' maxlength="' . (int) $field['maxlength'] . '"' : '') . (isset($field['decimals']) ? ' decimals="' . (int) $field['decimals'] . '"' : '') . (isset($field['mask']) ? ' mask="' . htmlspecialchars($field['mask'], ENT_COMPAT, 'UTF-8') . '"' : '') . (isset($field['validate']) ? ' validate="' . htmlspecialchars($field['validate'], ENT_COMPAT, 'UTF-8') . '"' : '');
         switch ($datatype) {
             case 'children':
                 $xml .= ' type="children" multiple="' . $field['multiple'] . '">' . $this->describe($field['foreign_table'], true) . "</prop>";
                 break;
             case 'juntion':
                 $xml .= ' multiple="' . $field['multiple'] . '"';
             case 'lookupkey':
             case 'parentkey':
                 $xml .= ' type="lookup" foreign_table="' . htmlspecialchars($field['foreign_table'], ENT_COMPAT, 'UTF-8') . '" descfield="' . htmlspecialchars(DB::i()->table($field['foreign_table'])->getFieldProperty('#role:description', 'name'), ENT_COMPAT, 'UTF-8') . '" />';
                 break;
             case 'boolean':
                 if (!isset($field['values'])) {
                     $values = array(0 => 'Nee', 1 => 'Ja');
                 }
             case 'enum':
                 if (!isset($values)) {
                     $values = is_array($field['values']) ? $field['values'] : Q\split_set($field['values'], ',');
                     $options = isset($field['options']) ? is_array($field['options']) ? $field['options'] : Q\split_set($field['options'], ',') : $values;
                     $values = array_combine($options, $values);
                 }
             case 'set':
                 if (!isset($values)) {
                     $values = Q\binset(is_array($field['values']) ? $field['values'] : Q\split_set($field['values']));
                     $xml .= ' multiple="' . $field['multiple'] . '"';
                 }
                 $xml .= " type=\"dropdown\">";
                 foreach ($values as $i => $value) {
                     $xml .= "<item value=\"{$i}\">" . htmlspecialchars($value, ENT_COMPAT, 'UTF-8') . "</item>";
                 }
                 $xml .= "</prop>";
                 break;
             case 'html':
                 $xml .= ' type="custom" form="winEditor" mask="[Bewerken]"/>';
                 break;
             default:
                 $xml .= '/>';
                 break;
         }
     }
     $xml .= '</props>';
     if ($return) {
         return $xml;
     }
     self::outputXML($xml);
     return null;
 }