private function deleteAllDuplicates(Model $model, $duplicateKey)
 {
     if ($model->deleteAll(array($this->getDuplicateKey($model) => $duplicateKey, 'duplicate' => true))) {
         return true;
     }
     return false;
 }
Example #2
0
 /**
  * Helper function called on gc for database sessions.
  *
  * @param integer $expires
  *        	Timestamp (defaults to current time)
  * @return boolean Success
  */
 public function gc($expires = null)
 {
     if (!$expires) {
         $expires = time();
     }
     return $this->_model->deleteAll(array($this->_model->alias . ".expires <" => $expires), false, false);
 }
Example #3
0
 /**
  * afterFind Callback
  * @param Model $Model
  * @see cake/libs/model/ModelBehavior#afterDelete($model)
  */
 function afterDelete(&$Model)
 {
     if ($this->__notAllow($Model)) {
         return true;
     }
     $this->I18n->deleteAll(array('model' => $Model->name, 'foreign_key' => $Model->id));
 }
 /**
  * Uninstall plugin
  *
  * @param Model $model Model using this behavior
  * @param array $data Plugin data
  * @return bool True on success
  * @throws InternalErrorException
  */
 public function uninstallPlugin(Model $model, $data)
 {
     $model->loadModels(['Plugin' => 'PluginManager.Plugin', 'PluginsRole' => 'PluginManager.PluginsRole', 'PluginsRoom' => 'PluginManager.PluginsRoom']);
     //トランザクションBegin
     $model->setDataSource('master');
     $dataSource = $model->getDataSource();
     $dataSource->begin();
     if (is_string($data)) {
         $key = $data;
     } else {
         $key = $data[$model->alias]['key'];
     }
     try {
         //Pluginの削除
         if (!$model->deleteAll(array($model->alias . '.key' => $key), false)) {
             throw new InternalErrorException(__d('net_commons', 'Internal Server Error'));
         }
         //PluginsRoomの削除
         if (!$model->PluginsRoom->deleteAll(array($model->PluginsRoom->alias . '.plugin_key' => $key), false)) {
             throw new InternalErrorException(__d('net_commons', 'Internal Server Error'));
         }
         //PluginsRoleの削除
         if (!$model->PluginsRole->deleteAll(array($model->PluginsRole->alias . '.plugin_key' => $key), false)) {
             throw new InternalErrorException(__d('net_commons', 'Internal Server Error'));
         }
         //トランザクションCommit
         $dataSource->commit();
     } catch (Exception $ex) {
         //トランザクションRollback
         $dataSource->rollback();
         CakeLog::error($ex);
         throw $ex;
     }
     return true;
 }
Example #5
0
 function deleteAll($conditions, $params = array())
 {
     if (!empty($this->cache) and Base::getConfig('cache') >= 1 and Base::getConfig('cache_query') >= 1) {
         $cache = Cache::getInstance($this->tablename . '.queries');
         $cache->destroy();
     }
     return parent::deleteAll($conditions, $params);
 }
Example #6
0
 /**
  * Helper function called on gc for database sessions.
  *
  * @param int $expires Timestamp (defaults to current time)
  *
  * @return bool Success
  */
 public function gc($expires = NULL)
 {
     if (!$expires) {
         $expires = time();
     } else {
         $expires = time() - $expires;
     }
     return $this->_model->deleteAll(array($this->_model->alias . ".expires <" => $expires), FALSE, FALSE);
 }
Example #7
0
 /**
  * Set current version for given type
  *
  * @param integer $version Current version
  * @param string $type Can be 'app' or a plugin name
  * @param boolean $migrated If true, will add the record to the database
  * 		If false, will remove the record from the database
  * @return boolean
  * @access public
  */
 public function setVersion($version, $type, $migrated = true)
 {
     if ($migrated) {
         $this->Version->create();
         return $this->Version->save(array('version' => $version, 'type' => $type));
     } else {
         $conditions = array($this->Version->alias . '.version' => $version, $this->Version->alias . '.type' => $type);
         return $this->Version->deleteAll($conditions);
     }
 }
Example #8
0
 function deleteAll($conditions, $cascade = true, $callbacks = false, $recursive = -1)
 {
     if (!isset($recursive)) {
         $recursive = $this->recursive;
     }
     if ($recursive == -1) {
         $this->unbindModel(array('belongsTo' => array_keys($this->belongsTo), 'hasOne' => array_keys($this->hasOne)), true);
     }
     return parent::deleteAll($conditions, $cascade, $callbacks);
 }
 /**
  * Override deleteAll() to use softDeleteAll() from behavior
  * Necessary as can't be done using callbacks
  * @param  array   $conditions Search conditions to find records to delete
  * @param  boolean $cascade    Whether to delete related records
  * @param  boolean $callbacks  Whether to call callbacks
  * @return boolean             Whether the deletes were successful
  */
 public function deleteAll($conditions, $cascade = true, $callbacks = false)
 {
     if (empty($conditions)) {
         return false;
     }
     if ($this->Behaviors->hasMethod('softDeleteAll')) {
         return $this->softDeleteAll($conditions, $cascade, $callbacks);
     } else {
         return parent::deleteAll($conditions, $cascade, $callbacks);
     }
 }
Example #10
0
 /**
  * Set current version for given type
  *
  * @param integer $version Current version
  * @param string $type Can be 'app' or a plugin name
  * @param boolean $migrated If true, will add the record to the database
  * 		If false, will remove the record from the database
  * @return boolean
  */
 public function setVersion($version, $type, $migrated = true)
 {
     if ($type !== 'app') {
         $type = Inflector::camelize($type);
     }
     $mapping = $this->getMapping($type);
     // For BC, 002 was not applied yet.
     $bc = $this->Version->schema('class') === null;
     $field = $bc ? 'version' : 'class';
     $value = $bc ? $version : $mapping[$version]['class'];
     if ($migrated) {
         $this->Version->create();
         $result = $this->Version->save(array($field => $value, 'type' => $type));
     } else {
         $conditions = array($this->Version->alias . '.' . $field => $value, $this->Version->alias . '.type' => $type);
         $result = $this->Version->deleteAll($conditions);
     }
     // Clear mapping cache
     unset($this->__mapping[$type]);
     return $result;
 }
Example #11
0
 /**
  * Recover a corrupted tree
  *
  * The mode parameter is used to specify the source of info that is valid/correct. The opposite source of data
  * will be populated based upon that source of info. E.g. if the MPTT fields are corrupt or empty, with the $mode
  * 'parent' the values of the parent_id field will be used to populate the left and right fields. The missingParentAction
  * parameter only applies to "parent" mode and determines what to do if the parent field contains an id that is not present.
  *
  * @todo Could be written to be faster, *maybe*. Ideally using a subquery and putting all the logic burden on the DB.
  * @param Model $Model Model instance
  * @param string $mode parent or tree
  * @param mixed $missingParentAction 'return' to do nothing and return, 'delete' to
  * delete, or the id of the parent to set as the parent_id
  * @return boolean true on success, false on failure
  * @link http://book.cakephp.org/2.0/en/core-libraries/behaviors/tree.html#TreeBehavior::recover
  */
 public function recover($Model, $mode = 'parent', $missingParentAction = null)
 {
     if (is_array($mode)) {
         extract(array_merge(array('mode' => 'parent'), $mode));
     }
     extract($this->settings[$Model->alias]);
     $Model->recursive = $recursive;
     if ($mode == 'parent') {
         $Model->bindModel(array('belongsTo' => array('VerifyParent' => array('className' => $Model->name, 'foreignKey' => $parent, 'fields' => array($Model->primaryKey, $left, $right, $parent)))));
         $missingParents = $Model->find('list', array('recursive' => 0, 'conditions' => array($scope, array('NOT' => array($Model->escapeField($parent) => null), $Model->VerifyParent->escapeField() => null))));
         $Model->unbindModel(array('belongsTo' => array('VerifyParent')));
         if ($missingParents) {
             if ($missingParentAction == 'return') {
                 foreach ($missingParents as $id => $display) {
                     $this->errors[] = 'cannot find the parent for ' . $Model->alias . ' with id ' . $id . '(' . $display . ')';
                 }
                 return false;
             } elseif ($missingParentAction == 'delete') {
                 $Model->deleteAll(array($Model->primaryKey => array_flip($missingParents)));
             } else {
                 $Model->updateAll(array($parent => $missingParentAction), array($Model->escapeField($Model->primaryKey) => array_flip($missingParents)));
             }
         }
         $count = 1;
         foreach ($Model->find('all', array('conditions' => $scope, 'fields' => array($Model->primaryKey), 'order' => $left)) as $array) {
             $lft = $count++;
             $rght = $count++;
             $Model->create(false);
             $Model->id = $array[$Model->alias][$Model->primaryKey];
             $Model->save(array($left => $lft, $right => $rght), array('callbacks' => false));
         }
         foreach ($Model->find('all', array('conditions' => $scope, 'fields' => array($Model->primaryKey, $parent), 'order' => $left)) as $array) {
             $Model->create(false);
             $Model->id = $array[$Model->alias][$Model->primaryKey];
             $this->_setParent($Model, $array[$Model->alias][$parent]);
         }
     } else {
         $db = ConnectionManager::getDataSource($Model->useDbConfig);
         foreach ($Model->find('all', array('conditions' => $scope, 'fields' => array($Model->primaryKey, $parent), 'order' => $left)) as $array) {
             $path = $this->getPath($Model, $array[$Model->alias][$Model->primaryKey]);
             if ($path == null || count($path) < 2) {
                 $parentId = null;
             } else {
                 $parentId = $path[count($path) - 2][$Model->alias][$Model->primaryKey];
             }
             $Model->updateAll(array($parent => $db->value($parentId, $parent)), array($Model->escapeField() => $array[$Model->alias][$Model->primaryKey]));
         }
     }
     return true;
 }
Example #12
0
 /**
  * beforeDelete
  *
  * @param	Model	$model
  * @return	void
  * @access	public
  */
 function beforeDelete(&$model)
 {
     // プラグインコンテンツを自動削除する
     $this->PluginContent->deleteAll(array('name' => $model->data[$model->alias]['name']));
 }
Example #13
0
 /**
  * Deletes multiple model records based on a set of conditions.
  *
  * @param mixed $conditions Conditions to match
  * @param boolean $cascade Set to true to delete records that depend on this record
  * @param boolean $callbacks Run callbacks (not being used)
  * @return boolean True on success, false on failure
  * @access public
  * @link http://book.cakephp.org/view/692/deleteAll
  */
 public function deleteAll($conditions, $cascade = true, $callbacks = false)
 {
     $result = parent::deleteAll($conditions, $cascade, $callbacks);
     if ($result) {
         if ($this->Behaviors->attached('BcCache') && $this->Behaviors->enabled('BcCache')) {
             $this->delCache($this);
         }
     }
     return $result;
 }
Example #14
0
 public function send_mail($locale, $status, $mailsendqueue, $mail_config, $mailsendname = '')
 {
     if (isset($status) && $status != 1) {
         $this_model = new Model(false, 'mail_send_queues');
         $this_model->deleteAll(array('flag' => '5'));
         $mail_send_queue_info = $this_model->find('all', array('limit' => '10', 'order' => 'id asc'));
         $this_model->saveAll($mailsendqueue);
         return false;
     } else {
         $this->set_appconfigs($locale);
         $this->smtpauth = isset($mail_config['mail-requires-authorization']) ? trim($mail_config['mail-requires-authorization']) : 1;
         $this->is_ssl = trim($mail_config['mail-ssl']);
         $this->is_mail_smtp = trim($mail_config['mail-service']);
         $this->smtp_port = trim($mail_config['mail-port']);
         $this->smtpHostNames = trim($mail_config['mail-smtp']);
         $this->smtpUserName = trim($mail_config['mail-account']);
         $this->smtpPassword = trim($mail_config['mail-password']);
         $this->from = $mail_config['mail-address'];
         $this_model = new Model(false, 'mail_send_histories');
         $this->sendAs = $mailsendqueue['sendas'];
         $this->fromName = $mailsendqueue['sender_name'];
         $subject = $mailsendqueue['title'];
         $this->subject = $mailsendqueue['title'];
         //eval("\$subject = \"$subject\";");
         //$this->subject="=?utf-8?B?".base64_encode($subject)."?=";
         if (is_array($mailsendqueue['receiver_email'])) {
             $to_email_and_name_arr = $mailsendqueue['receiver_email'];
             $i = 0;
             foreach ($to_email_and_name_arr as $k => $v) {
                 if (strpos($v, ';')) {
                     $to_email_and_name = explode(';', $v);
                     $to_name[$i] = $to_email_and_name[0];
                     $to_email[$i] = $to_email_and_name[1];
                     ++$i;
                 }
             }
         } else {
             $to_email_and_name = explode(';', $mailsendqueue['receiver_email']);
             $to_name[] = $to_email_and_name[0];
             $to_email[] = $to_email_and_name[1];
         }
         $mailsendqueue['receiver_email'] = json_encode($mailsendqueue['receiver_email']);
         if (is_array($mailsendqueue['cc_email'])) {
             $addcc_to_email_and_name_arr = $mailsendqueue['cc_email'];
             $i = 0;
             foreach ($addcc_to_email_and_name_arr as $k => $v) {
                 if (strpos($v, ';')) {
                     $addcc_to_email_and_name = explode(';', $v);
                     $addcc_to_name[$i] = $addcc_to_email_and_name[0];
                     //�ռ�������
                     $addcc_to_email[$i] = $addcc_to_email_and_name[1];
                     //�ռ���email
                     ++$i;
                 }
             }
         } else {
             if (trim($mailsendqueue['cc_email']) != '' && trim($mailsendqueue['cc_email']) != ';') {
                 $addcc_to_email_and_name = explode(';', $mailsendqueue['cc_email']);
                 if (trim($addcc_to_email_and_name[0]) != '' && trim($addcc_to_email_and_name[1]) != ';') {
                     $addcc_to_name[] = $addcc_to_email_and_name[0];
                     //�ռ�������
                     $addcc_to_email[] = $addcc_to_email_and_name[1];
                     //�ռ���email
                 }
             }
         }
         $mailsendqueue['cc_email'] = json_encode($mailsendqueue['cc_email']);
         if (is_array($mailsendqueue['bcc_email'])) {
             $addbcc_to_email_and_name_arr = $mailsendqueue['bcc_email'];
             $i = 0;
             foreach ($addbcc_to_email_and_name_arr as $k => $v) {
                 if (strpos($v, ';')) {
                     $addbcc_to_email_and_name = explode(';', $v);
                     $addbcc_to_name[$i] = $addbcc_to_email_and_name[0];
                     //�ռ�������
                     $addbcc_to_email[$i] = $addbcc_to_email_and_name[1];
                     //�ռ���email
                     ++$i;
                 }
             }
         } else {
             if (trim($mailsendqueue['bcc_email']) != '' && trim($mailsendqueue['bcc_email']) != ';') {
                 $addbcc_to_email_and_name = explode(';', $mailsendqueue['bcc_email']);
                 if (trim($addbcc_to_email_and_name[0]) != '' && trim($addbcc_to_email_and_name[1]) != ';') {
                     $addbcc_to_name[] = $addbcc_to_email_and_name[0];
                     //�ռ�������
                     $addbcc_to_email[] = $addbcc_to_email_and_name[1];
                     //�ռ���email
                 }
             }
         }
         $mailsendqueue['bcc_email'] = json_encode($mailsendqueue['bcc_email']);
         $this->html_body = $mailsendqueue['html_body'];
         $this->text_body = $mailsendqueue['text_body'];
         for ($i = 0; $i < count($to_email); ++$i) {
             $this->toName[$i] = trim($to_name[$i]);
             $this->to[$i] = trim($to_email[$i]);
         }
         if (isset($addcc_to_name)) {
             for ($i = 0; $i < count($addcc_to_name); ++$i) {
                 $this->addcctoName[$i] = trim($addcc_to_name[$i]);
                 $this->addccto[$i] = trim($addcc_to_email[$i]);
             }
         }
         if (isset($addbcc_to_name)) {
             for ($i = 0; $i < count($addbcc_to_name); ++$i) {
                 $this->addbcctoname[$i] = trim($addbcc_to_name[$i]);
                 $this->addbccto[$i] = trim($addbcc_to_email[$i]);
             }
         }
         $mail_status = $this->send($mailsendname);
         if ($mail_status === true) {
             $mailsendqueue['flag'] = $mail_status;
         } else {
             $mailsendqueue['flag'] = 0;
             $mailsendqueue['error_msg'] = $mail_status;
         }
         $this_model->saveAll($mailsendqueue);
         if ($mail_status) {
             return true;
         } else {
             return false;
         }
     }
 }
