PageRenderTime 40ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/exchange/code/trunk/administrator/components/com_exchange/models/transforms/deleterecords.php

https://bitbucket.org/eddieajau/the-art-of-joomla-archive
PHP | 88 lines | 52 code | 7 blank | 29 comment | 8 complexity | 54c6afbf4269f6829146844bbebcabe8 MD5 | raw file
  1. <?php
  2. /**
  3. * @version $Id: deleterecords.php 280 2010-09-18 02:14:15Z eddieajau $
  4. * @package NewLifeInIT
  5. * @subpackage com_exchange
  6. * @copyright Copyright 2005 - 2010 New Life in IT Pty Ltd. All rights reserved.
  7. * @license GNU General Public License version 2 or later.
  8. * @link http://www.theartofjoomla.com
  9. */
  10. // no direct access
  11. defined('_JEXEC') or die;
  12. /**
  13. * @package NewLifeInIT
  14. * @subpackage com_exchange
  15. */
  16. class XMLTransformDeleteRecords extends XMLIterator
  17. {
  18. /**
  19. * Evaluates an expression
  20. *
  21. * @param object The tag node
  22. * @param mixed The value of the field
  23. * @return mixed The result of the expression
  24. */
  25. function iterate(&$node /*, $obj, $fieldName*/)
  26. {
  27. $model = &$this->getModel();
  28. $logQueries = $model->getOption('log_queries');
  29. $db = &$model->getDestDBO();
  30. $sets = array();
  31. // get the source data
  32. $data = $this->parent->getSourceData();
  33. $n = count($data);
  34. $test = $model->getOption('test_mode', XMLHelper::isBool((string) $node['test']));
  35. $replace = XMLHelper::isBool((string) $node['replace']);
  36. $unique = (string) $node['unique'];
  37. $uniques = array();
  38. // Loop through each data record
  39. for ($i = 0; $i < $n; $i++)
  40. {
  41. $isInsert = true;
  42. $item = &$data[$i];
  43. if ($unique)
  44. {
  45. if (in_array($item[$unique], $uniques)) {
  46. continue;
  47. }
  48. }
  49. if ($fields = parent::iterate($node, $item))
  50. {
  51. // $fields[0] = field name
  52. // $fields[1] = field value
  53. // $fields[2] = field value only if required attribute is true
  54. // get the field values
  55. $temp = array();
  56. foreach ($fields as $field) {
  57. $temp[] = $db->nameQuote($field[0]).'='.$db->Quote($field[1]);
  58. }
  59. $sets[] = '('.implode(" AND \n", $temp).')';
  60. }
  61. }
  62. if ($sets)
  63. {
  64. // do the extended insert
  65. $dest = $db->nameQuote('#__'.$this->parent->dest);
  66. $query = 'DELETE FROM '.$dest.' WHERE '.implode(" OR \n", $sets);
  67. $db->setQuery($query);
  68. // echo $query;die;
  69. // exit('<br><br><h1>exit</h1> at ' . __FILE__ . ' (' . __LINE__ . ') '. __METHOD__ . "<br>");
  70. if ($logQueries) {
  71. ExchangeLog::add(0, $db->getQuery());
  72. }
  73. if (!$test)
  74. {
  75. if (!$db->query()) {
  76. ExchangeLog::add(500, ' '.$db->getErrorMsg());
  77. }
  78. }
  79. }
  80. }
  81. }