88 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| 
 | |
| namespace Nextend\SmartSlider3\BackgroundAnimation;
 | |
| 
 | |
| 
 | |
| use Nextend\Framework\Pattern\SingletonTrait;
 | |
| use Nextend\Framework\Plugin;
 | |
| 
 | |
| class BackgroundAnimationStorage {
 | |
| 
 | |
|     use SingletonTrait;
 | |
| 
 | |
|     private $sets = array();
 | |
| 
 | |
|     private $animation = array();
 | |
| 
 | |
|     private $animationBySet = array();
 | |
| 
 | |
|     private $animationById = array();
 | |
| 
 | |
|     protected function init() {
 | |
|         Plugin::addAction('smartsliderbackgroundanimationset', array(
 | |
|             $this,
 | |
|             'animationSet'
 | |
|         ));
 | |
|         Plugin::addAction('smartsliderbackgroundanimation', array(
 | |
|             $this,
 | |
|             'animations'
 | |
|         ));
 | |
|         Plugin::addAction('backgroundanimation', array(
 | |
|             $this,
 | |
|             'animation'
 | |
|         ));
 | |
|     }
 | |
| 
 | |
|     private function load() {
 | |
|         static $loaded;
 | |
|         if (!$loaded) {
 | |
|             Plugin::doAction('backgroundAnimationStorage', array(
 | |
|                 &$this->sets,
 | |
|                 &$this->animation
 | |
|             ));
 | |
| 
 | |
|             for ($i = 0; $i < count($this->animation); $i++) {
 | |
|                 if (!isset($this->animationBySet[$this->animation[$i]['referencekey']])) {
 | |
|                     $this->animationBySet[$this->animation[$i]['referencekey']] = array();
 | |
|                 }
 | |
|                 $this->animationBySet[$this->animation[$i]['referencekey']][] = &$this->animation[$i];
 | |
|                 $this->animationById[$this->animation[$i]['id']]              = &$this->animation[$i];
 | |
|             }
 | |
|             $loaded = true;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function animationSet($referenceKey, &$sets) {
 | |
|         $this->load();
 | |
| 
 | |
|         for ($i = count($this->sets) - 1; $i >= 0; $i--) {
 | |
|             $this->sets[$i]['isSystem'] = 1;
 | |
|             $this->sets[$i]['editable'] = 0;
 | |
|             array_unshift($sets, $this->sets[$i]);
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public function animations($referenceKey, &$animation) {
 | |
|         $this->load();
 | |
|         if (isset($this->animationBySet[$referenceKey])) {
 | |
|             $_animation = &$this->animationBySet[$referenceKey];
 | |
|             for ($i = count($_animation) - 1; $i >= 0; $i--) {
 | |
|                 $_animation[$i]['isSystem'] = 1;
 | |
|                 $_animation[$i]['editable'] = 0;
 | |
|                 array_unshift($animation, $_animation[$i]);
 | |
|             }
 | |
| 
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function animation($id, &$animation) {
 | |
|         $this->load();
 | |
|         if (isset($this->animationById[$id])) {
 | |
|             $this->animationById[$id]['isSystem'] = 1;
 | |
|             $this->animationById[$id]['editable'] = 0;
 | |
|             $animation                            = $this->animationById[$id];
 | |
|         }
 | |
|     }
 | |
| } |