Esempio n. 1
0
File: Vc.php Progetto: vgrish/dvelum
 /**
  * Create new  version
  * @property Db_Object $object
  * @return boolean
  */
 public function newVersion(Db_Object $object)
 {
     $object->commitChanges();
     $newVersion = $this->getLastVersion($object->getName(), $object->getId()) + 1;
     $newData = $object->getData();
     if ($object->getConfig()->hasEncrypted()) {
         $ivField = $object->getConfig()->getIvField();
         $ivKey = $object->get($ivField);
         if (empty($ivKey)) {
             $ivKey = Utils_String::createEncryptIv();
             $newData[$ivField] = $ivKey;
         }
         $newData = $this->getStore()->encryptData($object, $newData);
     }
     $newData['id'] = $object->getId();
     try {
         $vObject = new Db_Object('vc');
         $vObject->set('date', date('Y-m-d'));
         $vObject->set('data', base64_encode(serialize($newData)));
         $vObject->set('user_id', User::getInstance()->id);
         $vObject->set('version', $newVersion);
         $vObject->set('record_id', $object->getId());
         $vObject->set('object_name', $object->getName());
         $vObject->set('date', date('Y-m-d H:i:s'));
         if ($vObject->save()) {
             return $newVersion;
         }
         return false;
     } catch (Exception $e) {
         $this->logError('Cannot create new version for ' . $object->getName() . '::' . $object->getId() . ' ' . $e->getMessage());
         return false;
     }
 }
Esempio n. 2
0
 /**
  * (non-PHPdoc)
  * @see Backend_Controller_Crud::loaddataAction()
  */
 public function loaddataAction()
 {
     $id = Request::post('id', 'integer', false);
     if (!$id) {
         Response::jsonSuccess(array());
     }
     try {
         $obj = new Db_Object($this->_objectName, $id);
     } catch (Exception $e) {
         Response::jsonError($this->_lang->CANT_EXEC);
     }
     $data = $obj->getData();
     /*
      * Prepare  mltilink properties
      */
     $fields = $obj->getFields();
     foreach ($fields as $field) {
         if ($field == 'id' || empty($data[$field])) {
             continue;
         }
         $linkObject = $obj->getLinkedObject($field);
         if ($linkObject !== false) {
             $data[$field] = array_values($this->_collectLinksData($data[$field], $linkObject));
         }
     }
     $data['id'] = $obj->getId();
     $menuItemModel = Model::factory('menu_item');
     $data['data'] = $menuItemModel->getTreeList($data['id']);
     /*
      * Send response
      */
     Response::jsonSuccess($data);
 }
Esempio n. 3
0
 /**
  * Load user info action
  */
 public function userloadAction()
 {
     $id = Request::post('id', 'integer', false);
     if (!$id) {
         Response::jsonError($this->_lang->get('INVALID_VALUE'));
     }
     try {
         $user = new Db_Object('user', $id);
         $userData = $user->getData();
         unset($userData['pass']);
         Response::jsonSuccess($userData);
     } catch (Exception $e) {
         Response::jsonError($this->_lang->get('WRONG_REQUEST'));
     }
 }
Esempio n. 4
0
File: Vc.php Progetto: vgrish/dvelum
 /**
  * Get the object data ready to be sent
  * @param Db_Object $object
  * @param integer $id
  * @param integer $version
  * @return array
  */
 protected function _loadData(Db_Object $object, $version)
 {
     $id = $object->getId();
     $vc = Model::factory('Vc');
     if (!$version) {
         $version = $vc->getLastVersion($this->_objectName, $id);
     }
     if (!$version) {
         $data = $object->getData();
         $data['id'] = $object->getId();
         Response::jsonSuccess($data);
     }
     try {
         $object->loadVersion($version);
     } catch (Exception $e) {
         Model::factory($object->getName())->logError('Cannot load version ' . $version . ' for ' . $object->getName() . ':' . $object->getId());
         Response::jsonError($this->_lang->get('CANT_LOAD'));
     }
     $data = $object->getData();
     if (empty($data)) {
         Response::jsonError($this->_lang->get('CANT_LOAD'));
     }
     $data['id'] = $id;
     $data['version'] = $version;
     $data['published'] = $object->get('published');
     $data['staging_url'] = static::getStagingUrl($object);
     /*
      * Prepare multilink properties
      */
     $linkedObjects = $object->getConfig()->getLinks(array('multy'));
     foreach ($linkedObjects as $linkObject => $fieldCfg) {
         foreach ($fieldCfg as $field => $linkCfg) {
             if (empty($data[$field])) {
                 continue;
             }
             $data[$field] = array_values($this->_collectLinksData($data[$field], $linkObject));
         }
     }
     return $data;
 }