Example #15
0
 /**
  * Revert all rows matching conditions to given date.
  * Model rows outside condition or not edited will not be affected. Edits since date
  * will be reverted and rows created since date deleted.
  *
  * @param object $Model
  * @param array $options 'conditions','date'
  * @return boolean success
  */
 public function revertAll(Model $Model, $options = array())
 {
     if (!$Model->ShadowModel) {
         trigger_error('RevisionBehavior: ShadowModel doesnt exist.', E_USER_WARNING);
         return false;
     }
     if (empty($options) || !isset($options['date'])) {
         return false;
     }
     if (!isset($options['conditions'])) {
         $options['conditions'] = array();
     }
     // leave model rows out side of condtions alone
     // leave model rows not edited since date alone
     $all = $Model->find('all', array('conditions' => $options['conditions'], 'fields' => $Model->primaryKey));
     $allIds = Set::extract($all, '/' . $Model->alias . '/' . $Model->primaryKey);
     $cond = $options['conditions'];
     $cond['version_created <'] = $options['date'];
     $created_before_date = $Model->ShadowModel->find('all', array('order' => $Model->primaryKey, 'conditions' => $cond, 'fields' => array('version_id', $Model->primaryKey)));
     $created_before_dateIds = Set::extract($created_before_date, '/' . $Model->alias . '/' . $Model->primaryKey);
     $deleteIds = array_diff($allIds, $created_before_dateIds);
     // delete all Model rows where there are only version_created later than date
     $Model->deleteAll(array($Model->alias . '.' . $Model->primaryKey => $deleteIds), false, true);
     unset($cond['version_created <']);
     $cond['version_created >='] = $options['date'];
     $created_after_date = $Model->ShadowModel->find('all', array('order' => $Model->primaryKey, 'conditions' => $cond, 'fields' => array('version_id', $Model->primaryKey)));
     $created_after_dateIds = Set::extract($created_after_date, '/' . $Model->alias . '/' . $Model->primaryKey);
     $updateIds = array_diff($created_after_dateIds, $deleteIds);
     $revertSuccess = true;
     // update model rows that have version_created earlier than date to latest before date
     foreach ($updateIds as $mid) {
         $Model->id = $mid;
         if (!$Model->revertToDate($options['date'])) {
             $revertSuccess = false;
         }
     }
     return $revertSuccess;
 }
 public function deleteAll($conditions, $cascade = true, $callbacks = false)
 {
     $this->useMasterDb();
     return parent::deleteAll($conditions, $cascade, $callbacks);
 }
Example #17
0
 /**
  * Bulk Delete
  *
  * @param Model $model Model object
  * @param array $ids Array of IDs
  * @return boolean True on success, false on failure
  */
 public function bulkDelete(Model $model, $ids)
 {
     return $model->deleteAll(array($model->escapeField() => $ids), true, true);
 }
 /**
  * beforeDelete
  *
  * @param	Model	$model
  * @return	void
  * @access	public
  */
 public function beforeDelete(Model $model, $cascade = true)
 {
     // プラグインコンテンツを自動削除する
     $this->PluginContent->deleteAll(array('name' => $model->data[$model->alias]['name']));
 }
Example #19
0
	   public function deleteAll($conditions, $cascade = true, $callbacks = true) {
		   parent::deleteAll($conditions, $cascade, $callbacks);
	   }
Example #20
0
 public function cleanDrafts(Model $model)
 {
     return $model->deleteAll(array('online' => -1));
 }