/includes/factory.php

https://github.com/archoo/electionleaflets · PHP · 291 lines · 265 code · 13 blank · 13 comment · 42 complexity · 4aca8d336da3376da12b274179dfea9e MD5 · raw file

  1. <?php
  2. /** @internal Set Callback for object unserialization */
  3. ini_set('unserialize_callback_func', 'unserialize_callback_factory');
  4. require_once('table_classes/leaflet.php');
  5. require_once('table_classes/party.php');
  6. require_once('table_classes/category.php');
  7. require_once('table_classes/constituency.php');
  8. class factory {
  9. public static function create ($class_name, $element_id=null, $cache=false, $require_only=false) {
  10. $object = null;
  11. switch ($class_name) {
  12. case 'search':
  13. require_once('search.php');
  14. if (!$require_only) {
  15. $object = new searcher();
  16. }
  17. break;
  18. case 'leaflet_search':
  19. require_once('leaflet_search.php');
  20. if (!$require_only) {
  21. $object = new leaflet_search();
  22. }
  23. break;
  24. case 'application':
  25. require_once('application.php');
  26. if (!$require_only) {
  27. $object = new application();
  28. }
  29. break;
  30. case 'australian_postcode':
  31. require_once( 'table_classes/config.php' );
  32. require_once('table_classes/australian_postcode.php');
  33. if (!$require_only) {
  34. $object = DB_DataObject::factory($class_name);
  35. }
  36. case 'election':
  37. require_once( 'table_classes/config.php' );
  38. require_once('table_classes/election.php');
  39. if (!$require_only) {
  40. $object = DB_DataObject::factory($class_name);
  41. }
  42. case 'category':
  43. require_once( 'table_classes/config.php' );
  44. require_once('table_classes/category.php');
  45. if (!$require_only) {
  46. $object = DB_DataObject::factory($class_name);
  47. }
  48. case 'category_election':
  49. require_once( 'table_classes/config.php' );
  50. require_once('table_classes/category_election.php');
  51. if (!$require_only) {
  52. $object = DB_DataObject::factory($class_name);
  53. }
  54. case 'rate_type':
  55. require_once( 'table_classes/config.php' );
  56. require_once('table_classes/rate_type.php');
  57. if (!$require_only) {
  58. $object = DB_DataObject::factory($class_name);
  59. }
  60. case 'rate_value':
  61. require_once( 'table_classes/config.php' );
  62. require_once('table_classes/rate_value.php');
  63. if (!$require_only) {
  64. $object = DB_DataObject::factory($class_name);
  65. }
  66. case 'rate_interesting':
  67. require_once( 'table_classes/config.php' );
  68. require_once('table_classes/rate_interesting.php');
  69. if (!$require_only) {
  70. $object = DB_DataObject::factory($class_name);
  71. }
  72. case 'image_que':
  73. require_once( 'table_classes/config.php' );
  74. require_once('table_classes/image_que.php');
  75. if (!$require_only) {
  76. $object = DB_DataObject::factory($class_name);
  77. }
  78. case 'email_alert':
  79. require_once( 'table_classes/config.php' );
  80. require_once('table_classes/email_alert.php');
  81. if (!$require_only) {
  82. $object = DB_DataObject::factory($class_name);
  83. }
  84. break;
  85. case 'constituency':
  86. require_once( 'table_classes/config.php' );
  87. require_once('table_classes/constituency.php');
  88. if (!$require_only) {
  89. $object = DB_DataObject::factory($class_name);
  90. }
  91. break;
  92. case 'constituency_election':
  93. require_once( 'table_classes/config.php' );
  94. require_once('table_classes/constituency_election.php');
  95. if (!$require_only) {
  96. $object = DB_DataObject::factory($class_name);
  97. }
  98. break;
  99. case 'country':
  100. require_once( 'table_classes/config.php' );
  101. require_once('table_classes/country.php');
  102. if (!$require_only) {
  103. $object = DB_DataObject::factory($class_name);
  104. }
  105. break;
  106. case 'constituency':
  107. require_once( 'table_classes/config.php' );
  108. require_once('table_classes/constituency.php');
  109. if (!$require_only) {
  110. $object = DB_DataObject::factory($class_name);
  111. }
  112. break;
  113. case 'constituency_type':
  114. require_once( 'table_classes/config.php' );
  115. require_once('table_classes/constituency_type.php');
  116. if (!$require_only) {
  117. $object = DB_DataObject::factory($class_name);
  118. }
  119. break;
  120. case 'leaflet':
  121. require_once( 'table_classes/config.php' );
  122. require_once('table_classes/leaflet.php');
  123. if (!$require_only) {
  124. $object = DB_DataObject::factory($class_name);
  125. }
  126. case 'leaflet_category':
  127. require_once( 'table_classes/config.php' );
  128. require_once('table_classes/leaflet_category.php');
  129. if (!$require_only) {
  130. $object = DB_DataObject::factory($class_name);
  131. }
  132. break;
  133. case 'leaflet_image':
  134. require_once( 'table_classes/config.php' );
  135. require_once('table_classes/leaflet_image.php');
  136. if (!$require_only) {
  137. $object = DB_DataObject::factory($class_name);
  138. }
  139. break;
  140. case 'leaflet_constituency':
  141. require_once( 'table_classes/config.php' );
  142. require_once('table_classes/leaflet_constituency.php');
  143. if (!$require_only) {
  144. $object = DB_DataObject::factory($class_name);
  145. }
  146. break;
  147. case 'leaflet_party_attack':
  148. require_once( 'table_classes/config.php' );
  149. require_once('table_classes/leaflet_party_attack.php');
  150. if (!$require_only) {
  151. $object = DB_DataObject::factory($class_name);
  152. }
  153. break;
  154. case 'leaflet_tag':
  155. require_once( 'table_classes/config.php' );
  156. require_once('table_classes/leaflet_tag.php');
  157. if (!$require_only) {
  158. $object = DB_DataObject::factory($class_name);
  159. }
  160. break;
  161. case 'leaflet_category':
  162. require_once( 'table_classes/config.php' );
  163. require_once('table_classes/leaflet_category.php');
  164. if (!$require_only) {
  165. $object = DB_DataObject::factory($class_name);
  166. }
  167. break;
  168. case 'leaflet_election':
  169. require_once( 'table_classes/config.php' );
  170. require_once('table_classes/leaflet_election.php');
  171. if (!$require_only) {
  172. $object = DB_DataObject::factory($class_name);
  173. }
  174. break;
  175. case 'party':
  176. require_once( 'table_classes/config.php' );
  177. require_once('table_classes/party.php');
  178. if (!$require_only) {
  179. $object = DB_DataObject::factory($class_name);
  180. }
  181. break;
  182. case 'party_election':
  183. require_once( 'table_classes/config.php' );
  184. require_once('table_classes/party_election.php');
  185. if (!$require_only) {
  186. $object = DB_DataObject::factory($class_name);
  187. }
  188. break;
  189. case 'promise':
  190. require_once( 'table_classes/config.php' );
  191. require_once('table_classes/promise.php');
  192. if (!$require_only) {
  193. $object = DB_DataObject::factory($class_name);
  194. }
  195. break;
  196. case 'tag':
  197. require_once( 'table_classes/config.php' );
  198. require_once('table_classes/tag.php');
  199. if (!$require_only) {
  200. $object = DB_DataObject::factory($class_name);
  201. }
  202. break;
  203. case 'json':
  204. require_once('json.php');
  205. if (!$require_only) {
  206. $object = new Services_JSON();
  207. }
  208. break;
  209. case 'geocoder':
  210. require_once('geocoder.php');
  211. if (!$require_only) {
  212. $object = new geocoder();
  213. }
  214. break;
  215. case 'image':
  216. require_once('image.php');
  217. if (!$require_only) {
  218. $object = new image();
  219. }
  220. break;
  221. case 'geograph':
  222. require_once('apis/geograph.php');
  223. if (!$require_only) {
  224. $object = new geograph();
  225. }
  226. case 'twfy':
  227. require_once('apis/theyworkforyou.php');
  228. if (!$require_only) {
  229. $object = new TWFYAPI(THEYWORKFORYOU_API_KEY);
  230. }
  231. break;
  232. case 's3':
  233. require_once('apis/s3/S3.php');
  234. if (!$require_only) {
  235. $object = new S3();
  236. }
  237. break;
  238. case 'pdfer':
  239. require_once('pdfer.php');
  240. if (!$require_only) {
  241. $object = new pdfer();
  242. }
  243. break;
  244. // Catch all
  245. default:
  246. if (!$require_only) {
  247. trigger_error('Unknown class: ' . $class_name, 'The class that was thrown at this factory method is unknown. Check that you\'re passing the right data or that you haven\'t forgotten to define the class here!');
  248. }
  249. else {
  250. // We'll mention something in the error log as this is an
  251. // error
  252. error_log('Could not load class ' . $class_name . ' via require_only in teh factory');
  253. }
  254. break;
  255. }
  256. // And if we're here, we should have an object that we can now apply
  257. // the loading rules to
  258. return factory::load($object, $element_id, $cache);
  259. }
  260. private static function load($object, $element_id, $cache=false) {
  261. if (isset($element_id) && ($element_id === 0 || !empty($element_id))) {
  262. // We need to load data for this item
  263. $object->element_id = $element_id;
  264. $object->load($cache);
  265. }
  266. return $object;
  267. }
  268. }
  269. /**
  270. * This function will be called automatically when unserialize attempts to
  271. * create an object that it doesn't know about. In order for it to do what it
  272. * needs to do, we need to require the correct file, so we're just going to pass
  273. * this through the factory which will require what is required (hopefully)
  274. */
  275. function unserialize_callback_factory($classname) {
  276. factory::create($classname, null, null, true);
  277. }
  278. ?>