33 require_once
'Dataface/IO.php';
34 require_once
'HTML/QuickForm.php';
110 $this->query =
$app->getQuery();
117 if ( !$record || !isset($record)){
120 $this->_record =& $record;
121 $this->_relationshipName = $relationshipName;
123 $this->_relationship = $record->_table->getRelationship($relationshipName);
125 $this->HTML_QuickForm(
'RemoveRecord');
138 return ( isset( $_POST[
'--__keys__']) and isset( $_POST[
'-table']) );
151 $rec =&
$app->getRecord();
157 if ( !isset($this->allowDelete) ){
164 $this->allowDelete =
true;
166 $domainRecord =& $record->toRecord($domainTable->tablename);
167 if ( !$record->_record->checkPermission(
'delete related record', array(
'relationship'=>$this->_relationshipName)) and
168 !$domainRecord->checkPermission(
'delete') ){
169 $this->allowDelete =
false;
182 return ( $this->_relationship->getDistance( $this->_relationship->getDomainTable() ) == 1);
191 if ( $this->_isBuilt )
return;
192 $keys = array_keys($this->_record->_table->keys());
193 $factory =
new HTML_QuickForm(
'factory');
195 foreach (
$keys as $key){
196 $keyEls[] =& $factory->addElement(
'hidden', $key);
199 $this->addGroup($keyEls,
'--__keys__');
200 $this->addElement(
'hidden',
'--selected-ids');
201 $this->addElement(
'hidden',
'-table');
202 $this->addElement(
'hidden',
'-relationship');
203 $this->addElement(
'hidden',
'-queryString');
204 $this->addElement(
'hidden',
'-action');
207 $this->addElement(
'checkbox',
'delete',df_translate(
'scripts.Dataface.RemoveRelatedRecordForm._build.LABEL_ALSO_DELETE_FROM_DB',
'Also delete record(s) from database?'));
209 $this->addElement(
'hidden',
'delete');
211 $this->addElement(
'hidden',
'-confirm_delete_hidden',
'1');
212 $this->addElement(
'submit',
'-confirm_delete',df_translate(
'scripts.Dataface.RemoveRelatedRecordForm._build.LABEL_REMOVE',
"Remove"));
216 $this->setDefaults(array(
217 '--__keys__'=>$this->_record->getValues(array_keys($this->_record->_table->keys())),
218 '-table'=>$this->_record->_table->tablename,
220 '--selected-ids'=> $_POST[
'--selected-ids'],
221 '-queryString'=>
$_SERVER[
'QUERY_STRING'],
222 '-action'=>
'remove_related_record'
225 $this->setDefaults(array(
'delete'=>1));
227 $this->_isBuilt =
true;
239 $domainTable = $this->_relationship->getDomainTable();
241 $domainTable = $this->_relationship->_schema[
'selected_tables'][0];
245 echo
"<p>".df_translate(
246 'scripts.Dataface.RemoveRelatedRecordForm.display.MESSAGE_ARE_YOU_SURE',
247 "Are you sure you want to remove the following records from the relationship '".$this->_relationshipName.
"'?",
248 array(
'relationship'=>$this->_relationshipName)
253 $records =& df_get_selected_records($this->query);
257 echo
"<li>".$record->getTitle().
"</li>\n";
270 if ( !isset($this->records) ) $this->records = df_get_selected_records($this->query);
280 if ( !isset($this->_domainTable) ){
281 $domainTable = $this->_relationship->getDomainTable();
288 $domainTable = $this->_relationship->_schema[
'selected_tables'][0];
299 function delete($values){
305 $domainIO =
new Dataface_IO($domainTable->tablename);
309 $confirmations = array();
311 $table =& $this->_record->_table;
313 $removePermission = $this->_record->checkPermission(
'remove related record', array(
'relationship'=>$this->_relationshipName));
325 $res = $io->removeRelatedRecord($record, @$values[
'delete'],
true );
327 $warnings[] = $res->getMessage();
329 $confirmations[] = $confirmations[] = df_translate(
330 'Successfully deleted record',
331 "Successfully deleted entry for record '".$record->getTitle().
"' in table '".
$table->tablename.
"'",
332 array(
'title'=>$record->getTitle(),
'table'=>
$table->tablename)
338 return array(
'confirmations'=>$confirmations,
"warnings" => $warnings);