예제 #1
0
 /**
  * Parses an element/tag property string and returns an array of properties.
  *
  * @param string $string The property string to parse.
  * @param boolean $valuesOnly Indicates only the property value should be
  * returned.
  */
 public function parsePropertyString($string, $valuesOnly = false)
 {
     $properties = array();
     $tagProps = xPDO::escSplit("&", $string);
     foreach ($tagProps as $prop) {
         $property = xPDO::escSplit('=', $prop);
         if (count($property) == 2) {
             $propName = $property[0];
             if (substr($propName, 0, 4) == "amp;") {
                 $propName = substr($propName, 4);
             }
             $propValue = $property[1];
             $propType = 'textfield';
             $propDesc = '';
             $propOptions = array();
             $pvTmp = xPDO::escSplit(';', $propValue);
             if ($pvTmp && isset($pvTmp[1])) {
                 $propDesc = $pvTmp[0];
                 if (($pvTmp[1] == 'list' || $pvTmp[1] == 'combo') && isset($pvTmp[3]) && $pvTmp[3]) {
                     if (!$valuesOnly) {
                         $propType = modParser::_XType($pvTmp[1]);
                         $options = explode(',', $pvTmp[2]);
                         if ($options) {
                             foreach ($options as $option) {
                                 $propOptions[] = array('name' => ucfirst($option), 'value' => $option);
                             }
                         }
                     }
                     $propValue = $pvTmp[3];
                 } elseif ($pvTmp[1] != 'list' && $pvTmp[1] != 'combo' && isset($pvTmp[2]) && $pvTmp[2]) {
                     if (!$valuesOnly) {
                         $propType = modParser::_XType($pvTmp[1]);
                     }
                     $propValue = $pvTmp[2];
                 } else {
                     $propValue = $pvTmp[0];
                 }
             }
             $propValue = trim($propValue, "`");
             $propValue = str_replace("``", "`", $propValue);
             if ($valuesOnly) {
                 $properties[$propName] = $propValue;
             } else {
                 $properties[$propName] = array('name' => $propName, 'desc' => $propDesc, 'type' => $propType, 'options' => $propOptions, 'value' => $propValue);
             }
         }
     }
     return $properties;
 }