PageRenderTime 58ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/setup_data.php

http://candydolldb.googlecode.com/
PHP | 308 lines | 244 code | 55 blank | 9 comment | 48 complexity | 939e669cebcb46f0728420a5374862dc MD5 | raw file
  1. <?php
  2. include('cd.php');
  3. ini_set('max_execution_time', '3600');
  4. $CurrentUser = Authentication::Authenticate();
  5. $ModelID = Utils::SafeIntFromQS('model_id');
  6. $XmlFromFile = NULL;
  7. $fileToProcess = 'setup_data.xml';
  8. $Tag2AllsInDB = Tag2All::GetTag2Alls();
  9. $TagsInDB = Tag::GetTags();
  10. if(array_key_exists('file', $_GET) && isset($_GET['file']))
  11. { $fileToProcess = $_GET['file']; }
  12. if(isset($argv) && $argc > 0)
  13. {
  14. if(file_exists(sprintf('%1$s/%2$s', dirname($_SERVER['PHP_SELF']), $fileToProcess)))
  15. { $XmlFromFile = new SimpleXMLElement(file_get_contents(sprintf('%1$s/%2$s', dirname($_SERVER['PHP_SELF']), $fileToProcess))); }
  16. }
  17. else
  18. {
  19. if(file_exists($fileToProcess))
  20. { $XmlFromFile = new SimpleXMLElement(file_get_contents($fileToProcess)); }
  21. }
  22. if($XmlFromFile)
  23. {
  24. $ModelsInDb = Model::GetModels();
  25. $SetsInDb = Set::GetSets();
  26. $DatesInDb = Date::GetDates();
  27. $VideosInDb = Video::GetVideos();
  28. if(isset($argv) && $argc > 0)
  29. { $bi = new BusyIndicator(count($XmlFromFile->Model), 0); }
  30. foreach ($XmlFromFile->Model as $Model)
  31. {
  32. if(isset($argv) && $argc > 0)
  33. { $bi->Next(); }
  34. $ModelInDb = Model::Filter(
  35. $ModelsInDb,
  36. NULL,
  37. (string)$Model->attributes()->firstname,
  38. (string)$Model->attributes()->lastname
  39. );
  40. if($ModelInDb)
  41. { $ModelInDb = $ModelInDb[0]; }
  42. /* @var $Model2Process Model */
  43. $Model2Process = $ModelInDb ? $ModelInDb : new Model();
  44. // Provide a one-model-only import for impatient developers
  45. if($Model2Process->getID() && $ModelID && $Model2Process->getID() !== $ModelID)
  46. { continue; }
  47. $Model2Process->setFirstName((string)$Model->attributes()->firstname);
  48. $Model2Process->setLastName((string)$Model->attributes()->lastname);
  49. $birthDate = strtotime((string)$Model->attributes()->birthdate);
  50. if($birthDate !== FALSE) { $Model2Process->setBirthdate($birthDate); }
  51. else { $Model2Process->setBirthdate(-1); }
  52. if($Model->Remarks){
  53. $Model2Process->setRemarks($Model->Remarks);
  54. }
  55. if($Model2Process->getID())
  56. {
  57. Model::Update($Model2Process, $CurrentUser);
  58. }
  59. else
  60. {
  61. Model::Insert($Model2Process, $CurrentUser);
  62. }
  63. $modeltags = Tag::GetTagArray((string)$Model->attributes()->tags);
  64. $Tag2AllThisModel = Tag2All::Filter($Tag2AllsInDB, NULL, $Model2Process->getID(), FALSE, FALSE, FALSE);
  65. $Tag2AllThisModelOnly = Tag2All::Filter($Tag2AllThisModel, NULL, $Model2Process->getID(), NULL, NULL, NULL);
  66. Tag2All::HandleTags($modeltags, $Tag2AllThisModelOnly, $TagsInDB, $CurrentUser, $Model2Process->getID(), NULL, NULL, NULL, FALSE);
  67. if(!$Model->Sets)
  68. { continue; }
  69. $DatesThisModel = Date::FilterDates($DatesInDb, NULL, $Model2Process->getID(), NULL, NULL, NULL);
  70. foreach($Model->Sets->Set as $Set)
  71. {
  72. $SetInDb = Set::Filter(
  73. $SetsInDb,
  74. $Model2Process->getID(),
  75. NULL,
  76. preg_replace('/^SP_/i', '', (string)$Set->attributes()->name)
  77. );
  78. if($SetInDb){ $SetInDb = $SetInDb[0]; }
  79. /* @var $Set2Process Set */
  80. $Set2Process = $SetInDb ? $SetInDb : new Set();
  81. $Set2Process->setModel($Model2Process);
  82. if($Set2Process->getModel()->getFirstName() == 'VIP')
  83. {
  84. $Set2Process->setPrefix('SP_');
  85. $Set2Process->setName(preg_replace('/^SP_/i', '', (string)$Set->attributes()->name));
  86. }
  87. else if($Set2Process->getModel()->getFirstName() == 'Interviews')
  88. {
  89. $Set2Process->setPrefix('In_');
  90. $Set2Process->setName((string)$Set->attributes()->name);
  91. }
  92. else if($Set2Process->getModel()->getFirstName() == 'Promotions')
  93. {
  94. $Set2Process->setPrefix(NULL);
  95. $Set2Process->setName((string)$Set->attributes()->name);
  96. }
  97. else
  98. {
  99. $Set2Process->setPrefix('set_');
  100. $Set2Process->setName((string)$Set->attributes()->name);
  101. }
  102. if($Set2Process->getID())
  103. {
  104. Set::Update($Set2Process, $CurrentUser);
  105. }
  106. else
  107. {
  108. Set::Insert($Set2Process, $CurrentUser);
  109. $CacheImages = CacheImage::GetCacheImages(new CacheImageSearchParameters(FALSE, FALSE, $Model2Process->getID()));
  110. CacheImage::DeleteMulti($CacheImages, $CurrentUser);
  111. }
  112. $settags = Tag::GetTagArray((string)$Set->attributes()->tags);
  113. $Tag2AllThisSet = Tag2All::Filter($Tag2AllThisModel, NULL, $Model2Process->getID(), $Set2Process->getID(), NULL, NULL);
  114. Tag2All::HandleTags($settags, $Tag2AllThisSet, $TagsInDB, $CurrentUser, $Model2Process->getID(), $Set2Process->getID(), NULL, NULL, FALSE);
  115. $datesPic = array();
  116. $datesVid = array();
  117. preg_match_all('/[0-9]{4}-[01][0-9]-[0123][0-9]/ix', (string)$Set->attributes()->date_pic, $datesPic);
  118. $Set2Process->setDatesPic(
  119. Date::ParseDates($datesPic[0], DATE_KIND_IMAGE, $Set2Process)
  120. );
  121. preg_match_all('/[0-9]{4}-[01][0-9]-[0123][0-9]/ix', (string)$Set->attributes()->date_vid, $datesVid);
  122. $Set2Process->setDatesVid(
  123. Date::ParseDates($datesVid[0], DATE_KIND_VIDEO, $Set2Process)
  124. );
  125. // Reset the Set's CONTAINS_WHAT
  126. $Set2Process->setContainsWhat(SET_CONTENT_NONE);
  127. if($Set2Process->getDatesPic())
  128. {
  129. $Set2Process->setContainsWhat(
  130. $Set2Process->getContainsWhat() | SET_CONTENT_IMAGE
  131. );
  132. }
  133. if($Set2Process->getDatesVid())
  134. {
  135. $Set2Process->setContainsWhat(
  136. $Set2Process->getContainsWhat() | SET_CONTENT_VIDEO
  137. );
  138. }
  139. if($Set2Process->getModel()->getFirstName() == 'Promotions')
  140. {
  141. $Set2Process->setContainsWhat(
  142. $Set2Process->getContainsWhat() | SET_CONTENT_VIDEO
  143. );
  144. }
  145. // Update the Set's CONTAINS_WHAT
  146. Set::Update($Set2Process, $CurrentUser);
  147. /* @var $Date Date */
  148. /* @var $dateInDb Date */
  149. foreach ($Set2Process->getDatesPic() as $Date)
  150. {
  151. $dateInDb = Date::FilterDates($DatesThisModel, NULL, NULL, $Set2Process->getID(), DATE_KIND_IMAGE, $Date->getTimeStamp());
  152. if($dateInDb)
  153. {
  154. $dateInDb = $dateInDb[0];
  155. $Date->setID($dateInDb->getID());
  156. }
  157. if(!$Date->getID())
  158. { Date::Insert($Date, $CurrentUser); }
  159. }
  160. foreach ($Set2Process->getDatesVid() as $Date)
  161. {
  162. $dateInDb = Date::FilterDates($DatesThisModel, NULL, NULL, $Set2Process->getID(), DATE_KIND_VIDEO, $Date->getTimeStamp());
  163. if($dateInDb)
  164. {
  165. $dateInDb = $dateInDb[0];
  166. $Date->setID($dateInDb->getID());
  167. }
  168. if(!$Date->getID())
  169. { Date::Insert($Date, $CurrentUser); }
  170. }
  171. if($Set->Images)
  172. {
  173. $ImagesInDb = Image::GetImages(new ImageSearchParameters(
  174. FALSE, FALSE,
  175. $Set2Process->getID()
  176. ));
  177. foreach($Set->Images->Image as $Image)
  178. {
  179. $ImageInDb = Image::Filter(
  180. $ImagesInDb,
  181. $Model2Process->getID(),
  182. $Set2Process->getID(),
  183. (string)$Image->attributes()->name
  184. );
  185. if($ImageInDb)
  186. { $ImageInDb = $ImageInDb[0]; }
  187. /* @var $Image2Process Image */
  188. $Image2Process = $ImageInDb ? $ImageInDb : new Image();
  189. $Image2Process->setSet($Set2Process);
  190. $Image2Process->setFileName((string)$Image->attributes()->name);
  191. $Image2Process->setFileExtension((string)$Image->attributes()->extension);
  192. $Image2Process->setImageHeight((int)$Image->attributes()->height);
  193. $Image2Process->setImageWidth((int)$Image->attributes()->width);
  194. $Image2Process->setFileSize((int)$Image->attributes()->filesize);
  195. $Image2Process->setFileCheckSum((string)$Image->attributes()->checksum);
  196. $Image2Process->setFileCRC32((string)$Image->attributes()->crc32);
  197. if($Image2Process->getID())
  198. {
  199. Image::Update($Image2Process, $CurrentUser);
  200. }
  201. else
  202. {
  203. Image::Insert($Image2Process, $CurrentUser);
  204. }
  205. $imagetags = Tag::GetTagArray((string)$Image->attributes()->tags);
  206. $Tag2AllThisImage = Tag2All::Filter($Tag2AllThisSet, NULL, $Model2Process->getID(), $Set2Process->getID(), $Image2Process->getID(), NULL);
  207. Tag2All::HandleTags($imagetags, $Tag2AllThisImage, $TagsInDB, $CurrentUser, $Model2Process->getID(), $Set2Process->getID(), $Image2Process->getID(), NULL, FALSE);
  208. }
  209. }
  210. if($Set->Videos)
  211. {
  212. foreach($Set->Videos->Video as $Video)
  213. {
  214. $VideoInDb = Video::Filter(
  215. $VideosInDb,
  216. $Model2Process->getID(),
  217. $Set2Process->getID(),
  218. (string)$Video->attributes()->name
  219. );
  220. if($VideoInDb)
  221. { $VideoInDb = $VideoInDb[0]; }
  222. /* @var $Video2Process Video */
  223. $Video2Process = $VideoInDb ? $VideoInDb : new Video();
  224. $Video2Process->setSet($Set2Process);
  225. $Video2Process->setFileName((string)$Video->attributes()->name);
  226. $Video2Process->setFileExtension((string)$Video->attributes()->extension);
  227. $Video2Process->setFileSize((int)$Video->attributes()->filesize);
  228. $Video2Process->setFileCheckSum((string)$Video->attributes()->checksum);
  229. $Video2Process->setFileCRC32((string)$Video->attributes()->crc32);
  230. if($Video2Process->getID())
  231. {
  232. Video::Update($Video2Process, $CurrentUser);
  233. }
  234. else
  235. {
  236. Video::Insert($Video2Process, $CurrentUser);
  237. }
  238. $videotags = Tag::GetTagArray((string)$Video->attributes()->tags);
  239. $Tag2AllThisVideo = Tag2All::Filter($Tag2AllThisSet, NULL, $Model2Process->getID(), $Set2Process->getID(), NULL, $Video2Process->getID());
  240. Tag2All::HandleTags($videotags, $Tag2AllThisVideo, $TagsInDB, $CurrentUser, $Model2Process->getID(), $Set2Process->getID(), NULL, $Video2Process->getID(), FALSE);
  241. }
  242. }
  243. }
  244. }
  245. if($fileToProcess != 'setup_data.xml')
  246. { unlink(realpath($fileToProcess)); }
  247. $infoSuccess = new Info($lang->g('MessageXMLImported'));
  248. Info::AddInfo($infoSuccess);
  249. if(isset($argv) && $argc > 0)
  250. { $bi->Finish(); }
  251. }
  252. HTMLstuff::RefererRedirect();
  253. ?>