Ejemplo n.º 1
0
 public static function updateLocTree($locTree, $parentID = null, $rank = 0)
 {
     // FIXME: redundant validation
     if (self::validateLocTree($locTree)) {
         $locDataArr = array('fk_parent' => $parentID, 'title' => $locTree['title'], 'description' => $locTree['description'], 'enabled' => (int) $locTree['enabled'], 'rank' => $rank);
         if (is_numeric($locTree['id'])) {
             $loc = new LocationModel($locTree['id']);
             if ($loc) {
                 $loc->update($locDataArr);
             } else {
                 return false;
             }
         } elseif ('new-loc' === $locTree['id']) {
             $locID = self::create($locDataArr);
             $loc = new LocationModel($locID);
             if (!$loc) {
                 throw new Exception("Unable to create new location");
             }
         } else {
             throw new Exception('Invalid location ID: ' . $locTree['id']);
         }
         if (isset($locTree['children']) && is_array($locTree['children'])) {
             foreach ($locTree['children'] as $locKey => $childLoc) {
                 $updateRes = self::updateLocTree($childLoc, $loc->getMetadata('id'), $locKey);
             }
         }
     } else {
         throw new Exception('Invalid location tree');
     }
     return true;
 }