@@ -69,6 +69,114 @@ public function indexAction($auth_key, $version)
69
69
}
70
70
}
71
71
72
+ public function deleteAllObjectsAction ($ auth_key , $ version )
73
+ {
74
+ if ($ this ->container ->getParameter ('auth_key ' ) != $ auth_key )
75
+ return new Response (json_encode (array ("success " => false , "step " => 0 , "message " => "Invalid authorization key. " )));
76
+
77
+ if ($ version != "v1 " )
78
+ return new Response (json_encode (array ("success " => false , "step " => 0 , "message " => "Invalid API version. " )));
79
+
80
+ $ tempDir = $ this ->container ->getParameter ('temp_dir ' );
81
+ $ objectFilesDir = $ this ->container ->getParameter ('objdir ' );
82
+ $ fileCount = 0 ;
83
+ $ undeletedFiles = "" ;
84
+ $ deletionStats = array ("success_dot_a " => 0 ,
85
+ "failure_dot_a " => 0 ,
86
+ "success_dot_o " => 0 ,
87
+ "failure_dot_o " => 0 ,
88
+ "success_dot_d " => 0 ,
89
+ "failure_dot_d " => 0 ,
90
+ "success_dot_LOCK " => 0 ,
91
+ "failure_dot_LOCK " => 0 );
92
+
93
+ if ($ handle = opendir ("$ tempDir/ $ objectFilesDir " ))
94
+ {
95
+
96
+ while (false !== ($ entry = readdir ($ handle )))
97
+ {
98
+ if ($ entry != ". " && $ entry != ".. " && $ entry != ".DS_Store " )
99
+ {
100
+ $ fileCount ++;
101
+ $ extension = pathinfo ($ entry , PATHINFO_EXTENSION );
102
+
103
+ if (!in_array ($ extension , array ("a " , "o " , "d " , "LOCK " )))
104
+ continue ;
105
+
106
+ if (@unlink ("$ tempDir/ $ objectFilesDir/ $ entry " ) === false )
107
+ {
108
+ $ deletionStats ["failure_dot_ $ extension " ]++;
109
+ $ undeletedFiles .= $ entry . "\n" ;
110
+ }
111
+ else
112
+ $ deletionStats ["success_dot_ $ extension " ]++;
113
+ }
114
+ }
115
+ closedir ($ handle );
116
+ }else
117
+ return new Response (json_encode (array ("success " => false , "step " => 0 , "message " => "Failed to access object files directory. " )));
118
+
119
+ return new Response (json_encode (array_merge (array ("success " => true ,
120
+ "message " => "Object files deletion complete. Found $ fileCount files. " ),
121
+ $ deletionStats ,
122
+ array ("Files not deleted " => $ undeletedFiles ))));
123
+ }
124
+
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
+
72
180
/**
73
181
\brief Creates a list of the configuration parameters to be used in the compilation process.
74
182
0 commit comments