public static function doUpdateIndex(Page $page) { // Re-index related pages $pages = $page->getDependantPages(); $pages[] = $page; foreach ($pages as $page) { Curry_Backend_Indexer::updateItem($page); } }
public function render(Curry_Backend $backend, array $params) { $item = $this->getSelection($params); if (!isset($item)) { throw new Exception('No item to delete'); } $name = method_exists($item, '__toString') ? '`' . htmlspecialchars((string) $item) . '`' : 'this item'; if (isPost() && $_POST['do_delete']) { $pk = $item->getPrimaryKey(); $item->delete(); // Trigger update event $backend->createModelUpdateEvent($this->modelClass, $pk, 'update'); if ($item instanceof Curry_ISearchable) { Curry_Backend_Indexer::removeItem($item); } $backend->addMainContent('<p>' . $name . ' has been deleted.</p>'); } else { $backend->addMainContent('<form method="post" action="' . url('', $params) . '">' . '<input type="hidden" name="do_delete" value="1" />' . '<p>Do you really want to delete ' . $name . '?</p>' . '<button type="submit" class="btn btn-danger">Delete</button>' . '</form>'); } }
public function show(Request $request) { $modelClass = $this->modelClass; $items = array(); if ($this['id'] === ':id' && $request->query->has('item')) { $pks = array_map(function ($i) { return json_decode($i, true); }, $request->query->get('item', array())); if ($pks && $this->parent instanceof AbstractBackend) { $items = \PropelQuery::from($this->parent->getModelClass())->findPks($pks)->getArrayCopy(); } } else { $items = array($this->getSelection()); } $items = array_filter($items, function ($item) use($modelClass) { return $item instanceof $modelClass; }); if (!count($items)) { throw new \Exception('No item to delete'); } $names = array_map(function ($item) { return method_exists($item, '__toString') ? '`' . htmlspecialchars((string) $item) . '`' : 'this item'; }, $items); if ($request->isMethod('POST') && $request->request->get('do_delete')) { foreach ($items as $i => $item) { $pk = $item->getPrimaryKey(); $item->delete(); // Trigger update event //$this->createModelUpdateEvent($this->modelClass, $pk, 'delete'); if ($item instanceof \Curry_ISearchable) { \Curry_Backend_Indexer::removeItem($item); } } $this->addMainContent('<p>' . $names[$i] . ' has been deleted.</p>'); } else { $this->addMainContent('<form method="post">' . '<input type="hidden" name="do_delete" value="1" />' . '<p>Do you really want to delete ' . join(', ', $names) . '?</p>' . '<button type="submit" class="btn btn-danger">Delete</button>' . '</form>'); } return parent::render(); }
/** * Rebuild search index using a single request. * * @throws Exception */ public function showRebuildAll() { if (URL::validate()) { // Override and increase max execution time if set $timeLimit = ini_get('max_execution_time'); if ($timeLimit && $timeLimit < 250) { @set_time_limit(250); } Curry_Backend_Indexer::initRebuild(); Curry_Backend_Indexer::doRebuild(); $ses = new \Zend\Session\Container(__CLASS__); if ($ses->failed) { $this->addMessage($ses->failed . ' entries failed indexing.', self::MSG_WARNING); } $this->addMainMenu(); $this->addMessage('Search index rebuilt, ' . $ses->success . ' entries updated successfully.', self::MSG_SUCCESS); } else { throw new Exception('Invalid rebuild link!'); } }
public function render(Curry_Backend $backend, array $params) { $modelClass = $this->modelForm->getModelClass(); $item = $this->getSelection($params); if (!isset($item)) { $item = new $modelClass(); $relatedItem = $this->getParentSelection($params); if ($relatedItem) { $relations = PropelQuery::from($modelClass)->getTableMap()->getRelations(); foreach ($relations as $relation) { if ($relation->getRightTable()->getPhpName() == get_class($relatedItem) && in_array($relation->getType(), array(RelationMap::MANY_TO_ONE))) { $item->{'set' . $relation->getName()}($relatedItem); } } } } $form = clone $this->modelForm; $form->setOptions(array('method' => 'post', 'action' => (string) url('', $params))); $buttons = array('save'); $form->addElement('submit', 'save', array('label' => 'Save')); if (!$item->isNew() && $this->parentView instanceof Curry_ModelView_List && $this->parentView->hasAction('delete')) { $form->addElement('submit', 'delete', array('label' => 'Delete', 'class' => 'btn btn-danger', 'onclick' => "return confirm('Do you really want to delete this item? This cannot be undone.');")); $buttons[] = 'delete'; } $form->addDisplayGroup($buttons, 'save_group', array('class' => 'horizontal-group')); $form->fillForm($item); if (isPost() && $form->isValid($_POST)) { if ($form->delete && $form->delete->isChecked()) { $backend->createModelUpdateEvent($modelClass, $item->getPrimaryKey(), 'delete'); $item->delete(); if ($item instanceof Curry_ISearchable) { Curry_Backend_Indexer::removeItem($item); } $backend->addMainContent('<p>The item has been deleted.</p>'); return; } $form->fillModel($item); $this->triggerCallback($this->preSave, $item, $form); $item->save(); $this->triggerCallback($this->postSave, $item, $form); $form->fillForm($item); $backend->createModelUpdateEvent($modelClass, $item->getPrimaryKey(), 'update'); if ($item instanceof Curry_ISearchable) { Curry_Backend_Indexer::updateItem($item); } if (isAjax()) { return ''; } } $this->triggerCallback($this->preRender, $item, $form); $backend->addMainContent($form); }
public function show(Request $request) { $modelClass = $this->modelForm->getModelClass(); $item = $this->getSelection(); if (!isset($item) || !$item instanceof $modelClass) { $item = new $modelClass(); $relatedItem = $this->parent instanceof AbstractBackend ? $this->parent->getSelection() : null; if ($relatedItem) { $relations = \PropelQuery::from($modelClass)->getTableMap()->getRelations(); foreach ($relations as $relation) { if ($relation->getRightTable()->getPhpName() == get_class($relatedItem) && in_array($relation->getType(), array(\RelationMap::MANY_TO_ONE))) { $item->{'set' . $relation->getName()}($relatedItem); } } } } $form = clone $this->modelForm; $buttons = array('save'); $form->addField('save', array('type' => 'submit', 'label' => 'Save', 'class' => 'btn btn-primary')); if (!$item->isNew() && $this->parent instanceof ListView && $this->parent->hasAction('delete')) { $form->addField('delete', array('type' => 'submit', 'label' => 'Delete', 'class' => 'btn btn-danger', 'onclick' => "return confirm('Do you really want to delete this item? This cannot be undone.');")); $buttons[] = 'delete'; } //$form->addDisplayGroup($buttons, 'save_group', array('class' => 'horizontal-group')); $form->fillForm($item); if ($request->isMethod('POST') && $form->isValid($request->request->all())) { if ($form->delete && $form->delete->isChecked()) { //$this->createModelUpdateEvent($modelClass, $item->getPrimaryKey(), 'delete'); $item->delete(); if ($item instanceof \Curry_ISearchable) { \Curry_Backend_Indexer::removeItem($item); } $this->addMainContent('<p>The item has been deleted.</p>'); return parent::render(); } $form->fillModel($item); $this->triggerCallback($this->preSave, $item, $form); $item->save(); $this->triggerCallback($this->postSave, $item, $form); $form->fillForm($item); //$this->createModelUpdateEvent($modelClass, $item->getPrimaryKey(), 'update'); if ($item instanceof \Curry_ISearchable) { \Curry_Backend_Indexer::updateItem($item); } if ($request->isXmlHttpRequest()) { return \Symfony\Component\HttpFoundation\Response::create(''); } } $this->triggerCallback($this->preRender, $item, $form); $this->addMainContent($form); return parent::render(); }