Advertisement
Guest User

Untitled

a guest
Dec 5th, 2016
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.85 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4. * Class ffThemeBuilderElementManager
  5. */
  6. class ffThemeBuilderElementManager extends ffBasicObject {
  7. /**********************************************************************************************************************/
  8. /* OBJECTS
  9. /**********************************************************************************************************************/
  10. /**
  11. * @var ffCollection[ffThemeBuilderElement]
  12. */
  13. private $_elementCollection = null;
  14.  
  15. /**
  16. * @var ffThemeBuilderElementFactory
  17. */
  18. private $_themeBuilderElementFactory = null;
  19.  
  20. /**
  21. * @var ffThemeBuilderBlockManager
  22. */
  23. private $_themeBuilderBlockManager = null;
  24.  
  25. /**
  26. * @var ffThemeBuilderShortcodesStatusHolder
  27. */
  28. private $_statusHolder = null;
  29.  
  30. /**
  31. * @var ffCollection
  32. */
  33. private $_menuItemCollection = null;
  34.  
  35. /**
  36. * @var ffThemeBuilderColorLibrary
  37. */
  38. private $_colorLibrary;
  39.  
  40. /**********************************************************************************************************************/
  41. /* PRIVATE VARIABLES
  42. /**********************************************************************************************************************/
  43.  
  44. private $_isEditMode = false;
  45. /**********************************************************************************************************************/
  46. /* CONSTRUCT
  47. /**********************************************************************************************************************/
  48. public function __construct( ffCollection $elementCollection,
  49. ffCollection $menuItemCollection,
  50. ffThemeBuilderElementFactory $elementFactory,
  51. ffThemeBuilderShortcodesStatusHolder $statusHolder,
  52. ffThemeBuilderColorLibrary $colorLibrary ) {
  53.  
  54. $this->_setElementCollection( $elementCollection );
  55. $this->_setMenuItemCollection( $menuItemCollection );
  56. $this->_setThemeBuilderElementFactory( $elementFactory );
  57. $this->_setThemeBuilderBlockManager( ffContainer()->getThemeFrameworkFactory()->getThemeBuilderBlockManager() ) ;
  58. $this->_setStatusHolder( $statusHolder );
  59. $this->_setColorLibrary( $colorLibrary );
  60. }
  61.  
  62. public function addOverloadedElement( $elementClassName, $overloadedElementClassName ) {
  63.  
  64. $this->_getThemeBuilderElementFactory()->loadElement( $overloadedElementClassName );
  65. $this->addElement( $elementClassName );
  66. }
  67.  
  68. public function addElement( $elementClassName ) {
  69.  
  70.  
  71. $element = $this->_getThemeBuilderElementFactory()->createElement( $elementClassName );
  72. $element->setIsEditMode( $this->_isEditMode );
  73. $this->_getElementCollection()->addItem( $element, $element->getID() );
  74. }
  75.  
  76. public function addMenuItem( $name, $id ) {
  77. $menuItem = new ffStdClass();
  78. $menuItem->name = $name;
  79. $menuItem->id = $id;
  80.  
  81. $menuItemArray = $menuItem->getArray();
  82.  
  83. $this->_getMenuItemCollection()->addItem( $menuItemArray, $id );
  84. }
  85.  
  86. public function getAllElementsIds() {
  87. $toReturn = array();
  88.  
  89. foreach( $this->_getElementCollection() as $key => $value ) {
  90. $toReturn[] = $key;
  91. }
  92.  
  93. return $toReturn;
  94. }
  95.  
  96. public function setIsEditMode( $value ) {
  97. $this->_isEditMode = $value;
  98. foreach( $this->_getElementCollection() as $oneItem ) {
  99. $oneItem->setIsEditMode( $value );
  100. }
  101. }
  102.  
  103. public function getNonCacheableElements() {
  104. /**
  105. * @var $oneElement ffThemeBuilderElement
  106. */
  107. $nonCacheableElements = array();
  108. foreach( $this->_getElementCollection() as $oneElement ) {
  109. if( !$oneElement->getCanBeCached() ) {
  110. $nonCacheableElements[] = $oneElement->getID();
  111. }
  112. }
  113.  
  114. return $nonCacheableElements;
  115. }
  116.  
  117. public function getElementsData() {
  118. $cache = ffContainer()->getDataStorageCache();
  119. $data = null;
  120.  
  121. // if( defined('FF_BUILDER_CACHE') && FF_BUILDER_CACHE ) {
  122. $data = $cache->getOption('ffbuilder2', 'all' );
  123. // }
  124. //
  125. //
  126. if( empty( $data ) ) {
  127.  
  128. $data = array();
  129. $data['elements'] = array();
  130. /**
  131. * @var $element ffThemeBuilderElementBasic
  132. */
  133. foreach( $this->_getElementCollection() as $id => $element ) {
  134. if( $element->getIsHidden() ) {
  135. continue;
  136. }
  137.  
  138. $data['elements'][$id ] = $element->getElementDataForBuilder();
  139. }
  140.  
  141. $data['menuItems'] = array();
  142. foreach( $this->_getMenuItemCollection() as $id => $menuItem ) {
  143. $data['menuItems'][$id] = $menuItem;
  144. }
  145.  
  146. $data['blocks'] = $this->_getThemeBuilderBlockManager()->getBlocksData();
  147. $data['blocks_functions'] = $this->_getThemeBuilderBlockManager()->getBlocksJSFunctions();
  148.  
  149. $cache->setOption('ffbuilder2', 'all', json_encode($data));
  150.  
  151. } else {
  152. $data = json_decode( $data, true );
  153. }
  154.  
  155.  
  156. return $data;
  157. }
  158.  
  159. /**
  160. * @param $id
  161. * @return ffThemeBuilderElement
  162. */
  163. public function getElementById( $id ) {
  164. return $this->_getElementCollection()->getItemById( $id );
  165. }
  166. /**********************************************************************************************************************/
  167. /* PUBLIC FUNCTIONS
  168. /**********************************************************************************************************************/
  169.  
  170. /**********************************************************************************************************************/
  171. /* PUBLIC PROPERTIES
  172. /**********************************************************************************************************************/
  173. public function getElementsCollection() {
  174. return $this->_getElementCollection();
  175. }
  176. /**********************************************************************************************************************/
  177. /* PRIVATE FUNCTIONS
  178. /**********************************************************************************************************************/
  179.  
  180. /**********************************************************************************************************************/
  181. /* PRIVATE GETTERS & SETTERS
  182. /**********************************************************************************************************************/
  183. /**
  184. * @return ffCollection
  185. */
  186. private function _getElementCollection()
  187. {
  188. return $this->_elementCollection;
  189. }
  190.  
  191. /**
  192. * @param ffCollection $elementCollection
  193. */
  194. private function _setElementCollection($elementCollection)
  195. {
  196. $this->_elementCollection = $elementCollection;
  197. }
  198.  
  199. /**
  200. * @return ffThemeBuilderElementFactory
  201. */
  202. private function _getThemeBuilderElementFactory()
  203. {
  204. return $this->_themeBuilderElementFactory;
  205. }
  206.  
  207. /**
  208. * @param ffThemeBuilderElementFactory $themeBuilderElementFactory
  209. */
  210. private function _setThemeBuilderElementFactory($themeBuilderElementFactory)
  211. {
  212. $this->_themeBuilderElementFactory = $themeBuilderElementFactory;
  213. }
  214.  
  215. /**
  216. * @return ffCollection
  217. */
  218. private function _getMenuItemCollection()
  219. {
  220. return $this->_menuItemCollection;
  221. }
  222.  
  223. /**
  224. * @param ffCollection $menuItemCollection
  225. */
  226. private function _setMenuItemCollection($menuItemCollection)
  227. {
  228. $this->_menuItemCollection = $menuItemCollection;
  229. }
  230.  
  231. /**
  232. * @return ffThemeBuilderBlockManager
  233. */
  234. private function _getThemeBuilderBlockManager() {
  235. return $this->_themeBuilderBlockManager;
  236. }
  237.  
  238. /**
  239. * @param ffThemeBuilderBlockManager $themeBuilderBlockManager
  240. */
  241. private function _setThemeBuilderBlockManager($themeBuilderBlockManager) {
  242. $this->_themeBuilderBlockManager = $themeBuilderBlockManager;
  243. }
  244.  
  245. /**
  246. * @return ffThemeBuilderShortcodesStatusHolder
  247. */
  248. public function getStatusHolder() {
  249. return $this->_statusHolder;
  250. }
  251.  
  252. /**
  253. * @param ffThemeBuilderShortcodesStatusHolder $statusHolder
  254. */
  255. private function _setStatusHolder($statusHolder) {
  256. $this->_statusHolder = $statusHolder;
  257. }
  258.  
  259. /**
  260. * @return ffThemeBuilderColorLibrary
  261. */
  262. private function _getColorLibrary() {
  263. return $this->_colorLibrary;
  264. }
  265.  
  266. /**
  267. * @param ffThemeBuilderColorLibrary $colorLibrary
  268. */
  269. private function _setColorLibrary($colorLibrary) {
  270. $this->_colorLibrary = $colorLibrary;
  271. }
  272.  
  273. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement