function getDataset(&$counter, $params = array())
 {
     $counter = 0;
     $toolkit =& Limb::toolkit();
     $request =& $toolkit->getRequest();
     if (!($version = $request->get('version'))) {
         return new EmptyDataset();
     }
     if (!($node_id = $request->get('version_node_id'))) {
         return new EmptyDataset();
     }
     $version = (int) $version;
     $node_id = (int) $node_id;
     $datasource =& $toolkit->getDatasource('SingleObjectDatasource');
     $datasource->setNodeId($node_id);
     if (!($site_object = wrapWithSiteObject($datasource->fetch()))) {
         return new EmptyDataset();
     }
     if (!is_subclass_of($site_object, 'ContentObject')) {
         return new EmptyDataset();
     }
     if (($version_data = $site_object->fetchVersion($version)) === false) {
         return new EmptyDataset();
     }
     $result = array();
     foreach ($version_data as $attrib => $value) {
         $data['attribute'] = $attrib;
         $data['value'] = $value;
         $result[] = $data;
     }
     return new ArrayDataset($result);
 }
 function perform(&$request, &$response)
 {
     if ($request->hasAttribute('popup')) {
         $response->write(closePopupNoParentReloadResponse());
     }
     $request->setStatus(Request::STATUS_FAILURE);
     if (!($version = $request->get('version'))) {
         return;
     }
     if (!($node_id = $request->get('version_node_id'))) {
         return;
     }
     $toolkit =& Limb::toolkit();
     $datasource =& $toolkit->getDatasource('SingleObjectDatasource');
     $datasource->setNodeId($node_id);
     if (!($site_object = wrapWithSiteObject($datasource->fetch()))) {
         return;
     }
     if (!is_subclass_of($site_object, 'ContentObject')) {
         return;
     }
     if (!$site_object->recoverVersion((int) $version)) {
         return;
     }
     if ($request->hasAttribute('popup')) {
         $response->write(closePopupResponse($request));
     }
     $request->setStatus(Request::STATUS_SUCCESS);
 }
 protected function _validPerform($request, $response)
 {
     if ($request->hasAttribute('popup')) {
         $response->write(closePopupResponse($request));
     }
     $data = $this->dataspace->export();
     if (!isset($data['ids']) || !is_array($data['ids'])) {
         $request->setStatus(Request::STATUS_FAILURE);
         return;
     }
     $objects = $this->_getObjects(array_keys($data['ids']));
     foreach ($objects as $id => $item) {
         if (!isset($item['actions']['publish']) || !isset($item['actions']['unpublish'])) {
             continue;
         }
         $object = wrapWithSiteObject($item);
         $status = $object->get('status');
         if ($status & SITE_OBJECT_PUBLISHED_STATUS) {
             $status &= ~SITE_OBJECT_PUBLISHED_STATUS;
             $action = 'unpublish';
         } else {
             $status |= SITE_OBJECT_PUBLISHED_STATUS;
             $action = 'publish';
         }
         $object->set('status', $status);
         $object->update(false);
         $this->_applyAccessPolicy($object, $action);
     }
     $request->setStatus(Request::STATUS_SUCCESS);
 }
 function perform(&$request, &$response)
 {
     $request->setStatus(Request::STATUS_SUCCESS);
     if ($request->hasAttribute('popup')) {
         $response->write(closePopupResponse($request));
     }
     $toolkit =& Limb::toolkit();
     $datasource =& $toolkit->getDatasource('RequestedObjectDatasource');
     $datasource->setRequest($request);
     if (!($object = wrapWithSiteObject($datasource->fetch()))) {
         return;
     }
     $site_object_controller =& $object->getController();
     $action = $site_object_controller->getAction($request);
     switch ($action) {
         case 'publish':
             $status = $this->getPublishStatus($object);
             break;
         case 'unpublish':
             $status = $this->getUnpublishStatus($object);
             break;
         default:
             return;
             break;
     }
     $object->set('status', $status);
     $object->update(false);
     $this->_applyAccessPolicy($object, $action);
     $datasource->flushCache();
 }
  protected function _getObjectToDelete()
  {
    $toolkit = Limb :: toolkit();
    $datasource = $toolkit->getDatasource('RequestedObjectDatasource');
    $datasource->setRequest($toolkit->getRequest());

    return wrapWithSiteObject($datasource->fetch());
  }
 protected function _getTemplatePathFromNode($node_id)
 {
     $datasource = Limb::toolkit()->getDatasource('RequestedObjectDatasource');
     $datasource->setNodeId($node_id);
     if (!($site_object = wrapWithSiteObject($datasource->fetch()))) {
         return null;
     }
     $controller = $site_object->getController();
     return $controller->getActionProperty($controller->getDefaultAction(), 'template_path');
 }
 public function run($filter_chain, $request, $response)
 {
     $filter_chain->next();
     Debug::addTimingPoint('logging filter started');
     $datasource = Limb::toolkit()->getDatasource('RequestedObjectDatasource');
     $datasource->setRequest($request);
     $object = wrapWithSiteObject($datasource->fetch());
     $controller = $object->getController();
     include_once dirname(__FILE__) . '/../StatsRegister.class.php';
     $stats_register = new StatsRegister();
     $stats_register->register($object->getNodeId(), $controller->getAction($request), $request->getStatus());
     Debug::addTimingPoint('logging filter finished');
 }
  public function run($filter_chain, $request, $response)
  {
    Debug :: addTimingPoint('site object controller filter started');

    $datasource = Limb :: toolkit()->getDatasource('RequestedObjectDatasource');
    $datasource->setRequest($request);

    $site_object = wrapWithSiteObject($datasource->fetch());

    $site_object->getController()->process($request);

    Debug :: addTimingPoint('site object controller filter finished');

    $filter_chain->next();
  }
 public function perform()
 {
     $toolkit = Limb::toolkit();
     $request = $toolkit->getRequest();
     $datasource = $toolkit->getDatasource('RequestedObjectDatasource');
     $datasource->setRequest($request);
     $object = wrapWithSiteObject($datasource->fetch());
     $action = $object->getController()->getRequestedAction($request);
     try {
         $access_policy = $this->_getAccessPolicy();
         $access_policy->applyAccessTemplates($object, $action);
     } catch (LimbException $e) {
         return Limb::STATUS_ERROR;
     }
     return Limb::STATUS_OK;
 }
 public function getCurrentTemplateSourceLink()
 {
     $request = Limb::toolkit()->getRequest();
     $datasource = Limb::toolkit()->getDatasource('RequestedObjectDatasource');
     $datasource->setRequest($request);
     if (!($site_object = wrapWithSiteObject($datasource->fetch()))) {
         return '';
     }
     $site_object_controller = $site_object->getController();
     if (($action = $site_object_controller->getAction($request)) === false) {
         return '';
     }
     if (!($template_path = $site_object_controller->getActionProperty($action, 'template_path'))) {
         return '';
     }
     return '/root/template_source?t[]=' . $template_path;
 }
 public function perform()
 {
     $toolkit = Limb::toolkit();
     $dataspace = $toolkit->getDataspace();
     if (!($object = $dataspace->get('created_site_object'))) {
         throw new LimbException('can\'t find created site object in dataspace');
     }
     $parent_id = $object->getParentNodeId();
     $datasource = $toolkit->getDatasource('SingleObjectDatasource');
     $datasource->setNodeId($parent_id);
     $parent_object = wrapWithSiteObject($datasource->fetch());
     $action = $parent_object->getController()->getRequestedAction($toolkit->getRequest());
     try {
         $access_policy = $this->_getAccessPolicy();
         $access_policy->saveNewObjectAccess($object, $parent_object, $action);
     } catch (LimbException $e) {
         return Limb::STATUS_ERROR;
     }
     return Limb::STATUS_OK;
 }
 protected function _getObjectsToDelete($node_ids)
 {
     $datasource = Limb::toolkit()->getDatasource('SiteObjectsByNodeIdsDatasource');
     $datasource->setNodeIds($node_ids);
     $objects = $datasource->fetch();
     $tree = Limb::toolkit()->getTree();
     foreach ($objects as $id => $item) {
         if (!isset($item['actions']['delete'])) {
             $objects[$id]['delete_status'] = 1;
             $objects[$id]['delete_reason'] = Strings::get('delete_action_not_accessible', 'error');
             continue;
         }
         $site_object = wrapWithSiteObject($item);
         if (!$site_object->canDelete()) {
             $objects[$id]['delete_status'] = 1;
             $objects[$id]['delete_reason'] = Strings::get('cant_be_deleted', 'error');
             continue;
         }
         $objects[$id]['delete_reason'] = Strings::get('ok');
         $objects[$id]['delete_status'] = 0;
         $objects[$id]['ids'][$item['node_id']] = 1;
     }
     return $objects;
 }
  function testWrapWithSiteObjectMultiple()
  {
    $fetched_data = array($data1 = array('class_name' => $class_name1 = 'test_site_object1'),
                          $data2 = array('class_name' => $class_name2 = 'test_site_object2'));

    $this->toolkit->setReturnValue('createSiteObject', $this->site_object, array($class_name1));
    $this->toolkit->setReturnValue('createSiteObject', $this->site_object, array($class_name2));
    $this->toolkit->expectCallCount('createSiteObject', 2);

    $this->site_object->expectArgumentsAt(0, 'merge', array($data1));
    $this->site_object->expectArgumentsAt(1, 'merge', array($data2));

    $this->assertTrue(wrapWithSiteObject($fetched_data) === array($this->site_object, $this->site_object));

  }
 protected function _getMappedController()
 {
     $request = Limb::toolkit()->getRequest();
     return wrapWithSiteObject(Limb::toolkit()->getFetcher()->fetchRequestedObject($request))->getController();
 }