Exemple #1
0
 function afterSave($created)
 {
     if (!empty($this->planningUpdate)) {
         if ($created) {
             App::import('Lib', 'SetMulti');
             //$this->log(var_export($this->planningUpdate, true),'debug');
             $this->planningUpdate = SetMulti::replaceTree('%pathId%', $this->id, $this->planningUpdate);
             //$this->log(var_export($this->planningUpdate, true),'debug');
             ///// Binding Listening /////
             /*if(empty($this->Event)){
             			$this->Event = ClassRegistry::init('Event');
             		}
             		$node_id = $this->Node->getNodeId($this->myNodeRef());
             		$data = array(
             			'aro_id' => null,
             			'aco_id' => $node_id,
             			'handler' => 'path',
             			'function' => 'bindListening',
             			'event_type_id' => 15,
             			'owner_id' => $node_id,
             			'phase' => 2,
             			'context' => 'path'.$this->id.'BindingListening',
             			'active' => 1,
             		);
             		//debug($data);
             		$this->Event->save($data);*/
         }
         $this->Character->savePlanningChanges($this->planningUpdate);
     }
     unset($this->planningUpdate);
 }
 function replaceTree($search = "", $replace = "", $array = false, $keys_too = false)
 {
     if (!is_array($array)) {
         // Regular replace
         if (!is_null($array)) {
             return str_replace($search, $replace, $array);
         } else {
             return $array;
         }
     }
     $newArr = array();
     foreach ($array as $k => $v) {
         // Replace keys as well?
         $add_key = $k;
         if ($keys_too) {
             $add_key = str_replace($search, $replace, $k);
         }
         // Recurse
         $newArr[$add_key] = SetMulti::replaceTree($search, $replace, $v, $keys_too);
     }
     return $newArr;
 }
Exemple #3
0
 function savePlanningChanges(&$model, $operations)
 {
     $default = array('save' => null, 'delete' => null, 'linksModif' => true);
     $opt = array_merge($default, (array) $operations);
     //////// get links modif ////////
     if (is_array($opt['linksModif'])) {
         $linksModif = $opt['linksModif'];
     } elseif ($opt['linksModif']) {
         $linksModif = $this->buildPlanifiedFollowingLinks($model, $opt['save'], $opt['delete'], array("dry" => true));
         if ($linksModif === false) {
             return false;
         }
     }
     //////// save modif and added ////////
     if (!empty($opt['save'])) {
         foreach ($opt['save'] as &$plan) {
             $model->Planning->create();
             if (!$model->Planning->save($plan)) {
                 return false;
             } else {
                 if (isset($plan['Planning'])) {
                     $update =& $plan['Planning'];
                 } else {
                     $update =& $plan;
                 }
                 $update['id'] = $model->Planning->id;
             }
         }
     }
     //////// delete ////////
     if (!empty($opt['delete'])) {
         $model->Planning->Behaviors->attach('Util');
         $deleteIds = $model->Planning->extractIds($opt['delete']);
         $model->Planning->deleteAll(array('Planning.id' => $deleteIds));
     }
     //////// apply links modif ////////
     if (!empty($linksModif['save'])) {
         foreach ($linksModif['save'] as $link) {
             if (isset($link['linkedToSave'])) {
                 App::import('Lib', 'SetMulti');
                 $link = SetMulti::replaceTree('%planId%', $opt['save'][$link['linkedToSave']]['id'], $link);
             }
             $model->NodeLink->create();
             if (!$model->NodeLink->save($link)) {
                 return false;
             }
         }
     }
     if (!empty($linksModif['delete'])) {
         $model->NodeLink->Behaviors->attach('Util');
         $deleteIds = $model->NodeLink->extractIds($linksModif['delete']);
         $model->NodeLink->deleteAll(array('NodeLink.id' => $deleteIds));
     }
     return true;
 }
 function alterEmailQuery($opt)
 {
     $Model = $this->EmailModel;
     $modelName = $Model->alias;
     if (!empty($opt)) {
         $NewsletterEmail = ClassRegistry::init('Newsletter.NewsletterEmail');
         App::import('Lib', 'Newsletter.SetMulti');
         $replace = array($NewsletterEmail->alias . '.email' => $this->realField('email'), $NewsletterEmail->alias => $modelName);
         $opt = SetMulti::replaceTree(array_keys($replace), array_values($replace), $opt);
     }
     $conditions = array();
     if (!empty($opt['active']) || !isset($opt['active']) && !$this->options['showInnactive']) {
         if ($opt['mode'] != 'count' && $this->options['checkUnsubscribe']) {
             $NewsletterEmail = ClassRegistry::init('Newsletter.NewsletterEmail');
             $opt['joins'][] = array('alias' => $NewsletterEmail->alias, 'table' => $NewsletterEmail->useTable, 'type' => 'LEFT', 'conditions' => array($this->realField('email') . ' = ' . $NewsletterEmail->alias . '.email'));
             $conditions[] = array('or' => array($NewsletterEmail->alias . '.active' => 1, $NewsletterEmail->alias . '.id IS NULL'));
         }
         if (!empty($this->options['fields']['active']) && $Model->hasField($this->options['fields']['active'])) {
             $conditions[$this->realField('active')] = 1;
         }
     }
     $conditions['NOT'][$this->realField('email')] = "";
     $conditions[] = $this->realField('email') . ' IS NOT NULL';
     if (!empty($this->options['conditions'])) {
         if (!array($this->options['conditions'])) {
             $this->options['conditions'] = array($this->options['conditions']);
         }
         $conditions = set::merge($conditions, $this->options['conditions']);
     }
     $opt['conditions'][] = $conditions;
     if ((empty($opt['mode']) || $opt['mode'] != 'count') && empty($opt['fields'])) {
         $opt['fields'] = $this->emailFields();
     }
     if (!empty($this->options['findOptions']) && is_array($this->options['findOptions'])) {
         $opt = set::merge($opt, $this->options['findOptions']);
     }
     return $opt;
 }
 function tabledEmailGetFindOptions($tableSendlist, $active = true, $addfindOptions = null)
 {
     $tableSendlist = $this->getTableSendlistID($tableSendlist, true);
     if (!empty($tableSendlist)) {
         $Model = $tableSendlist['modelClass'];
         $modelName = $Model->alias;
         $conditions = array();
         if ($active && !is_null($tableSendlist['activeField']) && $Model->hasField($tableSendlist['activeField'])) {
             $conditions[$modelName . '.' . $tableSendlist['activeField']] = 1;
         }
         $conditions['NOT'][$modelName . '.' . $tableSendlist['emailField']] = "";
         $conditions[] = $modelName . '.' . $tableSendlist['emailField'] . ' IS NOT NULL';
         if (!empty($tableSendlist['conditions'])) {
             if (!array($tableSendlist['conditions'])) {
                 $tableSendlist['conditions'] = array($tableSendlist['conditions']);
             }
             $conditions = set::merge($conditions, $tableSendlist['conditions']);
         }
         $findOptions = array('conditions' => $conditions);
         $findOptions['model'] = $Model;
         $findOptions['fields'] = $this->tabledEmailGetFindFields($tableSendlist);
         if (!empty($tableSendlist['findOptions']) && is_array($tableSendlist['findOptions'])) {
             $findOptions = set::merge($findOptions, $tableSendlist['findOptions']);
         }
         if (!empty($addfindOptions)) {
             $NewsletterEmail = ClassRegistry::init('Newsletter.NewsletterEmail');
             App::import('Lib', 'Newsletter.SetMulti');
             $replace = array($NewsletterEmail->alias . '.email' => $modelName . '.' . $tableSendlist['emailField'], $NewsletterEmail->alias => $modelName);
             $addfindOptions = SetMulti::replaceTree(array_keys($replace), array_values($replace), $addfindOptions);
             $findOptions = set::merge((array) $addfindOptions, $findOptions);
         }
         return $findOptions;
     }
     return null;
 }