Skip to content

Commit a59187f

Browse files
committed
Added a function which can delete a library or all object files of a core, depending on the option parameter.
1 parent 199d538 commit a59187f

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,61 @@ public function deleteAllObjectsAction($auth_key, $version)
122122
array("Files not deleted" => $undeletedFiles))));
123123
}
124124

125+
public function deleteSpecificObjectsAction($auth_key, $version, $option, $to_delete)
126+
{
127+
if ($this->container->getParameter('auth_key') != $auth_key)
128+
return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Invalid authorization key.")));
129+
130+
if ($version != "v1")
131+
return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Invalid API version.")));
132+
133+
$tempDir = $this->container->getParameter('temp_dir');
134+
$objectFilesDir = $this->container->getParameter('objdir');
135+
136+
if ($option == "core")
137+
$to_delete = str_replace(":", "_", $to_delete);
138+
139+
$response = array();
140+
$response["deleted_files"] = "";
141+
$response["undeleted_files"] = "";
142+
143+
if ($handle = opendir("$tempDir/$objectFilesDir"))
144+
{
145+
while (false !== ($entry = readdir($handle)))
146+
{
147+
if ($entry == "." || $entry == ".." || $entry == ".DS_Store")
148+
continue;
149+
150+
if ($option == "library" && strpos($entry, "______" . $to_delete . "_______") === false)
151+
continue;
152+
153+
if ($option == "core" && strpos($entry, "_" . $to_delete . "_") === false)
154+
continue;
155+
156+
157+
if (@unlink("$tempDir/$objectFilesDir/$entry") === false)
158+
$response["undeleted_files"] .= $entry . "\n";
159+
else
160+
$response["deleted_files"] .= $entry . "\n";
161+
162+
}
163+
closedir($handle);
164+
}
165+
else
166+
{
167+
return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Failed to access object files directory.")));
168+
}
169+
170+
if ($response["undeleted_files"] != "")
171+
{
172+
$message = ($option == "library") ? "Failed to delete one or more of the specified library object files.": "Failed to delete one or more of the specified core object files.";
173+
return new Response(json_encode(array_merge(array("success" => false, "step" => 0, "message" => $message), $response)));
174+
}
175+
176+
$message = ($option == "library") ? "Library deleted successfully.": "Core object files deleted successfully.";
177+
return new Response(json_encode(array_merge(array("success" => true, "message" => $message), $response)));
178+
}
179+
125180
/**
126181
\brief Creates a list of the configuration parameters to be used in the compilation process.
127182

0 commit comments

Comments
 (0)