Esempio n. 5
0
 /**
  * Delete item from library
  * @param integer $id
  */
 public function remove($id, $log = true)
 {
     if (!$id) {
         return false;
     }
     $obj = new Db_Object($this->_name, $id);
     $data = $obj->getData();
     if (empty($data)) {
         return false;
     }
     $docRoot = Registry::get('main', 'config')->get('docroot');
     if (strlen($data['path'])) {
         @unlink($docRoot . $data['path']);
         if ($data['type'] == 'image') {
             $conf = $this->getConfig()->__toArray();
             foreach ($conf['image']['sizes'] as $k => $v) {
                 @unlink($docRoot . self::getImgPath($data['path'], $data['ext'], $k));
             }
         }
     }
     $obj->delete();
     return true;
 }
Esempio n. 6
0
 /**
  * Get ORM object data
  * Sends a JSON reply in the result and
  * closes the application
  */
 public function loaddataAction()
 {
     $id = Request::post('id', 'integer', false);
     if (!$id) {
         Response::jsonSuccess(array());
     }
     try {
         $obj = new Db_Object($this->_objectName, $id);
     } catch (Exception $e) {
         Response::jsonError($this->_lang->CANT_EXEC);
     }
     $data = $obj->getData();
     /*
      * Prepare mltilink properties
      */
     $linkedObjects = $obj->getConfig()->getLinks(array('multy'));
     foreach ($linkedObjects as $linkObject => $fieldCfg) {
         foreach ($fieldCfg as $field => $linkCfg) {
             if (empty($data[$field])) {
                 continue;
             }
             $data[$field] = array_values($this->_collectLinksData($data[$field], $linkObject));
         }
     }
     $data['id'] = $obj->getId();
     /*
      * Send response
      */
     Response::jsonSuccess($data);
 }
Esempio n. 7
0
 protected function _insertOperation(Db_Object $object)
 {
     $insertId = $object->getInssertId();
     if ($insertId) {
         $updates = array_merge($object->getData(), $object->getUpdates());
         $updates[$object->getConfig()->getPrimaryKey()] = $insertId;
     } else {
         $updates = $object->getUpdates();
     }
     if ($object->getConfig()->hasEncrypted()) {
         $updates = $this->encryptData($object, $updates);
     }
     if (empty($updates)) {
         return false;
     }
     /*
      * Validate unique values
      */
     $values = $object->validateUniqueValues();
     if (!empty($values)) {
         if ($this->_log) {
             $errors = array();
             foreach ($values as $k => $v) {
                 $errors[] = $k . ':' . $v;
             }
             $this->_log->log($object->getName() . '::insert ' . implode(', ', $errors));
         }
         return false;
     }
     $db = $this->_getDbConnection($object);
     $objectTable = $object->getTable();
     if (!$db->insert($objectTable, $object->serializeLinks($updates))) {
         return false;
     }
     $id = $db->lastInsertId($objectTable, $object->getConfig()->getPrimaryKey());
     if (!$id) {
         return false;
     }
     $object->setId($id);
     if (!$this->_updateLinks($object)) {
         return false;
     }
     $object->commitChanges();
     $object->setId($id);
     return true;
 }